# HG changeset patch # User Nozomi Teruya # Date 1448817262 -32400 # Node ID 50de9b120af4994a1ec87c3681a19b471b1cac37 # Parent a1f6921de16c32935d9f3af80a61510f1d50d806 add comparison & conclusion diff -r a1f6921de16c -r 50de9b120af4 paper-last/.prosym.tex.swp Binary file paper-last/.prosym.tex.swp has changed diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/.DS_Store Binary file paper-last/images/.DS_Store has changed diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/overNAT.pdf Binary file paper-last/images/overNAT.pdf has changed diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/overNAT.svg --- a/paper-last/images/overNAT.svg Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/images/overNAT.svg Mon Nov 30 02:14:22 2015 +0900 @@ -1,5 +1,5 @@ - + @@ -136,495 +136,494 @@ - + - + - + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - + + + - - + + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - - + + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - + - - - + + + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - - + + - - + + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/overNAT.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper-last/images/overNAT.xbb Mon Nov 30 02:14:22 2015 +0900 @@ -0,0 +1,8 @@ +%%Title: ./overNAT.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 5 412 533 757 +%%HiResBoundingBox: 5.484846 412.335200 533.336600 756.600900 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Sun Nov 29 22:58:49 2015 + diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/topologymanager.bb --- a/paper-last/images/topologymanager.bb Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/images/topologymanager.bb Mon Nov 30 02:14:22 2015 +0900 @@ -1,5 +1,5 @@ -%%Title: ./images/topologymanager.pdf -%%Creator: extractbb 20130405 +%%Title: ./topologymanager.pdf +%%Creator: extractbb 20110311 %%BoundingBox: 0 0 258 313 -%%CreationDate: Tue May 5 17:14:21 2015 +%%CreationDate: Thu Feb 9 05:26:40 2012 diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/topologymanager.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper-last/images/topologymanager.eps Mon Nov 30 02:14:22 2015 +0900 @@ -0,0 +1,1280 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 258.000000 313.000000 +%APL_DSC_Encoding: UTF8 +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 258 313 +%%EndComments +%%BeginProlog +%%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 +/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 +{ld}repeat pop +/SC{ + /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 +/cm {cmmtx astore CM concat}bd +/W{clip newpath}bd +/W*{eoclip newpath}bd +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop + true +}{ + pop + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse +{ + { + { + pop pop + (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 +/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 +}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 +dict begin +{def} repeat +pop +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +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 +}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{ + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + + 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 +/cp_proc/x_proc ld +/base_charpath +{ + /t_array xs + /t_i 0 def + { + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld +/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{ +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ +findfont dup length dict copy definefont pop +}bd +L3? dup dup{save exch}if +/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 +{ + begin + /nRange Range length 2 idiv store + /mulRange + + [ + 0 1 nRange 1 sub + { + 2 mul/nDim2 xd + Range nDim2 get + Range nDim2 1 add get + 1 index sub + + 255 div + exch + }for + ]store + end +}bd +/FunEval +{ + begin + + nRange mul /val xd + + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd + val + add DataSource exch get + mulRange nDim2 get mul + mulRange nDim2 1 add get + add + }for + end +}bd +/max +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd +/sh2 +{ + /Coords load aload pop + 3 index 3 index translate + + 3 -1 roll sub + 3 1 roll exch + sub + 2 copy + dup mul exch dup mul add sqrt + dup + scale + atan + + rotate + + /Function load setupFunEval + + + clippath {pathbbox}stopped {0 0 0 0}if newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop + grestore + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd +/shp +{ + 4 copy + + 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 + + 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 +{ + + xmin dup mul ymin dup mul add sqrt + xmax dup mul ymin dup mul add sqrt + xmin dup mul ymax dup mul add sqrt + xmax dup mul ymax dup mul add sqrt + max max max +}bd +/sh3 +{ + /Coords load aload pop + 5 index 5 index translate + 3 -1 roll 6 -1 roll sub + 3 -1 roll 5 -1 roll sub + 2 copy dup mul exch dup mul add sqrt + /dx xs + 2 copy 0 ne exch 0 ne or + { + + exch atan rotate + }{ + pop pop + }ifelse + + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub + /Nsteps xs + setupFunEval + + + + + + dx r2 add r1 lt{ + + 0 + }{ + dx r1 add r2 le + { + 1 + }{ + r1 r2 eq + { + 2 + }{ + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs + clippath {pathbbox}stopped {0 0 0 0}if + newpath + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + 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 + { + 0/Function load FunEval sc + + + + + { + { + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill + } + { + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { + + + + + 0 r1 xmin abs r1 add neg r1 shp + } + { + + + r2 r1 gt{ + + 0 r1 + r1 neg r2 r1 sub div dx mul + 0 + shp + }{ + + + + 0 r1 calcmaxs + dup + + r2 add dx mul dx r1 r2 sub sub div + neg + exch 1 index + abs exch sub + shp + }ifelse + } + }sh3tp get exec + }if + }if + + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + + /d0 d0 di add store + /r0 r0 ri add store + }for + pop + + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and + { + Nsteps/Function load FunEval sc + + + + + { + { + 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 + } + { + + + xmax abs r1 add r1 dx r1 shp + } + { + + r2 r1 gt{ + + + + calcmaxs dup + + r1 add dx mul dx r2 r1 sub sub div + exch 1 index + exch sub + dx r2 + shp + }{ + + r1 neg r2 r1 sub div dx mul + 0 + dx + r2 + shp + }ifelse + } + } + sh3tp get exec + }if + }if +}bd +/sh +{ + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop + 2 index sub + 3 index + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd +{restore}if not dup{save exch}if + L3?{ + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if +end +setpacking +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 258 313 +%%BeginPageSetup +cg_md begin +bp +sdmtx +%RBIBeginFontSubset: Helvetica +%!FontType1-1.0: Helvetica 1.0000.0.0000 + 14 dict begin/FontName /Helvetica def + /PaintType 0 def + /Encoding 256 array 0 1 255{1 index exch/.notdef put}for + dup 33 /T put + dup 34 /o put + dup 35 /p put + dup 36 /l put + dup 37 /g put + dup 38 /y put + dup 39 /M put + dup 40 /a put + dup 41 /n put + dup 42 /e put + dup 43 /r put + dup 44 /i put + dup 45 /period put + dup 46 /d put + dup 47 /t put + dup 48 /N 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 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def + /sfnts [< + 74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E2800000D9C686561640000000000001BC400000036686865610000000000001BFC00000024686D74780000000000001C20000000446C6F63610000000000001C64000000246D6178700000000000001C8800000020707265700000000000001CA8000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A + 002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020 + 20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158 + B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB30000000100AF0000018000DA000300264013012A030A0517171A01640019040564216365182B2B4EF44DFD4E456544E6003F4DED313037331523AFD1D1DADA000000000100970000061705BD001300CB405944014B03020601090316011903D7010513011C03140B1B0C57015803D401DB03D40BDB0C0A040A040D45028602045102970202290A280D380A380D4702570276020725640D0A0203120301020B0C120306081517171A040405B8019B400D0A1F030B06FD0C0102FD0D1F12B8019BB6130019147670182B4E10F43C4DFDE419F43939F4393918E4FD3C4E10456544E6003F173C3F3C1217394B5279B10D0CB801AAB40201020A0BB801AAB202020387054D2E7AFD047DC487052E7AFD047DC43130005D727101725D71132109012111231134363501230115141615112397011D01A601A3011ABD04FE5DC5FE5A05BE05BDFB2604DAFA4303632DD077FB2904D72D36DD34FC9D00000002009C0000052A05BD0009000A00764014370138060207 + 0117012701470158020507010202B8019B4017120606070207080301020806080A030A0A010608020302B8019BB505041A0C0708B8019B400A0900190B0CA0217670182B2B4EF43C4DFD3C4E10F63C4DFD3C11123939392F003F3F3C3F3C12393904872E2B877DC53130005D015D13330111331123011123019CEB02E6BDDFFD0FBE023A05BDFB5A04A6FA4304A5FB5B05BD000000010021000004C905BD00070034401A01061E00070204080917171A00FB0203250504FB0619088C5E182B4E10F44DF43CFD3CF44E456544E6003F3F3C4DFD3C3130011521112311213504C9FE11CAFE1105BDAFFAF2050EAF00000000030052FFDC04470449000F003B003C00DD40382A30010A100B1B0C1C2733481069096A10073908120C09031B320724091D100C1D3B2B022E293BB73B023B322A2512100705081C2722171CB8018A4023171D1F07271D2E0B021D350B3C073C3C1C1407292AA8241A3E1B291C4A0F2738193D3EBC0197002100B9019600182B2B4EF44DEDF4ED4E10F64DE4FDC412392F003F3FED3FED3FEDED1239111217395D1112392EED2EED01111239111739313043794028363715220001192501360F2100181E1B21001620142101212200370221001A1D1721011521172101002B2B2B01103C2B2B2B2B818181005D015D2416333237363D010E010F0106070615013637363534262322070607233E01333217161511141633323637150E0123222726270E012322263534363713010E724E5F59962168326D62315301B43E150C837A8D3B210AA805F7A3BD767517250C1E112A2C265D2A160937CE7C95BDBA978ACF5A2C49A691151C060E0D1C2F67016C082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A41301E40000020038FFDA03ED05C2000B001D00774032370E470E570EA704A91B05250814020F1D1000081D1D07130A021D170B052E132E102911121A1F0B271A191E1F87217242182B2B4EF44DED4E10F63C4DFDE4E4003FED3F3FED3F1139113931304379401A181C090A000101180B2600091C0B260000190226000A1B0826012B2B012B2B818181005D1216333236353426232206150017161711331123350E0123220035341233F692A17DA1A67A88A9018A53303DADA23FAC6FB3FEFAEFDE015FE8D7C9CBC3D0CA0237341E4B021DFA3E956358012DFAEA015700030048FFDA041A0449001C00240025010C40799708991AA71F03050E020F0514150E120F1514400C401408291A014B0BB603C701C603C71BD808D909D61FD823E817E8230BC711C712025C080521240F9A161D243906070716211D1C070A1D160B2507971CA71CB71CD71C0425160F251C05190A0C07110E270F1D27051A27242E072719192627D421A65D182B2B4EF44DFDE44E10F64DEDD4FD391239391112393912 + 392F5D003F3FED3FED12392F3CFD3C10ED1112393130437940460023040503050205010504061F26111012101310141004060C25221B24260020001D26011E1D09170726000B150E26010D0E231A2126011E0521260108180A26000D100A2600002B2B2B2B01103C2B2B103C2B2B2B2A2B2A8101715D00715D5D00161716171615211E013332373637330E01070607062322001110003301262726232206070102B4D638361210FCEF0590978D543014B1074F3152794152C8FEEA0118E2011F0B284AAD7CA805012304476B55516C4AA2A3C55D36473B912E501C100123010601020142FE26754682B38A01DC0000000003003DFE3B03E80449001F002D002E00B7404D36144908490958085909880CA91BA81DA927A62BB91B0B4008031622290EC40A221D1F070406291D190A121D0A0F2E072E2E051C032E162E2D29051A300C0E270D3E26271C192F3087217242182B2B4EF44DEDF4ED394E10F64DFDE4F51112392F003F3FED3FED3F3FED10ED1112393931304379402C23281A1E0B1124251026231E262600281A262600110B0E21000F0E0C0D251D222601271B2926000F0C122100002B2B2B01103C103C2B2B2B2B2B818181005D00171617353311140706212226273316171633323736270E0123222411100033002623220706151416333237363501027C5E3335A63C70FEC9ADEC0EB70D273D83CF40260336987DAEFEFB0107BA0144A47FBE4625937CC24F2CFED104423E234387FC32CC76DA9BA548273C9256DD5250F7011D010D012EFEA1C0B25F9AB5BDAF6384022D0000000200840000013B05BD000300070036401C07E50400010006030A0917171A06010229070300190809AA216242182B2B4EF43C4DC4FD3CC44E456544E6003F3F3C3F4DED3130133311231133152384B7B7B7B7042AFBD605BDCC0000000100890000013D05BD0003002940150000030A0517171A0102290003190405AA216242182B2B4EF43C4DFD3C4E456544E6003F3F31301333112389B4B405BDFA43000000020084000003ED04490019001A005E4031B706C706020406140627147606740705140C021418101D05070006180B0A1A071A1A000C29091A1C012E18291900191B1CB80106B3216242182B2B4EF43C4DFDE44E10F64DED12392F003F3F3C3F3FED1139390112393130005D015D1333153E01333217161511231134272623220706070E011511230184AB4CAA68E4502CB71D307E40294A382D1BB401A7042F985E529F57A2FD5102A3623C640D1642357169FDCF0449000003003BFFD90421044E000C0018001900904033980896109916A504A808A610A916B808C808D704E50EE9140C3A08061D18070C1D120B190719191502270F1A1B092715191A1BB80109B321725D182B2B4EF44DED4E10F64DED12392F003F3FED3FED3130437940 + 2C001704260B1309260000110226010717092600050D0226010A140C260001100C26000816062601030E0626012B2B2B2B012B2B2B2B2B81005D241235342726232206151416331200111002212200351000330702E085304CBAA59696A3D6011EFCFEF7DDFEFC0112E70674010FA6965E94FCB2ABE403DAFEECFEF4FEFDFEAE012BFC010E01400500020076FE5504250449000E00220074402CA908A717022808201C110E061D15070F060E1D1C0B220E0227181A240A2E102E2129220F1923248721BD5D182B2B4EF43C4DFDE4E44E10F64DED003F3FED3F3FED1139123931304379401C161B00051A260426001B022601051602260101190E260003170626012B2B012B2B2B2B8181005D243635342726232207061514171633013315363736333212111007062322272627112302C6A72546BABB45252546BAFE2EAF36405B7BB6FEB7749A7952303BB479D3D2805CB1BB649A7C57A603B18E49283CFEE9FEFDFEA2965F351E49FDDD00000100890000029204470011004F40262703260D37034704040E0810020E0911090C270805070006110A081A13012E10291100191213B80145B321627E182B2B4EF43C4DFDE44E10E6003F3F4D3FC4FDC411123939011112393130005D1333153E0133321617152E0123220615112389AB15A46B05181D101B108892B4042FB9369B0203BE0302AF72FD980000010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB2615310D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C593000000020015FE4903E804490018001900CA406E8A158818A71803070617063812481258126707770377078C1498009705981597169717A800A8161048004B154717C915044405C605028705A600A601A705A8170524280518151716010006150C0B0F1D080E19071919161B17171A050001AF171518AF0C8F16191A1BD421677E182B2B194EF44DE418FD3939FD3939194E456544E61812392F003F3F4DFD3932192F183F3C3C3C123939014B5279401215150016166D121717180501016D12000018872E2B107DC418872E2B10087DC418015D71313071015D005D013306030207020623222627351E01333236373E0137013301030321C7268362429C809C26291E2F2A10322F10053E0EFE74CC011F01042F67FE91FEECAEFE66B40608A40D062118089424044EFC980382000001000000000000642C0B935F0F3CF500110800000000005F4D8F0000000000C621BCD6F865FC270B9108F900000009000100000000000000010000 + 0629FE2900000C01F865FCED0B9100010000000000000000000000000000001105120042023900AF06AA009705C7009C04E300210473005204730038047300480473003D01C7008401C70089047300840473003B0473007602AA0089023900170400001500000034005400E001360164022E029A0364040C043A045C04B8053005A205E8063806CE000100000011006F0009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B1 + 72424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500 + 00>] def + /CharStrings 17 dict dup begin + /.notdef 0 def +/period 1 def +/M 2 def +/N 3 def +/T 4 def +/a 5 def +/d 6 def +/e 7 def +/g 8 def +/i 9 def +/l 10 def +/n 11 def +/o 12 def +/p 13 def +/r 14 def +/t 15 def +/y 16 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 ] def + /FontBBox{-1947 -985 2961 2297}def + /UniqueID 4265107 def + currentdict currentfile eexec + 54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B322782D282AC603D1F5A452D1E7AE90B2FF78B151C731C717F5B5A2ECE57D3BD22888D365366CD700C67657245FE4E64FD98C2089406F6AF616EE272D822AE1D0F5FA55576E84178659053C4226366C59D493E2F81CDF74C3002839D80C2B5ABDCE3A50814C04252AAA91021570572224ABD2F2A153F6537407EE8ECD8C96FDC618185097902CB19308E83F0FCC973BF5EB37AA7CAC9E2D345166906EEF01368004DB3E66EABE8A1AA334394486DBFD9E2F38857F1CA92CA4B7D92AAD4AA49947EC32F7355C64EA3703662BCBC2455C17735C87E0FB6EB11BDD628D83F7023B09C2339AFCA11AD579A5309BA5B4849711EFCC5B3C19A39AEB3F9E2F4292534F193347AB1F2B0E52522AFA19F836150FEB5E132D4314A3522C72E45B4C25119120968B6A450E662DFB926221EDEE3EB1E4EA69EBA939F8BD52314F47516A6ADBD07B8CC083F61D4FB265CBF6EA1CFECAEDDBE388A62F6750510BD3C3D619D177610CF47FFE2E90AFB6991B57DD2866AA92B281ED7572C130C22713728BCA034C9CFF4F992D5D49B5DB05D0E50A3A67D069FE40408F357472BF03B2116542532448DF62919D220B7ED94E2AA460968588DB06A0D38B3518B8B1550C48859DF98F64E090C84CF5E5FB63E13E2B8E11AA81B73FEC64A1958FF4D598550680EE94C02B75453D8178329725425E609E62F68934BF74530C59077AB43FF4CD0333CFAACEC6646FB947ABF4133637426B8D6852C76F5EC71F54947FA1DAE1E8E6E3FFFF + 5CCE3C754EBC2E9A80BA8266A0A8AF901284A57A7925048EAE59A8219E029AB35036876593A2BD7C82E338287616FE7B54DCC7313AFFF2DFE9CD9C10A5451F3C4A92A04D3F369B4BFCFA11DA07387CC4D3790D2F8185EFE16D36A0CF1A280022EBE22D43DD0F9C808A22A4AD3C5B86EFEC43A3C6D559954343F1D2ADC96E6EDE39D973B19653C3D43ED489808A857D56EAC04BF463E2BCD75C58E4537F7CC9EC8968A5077EF2A8978D9B531B842DA24B16E73B8B932D3A7802DED2BBE480A1C42048D1259321B8F4B4C679FB30081797C85EB85F513A17D5B75DE5C94F8BF888CD82BE60C1C5F160EA1B7DB1CEF409AB63CF187B2244F20F3839AB626C3F033367B66CE62716B5651F9483333AA9EB1D6F3A26BEDAFC9146A9D7AD714BADF89F7E2600B3032FDD8D67AA113D6A292D49A478E0ECF912568F6BD4738B1503B274924DF1390BF5CE6E6C3703451735EDC6FCFD94AC2AD365A8B43FF9C876033C4E59DF1BB3EA0F95CBA35323C686F13CE00BB283ABB67CFE19691BA74AF8B79D53773044F2FB5328BF20D729D7085A4893520F03D0ABC5640A4DC7FA8BBE2913209157B99714561CF47C07C238931DC8E26750DFED271C6D9776D12911F0A551C34150564EA7C3DA305022EE35820AF012C1591BB80DDDB8AF30F99D574559B915AA202BBD4D9C067B0F87F44C089007CB647E53C1948115F0AE88FA1344A2AD72068F4097FF9F261C5CB33B887945DA437715ABE4A07A6F878DA78AF8C37AD518FCB891E958C2D9FA9C78069FA394DB88BEAA3170DBA03732F94A21EBE311E7EF9CA246B428637E618102727A9274072ADCA6702CE5376B49E67974DEC9B972C6E5FAC4045ECFAE3EE63CB4B79AD10263C8056FE297269027605C46815D6E94531079489F793146F5F4F64A3AFCECA516B0CCCFC7BDDF9684675906BC2795FF8895358E6CD37CEFC1F7AB3BB6AF5B6360F52447CE6E6B56465E6CFA1F7EC1C8DE216E4F10D4E113D01396AF70D1022C31CCCDC6FF68AB4FB2CE2D038FDF293376FFBBC3B33155ED465309FBA54F43B4253937FFE97C0E27B4633972E4771E5044E14145531FC5F50D82CCE4B0ACD819B59245CF27C2C857F0B5F5978A573A7A56110213501273D8C06A994F36714C2490043DD29C4710DEF22C8C52C40F229D1A3CCA056BCB8DEC02D2CAC413FEEA27A16C4EC232CA36285AEC54B0E3D848D2AF5C997C5013E420BA67DB6EF00038015AA2F0291FA366CDEA7F1F13950C2306D4386DE844AAAA7EDA2E658237606B25CCBB26B3A18DAE07CC77B1CD7B2D866FF0D0ABCC4956B49F8FA01FCA3DC3B9057E40E77034364384BF475E1A0C6DDF11F7FA86C6CCED121C9B49214EB69D5A4A035037CACCB66D4A7742725667BA5BF583A5B907672496A030616CC930439110463A48B038598FD7F151FE0E45074FA75B + 48D33276F12EFA677E9EBE869274371C2D77CA075F3C6650FD57C1B38742A7B6F26894B143A44C132AA90E020DF6769B673A6B131621B85B4AA3173513D9C1F031968BD2B968729C625697CCAAF4CCF5989D90F822D0C76DD4B6DA8C0A9C85C7AA33D81F2BE64277B4DA24423027E54D3E4F1D007B11CE98F27460568866F6A5FCAF36B9DF9CBC2A2774930BEF07D89CAEF0AC4D0C9ADDF6E277F3C9718AD09452D389B1926C82E432BE4947FCA23215711F58719897B05D95BFD984101520FB76F4944033A98C5FDBB27ACDF3208036EE43F8F076305AE88EA7E8AC34500540F5E18AB28232EED7427F012644BB277DBD856871B8F5C7CD3DDE91DB8A8C57DAE028BED132671CD888313A144539294FAB8A8BDDAE80D8D80C8CCAC8D783829A4CB9D331E752BA102D1C4F4133DC7277083C18B3825409BE632E46CA4DAE9665B119E2EDCA8BA33F6284E698F0FE0E8FF4BD88097AB5021B802A0D9B1508EFFBF5127D9C975D352823BDC6C600BF3DCF3B695B76F804092AA06E3A70B156D07A74FA9C2AE86A86C769241E88C3DF3FD1404C4AD63F594A6BD21EE9EE6DC90C8D56C01C0BB9E8142FD00E29EF46424BE63156A075BDECD5924AD3C89A9855DCAF5BDE0A3A9E7D8053075E5BA721A614DC894585344AECE6AFFFF477940A16C3E94DC42D0B3E588C94C90D85FFB1C9913111D6DA404479109A2140CB7DFC1AA7D975A28DE3E5E5584600093CBFE0C8F9F1C97E6EFA6BC2701DB89CD756898518F268CA33799D09B75310F00271C6D883CE2A74C8D74EA4F9479B0DCD94C8570C63ABA0F452F6302E9F39ECE33806EE2730384E86858F16B715A69E8CB3D4D3AC6DE5D0352D95E3AC85FECB640C716133B5A81E950430F52EDB80F087B45A133737837B8F686048A12821EB02517B5BE5A7A488C8A4F16A6E165830C49836C54C6FF92CE485FFAE63788560FBCDE7DFCA35224F08EF71D90FB3646369CEFF7EF1B18489A101464A42A076A963AD6DDC3C1818F298A56D069E + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark end + %APLT1End + %RBIEndFontSubset +/Helvetica cguidfix +/F1.1/Helvetica renmfont +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeA { { 1.8008 exp } bind exec} bind +def +/MatrixA [ 0.9642 1.0000 0.8249 ] def +/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def +/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def +end ] /Cs2 exch/ColorSpace dr pop +%%EndPageSetup +0.60000002 i +/Cs1 SC +1 1 1 sc +q +0 0 258 313 rc +11 274 m +91 274 l +91 233 l +11 233 l +h +11 274 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -118 390 cm +129 116 m +209 116 l +209 157 l +129 157 l +h +129 116 m +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 51 253.5 cm +/F1.1[ 12 0 0 -12 0 0]sf +-24.017578 -3 m +(!)s +-18.017578 -3 m +("#"$"%&)[ 6.673828 6.673828 6.673828 2.666016 6.673828 6.673828 0.000000 ] xS +-23.680664 11 m +('\(\)\(%*+)[ 9.996094 6.673828 6.673828 6.673828 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +1 1 1 sc +CM +246.33331 277.23621 m +246.33331 285.00406 245.46548 285.96509 239.12622 293.65259 c +239.05923 293.73215 l +232.68646 301.5 232.62018 301.5 226.08002 301.5 c +217.37161 301.5 178 301.5 178 301.5 c +178 219.5 l +246.33331 219.5 l +246.33331 277.23621 l +h +246.33331 277.23621 m +f +0 0 0 sc +1 0 0 -1 -118 390 cm +364.33331 112.76379 m +364.33331 104.99594 363.46548 104.03491 357.12622 96.347412 c +357.05923 96.267853 l +350.68646 88.5 350.62018 88.5 344.08002 88.5 c +335.37161 88.5 296 88.5 296 88.5 c +296 170.5 l +364.33331 170.5 l +364.33331 112.76379 l +h +364.33331 112.36365 m +364.33331 104.99594 364.26636 104.99594 350.62018 104.99594 c +350.62018 104.99594 l +350.62018 88.580353 350.62018 88.5 344.48044 88.5 c +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 212.16666 212.5 cm +-20.012695 4 m +(+,\)%-."/)[ 3.996094 2.666016 6.673828 6.673828 3.333984 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +1 1 1 sc +CM +202.0585 293.44974 m +206.64719 290.71606 206.64719 286.28394 202.0585 283.55026 c +197.46985 280.81659 190.03015 280.81659 185.4415 283.55026 c +180.85281 286.28394 180.85281 290.71606 185.4415 293.44974 c +190.03015 296.18341 197.46985 296.18341 202.0585 293.44974 c +f +0 0 0 sc +1 0 0 -1 -118 390 cm +320.0585 96.550262 m +324.64719 99.283936 324.64719 103.71606 320.0585 106.44974 c +315.46985 109.18341 308.03015 109.18341 303.4415 106.44974 c +298.85281 103.71606 298.85281 99.283936 303.4415 96.550262 c +308.03015 93.816589 315.46985 93.816589 320.0585 96.550262 c +S +1 1 1 sc +CM +207.97516 238.44974 m +212.56384 235.71608 212.56384 231.28392 207.97516 228.55026 c +203.38651 225.81657 195.94681 225.81657 191.35815 228.55026 c +186.76947 231.28392 186.76947 235.71608 191.35815 238.44974 c +195.94681 241.18343 203.38651 241.18343 207.97516 238.44974 c +f +0 0 0 sc +1 0 0 -1 -118 390 cm +325.97516 151.55026 m +330.56384 154.28392 330.56384 158.71608 325.97516 161.44974 c +321.38651 164.18343 313.94681 164.18343 309.35815 161.44974 c +304.76947 158.71608 304.76947 154.28392 309.35815 151.55026 c +313.94681 148.81657 321.38651 148.81657 325.97516 151.55026 c +S +1 1 1 sc +CM +240.0585 265.44974 m +244.64719 262.71606 244.64719 258.28394 240.0585 255.55026 c +235.46985 252.81657 228.03015 252.81657 223.4415 255.55026 c +218.85281 258.28394 218.85281 262.71606 223.4415 265.44974 c +228.03015 268.18341 235.46985 268.18341 240.0585 265.44974 c +f +0 0 0 sc +1 0 0 -1 -118 390 cm +358.0585 124.55026 m +362.64719 127.28394 362.64719 131.71606 358.0585 134.44974 c +353.46985 137.18343 346.03015 137.18343 341.4415 134.44974 c +336.85281 131.71606 336.85281 127.28394 341.4415 124.55026 c +346.03015 121.81659 353.46985 121.81659 358.0585 124.55026 c +S +333.98935 117.8869 m +327.51068 113.11313 l +S +CM +203.07022 281.63248 m +207.73108 274.47171 l +211.29025 279.30206 l +h +203.07022 281.63248 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +321.07022 108.36752 m +325.73108 115.52829 l +329.29025 110.69794 l +h +321.07022 108.36752 m +S +CM +222.42981 267.36749 m +217.76895 274.52826 l +214.20978 269.69794 l +h +222.42981 267.36749 m +f +1 0 0 -1 -118 390 cm +340.42981 122.63251 m +335.76895 115.47174 l +332.20978 120.30206 l +h +340.42981 122.63251 m +S +1 J +1 j +313.61386 118.82611 m +315.8028 139.17389 l +S +CM +198.65848 242.87199 m +200.78558 251.14697 l +194.82001 250.50522 l +h +198.65848 242.87199 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +316.65848 147.12801 m +318.78558 138.85303 l +312.82001 139.49478 l +h +316.65848 147.12801 m +S +CM +194.75818 279.12799 m +192.63107 270.85303 l +198.59665 271.49478 l +h +194.75818 279.12799 m +f +1 0 0 -1 -118 390 cm +312.75818 110.87201 m +310.63107 119.14697 l +316.59665 118.50522 l +h +312.75818 110.87201 m +S +1 J +1 j +332.41394 144.08929 m +335.00275 141.91069 l +S +CM +223.12366 253.24045 m +215.07104 250.38466 l +218.93442 245.79396 l +h +223.12366 253.24045 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +341.12366 136.75955 m +333.07104 139.61534 l +336.93442 144.20604 l +h +341.12366 136.75955 m +S +CM +208.29303 240.75957 m +216.34564 243.61536 l +212.4823 248.20605 l +h +208.29303 240.75957 m +f +1 0 0 -1 -118 390 cm +326.29303 149.24043 m +334.34564 146.38464 l +330.4823 141.79395 l +h +326.29303 149.24043 m +S +1 J +1 j +296 129.5 m +222.28563 135.43105 l +S +CM +92.893875 253.65237 m +104.62935 250.29704 l +103.94191 258.84085 l +h +92.893875 253.65237 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +210.89388 136.34763 m +222.62935 139.70296 l +221.94191 131.15915 l +h +210.89388 136.34763 m +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 152 267 cm +-12.008789 4 m +(+*\(.)[ 3.996094 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +1 1 1 sc +CM +46 185 m +109 185 l +109 144 l +46 144 l +h +46 185 m +f +1 J +1 j +0 0 0 sc +1 0 0 -1 -118 390 cm +164 205 m +227 205 l +227 246 l +164 246 l +h +164 205 m +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 77.5 164.5 cm +-24.017578 -3 m +(!)s +-18.017578 -3 m +("#"$"%&)[ 6.673828 6.673828 6.673828 2.666016 6.673828 6.673828 0.000000 ] xS +-14.34375 11 m +(0".*)[ 8.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +1 1 1 sc +CM +77 52 m +140 52 l +140 11 l +77 11 l +h +77 52 m +f +0 0 0 sc +1 0 0 -1 -118 390 cm +195 338 m +258 338 l +258 379 l +195 379 l +h +195 338 m +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 108.5 31.5 cm +-24.017578 -3 m +(!)s +-18.017578 -3 m +("#"$"%&)[ 6.673828 6.673828 6.673828 2.666016 6.673828 6.673828 0.000000 ] xS +-14.34375 11 m +(0".*)[ 8.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +1 1 1 sc +CM +169.66666 129 m +232.66666 129 l +232.66666 88 l +169.66666 88 l +h +169.66666 129 m +f +0 0 0 sc +1 0 0 -1 -118 390 cm +287.66666 261 m +350.66666 261 l +350.66666 302 l +287.66666 302 l +h +287.66666 261 m +S +/Cs2 SC +0 sc +0 i +1 0 0 -1 201.16666 108.5 cm +-24.017578 -3 m +(!)s +-18.017578 -3 m +("#"$"%&)[ 6.673828 6.673828 6.673828 2.666016 6.673828 6.673828 0.000000 ] xS +-14.34375 11 m +(0".*)[ 8.666016 6.673828 6.673828 0.000000 ] xS +0.60000002 i +/Cs1 SC +0 0 0 sc +1 0 0 -1 -118 390 cm +203.41882 259.47879 m +218.5797 324.53235 l +S +CM +103.17363 54.337341 m +104.75356 66.440369 l +96.405823 64.494934 l +h +103.17363 54.337341 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +221.17363 335.66266 m +222.75356 323.55963 l +214.40582 325.50507 l +h +221.17363 335.66266 m +S +CM +82.822296 141.66263 m +81.240784 129.54749 l +89.596863 131.4949 l +h +82.822296 141.66263 m +f +1 0 0 -1 -118 390 cm +200.8223 248.33737 m +199.24078 260.45251 l +207.59686 258.5051 l +h +200.8223 248.33737 m +S +1 J +1 j +239.60402 245.50504 m +275.07257 261.59311 l +S +CM +167.4805 123.68597 m +158.8429 132.30988 l +155.30222 124.50391 l +h +167.4805 123.68597 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +285.4805 266.31403 m +276.8429 257.69012 l +273.30222 265.49609 l +h +285.4805 266.31403 m +S +CM +111.18567 149.2206 m +119.83191 140.58809 l +123.37613 148.40184 l +h +111.18567 149.2206 m +f +1 0 0 -1 -118 390 cm +229.18567 240.7794 m +237.83191 249.41191 l +241.37613 241.59816 l +h +229.18567 240.7794 m +S +1 J +1 j +261.95786 329.18051 m +284.16763 310.81561 l +S +CM +174.97516 86.467194 m +163.43655 82.487213 l +168.89865 75.881561 l +h +174.97516 86.467194 m +f +0 J +0 j +1 0 0 -1 -118 390 cm +292.97516 303.53281 m +281.43655 307.51279 l +286.89865 314.11844 l +h +292.97516 303.53281 m +S +CM +135.14148 53.529388 m +146.69162 57.513336 l +141.22406 64.12561 l +h +135.14148 53.529388 m +f +1 0 0 -1 -118 390 cm +253.14148 336.47061 m +264.69162 332.48666 l +259.22406 325.87439 l +h +253.14148 336.47061 m +S +1 J +1 j +[ +4 +4 +] 0 d +169 157 m +182.57994 192.10289 l +S +CM +68.7034 187.23834 m +68.576965 199.44341 l +60.582901 196.3508 l +h +68.7034 187.23834 m +f +0 J +0 j +[] 0 d +1 0 0 -1 -118 390 cm +186.7034 202.76166 m +186.57697 190.55659 l +178.5829 193.6492 l +h +186.7034 202.76166 m +S +1 J +1 j +[ +4 +4 +] 0 d +169 157 m +236.22632 195.15547 l +240.71504 197.70312 244.78224 200.93042 248.28337 204.72269 c +290.85989 250.83951 l +S +CM +180.61237 130.7634 m +176.00882 142.06767 l +169.71097 136.25333 l +h +180.61237 130.7634 m +f +0 J +0 j +[] 0 d +1 0 0 -1 -118 390 cm +298.61237 259.2366 m +294.00882 247.93233 l +287.71097 253.74667 l +h +298.61237 259.2366 m +S +1 J +1 j +[ +4 +4 +] 0 d +169 157 m +147.95767 235.15721 l +143.61098 251.30208 147.62175 268.55112 158.64548 281.12204 c +199.40558 327.60287 l +S +CM +88.940689 53.804443 m +84.627823 65.222778 l +78.183319 59.571442 l +h +88.940689 53.804443 m +f +0 J +0 j +[] 0 d +1 0 0 -1 -118 390 cm +206.94069 336.19556 m +202.62782 324.77722 l +196.18332 330.42856 l +h +206.94069 336.19556 m +S +ep +end +%%Trailer +%%EOF diff -r a1f6921de16c -r 50de9b120af4 paper-last/images/topologymanager.xbb --- a/paper-last/images/topologymanager.xbb Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/images/topologymanager.xbb Mon Nov 30 02:14:22 2015 +0900 @@ -1,8 +1,8 @@ -%%Title: ./images/topologymanager.pdf +%%Title: ./topologymanager.pdf %%Creator: extractbb 20130405 %%BoundingBox: 0 0 258 313 %%HiResBoundingBox: 0.000000 0.000000 258.000000 313.000000 %%PDFVersion: 1.3 %%Pages: 1 -%%CreationDate: Tue May 5 17:15:05 2015 +%%CreationDate: Sun Nov 29 19:49:38 2015 diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.aux --- a/paper-last/prosym.aux Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/prosym.aux Mon Nov 30 02:14:22 2015 +0900 @@ -8,42 +8,47 @@ \newlabel{fig:CS}{{1}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}{DataSegmentManager}}{2}} \newlabel{fig:RemoteDSM}{{2}{2}} -\citation{MessagePack} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}{Data Segment API}}{3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}{Data Segmentの表現}}{3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}{Code Segmentの記述方法}}{3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}{Code Segmentの記述方法}}{3}} \newlabel{src:StartCodeSegment}{{1}{3}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {1}StartCodeSegmentの例}{3}} \newlabel{src:CodeSegment}{{2}{3}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {2}CodeSegmentの例}{3}} \@writefile{toc}{\contentsline {section}{\numberline {3}\hskip 1zw{Meta Computation}}{4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}{DSのMeta Computation}}{4}} +\citation{dot} +\citation{MessagePack} +\newlabel{src:topologyfile}{{3}{5}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}トポロジーファイルの例}{5}} +\newlabel{fig:topologymanager}{{3}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}{CSのMeta Computation}}{5}} \citation{tightVNC} -\@writefile{toc}{\contentsline {section}{\numberline {4}\hskip 1zw{AliceVNC}}{5}} -\newlabel{fig:TreeVNC}{{3}{5}} -\@writefile{toc}{\contentsline {section}{\numberline {5}\hskip 1zw{Aliceの新機能}}{5}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}{転送機能}}{5}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}{Data Segmentの表現の追加(圧縮機能)}}{5}} -\newlabel{src:ReceiveData}{{3}{6}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}データを表現するクラス}{6}} -\newlabel{src:before}{{4}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}通常のDSを扱うCSの例}{7}} -\newlabel{src:after}{{5}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}圧縮したDSを扱うCSの例}{7}} -\newlabel{src:asClass}{{6}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}asClassの処理}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {4}\hskip 1zw{AliceVNC}}{6}} +\newlabel{fig:TreeVNC}{{4}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {5}\hskip 1zw{Aliceの新機能}}{6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}{転送機能}}{6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}{Data Segmentの表現の追加(圧縮機能)}}{6}} +\newlabel{src:ReceiveData}{{4}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}データを表現するクラス}{7}} +\newlabel{src:before}{{5}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}通常のDSを扱うCSの例}{7}} +\newlabel{src:after}{{6}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}圧縮したDSを扱うCSの例}{7}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.3}{Aliceの通信プロトコルの変更}}{7}} -\newlabel{src:CommandMessage}{{7}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}CommandMessage}{7}} +\newlabel{src:asClass}{{7}{8}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}asClassの処理}{8}} +\newlabel{src:CommandMessage}{{8}{8}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}CommandMessage}{8}} \newlabel{tb:variable}{{1}{8}} \@writefile{toc}{\contentsline {section}{\numberline {6}\hskip 1zw{評価と考察}}{8}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.1}{メッセージ伝達速度の比較}}{8}} -\newlabel{fig:mesure}{{4}{8}} -\newlabel{tb:variable}{{2}{8}} -\newlabel{src:Mesurement}{{8}{9}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}到達時間・木の段数の計測方法}{9}} -\newlabel{fig:TreeVNC_delay}{{5}{9}} -\newlabel{fig:AliceVNC_notcompress_delay}{{6}{10}} -\newlabel{fig:AliceVNC_compress_delay}{{7}{10}} +\newlabel{fig:mesure}{{5}{9}} +\newlabel{tb:variable}{{2}{9}} +\newlabel{src:Mesurement}{{9}{9}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}到達時間・木の段数の計測方法}{9}} +\newlabel{fig:TreeVNC_delay}{{6}{10}} +\newlabel{fig:AliceVNC_notcompress_delay}{{7}{10}} +\newlabel{fig:AliceVNC_compress_delay}{{8}{10}} \citation{complaxy} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2}{コードの比較}}{11}} \newlabel{tb:code}{{3}{11}} @@ -58,4 +63,5 @@ \bibcite{MessagePack}{3} \bibcite{tightVNC}{4} \bibcite{Erlang}{5} +\newlabel{fig:overNAT}{{9}{12}} \newlabel{ipsj@lastpage}{{}{12}} diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.blg --- a/paper-last/prosym.blg Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/prosym.blg Mon Nov 30 02:14:22 2015 +0900 @@ -3,6 +3,7 @@ The top-level auxiliary file: prosym.aux The style file: ipsjunsrt.bst Database file #1: prosym.bib +Warning--I didn't find a database entry for "dot" Warning--I didn't find a database entry for "complaxy" Warning--there's no number and/or volumesenkokenkyu Warning--Missing required argument pages in senkokenkyu @@ -14,7 +15,7 @@ Warning--Missing required argument pages in Erlang You've used 5 entries, 2207 wiz_defined-function locations, - 556 strings with 4558 characters, + 557 strings with 4561 characters, and the built_in function-call counts, 678 in all, are: = -- 37 > -- 15 @@ -54,4 +55,4 @@ width$ -- 6 write$ -- 35 is.kanji.str$ -- 16 -(There were 9 warnings) +(There were 10 warnings) diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.dvi Binary file paper-last/prosym.dvi has changed diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.log --- a/paper-last/prosym.log Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/prosym.log Mon Nov 30 02:14:22 2015 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 29 NOV 2015 17:55 +This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 29 NOV 2015 23:31 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -238,75 +238,75 @@ (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 1. ) (./source/TestCodeSegment.java) [3] -Overfull \hbox (24.42479pt too wide) in paragraph at lines 182--183 +Overfull \hbox (24.42479pt too wide) in paragraph at lines 172--173 []\OT1/cmtt/m/n/9.61035 void setKey(String managerKey, String key) [] [4] -File: images/TreeVNC.pdf Graphic file (type pdf) - -Overfull \hbox (21.64644pt too wide) in paragraph at lines 221--222 - [] - [] + +LaTeX Warning: Citation `dot' on page 5 undefined on input line 206. -[5] (./source/ReceiveData.java) [6] (./source/beforeCompress.java) -(./source/afterCompress.java) (./source/asClass.java -LaTeX Font Info: Try loading font information for OML+cmr on input line 1. +(./source/TopologyFile.dot +LaTeX Font Info: Calculating math sizes for size <8.8711> on input line 2. +LaTeX Font Info: Try loading font information for OML+cmr on input line 2. (/usr/local/texlive/2013/texmf-dist/tex/latex/base/omlcmr.fd File: omlcmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) LaTeX Font Info: Font shape `OML/cmr/m/n' in size <8.8711> not available -(Font) Font shape `OML/cmm/m/it' tried instead on input line 1. +(Font) Font shape `OML/cmm/m/it' tried instead on input line 2. ) -(./source/CommandMessage.java) [7] -Overfull \hbox (39.99373pt too wide) in paragraph at lines 307--330 +File: images/topologymanager.pdf Graphic file (type pdf) + + + +LaTeX Warning: `h' float specifier changed to `ht'. + +[5] +File: images/TreeVNC.pdf Graphic file (type pdf) + +Overfull \hbox (21.64644pt too wide) in paragraph at lines 263--264 [] [] +[6] (./source/ReceiveData.java) (./source/beforeCompress.java) +(./source/afterCompress.java) (./source/asClass.java) [7] +(./source/CommandMessage.java) +Overfull \hbox (39.99373pt too wide) in paragraph at lines 349--372 + [] + [] + +[8] File: images/delay.pdf Graphic file (type pdf) - -Overfull \hbox (14.02144pt too wide) in paragraph at lines 367--378 + +Overfull \hbox (14.02144pt too wide) in paragraph at lines 412--423 [] [] -LaTeX Warning: Reference `src:mesurement' on page 8 undefined on input line 384 +LaTeX Warning: Reference `src:mesurement' on page 9 undefined on input line 429 . -[8] (./source/mesurement.java -LaTeX Font Info: Calculating math sizes for size <8.8711> on input line 1. -) -File: images/TreeVNC_depth1.pdf Graphic file (type pdf) - -File: images/TreeVNC_depth2.pdf Graphic file (type pdf) - - +(./source/mesurement.java) [9] File: images/TreeVNC_depth3.pdf Graphic file (type pdf) - [9] -File: images/AliceVNC_notcompress_depth1.pdf Graphic file (type pdf) - - -File: images/AliceVNC_notcompress_depth2.pdf Graphic file (type pdf) - - + File: images/AliceVNC_notcompress_depth3.pdf Graphic file (type pdf) -File: images/AliceVNC_compress_depth1.pdf Graphic file (type pdf) - -File: images/AliceVNC_compress_depth2.pdf Graphic file (type pdf) - - File: images/AliceVNC_compress_depth3.pdf Graphic file (type pdf) [10] -LaTeX Warning: Citation `complaxy' on page 11 undefined on input line 477. +LaTeX Warning: Citation `complaxy' on page 11 undefined on input line 514. -[11] (./prosym.bbl) [12 +[11] +File: images/overNAT.pdf Graphic file (type pdf) + +Overfull \hbox (7.42006pt too wide) in paragraph at lines 572--573 + [] + [] -] (./prosym.aux) +(./prosym.bbl) [12] (./prosym.aux) LaTeX Warning: There were undefined references. @@ -315,12 +315,12 @@ ) Here is how much of TeX's memory you used: - 2998 strings out of 494008 - 42368 string characters out of 6154472 - 276678 words of memory out of 5000000 - 6416 multiletter control sequences out of 15000+600000 + 2999 strings out of 494008 + 42219 string characters out of 6154472 + 198678 words of memory out of 5000000 + 6417 multiletter control sequences out of 15000+600000 27682 words of font info for 116 fonts, out of 8000000 for 9000 745 hyphenation exceptions out of 8191 - 30i,12n,40p,261b,1428s stack positions out of 5000i,500n,10000p,200000b,80000s + 30i,12n,40p,280b,1428s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on prosym.dvi (12 pages, 68544 bytes). +Output written on prosym.dvi (12 pages, 73112 bytes). diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.pdf Binary file paper-last/prosym.pdf has changed diff -r a1f6921de16c -r 50de9b120af4 paper-last/prosym.tex --- a/paper-last/prosym.tex Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/prosym.tex Mon Nov 30 02:14:22 2015 +0900 @@ -130,16 +130,6 @@ \end{itemize} peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。 - -\subsection{Data Segmentの表現} -DSの表現にはMessagePack for Java \cite{MessagePack} を利用している。 -\begin{itemize} -\item {\ttfamily DSは一般的なJavaのクラスオブジェクト} -\item {\ttfamily MessagePackを用いて変換したbyte[]で表現されたバイナリオブジェクト} -\end{itemize} -の2種類があり、LocalDSMにputされた場合は一般的なJavaのクラスオブジェクトとして追加される。 -RemoteDSMにputされた場合は通信時にbyteArrayに変換されたバイナリオブジェクトが追加される。 - \subsection{Code Segmentの記述方法} CSをユーザーが記述する際にはCodeSegment.classを継承して記述する(ソースコード \ref{src:StartCodeSegment} , \ref{src:CodeSegment})。 継承することによりCode Segmentで使用するData Segment APIを利用する事ができる。 @@ -159,7 +149,7 @@ TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でputが行われるとTestCodeSegmentは実行される。 -\ref{src:CodeSegment}は、0から9までインクリメントする例題である。 +ソースコード\ref{src:CodeSegment}は、0から9までインクリメントする例題である。 2行目で取得されたDSが格納される受け皿を作る。Input DS APIがもつcreateメソッドを使うことで作成できる。 \begin{itemize} \item {\ttfamily Receiver create(CommandType type)} @@ -205,6 +195,56 @@ このようにプログラムすることで、通常処理と例外処理を分離することができるため、仕様の変更を抑えたシンプルなプログラムを記述できる。 現在Aliceには、動的・静的トポロジーの管理構成機能、ノードとの接続状態確認機能、切断・再接続時の処理を指定できる機能などのMeta Computationが用意されている。 +\subsection{DSのMeta Computation} +CSはアプリケーションを動作させるために必要なタスクであり、ユーザーによって定義される。 +それに対してMeta CSはAliceを構成するタスクである。つまりMeta CSの群はAliceのComputationと言い換えることができる。一部のみユーザーが定義をすることができ、Aliceの挙動を変更することができる。 + +\textbf{Topology Manager} + +Aliceでは、ノード間の接続管理やトポロジーの構成管理を、Topology ManagerというMetaComputationが提供している。このTopology ManagerもCS/DSを用いて実装されている。 +プログラマーはトポロジーファイルを用意し、Topology Managerに読み込ませるだけでトポロジーを構成することができる。 +トポロジーファイルはDOT Language\cite{dot}という言語で記述される。 +DOT Languageとは、プレーンテキストを用いてデータ構造としてのグラフを表現するためのデータ記述言語の一つである。 +ソースコード\ref{src:topologyfile}は3台のノードでリングトポロジーを組むときのトポロジーファイルの例である。 +\begin{table}[html] + \lstinputlisting[label=src:topologyfile, caption=トポロジーファイルの例]{source/TopologyFile.dot} +\end{table} +また、DOT Languageファイルはdotコマンドを用いてグラフの画像ファイルを生成することができる。そのため、記述したトポロジーが正しいか可視化することが可能である。 + +Topology Managerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきクライアントのIPアドレスやポート番号、接続名を送る(図\ref{fig:topologymanager})。 +また、トポロジーファイルでlavelとして指定した名前はRemoteDSMの名前としてTopology Nodeに渡される。 +そのため、Topology NodeはTopology ManagerのIPアドレスさえ知っていれば自分の接続すべきノードのデータを受け取り、ノード間での正しい接続を実現できる。 +\begin{figure}[h] +\begin{center} +\includegraphics[width=60mm]{images/topologymanager.pdf} +\end{center} +\caption{TopologyManagerが記述に従いトポロジーを構成} +\label{fig:topologymanager} +\end{figure} + +また、実際の分散アプリケーションでは参加するノードの数が予め決まっているとは限らない。 +そのためTopology Managerは動的トポロジーにも対応している。 +トポロジーの種類を選択してTopology Managerを立ち上げれば、あとは新しいTopology Nodeが参加表明するたびに、Topology ManagerからTopology Nodeに対して接続すべきTopology Nodeの情報がputされ接続処理が順次行われる。 +そしてTopology Managerが持つトポロジー情報が更新される。 +現在Topology Managerでは動的なトポロジータイプとして二分木に対応している。 + +\textbf{Data Segmentの表現} + +DSの表現にはMessagePack for Java \cite{MessagePack} を利用している。 +\begin{itemize} +\item {\ttfamily DSは一般的なJavaのクラスオブジェクト} +\item {\ttfamily MessagePackを用いて変換したbyte[]で表現されたバイナリオブジェクト} +\end{itemize} +の2種類があり、LocalDSMにputされた場合は一般的なJavaのクラスオブジェクトとして追加される。 +RemoteDSMにputされた場合は通信時にbyteArrayに変換されたバイナリオブジェクトが追加される。 + +\subsection{CSのMeta Computation} + +\textbf{KeepAlive} + +\textbf{切断・再接続時の処理} + + \section{AliceVNC} AliceのMeta Computationが実用的なアプリケーションの記述において有用であることを確認する。 そのために、TreeVNCをAliceを用いて実装したAliceVNCの作成を行った。 @@ -212,7 +252,9 @@ TreeVNCとは、当研究室で開発を行っている授業向け画面共有システムである。 オープンソースのVNCであるTightVNC \cite{tightVNC} をもとに作られている。 授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう。 -この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである(図 \ref{fig:TreeVNC} )。 +この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである。 +図 \ref{fig:TreeVNC}はAliceVNCを実現するための構成である。leftとrightのRemoteDSMを用意し子ノードと接続することで木構造を実現する。 + TreeVNCは通信処理部分の記述が大変複雑になっている。しかし、Aliceで記述すれば本質的な処理とそれを支える通信処理部分で分離できる。 そのため、TightVNCからの修正も少なく、見通しの良い記述で構成可能と期待される。 @@ -266,16 +308,9 @@ また、圧縮状態を持つDSを扱うDSMとしてLocalとRemoteそれぞれにCompressed Data Segment Managerを追加した。 Compressed DSMの内部では、put/updateが呼ばれた際にReceiveData.classが圧縮表現を持っていればそれを使用し、持っていなければその時点で圧縮表現を作ってput/updateを行う。 -ソースコード \ref{src:before} はRemoteからDSをtakeしインクリメントしてLocalにputすることを10回繰り返す例題である。 +ソースコード \ref{src:before} はRemoteDSMに対しInt型のデータをputする記述である。 これをDSを圧縮形式で行いたい場合、ソースコード \ref{src:after} のように指定するDSM名の先頭に"compressed"をつければCompressed DSM内部の圧縮Meta Computationが走りDSを圧縮状態で扱うようになる。 -これによりユーザは指定するDSMを変えるだけで、他の計算部分を変えずに圧縮表現を持つDSを扱うことができる。 -ノードは圧縮されたDSを受け取った後、そのまま子ノードにflipメソッドで転送すれば圧縮状態のまま送信されるので、送信の際の再圧縮がなくなる。 -画面表示の際はReceiveData.class内の{\tt asClass()}(ソースコード\ref {src:asClass} )を使うことで適切な形式でデータを取得できる。 -{\tt asClass()}はDSを目的の型にcastするメソッドであり、ReceiveData.classが圧縮表現だけを持っている場合はこのメソッド内で解凍してcastを行っている。 -これによりDSの表現を必要になったときに作成できる。 - -\newpage \begin{table}[html] \lstinputlisting[label=src:before, caption=通常のDSを扱うCSの例]{source/beforeCompress.java} \end{table} @@ -284,6 +319,13 @@ \lstinputlisting[label=src:after,caption=圧縮したDSを扱うCSの例]{source/afterCompress.java} \end{table} + +これによりユーザは指定するDSMを変えるだけで、他の計算部分を変えずに圧縮表現を持つDSを扱うことができる。 +ノードは圧縮されたDSを受け取った後、そのまま子ノードにflipメソッドで転送すれば圧縮状態のまま送信されるので、送信の際の再圧縮がなくなる。 +画面表示の際はReceiveData.class内の{\tt asClass()}(ソースコード\ref {src:asClass} )を使うことで適切な形式でデータを取得できる。 +{\tt asClass()}はDSを目的の型にcastするメソッドであり、ReceiveData.classが圧縮表現だけを持っている場合はこのメソッド内で解凍してcastを行っている。 +これによりDSの表現を必要になったときに作成できる。 + \begin{table}[html] \lstinputlisting[label=src:asClass, caption=asClassの処理]{source/asClass.java} \end{table} @@ -351,7 +393,7 @@ \textbf{実験内容} -ルートノードから画面データを子ノードに伝搬する際に、計測用のヘッダをつけたパケットトを子ノードに送信する。 +ルートノードから画面データを子ノードに伝搬する際に、計測用のヘッダをつけたパケットを子ノードに送信する。 各子ノードはパケットを受け取り自身のViewerに画面データを表示すると同時に、計測用ヘッダ部分のみのDSを作成し、親ノードに送り返す(図 \ref{fig:mesure}) 。 計測用DSは木を伝ってルートノードまで送り返され、ルートノードは受け取った計測用DSから到達時間を計算する。 \begin{figure}[h] @@ -395,44 +437,36 @@ \textbf{実験結果} -木の段数ごとに散布図を示す(図\ref{fig:TreeVNC_delay} ~ \ref{fig:AliceVNC_notcompress_delay})。 +3段目の測定結果の散布図を示す(図\ref{fig:TreeVNC_delay} 〜 \ref{fig:AliceVNC_notcompress_delay})。 X軸が画面データのサイズ(byte)、Y軸が計算した到達時間(ms)である。 実験時間の都合上、AliceVNC(圧縮・転送機能あり)の計測時間が他より短くなってしまったためプロットされた点の数が少なくなっている。 -また、それぞれ3段目の図で処理に10秒以上かかっている点の集合が見られるが、これは今回の実験において3段目にPCのスペック上処理が遅いノードが1台あったためである。そのため比較においてこの点集合は無視する。 +また、それぞれの図で処理に10000ms以上かかっている点の集合が見られるが、これは今回の実験において3段目にPCのスペック上処理が遅いノードが1台あったためである。そのため比較においてこの点集合は無視する。 -どの図も同様の傾向があり、画面データのサイズが小さいうちは処理時間も5ms程度だが、50000byte以上から比例して処理時間も遅くなっている。このことからAliceVNCはTreeVNCと同等の処理・同等の性能があることがわかる。 +どの図も同様の傾向があり、画面データのサイズが小さいうちは処理時間も5ms程度だが、50000byte以上から比例して処理時間も遅くなっている。このことからAliceVNCはTreeVNCと同等の処理性能があることがわかる。 -また、AliceVNCを圧縮機能の有無でデータサイズ比較すると、圧縮機能のないAliceVNCはデータサイズがほとんど1000byte以上なのに対し、圧縮機能のあるAliceVNCではTreeVNC同様10byte程度のサイズに抑えることに成功している。 +また、AliceVNCを圧縮機能の有無でデータサイズ比較すると、圧縮機能のないAliceVNCはデータサイズがほとんど1000byte以上なのに対し、圧縮機能のあるAliceVNCではTreeVNC同様10byte程度のサイズに抑えるので圧縮も成功している。 -さらに転送機能の有無で比較した場合、転送機能がないAliceVNCでは木の段数に関係なく1000ms近く到達に時間がかかってしまっているが、転送機能のあるAliceVNCではデータサイズが大きくなっても100ms程度に抑えられている。 +さらに転送機能の有無で比較した場合、転送機能がないAliceVNCでは木の段数に関係なく1000ms近く到達に時間がかかってしまっているが、転送機能のあるAliceVNCではデータサイズが大きくなっても100ms程度に抑えられている。これは転送機能が余計なコピーを防いでいるためだと考えられる。 このことから、圧縮・転送のMeta Computationは分散通信において有用であると言える。 \newpage \begin{figure}[h] \begin{center} - \includegraphics[width=70mm]{images/TreeVNC_depth1.pdf} - \includegraphics[width=70mm]{images/TreeVNC_depth2.pdf} \includegraphics[width=70mm]{images/TreeVNC_depth3.pdf} \end{center} \caption{TreeVNCの測定結果} \label{fig:TreeVNC_delay} \end{figure} -\newpage \begin{figure}[h] \begin{center} - \includegraphics[width=70mm]{images/AliceVNC_notcompress_depth1.pdf} - \includegraphics[width=70mm]{images/AliceVNC_notcompress_depth2.pdf} \includegraphics[width=70mm]{images/AliceVNC_notcompress_depth3.pdf} \end{center} \caption{AliceVNC(圧縮・転送機能なし)の測定結果} \label{fig:AliceVNC_notcompress_delay} \end{figure} -\newpage \begin{figure}[h] \begin{center} - \includegraphics[width=70mm]{images/AliceVNC_compress_depth1.pdf} - \includegraphics[width=70mm]{images/AliceVNC_compress_depth2.pdf} \includegraphics[width=70mm]{images/AliceVNC_compress_depth3.pdf} \end{center} \caption{AliceVNC(圧縮・転送機能あり)の測定結果} @@ -478,15 +512,18 @@ そこでTreeVNCとAliceVNCにおいてコードの複雑度を比較した。 今回、複雑度の指標としてThomas McCabeが提案した循環的複雑度\cite{complaxy}を用いた。 -循環的複雑度とはコード内の線形独立な経路の数であり、if文やfor文が多ければ複雑度も高くなる。 +循環的複雑度とはコード内の線形独立な経路の数であり、if文やfor文が多ければ複雑度も高くなりバグ混入率も高まる。 一般的に、循環的複雑度が10以下であればバグ混入率の少ない非常に良いコードとされる。 計測にはIntelliJのCodeMetrics計測プラグインであるMetricsReloadedを使用した。 表\ref{tb:complex}はTightVNC、TreeVNC、AliceVNCにおける循環的複雑度の比較である。 プロジェクト全体でのクラスの複雑度の平均値と最高値をとった。 平均値・最高値ともにAliceVNCのほうが複雑度が低いことから、Aliceではシンプルな記述が可能だということがわかる。 -また、TreeVNCで最高値を出したTreeRFBProto.classは全てプログラマが記述したコードであり、通信処理や画面データの読み込みなどの記述が入り組んで書かれている。 -しかし、AliceVNCで最高値を出したSwingViewerWindow.classはTightVNCで最高値を出したクラスと同じであり、コード量の比較でも示したようにAliceVNCで変更を加えた点がほとんどない。つまりこの複雑度は元来TightVNCが持っている複雑度と言える。 + +TreeVNCで最高値を出したTreeRFBProto.classは全てプログラマーが記述したコードであり、データの待ち合わせのためのタイマー処理や通信処理、画面データの圧縮処理などの複数のスレッド処理が集中した複雑なコードになっている。 +これをAliceで記述した場合、データの待ち合わせはCSが行うためプログラマーがデータの不整合を気にする必要はなく、また通信処理や圧縮処理もMeta Computationが提供するためコードが複雑になることはない。 + +AliceVNCで複雑度の最高値を出したSwingViewerWindow.classはTightVNCで最高値を出したクラスと同じであり、コード量の比較でも示したようにAliceVNCで変更を加えた点がほとんどない。つまりこの複雑度は元来TightVNCが持っている複雑度と言える。 \begin{table}[htbp] \caption{複雑度の比較} @@ -509,24 +546,69 @@ AliceVNCとTreeVNCの性能比較・コード比較から、AliceVNCはTreeVNCと同等の性能を持つ分散アプリケーションの記述ができ、かつコードの修正量・複雑度共に低く抑える能力を有することがわかった。 \subsection{他言語・フレームワークとの比較} + +Aliceが採用しているCS/DSのプログラミングモデルやMeta Computationの特性を明確にするため、他言語・フレームワークとの類似点・相違点を比較した。 + \textbf{Erlang} +並列指向プログラミング言語Erlang\cite{Erlang}は、プロセスと呼ばれるid付きの独立したタスクに対して、データをメッセージでやりとりする。 +タスクをプロセスという細かい単位に分割して並列に動かす点や、メモリロックの仕組みを必要としない点はAliceと同様である。 + +しかしErlangでは分散環境の構築等はすべてプログラマ自身が記述しなければならない。 +Aliceでは分散環境の構築はTopology ManagerなどのMeta Computationが行うためプログラマーはトポロジーを指定するだけで良い。 +また、Erlangでは複数のデータの待ち合わせのための再帰処理も自分で書かないといけない。 +一方、Aliceのプログラミング手法はCSが必要なデータが全て揃うまで待ち合わせを行うためその必要はない。 + + \textbf{Akka} -\textbf{?} +Akka\cite{Akka}はScala・Java向けの並列分散処理フレームワークである。 +アクターモデルを採用しており、アクターと呼ばれるアドレスを持ったタスクに、データをメッセージでやりとりする点がErlangと似ている。 +AkkaもErlangもプロセス/アクターに直接データをやりとりする。データには名前がないため、メッセージを受け取ったあとにその内容を確認した上で次にどう振る舞うかを判断する。 +一方Aliceでは、DSをCSに直接やりとりはせず、keyを指定してDSMにputする。 +また、DSをtakeするときもkeyを指定して取り出すためどんなデータが入っているかを確認する必要がなく、扱い易い。 +Akkaの特徴として、メッセージを送りたいプロセスのアドレスを知っていればアクターがどのマシン上にあるかを意識せずにプログラミングできるという点がある。 +逆にAliceはどのRemoteDSMに対してやり取りをするかを考慮するが、CSがOutputしたDSを次にどのCSに渡すかを意識する必要がない。この点はアクターモデルとCS/DSモデルのパラダイムの違いと言える。 + +一方AliceとAkkaは提供されるAPIという点で類似している。AkkaのメッセージAPIでは、メッセージを送るtellメソッドと、メッセージを送って返信を待つaskメソッドが用意されている。これはAliceのDataSegment APIのput/takeメソッドに対応している。 + +また、Akkaのもう一つの特徴として、アクターで親子関係を構成できる点がある。 +分散通信部分を子アクターに分離し、親アクターは子アクターのExceptionが発生した時に再起動や終了といった処理を指定できる。 +さらにRouterという子アクターへのメッセージの流れを制御するアクターや、Dispatcherというアクターへのスレッドの割当を管理する機能をAkkaが提供している。 +このように処理を階層化し複雑な処理をフレームワーク側が提供する仕組みはAliceのMeta Computationと共通している。 +相違点としては、AliceのMeta Computationでは圧縮機能のようにデータに対するMeta Computationも扱っている点が挙げられる。 \section{まとめ} -並列分散フレームワークAliceの計算モデルと実装について説明を行い、Aliceにおけるプログラミング手法を述べた。 +並列分散フレームワークAliceでは、スケーラブルかつ信頼性の高いプログラムを記述する環境を実現するため、CS/DSの計算モデルとMeta Computationによる実装の階層化を採用している。 +Aliceが実用的な分散アプリケーションを記述するために必要なMeta Computationとして、d動的なトポロジー管理・構成機能や多態性を持つデータを扱う機能、データを無駄なコピーをすることなく転送する機能などを実装した。 +そしてMeta Computationを用いて分散アプリケーションTreeVNCをAlice上で実装し性能評価を行った。 +その結果、TreeVNCで使用される基本機能はAliceでも実現でき、同等の性能を出すことができるということが分かった。 +またコードの観点からTreeVNCとAliceVNCを比較した結果、Aliceが仕様の変更を抑えたシンプルな記述を実現し、信頼性の高い実用的な分散アプリケーションを構築するに有用であることが確認された。 + +今後の課題としては、TreeVNCで実装が困難であったNATを超えたノード間通信をAliceVNCで実現し、その性能とコード修正量を比較することが挙げられる。 +図\ref{fig:overNAT}は2つの違うプライベートネットワークを超えた接続の設計例である。 -Aliceが実用的なアプリケーションを記述するために必要なMeta Computationとして、データの多態性を実現し、指定するDSMの切り替えで扱うデータ表現を変えるようにした。 -これにより、必要に応じた形式を扱うことができ、ユーザが記述するComputation部分を大きく変えずに自由度の高い通信を行うことが可能になった。 -同様の手法を用いれば、圧縮形式以外にも暗号形式・JSON形式などの複数のデータ表現をユーザに扱いやすい形で拡張することができる。 -Aliceに圧縮等のMeta Computationを追加したことで、AliceVNCではシンプルな記述でTreeVNCと同等の性能を提供できると期待される。 +\begin{figure}[h] + \begin{center} + \includegraphics[width=75mm]{images/overNAT.pdf} + \end{center} + \caption{複数のTopologyManagerでNAT超えを実現} + \label{fig:overNAT} +\end{figure} -今後の課題としては、圧縮機能をAliceVNCで用いることでMeta Computationの有効性を測る必要がある。 -また、AliceのMeta ComputationにProxy機能を実装することで、TreeVNCでは実装が困難であったNAT越えの機能を提供できると期待される。 +各ネットワークごとにTopoogy Managerを立ち上げることでネットワークを超えたノード間接続を実現する。 +プライベートネットワークのTopoogy Managerは今までどおりネットワーク内に木を構築・管理する。 +他のネットワークにあるノードBがノードAに接続したい場合は、グローバルアドレスを持ったTopology Managerに参加表明をすればノードAの情報が提供され、ノードAの子ノードとして接続される。 +つまり、Topology Managerを複数用意するだけで、Topology Manager自体の「参加表明のあったノードで木を構成する」という仕様は全く変更しないで良い。 +TreeVNCでは500行以上の変更が必要とされたが、Aliceでは複数のTopology Managerに接続するためのconfigファイルを変更するだけなので、AliceVNCの仕様の変更を抑えられると期待される。 +この機能も実現できれば、AliceのMeta Computationが拡張性の高い環境を提供できると言える。 + +また、現在のAliceはネットワーク通信においてセキュリティをサポートしていない。 +しかし、圧縮機能と同様に、暗号化形式を扱うMeta Computationを追加すれば、プログラマーが記述するComputation部分を大きく変えずに自由度の高い通信を行うことができる。 + + diff -r a1f6921de16c -r 50de9b120af4 paper-last/source/TopologyFile.dot --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper-last/source/TopologyFile.dot Mon Nov 30 02:14:22 2015 +0900 @@ -0,0 +1,8 @@ +digraph test{ + node0 -> node1[label="right"] + node0 -> node2[label="left"] + node1 -> node2[label="right"] + node1 -> node0[label="left"] + node2 -> node0[label="right"] + node2 -> node1[label="left"] +} diff -r a1f6921de16c -r 50de9b120af4 paper-last/source/afterCompress.java --- a/paper-last/source/afterCompress.java Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/source/afterCompress.java Mon Nov 30 02:14:22 2015 +0900 @@ -1,15 +1,1 @@ -public class RemoteIncrement extends CodeSegment { - public Receiver num = ids.create(CommandType.TAKE); - - @Override - public void run() { - int num = this.num.asInteger(); - System.out.println("[CodeSegment] " + num++); - if (num == 10) System.exit(0); - - RemoteIncrement cs = new RemoteIncrement(); - cs.num.setKey("compressedremote", "num"); - - ods.put("compressedlocal", "num", num); - } -} +ods.put("compressedremote", "num", 0); diff -r a1f6921de16c -r 50de9b120af4 paper-last/source/beforeCompress.java --- a/paper-last/source/beforeCompress.java Sun Nov 29 18:15:15 2015 +0900 +++ b/paper-last/source/beforeCompress.java Mon Nov 30 02:14:22 2015 +0900 @@ -1,16 +1,1 @@ -public class RemoteIncrement extends CodeSegment { - - public Receiver num = ids.create(CommandType.TAKE); - - @Override - public void run() { - int num = this.num.asInteger(); - System.out.println("[CodeSegment] " + num++); - if (num == 10) System.exit(0); - - RemoteIncrement cs = new RemoteIncrement(); - cs.num.setKey("remote", "num"); - - ods.put("local", "num", num); - } -} +ods.put("remote", "num", 0);