Pages:
Author

Topic: Moneychanger (Windows Builds) - Out of Date! - page 4. (Read 59483 times)

legendary
Activity: 1222
Merit: 1016
Live and Let Live
Ok...  New Version of Moneychanger.

There isn't all-that much visible changed from the end-user prospective... However there has been massive changes to the API backed.

Hopefully soon I will complete the C++ high-level api.  After that, making a great GUI for OT will be much more feasible.  Cheesy

Well anyway it is uploaded here:

https://github.com/da2ce7/Moneychanger/downloads

da2ce7-Moneychanger-00.12.02-Win32_x64.7z
legendary
Activity: 1222
Merit: 1016
Live and Let Live
... and got

Code:
$ cmake . -DCMAKE_INSTALL_PREFIX=$HOME/.local
-- Detecting readline support
-- Not Found
-- Could NOT find Boost
CMake Error at CMakeLists.txt:87 (message):
  Can not find Boost


-- Configuring incomplete, errors occurred!


You don't have all the boost-parts needed.  Try installing libboost-all-dev

This is because of Chaiscript updating and using more of boost.  We haven't updated our guides yet.
legendary
Activity: 1372
Merit: 1003
I tried the INSTALL-Debian_Ubuntu.txt - (https://github.com/FellowTraveler/Open-Transactions/blob/master/docs/INSTALL-Debian_Ubuntu.txt) - and got to

Code:
# fetch chaiscript
$ git clone git://github.com/ChaiScript/ChaiScript.git

# build chaiscript
$ cd ChaiScript
$ cmake . -DCMAKE_INSTALL_PREFIX=$HOME/.local

and got

Code:
$ cmake . -DCMAKE_INSTALL_PREFIX=$HOME/.local
-- Detecting readline support
-- Not Found
-- Could NOT find Boost
CMake Error at CMakeLists.txt:87 (message):
  Can not find Boost


-- Configuring incomplete, errors occurred!

 Huh

legendary
Activity: 1222
Merit: 1016
Live and Let Live
Just playing around with the client a bit although I don't really fully understand it yet. It crashed when I tried to deposit cash:

OTAPI_Wrap::Purse_GetTotalValue: Null: THE_PURSE passed in!



The:

Code:
"OTAPI_Wrap::" (something) "Null:" (something) "passed in!"

Errors are from the new C++ API.

I have made the API assert on all the bad data that Moneychanger sends to it.
Edit: (well not all bad data, just on the obvious things like providing null for a required argument).

For the most case, it just involves tracking down the calling function ad putting better argument testing before deciding to call the native command or not.
(aka, if we are about to send an argument with a 'null' value... don't; return false without calling the command).

I'll soon release an updated version of Moneychanger that corrects (more) of these issues.  But overall it is a good thing.  If you supply a function with bad arguments it should assert and exit.

Edit:  If you download Netbeans, and use Git, the Java code should be trivial enough for virtually anyone to fix. (Java is much easier than C++, at least for the beginner programmer.  (I prefer C++ but it indeed take much longer to learn than Java).
legendary
Activity: 2940
Merit: 1090
Where did you obtain the cash? It is server-specific, you cannot for example issue cash on your localhost server then deposit it on one of my servers.

-MarkM-
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
Just playing around with the client a bit although I don't really fully understand it yet. It crashed when I tried to deposit cash:

OTAPI_Wrap::Message_GetSuccess: ** FYI, server reply was received, and it said '
Yes.' (Status = success). RequestNum: 136
Utility.getMessageSuccess(): Reply received: success == TRUE.
Utility.getInboxLowLevel: The hashes already match (skipping Inbox download.)
Utility.getOutboxLowLevel: The hashes already match (skipping Outbox download.)
inbox:12
outbox.getColumnCount:10
IN populateOTDetails
OTPurse::LoadPurse: File does not exist: purse/wmY1B8o94PFENzqPVK6wLOLvkog9TvA3G
DxZuAMGCpW/fCS3eNU5kboAhzHByRnWpQdGD8GO6G50jxA6vx6PcSf/3odM2J7BF3wbqvrfsN7FHVpzH
YMVUajQC8WE8P1tqqg
OTAPI_Wrap::LoadPurse: received null when called OT_API::LoadPurse().
Server: wmY1B8o94PFENzqPVK6wLOLvkog9TvA3GDxZuAMGCpW Asset Type: 3odM2J7BF3wbqvrf
sN7FHVpzHYMVUajQC8WE8P1tqqg
OTAPI_Wrap::Purse_GetTotalValue: Null: THE_PURSE passed in!
OT_ASSERT in ..\..\src\otapi\OTAPI_Wrapper.cpp at line 7246
OT_ASSERT in ..\..\src\otapi\OTAPI_Wrapper.cpp at line 7246
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
Whoops, thanks!

EDIT: Below was due to OpenSSL not being installed correctly. I must have made a mistake (too early in the morning for this!)

I installed the x84 and x64 versions of both C++ redistributable packages (2008 and 2012) and receive this when I try to run the batch:

"Found JAVA in: C:\Program Files\Java\jre7"


amd64
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Load InitNative
INFO: null
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load libzmq
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Success loading libzmq
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load chaiscript
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Success loading chaiscript
Oct 13, 2012 8:15:55 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load otlib
amd64
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Load InitNative
INFO: null
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load libzmq
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Success loading libzmq
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load chaiscript
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Success loading chaiscript
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Tools loadNative
INFO: Atempting to load otlib
Oct 13, 2012 8:16:01 AM org.opentransactions.jni.utility.Load InitNative
SEVERE: null
java.lang.UnsatisfiedLinkError: C:\Users\keystroke\Desktop\da2ce7-Moneychanger\data\
lib\x64\Release\otlib.dll: Can't find dependent libraries
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary1(Unknown Source)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at org.opentransactions.jni.utility.Tools.loadNative(Tools.java:105)
        at org.opentransactions.jni.utility.Load.InitNative(Load.java:94)
        at com.moneychanger.app.Moneychanger$Loader.Load(Moneychanger.java:107)
        at com.moneychanger.app.Moneychanger.main(Moneychanger.java:98)


This is under Windows 7 x86. I also have 32bit and 64bit Java installed as well as 32bit and 64bit SSL as linked in the readme. I started by running install_userdata.
legendary
Activity: 1222
Merit: 1016
Live and Let Live
Awesome, going to check this out soon! Small thing I just noticed, haha, but can you "Don't use smileys" when posting? I think it probably interferes with your GnuPG signatures!

Great  Cheesy  Cheesy  The gpg signatures are for the download itself; for example:

Code:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.19 (MingW32)

owGbwMvMwCHIMl/GwHjr82uMpwuSGAJKmLiDPRyNTM00UhKNklPNdX3z81IrkzMS
89JTi+INDPQMDfWApHmVpq2CqblRaqJFanJicpKJuVFimqVhUpKFaZJRioWFiVFq
clqSkYlxoiFQOs0kLdkoxTwp1cIAqNYi0cjENNEgJYWrI46FQZCDgY2VCWQvAxen
AMwxn/cx/GZ5fHiaQdaN3/dMFifntCwp/RV3nPkSs1ieT8A05evpJR6MDGeOB0ge
fXH5qXp+4dwf6zZq6WgtO77pS+AaGUsF4+nlDrUA
=yjH+
-----END PGP MESSAGE-----

Do:

Code:
gpg --keyserver pgp.mit.edu --recv-keys 0x049F1C3033B5E7D6
gpg -v (above pgp data)

Output:

Code:
SHA256(da2ce7-Moneychanger_00.11.00.7z)= 572ea8ecacb472af91bb85b2d8842ecfb243a1cacf4fc2d7be80acb8a245a0dd

To check the hash of da2ce7-Moneychanger_00.11.00.7z do either:

Code:
openssl dgst -sha256 da2ce7-Moneychanger_00.11.00.7z

or:

Code:
gpg --print-md da2ce7-Moneychanger_00.11.00.7z
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
Ok.... New Testing Version  Shocked Shocked Shocked

Please only for testing... There has been SOMANY changes.

New Password Callback System.

New OT Java Lib (now all the JNI code is in a separate library so any Java project can take advantage of it)
https://github.com/da2ce7/opentransactions-jni

Fixed up the "Password Image" issues.

Oh yeah... and Massive Swig changes...  (but no end-user cares about that)

Try at your own risk:

https://github.com/downloads/da2ce7/Moneychanger/da2ce7-Moneychanger_00.11.00.7z

Code:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.19 (MingW32)

owGbwMvMwCHIMl/GwHjr82uMpwuSGAJKmLiDPRyNTM00UhKNklPNdX3z81IrkzMS
89JTi+INDPQMDfWApHmVpq2CqblRaqJFanJicpKJuVFimqVhUpKFaZJRioWFiVFq
clqSkYlxoiFQOs0kLdkoxTwp1cIAqNYi0cjENNEgJYWrI46FQZCDgY2VCWQvAxen
AMwxn/cx/GZ5fHiaQdaN3/dMFifntCwp/RV3nPkSs1ieT8A05evpJR6MDGeOB0ge
fXH5qXp+4dwf6zZq6WgtO77pS+AaGUsF4+nlDrUA
=yjH+
-----END PGP MESSAGE-----

Awesome, going to check this out soon! Small thing I just noticed, haha, but can you "Don't use smileys" when posting? I think it probably interferes with your GnuPG signatures!
legendary
Activity: 1222
Merit: 1016
Live and Let Live
New Version of Moneychanger and Open Transactions (v.00.11.03)


This version includes:

More robust password checking.

Now if you password is 'test' then you will not need to enter it.

You can always change your password via the (opentxs) prompt with the 'changepw' command.


Also many general bug-fixes.

https://github.com/downloads/da2ce7/Moneychanger/da2ce7-Moneychanger-00.11.03.7z

Code:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.19 (MingW32)

owGbwMvMwCHIMl/GwHjr82uMpwuSGALKgkODPRyNTM00UhKNklPNdX3z81IrkzMS
89JTi3QNDPQMDfUMjPXMqzRtFSxMzJKMEpMsjU2T0ywTk5NSDY1MLMyTTZKAXBNT
I4OkJAvD1BRDM1MDUwsjk8Q0c9MUA8uklGRj47QUCzNjM66OOBYGQQ4GNlYmkL0M
XJwCMMfcvcPIsJtPaXXr/ut/TkovSnTvLCsT/cPj8ldaTcFDNZrv0oI+aUaGx7yN
Hz08+faUiNhJ3Vy8Pmtn3cSZQkU7L70rfr+MT+pEMAA=
=QpXG
-----END PGP MESSAGE-----
legendary
Activity: 1222
Merit: 1016
Live and Let Live
Ok.... New Testing Version  Shocked Shocked Shocked

Please only for testing... There has been SOMANY changes.

New Password Callback System.

New OT Java Lib (now all the JNI code is in a separate library so any Java project can take advantage of it)
https://github.com/da2ce7/opentransactions-jni

Fixed up the "Password Image" issues.

Oh yeah... and Massive Swig changes...  (but no end-user cares about that)

Try at your own risk:

https://github.com/downloads/da2ce7/Moneychanger/da2ce7-Moneychanger_00.11.00.7z

Code:
-----BEGIN PGP MESSAGE-----
Version: GnuPG v2.0.19 (MingW32)

owGbwMvMwCHIMl/GwHjr82uMpwuSGAJKmLiDPRyNTM00UhKNklPNdX3z81IrkzMS
89JTi+INDPQMDfWApHmVpq2CqblRaqJFanJicpKJuVFimqVhUpKFaZJRioWFiVFq
clqSkYlxoiFQOs0kLdkoxTwp1cIAqNYi0cjENNEgJYWrI46FQZCDgY2VCWQvAxen
AMwxn/cx/GZ5fHiaQdaN3/dMFifntCwp/RV3nPkSs1ieT8A05evpJR6MDGeOB0ge
fXH5qXp+4dwf6zZq6WgtO77pS+AaGUsF4+nlDrUA
=yjH+
-----END PGP MESSAGE-----
legendary
Activity: 1222
Merit: 1016
Live and Let Live
Oh jesus, image meant image.  My bad, I'll try this one more time!

The next version of Moneychanger will have that renamed to "Picture: eg. .jpg or .png"
legendary
Activity: 3920
Merit: 2349
Eadem mutata resurgo
OT requires the first-time user to choose an image file. (jpg, gif, etc)

This image is displayed on the password dialog.

That way, hackers cannot impersonate your password dialog, because they don't know what image you chose.

Actually to be precise, it is the java test client GUI, Moneychanger that requires the password image file selection, OT itself requires a master password for the Nyms' wallet.
hero member
Activity: 793
Merit: 1026
Works awesome now!  Now I can go through and watch the videos and see how to actually use it and put trades up in the market!  Thanks again for helping a poor newbie out...
hero member
Activity: 793
Merit: 1026
Oh jesus, image meant image.  My bad, I'll try this one more time!
sr. member
Activity: 440
Merit: 251
OT requires the first-time user to choose an image file. (jpg, gif, etc)

This image is displayed on the password dialog.

That way, hackers cannot impersonate your password dialog, because they don't know what image you chose.
legendary
Activity: 2940
Merit: 1090
Text is not an image. Image means things like .png, maybe .jpg or .gif, not sure offhand exactly what types of graphics aka pictures aka images files it can handle but random text is not it.

Not sure if this has been said anywhere or everywhere already, but the purpose of the image is for popups asking for your passphrase that secures your private keys to be able to display an image you picked yourself that is not some default we provided that any phisher will know to try when trying to make fake passphrase-entry popups to fool you into revealing your passphrase.

We cannot provide a default image as then all the phishers would know like duh I bet this idiot never changed the image so I will fool many of the people much of the time by using that default image to fool them.

So we have to make you pick for yourself an image, without even providing an easily brute-force-able collection to choose from, to make it harder for people to fool you with fake popups trying to fake your passphrase out of you.

-MarkM-
hero member
Activity: 793
Merit: 1026
:-(  I did do that.  I made a text file with random output from openssl that I am using.  It accepts that file and runs, but it does not remember that file for the next time.  This part from my first post shows that it was loaded correctly, right?

Quote
Started Stage: SetupPasswordImage
C:\Program Files\da2ce7-Moneychanger\otmc-password-image-testing-file.txt

storable:com.wrapper.core.jni.Storable@7796bb71
stringMap:com.wrapper.core.jni.StringMap@48ec350d
Completed Stage: SetupPasswordImage

That's the file I select and it seems fine and works, but like I said, it doesn't remember it the second time.  And when I re-select it, I run into the problems.

Edit:  Thanks for taking the time to respond, let alone making this gui and the ot library in the first place.  You are doing great work and on top of it taking the time to help people out.  Thanks for all of that man, it's truly appreciated.
legendary
Activity: 1222
Merit: 1016
Live and Let Live
I keep running into some problems.  Win7 x64, and I have installed the 32 and 64 bit versions of openssl, and of the 2008 and 2012 redistributables, although I only have the x64 version of Java.  Moneychanger runs great the first time and i can create an identity and send it to the server, but every time I run the software a second time it has problems loading my identity and crashes with "image is null" or something like that:

Ok... In the Moneychanger Settings (the first dialogue that loads), you need to select an image file in the Password Image field.   You only need to do this once.  OT will remember where the image is and load-it automatically next time.
hero member
Activity: 793
Merit: 1026
I keep running into some problems.  Win7 x64, and I have installed the 32 and 64 bit versions of openssl, and of the 2008 and 2012 redistributables, although I only have the x64 version of Java.  Moneychanger runs great the first time and i can create an identity and send it to the server, but every time I run the software a second time it has problems loading my identity and crashes with "image is null" or something like that:

Quote
"Found JAVA in: C:\Program Files\Java\jre7"


Completed Stage: Init

DISABLING AUTOLOAD FOR DEBUG!
We didn't load Successfuly Last time, Showing Seetings...!

Started Stage: Opt_InitSettings
Completed Stage: Opt_InitSettings


Started Stage: Opt_LoadSettings
amd64
Load.JavaPaths: Adding path: .\lib\x64\Release
Completed Stage: Opt_LoadSettings

Finished on Thread[Thread-2,6,main]

Started Stage: Opt_UpdateSettings
Completed Stage: Opt_UpdateSettings


Attempting to load Moneychangerà Here we go!

Attempting to load the reaming stages!!!


Started Stage: LoadNativeLibraries

Updating JavaPaths:  Custom JavaPaths... adding now!
Path:  C:\Windows\system32
Path:  C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
Path:  .\lib\x64\Release
Path:  C:\Windows\Sun\Java\bin
Path:  C:\Windows\System32\WindowsPowerShell\v1.0\
Path:  C:\Windows
Path:  C:\Program Files\Java\jre7\bin
Path:  C:\Windows\System32\Wbem
Updating JavaPaths...   Success!

We are on Windows!
Loading libzmq:   Success!
Loading chaiscript:   Success!
Loading otlib:   Success!
Loading otapi:   Success!
Loading otapi-java:   Success!
Completed Stage: LoadNativeLibraries


Started Stage: InitOTAPI


Welcome to Open Transactions -- version 0.86.g
Output: 250207568
Load.initOTAPI: SUCCESS invoking OT_API_Init().
Completed Stage: InitOTAPI


Started Stage: SetupPasswordImage
C:\Program Files\da2ce7-Moneychanger\otmc-password-image-testing-file.txt
storable:com.wrapper.core.jni.Storable@7796bb71
stringMap:com.wrapper.core.jni.StringMap@48ec350d
Completed Stage: SetupPasswordImage


Started Stage: SetupPasswordCallback
OTCaller::setCallback: Attempting to set the password OTCallback pointer...
OTCaller::setCallback: FYI, the password OTCallback pointer was set.
OneTimeOnly.GiveItAShot(): SUCCESS setting the password callback.
Completed Stage: SetupPasswordCallback


Started Stage: LoadWallet
OTCaller::callOne: FYI, Executing password callback (one)...
OTCaller::GetPassword: FYI, returning password after invoking a (probably Java)
password dialog.
OPENSSL_CALLBACK_FUNC(souped_up_pass_cb): 0 length password was returned from th
e API password callback. Substituting default password 'test'.
OTEnvelope::Decrypt(static): EVP_DecryptFinal: failed.
OTMasterKey::GetMasterPassword: m_pSymmetricKey->GetRawKeyFromPassphrase() faile
d.
OPENSSL_CALLBACK_FUNC(souped_up_pass_cb): Failure: (false == bGotPassword.) (Ret
urning 0.)
OTAsymmetricKey::LoadPrivateKeyFromCertString: Error reading private key from st
ring:

-----BEGIN ENCRYPTED PRIVATE KEY-----
removed
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
removed
-----END CERTIFICATE-----


OTPseudonym::Loadx509CertAndPrivateKey: Although the ascii-armored file (certs/longlongusernameremoved) was read, LoadPrivateKey returned fa
lse.
OTPseudonym::LoadPrivateNym OTPseudonym::LoadPrivateNym: Failure calling Loadx50
9CertAndPrivateKey: longlongusernameremoved
OTWallet::LoadWallet: Failed loading Nym (shortnameremoved) with ID: longlongusernameremoved
java.lang.NullPointerException
com.moneychanger.ui.Load$LoadFailedException: java.lang.NullPointerException
SomethingBad Happend! We couldn't load properly!


Press any key to continue . . .

And this was when it crashed when I was trying to view the market:

Quote
-----BEGIN Sending getMarketOffers message via ZMQ... Request number: 117



-----END (Finished sending getMarketOffers message) Request number: 117

OTAPI_Wrap::Message_GetSuccess: ** FYI, server reply was received, and it said '
Yes.' (Status = success). RequestNum: 117
Utility.getMessageSuccess(): Reply received: success == TRUE.


-----BEGIN Sending getMarketRecentTrades message via ZMQ... Request number: 118



-----END (Finished sending getMarketRecentTrades message) Request number: 118

OTAPI_Wrap::Message_GetSuccess: ** FYI, server reply was received, and it said '
Yes.' (Status = success). RequestNum: 118
Utility.getMessageSuccess(): Reply received: success == TRUE.
getMarketDetails - tradeListMarket returns null
marketDetails:null
values.size():0
jTable13 valueChanged Market List Action Listener :1e:javax.swing.DefaultListSel
ectionModel 1835877325 ={1}
OTCaller::callOne: FYI, Executing password callback (one)...
OTCaller::GetPassword: FYI, returning password after invoking a (probably Java)
password dialog.
OPENSSL_CALLBACK_FUNC(souped_up_pass_cb): 0 length (or less) password was return
ed from the API password callback :-( Returning 0.
OTMasterKey::GetMasterPassword: Failure trying to retrieve the passphrase from t
he user.
OPENSSL_CALLBACK_FUNC(souped_up_pass_cb): Failure: (false == bGotPassword.) (Ret
urning 0.)
OTAsymmetricKey::InstantiatePrivateKey: Failed reading private key from ASCII-ar
mored data:

ascii armored priv key data removed


Null private key sent to OTContract::SignContract.

Null private key sent to OTContract::SignContract.

OT_ASSERT in ..\..\src\otlib\OTContract.cpp at line 1920
OT_ASSERT in ..\..\src\otlib\OTContract.cpp at line 1920

And then here is your new thing you just posted giving me another username error:

Quote




Welcome to Open Transactions -- version 0.86.g



PLEASE SIGN YOUR PASSPHRASE, for: "OTAsymmetricKey::LoadPrivateKeyFromCertString

 is calling PEM_read_bio_PrivateKey..."
 
 (OT) passphrase: Using as server: not-sure-if-i-should-remove-this-so-i-removed-it
 
 Unable to find My Nym. Please use the option:   --mynym USER_ID
 
 (Where USER_ID is the Nym's ID. Partial matches ARE accepted.)
 
 OTScriptChai::ExecuteScript:
 
  Caught chaiscript::exception::eval_error:
 
   Can not find object: main_change_passphrase.
   
      File:
    
        Start position, line: 0 column: 0
      
          End position,   line: 0 column: 0
         
         
         
         Error: "Can not find object: main_change_passphrase" during evaluation at (199,
         
         37)
         
         
         
         
         
           from C:\Program Files\da2ce7-Moneychanger\data\lib\scripts\opentxs (198, 26) :
          
          
          
          
          
             from C:\Program Files\da2ce7-Moneychanger\data\lib\scripts\opentxs (198, 9) :
            
            
            
            
            
              from C:\Program Files\da2ce7-Moneychanger\data\lib\scripts\opentxs (364, 1) :
             
             
             
             
             
             
             
             
             
              Press any key to continue . . .

I really really want to get into this, but I'm just not as tech savvy as most of you here-- I'm not a programmer and I use Windows!  I very much want to see this project succeed though, since from what I understand, it is an amazing thing not just for bitcoin but for transacting online generally speaking.  Any help you can give would be much appreciated!!!
Pages:
Jump to: