IfsScavenger.RUNCOMMON50277STATICS10002777Ifs.BR3000IFS10013001P     XIFSAfterJunta10023014P     X304142 (34)IfsScavenger.BR3042IfsScavenger10273043P     XSetup10303523P      SetupPass210313575P      SetupDiskEditor10323610P      Scavenge10333624P      Debug10344245P      InitLPT10354255P      InitTree10364265P      EditHome10374275P      JustFixDir10404306P      Quit10414317P      ToggleFlag10424325P      Scratch10434370P     XScavNoBufsProc10444501P     XSplitPuts10764525P     XLogErrors10774545P     XExtendFile11004651P     X53602317 (1231)IfsScavCompare.BR5361CompareRecords11245361L     XCompareLPTEs11255366L     XCompareStrings11265376L     XDirEntryLength11275570L     X5615235 (157)IfsResUtilA.BR5616TFSSwatProc11305616L     XMulDiv11315630L     XDoubleUsc11325643L     XIfsPupChecksum11335670L     XDoMove11345701L     XMul11355710L     XDiv11365725L     XDiv32x1611375742L     XLoadXM11405763L     XStoreXM11415765L     XDoubleBlt11425771L     XCallWithArgVec11436011L     XSysAllocate11446037L     XSysFree11456042L     XGetBit11466046L     XSetBit11476063L     X6103266 (182)IfsBcplRuntime.BR6104Z30011536104L      InitBcplRuntime11526254L     XInitIfsRuntime10046321L     XResetStrings11556332L     X6336233 (155)PupAl1A.BR6337PupChecksum11566337L     XOnesComplementSubtract11606436L     XOnesComplementAdd11576437L     XLeftCycle11616443L     XMultEq11626445L     XDoubleIncrement11636467L     XDoubleDifference11656506L     XDoubleSubtract11646533L     X6552214 (140)Context.BR6553CallContextList10076553L     XBlock11726564L     XYield11736564L     XCtxRunning11756625L     X662755 (45)ContextSched.BR6630SchedYield12006630L     XSchedInterrupt11776636L     XSchedFinish12016652L     XIfsScavenger.bs10-Aug-84  2:04:36Page   1��Ó	ÏÔc8ÓÛÔa˚Ó"@Ó&˚ÓÛÔ`æÓ ÊÓ&NÓÛÔ_ÅÓ ÊÓTÔ^DÓ~Ó ÊÓ$ÙÓTÔ]Ó~Ó ÊÓ$ÙÓ ÊÔ[ Ó-ÓÛÔZçÓ&NÓTÔYPÓ~Ó ÊÓ$ÙÓTÔXÓ~Ó ÊÓ$ÙÓTÔV÷	Ó~Ó ÊÓ$ÙÓTÔUôÓ~Ó ÊÓ$ÙÓTÔT\Ó~Ó ÊÓ$ÙÓTÔSÓ~Ó ÊÓ$ÙÓTÔQ‚Ó~Ó ÊÓ$ÙÓTÔP•Ó~Ó ÊÓ$ÙÓTÔOhÓ~Ó ÊÓ$ÙÓTÔN+	Ó~Ó ÊÓ$ÙÓTÔLÓÓ~Ó ÊÓ$ÙÓTÔK±	Ó~Ó ÊÓ$ÙÓTÔJtÓ~Ó ÊÓ$ÙÓTÔI7
Ó~Ó ÊÓ$ÙÓTÔG˙Ó~Ó ÊÓ$ÙÓTÔFΩÓ~Ó ÊÓ$ÙÓTÔEÄ	Ó~Ó ÊÓ$ÙÓ ÊÔDCÓ+∂
ÓÛÔCÓ&NÓTÔA…
Ó~Ó ÊÓ$ÙÓTÔ@åÓ~Ó ÊÓ$ÙÓTÔ?O
Ó~Ó ÊÓ$ÙÓTÔ>
Ó~Ó ÊÓ$ÙÓ ÊÔ<’Ó,cÓÛÔ;ò
Ó&NÓTÔ:[
Ó~Ó ÊÓ$ÙÓTÔ9Ó~Ó ÊÓ$ÙÓTÔ7·Ó~Ó ÊÓ$ÙÓTÔ6§
Ó~Ó ÊÓ$ÙÓTÔ5gÓ~Ó ÊÓ$ÙÓTÔ4*Ó~Ó ÊÓ$ÙÓTÔ2ÌÓ~Ó ÊÓ$ÙÓTÔ1∞Ó~Ó ÊÓ$ÙÓTÔ0sÓ~Ó ÊÓ$ÙÓTÔ/6Ó~Ó ÊÓ$ÙÓTÔ-˘Ó~Ó ÊÓ$ÙÓTÔ,º
Ó~Ó ÊÓ$ÙÓTÔ+
Ó~Ó ÊÓ$ÙÓTÔ*BÓ~Ó ÊÓ$ÙÓTÔ)Ó~Ó ÊÓ$ÙÓTÔ'»Ó~Ó ÊÓ$ÙÓ ÊÔ&ãÓ,cÓÛÔ%NÓ&NÓTÔ$Ó~Ó ÊÓ$ÙÓTÔ"‘Ó~Ó ÊÓ$ÙÓTÔ!ó
Ó~Ó ÊÓ$ÙÓTÔ ZÓ~Ó ÊÓ$ÙÓ ÊÔÓ,cÓÛÔ‡	Ó ÊÓTÔ£
Ó~Ó ÊÓ$ÙÓTÔfÓ ÊÓ&NÓ*\ÓTÔ)Ó ÊÓ&NÓ*\ÓTÔÏÓ~Ó ÊÓ$ÙÓTÔØÓ~Ó ÊÓ$ÙÓTÔrÓ~Ó ÊÓ$ÙÓTÔ5Ó ÊÓ&NÓ*\ÓTÔ¯
Ó~Ó ÊÓ$ÙÓ ÊÔªÓ,cÓÛÔ~	Ó ÊÓTÔAÓ~Ó ÊÓ$ÙÓTÔÓ~Ó ÊÓ$ÙÓTÔ
«Ó~Ó ÊÓ$ÙÓTÔä	Ó~Ó ÊÓ$ÙÓ ÊÔMÓ-ÓÛÔ
Ó&NÓTÔ”	Ó~Ó ÊÓ$ÙÓTÔñ
Ó~Ó ÊÓ$ÙÓTÔY
Ó~Ó ÊÓ$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������÷����	Ï
X)9_0†��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������667445 (37)IfsCallProc.BR6675CallProc12066675L     XcallProcQ12077033L      CallProcProcess12057035L     X7076202 (130)IfsDDMgrRes.BR7077DDPageType12107100P     XDDPageGroupSize12117106P     XDDPageGroupBase12127114P     XDDPageGroupAlign12137124P     XDDDOPAGEIO12147132P     X7263165 (117)AltoQueue.BR7264Enqueue12047264L     XDequeue12157301L     XInsertBefore12177311L     XInsertAfter12207324L     XUnqueue12167337L     XQueueLength12217360L     X7372107 (71)AltoTimer.BR7373SetTimer12237373L     XInitializeTimer12227401L     XTimerHasExpired12247402L     XDismiss12257412L     X743341 (33)AltoByteBlt.BR7434ByteBlt12267434L     X7606153 (107)TimeConvA.BR7607TimeDiv12277607L     XTimeMul12307631L     XmonthTable12317647L     X766355 (45)IfsFastStreamsA.BR7664fastChStream12337664L     XfastWstream12347713L     XGetCh12407745L      PutCh12417770L      GetW124210021L      PutW124310036L      Fendof124410054L      CurrentPos123510065L     XDirty123610077L     XSetDirty123710106L     X10111226 (150)BfsMl.BR10112MoveBlock124510112L     XZero110610123L     XSetBlock106710125L     XBitBlt124610136L     XUsc124710150L     XMin125110155L     XMax125210160L     XUmin125310163L     XUmax125410166L     XDoubleAdd125010171L     XDisableInterrupts126010210L     XEnableInterrupts126110214L     XStartIO126210216L     XNoop110310217L     XIdle126310217L     XBFSSetStartingVDA126710217L     XTruePredicate126510222L     XFalsePredicate126610225L     XoneBits125510230L     XfreePageFid125610250L     XfreePageFp125710250L     X10252141 (97)IfsBcplTricks.BR10253FrameSize127010253L     XMyFrame127110267L     XCallersFrame127210271L     XFramesCaller127310300L     XCallFrame127410363L     XIfsScavenger.bs10-Aug-84  2:04:36Page   2���Ó ÊÔc8Ó-ÓÛÔa˚
Ó&NÓTÔ`æÓ~Ó ÊÓ$ÙÓTÔ_ÅÓ~Ó ÊÓ$ÙÓTÔ^DÓ~Ó ÊÓ$ÙÓ ÊÔ]Ó,cÓÛÔ[ 
Ó&NÓTÔZç	Ó~Ó ÊÓ$ÙÓTÔYPÓ~Ó ÊÓ$ÙÓTÔXÓ~Ó ÊÓ$ÙÓTÔV÷Ó ÊÓ&NÓ*\ÓTÔUô	Ó~Ó ÊÓ$ÙÓ ÊÔT\Ó,cÓÛÔSÓ ÊÓTÔQ‚Ó~Ó ÊÓ$ÙÓTÔP•Ó~Ó ÊÓ$ÙÓTÔOhÓ~Ó ÊÓ$ÙÓTÔN+
Ó~Ó ÊÓ$ÙÓTÔLÓÓ~Ó ÊÓ$ÙÓTÔK±
Ó~Ó ÊÓ$ÙÓ ÊÔJtÓ,cÓÛÔI7Ó ÊÓTÔG˙Ó~Ó ÊÓ$ÙÓTÔFΩÓ~Ó ÊÓ$ÙÓTÔEÄÓ~Ó ÊÓ$ÙÓTÔDCÓ~Ó ÊÓ$ÙÓ ÊÔCÓ-ÓÛÔA…
Ó&NÓTÔ@åÓ~Ó ÊÓ$ÙÓ ÊÔ?OÓ,cÓÛÔ>Ó ÊÓTÔ<’Ó~Ó ÊÓ$ÙÓTÔ;òÓ~Ó ÊÓ$ÙÓTÔ:[	Ó~Ó ÊÓ$ÙÓ ÊÔ9Ó-ÓÛÔ7·Ó&NÓTÔ6§Ó~Ó ÊÓ$ÙÓTÔ5g
Ó~Ó ÊÓ$ÙÓTÔ4*Ó~Ó ÊÓ$ÙÓTÔ2ÌÓ~Ó ÊÓ$ÙÓTÔ1∞Ó~Ó 9Ó$ÙÓTÔ0sÓ~Ó 9Ó$ÙÓTÔ/6Ó~Ó 9Ó$ÙÓTÔ-˘	Ó~Ó 9Ó$ÙÓTÔ,ºÓ~Ó 9Ó$ÙÓTÔ+Ó~Ó 9Ó$ÙÓ 9Ô*BÓ,cÓÛÔ)Ó 9ÓTÔ'»Ó~Ó 9Ó$ÙÓTÔ&ãÓ~Ó 9Ó$ÙÓTÔ%NÓ~Ó 9Ó$ÙÓTÔ$Ó~Ó 9Ó$ÙÓTÔ"‘Ó~Ó 9Ó$ÙÓTÔ!óÓ~Ó 9Ó$ÙÓTÔ ZÓ~Ó 9Ó$ÙÓTÔÓ~Ó 9Ó$ÙÓTÔ‡Ó~Ó 9Ó$ÙÓTÔ£Ó~Ó 9Ó$ÙÓTÔfÓ ÊÓ%°Ó*\ÓTÔ)Ó ÊÓ%°Ó*\ÓTÔÏÓ~Ó 9Ó$ÙÓTÔØÓ~Ó 9Ó$ÙÓTÔrÓ~Ó 9Ó$ÙÓTÔ5Ó ÊÓ%°Ó*\ÓTÔ¯Ó~Ó 9Ó$ÙÓTÔª
Ó~Ó 9Ó$ÙÓTÔ~Ó~Ó 9Ó$ÙÓTÔA
Ó~Ó 9Ó$ÙÓTÔ	Ó~Ó 9Ó$ÙÓ 9Ô
«Ó,cÓÛÔäÓ%°ÓTÔMÓ~Ó 9Ó$ÙÓTÔ
Ó~Ó 9Ó$ÙÓTÔ”Ó~Ó 9Ó$ÙÓTÔñÓ~Ó 9Ó$ÙÓTÔYÓ~Ó 9Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������∆����	Ï
X(å_0û����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GotoFrame127510373L     XCoCall127610376L     XCoReturn127710402L     XReturnTo130010405L     XGotoLabel130110410L     XRetryCall130210416L     XReturnFrom110410435L     X10472220 (144)IfsCalls.BR10473Call0130310473L     XActOnDiskPages111610473L     XOpenDD134010473L     XCall1130410474L     XWriteDiskPages111410474L     XLockDD134110474L     XCall2130510475L     XCloses106110475L     XCreateDiskFile133110475L     XReadDDPage134210475L     XCall3130610476L     XGets132310476L     XDeleteDiskPages133210476L     XUnlockDD134310476L     XCall4130710477L     XPuts106010477L     XAssignDiskPage111210477L     XFlushDD134410477L     XCall5131010500L     XResets132410500L     XReleaseDiskPage111110500L     XCloseDD134510500L     XCall6131110501L     XPutbacks132510501L     XVirtualDiskDA133310501L     XDestroyDDMgr134610501L     XCall7131210502L     XErrors132610502L     XRealDiskDA133410502L     XCall8131310503L     XEndofs132710503L     XCall9131410504L     XStateofs133010504L     XInitializeDiskCBZ133510504L     XCall10131510505L     XDoDiskCommand133610505L     XCall11131610506L     XCall12131710507L     XCall13132010510L     XCall14132110511L     XGetDiskCb133710511L     XCall15132210512L     XCloseDisk107310512L     X1051220 (16)Calendar.BR10513Timer135210513L     XReadCalendar135010534L     XDayTime135410534L     XSetCalendar135110543L     XSetDayTime135310543L     X10660146 (102)VMemA.BR10661VRR5010663L     XVRRP5610670L     XVRR15210675L     XVRR25410677L     XRDREF0136010700L     XVWR5110735L     XVWRP5710742L     XVWR15310747L     XVWR25510751L     XWTREF0136210752L     XREHASHMAP135710771L     XRDREF1136110776L     XDOUBLEADD16011003L     XVmemRam136311013L     X11025145 (101)IfsScavenger.bs10-Aug-84  2:04:36Page   3���ÓTÔc8Ó~Ó 9Ó$ÙÓTÔa˚Ó~Ó 9Ó$ÙÓTÔ`æÓ~Ó 9Ó$ÙÓTÔ_ÅÓ~Ó 9Ó$ÙÓTÔ^DÓ~Ó 9Ó$ÙÓTÔ]Ó~Ó 9Ó$ÙÓTÔ[ 	Ó~Ó 9Ó$ÙÓ 9ÔZçÓ,cÓÛÔYP
Ó 9ÓTÔXÓ~Ó 9Ó$ÙÓTÔV÷
Ó~Ó 9Ó$ÙÓTÔUôÓ~Ó 9Ó$ÙÓTÔT\Ó~Ó 9Ó$ÙÓTÔS
Ó~Ó 9Ó$ÙÓTÔQ‚Ó~Ó 9Ó$ÙÓTÔP•Ó~Ó 9Ó$ÙÓTÔOhÓ~Ó 9Ó$ÙÓTÔN+
Ó~Ó 9Ó$ÙÓTÔLÓ	Ó~Ó 9Ó$ÙÓTÔK±Ó~Ó 9Ó$ÙÓTÔJtÓ~Ó 9Ó$ÙÓTÔI7Ó~Ó 9Ó$ÙÓTÔG˙Ó~Ó 9Ó$ÙÓTÔFΩÓ~Ó 9Ó$ÙÓTÔEÄÓ~Ó 9Ó$ÙÓTÔDC
Ó~Ó 9Ó$ÙÓTÔCÓ~Ó 9Ó$ÙÓTÔA…Ó~Ó 9Ó$ÙÓTÔ@åÓ~Ó 9Ó$ÙÓTÔ?OÓ~Ó 9Ó$ÙÓTÔ>Ó~Ó 9Ó$ÙÓTÔ<’Ó~Ó 9Ó$ÙÓTÔ;òÓ~Ó 9Ó$ÙÓTÔ:[Ó~Ó 9Ó$ÙÓTÔ9Ó~Ó 9Ó$ÙÓTÔ7·Ó~Ó 9Ó$ÙÓTÔ6§Ó~Ó 9Ó$ÙÓTÔ5g	Ó~Ó 9Ó$ÙÓTÔ4*Ó~Ó 9Ó$ÙÓTÔ2ÌÓ~Ó 9Ó$ÙÓTÔ1∞Ó~Ó 9Ó$ÙÓTÔ0sÓ~Ó 9Ó$ÙÓTÔ/6Ó ÊÓ%°Ó*\ÓTÔ-˘Ó~Ó 9Ó$ÙÓTÔ,ºÓ~Ó 9Ó$ÙÓTÔ+Ó~Ó 9Ó$ÙÓTÔ*BÓ~Ó 9Ó$ÙÓTÔ)Ó~Ó 9Ó$ÙÓTÔ'»Ó~Ó 9Ó$ÙÓTÔ&ãÓ~Ó 9Ó$ÙÓTÔ%NÓ~Ó 9Ó$ÙÓTÔ$Ó~Ó 9Ó$ÙÓ 9Ô"‘Ó-ÓÛÔ!ó
Ó 9ÓTÔ ZÓ~Ó 9Ó$ÙÓTÔÓ~Ó 9Ó$ÙÓTÔ‡Ó~Ó 9Ó$ÙÓTÔ£
Ó~Ó 9Ó$ÙÓTÔf	Ó~Ó 9Ó$ÙÓ 9Ô)Ó,cÓÛÔÏÓ 9ÓTÔØÓÿÓ 9Ó$ÙÓTÔrÓÿÓ 9Ó$ÙÓTÔ5ÓÿÓ 9Ó$ÙÓTÔ¯ÓÿÓ 9Ó$ÙÓTÔªÓ~Ó 9Ó$ÙÓTÔ~ÓÿÓ 9Ó$ÙÓTÔAÓÿÓ 9Ó$ÙÓTÔÓÿÓ 9Ó$ÙÓTÔ
«ÓÿÓ 9Ó$ÙÓTÔäÓ~Ó 9Ó$ÙÓTÔMÓ~Ó 9Ó$ÙÓTÔ
Ó~Ó 9Ó$ÙÓTÔ”	ÓÿÓ 9Ó$ÙÓTÔñÓ~Ó 9Ó$ÙÓ 9ÔYÓ,cÔh.Ó	ÏÓ"∫ÓEtˇ��������ÿ����	Ï
X(å_0 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������TfsA.BR11026TFSIncrement136611026L     XTFSModShift136711036L     XTFSModShiftA137011045L     XTFSRealDA136411073L     XTFSVirtualDA136511137L     XTFSSilentBoot137111206L     X11214167 (119)DspStreamsB.BR11215CreateDisplayStream137211216P     XCharWidth137311535P     XResetLine137411671P     XFontHeight137511715P     Xxfont137611727P      ClearDs137711745P      ClearMap140012040P      ReleaseDs140112067P      ShowDisplayStream140212107P     XPrevDCB140312253P      GetFont140412302P     XSetFont140512311P     XGetBitPos140612347P     XSetBitPos140712356P     XGetLmarg141012434P     XSetLmarg141112443P     XGetRmarg141212460P     XSetRmarg141312467P     XGetLinePos141412531P     XSetLinePos141512547P     XInvertLine141612633P     XScroll141712666P     Xone143013212L      Compact142013310P      used143113432L      GetMapSpace142113560P      ScrollOK142213713P      FreeBitMap142313736P      EraseBits142413774P     X142203004 (1540)DspStreamsA.BR14221DisplayPut142714221L     X14370150 (104)Gacha10.BR14371sysFont142614373L     X165602170 (1144)KeyStreamsB.BR16561CreateKeyboardStream143316562P     XSetKeyboardProc143417010P     XKeyGets143517037P      KeyReset143617107P      KeyEofs143717124P      17142362 (242)KeyStreamsA.BR17143kbInterrupt144317164L     XkbTable144017250L     XkbTransitionTable144717444L     X17563421 (273)IfsResUtilB.BR17564IFSError106417565P     X RSysErr110517615P     X RLock146317653P     X RUnlock146417765P     X RIFSAllocate146520033P     X RIFSFree146620431P     X RIFSAddToZone146720664P     X RSysAllocateZero147020724P     X RFreePointer147120746P     X RIFSIdle147221013P     X R210641301 (705)IfsVMemRes.BR21065FindVMD150121066P     X RIfsNoBufsProc147321163P     X RCleanupLocks150221200P     X RDOPAGEIO150321240P     X RPageType150421360P     X RPageGroupAlign150521406P     X RIfsScavenger.bs10-Aug-84  2:04:36Page   4���ÓÛÔc8Ó 9ÓTÔa˚Ó~Ó 9Ó$ÙÓTÔ`æ
Ó~Ó 9Ó$ÙÓTÔ_ÅÓ~Ó 9Ó$ÙÓTÔ^DÓ~Ó 9Ó$ÙÓTÔ]Ó~Ó 9Ó$ÙÓTÔ[ Ó~Ó 9Ó$ÙÓ 9ÔZçÓ,cÓÛÔYP
Ó%°ÓTÔXÓ ÊÓ%°Ó*\ÓTÔV÷Ó~Ó 9Ó$ÙÓTÔUôÓ~Ó 9Ó$ÙÓTÔT\	Ó~Ó 9Ó$ÙÓTÔSÓ~Ó 9Ó$ÙÓTÔQ‚Ó~Ó 9Ó$ÙÓTÔP•Ó~Ó 9Ó$ÙÓTÔOhÓ~Ó 9Ó$ÙÓTÔN+Ó ÊÓ%°Ó*\ÓTÔLÓÓ~Ó 9Ó$ÙÓTÔK±Ó~Ó 9Ó$ÙÓTÔJtÓ~Ó 9Ó$ÙÓTÔI7Ó~Ó 9Ó$ÙÓTÔG˙Ó~Ó 9Ó$ÙÓTÔFΩÓ~Ó 9Ó$ÙÓTÔEÄÓ~Ó 9Ó$ÙÓTÔDCÓ~Ó 9Ó$ÙÓTÔCÓ~Ó 9Ó$ÙÓTÔA…	Ó~Ó 9Ó$ÙÓTÔ@å	Ó~Ó 9Ó$ÙÓTÔ?O	Ó~Ó 9Ó$ÙÓTÔ>Ó~Ó 9Ó$ÙÓTÔ<’Ó~Ó 9Ó$ÙÓTÔ;òÓ~Ó 9Ó$ÙÓTÔ:[Ó~Ó 9Ó$ÙÓTÔ9
Ó~Ó 9Ó$ÙÓTÔ7·Ó~Ó 9Ó$ÙÓTÔ6§	Ó~Ó 9Ó$ÙÓTÔ5gÓ~Ó 9Ó$ÙÓ 9Ô4*Ó+∂
ÓÛÔ2Ì
Ó%°ÓTÔ1∞	Ó~Ó 9Ó$ÙÓ 9Ô0sÓ,cÓÛÔ/6	Ó 9ÓTÔ-˘Ó~Ó 9Ó$ÙÓ 9Ô,ºÓ+∂
ÓÛÔ+
Ó%°ÓTÔ*BÓ ÊÓ%°Ó*\ÓTÔ)Ó~Ó 9Ó$ÙÓTÔ'»Ó~Ó 9Ó$ÙÓTÔ&ãÓ~Ó 9Ó$ÙÓTÔ%NÓ~Ó 9Ó$ÙÓ 9Ô$Ó,cÓÛÔ"‘
Ó%°ÓTÔ!ó
Ó~Ó 9Ó$ÙÓTÔ ZÓ~Ó 9Ó$ÙÓTÔÓ ÊÓ%°Ó*\Ó 9Ô‡Ó,cÓÛÔ£
Ó%°ÓTÔfÓ~Ó 9Ó$ÙÓTÔ)Ó~Ó 9Ó$ÙÓTÔÏÓ~Ó 9Ó$ÙÓTÔØÓ~Ó 9Ó$ÙÓTÔr
Ó~Ó 9Ó$ÙÓTÔ5Ó~Ó 9Ó$ÙÓTÔ¯Ó~Ó 9Ó$ÙÓTÔªÓ~Ó 9Ó$ÙÓTÔ~
Ó~Ó 9Ó$ÙÓTÔAÓ~Ó 9Ó$ÙÓ 9ÔÓ+∂	ÓÛÔ
«Ó%°ÓTÔäÓ~Ó 9Ó$ÙÓTÔMÓ~Ó 9Ó$ÙÓTÔ
Ó~Ó 9Ó$ÙÓTÔ”Ó~Ó 9Ó$ÙÓTÔñÓ~Ó 9Ó$ÙÓTÔY
Ó~Ó 9Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������P����	Ï
X)9_0™����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PageGroupBase150621431P     X RPageGroupSize150721454P     X R21476412 (266)IfsVMemFileRes.BR21477VFileReadPage151021500P     X RVFileWritePage151121525P     X RVFilePageType151221552P     X RVFilePageGroupSize151321560P     X RVFilePageGroupBase151421574P     X RVFilePageGroupAlign151521613P     X RVFileDOPAGEIO151621633P     X R21731233 (155)IfsOverlays.BR21732ReadOv153621733P       ROverlayLockProc153722003P     X ROvCleanupLocks154022032P     X ROvPageType154122315P     X ROvPageGroupAlign154222323P     X ROvPageGroupBase154322337P     X ROvPageGroupSize154422345P     X ROvDOPAGEIO154522370P     X RSwappedOut100022475P     X RFindOverlayFromPn154622505P     X RGenerateOverlays154722545P     X ROverlayFaultProc6322575P     X RDeclareOverlayPresent155023171P     X ROverlayFirstPn155123273P     X ROverlayNpages155223304P     X RReadOverlay155323323P     X RReleaseOverlay155423457P     X R235771646 (934)IfsBTreeRes.BR23600BVRRP156023601P     X RBVWRP156123614P     X RBtLockCell156223727P     X RBtUnlockCell156323741P     X R23761162 (114)Alloc.BR23762CheckFreeNode156423763P       RCheckBounds156524032P       RAllocBomb156624065P       RInitializeZone147424125P     X RAddToZone156724240P     X RrAllocate157024402P       RrFree157124717P       R250241043 (547)FastStreamsB.BR25025InitializeFstream157225026P     X RSetupFstream157325141P     X RSetEof157425230P     X REofError157525266P     X RStreamError123225300P     X RItemSize157625312P     X R25323277 (191)IfsDVec.BR25324Dvec155725325P     X RDefaultArgs142525603P     X R25762437 (287)IfsIsf.BR25763IndexedPageIO151725764P     X RMorePageIO157726573P     X RWriteFmap160027542P     X RLookupFmap160127607P     X RExtendFmap160227771P       RNextFmap160330274P       RFreeFmap160430310P     X R303372355 (1261)VMem.BR30340MAPTRAP135530341P     X RdefaultNoBufsProc162630776P     X RFlushMapStats162731026P     X Rgetgroup163031077P       RFindFreeBuf163131134P     X Rbot1164631277L       Rmergeblocks163231315P       Rdown164731515L       RIfsScavenger.bs10-Aug-84  2:04:36Page   5��ÓTÔc8Ó~Ó 9Ó$ÙÓTÔa˚Ó~Ó 9Ó$ÙÓ 9Ô`æÓ,cÓÛÔ_ÅÓ%°ÓTÔ^DÓ~Ó 9Ó$ÙÓTÔ]
Ó~Ó 9Ó$ÙÓTÔ[ Ó~Ó 9Ó$ÙÓTÔZçÓ ÊÓ%°Ó*\ÓTÔYPÓ ÊÓ%°Ó*\ÓTÔXÓ ÊÓ%°Ó*\ÓTÔV÷Ó~Ó 9Ó$ÙÓ 9ÔUôÓ,cÓÛÔT\
Ó%°ÓTÔSÓ~Ó 9Ó$ÙÓTÔQ‚Ó~Ó 9Ó$ÙÓTÔP•
Ó~Ó 9Ó$ÙÓTÔOh	Ó~Ó 9Ó$ÙÓTÔN+Ó ÊÓ%°Ó*\ÓTÔLÓÓ~Ó 9Ó$ÙÓTÔK±Ó~Ó 9Ó$ÙÓTÔJt	Ó~Ó 9Ó$ÙÓTÔI7	Ó~Ó 9Ó$ÙÓTÔG˙Ó ÊÓ%°Ó*\ÓTÔFΩÓ ÊÓ%°Ó*\ÓTÔEÄÓ"@Ó%°Ó*\ÓTÔDCÓ ÊÓ%°Ó*\ÓTÔC
Ó~Ó 9Ó$ÙÓTÔA…Ó~Ó 9Ó$ÙÓTÔ@å
Ó~Ó 9Ó$ÙÓTÔ?O
Ó~Ó 9Ó$ÙÓ 9Ô>Ó+∂	ÓÛÔ<’
Ó%°ÓTÔ;òÓ~Ó 9Ó$ÙÓTÔ:[Ó~Ó 9Ó$ÙÓTÔ9	Ó~Ó 9Ó$ÙÓTÔ7·Ó~Ó 9Ó$ÙÓ 9Ô6§Ó,cÓÛÔ5gÓ 9ÓTÔ4*Ó~Ó 9Ó$ÙÓTÔ2Ì
Ó~Ó 9Ó$ÙÓTÔ1∞Ó~Ó 9Ó$ÙÓTÔ0s
Ó~Ó 9Ó$ÙÓTÔ/6Ó~Ó 9Ó$ÙÓTÔ-˘Ó~Ó 9Ó$ÙÓTÔ,ºÓ~Ó 9Ó$ÙÓ 9Ô+Ó+∂	ÓÛÔ*BÓ%°ÓTÔ)Ó ÊÓ%°Ó*\ÓTÔ'»Ó~Ó 9Ó$ÙÓTÔ&ãÓ~Ó 9Ó$ÙÓTÔ%NÓ~Ó 9Ó$ÙÓTÔ$
Ó~Ó 9Ó$ÙÓTÔ"‘Ó~Ó 9Ó$ÙÓ 9Ô!óÓ,cÓÛÔ Z	Ó 9ÓTÔÓ~Ó 9Ó$ÙÓTÔ‡
Ó~Ó 9Ó$ÙÓ 9Ô£Ó,cÓÛÔfÓ 9ÓTÔ)Ó~Ó 9Ó$ÙÓTÔÏ	Ó~Ó 9Ó$ÙÓTÔØÓ~Ó 9Ó$ÙÓTÔr	Ó~Ó 9Ó$ÙÓTÔ5	Ó~Ó 9Ó$ÙÓTÔ¯Ó~Ó 9Ó$ÙÓTÔªÓ~Ó 9Ó$ÙÓ 9Ô~Ó+∂
ÓÛÔAÓ 9ÓTÔÓ~Ó 9Ó$ÙÓTÔ
«Ó ÊÓ%°Ó*\ÓTÔäÓ~Ó 9Ó$ÙÓTÔMÓ~Ó 9Ó$ÙÓTÔ

Ó~Ó 9Ó$ÙÓTÔ”Ó~Ó 9Ó$ÙÓTÔñ
Ó~Ó 9Ó$ÙÓTÔYÓ~Ó 9Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������
����	Ï
X)9_0¶������������������������������������������������������������������������������������������������������������������������������������������������������������������������RemoveBufs163331524P       RUpdateChain163431614P       RADDTOMAP163531733P       RMakeMapEntry163632041P       Rcorepage163732116P       RDeleteMapEntry164032137P       RFlushBufs164132312P     X Rtry165032360L       Rflushout164232677P       RLockCell155532736P     X RUnlockCell155633024P     X RDoLocks164333101P     X Rdlexit165133201L       RLockReloc164433204P     X RCheckBPT164533215P       R332242665 (1461)VMemAux.BR33225AddBuffers147533226P     X RSnarfBuffer106333306P     X RUnsnarfBuffer165233452P     X RFlushBuffers165333475P     X RIsLocked165433515P     X RVirtualPage165533530P     X R33553327 (215)BfsBase.BR33554BFSVirtualDA165633555P     X RBFSRealDA165733627P     X RBFSNonEx166033726P     X RDefaultBfsErrorRtn166133740P     X RBfsInitializeCbStorage166233753P     X RBfsDoDiskCommand166334107P     X RBfsMakeFpFromLabel166434443P     X RBfsGetCb166534465P     X RBFSActOnPages166635073P     X RAretry167035176L       RBfsDefaultCleanupRtn166735464P       R355331760 (1008)TfsBase.BR35534TFSInitializeCbStorage167535535P     X RTFSDoDiskCommand167635664P     X RTFSGetCb167736232P     X RDoRecovery170037037P     X RTFSWaitQuiet170137276P     X RDefaultTFSErrorRtn170237443P     X RTFSNonEx170337456P     X RDataFix170437467P     X RTFSActOnPages170537766P     X RAretry170740065L       RTFSDefaultCleanupRtn170640355P       R404252672 (1466)IfsScavInit.BR40426InitIFSPart1100340427P     X RInitIFSPart2100541747P     X RInitIFSPart3100642160P     X RMakeFree171542470P       RIFSFinish171642645P     X RInitTimeIO171742723P       R430472422 (1298)IfsScavOvInit.BR43050DeclareAllOEPs175143051P     X RInitDisksFinish174343274P     X R43364315 (205)IfsContextInit.BR43365InitializeContext173643366P     X R4346175 (61)IfsOverlaysInit.BR43462InitOverlays174243463P     X RDeclareOEP175743764P     X RDeclareXEP200744042P     X RFixupSwappedOut174444123P     X ROverlayInit201044175P       ROEPinit201144434P       ROverlayScan201244522P       Radvancetopage201345434P       R457732312 (1226)IfsVmemInit.BR45774IfsScavenger.bs10-Aug-84  2:04:36Page   6��ÓTÔc8	Ó~Ó 9Ó$ÙÓTÔa˚
Ó~Ó 9Ó$ÙÓTÔ`æÓ~Ó 9Ó$ÙÓTÔ_ÅÓ~Ó 9Ó$ÙÓTÔ^DÓ~Ó 9Ó$ÙÓTÔ]
Ó~Ó 9Ó$ÙÓTÔ[ Ó~Ó 9Ó$ÙÓTÔZçÓ~Ó 9Ó$ÙÓTÔYPÓ~Ó 9Ó$ÙÓTÔXÓ~Ó 9Ó$ÙÓTÔV÷	Ó~Ó 9Ó$ÙÓTÔUôÓ~Ó 9Ó$ÙÓTÔT\Ó~Ó 9Ó$ÙÓTÔSÓ~Ó 9Ó$ÙÓTÔQ‚Ó~Ó 9Ó$ÙÓ 9ÔP•Ó+∂
ÓÛÔOh	Ó 9ÓTÔN+	Ó~Ó 9Ó$ÙÓTÔLÓ
Ó~Ó 9Ó$ÙÓTÔK±Ó~Ó 9Ó$ÙÓTÔJtÓ~Ó 9Ó$ÙÓTÔI7Ó~Ó 9Ó$ÙÓTÔG˙
Ó~Ó 9Ó$ÙÓ 9ÔFΩÓ,cÓÛÔEÄ	Ó 9ÓTÔDCÓ~Ó 9Ó$ÙÓTÔCÓ~Ó 9Ó$ÙÓTÔA…Ó~Ó 9Ó$ÙÓTÔ@åÓ ÊÓ%°Ó*\ÓTÔ?OÓ ÊÓ%°Ó*\ÓTÔ>Ó ÊÓ%°Ó*\ÓTÔ<’Ó ÊÓ%°Ó*\ÓTÔ;òÓ~Ó 9Ó$ÙÓTÔ:[Ó~Ó 9Ó$ÙÓTÔ9Ó~Ó 9Ó$ÙÓTÔ7·Ó ÊÓ%°Ó*\Ó 9Ô6§Ó+∂
ÓÛÔ5g	Ó 9ÓTÔ4*Ó ÊÓ%°Ó*\ÓTÔ2ÌÓ ÊÓ%°Ó*\ÓTÔ1∞Ó~Ó 9Ó$ÙÓTÔ0s	Ó~Ó 9Ó$ÙÓTÔ/6Ó~Ó 9Ó$ÙÓTÔ-˘Ó ÊÓ%°Ó*\ÓTÔ,ºÓ~Ó 9Ó$ÙÓTÔ+Ó~Ó 9Ó$ÙÓTÔ*BÓ~Ó 9Ó$ÙÓTÔ)Ó~Ó 9Ó$ÙÓTÔ'»Ó ÊÓ%°Ó*\Ó 9Ô&ãÓ+∂
ÓÛÔ%N
Ó%°ÓTÔ$Ó~Ó 9Ó$ÙÓTÔ"‘Ó~Ó 9Ó$ÙÓTÔ!óÓ~Ó 9Ó$ÙÓTÔ ZÓ~Ó 9Ó$ÙÓTÔÓ~Ó 9Ó$ÙÓTÔ‡	Ó~Ó 9Ó$ÙÓ 9Ô£Ó+∂
ÓÛÔfÓ%°ÓTÔ)
Ó~Ó 9Ó$ÙÓTÔÏÓ~Ó 9Ó$ÙÓ 9ÔØÓ,cÓÛÔrÓ%°ÓTÔ5Ó ÊÓ%°Ó*\Ó 9Ô¯Ó-ÓÛÔªÓ%°ÓTÔ~Ó~Ó 9Ó$ÙÓTÔA	Ó~Ó 9Ó$ÙÓTÔ	Ó~Ó 9Ó$ÙÓTÔ
«Ó~Ó 9Ó$ÙÓTÔä
Ó~Ó 9Ó$ÙÓTÔMÓ~Ó 9Ó$ÙÓTÔ

Ó~Ó 9Ó$ÙÓTÔ”Ó~Ó 9Ó$ÙÓ 9ÔñÓ+∂
ÓÛÔY
Ó%°Ôh.Ó	ÏÓ"∫ÓEtˇ������������	Ï
X)9_0¶��������������������������������������������������������������������������������������������������������������������������������������������������������InitVMem173745775P     X R46233240 (160)IfsVMemSwap.BR46234AllocateVMem201446235P     X RFreeVMem201646410P     X RPurgeVMem201746477P     X R46601346 (230)ContextSchInit.BR46602InitContextSched173546603P     X R4667473 (59)VMemInit.BR46675InitializeVmem201546676P     X Rdummypage202047046P       R47147253 (171)BfsInit.BR47150BFSInit174047151P     X RBFSTryDisk202150342P     X RSetPartition202250473P       R505201351 (745)Template.BR50521PutTemplate173450522P     X RInterpretTemplate202350571P       RPutNum202451205P     X R51433713 (459)IfsBTreeOEP.BR51434InitBTreeOEP175251435P     X R5146025 (21)DiskStreamsOEP.BR51461InitDiskStreamsOEP175351462P     X R5151636 (30)CmdScanOEP.BR51517InitCmdScanOEP175451520P     X R5156547 (39)KeywordOEP.BR51566InitKeywordOEP175551567P     X R5162336 (30)StringOEP.BR51624InitStringOEP175651625P     X R5165025 (21)LoadRam.BR51651LoadRam172451652P     X RSetBLV205752014P     X RRamConfiguration206052101P     X RCheckConsts206152304P       RWRamVec206252434P       RRRamVec206352525P       RJRam206452621P       R52637767 (503)IfsMc.BR52640IfsRamImage172352641L     X R572404401 (2305)ScavInit.BB (IN IfsScavenger.RUN)IfsScavInit.BR0InitIFSPart1100340427P     X RInitIFSPart2100541747P     X RInitIFSPart3100642160P     X RMakeFree171542470P       RIFSFinish171642645P     X RInitTimeIO171742723P       R24212422 (1298)IfsOvXMInit.BR2422InitXMOverlays17452423P     X RLoadOverlayIntoXM20653272P       RCountBanks20664306P       R44572036 (1054)IfsContextInit.BR4460InitializeContext173643366P     X R455475 (61)ScavLpt.BB (IN IfsScavenger.RUN)IfsScavLpt.BR0OpenLPT20711P     X RCloseLPT2072151P     X RFlushLPT2073272P     X RReadLPTE2074342P     X RWriteLPTE2075425P     X RGetLptLpte2076516P     X RIfsScavenger.bs10-Aug-84  2:04:36Page   7���ÓTÔc8Ó~Ó 9Ó$ÙÓ 9Ôa˚Ó,cÓÛÔ`æ
Ó%°ÓTÔ_ÅÓ~Ó 9Ó$ÙÓTÔ^DÓ~Ó 9Ó$ÙÓTÔ]Ó~Ó 9Ó$ÙÓ 9Ô[ Ó,cÓÛÔZçÓ%°ÓTÔYPÓ ÊÓ%°Ó*\Ó 9ÔXÓ-ÓÛÔV÷
Ó 9ÓTÔUô
Ó~Ó 9Ó$ÙÓTÔT\Ó~Ó 9Ó$ÙÓ 9ÔSÓ,cÓÛÔQ‚	Ó 9ÓTÔP•Ó~Ó 9Ó$ÙÓTÔOh	Ó~Ó 9Ó$ÙÓTÔN+Ó~Ó 9Ó$ÙÓ 9ÔLÓÓ+∂	ÓÛÔK±
Ó 9ÓTÔJt
Ó~Ó 9Ó$ÙÓTÔI7Ó ÊÓ%°Ó*\ÓTÔG˙Ó~Ó 9Ó$ÙÓ 9ÔFΩÓ,cÓÛÔEÄ
Ó%°ÓTÔDCÓ~Ó 9Ó$ÙÓ 9ÔCÓ-ÓÛÔA…Ó%°ÓTÔ@åÓ ÊÓ%°Ó*\Ó 9Ô?OÓ-ÓÛÔ>Ó%°ÓTÔ<’
Ó~Ó 9Ó$ÙÓ 9Ô;òÓ-ÓÛÔ:[Ó%°ÓTÔ9
Ó~Ó 9Ó$ÙÓ 9Ô7·Ó-ÓÛÔ6§Ó 9ÓTÔ5gÓ~Ó 9Ó$ÙÓ 9Ô4*Ó-ÓÛÔ2Ì	Ó 9ÓTÔ1∞Ó~Ó 9Ó$ÙÓTÔ0sÓ~Ó 9Ó$ÙÓTÔ/6Ó ÊÓ%°Ó*\ÓTÔ-˘
Ó~Ó 9Ó$ÙÓTÔ,ºÓ~Ó 9Ó$ÙÓTÔ+Ó~Ó 9Ó$ÙÓTÔ*BÓ~Ó 9Ó$ÙÓ 9Ô)Ó,cÓÛÔ'»Ó 9ÓTÔ&ã
Ó~Ó 9Ó$ÙÓ 9Ô%NÓ+∂
Ó	ÏÔ$!ÓÛÔ"‘
Ó(U�ÓTÔ!óÓ~Ó 9Ó$ÙÓTÔ ZÓ~Ó 9Ó$ÙÓTÔÓ~Ó 9Ó$ÙÓTÔ‡Ó~Ó 9Ó$ÙÓTÔ£Ó~Ó 9Ó$ÙÓTÔf	Ó~Ó 9Ó$ÙÓ ÊÔ)Ó+∂
ÓÛÔÏ
Ó&NÓTÔØ
Ó~Ó ÊÓ$ÙÓTÔrÓ ÊÓ&NÓ*\ÓTÔ5	Ó~Ó ÊÓ$ÙÓ ÊÔ¯Ó+∂
ÓÛÔªÓ&NÓTÔ~Ó ÊÓ%°Ó*\Ó ÊÔAÓ-Ó	ÏÔÓÛÔ
«Ó(U�ÓTÔäÓ~Ó"Ì�Ó$ÙÓTÔMÓ~Ó!ìÓ$ÙÓTÔ
Ó~Ó!ìÓ$ÙÓTÔ”Ó~Ó!ìÓ$ÙÓTÔñÓ~Ó!ìÓ$ÙÓTÔY	Ó~Ó!ìÓ$ÙÔh.Ó	ÏÓ"∫ÓEt��������¸����	Ï
X)9_0Z������������������������������������������������������������������������������GetLptFs2077557P     X RGetLptFa2100570P     X RGetLptHome2101577P     X RGetLptSorted2102611P     X RSetLptSorted2103624P     X REnumerateLPT2104637P     X RGetLpteType21051131P     X RGetLpteFlags21061144P     X RGetLpteLength21071157P     X RGetLpteIfp21101171P     X RGetLpteFa21111200P     X RGetLpteIfsName21121211P     X RGetLpteTfsName21131240P     X RGetLpteDIFRec21141266P     X RSetLpteType21151310P     X RSetLpteFlags21161327P     X RSetLpteLength21171346P     X RSetLpteIfp21201363P     X RSetLpteFa21211404P     X RSetLpteIfsName21221425P     X RSetLpteTfsName21231535P     X RSetLpteDIFRec21241650P     X R17341735 (989)ScavKbd.BB (IN IfsScavenger.RUN)IfsScavKbd.BR0OpenDisk10721P     X RPhraseTerminator2137304P       RScavConfirm2140355P     X R542543 (355)ScavPrint.BB (IN IfsScavenger.RUN)IfsScavPrint.BR0PrintTime21351P     X RPrintPLME215176P     X RPrintDiskError2152262P     X RPrintDiskStatus2153415P       RPrintRealDA20061154P     X R12311232 (666)DiskEditor.BB (IN IfsScavenger.RUN)IfsScavDEdit.BR0DiskEditor10661P     X RGetNumber2166543P       ROop21671070P       RExaminePage21701110P       RDETransferPage21711322P       RTransferRetry21771366L       RTransferError21721457P       REditPage21731506P       RExamineCell21742022P       RPrintChar21752437P       RDepositCell21762504P       R25512552 (1386)DirDumper.BB (IN IfsScavenger.RUN)IfsScavDump.BR0DumpLPT10521P     X RInterpretLPT2203266P       RDumpTree1053347P     X RInterpretTree22041202P       RPrintHome22051445P       RPrintInfo22061661P       R21462147 (1127)Pass1.BB (IN IfsScavenger.RUN)IfsScavPass1.BR0Pass110541P     X RPVRR2217762P     X RPVWR22201050P     X R11321133 (603)DiskFindHole.BR1133DiskFindHole11101134P     X RFindNextHole22301326P       R1451317 (207)Pass1Phase1.BB (IN IfsScavenger.RUN)IfsScav1-1.BR0Pass1Phase122221P     X RreadBplRetry223663L       RPhase1Retry2237344L       RReadBplError2233644P       RIfsScavenger.bs10-Aug-84  2:04:36Page   8���ÓTÔc8Ó~Ó!ìÓ$ÙÓTÔa˚Ó~Ó!ìÓ$ÙÓTÔ`æ	Ó~Ó!ìÓ$ÙÓTÔ_ÅÓ~Ó!ìÓ$ÙÓTÔ^DÓ~Ó!ìÓ$ÙÓTÔ]Ó~Ó!ìÓ$ÙÓTÔ[ 
Ó~Ó ÊÓ$ÙÓTÔZçÓ~Ó ÊÓ$ÙÓTÔYPÓ~Ó ÊÓ$ÙÓTÔX	Ó~Ó ÊÓ$ÙÓTÔV÷Ó~Ó ÊÓ$ÙÓTÔUô
Ó~Ó ÊÓ$ÙÓTÔT\
Ó~Ó ÊÓ$ÙÓTÔSÓ~Ó ÊÓ$ÙÓTÔQ‚
Ó~Ó ÊÓ$ÙÓTÔP•Ó~Ó ÊÓ$ÙÓTÔOhÓ~Ó ÊÓ$ÙÓTÔN+	Ó~Ó ÊÓ$ÙÓTÔLÓÓ~Ó ÊÓ$ÙÓTÔK±
Ó~Ó ÊÓ$ÙÓTÔJt
Ó~Ó ÊÓ$ÙÓTÔI7Ó~Ó ÊÓ$ÙÓ ÊÔG˙Ó+∂	Ó	ÏÔFΩÓÛÔEÄÓ(U�ÓTÔDCÓ~Ó"Ì�Ó$ÙÓTÔCÓ ÊÓ&˚Ó*\ÓTÔA…
Ó~Ó!ìÓ$ÙÓ!ìÔ@åÓ,cÓ	ÏÔ?O"ÓÛÔ>Ó(U�ÓTÔ<’Ó~Ó"Ì�Ó$ÙÓTÔ;òÓ~Ó"@Ó$ÙÓTÔ:[
Ó~Ó!ìÓ$ÙÓTÔ9Ó~Ó!ìÓ$ÙÓTÔ7·
Ó~Ó ÊÓ$ÙÓ ÊÔ6§Ó+∂	Ó	ÏÔ5g#ÓÛÔ4*Ó(U�ÓTÔ2Ì	Ó~Ó"Ì�Ó$ÙÓTÔ1∞Ó~Ó!ìÓ$ÙÓTÔ0sÓ~Ó ÊÓ$ÙÓTÔ/6
Ó~Ó ÊÓ$ÙÓTÔ-˘
Ó~Ó ÊÓ$ÙÓTÔ,ºÓ~Ó ÊÓ$ÙÓTÔ+Ó~Ó ÊÓ$ÙÓTÔ*BÓ~Ó ÊÓ$ÙÓTÔ)
Ó~Ó ÊÓ$ÙÓTÔ'»Ó~Ó ÊÓ$ÙÓTÔ&ã
Ó~Ó ÊÓ$ÙÓ ÊÔ%NÓ+∂
Ó	ÏÔ$"ÓÛÔ"‘
Ó(U�ÓTÔ!óÓ~Ó"Ì�Ó$ÙÓTÔ ZÓ~Ó!ìÓ$ÙÓTÔÓ~Ó!ìÓ$ÙÓTÔ‡Ó~Ó ÊÓ$ÙÓTÔ£Ó~Ó ÊÓ$ÙÓTÔfÓ~Ó ÊÓ$ÙÓ ÊÔ)Ó+∂
Ó	ÏÔÏÓÛÔØÓ(U�ÓTÔrÓ~Ó"Ì�Ó$ÙÓTÔ5Ó~Ó!ìÓ$ÙÓTÔ¯Ó~Ó ÊÓ$ÙÓ ÊÔªÓ+∂	ÓÛÔ~Ó&NÓTÔAÓ~Ó ÊÓ$ÙÓTÔÓ~Ó ÊÓ$ÙÓ ÊÔ
«Ó,cÓ	ÏÔä$ÓÛÔMÓ(U�ÓTÔ

Ó~Ó"Ì�Ó$ÙÓTÔ”Ó~Ó"@Ó$ÙÓTÔñ
Ó~Ó!ìÓ$ÙÓTÔYÓ~Ó!ìÓ$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������¨����	Ï
X)9_0å��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Phase1Cleanup2234673P       RPhase1Error22352576P       R26472650 (1448)Pass1Phase2.BB (IN IfsScavenger.RUN)IfsScav1-2.BR0Pass1Phase222231P     X RCheckFile2245111P       RPrintPage22461272P       R14661467 (823)Pass1Phase3.BB (IN IfsScavenger.RUN)IfsScav1-3.BR0Pass1Phase322241P     X RplmRetry2251450L       RbplRetry2252713L       RCheckLD22471042P       RPhase3Error22501404P       R14311432 (794)Pass1Phase4.BB (IN IfsScavenger.RUN)IfsScav1-4.BR0Pass1Phase422251P     X RFillSysDir22601764P       RScavAssignDiskPage22612316P       RScavReleaseDiskPage22622502P       RTransferPage22632564P       RTransferRetry22652611L       R26722673 (1467)Pass1Phase5.BB (IN IfsScavenger.RUN)IfsScav1-5.BR0Pass1Phase522261P     X RCheckLPT22702361P       RPrintDefaultType22713160P       RBreakCr22723214P       RInsertSFTE22733227P       RMakeIFSName22743301P       RSetLeaderPage22753413P       R36063607 (1927)Pass2.BB (IN IfsScavenger.RUN)IfsScavPass2.BR0Pass210651P     X R617620 (400)Pass2Phase2.BB (IN IfsScavenger.RUN)IfsScav2-1.BR0Pass2Phase123071P     X RGetLpte2312274P       RPutLpte2313327P       R363364 (244)Pass2Phase2.BB (IN IfsScavenger.RUN)IfsScav2-2.BR0Pass2Phase223101P     X RFollowPtr2321642P       RCompareRecords23221540P       R21372140 (1120)Pass2Phase3.BB (IN IfsScavenger.RUN)IfsScav2-3.BR0Pass2Phase323111P     X RAddDuplicates23361201P       RInsertRecGen23371454P       RUpdateRecGen23401575P       RTreeMapper23411647P       RMapTreeFunction23421725P       RReadNextTreeDR23431775P       RReadNextLPTDR23442014P       RDIFRecFromDR23453114P       R31643165 (1653)SortPkg.BB (IN IfsScavenger.RUN)SortPkg.BR0Sort23141P     X RInitialize2373604P       RFreeAllocatedStuff23741013P       RBuildRuns23751125P       RMergePass23761416P       RBuildHeap23771673P       RMaintainHeap24001747P       RGetHeap24012173P       RSiftUp24022253P       RSiftDown24032340P       RIfsScavenger.bs10-Aug-84  2:04:36Page   9��ÓTÔc8Ó~Ó!ìÓ$ÙÓTÔa˚
Ó~Ó ÊÓ$ÙÓ ÊÔ`æÓ+∂
Ó	ÏÔ_Å$ÓÛÔ^DÓ(U�ÓTÔ]
Ó~Ó"Ì�Ó$ÙÓTÔ[ Ó~Ó!ìÓ$ÙÓTÔZçÓ~Ó ÊÓ$ÙÓ ÊÔYPÓ+∂	Ó	ÏÔX$ÓÛÔV÷Ó(U�ÓTÔUô
Ó~Ó"Ì�Ó$ÙÓTÔT\Ó~Ó!ìÓ$ÙÓTÔSÓ~Ó!ìÓ$ÙÓTÔQ‚Ó~Ó ÊÓ$ÙÓTÔP•
Ó~Ó ÊÓ$ÙÓ ÊÔOhÓ+∂	Ó	ÏÔN+$ÓÛÔLÓÓ(U�ÓTÔK±
Ó~Ó"Ì�Ó$ÙÓTÔJt	Ó~Ó ÊÓ$ÙÓTÔI7Ó ÊÓ&NÓ*\ÓTÔG˙Ó ÊÓ&NÓ*\ÓTÔFΩÓ~Ó ÊÓ$ÙÓTÔEÄÓ~Ó ÊÓ$ÙÓ ÊÔDCÓ+∂
Ó	ÏÔC$ÓÛÔA…Ó(U�ÓTÔ@å
Ó~Ó"Ì�Ó$ÙÓTÔ?OÓ~Ó ÊÓ$ÙÓTÔ>Ó ÊÓ&NÓ*\ÓTÔ<’Ó~Ó ÊÓ$ÙÓTÔ;ò	Ó~Ó ÊÓ$ÙÓTÔ:[
Ó~Ó ÊÓ$ÙÓTÔ9Ó~Ó ÊÓ$ÙÓ ÊÔ7·Ó+∂
Ó	ÏÔ6§ÓÛÔ5gÓ(U�ÓTÔ4*Ó~Ó"Ì�Ó$ÙÓ!ìÔ2ÌÓ,cÓ	ÏÔ1∞$ÓÛÔ0sÓ(U�ÓTÔ/6
Ó~Ó"Ì�Ó$ÙÓTÔ-˘Ó~Ó!ìÓ$ÙÓTÔ,ºÓ~Ó!ìÓ$ÙÓ!ìÔ+Ó,cÓ	ÏÔ*B$ÓÛÔ)Ó(U�ÓTÔ'»
Ó~Ó"Ì�Ó$ÙÓTÔ&ãÓ~Ó!ìÓ$ÙÓTÔ%N
Ó~Ó ÊÓ$ÙÓ ÊÔ$Ó+∂
Ó	ÏÔ"‘$ÓÛÔ!óÓ(U�ÓTÔ Z
Ó~Ó"Ì�Ó$ÙÓTÔÓ~Ó ÊÓ$ÙÓTÔ‡Ó~Ó ÊÓ$ÙÓTÔ£Ó~Ó ÊÓ$ÙÓTÔf	Ó~Ó ÊÓ$ÙÓTÔ)Ó~Ó ÊÓ$ÙÓTÔÏ
Ó~Ó ÊÓ$ÙÓTÔØÓ~Ó ÊÓ$ÙÓTÔrÓ~Ó ÊÓ$ÙÓ ÊÔ5Ó+∂
Ó	ÏÔ¯ÓÛÔª	Ó"Ì�ÓTÔ~Ó~Ó"Ì�Ó$ÙÓTÔA	Ó~Ó!ìÓ$ÙÓTÔÓ ÊÓ&NÓ*\ÓTÔ
«Ó~Ó ÊÓ$ÙÓTÔäÓ~Ó ÊÓ$ÙÓTÔMÓ~Ó ÊÓ$ÙÓTÔ
Ó~Ó ÊÓ$ÙÓTÔ”Ó~Ó ÊÓ$ÙÓTÔñÓ~Ó ÊÓ$ÙÓTÔYÓ~Ó ÊÓ$ÙÔh.Ó	ÏÓ"∫ÓEt��������ä����	Ï
X)9_0k������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MergeRun24042444P       RReadRecord24052647P       RFillBuffer24062756P       RWriteRecord24073041P       RFlushBuffer24103135P       RUGR24113157P       R32003201 (1665)IfsDirParse.BB (IN IfsScavenger.RUN)IfsDirParse.BR0CreateFD24151P     X RDestroyFD2416313P     X RParseFD2240341P     X RUpdateFD24171060P     X RScanFD24201143P       RIFSParseVersion24211334P     X RIFSAppendVersion24221440P     X RSetDRLength24231513P     X R15651566 (886)AltoDirs.BB (IN IfsScavenger.RUN)DirScanA.BR0ScanDirBuffer24250L     X R6770 (56)Dirs.BR70FindFdEntry242771P     X RAdvanceBuffer2430743P       RMakeNewFdEntry24311002P     X RDeleteFdEntry24321142P     X RParseFileName24331205P     X RExtractLegalFileName24341400P       RSetWorkingDir17261563P     X ROpenFile11131615P     X ROpenFileFromFp24352145P     X RDeleteFile21302171P     X RStripVersion24362421P     X RAppendVersion24372474P     X R25042415 (1293)DiskStreamsScan.BR2505InitScanStream24402506P     X RGetScanStreamBuffer24422667P     X RSretry24462751L       RScanCleanupCb24443162P       RFinishScanStream24413227P     X RFlushRetry24473247L       R3312606 (390)DiskStreams.BB (IN IfsScavenger.RUN)DiskStreams.BR0CreateDiskStream11171P     X RCloseDiskStream2033367P     X RResetDiskStream2032520P     X RTruncateDiskStream2125533P     X RRewind2451647P       RResetKsState2452710P     X RReleaseKs2453733P     X RReadLeaderPage21271002P     X RWriteLeaderPage23051041P     X RLnPageSize23041072P     X RKsGetDisk24541104P     X RKsHintLastPageFa24551113P     X RKsBufferAddress24561123P     X RKsSetBufferAddress24571133P     X RAccessError20301154P     X RKsHandleBfsError20311165P     X R12071210 (648)DiskStreamsMain.BB (IN IfsScavenger.RUN)DiskStreamsMain.BR0FixupDiskStream20341P     X RCleanupDiskStream213253P     X RSetLengthHint2450245P     X RMustBeKs2462324P     X RWriteBlock2131343P     X RReadBlock1727362P     X RTransferPages2460667P     X RPositionPtr24451433P     X RPosPtr24611476P     X R16521653 (939)DiskStreamsAux.BB (IN IfsScavenger.RUN)IfsScavenger.bs10-Aug-84  2:04:36Page  10��ÓTÔc8Ó~Ó ÊÓ$ÙÓTÔa˚	Ó~Ó ÊÓ$ÙÓTÔ`æ	Ó~Ó ÊÓ$ÙÓTÔ_Å
Ó~Ó ÊÓ$ÙÓTÔ^D
Ó~Ó ÊÓ$ÙÓTÔ]Ó~Ó ÊÓ$ÙÓ ÊÔ[ Ó+∂
Ó	ÏÔZç$ÓÛÔYP
Ó(U�ÓTÔXÓ~Ó"Ì�Ó$ÙÓTÔV÷Ó~Ó!ìÓ$ÙÓTÔUôÓ~Ó!ìÓ$ÙÓTÔT\Ó~Ó ÊÓ$ÙÓTÔSÓ~Ó ÊÓ$ÙÓTÔQ‚Ó~Ó ÊÓ$ÙÓTÔP•Ó ÊÓ&NÓ*\ÓTÔOh
Ó~Ó ÊÓ$ÙÓ ÊÔN+Ó+∂	Ó	ÏÔLÓ!ÓÛÔK±
Ó"Ì�ÓTÔJtÓ~Ó"Ì�Ó$ÙÓ"@ÔI7Ó-ÓÛÔG˙Ó"@ÓTÔFΩ
Ó~Ó"@Ó$ÙÓTÔEÄÓ~Ó!ìÓ$ÙÓTÔDC
Ó~Ó ÊÓ$ÙÓTÔCÓ~Ó ÊÓ$ÙÓTÔA…Ó~Ó ÊÓ$ÙÓTÔ@åÓ ÊÓ&NÓ*\ÓTÔ?OÓ~Ó ÊÓ$ÙÓTÔ>Ó~Ó ÊÓ$ÙÓTÔ<’
Ó~Ó ÊÓ$ÙÓTÔ;ò	Ó~Ó ÊÓ$ÙÓTÔ:[Ó~Ó ÊÓ$ÙÓTÔ9Ó~Ó ÊÓ$ÙÓ ÊÔ7·Ó+∂
ÓÛÔ6§Ó&NÓTÔ5g
Ó~Ó ÊÓ$ÙÓTÔ4*Ó ÊÓ&NÓ*\ÓTÔ2ÌÓ~Ó ÊÓ$ÙÓTÔ1∞Ó~Ó ÊÓ$ÙÓTÔ0sÓ ÊÓ&NÓ*\ÓTÔ/6	Ó~Ó ÊÓ$ÙÓ ÊÔ-˘Ó,cÓ	ÏÔ,º$ÓÛÔ+
Ó(U�ÓTÔ*BÓ ÊÓ(U�Ó*\ÓTÔ)Ó~Ó!ìÓ$ÙÓTÔ'»Ó~Ó!ìÓ$ÙÓTÔ&ãÓ ÊÓ&˚Ó*\ÓTÔ%NÓ~Ó!ìÓ$ÙÓTÔ$Ó~Ó!ìÓ$ÙÓTÔ"‘Ó~Ó!ìÓ$ÙÓTÔ!ó
Ó~Ó ÊÓ$ÙÓTÔ ZÓ~Ó ÊÓ$ÙÓTÔ	Ó~Ó ÊÓ$ÙÓTÔ‡Ó~Ó ÊÓ$ÙÓTÔ£Ó ÊÓ&NÓ*\ÓTÔfÓ~Ó ÊÓ$ÙÓTÔ)Ó ÊÓ&NÓ*\ÓTÔÏ
Ó~Ó ÊÓ$ÙÓTÔØÓ ÊÓ&NÓ*\Ó ÊÔrÓ+∂	Ó	ÏÔ5(ÓÛÔ¯Ó(U�ÓTÔªÓ~Ó"Ì�Ó$ÙÓTÔ~Ó ÊÓ'®Ó*\ÓTÔAÓ~Ó!ìÓ$ÙÓTÔÓ~Ó!ìÓ$ÙÓTÔ
«	Ó~Ó!ìÓ$ÙÓTÔäÓ~Ó!ìÓ$ÙÓTÔMÓ~Ó!ìÓ$ÙÓTÔ

Ó~Ó ÊÓ$ÙÓTÔ”Ó~Ó ÊÓ$ÙÓ ÊÔñÓ+∂	Ó	ÏÔY'Ôh.Ó	ÏÓ"∫ÓEt������������	Ï
X)9_0ñ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DiskStreamsAux.BR0JumpToFa11201P     X RGetCurrentFa1122135P     X RGetCompleteFa2443166P     X RPositionPage1121215P     X RFilePos2133416P     X RSetFilePos2134504P     X RFileLength2126601P     X R706707 (455)BTreeSwap.BB (IN IfsScavenger.RUN)IfsBTreeSwap.BR0OpenFPTree22101P     X RSetBTreePageLength2470363P       RCloseIFSTree2027421P     X RFlushBTreeState2471455P     X RWriteStatePage2472501P       RBtAllocPage2025537P     X RBtFreePage2026644P     X R704705 (453)BTreeRead.BB (IN IfsScavenger.RUN)BTreeRead.BR0ReadRecLE24731P     X RMapTree221153P     X RPathRecLE2474416P     X RBinSearchPage2475637P       RGetRecord24761032P     X RPathForMinKey24771133P       RBackUpOneRecord25001215P     X RRepairOffsets25011240P     X RCheckProgression25021375P       RReadStack25031467P     X RReadPageAndLockBTreePtr25041506P     X RReadStackAndLockBTreePtr25051524P     X RPopStack25061542P     X R15571560 (880)BTreeWrite0.BB (IN IfsScavenger.RUN)BTreeWrtMs0.BR0UpdateRecord23471P     X RMakeEntSeqEnt2507574P     X RAppendEntSeqEnt2510636P     X RFabricateIS2511670P     X RFreeIS2512776P     X RInsertRecords25131027P     X RComputeEntLens25141354P     X RAppendEntSeqEntLens25151412P     X RPageLength25161515P     X RDepositESL25171560P     X R17301731 (985)BTreeWrite1.BB (IN IfsScavenger.RUN)BTreeWrtMs1.BR0ComplexInsertRecords25241P     X RFindRightBrother2526317P     X RRemoveEntry2520564P     X RBasicRemoveEntry2527651P     X RRemoveESE2530764P       RWriteRightBrother25311046P     X RWritePage25321140P     X REntryLength25331221P     X RFillLeftPage25341242P     X RFillRightPage25351320P     X RPushEntSeqEnt25221376P     X RPushEntSeqEntLens25231421P     X R16251626 (918)BTreeWrite2.BB (IN IfsScavenger.RUN)BTreeWrtMs2.BR0HairyInsertRecords25251P     X RMakeNewRoot2521544P     X RFindLeftBrother2536641P     X RAddToHeap25371135P     X RTrickleDown25401161P     X RRemoveFromHeap25411271P     X RSiftUp25421367P     X R15331534 (860)BTreeDelete.BB (IN IfsScavenger.RUN)BTreeDel.BR0DeleteKey23461P     X RIfsScavenger.bs10-Aug-84  2:04:36Page  11���ÓÛÔc8Ó(U�ÓTÔa˚Ó~Ó"Ì�Ó$ÙÓTÔ`æÓ~Ó!ìÓ$ÙÓTÔ_ÅÓ~Ó!ìÓ$ÙÓTÔ^DÓ~Ó!ìÓ$ÙÓTÔ]Ó~Ó!ìÓ$ÙÓTÔ[ 	Ó~Ó!ìÓ$ÙÓTÔZç	Ó~Ó!ìÓ$ÙÓ!ìÔYPÓ,cÓ	ÏÔX"ÓÛÔV÷Ó(U�ÓTÔUô	Ó~Ó"Ì�Ó$ÙÓTÔT\Ó ÊÓ&˚Ó*\ÓTÔSÓ~Ó!ìÓ$ÙÓTÔQ‚Ó~Ó!ìÓ$ÙÓTÔP•
Ó~Ó!ìÓ$ÙÓTÔOh
Ó~Ó!ìÓ$ÙÓTÔN+	Ó~Ó!ìÓ$ÙÓ!ìÔLÓÓ,cÓ	ÏÔK±"ÓÛÔJtÓ"Ì�ÓTÔI7Ó~Ó"Ì�Ó$ÙÓTÔG˙Ó~Ó"@Ó$ÙÓTÔFΩÓ~Ó!ìÓ$ÙÓTÔEÄÓ~Ó!ìÓ$ÙÓTÔDCÓ~Ó ÊÓ$ÙÓTÔCÓ~Ó ÊÓ$ÙÓTÔA…Ó~Ó ÊÓ$ÙÓTÔ@åÓ~Ó ÊÓ$ÙÓTÔ?OÓ ÊÓ&NÓ*\ÓTÔ>Ó~Ó ÊÓ$ÙÓTÔ<’Ó ÊÓ&NÓ*\ÓTÔ;òÓ&NÓ+∂Ó/ƒÓTÔ:[Ó~Ó ÊÓ$ÙÓ ÊÔ9Ó+∂	Ó	ÏÔ7·$ÓÛÔ6§
Ó(U�ÓTÔ5gÓ~Ó"Ì�Ó$ÙÓTÔ4*Ó~Ó!ìÓ$ÙÓTÔ2ÌÓ~Ó!ìÓ$ÙÓTÔ1∞
Ó~Ó!ìÓ$ÙÓTÔ0sÓ~Ó!ìÓ$ÙÓTÔ/6Ó~Ó ÊÓ$ÙÓTÔ-˘
Ó~Ó ÊÓ$ÙÓTÔ,ºÓ ÊÓ&NÓ*\ÓTÔ+	Ó~Ó ÊÓ$ÙÓTÔ*B	Ó~Ó ÊÓ$ÙÓ ÊÔ)Ó+∂	Ó	ÏÔ'»$ÓÛÔ&ã
Ó(U�ÓTÔ%NÓ ÊÓ(U�Ó*\ÓTÔ$Ó ÊÓ&˚Ó*\ÓTÔ"‘
Ó~Ó!ìÓ$ÙÓTÔ!óÓ ÊÓ&˚Ó*\ÓTÔ ZÓ~Ó!ìÓ$ÙÓTÔÓ ÊÓ&NÓ*\ÓTÔ‡Ó~Ó ÊÓ$ÙÓTÔ£
Ó~Ó ÊÓ$ÙÓTÔfÓ~Ó ÊÓ$ÙÓTÔ)Ó~Ó ÊÓ$ÙÓTÔÏÓ~Ó ÊÓ$ÙÓTÔØÓ ÊÓ&NÓ*\Ó ÊÔrÓ+∂	Ó	ÏÔ5$ÓÛÔ¯
Ó(U�ÓTÔªÓ ÊÓ(U�Ó*\ÓTÔ~
Ó~Ó!ìÓ$ÙÓTÔAÓ~Ó!ìÓ$ÙÓTÔÓ~Ó ÊÓ$ÙÓTÔ
«
Ó~Ó ÊÓ$ÙÓTÔä
Ó~Ó ÊÓ$ÙÓTÔMÓ~Ó ÊÓ$ÙÓ ÊÔ
Ó+∂	Ó	ÏÔ”$ÓÛÔñ
Ó"Ì�ÓTÔYÓ~Ó"Ì�Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ������������	Ï
X+Ì_0ë������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������FatherMayNeedWork2543404P       RChangeInFather25441070P       R11521153 (619)VMemSwap.BB (IN IfsScavenger.RUN)IfsVMemSwap.BR0AllocateVMem201446235P     X RFreeVMem201646410P     X RPurgeVMem201746477P     X R345346 (230)IfsVMemFileSwap.BR346OpenVFile2545347P     X ROpenVFileFromFP2221451P     X RCloseVFile2227677P     X RMarkDirtyVFiles2546742P     X RMarkVFileIfDirty25471037P       R1102535 (349)IfsIsfInit.BR1103InitFmap25511104P     X Rfail25521441L       R1534432 (282)TfsWrite.BB (IN IfsScavenger.RUN)TfsWrite.BR0TFSWritePages17651P     X RWretry2555373L       RCheckFreePage2553600P       RCheckFreePageErr2554650P       RTFSAssignDiskPage1770707P     X R12011202 (642)TfsCreate.BB (IN IfsScavenger.RUN)TfsCreate.BR0TFSCreateFile17671P     X RTFSDeletePages1766324P     X RTFSReleaseDiskPage1771555P     X R704705 (453)IfsDDMgrSwap.BR705IFSCreateDDMgr1746706P     X RIFSLockDD17621016P     X RIFSUnlockDD17631035P     X RIFSReadDDPage17641102P     X RIFSOpenDD17601140P     X RIFSCloseDD17611222P     X RFlushKDs25571240P     X R1346442 (290)TfsInit.BB (IN IfsScavenger.RUN)TfsInit.BR0TFSInit21471P     X RTFSTryDisk2563717P     X RTryDisk2564770P       RTFSDiskModel25651122P     X RDetermineDiskModel25661132P       RTFSSetDisk25671352P     X R15561557 (879)TfsClose.BR1557TFSClose17721560P     X RTFSWriteDiskDescriptor25621624P     X R1710132 (90)BfsWrite.BB (IN IfsScavenger.RUN)BfsWrite.BR0BFSWritePages17321P     X RWretry2572357L       RCheckFreePage2571562P       RBFSAssignDiskPage2003627P     X R11371140 (608)BfsCreate.BB (IN IfsScavenger.RUN)BfsCreate.BR0BFSCreateFile20021P     X RBFSDeletePages2001334P     X RBFSReleaseDiskPage2004573P     X R712713 (459)BfsDDMgr.BR713BFSCreateDDMgr1730714P     X RBFSDestroyDDMgr2000772P     X RBFSCloseDD17731012P     X RBFSLockDD17741031P     X RBFSUnlockDD17751055P     X RBFSReadDDPage17761104P     X RIfsScavenger.bs10-Aug-84  2:04:36Page  12��ÓTÔc8Ó ÊÓ&˚Ó*\ÓTÔa˚
Ó~Ó ÊÓ$ÙÓ ÊÔ`æÓ+∂	Ó	ÏÔ_Å!ÓÛÔ^D
Ó(U�ÓTÔ]Ó~Ó 9Ó$ÙÓTÔ[ Ó~Ó 9Ó$ÙÓTÔZçÓ~Ó 9Ó$ÙÓ!ìÔYPÓ,cÓÛÔXÓ&˚ÓTÔV÷Ó~Ó!ìÓ$ÙÓTÔUôÓ~Ó!ìÓ$ÙÓTÔT\	Ó~Ó!ìÓ$ÙÓTÔSÓ~Ó!ìÓ$ÙÓTÔQ‚Ó ÊÓ&NÓ*\Ó ÊÔP•Ó,cÓÛÔOhÓ&NÓTÔN+Ó~Ó ÊÓ$ÙÓTÔLÓÓ~Ó ÊÓ$ÙÓ ÊÔK±Ó,cÓ	ÏÔJt!ÓÛÔI7
Ó"Ì�ÓTÔG˙Ó~Ó"Ì�Ó$ÙÓTÔFΩÓ~Ó!ìÓ$ÙÓTÔEÄÓ~Ó!ìÓ$ÙÓTÔDCÓ ÊÓ&˚Ó*\ÓTÔCÓ ÊÓ&˚Ó*\Ó ÊÔA…Ó+∂	Ó	ÏÔ@å"ÓÛÔ?OÓ"Ì�ÓTÔ>Ó~Ó"Ì�Ó$ÙÓTÔ<’
Ó~Ó!ìÓ$ÙÓTÔ;òÓ ÊÓ&˚Ó*\Ó!ìÔ:[Ó,cÓÛÔ9Ó&˚ÓTÔ7·
Ó~Ó!ìÓ$ÙÓTÔ6§Ó~Ó ÊÓ$ÙÓTÔ5g
Ó~Ó ÊÓ$ÙÓTÔ4*Ó~Ó ÊÓ$ÙÓTÔ2ÌÓ~Ó ÊÓ$ÙÓTÔ1∞	Ó~Ó ÊÓ$ÙÓTÔ0sÓ~Ó ÊÓ$ÙÓ ÊÔ/6Ó,cÓ	ÏÔ-˘ÓÛÔ,º	Ó"Ì�ÓTÔ+Ó~Ó"Ì�Ó$ÙÓTÔ*B	Ó~Ó!ìÓ$ÙÓTÔ)Ó~Ó!ìÓ$ÙÓTÔ'»Ó~Ó ÊÓ$ÙÓTÔ&ãÓ ÊÓ&NÓ*\ÓTÔ%N	Ó~Ó ÊÓ$ÙÓ ÊÔ$Ó+∂	ÓÛÔ"‘
Ó ÊÓTÔ!óÓ~Ó ÊÓ$ÙÓTÔ ZÓ ÊÓ&NÓ*\Ó ÊÔÓ,cÓ	ÏÔ‡!ÓÛÔ£
Ó"Ì�ÓTÔfÓ~Ó"Ì�Ó$ÙÓTÔ)Ó~Ó!ìÓ$ÙÓTÔÏÓ~Ó!ìÓ$ÙÓTÔØÓ ÊÓ&˚Ó*\Ó ÊÔrÓ+∂	Ó	ÏÔ5"ÓÛÔ¯Ó"Ì�ÓTÔªÓ~Ó"Ì�Ó$ÙÓTÔ~
Ó~Ó!ìÓ$ÙÓTÔAÓ ÊÓ&˚Ó*\Ó!ìÔÓ,cÓÛÔ
«
Ó!ìÓTÔä
Ó~Ó!ìÓ$ÙÓTÔMÓ~Ó!ìÓ$ÙÓTÔ
	Ó~Ó ÊÓ$ÙÓTÔ”Ó~Ó ÊÓ$ÙÓTÔñ
Ó~Ó ÊÓ$ÙÓTÔYÓ~Ó ÊÓ$ÙÔh.Ó	ÏÓ"∫ÓEt��������t����	Ï
X(å_0l��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BFSFlushDD17771152P     X RBFSTransferDDPage25731200P       R1301367 (247)BfsInit.BB (IN IfsScavenger.RUN)BfsInit.BR0BFSInit174047151P     X RBFSTryDisk202150342P     X RSetPartition202250473P       R13501351 (745)BfsClose.BR1351BFSClose20051352P     X RBFSWriteDiskDescriptor17311416P     X R1477127 (87)CmdScan.BB (IN IfsScavenger.RUN)IfsCmdScan.BR0InitCmd10551P     X RCSCloses2040211P     X RCSGets2035233P     X RCSEndofs2037304P     X RCSPuts2036326P     X RCSResets2041351P     X RNextPhrase2574375P     X RDefaultPhrase2277473P     X RBeginDefaultPhrase2145524P     X REndDefaultPhrase2146535P     X REnableCatch2141605P     X RXCatchPC2575633P       RDisableCatch2576676P     X REndCatch2143714P     X RErasePhrase2577770P     X RBackupPhrase23031065P     X RDoBackup26001142P       RCurrentPhrase26011233P     X RTerminatingChar21441250P     X RCmdErrorCode26021272P     X R13071310 (712)CmdScanEdit.BB (IN IfsScavenger.RUN)CmdScanEdit.BR0GetPhrase26051P     X REditPhrase2606141P       RAppendChar2603505P     X RBackupChars2607561P       REraseInput2604702P     X REraseBackTo2610746P       RFindPhrase26111003P       RRetypeCmd26121032P       R11071110 (584)IfsScavCSDsp.BR1110DefErase20441111P     X RDefBreak20421353P     X RDefEcho20431407P     X RDefError20451436P     X RCmdError23021573P     X RInvertWindow21501635P     X R1676567 (375)CmdScanAux.BB (IN IfsScavenger.RUN)CmdScanAux.BR0GetNumber10711P     X RNumberHelp2613251P       RGetString2300355P     X RGetFile2207464P     X RConfirm1070616P     X RGetKeyword1057775P     X RKeywordHelp26141231P       RPrintKeyword26151274P       R13741375 (765)Keywords.BB (IN IfsScavenger.RUN)KeywordInit.BR0CreateKeywordTable10501P     X RKTInsert2046110P     X RKTDelete2047274P     X R401402 (258)Keyword.BR402KTLookup2050403P     X RKTEnumerate2051532P     X RKTDestroy2052603P     X RIfsScavenger.bs10-Aug-84  2:04:36Page  13��ÓTÔc8	Ó~Ó ÊÓ$ÙÓTÔa˚Ó ÊÓ&NÓ*\Ó ÊÔ`æÓ,cÓ	ÏÔ_ÅÓÛÔ^D	Ó"Ì�ÓTÔ]Ó~Ó 9Ó$ÙÓTÔ[ 	Ó~Ó 9Ó$ÙÓTÔZçÓ~Ó 9Ó$ÙÓ ÊÔYPÓ+∂	ÓÛÔX
Ó ÊÓTÔV÷Ó~Ó ÊÓ$ÙÓTÔUôÓ ÊÓ&NÓ*\Ó ÊÔT\Ó,cÓ	ÏÔSÓÛÔQ‚Ó(U�ÓTÔP•Ó~Ó"Ì�Ó$ÙÓTÔOhÓ~Ó!ìÓ$ÙÓTÔN+Ó~Ó!ìÓ$ÙÓTÔLÓÓ~Ó!ìÓ$ÙÓTÔK±Ó~Ó!ìÓ$ÙÓTÔJtÓ~Ó!ìÓ$ÙÓTÔI7	Ó~Ó!ìÓ$ÙÓTÔG˙Ó~Ó!ìÓ$ÙÓTÔFΩÓ ÊÓ&˚Ó*\ÓTÔEÄÓ ÊÓ&˚Ó*\ÓTÔDC
Ó~Ó!ìÓ$ÙÓTÔCÓ~Ó!ìÓ$ÙÓTÔA…Ó~Ó!ìÓ$ÙÓTÔ@åÓ~Ó!ìÓ$ÙÓTÔ?O
Ó~Ó!ìÓ$ÙÓTÔ>Ó~Ó ÊÓ$ÙÓTÔ<’Ó~Ó ÊÓ$ÙÓTÔ;òÓ~Ó ÊÓ$ÙÓTÔ:[Ó~Ó ÊÓ$ÙÓTÔ9Ó~Ó ÊÓ$ÙÓ ÊÔ7·Ó+∂	Ó	ÏÔ6§$ÓÛÔ5g
Ó(U�ÓTÔ4*Ó~Ó"Ì�Ó$ÙÓTÔ2Ì	Ó~Ó!ìÓ$ÙÓTÔ1∞	Ó~Ó!ìÓ$ÙÓTÔ0s
Ó~Ó!ìÓ$ÙÓTÔ/6	Ó~Ó!ìÓ$ÙÓTÔ-˘
Ó~Ó!ìÓ$ÙÓTÔ,º	Ó~Ó ÊÓ$ÙÓTÔ+Ó~Ó ÊÓ$ÙÓ ÊÔ*BÓ+∂	ÓÛÔ)Ó&NÓTÔ'»Ó~Ó ÊÓ$ÙÓTÔ&ãÓ~Ó ÊÓ$ÙÓTÔ%NÓ~Ó ÊÓ$ÙÓTÔ$Ó~Ó ÊÓ$ÙÓTÔ"‘Ó~Ó ÊÓ$ÙÓTÔ!óÓ~Ó ÊÓ$ÙÓ ÊÔ ZÓ,cÓ	ÏÔ#ÓÛÔ‡Ó(U�ÓTÔ£Ó~Ó"Ì�Ó$ÙÓTÔf	Ó~Ó!ìÓ$ÙÓTÔ)Ó~Ó!ìÓ$ÙÓTÔÏÓ~Ó!ìÓ$ÙÓTÔØÓ~Ó!ìÓ$ÙÓTÔr	Ó~Ó!ìÓ$ÙÓTÔ5
Ó~Ó ÊÓ$ÙÓTÔ¯Ó~Ó ÊÓ$ÙÓ ÊÔªÓ+∂	Ó	ÏÔ~!ÓÛÔA
Ó(U�ÓTÔÓ ÊÓ(U�Ó*\ÓTÔ
«Ó~Ó!ìÓ$ÙÓTÔäÓ~Ó!ìÓ$ÙÓ!ìÔMÓ,cÓÛÔ
	Ó!ìÓTÔ”Ó~Ó!ìÓ$ÙÓTÔñ
Ó~Ó!ìÓ$ÙÓTÔYÓ~Ó!ìÓ$ÙÔh.Ó	ÏÓ"∫ÓEt��������d����	Ï
X(å_0â��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GetKTE2621652P     X RCompareKey2053671P     X RBinarySearch2620713P     X R773372 (250)Strings.BB (IN IfsScavenger.RUN)StringStreams.BR0CreateStringStream22411P     X RStringGetOv2054106P     X RStringPutOv2055126P     X RStringCloses2056145P     X R207210 (136)StringUtil.BR210ExtractSubstring1750211P     X RConcatenateStrings2622277P     X RCopyString2136435P     X RStringCompare2264455P     X R634425 (277)OsUtils.BB (IN IfsScavenger.RUN)OsUtils.BR0Wss10561P     X RWs104534P     X RWl262445P     X RWns230161P     X RWos2625246P     X RWo2626265P     X RGetFixedInit2627276P     X RGetFixed2413306P     X RFreeFixed2414353P     X RFixedLeft2412432P     X RSetEndCode2630456P     X R465466 (310)Template.BR466PutTemplate173450522P     X RInterpretTemplate202350571P       RPutNum202451205P     X R1400713 (459)Password.BB (IN IfsScavenger.RUN)Password.BR0Password23501P     X R512513 (331)Time.BB (IN IfsScavenger.RUN)IfsTimeIO.BR0WRITEUDT10461P     X RWritePackedDT2632433P     X RMONTHNAME2633453P     X RFINDMONTH2634465P     X R553554 (364)TimeConvb.BR554UNPACKDT2212555P     X RPACKDT26351126P     X RWEEKDAY26361554P     X RCheckDateGE26371600P       RSetupULT26401675P       R20761323 (723)SYS.BKJunta174115P     XOsFinish1150100021P     XCallSwat1075100032P     XUpdateTimer1347100042P     XCOMMON 5076STATICS10002641Undefined namesfirst referenced in IfsOvXMInit.BR:primaryIFS20670UNDEF Xfirst referenced in IfsDirParse.BR:MakeKPMTemplate24240UNDEF Xfirst referenced in IfsVMemFileSwap.BR:LookupIFSFile25500UNDEF Xfirst referenced in IfsDDMgrSwap.BR:ifsDDMgr25600UNDEF Xfirst referenced in IfsDDMgrSwap.BR:driveTab25610UNDEF Xfirst referenced in TfsInit.BR:IfsScavenger.bs10-Aug-84  2:04:36Page  14���ÓTÔc8Ó~Ó!ìÓ$ÙÓTÔa˚	Ó~Ó!ìÓ$ÙÓTÔ`æÓ~Ó!ìÓ$ÙÓ!ìÔ_ÅÓ,cÓ	ÏÔ^DÓÛÔ]Ó(U�ÓTÔ[ Ó ÊÓ(U�Ó*\ÓTÔZç
Ó~Ó!ìÓ$ÙÓTÔYP
Ó~Ó!ìÓ$ÙÓTÔXÓ~Ó!ìÓ$ÙÓ!ìÔV÷Ó,cÓÛÔUôÓ&˚ÓTÔT\Ó ÊÓ&˚Ó*\ÓTÔSÓ ÊÓ&˚Ó*\ÓTÔQ‚	Ó~Ó!ìÓ$ÙÓTÔP•Ó~Ó!ìÓ$ÙÓ!ìÔOhÓ,cÓ	ÏÔN+ÓÛÔLÓ	Ó"Ì�ÓTÔK±Ó~Ó"Ì�Ó$ÙÓTÔJtÓ~Ó"@Ó$ÙÓTÔI7Ó~Ó"@Ó$ÙÓTÔG˙Ó~Ó"@Ó$ÙÓTÔFΩÓ~Ó!ìÓ$ÙÓTÔEÄÓ~Ó!ìÓ$ÙÓTÔDCÓ~Ó!ìÓ$ÙÓTÔCÓ~Ó!ìÓ$ÙÓTÔA…Ó~Ó!ìÓ$ÙÓTÔ@åÓ~Ó!ìÓ$ÙÓTÔ?O	Ó~Ó!ìÓ$ÙÓ!ìÔ>Ó,cÓÛÔ<’
Ó!ìÓTÔ;ò
Ó~Ó 9Ó$ÙÓTÔ:[Ó ÊÓ%°Ó*\ÓTÔ9Ó~Ó 9Ó$ÙÓ ÊÔ7·Ó,cÓ	ÏÔ6§!ÓÛÔ5g
Ó"Ì�ÓTÔ4*Ó~Ó"Ì�Ó$ÙÓ!ìÔ2ÌÓ,cÓ	ÏÔ1∞ÓÛÔ0sÓ"Ì�ÓTÔ/6Ó~Ó"Ì�Ó$ÙÓTÔ-˘Ó~Ó!ìÓ$ÙÓTÔ,ºÓ~Ó!ìÓ$ÙÓTÔ+Ó~Ó!ìÓ$ÙÓ!ìÔ*BÓ,cÓÛÔ)Ó!ìÓTÔ'»Ó~Ó!ìÓ$ÙÓTÔ&ãÓ~Ó ÊÓ$ÙÓTÔ%NÓ~Ó ÊÓ$ÙÓTÔ$
Ó~Ó ÊÓ$ÙÓTÔ"‘Ó~Ó ÊÓ$ÙÓ ÊÔ!óÓ+∂	ÓÛÔ ZÓTÔÓ~Ó"@Ó$ÙÓTÔ‡Ó~ÓåÓ$ÙÓTÔ£Ó~ÓåÓ$ÙÓTÔf
Ó~ÓåÓ$ÙÓ	ÏÔÏÓÓpÓ	ÏÔØÓÆÓÓ	ÏÔ¯Ó†Ôª#ÓTÔ~	Ó~Ó"Ì�Ó$ÙÓ†ÔA#ÓTÔÓ~Ó"Ì�Ó$ÙÓ†Ô
«'ÓTÔäÓ~Ó"Ì�Ó$ÙÓ†ÔM$ÓTÔ
Ó~Ó"Ì�Ó$ÙÓ†Ô”$ÓTÔñÓ~Ó"Ì�Ó$ÙÓ†ÔYÔh.Ó	ÏÓ"∫ÓEt��������≤����	Ï
X(å_0D����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������TFSCreateDDMgr25700UNDEF XIfsScavenger.bs10-Aug-84  2:04:36Page  15���ÓTÔc8
Ó~Ó"Ì�Ó$ÙÔh.Ó	ÏÓ"∫ÓEt���������D����	Ïg7√Q�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Ifs.BRIfsScavenger.BRscratchDisk10110V     XscavDisk10120V     XnumFiles10130V     XnumPages10140V     Xlpt10150V     Xpass10160V     Xphase10170V     XeditHomeFlag10200V     XinitTreeFlag10210V     XinitLptFlag1022177777V     XdebugFlag10230V     XjustFixDirFlag10240V     XkbdKT10250V      kbdCS10260V      IfsScavCompare.BRIfsResUtilA.BRIfsBcplRuntime.BRifsRuntime11540V     XPupAl1A.BRHLookup11660V     XHInsert11670V     XHDelete11700V     XHEnumerate11710V     XContext.BRCtxCaller11740V     XCtxSwitch11760V     XContextSched.BRschedSavedUFP12020V     XschedMask12030V     XIfsCallProc.BRIfsDDMgrRes.BRAltoQueue.BRAltoTimer.BRAltoByteBlt.BRTimeConvA.BRIfsFastStreamsA.BRBfsMl.BRlvIdle12640V     XIfsBcplTricks.BRIfsCalls.BRCalendar.BRVMemA.BRTfsA.BRDspStreamsB.BRDspStreamsA.BRGacha10.BRKeyStreamsB.BRkeys14320V     XKeyStreamsA.BRkbUserProcStack14410V     XkbInterruptReMask14440V     XkbUserProc14450V     XCursorLink1446177777V     XIfsResUtilB.BRsnarfTable14500V     XchunkQ14510V     XoPageQ14520V     XbigZone14530V     XsmallZone14540V     XsmallZoneOverflows14550V     XbigZoneOverflows14560V     XnumOverflowPages14570V     XmaxOverflowPages14600V     XnetAllocBlocks14610V     XdontSnarf1462177777V     XIfsVMemRes.BRvmdt14760V     XvmStats14770V     XvmemBufferShortages15000V     XIfsVMemFileRes.BRIfsOverlays.BRoVmd15200V     XovPageSize15210V     XlogOvPageSize15220V     XIfsScavenger.bs10-Aug-84  2:04:36Page  16���Ó	ÏÔc8Ó	ÏÔa˚ÓTÔ`æ
Ó~Ó"Ì�Ó$ÙÓTÔ_ÅÓ~Ó"Ì�Ó$ÙÓTÔ^DÓ~Ó"Ì�Ó$ÙÓTÔ]Ó~Ó"Ì�Ó$ÙÓTÔ[ Ó~Ó"Ì�Ó$ÙÓTÔZçÓ~Ó"Ì�Ó$ÙÓTÔYPÓ~Ó"Ì�Ó$ÙÓTÔXÓ~Ó"Ì�Ó$ÙÓTÔV÷Ó~Ó"Ì�Ó$ÙÓTÔUô
Ó~ÓåÓ$ÙÓTÔT\Ó~Ó"Ì�Ó$ÙÓTÔS
Ó~Ó"Ì�Ó$ÙÓTÔQ‚Ó~Ó"Ì�Ó$ÙÓTÔP•Ó~Ó"Ì�Ó$ÙÓ	ÏÔOhÓ	ÏÔN+
Ó	ÏÔLÓÓTÔK±	Ó~Ó"Ì�Ó$ÙÓ	ÏÔJt	ÓTÔI7Ó~Ó"Ì�Ó$ÙÓTÔG˙Ó~Ó"Ì�Ó$ÙÓTÔFΩÓ~Ó"Ì�Ó$ÙÓTÔEÄ	Ó~Ó"Ì�Ó$ÙÓ	ÏÔDC	ÓTÔCÓ~Ó"Ì�Ó$ÙÓTÔA…Ó~Ó"Ì�Ó$ÙÓ	ÏÔ@åÓTÔ?OÓ~Ó"Ì�Ó$ÙÓTÔ>Ó~Ó"Ì�Ó$ÙÓ	ÏÔ<’
Ó	ÏÔ;ò
Ó	ÏÔ:[Ó	ÏÔ9Ó	ÏÔ7·
Ó	ÏÔ6§Ó	ÏÔ5gÓ	ÏÔ4*ÓTÔ2ÌÓ~Ó"Ì�Ó$ÙÓ	ÏÔ1∞Ó	ÏÔ0s
Ó	ÏÔ/6
Ó	ÏÔ-˘Ó	ÏÔ,ºÓ	ÏÔ+
Ó	ÏÔ*B
Ó	ÏÔ)	Ó	ÏÔ'»
ÓTÔ&ãÓ~Ó"Ì�Ó$ÙÓ	ÏÔ%N
ÓTÔ$Ó~Ó"Ì�Ó$ÙÓTÔ"‘Ó ÊÓ(U�Ó*\ÓTÔ!ó	Ó~Ó"Ì�Ó$ÙÓTÔ Z	Ó~ÓåÓ$ÙÓ	ÏÔ
ÓTÔ‡	Ó~Ó"Ì�Ó$ÙÓTÔ£Ó~Ó"Ì�Ó$ÙÓTÔfÓ~Ó"Ì�Ó$ÙÓTÔ)Ó~Ó"Ì�Ó$ÙÓTÔÏÓ~Ó"Ì�Ó$ÙÓTÔØÓ ÊÓ(U�Ó*\ÓTÔrÓ ÊÓ(U�Ó*\ÓTÔ5Ó ÊÓ(U�Ó*\ÓTÔ¯Ó ÊÓ(U�Ó*\ÓTÔª
Ó~Ó"Ì�Ó$ÙÓTÔ~Ó~ÓåÓ$ÙÓ	ÏÔAÓTÔÓ~Ó"Ì�Ó$ÙÓTÔ
«Ó~Ó"Ì�Ó$ÙÓTÔäÓ ÊÓ(U�Ó*\Ó	ÏÔMÓ	ÏÔ

ÓTÔ”Ó~Ó"Ì�Ó$ÙÓTÔñ	Ó~Ó"Ì�Ó$ÙÓTÔYÓ~Ó"Ì�Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������ú����	Ï
X%+_02������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������logOvVmPages15230V     XovFirstPage15240V     XnumOvXMPages15250V     XnumOvXMPagesPerBank15260V     XoffsetResidentXM15270V     XOverlayEntry610V     XOverlaySave620V     XFirstOD15300V     XEndOD15310V     XFirstOEP15320V     XEndOEP15330V     XOverlayFp15340V     XOverlayDisk15350V     XIfsBTreeRes.BRAlloc.BRAllocate11010V     XFree11230V     XFastStreamsB.BRIfsDVec.BRIfsIsf.BRVMem.BRSOFTMAPFLAG13560V     XHASHMAP640V     XHASHMAPSIZE650V     XHASHMAPSIZE2660V     XHASHMAPMASK670V     XHASHMAP1700V     XHASHMAPTOP710V     XMAPSTATBASE16050V     XMapStatPtr720V     XEMPTYXX16060V     XNAXX16070V     XMapStatProc16100V     XBpt730V     XBptLast740V     XNoBufsProc16110V     XLockedCells16120V     XLastLockedCell16130V     XEndLockedCells16140V     XCheckBPTflag16150V     XReprobeInc7532V     XAnyDirty16160V      LastTrapTime16170V      TSA16200V      TSA116210V      AgingInterval16220V      RefLockedCells1623177777V      LockOnly16240V     XLockZero16250V     XVMemAux.BRBfsBase.BRTfsBase.BRTFSLeaveDisplay16710V     XTFSSavedDisplay1672177777V     XTFSLock16730V     XTFSDebug16740V     XIfsScavInit.BRifsCtxQ10100V     XnumVMemBufs10620V     XbfsDDMgr17100V     XtfsDDMgr17110V     XsavedUFP17120V      spyBuffer17133200V      isb17140V     XIfsScavOvInit.BRIfsContextInit.BRIfsOverlaysInit.BRIfsVmemInit.BRIfsVMemSwap.BRContextSchInit.BRVMemInit.BRBfsInit.BRTemplate.BRIfsBTreeOEP.BRDiskStreamsOEP.BRCmdScanOEP.BRIfsScavenger.bs10-Aug-84  2:04:36Page  17��ÓTÔc8Ó~Ó"Ì�Ó$ÙÓTÔa˚
Ó~Ó"Ì�Ó$ÙÓTÔ`æÓ~Ó"Ì�Ó$ÙÓTÔ_ÅÓ ÊÓ(U�Ó*\ÓTÔ^DÓ ÊÓ(U�Ó*\ÓTÔ]ÓÿÓ"Ì�Ó$ÙÓTÔ[ 
ÓÿÓ"Ì�Ó$ÙÓTÔZçÓ~Ó"Ì�Ó$ÙÓTÔYPÓ~Ó"Ì�Ó$ÙÓTÔXÓ~Ó"Ì�Ó$ÙÓTÔV÷Ó~Ó"Ì�Ó$ÙÓTÔUôÓ~Ó"Ì�Ó$ÙÓTÔT\
Ó~Ó"Ì�Ó$ÙÓ	ÏÔS
Ó	ÏÔQ‚ÓTÔP•Ó~Ó"Ì�Ó$ÙÓTÔOhÓ~Ó"Ì�Ó$ÙÓ	ÏÔN+Ó	ÏÔLÓ	Ó	ÏÔK±Ó	ÏÔJtÓTÔI7
Ó~Ó"Ì�Ó$ÙÓTÔG˙ÓÿÓ"Ì�Ó$ÙÓTÔFΩ
ÓÿÓ"Ì�Ó$ÙÓTÔEÄÓÿÓ"Ì�Ó$ÙÓTÔDC
ÓÿÓ"Ì�Ó$ÙÓTÔCÓÿÓ"Ì�Ó$ÙÓTÔA…	ÓÿÓ"Ì�Ó$ÙÓTÔ@å
Ó~Ó"Ì�Ó$ÙÓTÔ?O	ÓÿÓ"Ì�Ó$ÙÓTÔ>Ó~Ó"Ì�Ó$ÙÓTÔ<’Ó~Ó"Ì�Ó$ÙÓTÔ;ò
Ó~Ó"Ì�Ó$ÙÓTÔ:[ÓÿÓ"Ì�Ó$ÙÓTÔ9ÓÿÓ"Ì�Ó$ÙÓTÔ7·	Ó~Ó"Ì�Ó$ÙÓTÔ6§
Ó~Ó"Ì�Ó$ÙÓTÔ5g
Ó~Ó"Ì�Ó$ÙÓTÔ4*
Ó~Ó"Ì�Ó$ÙÓTÔ2ÌÓ~Ó"Ì�Ó$ÙÓTÔ1∞	ÓÿÓ"@Ó$ÙÓTÔ0sÓ~Ó"Ì�Ó$ÙÓTÔ/6Ó~Ó"Ì�Ó$ÙÓTÔ-˘Ó~Ó"Ì�Ó$ÙÓTÔ,ºÓ~Ó"Ì�Ó$ÙÓTÔ+Ó~Ó"Ì�Ó$ÙÓTÔ*B
Ó~ÓåÓ$ÙÓTÔ)Ó~Ó"Ì�Ó$ÙÓTÔ'»Ó~Ó"Ì�Ó$ÙÓ	ÏÔ&ã	Ó	ÏÔ%N	Ó	ÏÔ$	ÓTÔ"‘Ó~Ó"Ì�Ó$ÙÓTÔ!óÓ~ÓåÓ$ÙÓTÔ ZÓ~Ó"Ì�Ó$ÙÓTÔÓ~Ó"Ì�Ó$ÙÓ	ÏÔ‡
ÓTÔ£Ó~Ó"Ì�Ó$ÙÓTÔf
Ó~Ó"Ì�Ó$ÙÓTÔ)Ó~Ó"Ì�Ó$ÙÓTÔÏÓ~Ó"Ì�Ó$ÙÓTÔØÓ~Ó"Ì�Ó$ÙÓTÔrÓ~Ó ÊÓ$ÙÓTÔ5Ó~Ó"Ì�Ó$ÙÓ	ÏÔ¯Ó	ÏÔªÓ	ÏÔ~Ó	ÏÔA
Ó	ÏÔ
Ó	ÏÔ
«Ó	ÏÔä
Ó	ÏÔM	Ó	ÏÔ

Ó	ÏÔ”
Ó	ÏÔñÓ	ÏÔYÔh.Ó	ÏÓ"∫ÓEtˇ��������¿����	Ï
X%+_0b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������KeywordOEP.BRStringOEP.BRLoadRam.BRIfsMc.BRIfsScavInit.BRIfsOvXMInit.BRIfsContextInit.BRIfsScavLpt.BRIfsScavKbd.BRIfsScavPrint.BRIfsScavDEdit.BReditDisk21550V      label21560V      data21570V      number21600V      address21610V      numberTyped21620V      pageOpen21630V      cellOpen21640V      pageDirty21650V      IfsScavDump.BRonlyDIFs22000V      printTreeStructure22010V      printFileIDs22020V      IfsScavPass1.BRwordsPerPage11070V     XbytesPerPage11150V     Xplme21540V     Xbpl22130V     XmaxVDA22140V     XifsPackFlag2215177777V     XplmVmd22160V      DiskFindHole.BRIfsScav1-1.BRfreeQ22310V      cmdQ22320V      IfsScav1-2.BRprintLPTE22420V      printPLME22430V      curVDA22440V      IfsScav1-3.BRIfsScav1-4.BRbitTable22530V      sysDirFp22540V      newVDA22550V      data22560V      label22570V      IfsScav1-5.BRsft22660V      home22670V      IfsScavPass2.BRtree23060V     XIfsScav2-1.BRIfsScav2-2.BRbitTable23150V      maxLevel23160V      lastRecord23170V      numRecords23200V      IfsScav2-3.BRtreeDR23270V      lptDR23300V      difDR23310V      dupLpt23320V      giveMeATreeDR23330V      leftoverLPTE23340V      treeChanged23350V      SortPkg.BRSortZone23510V      SortDisk23520V      ReleaseZone23530V      Files23540V      Level23550V      ItemIsLeftOver23560V      LeftoverItem23570V      LeftoverItemLen23600V      MaxHeapSize23610V      IfsScavenger.bs10-Aug-84  2:04:36Page  18���Ó	ÏÔc8Ó	ÏÔa˚Ó	ÏÔ`æ	Ó	ÏÔ_ÅÓ	ÏÔ^D
Ó	ÏÔ]
Ó	ÏÔ[ Ó	ÏÔZçÓ	ÏÔYPÓ	ÏÔXÓ	ÏÔV÷ÓTÔUôÓ~Ó"Ì�Ó$ÙÓTÔT\Ó~Ó"Ì�Ó$ÙÓTÔSÓ~Ó"Ì�Ó$ÙÓTÔQ‚Ó~Ó"Ì�Ó$ÙÓTÔP•Ó~Ó"Ì�Ó$ÙÓTÔOh
Ó~Ó"Ì�Ó$ÙÓTÔN+Ó~Ó"Ì�Ó$ÙÓTÔLÓÓ~Ó"Ì�Ó$ÙÓTÔK±Ó~Ó"Ì�Ó$ÙÓ	ÏÔJt
ÓTÔI7Ó~Ó"Ì�Ó$ÙÓTÔG˙Ó ÊÓ(U�Ó*\ÓTÔFΩÓ~Ó"Ì�Ó$ÙÓ	ÏÔEÄÓTÔDCÓ~Ó"Ì�Ó$ÙÓTÔCÓ~Ó"Ì�Ó$ÙÓTÔA…Ó~Ó"Ì�Ó$ÙÓTÔ@åÓ~Ó"Ì�Ó$ÙÓTÔ?OÓ~Ó"Ì�Ó$ÙÓTÔ>
Ó~ÓåÓ$ÙÓTÔ<’Ó~Ó"Ì�Ó$ÙÓ	ÏÔ;òÓ	ÏÔ:[ÓTÔ9Ó~Ó"Ì�Ó$ÙÓTÔ7·Ó~Ó"Ì�Ó$ÙÓ	ÏÔ6§ÓTÔ5gÓ~Ó"Ì�Ó$ÙÓTÔ4*Ó~Ó"Ì�Ó$ÙÓTÔ2ÌÓ~Ó"Ì�Ó$ÙÓ	ÏÔ1∞Ó	ÏÔ0sÓTÔ/6Ó~Ó"Ì�Ó$ÙÓTÔ-˘Ó~Ó"Ì�Ó$ÙÓTÔ,ºÓ~Ó"Ì�Ó$ÙÓTÔ+Ó~Ó"Ì�Ó$ÙÓTÔ*BÓ~Ó"Ì�Ó$ÙÓ	ÏÔ)ÓTÔ'»Ó~Ó"Ì�Ó$ÙÓTÔ&ãÓ~Ó"Ì�Ó$ÙÓ	ÏÔ%NÓTÔ$Ó~Ó"Ì�Ó$ÙÓ	ÏÔ"‘Ó	ÏÔ!óÓTÔ ZÓ~Ó"Ì�Ó$ÙÓTÔÓ~Ó"Ì�Ó$ÙÓTÔ‡	Ó~Ó"Ì�Ó$ÙÓTÔ£	Ó~Ó"Ì�Ó$ÙÓ	ÏÔfÓTÔ)Ó~Ó"Ì�Ó$ÙÓTÔÏÓ~Ó"Ì�Ó$ÙÓTÔØÓ~Ó"Ì�Ó$ÙÓTÔrÓ~Ó"Ì�Ó$ÙÓTÔ5Ó~Ó"Ì�Ó$ÙÓTÔ¯Ó~Ó"Ì�Ó$ÙÓTÔª
Ó~Ó"Ì�Ó$ÙÓ	ÏÔ~	ÓTÔAÓ~Ó"Ì�Ó$ÙÓTÔÓ~Ó"Ì�Ó$ÙÓTÔ
«
Ó~Ó"Ì�Ó$ÙÓTÔäÓ~Ó"Ì�Ó$ÙÓTÔMÓ~Ó"Ì�Ó$ÙÓTÔ

Ó~Ó"Ì�Ó$ÙÓTÔ”Ó~Ó"Ì�Ó$ÙÓTÔñÓ~Ó"Ì�Ó$ÙÓTÔY
Ó~Ó"Ì�Ó$ÙÔh.Ó	ÏÓ"∫ÓEtˇ��������|����	Ï
X%+_0V��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������RecordSize23620V      BufferSize23630V      InputFinished23640V      Heap23650V      HeapSize23660V      FirstFreeEnt23670V      MaxItemWords23700V      OccItemWords23710V      DeleteScratch23720V     XIfsDirParse.BRDirScanA.BRDirs.BRdirVersions24260V     XDiskStreamsScan.BRDiskStreams.BRDiskStreamsMain.BRDiskStreamsAux.BRIfsBTreeSwap.BRlenFMap1733144V     XLockBTreePtr23230V     XUnlockBTreePtr23240V     XFreeBTreePage23250V     XReadBTreePage23260V     XbtQ24630V      WriteBTreePage24640V     XAllocateBTreePage24650V     XBTreeBug24660V     XCloseBTree24670V     XBTreeRead.BRBTreeWrtMs0.BRBTreeWrtMs1.BRBTreeWrtMs2.BRBTreeDel.BRIfsVMemSwap.BRIfsVMemFileSwap.BRvFileVMI20700V     XIfsIsfInit.BRTfsWrite.BRTfsCreate.BRIfsDDMgrSwap.BRddVMI25560V     XTfsInit.BRTfsClose.BRBfsWrite.BRBfsCreate.BRBfsDDMgr.BRBfsInit.BRBfsClose.BRIfsCmdScan.BRCmdScanEdit.BRIfsScavCSDsp.BRCmdScanAux.BRKeywordInit.BRInsertKeyword10510V     XDestroyKeywordTable21420V     XEnumerateKeywordTable22760V     XLookupKeyword26160V     XDeleteKeyword26170V     XKeyword.BRStringStreams.BRStringUtil.BROsUtils.BRfreeFixedList26230V      Template.BRPassword.BRIfsTimeIO.BRmonthNames17470V     XTimeConvb.BRSYS.BKdsp10472V     XsysDisk1074143V     XsysZone1102221V     XlvUserFinishProc1151100027V     XOsBuffer1442100015V     XOsVersion1720100023V     XlvSwatContextProc1721100034V     XIfsScavenger.bs10-Aug-84  2:04:36Page  19���ÓTÔc8	Ó~Ó"Ì�Ó$ÙÓTÔa˚	Ó~Ó"Ì�Ó$ÙÓTÔ`æÓ~Ó"Ì�Ó$ÙÓTÔ_ÅÓ~Ó"Ì�Ó$ÙÓTÔ^DÓ~Ó"Ì�Ó$ÙÓTÔ]Ó~Ó"Ì�Ó$ÙÓTÔ[ Ó~Ó"Ì�Ó$ÙÓTÔZçÓ~Ó"Ì�Ó$ÙÓTÔYPÓ~Ó"Ì�Ó$ÙÓ	ÏÔX
Ó	ÏÔV÷
Ó	ÏÔUôÓTÔT\
Ó~Ó"Ì�Ó$ÙÓ	ÏÔSÓ	ÏÔQ‚
Ó	ÏÔP•Ó	ÏÔOhÓ	ÏÔN+ÓTÔLÓÓ~Ó!ìÓ$ÙÓTÔK±Ó~Ó"Ì�Ó$ÙÓTÔJt
Ó~Ó"Ì�Ó$ÙÓTÔI7Ó~Ó"Ì�Ó$ÙÓTÔG˙Ó~Ó"Ì�Ó$ÙÓTÔFΩÓ~Ó"Ì�Ó$ÙÓTÔEÄ
Ó~Ó"Ì�Ó$ÙÓTÔDCÓ ÊÓ(U�Ó*\ÓTÔCÓ~Ó"Ì�Ó$ÙÓTÔA…	Ó~Ó"Ì�Ó$ÙÓ	ÏÔ@åÓ	ÏÔ?O
Ó	ÏÔ>
Ó	ÏÔ<’
Ó	ÏÔ;ò
Ó	ÏÔ:[
Ó	ÏÔ9ÓTÔ7·Ó~Ó"Ì�Ó$ÙÓ	ÏÔ6§Ó	ÏÔ5g
Ó	ÏÔ4*Ó	ÏÔ2ÌÓTÔ1∞Ó~Ó"Ì�Ó$ÙÓ	ÏÔ0s	Ó	ÏÔ/6
Ó	ÏÔ-˘
Ó	ÏÔ,ºÓ	ÏÔ+
Ó	ÏÔ*B	Ó	ÏÔ)
Ó	ÏÔ'»Ó	ÏÔ&ã
Ó	ÏÔ%NÓ	ÏÔ$Ó	ÏÔ"‘
ÓTÔ!óÓ~Ó"Ì�Ó$ÙÓTÔ ZÓ ÊÓ(U�Ó*\ÓTÔÓ ÊÓ(U�Ó*\ÓTÔ‡Ó~Ó"Ì�Ó$ÙÓTÔ£Ó~Ó"Ì�Ó$ÙÓ	ÏÔf	Ó	ÏÔ)Ó	ÏÔÏÓ	ÏÔØ	ÓTÔrÓ~Ó"Ì�Ó$ÙÓ	ÏÔ5
Ó	ÏÔ¯
Ó	ÏÔªÓTÔ~	Ó~Ó"Ì�Ó$ÙÓ	ÏÔAÓ	ÏÔÓTÔ
«Ó~Ó"Ì�Ó$ÙÓTÔäÓ~Ó!ìÓ$ÙÓTÔMÓ~Ó!ìÓ$ÙÓTÔ
Ó ÊÓ$ÙÓ*\ÓTÔ”Ó~ÓåÓ$ÙÓTÔñÓ~ÓåÓ$ÙÓTÔYÓ ÊÓ$ÙÓ*\Ôh.Ó	ÏÓ"∫ÓEtˇ��������~����	Ï
X%+_0ˆ����������������������������������������������������������������������������������������������������������������������������������������������������AltoVersion1722100046V     XlvSysZone1725222V     XUserName2631100017V     XIfsScavenger.bs10-Aug-84  2:04:36Page  20���ÓTÔc8
Ó~ÓåÓ$ÙÓTÔa˚Ó~Ó!ìÓ$ÙÓTÔ`æÓ~ÓåÓ$ÙÔh.Ó	ÏÓ"∫ÓEt���������v����	ÏdΩ√À�0������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GACHA]H˝�]G	*<----���������������������������������������������g��������������������ÄÃ����������€����ggA��������goÙ¬��ˇ⁄„gÅgÇ���æ¥g^›¸�goæ¥Ω≥��ge›¸���æ¥Ω≥����ˇˇg|ıp��&gÉ��¿'›–�∂Ÿgáıp���gé��¿'g|gêıp�≤Dgò�������gogá¿'gã�∂¿\���gx���gî��∂��¿'�gòg¢ ÒıB�	ΩÄ����∂�œ§�������������ΩÄh@® ‚�∂"gµgπå"h:��ΩÄkl���∂ˆΩΩ≥����WflŒEMPRESS.RUN9,∂Ÿ9,Í~��Ω≥æ¥��ıÚ��ˆ|ˇˇÍ~ˆg€˘xh!ŸÒfi‡�;ç��@˘x9,∂Ÿ�Í~fifi���gæ¥ì?ˇ˛�ıÚ9,g˜›¸��æ¥h�·È��ˇˇh�›¸���æ¥Ω≥���ˇˇ��h·È���æ¥ˇˇ����æ¥ˇˇ������Ù�����˛�����…�����≠�����T���#��L���*��'���0��ù���7��œ���>��b���E��c���L��Ÿ���S��ƒ���Z��b���`��¿���a��ˇ���g��Ω���m��Î���s��J���x��î��y���Z"=iû�#�B
:Z"
ic�*é�J":
‰J4ºø†"É�=ÂJ+"=Pû�#�B"É�B"
Ç"Ç@ÖpÇ
%9H�E%
=;Ê�Eÿ≠�-æÖÑ%˛É�E¸=˚]˚:Zæ÷’"=$û�#�i"�Eb"=`Â�E_%]ÇK˝�]Y:Z:Z=U]U"=û�#�9QÁ�	
0123456789�Í�⁄Ÿ€ia�Ç
˝PZ�9ˇZ"˝PÂ�B=3Z"=Îû�#�iÈ�*ç�M)"*iY�Ç
Ï"˝PÂ=Z"=÷û�#�i‘�*é�M"É�B":Â�-òç�MU"˝PÂ�ER"É�j/�|��z�ˇˇùC=@����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������IfsScavenger.bs˝ß���U��	
H����������������������Boggs��������������������������10-Aug-84  2:04:36���������������������������������������������������������������������������������������������������������������������������������������������������������ÓÛÔ7·FÓÛÔ6§5ÓÛÔ5g.ÓÛÔ4*!ÓÛÔ2Ì*ÓÛÔ1∞#ÓÛÔ0sÓÛÔ/6�Ôh.Ó	ÏÓ"∫ÓEtˇ������������	Ï354∂6S�™��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Pass2Phase2 (cont'd)if treeOK then[if numRecords ne tree>>TREE.RecordCount thenWs("*N[2-2] Record counts disagree")tree>>TREE.RecordCount = numRecordstree>>TREE.StateDirty = true// reconstruct the free listlet numFreePages = 0tree>>TREE.FirstFreePage = 0tree>>TREE.StateDirty = truefor i = 1 to tree>>TREE.GreatestPage doif (bitTable!(i/16) & (1 lshift (i rem 16))) eq 0 then[numFreePages = numFreePages +1FreeBTreePage(tree, i)]PutTemplate(dsp, "*N[2-2] $UD levels, $UD pages allocated, $UD used, $UD free.",maxLevel, tree>>TREE.GreatestPage, numPages, numFreePages)]if bitTable ne 0 then Free(sysZone, bitTable)if tree ne 0 then CloseIFSTree(tree)unless treeOK doif (initTreeFlag? true, ScavConfirm("*N[2-2] May I initialize the tree?")) then[CloseIFSTree(OpenFPTree(fpIfsDir, scavDisk, CallSwat, CallSwat, true))initTreeFlag = truetreeOK = true]FlushBuffers()resultis treeOK]IfsScav2-2.bcpl11-Feb-84 21:56:37Page   3��Ó	ÏÔa˚Ó	ÏÔ_Å
ÓÛÔ^D�ÓÛÔ],Ó
˙Ô[ $ÓÛÔZç#ÓÛÔYPÓÛÔV÷ÓÛÔUôÓÛÔT\ÓÛÔSÓÛÔQ‚'Ó
˙ÔP•6ÓÔOh�ÓÔN+ÓÔLÓÓÔK±�ÓÛÔJtPÓ†ÔI7:ÓÛÔG˙�Ó	ÏÔEÄ-Ó	ÏÔDC$Ó	ÏÔA…ÓÛÔ@åOÓÛÔ?O�ÓÛÔ>FÓÛÔ<’ÓÛÔ;òÓÛÔ:[�Ó	ÏÔ7·
Ó	ÏÔ6§Ó	ÏÔ5g�Ôh.Ó	ÏÓ"∫ÓEt��������ö����	Ï9f80"�â��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//---------------------------------------------------------------------------and FollowPtr(ptr, level) = valof//---------------------------------------------------------------------------// ptr purports to be a pointer to (ie a page number of) a page at 'level'.// The root page is at level 0.  Check and follow ptr if it appears ok.[if ptr eq 0 then  //we touched bottom[if maxLevel eq 0 then maxLevel = level  //first time onlytest level eq maxLevel  //do we always touch bottom at the same level?ifso resultis trueifnot [ Ws("*N[2-2] Tree is not of uniform depth"); resultis false ]]// mark the page as accessible in the bit tableif Usc(ptr, tree>>TREE.GreatestPage) gr 0 then[ Ws("*N[2-2] Pointer gr TREE.GreatestPage"); resultis false ]let bitWord = bitTable!(ptr/16)let pageBit = 1 lshift (ptr rem 16)test (bitWord & pageBit) eq 0ifso bitTable!(ptr/16) = bitWord % pageBitifnot [ Ws("*N[2-2] Two pointers to same B-Tree page"); resultis false ]let page = 0; LockBTreePtr(tree, lv page)let ok = valof  //ptr seems reasonable, follow it.[page = ReadBTreePage(tree, ptr)numPages = numPages +1if page>>BTP.FreeWords ls 0 then[ Ws("*N[2-2] Free page encountered"); resultis false ]let pageLength = 1 lshift tree>>TREE.LogPageLengthif page>>BTP.FreeWords gr 2*pageLength/3 & level ne 0 & debugFlag thenWs("*N[2-2] Page is < 1/3 full")  //non fatal according to EMMif page>>BTP.FreeWords gr pageLength-PageOverhead then[ Ws("*N[2-2] BTP.Freewords > maxFreeWords"); resultis false ]unless FollowPtr(page>>BTP.MinPtr, level+1) resultis falselet recordsOnThisPage = 0let bte = lv page>>BTP.BTEBlocklet end = (page + pageLength) - page>>BTP.FreeWordswhile Usc(bte, end) ls 0 do[numRecords = numRecords +1recordsOnThisPage = recordsOnThisPage +1let record = lv bte>>BTE.Recordif (record>>DR.header & drHeaderMask) ne 0 then[ Ws("*N[2-2] Malformed dr"); resultis false ]if lastRecord ne 0 thenif CompareRecords(lastRecord, record) ge 0 then[ Ws("*N[2-2] Records out of order"); resultis false ]lastRecord = recordunless FollowPtr(bte>>BTE.GrPtr, level+1) resultis falsebte = bte + 1 + record>>DR.length]if bte ne end then [ Ws("*N[2-2] BTE overflow"); resultis false ]if level ne 0 & recordsOnThisPage ls 4 & debugFlag thenWs("*N[2-2] Page has < 4 records")  //non fatal according to EMMresultis true]UnlockBTreePtr(tree, lv page)resultis ok]IfsScav2-2.bcpl11-Feb-84 21:56:37Page   4��Ó	ÏÔa˚MÓ	ÏÔ`æ!Ó	ÏÔ_ÅMÓ	ÏÔ^DKÓ	ÏÔ]GÓ	ÏÔ[ �Ó	ÏÔZç%ÓÛÔYP�ÓÛÔX9ÓÛÔV÷FÓ
˙ÔUôÓ
˙ÔT\DÓÛÔS�Ó	ÏÔP•/Ó	ÏÔOh.ÓÛÔN+>Ó	ÏÔLÓÓ	ÏÔK±#Ó	ÏÔJtÓÛÔI7*ÓÛÔG˙HÓ	ÏÔEÄ)Ó	ÏÔDC2ÓÛÔC�ÓÛÔA…ÓÛÔ@åÓÛÔ?OÓ
˙Ô>7ÓÛÔ<’2ÓÛÔ;òFÓ
˙Ô:[>ÓÛÔ96Ó
˙Ô7·>ÓÛÔ5g:ÓÛÔ2ÌÓÛÔ1∞ÓÛÔ0s3ÓÛÔ/6Ó
˙Ô-˘�Ó
˙Ô,ºÓ
˙Ô+(Ó
˙Ô*BÓ
˙Ô)/ÓÔ'».Ó
˙Ô&ãÓÔ%N/ÓÔ$6Ó
˙Ô"‘Ó
˙Ô!ó8Ó
˙Ô Z!Ó
˙Ô�ÓÛÔ‡AÓÛÔ£7Ó
˙Ôf@ÓÛÔ)ÓÛÔÏ�Ó	ÏÔØÓ	ÏÔ5
Ó	ÏÔ¯�Ôh.Ó	ÏÓ"∫ÓEtˇ��������	H����	Ϙ4	Që�Ù��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//---------------------------------------------------------------------------and CompareRecords(r1, r2) = valof//---------------------------------------------------------------------------// Compares two B-Tree records in the same manner as DirCompareKey.// This differs from DirCompareKey in that it compares two records//  rather than a key and a record.// If a dr is malformed, return 0, which will terminate the scan.// Returning 0 will cause a bogus "Records out of order" message.[// find position of last "!" in first recordlet lenBodyString = nilfor i = r1>>DR.pathName.length to 1 by -1 doif r1>>DR.pathName.char^i eq $! then [ lenBodyString = i; break ]// Compare chars in the "<dir>name!" (string) portionlet lenR2 = r2>>DR.pathName.lengthfor i = 1 to lenBodyString do[// If we run off the end of r2 then r1 is greater.if i gr lenR2 resultis 1let c1 = r1>>DR.pathName.char^ilet c2 = r2>>DR.pathName.char^iif c1 ne c2 then[// Lower-case alphabetics collate with upper-caseif c1 ge $a & c1 le $z then c1 = c1-($a-$A)if c2 ge $a & c2 le $z then c2 = c2-($a-$A)if c1 ne c2 then[// Definitely a mismatch.  If all remaining characters of the// record are digits then the record body is an initial substring// of the key and we declare the key to be greater.  Otherwise we// return the result of comparing the mismatching character codes.if c1 ls c2 thenfor j = i to lenR2 do[let digit = r2>>DR.pathName.char^j - $0if digit ls 0 % digit gr 9 resultis Usc(c1, c2)]resultis 1]]]// bodies equal, now parse the version strings and compare them numerically.// It must be possible to parse r1's version; if not, the record is malformed.// If the attempt at parsing r2's version is unsuccessful, then//  return -1 so that, e.g., "foo!123" collates before "foo!xyz!1".let v1 = 0for i = lenBodyString+1 to r1>>DR.pathName.length do[let digit = r1>>DR.pathName.char^i - $0if digit ls 0 % digit gr 9 then[ Ws("*N[2-2] Malformed dr"); resultis 0 ]  //see comment abovev1 = 10*v1+digit]let v2 = 0for i = lenBodyString+1 to lenR2 do[let digit = r2>>DR.pathName.char^i - $0if digit ls 0 % digit gr 9 resultis -1  //non-digit encounteredv2 = 10*v2+digit]resultis Usc(v1, v2)]IfsScav2-2.bcpl11-Feb-84 21:56:37Page   5��Ó	ÏÔa˚MÓ	ÏÔ`æ"Ó	ÏÔ_ÅMÓ	ÏÔ^DCÓ	ÏÔ]BÓ	ÏÔ[ #Ó	ÏÔZçAÓ	ÏÔYPAÓ	ÏÔX�Ó	ÏÔV÷,Ó	ÏÔUôÓ	ÏÔT\,ÓÛÔSAÓ	ÏÔP•5Ó	ÏÔOh"Ó	ÏÔN+ÓÛÔLÓ�ÓÛÔK±2ÓÛÔJtÓÛÔG˙ÓÛÔFΩÓÛÔEÄÓ
˙ÔDC�Ó
˙ÔC1Ó
˙ÔA…+Ó
˙Ô@å+Ó
˙Ô?OÓÔ>�ÓÔ<’=ÓÔ;òAÓÔ:[AÓÔ9BÓÔ7·ÓÔ6§ÓÔ5g�ÓÔ4*'ÓÔ2Ì/ÓÔ1∞�ÓÔ0s	ÓÔ/6�Ó
˙Ô-˘�ÓÛÔ,º�Ó	ÏÔ*BLÓ	ÏÔ)NÓ	ÏÔ'»?Ó	ÏÔ&ãCÓ	ÏÔ%N	Ó	ÏÔ$4ÓÛÔ"‘�ÓÛÔ!ó'ÓÛÔ ZÓ
˙Ô?ÓÛÔ‡ÓÛÔ£�Ó	ÏÔf	Ó	ÏÔ)#ÓÛÔÏ�ÓÛÔØ'ÓÛÔr?ÓÛÔ5ÓÛÔ¯�Ó	ÏÔªÓ	ÏÔ~�Ôh.Ó	ÏÓ"∫ÓEtˇ��������ú����	Ï}4∂T����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// IfsScav2-3.bcpl - Pass 2 Phase 3// Copyright Xerox Corporation 1980, 1981, 1982, 1983// Last modified June 16, 1983  8:25 PM by Boggsget "IfsScavenger.decl"get "IfsDirs.decl"get "BTree.decl"get "Disks.d"external[// outgoing proceduresPass2Phase3// incoming proceduresGets; Puts; Closes; ResetsOpenFile; CreateDiskStream; CreateDiskFileFileLength; GetCurrentFa; WriteBlock; ExtendFileAllocate; Free; IFSError; MoveBlock; Zero; ReadCalendarDoubleDifference; DoubleIncrement; MultEq; UscInitializeContext; Block; Enqueue; UnqueueCreateStringStream; CopyString; StringCompareReadLPTE; WriteLPTE; GetLptLpteOpenLPT; EnumerateLPT; CloseLPTGetLpteIfsName; GetLpteIfp; GetLpteFa; GetLpteDIFRecSetLpteIfsName; SetLpteIfp; GetLpteFlags; GetLpteTypeDirEntryLength; CompareRecords; PasswordMapTree; UpdateRecord; DeleteKeyOpenFPTree; CloseIFSTree; FlushBuffersWs; Wss; PutTemplate; PrintTime// incoming staticskeys; dsp; sysZone; ifsCtxQscavDisk; scratchDisk; tree; phase; lptinitTreeFlag; debugFlag]static[treeDR; lptDR; difDR; dupLptgiveMeATreeDR; leftoverLPTE; treeChanged]manifest[// error codesecMalformedLPTE = 508ecUpdateRecord = 509]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   1���Ó	ÏÔc8#Ó	ÏÔa˚5Ó	ÏÔ`æ0Ó	ÏÔ^DÓ	ÏÔ]Ó	ÏÔ[ Ó	ÏÔZçÓ	ÏÔXÓ	ÏÔV÷�Ó	ÏÔUôÓ	ÏÔT\
Ó	ÏÔQ‚Ó	ÏÔP•Ó	ÏÔOh*Ó	ÏÔN+0Ó	ÏÔLÓ7Ó	ÏÔK±.Ó	ÏÔJt*Ó	ÏÔI7-Ó	ÏÔG˙Ó	ÏÔFΩÓ	ÏÔEÄ4Ó	ÏÔDC5Ó	ÏÔC(Ó	ÏÔA…Ó	ÏÔ@å&Ó	ÏÔ?OÓ	ÏÔ<’Ó	ÏÔ;òÓ	ÏÔ:['Ó	ÏÔ9Ó	ÏÔ7·�Ó	ÏÔ5gÓ	ÏÔ4*�Ó	ÏÔ2ÌÓ	ÏÔ1∞(Ó	ÏÔ0s�Ó	ÏÔ-˘Ó	ÏÔ,º�Ó	ÏÔ+
Ó	ÏÔ*BÓ	ÏÔ)Ó	ÏÔ'»�Ôh.Ó	ÏÓ"∫ÓEtˇ��������ñ����	Ï+«%+=¡�≤����//-----------------------------------------------------------------------------------------let Pass2Phase3() = valof//-----------------------------------------------------------------------------------------// This phase enumerates the directory and the leader page table in parallel.// The LPT is the truth about what should be in the directory, so any//  disagreements are resolved by changing the tree.// The algorithm is://lptDR > treeDR: delete treeDR, read next treeDR//lptDR = treeDR: read next lptDR, read next treeDR//lptDR < treeDR: insert lptDR, read next lptDR[phase = 3Ws("*N[2-3]"); if debugFlag then Gets(keys)if initTreeFlag & not debugFlag thenWs("*N[2-3] Initializing the directory B-Tree; only DIFs will be mentioned")// open the tree and set up its reader processlet fpIfsDir = vec lFP; Zero(fpIfsDir, lFP)let ifsDir = OpenFile("Ifs.dir", 0, 0, 0, fpIfsDir, 0, 0, 0, scavDisk)if ifsDir eq 0 then IFSError(ecScavengeeFile, "Ifs.dir")Closes(ifsDir)tree = OpenFPTree(fpIfsDir, scavDisk, CompareRecords, DirEntryLength, false)let treeMapper = InitializeContext(Allocate(sysZone, 1024), 1024, TreeMapper)Enqueue(ifsCtxQ, treeMapper)giveMeATreeDR, treeChanged = false, falseResets(lpt)dupLpt = 0leftoverLPTE = falselptDR = Allocate(sysZone, maxDRLength); Zero(lptDR, maxDRLength)difDR = Allocate(sysZone, maxDRLength); Zero(difDR, maxDRLength)treeDR = Allocate(sysZone, maxDRLength); Zero(treeDR, maxDRLength)CopyString(lv treeDR>>DR.pathName, "<!>!1")IfsScav2-3.bcpl11-Feb-84 21:56:37Page   2���Ó	ÏÔa˚[Ó	ÏÔ`æÓ	ÏÔ_Å[Ó	ÏÔ^DMÓ	ÏÔ]EÓ	ÏÔ[ 4Ó	ÏÔZçÓ	ÏÔYPÓT/Ó	ÏÔXÓT1Ó	ÏÔV÷ÓT-Ó	ÏÔUô�Ó	ÏÔT\Ó	ÏÔS+Ó	ÏÔQ‚$ÓÛÔP•LÓ	ÏÔN+.Ó	ÏÔLÓ+Ó	ÏÔK±FÓ	ÏÔJt8Ó	ÏÔI7
Ó	ÏÔG˙LÓ	ÏÔFΩMÓ	ÏÔEÄÓ	ÏÔDC)Ó	ÏÔA…
Ó	ÏÔ@å	Ó	ÏÔ?OÓ	ÏÔ>@Ó	ÏÔ<’@Ó	ÏÔ;òBÓ	ÏÔ:[+Ôh.Ó	ÏÓ"∫ÓEt��������‰����	Ï>Z=+.�ë��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Pass2Phase3 (cont'd)let startTime = vec 1; ReadCalendar(startTime)ReadNextLPTDR()ReadNextTreeDR()[switchon valof[if treeDR>>DR.type eq 0 & lptDR>>DR.type eq 0 break  //all doneif lptDR>>DR.type eq 0 resultis -1  //lpt ran outif treeDR>>DR.type eq 0 resultis 1  //tree ran outresultis CompareRecords(treeDR, lptDR)] into[case -1:  //treeDR < lptDR[PutTemplate(dsp, "*N[2-3] Deleting tree entry *"$S*"",lv treeDR>>DR.pathName)DeleteKey(tree, treeDR)treeChanged = trueReadNextTreeDR()endcase]case 0:  //treeDR = lptDR[let update = falsetest lptDR>>DR.type eq drTypeDIFifso update = trueifnot[@lv treeDR>>DR.fp.unit = treeDR>>DR.fp.unit@lv lptDR>>DR.fp.unit = lptDR>>DR.fp.unitunless MultEq(lv treeDR>>DR.fp,lv lptDR>>DR.fp,lFP) do[PutTemplate(dsp, "*N[2-3] Updating tree entry *"$S*"",lv lptDR>>DR.pathName)update = true]]if update then UpdateRecord(tree, lptDR, UpdateRecGen, lptDR)ReadNextTreeDR()ReadNextLPTDR()endcase]case 1:  //treeDR > lptDR[if not initTreeFlag % lptDR>>DR.type eq drTypeDIF % debugFlag doPutTemplate(dsp, "*N[2-3] Inserting tree entry *"$S*"",lv lptDR>>DR.pathName)UpdateRecord(tree, lptDR, InsertRecGen, lptDR)ReadNextLPTDR()endcase]]] repeatIfsScav2-3.bcpl11-Feb-84 21:56:37Page   3��Ó	ÏÔa˚Ó	ÏÔ_Å.Ó	ÏÔ^DÓ	ÏÔ]ÓÛÔ[ �ÓÛÔZç
Ó
˙ÔYP�Ó
˙ÔX?Ó
˙ÔV÷1Ó
˙ÔUô2Ó
˙ÔT\&Ó
˙ÔSÓ
˙ÔQ‚�Ó
˙ÔP•ÓÔOh�ÓÔN+6ÓÆÔLÓÓÔK±ÓÔJtÓÔI7ÓÔG˙ÓÔFΩ�Ó
˙ÔEÄÓÔDC�ÓÔCÓÔA…ÓÔ@åÓÔ?OÓÔ>�ÓÔ<’+ÓÔ;ò)ÓÔ:[6ÓÔ9�ÓÔ7·6Ó√Ô6§ÓÔ5gÓÔ4*�ÓÔ2Ì�ÓÔ1∞=ÓÔ0sÓÔ/6ÓÔ-˘ÓÔ,º�Ó
˙Ô+ÓÔ*B�ÓÔ)@ÓÔ'»7ÓµÔ&ãÓÔ%N.ÓÔ$ÓÔ"‘ÓÔ!ó�Ó
˙Ô Z�ÓÛÔÔh.Ó	ÏÓ"∫ÓEtˇ��������∏����	Ï#1UFl�ÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Pass2Phase3 (cont'd)UpdateRecord(tree, difDR, UpdateRecGen, difDR)  //updates last difPrintTime(startTime)if dupLpt ne 0 then[EnumerateLPT(dupLpt, AddDuplicates)dupLpt = CloseLPT(dupLpt, true)]// If the tree is more than 90% full, extend it by 50% if there is room.let greatestPage = tree>>TREE.GreatestPagetree = CloseIFSTree(tree)let st = CreateDiskStream(fpIfsDir, 0, 0, 0, 0, 0, 0, scavDisk)let fa = vec lFA; FileLength(st); GetCurrentFa(st, fa)Closes(st)if (fa>>FA.pageNumber/10)*9 ls greatestPage thenExtendFile(st, (fa>>FA.pageNumber/2)*3, 0)// clean up and go awayUnqueue(ifsCtxQ, treeMapper)Free(sysZone, treeMapper)treeDR = Free(sysZone, treeDR)lptDR = Free(sysZone, lptDR)difDR = Free(sysZone, difDR)FlushBuffers()resultis true]//-----------------------------------------------------------------------------------------and AddDuplicates(lpt, lpte, nil) be//-----------------------------------------------------------------------------------------[let drName = lv lptDR>>DR.pathNamelet ss = CreateStringStream(drName, maxPathNameChars)let ifp = GetLpteIfp(lpte)PutTemplate(ss, "<System>Duplicate>VDA$EUO", lv ifp>>IFP.da)let ifsName = GetLpteIfsName(lpte)for i = 1 to ifsName>>String.length do[if drName>>String.length ge maxPathNameChars break// turn directory punctuation into harmless dasheslet char = ifsName>>String.char^iif char eq $> % char eq $< then char = $-Puts(ss, char)]Closes(ss)PutTemplate(dsp, "*N[2-3] Inserting duplicate file *"$S*"", drName)MoveBlock(lv lptDR>>DR.fp, ifp, lFP)lptDR>>DR.type = drTypeNormallptDR>>DR.length = lenDRHeader + lptDR>>DR.pathName.length rshift 1 +1UpdateRecord(tree, lptDR, InsertRecGen, lptDR)]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   4��Ó	ÏÔa˚Ó	ÏÔ_ÅBÓ	ÏÔ^DÓ	ÏÔ[ ÓÛÔZç�ÓÛÔYP#ÓÛÔXÓÛÔV÷�Ó	ÏÔT\HÓ	ÏÔS*Ó	ÏÔQ‚Ó	ÏÔP•?Ó	ÏÔOh6Ó	ÏÔN+	Ó	ÏÔLÓ0ÓÛÔK±*Ó	ÏÔI7Ó	ÏÔG˙Ó	ÏÔFΩÓ	ÏÔEÄÓ	ÏÔDCÓ	ÏÔCÓ	ÏÔA…
Ó	ÏÔ@åÓ	ÏÔ?O�Ó	ÏÔ<’[Ó	ÏÔ;ò$Ó	ÏÔ:[[Ó	ÏÔ9�Ó	ÏÔ7·"Ó	ÏÔ6§5Ó	ÏÔ5gÓ	ÏÔ4*<Ó	ÏÔ2Ì"Ó	ÏÔ1∞&ÓÛÔ0s�ÓÛÔ/62ÓÛÔ-˘2ÓÛÔ,º!ÓÛÔ+)ÓÛÔ*B
ÓÛÔ)�Ó	ÏÔ'»	Ó	ÏÔ&ãCÓ	ÏÔ%N$Ó	ÏÔ$Ó	ÏÔ"‘FÓ	ÏÔ!ó.Ó	ÏÔ Z�Ôh.Ó	ÏÓ"∫ÓEt��������†����	Ï$Y=E/�À������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//-----------------------------------------------------------------------------------------and InsertRecGen(dr, newDR) = valof//-----------------------------------------------------------------------------------------// This record generator is passed to UpdateRecord when inserting a record[treeChanged = truetest dr ne 0  //two files with the same name?ifso[if dupLpt eq 0 thendupLpt = OpenLPT("IfsScavenger.dupLpt", true)let lpte = GetLptLpte(dupLpt, true)SetLpteIfsName(lpte, lv newDR>>DR.pathName)SetLpteIfp(lpte, lv newDR>>DR.fp)WriteLPTE(dupLpt)]ifnot[dr = Allocate(sysZone, newDR>>DR.length)MoveBlock(dr, newDR, newDR>>DR.length)]resultis dr]//-----------------------------------------------------------------------------------------and UpdateRecGen(dr, newDR) = valof//-----------------------------------------------------------------------------------------// This record generator is passed to UpdateRecord when updating a record[treeChanged = trueif dr eq 0 then IFSError(ecUpdateRecord)Free(sysZone,dr)dr = Allocate(sysZone, newDR>>DR.length)MoveBlock(dr, newDR, newDR>>DR.length)resultis dr]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   5��Ó	ÏÔa˚[Ó	ÏÔ`æ#Ó	ÏÔ_Å[Ó	ÏÔ^DJÓ	ÏÔ]�Ó	ÏÔ[ Ó	ÏÔYP-ÓÛÔXÓ
˙ÔV÷�Ó
˙ÔUôÓÔT\-Ó
˙ÔS#Ó
˙ÔQ‚+Ó
˙ÔP•!Ó
˙ÔOhÓ
˙ÔN+�ÓÛÔLÓÓ
˙ÔK±�Ó
˙ÔJt(Ó
˙ÔI7&Ó
˙ÔG˙�Ó	ÏÔEÄ
Ó	ÏÔDC�Ó	ÏÔA…[Ó	ÏÔ@å#Ó	ÏÔ?O[Ó	ÏÔ>IÓ	ÏÔ<’�Ó	ÏÔ;òÓ	ÏÔ:[(Ó	ÏÔ9Ó	ÏÔ7·(Ó	ÏÔ6§&Ó	ÏÔ5g
Ó	ÏÔ4*�Ôh.Ó	ÏÓ"∫ÓEt��������z����	Ï8)=1_�ó��������������������������������������������������������������������������������������//-----------------------------------------------------------------------------------------and TreeMapper() be  //a context used as a coroutine//-----------------------------------------------------------------------------------------[Block() repeatuntil giveMeATreeDR  //wait for a requestif MapTree(tree, treeDR, MapTreeFunction, 0, 0, true) then[  //ran off the end of the treetreeDR>>DR.type = 0giveMeATreeDR = false  //request satisfiedBlock() repeatuntil giveMeATreeDR  //wait for a request] repeat] repeat//-----------------------------------------------------------------------------------------and MapTreeFunction(dr, nil, nil) = valof//-----------------------------------------------------------------------------------------[if treeChanged thenif CompareRecords(dr, treeDR) le 0 resultis true  //we want the next onetreeChanged = falseMoveBlock(treeDR, dr, dr>>DR.length)giveMeATreeDR = false  //request satisfiedBlock() repeatuntil giveMeATreeDR  //wait for a requestresultis not treeChanged  //return true unless our partner modifed tree]//-----------------------------------------------------------------------------------------and ReadNextTreeDR() be//-----------------------------------------------------------------------------------------// Pokes the B-Tree process for the next record.[giveMeATreeDR = true  //make a requestBlock() repeatwhile giveMeATreeDR  //wait for it to be satisfied]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   6���Ó	ÏÔa˚[Ó	ÏÔ`æ4Ó	ÏÔ_Å[Ó	ÏÔ^D�Ó	ÏÔ]7Ó	ÏÔ[ :ÓÛÔZçÓÛÔYPÓÛÔX*ÓÛÔV÷7ÓÛÔUôÓ	ÏÔT\Ó	ÏÔQ‚[Ó	ÏÔP•)Ó	ÏÔOh[Ó	ÏÔN+�Ó	ÏÔLÓÓÛÔK±HÓ	ÏÔJtÓ	ÏÔI7$Ó	ÏÔG˙*Ó	ÏÔFΩ7Ó	ÏÔEÄGÓ	ÏÔDC�Ó	ÏÔA…[Ó	ÏÔ@åÓ	ÏÔ?O[Ó	ÏÔ>0Ó	ÏÔ<’�Ó	ÏÔ;ò&Ó	ÏÔ:[@Ó	ÏÔ9�Ôh.Ó	ÏÓ"∫ÓEtˇ��������™����	Ï==,k�é������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//-----------------------------------------------------------------------------------------and ReadNextLPTDR() be//-----------------------------------------------------------------------------------------// Manufactures a directory record from the next leader page table entry.[let lpte = GetLptLpte(lpt)[unless leftoverLPTE do unless ReadLPTE(lpt) do[ lptDR>>DR.type = 0; return ]  //no more LPTEsif GetLpteType(lpte) eq dvTypeFile break] repeatlet dirEnd = 1let ifsName = GetLpteIfsName(lpte)for i = 1 to ifsName>>String.length doif ifsName>>String.char^i eq $> then [ dirEnd = i; break ]if dirEnd eq 1 then IFSError(ecMalformedLPTE)test StringCompare(ifsName, lv difDR>>DR.pathName, 1, dirEnd) eq -2ifso  //This file is in the same directory as the last file[CopyString(lv lptDR>>DR.pathName, ifsName)MoveBlock(lv lptDR>>DR.fp, GetLpteIfp(lpte), lFP)lptDR>>DR.type = drTypeNormallptDR>>DR.length = lenDRHeader + lptDR>>DR.pathName.length rshift 1 +1DoubleIncrement(lv (DIFRecFromDR(difDR)>>DIFRec.diskPageUsage),GetLpteFa(lpte)>>FA.pageNumber +1)leftoverLPTE = false]ifnot  //New directory[if difDR>>DR.type eq drTypeDIF then  //every time except the firstUpdateRecord(tree, difDR, UpdateRecGen, difDR)let difRec = difDR + lenDRHeaderlet pathName = lv difDR>>DR.pathNameZero(difDR, maxDRLength)test (GetLpteFlags(lpte) & lfDIF) ne 0ifso  //This is the new directory's DIF.[CopyString(pathName, ifsName)MoveBlock(lv difDR>>DR.fp, GetLpteIfp(lpte), lFP)difRec = difRec + pathName>>String.length rshift 1 +1MoveBlock(difRec, GetLpteDIFRec(lpte), lenDIFRec)Zero(lv difRec>>DIFRec.diskPageUsage, 2)leftoverLPTE = false]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   7��Ó	ÏÔa˚[Ó	ÏÔ`æÓ	ÏÔ_Å[Ó	ÏÔ^DIÓ	ÏÔ]�Ó	ÏÔ[ ÓÛÔZç�ÓÛÔYP.Ó
˙ÔX/ÓÛÔV÷(ÓÛÔUôÓ	ÏÔS
Ó	ÏÔQ‚"Ó	ÏÔP•&ÓÛÔOh:Ó	ÏÔN+-Ó	ÏÔLÓCÓÛÔK±;Ó
˙ÔJt�Ó
˙ÔI7*Ó
˙ÔG˙1Ó
˙ÔFΩÓ
˙ÔEÄFÓ
˙ÔDC?ÓßÔC"Ó
˙ÔA…Ó
˙Ô@å�ÓÛÔ?OÓ
˙Ô>�Ó
˙Ô<’BÓÔ;ò.Ó
˙Ô:[Ó
˙Ô9$Ó
˙Ô7·Ó
˙Ô6§&ÓÔ5g(ÓÔ4*�ÓÔ2ÌÓÔ1∞1ÓÔ0s5ÓÔ/61ÓÔ-˘(ÓÔ,ºÓÔ+�Ôh.Ó	ÏÓ"∫ÓEtˇ��������z����	Ï/~=:
�ª��������������// ReadNextLPTDR (cont'd)ifnot  //New directory's DIF seems to be missing.[// manufacture the DIF filenamelet s = CreateStringStream(pathName, maxPathNameChars)for i = 1 to dirEnd do Puts(s, ifsName>>String.char^i)Wss(s, "!1")Closes(s)// create the Directory Information FilePutTemplate(dsp, "*N[2-3] Creating *"$S*"", pathName)let pageLength = 1 lshift scavDisk>>DSK.lnPageSizelet ld = Allocate(sysZone, pageLength); Zero(ld, pageLength)CopyString(lv ld>>ILD.pathName, pathName)CopyString(lv ld>>ILD.author, "System")ld>>ILD.readProt.owner = trueld>>ILD.type = ftBinaryld>>ILD.byteSize = 8ld>>ILD.undeletable = trueCreateDiskFile(scavDisk, pathName, lv difDR>>DR.fp, 0, 0, 0, ld)Free(sysZone, ld)difDR>>DR.fp.unit = 0// fill the dif with vanilla thingslet dif = vec lenDIF; Zero(dif, lenDIF)Password("ifs", lv dif>>DIF.password, true)dif>>DIF.diskPageLimit^1 = 1000dif>>DIF.createProt.owner = truedif>>DIF.connectProt.owner = truedif>>DIF.readProt.owner = truedif>>DIF.readProt.world = truedif>>DIF.writeProt.owner = truedif>>DIF.appendProt.owner = truelet s = CreateDiskStream(lv difDR>>DR.fp, 0, 0, 0, 0, 0, 0, scavDisk)if s eq 0 then IFSError(ecCreateDiskStream, pathName)WriteBlock(s, dif, lenDIF)Closes(s)difRec = difRec + pathName>>String.length rshift 1 +1MoveBlock(difRec, dif, lenDIFRec)leftoverLPTE = true]difDR>>DR.type = drTypeDIFdifDR>>DR.length = lenDRHeader + lenDIFRec +difDR>>DR.pathName.length rshift 1 +1difRec>>DIFRec.diskPageUsage^1 = 2MoveBlock(lptDR, difDR, difDR>>DR.length)]]//-----------------------------------------------------------------------------------------and DIFRecFromDR(dr) = valof//-----------------------------------------------------------------------------------------[// returns pointer to the DIFRec portion of a directory entryif dr>>DR.type ne drTypeDIF then IFSError(ecNotDIFRec)resultis dr + dr>>DR.length - lenDIFRec]IfsScav2-3.bcpl11-Feb-84 21:56:37Page   8��Ó	ÏÔa˚ÓÔ_Å1ÓÔ^D�ÓÔ]ÓÔ[ 6ÓÔZç6ÓÔYPÓÔXÓÔUô(ÓÔT\5ÓÔS2ÓÔQ‚<ÓÔP•)ÓÔOh'ÓÔN+ÓÔLÓÓÔK±ÓÔJtÓÔI7@ÓÔG˙ÓÔFΩÓÔDC#ÓÔC'ÓÔA…+ÓÔ@åÓÔ?OÓÔ>!ÓÔ<’ÓÔ;òÓÔ:[ÓÔ9ÓÔ7·EÓÔ6§5ÓÔ5gÓÔ4*ÓÔ2Ì5ÓÔ1∞!ÓÔ0sÓÔ/6�Ó
˙Ô,ºÓ
˙Ô+,ÓßÔ*B%Ó
˙Ô)"Ó
˙Ô'»)Ó
˙Ô&ã�Ó	ÏÔ%N�Ó	ÏÔ"‘[Ó	ÏÔ!óÓ	ÏÔ Z[Ó	ÏÔ�Ó	ÏÔ‡=Ó	ÏÔ£6Ó	ÏÔf'Ó	ÏÔ)�Ôh.Ó	ÏÓ"∫ÓEt��������t����	Ï(=K`�fi��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// IfsScavDEdit.bcpl -- a simple disk editor// Copyright Xerox Corporation 1979// Last modified December 22, 1979  3:14 PM by Boggsget "AltoFileSys.d"get "Streams.d"get "Disks.d"get "Tfs.d"external[// outgoing proceduresDiskEditor// incoming proceduresOpenDisk; CloseDisk; VirtualDiskDAInitializeDiskCBZ; GetDiskCb; DoDiskCommandAllocate; Free; Resets; Puts; Gets; ClosesWs; PutTemplate; EraseBits; CharWidthShowDisplayStream; CreateDisplayStreamScavConfirm; UnsnarfBufferPrintDiskError; SysErr// incoming staticsdsp; keys; sysZone; sysFont; pass]static[editDisk; label; data; number; addressnumberTyped; pageOpen; cellOpen; pageDirty]IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   1��Ó	ÏÔc8,Ó	ÏÔa˚#Ó	ÏÔ`æ4Ó	ÏÔ^DÓ	ÏÔ]Ó	ÏÔ[ Ó	ÏÔZç
Ó	ÏÔXÓ	ÏÔV÷�Ó	ÏÔUôÓ	ÏÔT\	Ó	ÏÔQ‚Ó	ÏÔP•"Ó	ÏÔOh+Ó	ÏÔN+*Ó	ÏÔLÓ%Ó	ÏÔK±&Ó	ÏÔJtÓ	ÏÔI7Ó	ÏÔFΩÓ	ÏÔEÄ!Ó	ÏÔDC�Ó	ÏÔA…Ó	ÏÔ@å�Ó	ÏÔ?O&Ó	ÏÔ>*Ó	ÏÔ<’�Ôh.Ó	ÏÓ"∫ÓEtˇ��������¶����	Ï@‘#$(¥�x��������������������������������������������������������������������������������������������������������//----------------------------------------------------------------------------let DiskEditor(buffPtr, numBuffs) be//----------------------------------------------------------------------------[pass = 0editDisk = OpenDisk("*NWhat disk would you like to edit? ", 0, true, false)if editDisk eq 0 then[for i = 0 to numBuffs-1 do UnsnarfBuffer(buffPtr+i*256)return]// replace the normal tiny display with a giant displaylet normalDsp = dsp>>ST.par1ShowDisplayStream(normalDsp, DSdelete)dsp>>ST.par1 = CreateDisplayStream(800/((sysFont!-2) & -2),buffPtr, 256*numBuffs)ShowDisplayStream(dsp>>ST.par1, DSalone)let lenData = 1 lshift editDisk>>DSK.lnPageSizelabel = Allocate(sysZone, 10)data = Allocate(sysZone, lenData)pageOpen = falseaddress, number = 0, 0Puts(dsp, $*N)switchon GetNumber() into[case $/:[address = numberExaminePage(not numberTyped)endcase]case $*L:[test numberTypedifso Oop()ifnot[address = address +1ExaminePage(true)]endcase]case $^:[test numberTypedifso Oop()ifnot[address = address -1ExaminePage(true)]endcase]case $\:[test numberTyped % not pageOpenifso Oop()ifnot[address = VirtualDiskDA(editDisk, lv label>>DL.previous)ExaminePage(true)]endcase]IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   2��Ó	ÏÔa˚NÓ	ÏÔ`æ$Ó	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]Ó	ÏÔ[ KÓ	ÏÔZçÓÛÔYP�ÓÛÔX7ÓÛÔV÷ÓÛÔUô�Ó	ÏÔS7Ó	ÏÔQ‚Ó	ÏÔP•&Ó	ÏÔOh;Ó
ôÔN+Ó	ÏÔLÓ(Ó	ÏÔJt/Ó	ÏÔI7Ó	ÏÔG˙!Ó	ÏÔFΩÓ	ÏÔEÄÓ	ÏÔDC
Ó	ÏÔA…ÓÛÔ@å�ÓÛÔ?OÓ
˙Ô>�Ó
˙Ô<’Ó
˙Ô;òÓ
˙Ô:[Ó
˙Ô9�ÓÛÔ7·Ó
˙Ô6§�Ó
˙Ô5gÓÔ4*	ÓÔ2ÌÓÔ1∞�ÓÔ0sÓÔ/6ÓÔ-˘�Ó
˙Ô,ºÓ
˙Ô+�ÓÛÔ*BÓ
˙Ô)�Ó
˙Ô'»ÓÔ&ã	ÓÔ%NÓÔ$�ÓÔ"‘ÓÔ!óÓÔ Z�Ó
˙ÔÓ
˙Ô‡�ÓÛÔ£Ó
˙Ôf�Ó
˙Ô)ÓÔÏ	ÓÔØÓÔr�ÓÔ58ÓÔ¯ÓÔª�Ó
˙Ô~Ó
˙ÔA�Ôh.Ó	ÏÓ"∫ÓEtˇ��������∂����	Ï@4∂UH�˙����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// DiskEditor (cont'd)case $L: case $l:[test numberTyped % not pageOpenifso Oop()ifnot EditPage(label, 10)endcase]case $D: case $d:[test numberTyped % not pageOpenifso Oop()ifnot EditPage(data, lenData)endcase]case $Q: case $q:[if ScavConfirm("*NQuit Disk editor") breakendcase]case $*N:[Puts(dsp, $*N)pageOpen = falseendcase]case $*177: [ Ws(" XXX"); endcase ]default: [ Oop(); endcase ]] repeatFree(sysZone, label)Free(sysZone, data)CloseDisk(editDisk)Closes(dsp>>ST.par1)dsp>>ST.par1 = normalDspShowDisplayStream(dsp>>ST.par1, DSalone)Puts(dsp, $*N)for i = 0 to numBuffs-1 do UnsnarfBuffer(buffPtr+i*256)]IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   3���Ó	ÏÔa˚ÓÛÔ_ÅÓ
˙Ô^D�Ó
˙Ô]ÓÔ[ 	ÓÔZçÓ
˙ÔYPÓ
˙ÔX�ÓÛÔV÷Ó
˙ÔUô�Ó
˙ÔT\ÓÔS	ÓÔQ‚Ó
˙ÔP•Ó
˙ÔOh�ÓÛÔN+Ó
˙ÔLÓ�Ó
˙ÔK±*Ó
˙ÔJtÓ
˙ÔI7�ÓÛÔG˙Ó
˙ÔFΩ�Ó
˙ÔEÄ
Ó
˙ÔDCÓ
˙ÔCÓ
˙ÔA…�ÓÛÔ@å#ÓÛÔ?OÓÛÔ>Ó	ÏÔ;òÓ	ÏÔ:[Ó	ÏÔ9Ó	ÏÔ6§Ó	ÏÔ5gÓ	ÏÔ4*(Ó	ÏÔ2Ì
Ó	ÏÔ1∞7Ó	ÏÔ0s�Ôh.Ó	ÏÓ"∫ÓEtˇ��������å����	Ï4r%+5�õ������������������������������������������������������������//----------------------------------------------------------------------------and GetNumber() = valof  //returns terminating character//----------------------------------------------------------------------------[manifest maxStringChars = 7  //6 octal digits + minus signlet string = vec maxStringChars  //1 char per wordlet count = 0  //chars in stringlet char = nil[char = Gets(keys)switchon char into[case $0 to $7:case $-:[if (char eq $-) ? (count eq 0), (count ls maxStringChars) then[Puts(dsp, char)count = count +1string!count = char]endcase]case $*001: case $*010:  //^A, BS[if count ne 0 then[EraseBits(dsp>>ST.par1, -CharWidth(dsp>>ST.par1, string!count))count = count -1]endcase]case $*027:  //^W[for i = count to 1 by -1 doEraseBits(dsp>>ST.par1, -CharWidth(dsp>>ST.par1, string!i))count = 0endcase]case $*177: count = 0  //falls throughdefault: break]] repeatnumberTyped = count ne 0if numberTyped then[number = 0let minus = falseif string!1 eq $- then minus = truefor i = minus? 2,1 to count donumber = number lshift 3 + (string!i & 7)if minus then number = -number]resultis char]//----------------------------------------------------------------------------and Oop() be [ Ws(" ?"); Resets(keys) ]//----------------------------------------------------------------------------IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   4��Ó	ÏÔa˚NÓ	ÏÔ`æ8Ó	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]:Ó	ÏÔ[ 2Ó	ÏÔZçÓ	ÏÔYP
ÓÛÔX�ÓÛÔV÷ÓÛÔUôÓ
˙ÔT\�Ó
˙ÔS
Ó
˙ÔQ‚ÓÔP•�ÓÔOh>ÓÔN+�ÓÔLÓÓÔK±ÓÔJtÓÔI7�ÓÔG˙ÓÔFΩ�Ó
˙ÔEÄ!ÓÔDC�ÓÔCÓÔA…�ÓÔ@å?ÓÔ?OÓÔ>�ÓÔ<’ÓÔ;ò�Ó
˙Ô:[ÓÔ9�ÓÔ7·ÓÔ6§;ÓÔ5gÓÔ4*ÓÔ2Ì�Ó
˙Ô1∞&Ó
˙Ô0s
Ó
˙Ô/6�ÓÛÔ-˘Ó	ÏÔ,ºÓ	ÏÔ+ÓÛÔ*B�ÓÛÔ)	ÓÛÔ'»ÓÛÔ&ã#ÓÛÔ%NÓ
˙Ô$)ÓÛÔ"‘ÓÛÔ!ó�Ó	ÏÔ ZÓ	ÏÔ�Ó	ÏÔ£NÓ	ÏÔf'Ó	ÏÔ)NÔh.Ó	ÏÓ"∫ÓEt��������4����	Ï(4∂K`�Ê��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//----------------------------------------------------------------------------and ExaminePage(displayAddress) be//----------------------------------------------------------------------------[if displayAddress then PutTemplate(dsp, "*N$UO", address)Ws("/*T")if DETransferPage(DCreadLD) then[PutTemplate(dsp, "FID $EUO;$UO, page number $UO, num chars $UO ",lv label>>DL.fileId, label!2, label>>DL.pageNumber, label>>DL.numChars)let previous = VirtualDiskDA(editDisk, lv label>>DL.previous)let next = VirtualDiskDA(editDisk, lv label>>DL.next)PutTemplate(dsp, "previous vda $UO, next vda $UO", previous, next)number = nextpageOpen = true]]//----------------------------------------------------------------------------and DETransferPage(action) = valof//----------------------------------------------------------------------------[if address eq eofDA then[Oop()pageOpen = falseresultis false]let cbz = Allocate(sysZone, CBzoneLength)InitializeDiskCBZ(editDisk, cbz, 0, CBzoneLength,TransferRetry, lv TransferError)TransferRetry:let cb = GetDiskCb(editDisk, cbz)cb>>CB.AddrL = labelDoDiskCommand(editDisk, cb, data, address, lv label>>DL.fileId,label>>DL.pageNumber, action)while @cbz>>CBZ.queueHead ne 0 do GetDiskCb(editDisk, cbz)Free(sysZone, cbz)pageOpen = action eq DCreadLDresultis true]//----------------------------------------------------------------------------and TransferError(nil, cb, errorCode) be//----------------------------------------------------------------------------test errorCode eq ecUnRecovDiskErrorifso PrintDiskError(cb)ifnot SysErr(0, errorCode, cb)IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   5��Ó	ÏÔa˚NÓ	ÏÔ`æ"Ó	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]9Ó	ÏÔ[ Ó	ÏÔZçÓÛÔYP�ÓÛÔXAÓ†ÔV÷GÓÛÔUô=ÓÛÔT\5ÓÛÔSBÓÛÔQ‚ÓÛÔP•ÓÛÔOh�Ó	ÏÔN+�Ó	ÏÔK±NÓ	ÏÔJt"Ó	ÏÔI7NÓ	ÏÔG˙�Ó	ÏÔFΩÓÛÔEÄ�ÓÛÔDCÓÛÔCÓÛÔA…
ÓÛÔ@å�Ó	ÏÔ?O)Ó	ÏÔ>1Ó
ôÔ<’Ó	ÏÔ;ò
Ó	ÏÔ:[!Ó	ÏÔ9Ó	ÏÔ7·?Ó
ôÔ6§Ó	ÏÔ5g:Ó	ÏÔ4*Ó	ÏÔ2ÌÓ	ÏÔ1∞Ó	ÏÔ0s�Ó	ÏÔ-˘NÓ	ÏÔ,º(Ó	ÏÔ+NÓÛÔ*B$Ó
˙Ô)Ó
˙Ô'»Ôh.Ó	ÏÓ"∫ÓEt��������P����	Ï+«4∂=¡�ø������������������������������������������������//----------------------------------------------------------------------------and EditPage(buffer, length) be//----------------------------------------------------------------------------[PutTemplate(dsp, "*NEdit $S*N", buffer eq label? "label","data")let diskAddress = address; address = 0let diskNumber = number; number = 0pageDirty = falsecellOpen = falseswitchon GetNumber() into[case $/:[address = numberExamineCell(buffer, length, not numberTyped)endcase]case $*N:[DepositCell(buffer)Puts(dsp, $*N)endcase]case $*L:[if DepositCell(buffer) then[address = address +1ExamineCell(buffer, length, true)]endcase]case $^:[if DepositCell(buffer) then[address = address -1ExamineCell(buffer, length, true)]endcase]case $Q: case $q:[if ScavConfirm("*NQuit page editor") breakendcase]case $*177: [ Ws(" XXX"); endcase ]default: [ Oop(); endcase ]] repeatnumber = diskNumberaddress = diskAddressif pageDirty thenif ScavConfirm("*NRewrite page?") thenDETransferPage(DCwriteLD)Puts(dsp, $*N)]IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   6���Ó	ÏÔa˚NÓ	ÏÔ`æÓ	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]@Ó	ÏÔ[ &Ó	ÏÔZç#Ó	ÏÔYPÓ	ÏÔXÓ	ÏÔV÷ÓÛÔUô�ÓÛÔT\Ó
˙ÔS�Ó
˙ÔQ‚Ó
˙ÔP•,Ó
˙ÔOhÓ
˙ÔN+�ÓÛÔLÓÓ
˙ÔK±�Ó
˙ÔJtÓ
˙ÔI7
Ó
˙ÔG˙Ó
˙ÔFΩ�ÓÛÔEÄÓ
˙ÔDC�Ó
˙ÔCÓÔA…�ÓÔ@åÓÔ?O!ÓÔ>�Ó
˙Ô<’Ó
˙Ô;ò�ÓÛÔ:[Ó
˙Ô9�Ó
˙Ô7·ÓÔ6§�ÓÔ5gÓÔ4*!ÓÔ2Ì�Ó
˙Ô1∞Ó
˙Ô0s�ÓÛÔ/6Ó
˙Ô-˘�Ó
˙Ô,º*Ó
˙Ô+Ó
˙Ô*B�ÓÛÔ)#ÓÛÔ'»ÓÛÔ&ãÓ	ÏÔ$Ó	ÏÔ"‘Ó	ÏÔ!óÓÛÔ Z&Ó
˙ÔÓ	ÏÔ‡
Ó	ÏÔ£�Ôh.Ó	ÏÓ"∫ÓEt������������	Ï ¢4∂HÊ�›����������������������������������������������������������������//----------------------------------------------------------------------------and ExamineCell(buffer, length, printAddress) = valof//----------------------------------------------------------------------------[if printAddress then PutTemplate(dsp, "*N$UO", address)if buffer eq label thenWs(selecton address into[case 0: " = SN1          "case 1: " = SN2          "case 2: " = VN           "case 3: " = PackID       "case 4: " = numChars     "case 5: " = PN           "case 6: " = Prev cyl     "case 7: " = Prev hd, sec "case 8: " = Next cyl     "case 9: " = Next hd, sec "default: ""])Ws("/*T")if address ge length % address ls 0 then[Oop()cellOpen = falseresultis false]PutTemplate(dsp, "$6UO*T", buffer!address)if buffer eq data then  //also display as characters[let left = buffer!address rshift 8let right = buffer!address & 377bPutTemplate(dsp, "$3UO $3UO*T", left, right)PrintChar(left)PrintChar(right)]number = buffer!addresscellOpen = trueresultis true]//----------------------------------------------------------------------------and PrintChar(char) be//----------------------------------------------------------------------------[if char ls 40b then PutTemplate(dsp, "^$C", char+100b)if char ge 40b & char ls 176b then Puts(dsp, char)]//----------------------------------------------------------------------------and DepositCell(buffer) = valof//----------------------------------------------------------------------------//Does nothing if no number was typed[if numberTyped test cellOpenifso[buffer!address = numberpageDirty = true]ifnot[Oop()resultis false]cellOpen = falseresultis true]IfsScavDEdit.bcpl11-Feb-84 21:56:37Page   7���Ó	ÏÔa˚NÓ	ÏÔ`æ5Ó	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]7Ó	ÏÔ[ ÓÛÔZçÓ
˙ÔYP�Ó
˙ÔXÓ
˙ÔV÷Ó
˙ÔUôÓ
˙ÔT\Ó
˙ÔSÓ
˙ÔQ‚Ó
˙ÔP•Ó
˙ÔOhÓ
˙ÔN+Ó
˙ÔLÓÓ
˙ÔK±
Ó
˙ÔJtÓ	ÏÔG˙Ó	ÏÔFΩ(ÓÛÔEÄ�ÓÛÔDCÓÛÔCÓÛÔA…
ÓÛÔ@å�Ó	ÏÔ>*Ó	ÏÔ<’4ÓÛÔ;ò�ÓÛÔ:["ÓÛÔ9!ÓÛÔ7·,ÓÛÔ6§ÓÛÔ5gÓÛÔ4*�Ó	ÏÔ1∞Ó	ÏÔ0sÓ	ÏÔ/6Ó	ÏÔ-˘�Ó	ÏÔ+NÓ	ÏÔ*BÓ	ÏÔ)NÓ	ÏÔ'»�Ó	ÏÔ&ã6Ó	ÏÔ%N2Ó	ÏÔ$�Ó	ÏÔ!óNÓ	ÏÔ ZÓ	ÏÔNÓ	ÏÔ‡%Ó	ÏÔ£�Ó	ÏÔfÓÛÔ)Ó
˙ÔÏ�Ó
˙ÔØÓ
˙ÔrÓ
˙Ô5�ÓÛÔ¯Ó
˙Ôª�Ó
˙Ô~Ó
˙ÔA
Ó
˙Ô�Ó	ÏÔ
«Ó	ÏÔäÓ	ÏÔM�Ôh.Ó	ÏÓ"∫ÓEt��������l����	ÏL4∂Z<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// IfsScavDump.bcpl// Copyright Xerox Corporation 1979, 1980, 1981// Last modified June 2, 1981  2:50 PM by Taftget "Streams.d"get "IfsFiles.decl"get "BTree.decl"external[// outgoing proceduresDumpLPT; DumpTree// incoming proceduresGetLpteIfsName; GetLpteIfp; GetLpteDIFRec; GetLptFaOpenLPT; EnumerateLPT; CloseLPT; GetLptHome; GetLpteTypeOpenDisk; CloseDisk; Scratch; DirEntryLengthOpenFile; Closes; Resets; PutsWs; Wss; PutTemplate; ReadBlock; GetCurrentFaAllocate; CallSwat; TruePredicate; ZeroOpenFPTree; CloseIFSTree; MapTreeInitCmd; GetFile; ConfirmUNPACKDT; WRITEUDT// incoming staticssysZone; scratchDisk]static [ onlyDIFs; printTreeStructure; printFileIDs ]structure String [ length byte; char^1,1 byte ]// These routines dump the contents of Scavenger.lpt and Ifs.dir.// They are mostly useful for debugging the scavenger, but may be//  of use in getting an independant opinion on the contents of the//  system directory.IfsScavDump.bcpl11-Feb-84 21:56:37Page   1���Ó	ÏÔc8Ó	ÏÔa˚/Ó	ÏÔ`æ.Ó	ÏÔ^DÓ	ÏÔ]Ó	ÏÔ[ Ó	ÏÔYPÓ	ÏÔX�Ó	ÏÔV÷Ó	ÏÔUôÓ	ÏÔSÓ	ÏÔQ‚3Ó	ÏÔP•8Ó	ÏÔOh,Ó	ÏÔN+Ó	ÏÔLÓ-Ó	ÏÔK±'Ó	ÏÔJt!Ó	ÏÔI7Ó	ÏÔG˙Ó	ÏÔEÄÓ	ÏÔDCÓ	ÏÔC�Ó	ÏÔ@å5Ó	ÏÔ>/Ó	ÏÔ;òAÓ	ÏÔ:[AÓ	ÏÔ9CÓ	ÏÔ7·Ôh.Ó	ÏÓ"∫ÓEtˇ��������Œ����	Ï;‡-G-®�Ä����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//----------------------------------------------------------------------------let DumpLPT() be//----------------------------------------------------------------------------[if scratchDisk eq 0 then unless Scratch(nil) returnlet ok, list, lpt = true, 0, 0if ok then[lpt = OpenLPT("IfsScavenger.lpt", false)Resets(lpt)GetCurrentFa(lpt, GetLptFa(lpt))]if ok then[let cs = InitCmd(100, 5); if cs ne 0 then[Ws("*NWhat shall I call the output file on DP0? ")list = GetFile(cs, ksTypeWriteOnly, charItem)onlyDIFs = Confirm(cs, "*NDo you want just page usage info? ")printFileIDs = not onlyDIFsPuts(cs, $*N)Closes(cs)]if cs eq 0 then ok = false]if ok then[PrintHome(list, GetLptHome(lpt))EnumerateLPT(lpt, InterpretLPT, list)]if lpt ne 0 then CloseLPT(lpt, false)if list ne 0 then Closes(list)]//----------------------------------------------------------------------------and InterpretLPT(lpt, lpte, list) be//----------------------------------------------------------------------------if GetLpteType(lpte) eq dvTypeFile thenunless onlyDIFs & GetLpteDIFRec(lpte) eq 0 doPrintInfo(list, GetLpteIfsName(lpte), GetLpteIfp(lpte),GetLpteDIFRec(lpte))IfsScavDump.bcpl11-Feb-84 21:56:37Page   2���Ó	ÏÔa˚NÓ	ÏÔ`æÓ	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ]3Ó	ÏÔ[ Ó	ÏÔYP	ÓÛÔX�ÓÛÔV÷(ÓÛÔUô
ÓÛÔT\ÓÛÔS�Ó	ÏÔP•	ÓÛÔOh�ÓÛÔN+)Ó
˙ÔLÓ�Ó
˙ÔK±2Ó
˙ÔJt-Ó
˙ÔI7>Ó
˙ÔG˙Ó
˙ÔFΩÓ
˙ÔEÄ	Ó
˙ÔDC�ÓÛÔCÓÛÔA…�Ó	ÏÔ?O	ÓÛÔ>�ÓÛÔ<’ÓÛÔ;ò%ÓÛÔ:[�Ó	ÏÔ7·%Ó	ÏÔ6§Ó	ÏÔ5g�Ó	ÏÔ2ÌNÓ	ÏÔ1∞$Ó	ÏÔ0sNÓÛÔ/6'Ó
˙Ô-˘-ÓÔ,º7ÓÆÔ+Ôh.Ó	ÏÓ"∫ÓEtˇ��������ú����	Ï/~4∂:
�®������������������//----------------------------------------------------------------------------and DumpTree() be//----------------------------------------------------------------------------[let ok, disk, tree, list = true, 0, 0, 0disk = OpenDisk("*NWhich disk is it on? ")if disk eq 0 then ok = falseif ok then[let fp = vec lFP; Zero(fp, lFP)let ifsDir = OpenFile("Ifs.dir", ksTypeReadOnly, 0, 0,fp, 0, 0, 0, disk)test ifsDir ne 0ifso Closes(ifsDir)ifnot[Ws("*NI can't open *"Ifs.dir*"")ok = false]if ok thentree = OpenFPTree(fp, disk, CallSwat, DirEntryLength, false)]if ok then[let cs = InitCmd(200, 5); if cs ne 0 then[Ws("*NWhat shall I call the output file on DP0? ")list = GetFile(cs, ksTypeWriteOnly, charItem)onlyDIFs = Confirm(cs, "*NDo you want just page usage info? ")printTreeStructure = onlyDIFs? false,Confirm(cs,"*nShow the tree structure? ")printFileIDs = onlyDIFs? false,Confirm(cs,"*nShow the file IDs? ")Closes(cs)]if cs eq 0 then ok = false]if ok then[let home = OpenFile("Ifs.home", ksTypeReadOnly, 0, 0, 0, 0, 0, 0, disk)test home eq 0ifso[Ws("*NI can't open *"Ifs.home*"")ok = false]ifnot[let h = vec lenHometest ReadBlock(home, h, lenHome) eq lenHomeifso PrintHome(list, h)ifnot[Ws("*NMalformed home block")ok = false]Closes(home)]]if ok then MapTree(tree, 0, InterpretTree, list, TruePredicate, true)if list ne 0 then Closes(list)if tree ne 0 then CloseIFSTree(tree)if disk ne 0 then CloseDisk(disk, true)]//----------------------------------------------------------------------------and InterpretTree(dr, list, pathStk) = valof//----------------------------------------------------------------------------[unless onlyDIFs & dr>>DR.type ne drTypeDIF doIfsScavDump.bcpl11-Feb-84 21:56:37Page   3���Ó	ÏÔa˚NÓ	ÏÔ`æÓ	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ](Ó	ÏÔ[ *Ó	ÏÔZçÓ	ÏÔX	ÓÛÔV÷�ÓÛÔUôÓÛÔT\6Ó†ÔSÓÛÔQ‚Ó
˙ÔP•Ó
˙ÔOhÓÔN+�ÓÔLÓÓÔK±	ÓÔJt�ÓÛÔI7	Ó
˙ÔG˙<ÓÛÔFΩ�Ó	ÏÔDC	ÓÛÔC�ÓÛÔA…)Ó
˙Ô@å�Ó
˙Ô?O2Ó
˙Ô>-Ó
˙Ô<’>Ó
˙Ô;ò%ÓßÔ:[)Ó
˙Ô9ÓßÔ7·#Ó
˙Ô6§	Ó
˙Ô5g�ÓÛÔ4*ÓÛÔ2Ì�Ó	ÏÔ0s	ÓÛÔ/6�ÓÛÔ-˘GÓÛÔ,º
Ó
˙Ô+ÓÔ*B�ÓÔ)!ÓÔ'»	ÓÔ&ã�Ó
˙Ô%NÓÔ$�ÓÔ"‘ÓÔ!ó+ÓÔ ZÓÔÓÔ‡�ÓÔ£ÓÔf	ÓÔ)�ÓÔÏÓÔØ�ÓÛÔr�Ó	ÏÔ¯EÓ	ÏÔ~Ó	ÏÔA$Ó	ÏÔ'Ó	ÏÔ
«�Ó	ÏÔMNÓ	ÏÔ
,Ó	ÏÔ”NÓ	ÏÔñ�Ó	ÏÔY-Ôh.Ó	ÏÓ"∫ÓEtˇ��������®����	Ï
X4∂_0��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[if printTreeStructure then[let pse = lv pathStk>>PS.PSE^(pathStk>>PS.PathStkTop)let indentString = selecton pathStk>>PS.PathStkTop into[case 1:  ""case 2:  "   "case 3:  "      "default: "         "  // never happens]if pse>>PSE.Offset eq Rec1Offset thenPutTemplate(list, "$S[Page $OB, $OB words free]*n",indentString, pse>>PSE.PageNo,(dr - offset BTE.Record/16 - Rec1Offset)>>BTP.FreeWords)Wss(list, indentString)]PrintInfo(list, lv dr>>DR.pathName, lv dr>>DR.fp,(dr>>DR.type eq drTypeDIF? dr+dr>>DR.length-lenDIFRec, 0))]resultis true]IfsScavDump.bcpl11-Feb-84 21:56:37Page   4��ÓÛÔc8�ÓÛÔa˚Ó
˙Ô`æ�Ó
˙Ô_Å5Ó
˙Ô^D7ÓÔ]�ÓÔ[ 
ÓÔZç
ÓÔYPÓÔX&ÓÔV÷�Ó
˙ÔUô%ÓÔT\3ÓÆÔSÓÆÔQ‚8Ó
˙ÔP•Ó
˙ÔOh�ÓÛÔN+1Ó†ÔLÓ:ÓÛÔK±�Ó	ÏÔJtÓ	ÏÔI7�Ôh.Ó	ÏÓ"∫ÓEtˇ��������D����	ÏM6,öR�e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//----------------------------------------------------------------------------and PrintHome(stream, home) be//----------------------------------------------------------------------------[PutTemplate(stream, "*NFile system name *"$S*", ID *"$S*"",lv home>>Home.name, lv home>>Home.id)PutTemplate(stream, "*Ntype $S, num units $D, created ",selecton home>>Home.type into[case ifsTypePrimary: "primary"case ifsTypeBackup: "backup"default: "unknown"], home>>Home.numUnits)let utv = vec 10UNPACKDT(lv home>>Home.created, utv)WRITEUDT(stream, utv, true)Wss(stream, "*n*n")]//----------------------------------------------------------------------------and PrintInfo(stream, pathName, fp, difRec) be//----------------------------------------------------------------------------// I recommend an 8pt fixed pitch font when listing this output[test onlyDIFsifnot Wss(stream, pathName)ifso for i = 2 to pathName>>String.length-3 doPuts(stream, pathName>>String.char^i)if printFileIDs % onlyDIFs then[let padding = onlyDIFs? 20,45test pathName>>String.length gr paddingifso Wss(stream, "   ")ifnot for i = pathName>>String.length to padding do Puts(stream, $*S)]if printFileIDs thenPutTemplate(stream, "$EUO;$UO, un $UO vda $UO", lv fp>>IFP.serialNumber,fp>>IFP.version, @lv fp>>IFP.unit, fp>>IFP.page)if difRec ne 0 thenPutTemplate(stream, "  $5EUD pages used out of $5EUD",lv difRec>>DIFRec.diskPageUsage, lv difRec>>DIFRec.diskPageLimit)Puts(stream, $*N)]IfsScavDump.bcpl11-Feb-84 21:56:37Page   5���Ó	ÏÔa˚NÓ	ÏÔ`æÓ	ÏÔ_ÅNÓ	ÏÔ^D�Ó	ÏÔ];Ó
ôÔ[ %Ó	ÏÔZç8Ó
ôÔYPÓ†ÔX�Ó†ÔV÷Ó†ÔUôÓ†ÔT\Ó†ÔSÓ	ÏÔQ‚Ó	ÏÔP•$Ó	ÏÔOhÓ	ÏÔN+Ó	ÏÔLÓ�Ó	ÏÔJtNÓ	ÏÔI7.Ó	ÏÔG˙NÓ	ÏÔFΩ?Ó	ÏÔEÄ�Ó	ÏÔDCÓÛÔCÓÛÔA….Ó
˙Ô@å%Ó	ÏÔ>ÓÛÔ<’�ÓÛÔ;òÓÛÔ:['Ó
˙Ô9Ó
˙Ô7·EÓÛÔ6§�Ó	ÏÔ4*ÓÛÔ2ÌHÓ†Ô1∞0Ó	ÏÔ/6ÓÛÔ-˘6Ó†Ô,ºAÓ	ÏÔ*BÓ	ÏÔ)�Ôh.Ó	ÏÓ"∫ÓEtˇ��������–����	Ï-4∂<Ñ�∞������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GACHA]H˝�]G	*<----����������Í~geÎ-Ûï�Í~gëgåæÃ��÷æÿ������æ‹����÷Ω§������gåæÃ���÷æÿ÷����æ‹���ºººΩÄfflŒ„ºÉå8��ıÚˆΩ∂Ÿ9,Í~��ºΩÄ��ıÚ��ˆ|ˇˇÍ~����å8fœŸÒfi‡�gπ���å8ˆΩ∂ŸÄŸÍ~fifi���
fûΩÄ�ˇˇ�ıÚˆΩ∂Ÿ9,Í~ÄŸÍ~fifi��Ä¿gú~P��
hNf≤uËNˇˇ�ˇˇÄ¿��5/fÎ�.gπ���f¿*Ä f¿g�.Ä¿Í~g6��4Ç4Ü�Í~fŒÙ™¬fŒÍ~gggÄg5ÄÃ�	fÎf˜Í~fÂÛéÙé�Í~gΩ≥k�g�g�gg5���gA�å7���Í~gYÙiÚâ�Í~gÑgÄæÃ����÷æÿ÷��Ùåæ‹�������gg,���÷g,Û÷Í~gΩ≥kæÃ��÷��NÍ~gÄÙå��læ‹Û÷�������g��g������������������������������������������|�����Ó���	��≈�����<�����8�����˜�����î�����l��� ��Í���%��7���(��g���,��ƒ���2��»���7��Q���=��ÿ���B��Ω���H��á���J��À���P��…���U��|���Z�����_��£���d��>���i��`���k��ë���p��Ñ���u�����w��K���y��Õ���}��©���Ä��g���Ü��∞���å�����è��|���ì��À���ó��‰���ú��+���ü��ú���£�����ß��g���¨��4���Æ��™���≤�����¥�����∏�����º�� ���ø��∆���ƒ��ò���«��	��� ��ö���œ��x���—��g��’���:CÖ�=¯$˘ˆZ¯�	˜˝�Z"iW�*ö�Kˆ˜Z¯�˜:#:;‰J
:#˝PÂ�:C"iW�"i<j/�ÿ�5�÷�ˇˇúU√}����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������IfsScav1-2.bcplˇ˜IfsScav1-1.bcplˇˆIfsScavPass1.bcBoggs��������������������������11-Feb-84 21:56:37�����������������������������������������������������������������������������������������������������������������������������������������������������������»�ÿ�¸��������������������»Z¯�˜B!_∆�=^Z=\Z=[Z=ZZ=YZ=XZ=WZ=VZ9UZ¨PiS�
")QÊ9PÊ�ä�"
iM�B")HiI�"ÇêÉ�ä�"
iA�:C":C
":C":C":C":C"	:C"
:C":C"
:C%J:C%H:C%\:C%Z:C%X:C":C"9RÊ��#$'%&B���#AFBiL��ä�"iI�"9GÊ�≠êÒÄ�"9AÊ�≠PÒ�ˇ"ˆZ¯�	˜:#:+iW�:#*iR�ˆZ¯�
˜:;Z:Z"iU�ö�#*çJ
")NiN� !"�"É�:C:#*Ú9jÁ�ª}�ˆZ¯�	˜:;Z"i.�ö�#*çK¨≠�¢�ˆZ¯�˜:#9LÁÖPÇ¸�Z"*iT�ˆTZ¯�˜"9‘Ê�≠�ÒÄ�"9ŒÊ�)]Ò �ˆÅ
◊Z¯�
˜:#Ç@ÖpÇ
/:#:;Â")NiÌ�:#É�:C"9´Ê�≠�ÒÄ�:#:;‰J:#:C�@�"i–�B")UiU�:#:C�"iƒ�ÉˆZ¯�
˜B!U∆�˝�Z¨PiQ�"iO�"*iL�"*iI�ˆ �Z¯�˜"i\�ˆ
ÚZ¯�˜B:#9ƒÁÖPÇ:;Z"iç�*ö�K"9JÊ�)VÒ�ˇ"˝P‰J"Ç
":Cˆ�FZ¯�	˜"i+�Bih��ä�"ie�Ö��e.fˆZ¯�
˜":C:#É�B"9PÊ�*ç:#˝:C:#˛:C|!h:C":Cˆ�Z¯�	˜˝�Z"iZ�*ö�Kˆ�Z¯�˜:#:;‰J
:#˝PÂ�:C"iW�"i?�ö�#�:C:#Ç
ÑÖ�*9—Ó�Ç¿ÕÄ�Ö�:Cˆª}ˇ˝Z¯�˜B!Ü∆�˝�Z9 Z
˝�Z9[Z¨�ié�:#:Â�ä�"Ô�9OÊ�B	:Z"˝PÂ:	#�Å:	#˝PZä�"iZ�:Z
:Z9UZ"*iR�ˆÄZ¯�˜B!J∆�˝�Z9çZ
˝�Z9Z¨�iS�:#:Â�:C"9KÊ�*Ò�ˇ":C"9BÊ�)NÒ@�"i◊�ˆ�	�Z¯�˜"i∏�B:;Z"Ç
":#Ç:#9KÁÖPÇ
"iF�˝�ZÑ�
√�"i=�"9;Ê�:Zä�"i6�:#˝PÂ�:Cœ�ˆZ¯�˜":+Ô�9ΩÊ�ˆ@�Z¯�	˜:;Z"i�ö�#*Û9Ô�¢�ˆZ¯�˜:#ˆ�1c�¬Å��-�!�â�õ �ƒ�÷"�È|�˝ø;eTf]aÖ}õ~æcï√5ÄbÅõd®Ç∫»Z¯�˜B!_∆�=^Z=\Z=[Z=ZZ=YZ=XZ=WZ=VZ9UZ¨PiS�
")QÊ9PÊ�ä�"
iM�B")HiI�"ÇêÉ�ä�"
iA�:C":C
":C":C":C":C"	:C"
:C":C"
:C%J:C%H:C%\:C%Z:C%X:C":C"9RÊ��#$'%&B���#AFBiL��ä�"iI�"9GÊ�≠êÒÄ�"9AÊ�≠PÒ�ˇ"ˆZ¯�	˜:#:+iW�:#*iR�ˆZ¯�
˜:;Z:Z"iU�ö�#*çJ
")NiN� !"�"É�:C:#*Ú9jÁ�ª}�ˆZ¯�	˜:;Z"i.�ö�#*çK¨≠�¢�ˆZ¯�˜:#9LÁÖPÇ¸�Z"*iT�ˆTZ¯�˜"9‘Ê�≠�ÒÄ�"9ŒÊ�)]Ò �ˆÅ
◊Z¯��?�Ob��������������������lZ¯�˜B!R∆�B"ÇÖ�*iK�:Z!H∆�B	:	Z:#ia�9`Zä�"i]�!\*	ˇ�	$2D-$S-$2F0D $2D:$2F0D:$2F0D�‚�:;Z
:	ZB:#�)BÂB:;Z:;Z:;Z9QZ"*iN�"9LÂJK:˙
HI�ä�	 $C$CT�‚�	AECMPYHÍ�B:#9aÁê¬90Â�ÛJ
:#Ç@Öp:ZÇ
	õ�¶�!N�d!LB9Z"*i�e:#Ç@ÖpÇ	 GMT�‚�ä�"iY�U�
›�Ì�{Ì�Y:#9'Áê¬B
:#9HÁÖPÇ
"
�B
:#Ç@ÖpÇ
"
˝PÂ�B
	 $C$2F0D�‚�:ZB
"
ÇK!6¿�D�S!2B"
Å�ä�"
i,�B9*Z"*
i¿�:#9#Á�Ç
	:$2F0D�‚�:+9Ô�Ì�*.�Jä�"i¶�"!:#9Á��-�+´��?ˇÈ�	�ˇÉġQ@ˇO�ˇM¿ˇKġI@ˇG�ˇE��ˇsâˆZ¯�˜!„∆�B"*i@�"*i=�ˆZ¯�˜")6„%5¶�ˆZ¯�
˜:#�9-Á¿9,ÂKÑ�"˝�Z%":Ê�ä�"i �B"Ç
"¸PÂ")‰¢�"9Ê�B"9
‰JÂÑ�ˆä&�ˡ��¥�7”Z¯�˜!a∆�≠�i_�Ö�:C"9XÊ�*Òˇ!U∆�B
"Ç"
iO�9MZ"
*iJ�:
Z"
)FiF�:C!R∆�B!P:C�!N:	Â�:C"
*iH�:
Z"
)/i/�:C˝�ZD!]∆�B
:
Z"
)2i!�:CÖ�:C�:
#9NÊ�:C:Z")Hi�*9Ó�Ç¿”p�	�†�È�¶�<ò:
Z"
)[i˚�B:Z"9UÂJ!(��  ©"9LÊ�)K‰¢�Ì�X*é�J:
#ÇPÇP9VÊ�B")S‰"¶�:C�")LÂB˝�Z���"É�B"=Tû�#*çK˜":C"=Jû�#�*ç�´�:K9ØZ"*ib�Ç
	˝PZ"*iZ�Ç
µÇ2m"9ïÊ�≠êÒÄ�	���‚�ä�"
i§�"É�B"˝P‰JK"inˆZ¯�˜B"9≥ÂK˝�Z!Z∆�B
:˙
"öÖ�ä�"
iN�:#�9K�B:;Z
:;Z:;Z:;Z:;Z"ÇJ"9HÂJÖPEü"9MÁ�B"
ÇJ"
9GÂJ!d7Ìˇ"˝PÂJ"
=«û�#*
=√æ�+�•�*åK
"
˝PÂ"9LÂ
"9&Â
!#�†m"ÇJ"9iÂJ!g"ÇJ"9bÂJ!`�àÌ�ô"ÇJ"9VÂJ!Uˆ��"9MÊ�)K‰!M„"J)J„"¶�*
=Xæ�+�¶�:Ê�B"9ËÂ
	"
9ÂJ!��ÖP*ç�JÖ�:C�"9‘Ê�:C![∆�B:Z")ViV�*9Ó�Ç¿”p�":C:Z")
iH�:Z")iB����<��µm!K:C�"9HÂ�:C:˙
	:#Ç@ÖpÇ
ö9∏Z"*iR�Ç
9∞Z"*	iJ�Ç:#9÷Â�:C"*iE�:Z")Ài�Ö���òôˆZ¯�˜!H∆�B"*ig�:#9dÁ¿ƒˇfl ˆZ¯�˜:#=æû�#�:;Ê�B:#9NÁ¿ƒB"9õÂ�*çKÖ�!ü":‰JÑ�©"9ãÂ:#:ÂKÑÖ�":Â�*9_Ì�§KÑÖ��
ˆZ¯�
˜%Q9QÂKÖ�)NiN�!M˝�û�#�Ç
!G˝Pû�#�Ç!]:C�![:Cäp�!V:C&%49RÁ�:C�%O9MÁ�:C%*Ç@Öp*9GÓ�Ç¿◊�%!9BÁ¿∆*9=Ó�œ¿%89:Á¿Çê*94Ó��?"Ç
:#9.Á�:C�—�TEx:#9"Áê¬) „:#9Á�é�:K:#9ÁÖPÇ
:#Å�:Cˆ�y1�ˇy�x�~�ˇ¿�<�?��	&�öõ+ú5ämùVûlüĆΩ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������´�ªŒ�»��������������������´Z¯�˜"¨�iW�"iU�:;$ÂJ"¨�iN�:Z:;+Z"iE�B	:;.Z
9^Z"*i[�"*iX�ˆZ¯�˜B"i.�B:#$:ÂK"*iF�":;.Â
:#$:;.Â;:#Ä7"iW�Ç
2˝PZ:Z	˝�Z
"iL�Ç
%lZû}%hB9fZ"	*
ic�":;.Â
¸�Z=XZ9WZ"≠�iT�"*i�&�|√1"i!�Ç
"9ZÂJ:˙˝�Z=8Z˝�Z
˝�Z:;$Z91Z"≠�i.�"*i‡�ˆüZ¯�˜:#Ä':# :;Â
:#!:;#Â:#":;$Â
:#:C :##:C!NP�0:#$:C"Ñ�:C'ˆZ¯�	˜:#
9CÂ
")QiQ�ˆ�Z¯�
˜:Z
=flZ9FZ"*iC�ˆZ¯�˜B"9dÂK=ŒZ"=ÀÂ
ÑÖ�B	"iY�:#/˝PÂ�B
:#.ÇêB"iN�˝PÁ�Ç
")HiH�˝�ZN":Â�B
"i;�ÇêB:	˙

:#$É�Çê≥E�ÿ":Â�B"*
ie�B":Ê�ÇP*	®�Jä�"iZ�"	Ç
#:#+:Ê�:Zä�"iN�:#$:;.Â
�2û±◊"iQ�Ç
":Ê�MÌ�B:#,˝PÂ"id�:#+:Ê�:Z*i%�"¨�iX�"
:Â�Ç
:Z":�*
:Ì�B¢�*
ÁB:Z9CZ"*iM�*
ʨ1¶*é�J":Ê�B":Ê�B":Âf"ÿÌ�ˆZ¯�$˜B"i†�!Y∆�˝�Z˝PZ=TZ˝�Z9QZ˝�Z9NZ≠PiL�"=JÂ†�"	9iÂ
"if�Ç
"ib�	0:##Ç
Ö�:C%˝�Z:#.ÇêB
:;#Z:;+Z"Ç
"iV�:;.Â
˝PZ":
Â�B"É�B"ië�"Ä
ÑÖ�	Ìˇ�N÷�PB:˙
"˝PÂ�B˝�Z":Ê�B"9ZÊ�B"9VÊ�B!•∆�)RŒ�Jä�%≠iN�"˝PÂ�*ç�J÷üZ"˝PÂ�*ç�J"˝PÂ�B"É�Bû"Ç"	":Â�*
„"¶�*:æ�C�ÑP*:æ�C�"É�B":‰J‰"*:æ�C�"Ç
"*:æ�C�:Z:˙
"��p"˝PÂ�*é�"9hÊ�9ÙZö�¢�Í�ib�:Z"9^Ê�B:Z:Z:	Z"9UÊ�B:
Z˝�Z˝�Z"9LÊ�B :Z!:;!Z"9]Z:#-*�B:˙

":Â�*:Ì�iM�ÅKÑ�K:#$Ç"*
if�":Â
":û�#�:
Zä�"i�":C#"9Ê�*˝PÌ�B"¶�9ïZä�"i��¶��$�("ie�˝�Z:;$Z9_Z"*i\�"≠�iY�":Â�:Â��®Ì�ˆZ¯�
˜B":+.iÙ�ÅK")`i`�:Z	:Z
"9ZÂJÑÖ�*‡B"	*
iR�FˆZ¯�˜B"˝PÂ˝�Z˝�Z:#ÄF:#,˝PÂÑÖ�B	"93ÂJ"	Ç˝�Z"iG�B
(�|†"
:;$‰J"	Ç
	"i7�Ç
"
:C$":;$‰J:˙

":C$"¨�i‚�
≤◊�1:;$Z¸�Z"i“�"≠�i�:Z:;$Z
9
Z":++iƒ�"ˆûü}�	�	�Z�+(�•2�‘Y�„ÿ�Ú0∑%1>´Z¯�˜"¨�iW�"iU�:;$ÂJ"¨�iN�:Z:;+Z"iE�B	:;.Z
9^Z"*i[�"*iX�ˆZ¯�˜B"i.��	j�	z	è�c��������������������Z¯�E˜	��������������������‚�B%R9RÂK!P)NiO�!N∆�B")KiK�!J:C�Ö�:C!E:CÖ�:C"9?Ê�9>Z*iX�=WZ	=V]T:	]S˝�]R=R]R%R=RC�	?˛ 8<x‡¿‡∞òÃ3Ê'Ú?˛��‚�9?Zä�!]i3�%[9[Á¿ƒ9YÂ
;˝�Z
4—��4��)F(����
%I9I�*
™P¶�B:#�9iÁ�9hÂ:#97Á¿ƒ9aÂ"É�≠êÒ�
¶x8';¥Y“�"
�B
"
9L‰J’%¨�ig�B
"
Ç
!*
i¬�:;Z:#�=XC�˝PZ:;�Z
”��‘�"ÇP˝PÂ�:û�#�*=Bæ�C�"É�B":
‰JÔ%8:C%5=4;�Ê�É�@›:#:C:#:C%E9EÂ���	�ˇB:;+]=:;.]?:;?]=:;A]>:;D]<!<:û�#�E<!?:û�#�EC!C:û�#�’ECÖ�:C˝�Z
˝�ZE:#�9DÁê∆˝PÂ[¸�Z˝PZ:#�9≈Á�˝PÂ�BQ÷�ëW◊"Ä�BMGÿ:]KSI�ú:Z
yŸ:Zu�õ:˙Ö�:Cm⁄�¨%=9=Ê�E:f€":û�#�95Â�:C\Ì�jˇ	Unknown switch /$C, ignored.
‚�*:æ�+�Jä�%i�>Ì�EÌ�?Ì�Ì�8Ì�3":û�#�‹�d�0'›Ë�f�ˇªˇÃˇ¢ˇ ˇ…ˇ•Ë�F�ˇ≤ˇ√ˇôˇ¡ˇ¿ˇúË�4�ˇØˇÆˇ≠ˇ¨ˇ∑ˇ∂ˇµˇÖÈ��xˇï�sˇè�Xˇë�Sˇã©¸�Z"É�B":‰JW:#�9VÁ�*é�J:#�ÇO%P9PÁ¿ƒ9NÂ
Ö�:CiI��!H∆�BÖ�:C�:]a ›9`Ê�9_Á�:C:#:;�Ê�@›=VZ:;Z:;�Z:
˙
%KÖ�B9GZ"*i`�E_8›Z":;Ê�@›=8Z:Z:;Z:
˙

%.
Ìˇ�Ì˛˛”��k�CÖ�B9_Z"*i9�EZ%Y)YiY�EX%W9WÊ�EVÖ�=TC�%P9RÊ�E:#�=C�*ˇ¸�E�:#=˘C%B==C�%V=:C9TZ%*i3�EO:Z%L¨�iK�%+)Ii(�=,ED9BZ%A*i\�%=9ZÊ�9YZ*iT�%)i�EQÖ�=OC�iN��=KZ%‰)Ji�
�-�AB�+�6=JZ);iH�ä�"iE�:˙
=#=Z�=C=	;]T
7�@)7�)Õ=ˇ#=˝C˝�]G=G;�]F%F=CC�=D]DiD��%œiB�EA%fif�˝�Z=;Z¶�	�fi�9ZZ%ª¨�iW�ERÖP-TiT�ˆÜflÖZ¯�
˜iK��˝�ZiH��*ö�K�8›ZiS��9RÂ�9QÁ�@›=∏#Ç

ÃjÀœ$<‡Ÿ…=™;Z%^*i]�"=¢;Ê�B=û#Ç
=ö;Z%P*iM�"=í;Ê�B ›:Â�B%A*iB�	<⁄�·‚ª˝�]a%a)aÊB¸�Z%]*i\�B"Ç
	∫�¸�"9äÂ�BÓ!N=NC%L9LÊ�:Z
:Z9GZä�%“ij�%<*ig�if��=9#ic�ˆ,x-ŒZ¯�˜iY��=*#=(;Â�B%=#+i�=;˙
=#=;Â�B%·=+i·�i`��i_��E^%)]i�
32�
BA�2Õ�	�EQ9OZ%N-NiN�9MZ%¿)ùi�9öZä�"ic�=>C�=<#�)^i^�	
IfsScavenger.log�‚�„T‰ÂÊ˝PZ)HiI�=!C=#Ç	
IfsScavenger.log�‚�ä�!OiO�%N=;C%K=C	–Á �'=7�=`Z%_)_i¢�=]Z)Zi[�ä�"iX�8›ZiU��9TÂ�@› ›:Â�B%G*iL�˚�G	��������s∆"	"#Ü""	r��ˇ������‚�9bZä�!`i`�ˆ�4?>Z¯�˜":Ê�B"9QÊ�˝PÂ�9NÁ�B"9JÁ�B	"	˝PÂ�ä�"iR�")PÁB

,�flÖ∫�dŒ"	)BÁ˝PÂ�BÖ�*
=cæ�C�%aÉ�E_"
�B
"
:‰JÚ%WÇPÇP9U‰J!Si∑�":Â�9!ÂJ":Â�B"*iE��¶�¸�":	Â�9
ÂJ	":	Â�B"*	i1�ˆ>�
Z¯�˜=n#�im�=j#ii�%h=hÂ
%dÇ
%a¨�ia�%`Ç
%]i[�%XiX�Ö�EWiW��%V=VC�)2��xˆZ¯�˜	>yxJanuary��February�March����April����May������June�����July�����August���	SeptemberOctober��November�December�‚�'1	<;
˙Àji�É�EˆÈËZ¯�˜˝�Z0"=?û�#Ç
'"=9û�#˝PÂ�ÇPÇP-^é�J:#Ç:Z"iU�=TÂ�-SÊ=R;�Ê�.�ä�"iL�"9JÊ�iI�"É�B"9D‰JŒiB��=+ic�B"˝P‰KÖ�\Õ!\-\ÁE["˝PÂ�-W„MV%ViV�=Ú#¸PÁ�B=Ì;Z":Â�˝PÂ�-CÁÉ�B%Vi
�=Â�B":Ê�=8‰KLYjUTQi�n�	7"-(ÂB	"-$‰´�J
"	:Ê�=‰J˝�Z	"
�B
"	-ÊB":Â�Eh"-ÊB"
ÇPÇP
™Ì˛�SWV6hB9VZ"*iS�=RZ=î;Z
˝PZ:
;�Z:ZÌ�‡":
û�#�B&:ú+=c;Z"9≠Ê�=]C"
9[Ê�:C�&=*Ê�:C&=R;�Â"=MC�"=KC�&=G;Â"=BC"=@C"F"É�B":‰J«˝�Z=^#˝PÂ�X�c`B"=Rû�#B%O:C�%M:C%K:C	%I:C
%G:C"É�B":‰JÊ%\=\C�%[=YC%Y=CÕh-,=˛#Ç
%M=˘C%J=˜C=ı#Ç
%C=C=;Z%>:C�%A:C%?:C%=:C%;=PC�%O=MC%M=JC8∆ˆæø¿%D=@C%B==C=@;Z%M:C�%K:C%I:C%G:C%E:C%C:C=I]I6B7Eq=C]C=bZrstO:#:Â%W:C"9TÊ�B"=QÂÒÑ�=èCÑ�9KMNLQˆZ¯�˜"=aÂ�)`‰´�J˝�Zfabdce"=Sû�#:Âˆ<ä;¥"É�B"9E‰JÓ"iB�=TÂ�B"iQ�B":Ê�=L‰KK"-KÂB"-G‰ã`�å´�J	"-KÊB
":Ê�=7‰J!IiI�"->Êä�%Åil�B%$:Ê�:Z*id�"9bÊ�Y�Õ�	j:;Ê�B:#ˇÇP*é�9ÕÌ�J
"9…Ê�B:
Z7UkVÌÖW:;�Z:;Z"9∂Â�B:ZS":;ù�34:#�:C:#:C":C�":C"¸PÊ�B":ÂK„"9êÊ�B":‰JÕ:Z:Z:Z:Z:
ZcAl�"9`Ê�:;Ê�B:#�9YÂ@:#9UÂ;:#9QÂ6":ù"˝PÂ�:;ˇÊ�B":ù':Z˝PZ"É�B:#�93Â:#9/Â	:#9+Â"É�B:#�9XÂ"˝PÂ�B"Ç‡":ú":ú":ú":ú!Eif�Ì�/�Z¯˜&:;�Z:;Z"9VÊ�B:Z:Z
:#˛:C�:#ˇ:C"¸PÊ�B":ÂKÒ":C˛":Cˇ"97Ê�B":‰JL=M;Z:Z7ˆ˝PZ:;�Z(�2":û�#�:+�ç"9Â�B:;�Z:#�:C�":C�:;Z:#:C":C4�"É�B":‰J◊"9˜Ê�B":ú»":Â�Çê:Cˇ:Z:
Z1Ìˇ!Õ:;�Z"
9]Ê�:;Ê�B&=WÂ�-V=TÌ�iT�ÇK>Z=Ë;Z"9«Ê�=‚C"F"	9PÊ�:C�":C"9∏Ê�B":‰J–:#Ç
"˝PÂ�:Â�:+é�"˝PÂ�J*
9†Ó�B"˝PÂ�ç�J"*iQ�"-OÊB"	ÇPÇPB9IZ"
*iF�%E*iD�ˆ�[\®Z¯�˜%W9WÁ¿ƒ9UÂ
Ö�Wh9RZ%Q¸PÁ�EN˝PZ79KZ"≠�iI�"≠�iF�B9DZ"≠�i>�"≠�i;�B"94Â"94Â

:Z¶S�cBT9)Z"ÇPÇPB9$ZÖ�≠�iÛ�"É�B"9‰J«%¸PÁ�E%≠P‡E	"	”��Ì��+™™ˆbaUU˛��*�=Z¯�˜BÖ�:C�"9/ÂK˝�Z"9*Ê�:Ê�:C":Ê�9 Â�B	Ö�:	C�":	C"	:C"	Å�Ä�:;Â�ÇK")
i
�"	Å�Ä�:	Cˇ"ˆ��
åE�
�ŒWŒœå–∫Ê6∑7√fl	.�=Z¯�˜BÖ�:C�"9/ÂK˝�Z"9*Ê�:Ê�:C":Ê�9 Â�B	Ö�:	C�":	C"	:C"	Å�Ä�:;Â�ÇK")
i
�"	Å�Ä�:	Cˇ"ˆ��
åE=+ic�B"˝P‰KÖ�\Õ!\-\ÁE["˝PÂ�-W„MV%ViV�=Ú#¸PÁ�B=Ì;Z":Â�˝PÂ�-CÁÉ�B%Vi
�=Â�B":Ê�=8˜Ÿ�WZ¯�˜B:#(Ç
"iB�:#**i>�"˝P‰J:˙:#*i4�:#)*i0�Ö�ˆZ¯�˜:#(Ç
 :;*Z"*i�˝PZ"*i�B9Z":+i�¸�Z"*i�"*i�ˆ¯¯
¯˜y¯¯�˜„¯¯	ZB)\	+⁄�1`b�Ú�:#¶�C:ZB)I	":Zö�bEE!Hè�MC#�E<+M;Ö�⁄�1>bM8-4bM4Ú�:ZÖ�bÇBb9&Á˝1¸�b�Y I:%C�%Cb=‰�9Ô�=bÌÉ�9‰b�i{:˛™P™P™P™PÓ�� �˝Îz{|}~�ˡ¿ê��ıZ¯�	˜>Z"ÇÑ�"9YÁÖP:+„"9SÁê»é�:#„"9LÁÖPé�:#„"9OÁ¿ƒé�¢�ˆZ¯�˜	Z*⁄�í�Ö0b�Ú�J:‚�BÖ�:C�"��¸���������������������Z¯�˜B!>∆�˝PZ=;Z9:Z¨�iX�"É�B"*„9QÓ�"iO�B	%M:	C�%K:	C%I:	C%G:	C%E:	C":	CÖ�:	C":	C":	C=I]I=I]I=I]I=I]I=I]I"	�B�ˆZ¯�˜:;Z	=fZ
9eZ"*ib�Ä�B"ÇK")[i[�:#:;Â	�	A'()*+")JiH�"*in�B":+ih�˝PÂ�Bƒ)≈è∆é«æ»b":;Ê�.B
N
"˝PÂ�B":Â�ÇKÒ:#É�:C":+iZ�˝�Z:;Z
9æZ"≠�iP�:C�"É�,�ê	E
ˆZ¯�
˜:;Z	=ÚZ
9ÒZ"*iÓ�B"ÇK")/iË�"*i�B:#:+�i$�:#˝PÂ�ë:C":;Â
":;�:+:�B
:#„J"*
i�ˆFÈT¶�˙Z¯�˜B"9NÂK!L∆�B:;Z=TZ9SZ"*iP�B"ÇJ""Ä�B	"*	i\�B
"
É�B"ÇK$"	:;ÂK	":
+�iX�¸PÂ
Ö�FÖ�"	É�:;ÂK
"	É�B"*i�¸PÂ˝�Z:
#�F"��ˆZ¯�˜˝�Z:#˝PÂ�B,�ê"*i�B	"	É�:	;�Z
:Z9UZ*�"É�B":‰JÈˆëZ¯�
˜˝�Z:#˝PÂ�B¥:;Z"*iÌ�ö�#�ä�"iR�"É�B":‰JÌ:#*iF�ˆZ¯�	˜"9LÊ�*B:#„"¶�ˆZ¯�
˜:Z"*i¡�ö�#�ä�"i»�ˆ�
Z¯�˜˝�Z"˝PÂ�B	"	:ÂK"Ä�":	Ê�ÇêB
:
Z"*�B"Ç"
T"ÇK"
˝PÂ�B	"
É�B‹ˆ�	�	(�'�H(�º)*Z+Éë™,πêÀ�˙Z¯�˜B"9NÂK!L∆�B:;Z=TZ9SZ"*iP�B"ÇJ""Ä�B	"*	i\�B
"
É�B"ÇK$"	:;ÂK	":
+�iX�¸PÂ
Ö�FÖ�"	É�:;ÂK
"	É�B"*i�¸PÂ˝�Z:
#�F"��ˆZ¯�˜˝�Z:#˝PÂ�B,�ê"*i�B	"	É�:	;�Z
:Z9UZ*�"É�B":‰JÈˆëZ¯�
˜˝�Z:#˝PÂ�B¥:;Z"*iÌ�ö�#�ä�"iR�"É�B":‰JÌ:#*iF�ˆZ¯�	˜"9LÊ�*B:#„"¶�ˆZ¯�
˜:Z"*i¡�ö�#�ä�"i»�ˆ�
Z¯�˜˝�Z"˝PÂ�B	"	:ÂK"Ä�":	Ê�ÇêB
:
Z���.
��������������������6Z¯�˜˝PZ:#�9fÁ¿B"*Úä�"i^�"É�B":‰JÛˆZ¯�	˜%Q*iP�ˆZ¯�	˜"iI�%E)NiB�ˆZ¯�"˜B!Z∆�˝PZ9WZ
9VZ¨PiT�!S∆�B	˝�Z
"ÇK"Å�B"ÇK
"Å�B¸�Z
"˝PÂ�B˝�Z	Z⁄�3+Ö0b�KÚ�:‚�B��*:	æ�C�ˇ�0'.%"É�B"Ç·
�
")HiÚ�"˝PÂ�B":‰Kı:
˙
")Ti„��ˇˆ�	�"˝PÂ�B":	û�#�)Dé�"i–�"ÇÒˆZ¯�˜9XZ	9‰Z
9TZ"*iQ�ˆZ¯�	˜%∏*iI�ˆZ¯�˜˝�]Oˆ� Z¯�˜!I∆�9GÂ�B8›Z":Ê�É�B"9TÊ�*iR�ÇJÖ��-�0":C�"@›"É�ˆZ¯�
˜"˝PÂ�B":;�Ê�É�8›Â"@›=Z˝�]
�¡ï:Z:;Z"É�i)�"Çıˆì�%˛:C:]˙ˆZ¯�˜!ı∆�9ÛÂ�B"8›Â�9Â�9⁄Â��d®ˆZ¯�˜"@›ˆÀZ¯�"˜B!Q∆�*9OÌ�Jä�"iK�B˝PZ:#�9EÁ¿B"*Úä�"iF�"É�B":‰JÛˆZ¯�˜!?∆�B˝�Z
iK��iJ�B"9GÂFiC��B"9@Â"*iI�Ï"
:ÂJ")BiB�˝�Z¸�Z	˝�Z
9KZJ��ˇ�")O„:Ó�9LÌ�JJæ˝�Z	F¸�Z
C�i��B>:	˙
"
:û�#�ä�"iP�#∫¿�$Ì�Æ"
:û�#�B˝PZ:;�Z0¸E":û�#�ä�"i˜�"É�B":‰JÚO� Ì�N"
:û�#�ä�"i‰�C�
�0Ì�x9¸Z"
:û�#�:Zä�"i8�o96Z"
:û�#�:Zä�"i+�b.9éZ"
:û�#�:Zä�"i�T"
:û�#*
:æ�+�Jä�"�"
�B
C")
i§�:Ì�<"�˝Ë�u�ˇnˇˇwˇÓˇÌˇ€ˇøË�f�ˇkˇfˇ¨ˇûˇ≈Ë�U�ˇ\ˇfiˇeˇ‹ˇ€ˇ…ˇ≠Ë�F�ˇYˇTˇöˇåˇ≥Ë�9�
ˇ@ˇ?ˇ>ˇ=ˇ<ˇ;ˇ:ˇ9ˇ8ˇ7√il��Bj"
�B
"*ie�dˆZ¯�2˜:;Z
:;˙
:;�Z:;Z:;Z"ÇJÑÖ�*è�J	:Z:;Z"ÇJÑÖ�*è�J	:	Z!Y∆�B:	˙
		"*©ÄÅ�BJ‚�B��"
˝PÂ�B
˝�Z	Z⁄�í�+Ö0b�K+b�KÚ�:‚�B
:#�
�*:æ�C�¿Ì˛¬0Ì˛ö"É�B"Ç⁄"Ç◊
":+i�"
˝PÂ�B
"
:‰KÙ:	˙
")i·��"˝PÂ�B":û�#�)
é�"i“�"ÇÒˆ�-�0�.�%�î�%¡�1ï�¶ñ�µó�æ�∆�Î
ò.›7^jÀZ¯�"˜B!Q∆�*9OÌ�Jä�"iK�B˝PZ:#�9EÁ¿B"*Úä�"iF�"É�B":‰JÛˆZ¯�˜!?∆�B˝�Z
iK��iJ�B"9GÂFiC��B"9@Â"*iI�Ï"
:ÂJ")BiB�˝�Z¸�Z	˝�Z
9KZJ��ˇ�")O„:Ó�9LÌ�JJæ˝�Z	F¸�Z
C�i��B>:	˙
"
:û�#�ä�"iP�#∫¿�$Ì�Æ"
:û�#�B˝PZ:;�Z0¸E":û�#�ä�"i˜�"É�B":‰JÚO� Ì�N"
:û�#�ä�"i‰�C�
�0Ì�x9¸Z"
:û�#�:Zä�"i8�o96Z"
:û�#�:Zä�"i+�b.9éZ"
:û�#�:ZA7X˘:@���vÉv~vHz�����@v~ÆáÙ+’vH��Ä�������˘PÆáÙQvHu∑���ˇˇ˘�
��˘5�����h,R.���6˙���µifssch,2-¯5¯F.��.�vH¯¿����
h,fs¯B¯V;s¯E¯VvH¯°¯í˘
¯ø¥¯o+’Ih,¯Å¯R¯o:W���vH¯íkY�¯°�¯í�¯í¯ø���¯À�.���h,�¯k¯Â;2fs�vH˘˘
lr����÷l~÷��;Ulǡˇ�����¯í¯∂���÷¯∂:üvH¯°kYlr��÷Sc�NvH˘
;U��lÇ:ü�������¯ü��¯°��������������������������������������¯í����������������h,��¯º¯Ì+��#„«¯ˇ˘���¯≈¯⁄¯Àh,��lZkYh,�¯Œ¯„����h,lZkY���Eˇˇ��lZly�$lZh,��¯fl˘Â���lZ���]��÷��������kY���˘
˘�˘lw˘���E�÷l~������lÇ���!ÅˇˇˇˇkYkYkYkY!Åh,h,˘˘˘1HÅkY˘P��∞ÆˇˇitvH��kYlZ��∞��\ˇˇvHh,˘*h,ˆ˘-˘ÉM„^��ȵ��@˘PÆh,Q˘:˘M�����X�¯�h,A7˘C˘`áÙ��h,X�������M�X
X
_W_RHM_Savengeh,h,˘[˘\˘p!�X�¯�_S�˘f˘É��h,h,˘l˘ÉÍò�X��	˘�¯��>�=�áèt˙˘èh,��˘˘èÍ)È»��áÒ%A
à�h�!
˘����
∂ˇˇ��˘ñ˘óˆY˝“��d˘†˙˘À˘À�@�l�o�a�d�i�f�s�s�
��i�f�s�s�c�a�v�e�n�g�e�r�
�q�
�i�f�s�s�c�a�v�e�n�g�e�r�/�f�f�f�
�������������������������������������������������������������������������������������������������������������������������������������������������
Boggse��������������
�����������������������
qv≠0I˛��%%E$9˘˙¯1eÖ0Ae9e˙
#)ß�A!_¶�A	Ú�	MÍ�!ii9T+9Ω�’PÕ�%≈�bL˝È˝Í˝€˝fi˘�˙�ˇ�HP�˙s˙a����HP˙i˙k¯�������q ��a ���������{���HP˙{˙}ä�������a q Q ����˘����{��˙L¸Õ˙î�!—)—•�AŒ)Ãç�ç
%«�@¸m����������{∂¡…Â��˙•ã����˙�˘õ�˘^�¯)�ˆ›�æ�È^�Êÿ�›Å�€˙�	÷X�
‘T�ÕÁ�…„L�ˇˇ�����l���T���î���®��������������������������������˝«	Ç�������√��Ú�i˜����������������������������������������������������Ø*+Q˝˚���U]b’1‘�U[1ÙBpJqZsÖpBt:¨�æ�]N#�)P•ã´5‰!‰Aü)‰ù∂)fl"ù˙?Ñ�*ÔM68AjÖ0	.�	%ÕÇ˛É`b	 =»K!Ê�i˝ÊÇ
X-æ!Ó¶�i˝Áb5ÖPi˝⁄5±	
UØÑ�	�=Æ#í2%ß≠0M•bb�E¢�1û“�¿√ƒ«	:˙;�"Ê�*®%/A.´˝*	0%*-Ë´�MËE„%ÂÇ‡%‚*	Ç
)B9IY“*�I
%”E9”#ÇÄ#˝+˛3ˇ;�ˇˇb˛@)	Î��@æ��A!I!Y!ÖpA 9 %%)"ß�)AÇ
™
%`	ÇZ)™
9≠`Ç[9Yi˝Î!	ÇÄ!)9��_[ˇ˝��b�����˛˛Y		T������¸����lí�"�C"C"C"C�Í�’0ÒZ'';�Â�ÌZ'˝PÂ�>'Ï�b´�:'HX�Ø˚B���Ï�Ì�
˝ÌY˙Q¯I˘	–U	TÚ�!i2%3	Q!jBi.!g	L	JÖ0%∆"�)Èé�	BÚ�![i %·A‹Ç
!fi)€	ÕˇÌ	7Ö0)P	»ˇË	¡ˇˇˇ»	æˇ˝ˇ‹	ªˇ¯ˇÄ	)"�EÃ!ƒÇ
ÉP1¬9¬˝È˝Í˝»¸˝0YπIªb�	ëUj	Ú�!.iÛÖP	"�)≥¶�))	†ˇ¯®˝Q�]©!ß)®	òˇÌ�Ö0Z'9Â�:�C	W	MMi	P'�Â�Ï����	
Ú�!)		`!Bài˝˛HP��¸}¸è¸è��HX¸Ö¸á¸��������®®∞§����¸����l����HX¸ó¸ô˝�������®���®���������l��¸˝¸»^Z):�#)œ¶�)å))˝ˇ"�*J�B�Z(˝0Z&iZ(:�#
+	:C	KÖ0C�CC
C
+:C^�(	Í'QˇÓ�ˇZ'J))BB9qZ(fi�Z�Ö0CCCC	)Ω�[˚Î�´�K¸")9Ï�b(ª'ZÌˇ¯Z'	 	¿:�+
%⁄Ç#Ç]‘˜™Ù	∑	∫	µÔ˘�‡�)A9…b	íI����
��
Ä����Ä� �‚�)ı9	b!Ô)/9≥b!)Eë�ˇÙ:�#Ç
˝)™è(&*&!•Z*Ö0CCC
CCC
C!è]ïËY#	)
ß�´�I	¯����H��������1�Ñ�(H∏�b\I�����ˇˇ˝ˇA3I3Y>	)9Ó�98!8b96#ÖA*#µA%#†Ç@A&Ö0C†b!ÎÇ
,A#∆Ç˛CÖ!%ɡ#üÇêÇPCü%
#üÇÉ˙)”!™
Ç�������������������������8ˇ˙ã��Ólb�!ÚCÖ#üÇêÇPCü!ÌÇêC†!Á)Á9ÚbYb-•�9‰Ó�M9+!é�Ç�K+ˇ!é˛Ç�Kˇ˝¸Ç�9˚ƒ~�¢ÄË˚l¸h˘á˘_˘}˘d����˘n˘s˘x˘Ç˘i����˘ú˙˙˙ ˙4����ä��°˙.˚	˙:˚	˚—˚¸¸A¸@¸—¸Ô˝¶˝U¸}˙ï�˙*˝T˝ƒ��x¯T¯)˘^˘õ˙˙ø˚™˝V¸˝…��������������������������������lÆQ�����������4��������s∆"	"#Ü""	r��ˇ��������Q�Q��������������?��ˇˇˇˇˇˇ?ˇˇˇˇ"0˝V��������������˚™������ï��
ø��¸}/ ®������˚À˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø˙ø@y1õCé⁄Ø‚∞‡¿˘�����!g�
g	�°������UUUUUUUUUUUU��������������������������������������������������������������������������������������������"/��_[j÷ˇ˝����ˇˇ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‘˛fi‡
Ÿ$uèu™%ûyé��˛yè{é��xå�‘���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������h�hhhhhhhhh	h
h�h
hhhhhhhhhhhhh��_[ˇˇˇˇ•¶ß®©©™´¨≠ª…»ÆªØ∞±≤≥¥µ∂ª∑ªˇˇˇˇªª∏∏