<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">why don't you use the ConfigurationOfCog?<div><br><div><div>On Apr 12, 2013, at 8:37 PM, <a href="mailto:phil@highoctane.be">phil@highoctane.be</a> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div style="">Thanks!</div><div style=""><br></div><div style="">A question: loading VMMaker tells me the following. Why should I load beforehand?</div><div style=""><br></div><div style=""><br></div><div>This package depends on the following classes:</div>

<div>&nbsp; FFIConstants</div><div>&nbsp; KlattResonatorIndices</div><div>You must resolve these dependencies before you will be able to load these definitions:&nbsp;</div>
<div>&nbsp; FFIPlugin</div><div>&nbsp; declareCVarsIn:</div><div>&nbsp; hasHeaderFile</div><div>&nbsp; moduleName</div><div>&nbsp; requiresPlatformFiles</div><div>&nbsp; atomicTypeOf:</div><div>&nbsp; ffiAddressOf:startingAt:size:</div><div>&nbsp; ffiArgByValue:</div>


<div>&nbsp; ffiArgument:Spec:Class:</div><div>&nbsp; ffiAtomicArgByReference:Class:</div><div>&nbsp; ffiAtomicStructByReference:Class:</div><div>&nbsp; ffiCall:WithFlags:AndTypes:</div><div>&nbsp; ffiCall:WithFlags:Args:AndTypes:OfSize:</div><div>


&nbsp; ffiCalloutTo:WithFlags:</div><div>&nbsp; ffiCheckReturn:With:</div><div>&nbsp; ffiContentsOfHandle:errCode:</div><div>&nbsp; ffiCreateLongLongReturn:</div><div>&nbsp; ffiCreateReturn:</div><div>&nbsp; ffiCreateReturnOop:</div><div>&nbsp; ffiCreateReturnPointer:</div>


<div>&nbsp; ffiCreateReturnStruct</div><div>&nbsp; ffiFail:</div><div>&nbsp; ffiFloatValueOf:</div><div>&nbsp; ffiGetLastError</div><div>&nbsp; ffiIntegerValueOf:</div><div>&nbsp; ffiLoadCalloutAddress:</div><div>&nbsp; ffiLoadCalloutAddressFrom:</div><div>


&nbsp; ffiLoadCalloutModule:</div><div>&nbsp; ffiLogCallout:</div><div>&nbsp; ffiLogCallsTo:</div><div>&nbsp; ffiPushPointerContentsOf:</div><div>&nbsp; ffiPushSignedLongLongOop:</div><div>&nbsp; ffiPushStructureContentsOf:</div><div>&nbsp; ffiPushUnsignedLongLongOop:</div>


<div>&nbsp; ffiPushVoid:</div><div>&nbsp; ffiReturnCStringFrom:</div><div>&nbsp; ffiSetLastError:</div><div>&nbsp; ffiValidateExternalData:AtomicType:</div><div>&nbsp; initialiseModule</div><div>&nbsp; isAtomicType:</div><div>&nbsp; primitiveCallout</div>

<div>
&nbsp; primitiveCalloutWithArgs</div><div>&nbsp; primitiveCreateManualSurface</div><div>&nbsp; primitiveDestroyManualSurface</div><div>&nbsp; primitiveFFIAllocate</div><div>&nbsp; primitiveFFIDoubleAt</div><div>&nbsp; primitiveFFIDoubleAtPut</div><div>


&nbsp; primitiveFFIFloatAt</div><div>&nbsp; primitiveFFIFloatAtPut</div><div>&nbsp; primitiveFFIFree</div><div>&nbsp; primitiveFFIGetLastError</div><div>&nbsp; primitiveFFIIntegerAt</div><div>&nbsp; primitiveFFIIntegerAtPut</div><div>&nbsp; primitiveForceLoad</div>


<div>&nbsp; primitiveLogCallsTo</div><div>&nbsp; primitiveSetManualSurfacePointer</div><div>&nbsp; KlattSynthesizerPlugin</div><div>&nbsp; declareCVarsIn:</div><div>&nbsp; initialize</div><div>&nbsp; moduleName</div><div>&nbsp; addAmplitudeDiplophonia</div>


<div>&nbsp; addFlutter</div><div>&nbsp; addFrequencyDiplophonia</div><div>&nbsp; addJitter</div><div>&nbsp; addShimmer</div><div>&nbsp; antiResonator:frequency:bandwidth:</div><div>&nbsp; antiResonator:value:</div><div>&nbsp; cascadeBranch:</div><div>&nbsp; checkedFloatPtrOf:</div>


<div>&nbsp; checkedShortPtrOf:</div><div>&nbsp; glottalSource</div><div>&nbsp; linearFromdB:</div><div>&nbsp; loadFrom:</div><div>&nbsp; nextRandom</div><div>&nbsp; normalizeGlottalPulse</div><div>&nbsp; parallelFrictionBranch:</div><div>&nbsp; parallelVoicedBranch:</div>


<div>&nbsp; pitchSynchronousReset</div><div>&nbsp; primitiveSynthesizeFrameIntoStartingAt</div><div>&nbsp; qu:phi:cosphi:sinphi:rphid:</div><div>&nbsp; resonator:frequency:bandwidth:</div><div>&nbsp; resonator:frequency:bandwidth:gain:</div><div>


&nbsp; resonator:value:</div><div>&nbsp; resonatorA:</div><div>&nbsp; resonatorA:put:</div><div>&nbsp; resonatorB:</div><div>&nbsp; resonatorB:put:</div><div>&nbsp; resonatorC:</div><div>&nbsp; resonatorC:put:</div><div>&nbsp; resonatorP1:</div><div>&nbsp; resonatorP1:put:</div>


<div>&nbsp; resonatorP2:</div><div>&nbsp; resonatorP2:put:</div><div>&nbsp; ro:ra:rk:</div><div>&nbsp; saveTo:</div><div>&nbsp; setCurrentFrame:</div><div>&nbsp; synthesizeFrame:into:startingAt:</div><div>&nbsp; voicedPitchSynchronousReset</div><div>&nbsp; zeroQphi:cosphi:sinphi:rphid:</div>


<div>&nbsp; ThreadedARMFFIPlugin</div><div>&nbsp; calloutStateClass</div><div>&nbsp; initialize</div><div>&nbsp; numRegArgs</div><div>&nbsp; ffiPushDoubleFloat:in:</div><div>&nbsp; ffiPushPointer:in:</div><div>&nbsp; ffiPushSignedByte:in:</div><div>&nbsp; ffiPushSignedChar:in:</div>


<div>&nbsp; ffiPushSignedLongLong:in:</div><div>&nbsp; ffiPushSignedShort:in:</div><div>&nbsp; ffiPushSingleFloat:in:</div><div>&nbsp; ffiPushUnsignedByte:in:</div><div>&nbsp; ffiPushUnsignedChar:in:</div><div>&nbsp; ffiPushUnsignedLong:in:</div><div>


&nbsp; ffiPushUnsignedLongLong:in:</div><div>&nbsp; ffiPushUnsignedShort:in:</div><div>&nbsp; registerArgsSlop</div><div>&nbsp; ThreadedFFIPlugin</div><div>&nbsp; ancilliaryStructClasses</div><div>&nbsp; calloutStateClass</div><div>&nbsp; declareCVarsIn:</div>


<div>&nbsp; initialize</div><div>&nbsp; maxNumArgs</div><div>&nbsp; moduleName</div><div>&nbsp; preambleCCode</div><div>&nbsp; prepareToBeAddedToCodeGenerator:</div><div>&nbsp; allocaLiesSoUseGetsp</div><div>&nbsp; atomicTypeOf:</div><div>&nbsp; cStackAlignment</div>


<div>&nbsp; cleanupCalloutState:</div><div>&nbsp; dispatchFunctionPointer:</div><div>&nbsp; externalFunctionHasStackSizeSlot</div><div>&nbsp; ffiAddressOf:startingAt:size:</div><div>&nbsp; ffiAlloc:</div><div>&nbsp; ffiArgByValue:in:</div><div>&nbsp; ffiArgument:Spec:Class:in:</div>


<div>&nbsp; ffiAtomicArgByReference:Class:in:</div><div>&nbsp; ffiAtomicStructByReference:Class:in:</div><div>&nbsp; ffiCall:ArgArrayOrNil:NumArgs:</div><div>&nbsp; ffiCalloutTo:SpecOnStack:in:</div><div>&nbsp; ffiCheckReturn:With:in:</div><div>

&nbsp; ffiContentsOfHandle:errCode:</div>
<div>&nbsp; ffiCreateIntegralResultOop:ofAtomicType:in:</div><div>&nbsp; ffiFail:</div><div>&nbsp; ffiFloatValueOf:</div><div>&nbsp; ffiFree:</div><div>&nbsp; ffiIntegerValueOf:</div><div>&nbsp; ffiLoadCalloutAddress:</div><div>&nbsp; ffiLoadCalloutAddressFrom:</div>


<div>&nbsp; ffiLoadCalloutModule:</div><div>&nbsp; ffiLogCallout:</div><div>&nbsp; ffiLogCallsTo:</div><div>&nbsp; ffiPushDoubleFloat:in:</div><div>&nbsp; ffiPushPointer:in:</div><div>&nbsp; ffiPushPointerContentsOf:in:</div><div>&nbsp; ffiPushSignedByte:in:</div>


<div>&nbsp; ffiPushSignedChar:in:</div><div>&nbsp; ffiPushSignedInt:in:</div><div>&nbsp; ffiPushSignedLongLong:in:</div><div>&nbsp; ffiPushSignedLongLongOop:in:</div><div>&nbsp; ffiPushSignedShort:in:</div><div>&nbsp; ffiPushSingleFloat:in:</div><div>


&nbsp; ffiPushString:OfLength:in:</div><div>&nbsp; ffiPushStructure:ofSize:typeSpec:ofLength:in:</div><div>&nbsp; ffiPushStructureContentsOf:in:</div><div>&nbsp; ffiPushUnsignedByte:in:</div><div>&nbsp; ffiPushUnsignedChar:in:</div><div>&nbsp; ffiPushUnsignedInt:in:</div>


<div>&nbsp; ffiPushUnsignedLongLong:in:</div><div>&nbsp; ffiPushUnsignedLongLongOop:in:</div><div>&nbsp; ffiPushUnsignedShort:in:</div><div>&nbsp; ffiPushVoid:in:</div><div>&nbsp; ffiReturnCStringFrom:</div><div>&nbsp; ffiReturnPointer:ofType:in:</div>


<div>&nbsp; ffiReturnStruct:ofType:in:</div><div>&nbsp; ffiReturnType:</div><div>&nbsp; ffiSupportsCallingConvention:</div><div>&nbsp; ffiValidateExternalData:AtomicType:</div><div>&nbsp; initialiseModule</div><div>&nbsp; isAlien:</div><div>&nbsp; isAtomicType:</div>


<div>&nbsp; isCalleePopsConvention:</div><div>&nbsp; isDirectAlien:</div><div>&nbsp; nonRegisterStructReturnIsViaImplicitFirstArgument</div><div>&nbsp; primitiveCallout</div><div>&nbsp; primitiveCalloutWithArgs</div><div>&nbsp; primitiveCreateManualSurface</div>


<div>&nbsp; primitiveDestroyManualSurface</div><div>&nbsp; primitiveFFIAllocate</div><div>&nbsp; primitiveFFIDoubleAt</div><div>&nbsp; primitiveFFIDoubleAtPut</div><div>&nbsp; primitiveFFIFloatAt</div><div>&nbsp; primitiveFFIFloatAtPut</div><div>&nbsp; primitiveFFIFree</div>


<div>&nbsp; primitiveFFIGetLastError</div><div>&nbsp; primitiveFFIIntegerAt</div><div>&nbsp; primitiveFFIIntegerAtPut</div><div>&nbsp; primitiveForceLoad</div><div>&nbsp; primitiveLogCallsTo</div><div>&nbsp; primitiveSetManualSurfacePointer</div><div>


&nbsp; registerArgsSlop</div><div>&nbsp; returnStructInRegisters:</div><div>&nbsp; sizeField:</div><div>&nbsp; startOfData:</div><div>&nbsp; ThreadedIA32FFIPlugin</div><div>&nbsp; ffiCalloutTo:SpecOnStack:in:</div><div>&nbsp; ffiPushDoubleFloat:in:</div><div>


&nbsp; ffiPushPointer:in:</div><div>&nbsp; ffiPushSignedByte:in:</div><div>&nbsp; ffiPushSignedChar:in:</div><div>&nbsp; ffiPushSignedInt:in:</div><div>&nbsp; ffiPushSignedLongLong:in:</div><div>&nbsp; ffiPushSignedShort:in:</div><div>&nbsp; ffiPushSingleFloat:in:</div>


<div>&nbsp; ffiPushStructure:ofSize:typeSpec:ofLength:in:</div><div>&nbsp; ffiPushUnsignedByte:in:</div><div>&nbsp; ffiPushUnsignedChar:in:</div><div>&nbsp; ffiPushUnsignedInt:in:</div><div>&nbsp; ffiPushUnsignedLongLong:in:</div><div>&nbsp; ffiPushUnsignedShort:in:</div>


<div>&nbsp; ffiReturnStruct:ofType:in:</div><div>&nbsp; registerArgsSlop</div><div>&nbsp; returnStructInRegisters:</div><div>&nbsp; ThreadedPPCBEFFIPlugin</div><div>&nbsp; calloutStateClass</div><div>&nbsp; initialize</div><div>&nbsp; numRegArgs</div><div>


&nbsp; ffiPushDoubleFloat:in:</div><div>&nbsp; ffiPushPointer:in:</div><div>&nbsp; ffiPushSignedByte:in:</div><div>&nbsp; ffiPushSignedChar:in:</div><div>&nbsp; ffiPushSignedInt:in:</div><div>&nbsp; ffiPushSignedLongLong:in:</div><div>&nbsp; ffiPushSignedShort:in:</div>


<div>&nbsp; ffiPushSingleFloat:in:</div><div>&nbsp; ffiPushUnsignedByte:in:</div><div>&nbsp; ffiPushUnsignedChar:in:</div><div>&nbsp; ffiPushUnsignedInt:in:</div><div>&nbsp; ffiPushUnsignedLong:in:</div><div>&nbsp; ffiPushUnsignedLongLong:in:</div><div>


&nbsp; ffiPushUnsignedShort:in:</div><div>&nbsp; registerArgsSlop</div><div>&nbsp; returnStructInRegisters:</div><div><br></div><div><br></div><div>Select Proceed to continue, or close this window to cancel the operation.</div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">2013/4/12 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

&nbsp;<br><br><br><div class="gmail_quote">On Fri, Apr 12, 2013 at 2:43 AM, <a href="mailto:phil@highoctane.be" target="_blank">phil@highoctane.be</a> <span dir="ltr">&lt;<a href="mailto:phil@highoctane.be" target="_blank">phil@highoctane.be</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&nbsp;<br><div dir="ltr"><div>This is what I do have:</div><div><br></div>VMClass subclass: #InterpreterPrimitives<div>VMClass subclass: #ObjectMemory<br>


<div>ObjectMemory subclass: #Interpreter</div></div><div><br></div>

<div>and also:</div><div><br></div><div>InterpreterPrimitives subclass: #StackInterpreter<br></div><div>StackInterpreter subclass: #StackInterpreterPrimitives<br></div><div><br></div><div>

I am interested in getting Interpreter to work at this point, not StackInterpreter, in the simulator.</div></div></blockquote><div><br></div><div>Then I would either move to VMMaker or be prepared for a fair bit of work. &nbsp;I haven't worked on the Interpreter in the Cog branch for many years. &nbsp;</div>


<div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>StackIntepreter simulation has other problems:</div><div><br></div><div>




<div>UndefinedObject(Object)&gt;&gt;doesNotUnderstand: #adaptToNumber:andSend:</div><div>UndefinedObject(Object)&gt;&gt;adaptToInteger:andSend:</div><div>SmallInteger(Integer)&gt;&gt;quo:</div><div>SmallInteger&gt;&gt;quo:</div>




<div>SmallInteger(Integer)&gt;&gt;//</div><div>SmallInteger&gt;&gt;//</div><div>StackInterpreterSimulatorLSB(StackInterpreter)&gt;&gt;interpreterAllocationReserveBytes</div><div>StackInterpreterSimulatorLSB(StackInterpreterSimulator)&gt;&gt;openOn:extraMemory: in Block: [f := FileStream readOnlyFileNamed: fileName....</div>




<div>BlockClosure&gt;&gt;ensure:</div><div>StackInterpreterSimulatorLSB(StackInterpreterSimulator)&gt;&gt;openOn:extraMemory:</div><div>StackInterpreterSimulatorLSB(StackInterpreterSimulator)&gt;&gt;openOn:</div><div>UndefinedObject&gt;&gt;DoIt</div>




<div><br></div><div>Looks like all of this needs some love... no problem doing that but I need to sort out these questions with your help :-)</div></div></div></blockquote><div><br></div><div>This should be easy to solve. &nbsp;Hmmm, works in e.g. VMMaker.oscog-eem.284.</div>


<div><br></div><div>Try launching it with</div><div><br></div><div><div>| vm |</div><div>StackInterpreter initializeWithOptions: (Dictionary newFromPairs: #()).</div><div>vm := StackInterpreterSimulator new.</div><div>vm openOn: 'some.image'.</div>


<div>vm openAsMorph; run</div></div><div><br></div><div><br></div><div>If it doesn't work then you need to reintegrate from&nbsp;VMMaker.oscog-eem.284.</div><div><br></div><div>HTH</div><div>Eliot</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div dir="ltr"><div><div><br></div><div>Phil</div><div><br></div></div><div>

<br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/11 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span><br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&nbsp;<br><br><br><div class="gmail_quote">On Thu, Apr 11, 2013 at 2:11 AM, <a href="mailto:phil@highoctane.be" target="_blank">phil@highoctane.be</a> <span dir="ltr">&lt;<a href="mailto:phil@highoctane.be" target="_blank">phil@highoctane.be</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&nbsp;<br><div dir="ltr">Hello,<div><br></div><div>I've been working on getting the simulator to work from VMMaker.</div>





<div><br></div><div>Now, I can load my 6505 formatted image inside the simulator and it looks okay (from what I can inspect).</div>

<div><br></div><div>Then, I am now running the test of the sim:</div><div><br></div><div><div>test</div><div><span style="white-space:pre-wrap">        </span>transcript clear.</div><div><span style="white-space:pre-wrap">        </span>byteCount := 0.</div>







<div><span style="white-space:pre-wrap">        </span>quitBlock := [^ self].</div><div><span style="white-space:pre-wrap">        </span>self internalizeIPandSP.</div><div><span style="white-space:pre-wrap">        </span>self fetchNextBytecode.</div>







<div><span style="white-space:pre-wrap">        </span>[true] whileTrue:</div><div><span style="white-space:pre-wrap">                </span>[self dispatchOn: currentBytecode in: BytecodeTable.</div><div><span style="white-space:pre-wrap">                </span>byteCount := byteCount + 1.</div>







<div><span style="white-space:pre-wrap">                </span>byteCount \\ 10000 = 0 ifTrue: [self fullDisplay]].</div><div><span style="white-space:pre-wrap">        </span>self externalizeIPandSP.</div><div><br></div><div><br></div>

<div>and I hit an issue:</div><div><br></div><div>MNU:&nbsp;isInstanceOfClassFloat: oop.</div><div><div><div>InterpreterSimulatorLSB(Interpreter)&gt;&gt;floatValueOf:</div><div>InterpreterSimulatorLSB(Interpreter)&gt;&gt;loadFloatOrIntFrom:</div>







<div>InterpreterSimulatorLSB(Interpreter)&gt;&gt;primitiveFloatEqual:toArg:</div><div>InterpreterSimulatorLSB(Interpreter)&gt;&gt;bytecodePrimEqual</div><div>InterpreterSimulatorLSB(InterpreterSimulator)&gt;&gt;dispatchOn:in:</div>







<div>InterpreterSimulatorLSB(InterpreterSimulator)&gt;&gt;test</div><div>UndefinedObject&gt;&gt;DoIt</div><div><br></div></div><div>This happens here:</div><div><br></div><div><div>floatValueOf: oop</div><div>

<span style="white-space:pre-wrap">        </span>"Answer the C double precision floating point value of the argument,</div><div><span style="white-space:pre-wrap">        </span> or fail if it is not a Float, and answer 0.</div>







<div><span style="white-space:pre-wrap">        </span> Note: May be called by translated primitive code."</div><div><br></div><div><span style="white-space:pre-wrap">        </span>| isFloat result |</div><div><span style="white-space:pre-wrap">        </span>&lt;returnTypeC: #double&gt;</div>







<div><span style="white-space:pre-wrap">        </span>&lt;var: #result type: #double&gt;</div><div><span style="white-space:pre-wrap">        </span>isFloat := self isInstanceOfClassFloat: oop.</div><div><span style="white-space:pre-wrap">        </span>isFloat ifTrue:</div>







<div><span style="white-space:pre-wrap">                </span>[self cCode: '' inSmalltalk: [result := Float new: 2].</div><div><span style="white-space:pre-wrap">                </span> self fetchFloatAt: oop + BaseHeaderSize into: result.</div>







<div><span style="white-space:pre-wrap">                </span> ^result].</div><div><span style="white-space:pre-wrap">        </span>self primitiveFail.</div><div><span style="white-space:pre-wrap">        </span>^0.0</div></div><div><br>

</div><div>There is such a method in IntepreterPrimitives, but not in the Interpreter itself nor parents.</div><div><br></div><div><div>InterpreterPrimitives&gt;&gt;isInstanceOfClassFloat: oop</div><div>

<span style="white-space:pre-wrap">        </span>&lt;inline: true&gt;</div><div><span style="white-space:pre-wrap">        </span>"N.B. &nbsp;Because Slang always inlines is:instanceOf:compactClassIndex:</div><div><span style="white-space:pre-wrap">        </span> (because is:instanceOf:compactClassIndex: has an inline: pragma) the</div>







<div><span style="white-space:pre-wrap">        </span> phrase (objectMemory splObj: ClassFloat) is expanded in-place and is</div><div><span style="white-space:pre-wrap">        </span> _not_ evaluated if oop has a non-zero CompactClassIndex."</div>







<div><span style="white-space:pre-wrap">        </span>^objectMemory</div><div><span style="white-space:pre-wrap">                </span>is: oop</div><div><span style="white-space:pre-wrap">                </span>instanceOf: (objectMemory splObj: ClassFloat)&nbsp;</div>







<div><span style="white-space:pre-wrap">                </span>compactClassIndex: ClassFloatCompactIndex</div><div><br></div><div>Clues?</div></div></div></div></div></blockquote><div><br></div><div>Just copy the method into Interpreter and replace objectMemory with self. &nbsp;But I don't understand which VMMsker you're using. &nbsp;In David Lewis' trunk, e.g.&nbsp;VMMaker-dtl.316, Interpreter inherits from InterpreterPrimitives.</div>





<div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Phil</div></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
<br></blockquote></div><br></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
<br></blockquote></div><br></div>
</blockquote></div><br></div></body></html>