Auto backup of sms - Windows Mobile Development and Hacking General

Hi,
I'm looking fo a software that backup the SMS in real time, not scheduled once or twice a day
I mean that the SMS received and sent are stored elsewhere from the poutlook as they arrive
Is there a way to do this ?

I don't know if such a tool exists; however how much cpu and battery time would this take if it was constantly backing up in real time?
WB

I don't think that it would use more that other app'
I mean it stay in memory load as a service or something like that and when an SMS is sent or received (a new entry in the database) the software will just store it in a text file a something like that
I don't mean a complete backup but one by one...

For a simple implementation have a look at this:
http://www.cjcraft.com/blog/2008/06/17/30DaysOfNETWindowsMobileApplicationsDay16SMSLogger.aspx
I'm currently implementing something similar but instead of putting the sms into a text file (like in this example) I'm storing them into a sql table so that further analysis can easily be made (sort/count by sender, ...).
Some feature like autostart after reset would also be nice.
Any other ideas?
P.S.: Unfortunately I still haven't found a way to also get notified when sending messages.

heliosdev said:
For a simple implementation have a look at this:
http://www.cjcraft.com/blog/2008/06/17/30DaysOfNETWindowsMobileApplicationsDay16SMSLogger.aspx
I'm currently implementing something similar but instead of putting the sms into a text file (like in this example) I'm storing them into a sql table so that further analysis can easily be made (sort/count by sender, ...).
Some feature like autostart after reset would also be nice.
Any other ideas?
P.S.: Unfortunately I still haven't found a way to also get notified when sending messages.
Click to expand...
Click to collapse
I know that the sms data are stored in the cemail files in the root of the device.
Scanning the database (it's a database) every x minutes.... (to heavy I think)
There is no event that is catchable like RS232 connect, syncronisation, alarme.... ???

heliosdev said:
For a simple implementation have a look at this:
http://www.cjcraft.com/blog/2008/06/17/30DaysOfNETWindowsMobileApplicationsDay16SMSLogger.aspx
I'm currently implementing something similar but instead of putting the sms into a text file (like in this example) I'm storing them into a sql table so that further analysis can easily be made (sort/count by sender, ...).
Some feature like autostart after reset would also be nice.
Any other ideas?
P.S.: Unfortunately I still haven't found a way to also get notified when sending messages.
Click to expand...
Click to collapse
Hi, can you please share your sql table create/read/update code in VB .NET?
For sent sms notification, there is a way to do this using inthehand api's professional editon.

Related

SMS program

Hi Folks,
This is my first post, although I've owned my XDAIIs for several weeks and I've ROM'd it to the iMATE 1.4 ROM. So I've had a good play.
I was looking at smsOrganizer (from Jeyo) which is badly supported (and it ain't free) and I wondered why I (we) couldn't write something to do the same thing, for free.
Is there a forum for this kind of activity, or could someone point me in the direction of some exmples of how to pass data between the PC and phone?
Best regards
AndrwB
Andrew, look into RAPI: eg here
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarppc2k/html/ppc_teapppi.asp
Development and Hacking is the right place for this kind of query...what do you want the app to do?
V
Hi V,
Basically I want to control the SMS message transfer on my XDA from Outlook, just like smsOrganizer.
Re. your link, I think we've got those? but I generally write embedded C, non of this fancy C++ stuff :-((
AndrewB
Hi V,
I just tried this :
http://support.microsoft.com/default.aspx?scid=kb;en-us;307256
And I can now copy files to and from my device
Not bad for 1 hours playing, specially as I've fixed 2 work related bugs too )
Andrew B
Good stuff.
I'm just learning C++ actually, I never learnt C, coming from self-taught VB on the PC.
RAPI is the way to do most PC<>PDA communications, although right now I'm only just getting into sms stuff. It'd be easy enough (I think) to write an interface to create an SMS on the PC in text, transmit that to the PDA and then SMS it off, but the backend of it would require some implementation.
Keep us posted though!
V
99% of c programs should compile and work just fine on
c++ compilers and you can write c++ programs without using
oop in which case they are pretty much c programs
From what I've read it looks as if you need to write an app to sit on the device and another app on the main PC. The app on the phone just acts as an agent passing data between the sms services and the PC.
Anybody got any ideas?
AndrewB
Yipeeeee
I can now write a DLL that sits on the device and I can write a C++ application on my PC to communicate with it
Now to start reading some text messages from the device to the PC......
Does anybody know agood way to send and recieve SMS ?? I would also like to edit the text and pass it to an Edit Box.
I am not too sure about the available API's that will let me do this.
Please HELP :shock:
Hey , i would like to send and recieve SMS on my xda2. Also pass the recieved message into an Edit Control. Does anybody know a good way to do this ??
I know about the SMS API but i am unaware of others. Pleas Help !! thnkx
SMS Auto sending
Hi everybody,
Is there a way to auto send all sms in draft? Basically, every sms in draft folder needs to be send one by one by ticking send button.
OK,
I can now send a text message from my PC to a DLL on my phone using RAPI, then send a SMS using MAPI.
The trouble is I can't get the subject and body fields to display correctly on my XDAIIs. Also I can't get the Name to appear instead of the number.
I'll try to post the code later on the understanding that it is FREE and we pool our experiences/knowledge.
Here is the code for the DLL and the PC program. Just press one of the keys on the tol bar to send the message. The number and message are hard coded.
There are ABSOLUTELY NO guarentees with this code, use it at you own risk.
can it recieve SMS as well ?? Has any body thought about other API's to use for sending and recieving SMS's maybe ?
Well.... Not yet.
This is my first ever .net VC++ program !!!!
There are lots of code snipets around but no full source code.
This is a work in progress project hence it is in the "Development and Hacking" fourm.
If you'd like to add some functionality to it......
I am asking because there seems to be a problem when trying to recieve SMS with SMS api as the HANDLE is already attributed to the messaging application (inbox/draft/outbox).
I believe you are using RAPI ? However i do not understand this API that well could u specify a bit more ?
Thanks for your help.
Hi nutitija,
I'm only using the RAPI function to pass parameters from my PC to the XDA. The actual sending of messages is done using the MAPI in the XDA.
My biggest problem is getting the subject/body and from fields to display correctly in the different XDA mail views.

Help Read SMS

Hello,
I would like to use SMS in a new application using XDA. I want my application can read sms in inbox.
Do you know how I could see example of source code using SMS API? Or do you have such example to help me?
I got example to send sms but cannot get sample how to read the sms.
FYI, i am writing program using eVB.
Thanks a lot
You should take a look at PocketPC Network Programming by Steve Makofsky or simply try
http://groups.google.com/groups?q=pocketpc+sms+api&start=0&hl=de&ie=UTF-8&
and
http://msdn.microsoft.com/library/en-us/dnppcgen/html/sms_apps2.asp?frame=true
SMS API is not easy.
Yup, it's not very easy, you need to learn about POOM...
I advise you to look into VB .net, it's been made a hell of a lot easier.
I still do it the Medieval way though! Win32 C++ all the way :shock:
V
I did include some C code on sending/reading SMS in this post
http://forum.xda-developers.com/viewtopic.php?t=10761&highlight=
You are asking about reading messages in the Inbox that is when poom as mentioned by vijay555 comes into play.
I don't know anything about poom, but I have read incoming SMS by making my read thread take control of incoming SMS. This means that the message never goes into the inbox.
vangelderp: interesting code, not seen it before on the board. A very good way to do it. It doesn't need to be installed before pocket outlook etc does it? I don't imagine it does. Good stuff!
V
No it does not need to be installed before PPC Inbox (Outlook), what seems to happen is when a SMS message comes in the Inbox fires up. From that point on my code won't get a handle to SMSRead.
So what you need to do is do a warm reset and then start your user program (including my code sample) before any new incoming SMS messages and then it will get the SMSRead handle first. This then blocks Inbox getting a handle which I am sure it raises a error message on if you then try to go into inbox.
vangelderp: yup, that's what I thought. I never used that technique because of that, I stuck with POOM. But your createevent and thread work is very helpful.
V
SmsReadMessage of SMS.API
Thanks for your all comments.
Do you know how to use SmsReadMessage of SMS.API ?
This function is used to Reads a previously received SMS message. I really hope somebody else out there can help me how to use that function
Regards
You use SmsReadMessage like I do in the code attachment I have mentioned.
This function does not read a SMS message that has already been received by the normal PPC Inbox program. As said for that you need to use POOM.
SmsReadMessage for for your code to get a SMS Read Handle and then wait for the event (The Message) to occur and then use the SmsReadMessage function.
Exactly as I have done in my code snippit.

text messaging... smart redirects, password protection etc ?

Hi,
I would like a more intuitive messaging application. Can the standard messaging application be replaced and/or disabled. Ideally I would like to direct text and mms messages from different people to be routed into different folders and to password protect some of these folders if possible.
I would also like to kill the messaging 'envelope' icon that is displayed when a new text is received. I never want to see this.
Any idead for any/all of these, the last one is the most important to me.
many thanks,
malty
I'd like that too...
Please help us... :wink:
Thanks
Re: text messaging... smart redirects, password protection
maltloaf said:
Hi,
I would like a more intuitive messaging application. Can the standard messaging application be replaced and/or disabled. Ideally I would like to direct text and mms messages from different people to be routed into different folders and to password protect some of these folders if possible.
I would also like to kill the messaging 'envelope' icon that is displayed when a new text is received. I never want to see this.
Any idead for any/all of these, the last one is the most important to me.
many thanks,
malty
Click to expand...
Click to collapse
Ehehe! This looks like a one man - many women situation!!!
Anyway, to disable messages notification go to : Settings - Sounds and Notifications - Notification - New SMS and uncheck everything.
As for filters, folders and password i can't help, but if your friend owns a PPC too you could install Jgui ASMS (http://www.jgui.net/asms/) on both phones and use its encryption feature.
You can also try Smart Guard Pro: http://www.handango.com/PlatformPro...806&Ntt=smart guard&productId=185976&R=185976
bye
risidoro said:
You can also try Smart Guard Pro: http://www.handango.com/PlatformPro...806&Ntt=smart guard&productId=185976&R=185976
bye
Click to expand...
Click to collapse
That's kinda pricey...
I don't think it has the option of sorting incoming messages into different folders...
Did anyone try it? I don't want to spend $40 for something I won't use...
Re: text messaging... smart redirects, password protection
risidoro said:
Ehehe! This looks like a one man - many women situation!!!
Anyway, to disable messages notification go to : Settings - Sounds and Notifications - Notification - New SMS and uncheck everything.
Click to expand...
Click to collapse
I dont think this gets rid of the envelope icon in the top system tray. Thats what im after above and beyond everything else
Does anyone know if smart guard is wm5 compatible? I've emailed the programmers but havent had any replies
InfoSharp or create your own with SKschema
InfoSharp does all theses things http://www.mycnknow.com/.
SKschema has many nice scripting tools but would be more difficult since you have to create your own scrips. But it does work nicely.
Re: InfoSharp or create your own with SKschema
llestat said:
InfoSharp does all theses things http://www.mycnknow.com/.
SKschema has many nice scripting tools but would be more difficult since you have to create your own scrips. But it does work nicely.
Click to expand...
Click to collapse
Question:
Does this program use default SMS location or does it use its own?
infosharp does this perfectly (after some poking of the settings). The manual isnt very well translated into english but you get the idea eventually will report back any problems as they occur
many thanks for the recommendation
Malty
Sounds interesting...
Is InfoSharpe a bolt-on for the existing SMS software in the phone, or does it replace it? If so, is there anything the standard software does that this doesn't?
How long is the trial period and can it be cleanly uninstalled if not happy?
Andre
it runs sort of parallel to the original messaging app so you dont lose any functionality. Im using infosharp for sms and messaging for mms/email etc. Infosharp obeys the rules you apply to each contact or group (or every contact) and one of those rules is to not display in inbox, which means it doesnt get passed to 'messaging' and the txt messaging icon does not get displayed, as i required.
If you dont have 'do not display in inbox' checked, you can carry on and use messaging as normal.
At the moment I have a few folders set up, girlfriend, mates etc and it routes them and notifies me exactly as i require. Some contacts have no notification at all and i only know theres a message if i actually check the folder theyre routed to. Some have modified notifications and some have the ordinary notification.
SMS can be routed to custom folders and be available in only infosharp or routed to the inbox where they are available to both messaging and infosharp.
as it runs in parallel i cant see theres a problem uninstalling. It doesnt seem to mess with any system files but as i havent tried this i cant say for sure.
Good stuff.
Malty
maltloaf said:
it runs sort of parallel to the original messaging app so you dont lose any functionality. Im using infosharp for sms and messaging for mms/email etc. Infosharp obeys the rules you apply to each contact or group (or every contact) and one of those rules is to not display in inbox, which means it doesnt get passed to 'messaging' and the txt messaging icon does not get displayed, as i required.
If you dont have 'do not display in inbox' checked, you can carry on and use messaging as normal.
At the moment I have a few folders set up, girlfriend, mates etc and it routes them and notifies me exactly as i require. Some contacts have no notification at all and i only know theres a message if i actually check the folder theyre routed to. Some have modified notifications and some have the ordinary notification.
SMS can be routed to custom folders and be available in only infosharp or routed to the inbox where they are available to both messaging and infosharp.
as it runs in parallel i cant see theres a problem uninstalling. It doesnt seem to mess with any system files but as i havent tried this i cant say for sure.
Good stuff.
Malty
Click to expand...
Click to collapse
Are you able to create backups of all the folders? And does this program do it, or do you have to get something else?
Thanks
Luke
again its not something i've tried but there is an export / import function and also theres a file where i think everything is held anyway. (*.srm) They also do a program for the pc which can read the sms.
check the manual out here
http://www.mycnknow.com/infosharpmanul.htm

[App Request] SMS/MMS Hide function

Hey guys and girls,
Ive got a Samsung Omnia (please no booing ) and I need an application to hide text and or mms messages. I work overseas from time to time with my business and my wife and I swap MMS and text messages to each other while I am away. Having a new phone means everyone wants to check it out and i certainly do not want anyone stumbling across any MMS or text messages my wife has sent me ;-)
I have already well and truly searched this forum and the only software I can find is by evolvens and it doesn work.
Im sure it couldnt be to hard for someone to code a little piece of software to hide sms or mms depending on who sent it?
Sorry if ive posted in the wrong section, id be willing to pay for the right app and im sure many others would as well.
Cheers
Dave
hey, i ran into a problem in my last relationship where i ended up dating 2 chicks... so i had their sms' saved using ez secret sms 2.0. basically, you can set it up to run in the background, and you set certain contacts to be received in this program instead of outlook. the program can be named anything you want. so i named it something boring like system priority. you click it, and it brings up a calculator. you put in the code you specified, and hit ok... and it opens your "secret inbox." you can also set it to notify you in some way that you received a text from whoever. i set it as "islanders won!" for one chick, and "rangers lost!" for the other... pretty simple program to use, and it works fairly well.
if you want to hide just the pics, you could always just save the pics and encrypt the folder using resco explorer with a password or something. but if you really want to save the actual sms, this program worked fairly well for me.
I agree - SMS Security is great - I use it on my Diamond with no problems
I don't think it willl work with MMS though. As the post above - save the image from your MMS into your main files in a private folder. Call that folder something odd and I'm sure you friends won't open it. If you really want to protect the images, you can lock just that file with Resco or I use VisCrypt
Thanks hays and ou2mame for your input, I will try ez secret sms,
hays is this the same program you use on your diamond?
Thanks again guys
waverdr said:
Thanks hays and ou2mame for your input, I will try ez secret sms,
hays is this the same program you use on your diamond?
Thanks again guys
Click to expand...
Click to collapse
Yes it is. It works 100%
It is easy to switch it on and off reverting back to normal diamond SMS
I've emailed the author to suggest a few minor tweaks and will report back

SMS incoming problem ... solution !!!

Hi there.
I had problem with sms-messages after modaco-2.2 flashing.
When I got sms-message phone made sound and vibration but nothing to read in message program.
After reading couple hundred pages I found solution:
(Before you do this remember that this distroys your old mms and sms archive )
1. I found and downloaded adb.zip file and extracted it. You can get it from attacement. ( nope ... I can't upload it here )
2. Then I turned phones debugging on ( home-> menu-> settings-> Applications-> Developement -> USB debugging on
3. Wired phone to my mac
4. Opened terminal and then went to that directory where I extracted adb.zip
5. First checked device with command
./adb device
6. When everything was ok then shell command
./adb shell
7. Now prompt was #
8. Changed directory with command
# cd /data/data/com.android.providers.telephony/databases
9. Look that there was mmssms.db
# ls mmssms.db
10. Erased that file
# rm mmssms.db
11. Went out from shell
# exit
12. Went out from terminal
exit
13. Rebooted my phone and then everythin worked perfect.
I think that old mmssms.db file was different format than new one and thats why message-program could't use it.
I hope that this helps somebody.
...Lasse...
worked perfectly for me, thanks a lot of the tip!
The database from 2.73.405.5 build got a lot of changes to the old one (1.76.405.6). So it does not work to copy back the old Database after an update. I imported my old Mails manual to the new databasefile by accessing the database directly.
patzek said:
The database from 2.73.405.5 build got a lot of changes to the old one (1.76.405.6). So it does not work to copy back the old Database after an update. I imported my old Mails manual to the new databasefile by accessing the database directly.
Click to expand...
Click to collapse
Could you please describe how you restored your old data? I know it's a SQLite database and manually changed data in it before updating, but my knowledge with SQLite ain't that great, so I don't know "the perfect" SQL manager and so on...
Any advice is highly appreciated!
For me it was really easy as i only have SMS messages in my Database. So i wrote a very simple windows-app that imports the old messages out of the old database-file into the new database.
i have read about this fix in a german forum. it doesn't seem to fix the issue completely. i would suggest to keep smstomailbox installed for a while so we can be sure this really is a permanent fix.
This fix (german forum) does not work because the database got also changes in other parts of the database than the sms table. only in import into the new format will work.
patzek said:
For me it was really easy as i only have SMS messages in my Database. So i wrote a very simple windows-app that imports the old messages out of the old database-file into the new database.
Click to expand...
Click to collapse
Yes, I used your method when migrating from Windows to Android. It worked great and it was me who wrote directions for Notepad++ on how to change dates to proper format with regexp for other countries
Although, with the new Hero ROM database ROM seems to have changed in such a way that old message collides with new database/table structure. I will transfer new database to my computer and do some research soon.
sibbor said:
Yes, I used your method when migrating from Windows to Android. It worked great and it was me who wrote directions for Notepad++ on how to change dates to proper format with regexp for other countries
Although, with the new Hero ROM database ROM seems to have changed in such a way that old message collides with new database/table structure. I will transfer new database to my computer and do some research soon.
Click to expand...
Click to collapse
The SMSImport Application was done to import my SMS Messages from Windows Mobile. The application is based on the 1.76 Rom SMS Database.
After my Update to 2.73 is was in the same situation, how to get the messages into the new Databaseformat and so i wrote a second little application that just make a transfer from the old databsefile to the new databasefile Quick and Dirty
sibbor said:
Yes, I used your method when migrating from Windows to Android. It worked great and it was me who wrote directions for Notepad++ on how to change dates to proper format with regexp for other countries
Although, with the new Hero ROM database ROM seems to have changed in such a way that old message collides with new database/table structure. I will transfer new database to my computer and do some research soon.
Click to expand...
Click to collapse
patzek said:
The SMSImport Application was done to import my SMS Messages from Windows Mobile. The application is based on the 1.76 Rom SMS Database.
After my Update to 2.73 is was in the same situation, how to get the messages into the new Databaseformat and so i wrote a second little application that just make a transfer from the old databsefile to the new databasefile Quick and Dirty
Click to expand...
Click to collapse
Come on guys, lets share these about...
I have to migrate my brothers contacts from his Diamond to his Hero, he's on the 1.76 rom at the minute but will be upgrading to 2.73 later on.
I then have to import my messages from my old 1.76 database to my 2.73 database.
patzek said:
The SMSImport Application was done to import my SMS Messages from Windows Mobile. The application is based on the 1.76 Rom SMS Database.
After my Update to 2.73 is was in the same situation, how to get the messages into the new Databaseformat and so i wrote a second little application that just make a transfer from the old databsefile to the new databasefile Quick and Dirty
Click to expand...
Click to collapse
Ah, sorry I missunderstood. Please share your dirty solution with us ;-)! Btw, can one merge the old structure with the new one (two databases) and keep data intact from both? Or is it just a conversation from old to new structure, where you keep old messages? Either way, sounds great! I can manually add messages that I recieved in my new database "manually" afterwards
i will try to make an sql update script that will update the structure from the old database to the new one.
so i make a quick compare of the database files from a wiped hero 1.76 rom and an wiped 2.73 hero rom. the only difference is the column "index_on_sim" in the table "sms" as an integer field. an simple "alter table sms add index_on_sim integer null" would fix this. i think this field will store the id of an contact which is on the sim card stored, otherwise its value is "null" on messages that was sended and "-1" on messages that was received.
there are hugher differences between a normal android sms database and the hero one and and "easy" upgrade is not possible. its necessary to add columns to different tables and it is also necessary to have them in the right possition so that when a application try to access the column by the index and not with the column name it uses the right one. maybe there is a application in the www available that makes an automatic database update. for other databases like ms sql server there are solutions available...
patzek said:
so i make a quick compare of the database files from a wiped hero 1.76 rom and an wiped 2.73 hero rom. the only difference is the column "index_on_sim" in the table "sms" as an integer field. an simple "alter table sms add index_on_sim integer null" would fix this. i think this field will store the id of an contact which is on the sim card stored, otherwise its value is "null" on messages that was sended and "-1" on messages that was received.
there are hugher differences between a normal android sms database and the hero one and and "easy" upgrade is not possible. its necessary to add columns to different tables and it is also necessary to have them in the right possition so that when a application try to access the column by the index and not with the column name it uses the right one. maybe there is a application in the www available that makes an automatic database update. for other databases like ms sql server there are solutions available...
Click to expand...
Click to collapse
Yes, I've made this conclusion too. I've now merged my entire MMS/SMS database:
1) I exported both the 1.76 db and the 2.73 db as SQL dumps
2) Merged them together and got rid of lots of messed up data. Also I had to fix formatting for strings for the application to be able to import it properly again. Changed some ID's too.
3) Then I truncated the tables "sms" & "threads" + made minior fixes around the database (clean-up). and made changes to other ID's for it to look cleaner.
Since I've done SMS migration like this: Nokia > Windows Mobile > Android (Hero, v1.76) > Android (Hero, 2.73) there was some differences within the database. I fixed number formatting + updated data in proper places. Ex. sms.toa + sms.sc_toa (145 for one person and 0 for me), sms.person to correct ID for the contact (since there was diffs between the two Android databases and no person ID at all for earlier merged databases; Nokia + WM).
Side note: it seems sms.index_on_sim should be NULL for outgoing SMS'es and -1 for incoming (that's not stored on SIM card).
Also I added correct ID to the sms.person column for all my old SMS'es. First
Tx uttila for the sms problem solution
@uttila: it worked fine for me and my htc hero. I erased the database table mmssms.db and now it saves the messages
I have the Sprint version of the HTC Hero, Just got it a few days ago. I started noticing in about my second day having the phone that I wasnt receiving texts either. Same problem as everyone else, could send, make calls, receive calls, etc. Just couldnt recieve texts. After a while, i will eventually be able to recieve again, usually because I restart the phone, or that could just be a coincidence. But nevertheless I dont recieve any of the "lost" texts.
I just got off the phone with customer service with Sprint, They had me turn the phone off, take the battery out, and were doing some "updates" on their end. And then tried to send a text to me after turning it back on. They werent able to resolve the problem. They are telling me to take it to a Sprint store, so that they can run some tests on the phone, and send it off for a replacement.
I mentioned to the customer service rep that I've read about this problem online, that alot of people seem to be having the same problem. His response was "Yeah, I have been receiving some calls, but not to the point where we would consider it a known issue"
So I guess thats where we stand right now. Is there someway that I can fix it on my end, or is there an update out from HTC that resolve's this. Because it doesn't seem to just be a Sprint issue, since people overseas in Europe with different providers are having the same issue. So I'm guessing its a software\hardware issue, and not a network problem.
Any solutions?
Same Issue here.... about to send it back!
From Sprint's actual Hero forum users are reporting the same issue...
http://community.sprint.com/baw/thread/22913?start=30&tstart=0&reqsorting=dec
Hope posting this link is ok
Additionally it seems like some files are not being removed when performing a factory reset as I had installed a sound board and after two factory resets I noticed some sound files were still on my phone. TO me this indicates not all files are being removed correctly. I doubt the sound board messed anything up but this may indicate another app inadvertently did and the factory reset isn't cutting it as far as fixing the issue. Called Sprint and they offered to replace for free and also refreshed my syst settings which had zero impact.

Categories

Resources