Announcing Merge Text Extension for Adobe Illustrator

Justin | design,ExtendScript,extensions,Illustrator | Sunday, November 23rd, 2008

Following the release of my Combine Textfields extension for Flash, I’ve put together a similar extension for Adobe Illustrator. This extension installs a script that will merge text (including text on a path) into one text object, while retaining the style attributes of the individual pieces, including character styles as well as paragraph styles (if the separator includes a return character).

Anyone who’s tried to edit text from a PDF opened in Illustrator knows how frustrating it can be to make simple text edits when the text is broken up. This extension reduces that headache.

Special thanks to David Van Brink for posting the Omino Dialog Maker. His time-saving code was used to produce the dialog box in this extension.

Download Options

Installation Instructions

JSX or JS file:

  1. Place the MergeText_AI.jsx (or MergeText_AI_CS.js) into the Scripts directory within your Illustrator application directory:

Windows > C:\Program Files\Adobe\Adobe Illustrator {version}\Presets\en_US\Scripts
Mac OS X > Applications/Adobe Illustrator {version}/Presets/Scripts

Note: In CS4, the directory path will include a region directory (e.g. Adobe Illustrator CS4/Presets/en_US/Scripts).

MXP file (CS4 only):

  1. Double-click on the mxp file to install using Adobe Extension Manager.


In Adobe Illustrator, select the text the you want to merge together and go to File > Scripts > MergeText_AI. If you’re using Illustrator CS3 or CS4, you will be prompted with a dialog box where you can choose your sorting orientation and a custom separator. If you’re using a version earlier than CS3, you will not be prompted with a dialog; the script will run using the default settings sorting topmost, then leftmost, with a separator of “[><]“. You can then run a Find and Replace and replace the separator with the characters of your choice.


  1. Wow!

    This is cool – sounds very useful!


    Comment by Niklas — November 24, 2008 @ 12:19 pm

  2. [...] Text Extension es un script que han desarrollado en Ajar productions, como consecuencia de uno anterior realizado para Flash y que tiene como función unir varias cajas [...]

    Pingback by Desfaziendo Entuertos » Blog Archive » Merge Text - Script para unir cajas de texto en Adobe Illustrator — November 25, 2008 @ 7:50 am

  3. [...] Republished from Ajar Productions. First seen at Mordy’s Real World Illustrator blog. [...]

    Pingback by Kelso’s Corner » Blog Archive » Announcing Merge Text Extension for Adobe Illustrator (Ajar Productions) — November 26, 2008 @ 11:14 am

  4. Thanks. this will save me hours and hours.

    Comment by Andy Jones — December 3, 2008 @ 10:30 am

  5. Glad to hear it, Andy!

    Comment by Justin — December 3, 2008 @ 6:31 pm

  6. [...] the merge text extensions for Flash, Illustrator, and InDesign, Keith Gilbert wrote me wondering about getting swatch information from InDesign to [...]

    Pingback by New Extension: Send Colors from InDesign and Illustrator to Flash | Ajar Productions — December 5, 2008 @ 10:29 pm

  7. Thanks, you make my work so easily

    Comment by Jr. Perez — December 9, 2008 @ 2:13 pm

  8. [...] “Black Wednesday” for publishers and Adobe David’s post about Stripping heh heh MergeText script for Adobe Illustrator CS1–CS4 Selection to PDF script for Adobe InDesign CS3 PDF2ID [...]

    Pingback by InDesignSecrets » Blog Archive » InDesignSecrets Podcast 092 — December 9, 2008 @ 3:01 pm

  9. [...] по наводке камрада Максима. очень приятный срипт для Illustrator для объединения текстовых блоков Combine Textfields. [...]

    Pingback by Illustrator plugin: Combine Textfields » Post » DTP Craft — December 22, 2008 @ 2:48 pm

  10. I have just tried this in CS2, and when the text strings are merged into one line, the tag [><] is inserted between the two entries.

    Comment by kath — January 19, 2009 @ 4:30 am

  11. Kath, this is described in “Usage” above. CS2 doesn’t support the dialog code, so the default separator is used. You can then use find-and-replace to replace the tag with your desired separator.

    Comment by Justin — January 19, 2009 @ 6:59 pm

  12. This is awesome – thanks!
    Have you noted any trouble with spaces? If I bring a PDF into illustrator that has text broken up character by character and merge it, all spaces are removed. Is there a workaround that you’re aware of at all?

    Comment by Matt Rennick — January 23, 2009 @ 2:52 pm

  13. Never mind… stupid question. If the characters are separated individually when the PDF is brought into illustrator – how could the program be expected to know where the spaces are supposed to go?

    Comment by Matt Rennick — January 23, 2009 @ 3:06 pm

  14. Matt,
    One technique that you can use in this case: combine the letters of the first word with no spaces, then the second word, then combine the two words with a space separator, and so on. Or combine the letters of each word, then the whole block of text with a space separator. Still tedious I know, but it beats doing entirely it by hand.

    Comment by Justin — January 23, 2009 @ 5:18 pm

  15. Hello,

    Thanks very much for creating this script. I am using Adobe Illustrator CS3, and I am working with a lot of legacy information which comes with text with individual lines and even individual characters.

    Initially in the download, I noticed it opens up a web page with the program in text; so, I had to copy and paste to a text file (notepad) and rename the extension to .jsx. Then, AI didn’t recognize it initially until I exitted AI and restarted.

    I am able to merge two text strings together with this command.

    Question: since I am relatively new to AI usage.. How do I convert this text object of individual lines into a “text box” so that the text will wrap within the box? When I stretch the box of text, it stretches the letters (and changes the aspect ratio of the text) which I don’t want. I need the text to word wrap within the box and keep the text size the same.

    I am hoping there is a simple answer to this question. I tried the help menus with no luck. Perhaps, there is another script out there. This one is a good start though.



    Comment by JD — March 6, 2009 @ 10:47 pm

  16. JD,
    In the future, you should be able to right-click (ctrl-click on Mac) and choose Save Link As… Hopefully, that will save you some trouble when downloading scripts.

    Regarding the stretched letters. You can create a new text area by dragging a rectangle with the text tool and pasting your text in, or, you can just run this new script that I wrote:
    Convert to Text Area.

    Hopefully that will make life a little easier.

    Comment by Justin — March 7, 2009 @ 1:46 am

  17. Justin,

    Thanks again, your script works great.


    In regards to the merge text script, I was experiencing some issues selecting some text to merge. I would select 2 text entities to merge and it would tell me that no text entities were selected. This seems to happen to some pieces of text and not to others.

    In experimenting with it a bit, I have found that layering structure affects them. If I move some of the text out from lower level layers into higher ones, I can then select and merge them together. I am not exactly sure of the exact dynamics here.

    Does anyone understand the limitation of Merge Text as it relates to layers?


    Comment by JD — March 9, 2009 @ 7:58 pm

  18. Upon further experimentation, it appears that it doesn’t like it when you select text objects from different layer groups or layer group levels, and it doesn’t like it when you select the only 2 text objects within a layer group. A little rearrangement of the layer structure so that they are all on the same level seems to solve the issue.


    Comment by JD — March 9, 2009 @ 9:23 pm

  19. JD,
    I ran some tests to be sure. The script doesn’t really care about the stacking order of the text layers, just grouping. If your objects are grouped, it will be recognized as a group, rather than text object(s).
    I did notice that the script runs a little quirky in group isolation mode. The problem occurs when you select all of the items within group isolation mode. Ideally, you’ll want to make sure that your text is ungrouped before you run the script. When I get some time, I may look into this issue and see if it can be fixed.

    Comment by Justin — March 10, 2009 @ 1:01 am

  20. Props to this super handy Adobe Illustrator script which just saved me hours of work:

    Comment by danielrhorton (Daniel Horton) — May 21, 2009 @ 7:51 pm

  21. Thanks for this script. It’s handy for sure.

    For Aussies who need to install this script to CS4 Illustrator, download the .jsx file, put in the en_GB folder instead of en_US because the Extension Manager automatically installs into en_US which Aussie version of CS4 doesn’t use but the installation will be successful.

    Took me a little while to figure out what was wrong. There you go.

    Thanks once again.

    Comment by Leanne — May 28, 2009 @ 1:16 am

  22. Man! You really are a genius!! Thank you sooooo much! Be blessed!

    Comment by ciprian — July 13, 2009 @ 1:43 pm

  23. Hi,

    Thanks for the information,just found this post my technorati news feed section! I was searching for this since past 3 months and i am glad to see it here. Thanking you much


    Comment by Water ionizer — August 13, 2009 @ 3:58 am

  24. Wow,
    What a nice post,i just found this post story from my technorati profile news feeds section! I was searching for this since past 3 months and i am glad to see it here. Thanking you much


    Comment by Catherine Michael — October 11, 2009 @ 3:58 am

  25. Great helpful information, Thanks for this nice post, just subscribed your feed, hope you will update new post soon.
    keep it up.


    Comment by Aaron Wall — October 11, 2009 @ 8:39 am

  26. Hi,

    Thanks for this nice post, i have found this post Url from my Newswine account recent news options,just subscribed your feed, hope you will update new post soon.
    keep it up.


    Comment by Michael James — October 13, 2009 @ 5:16 am

  27. Excellent Post, i have found this post Url from my Newswine account recent news options,just subscribed your feed, hope you will update new post soon.
    keep it up.


    Comment by Jeniffer Michael — October 15, 2009 @ 11:04 am

  28. Hi,

    thanks for this amazing script. i work with a lot of diagrams that need to be pasted into illustrator. the diagrams usually have hundreds of variable names, with each variable name being split into multiple text boxes. this script allowed me to merge those boxes so that each variable name is now a single text box.

    however, the diagram has hundreds of these variables, so merging each of these individually still takes quite some time, and selecting all text, then merging, would make one massive text box w/ all variable names, which is not what i’m looking for. is there an easy way to edit this script so that it can find each grouping of words (which would consitute a single variable), and run merges for all of them?

    merging hundreds of times all at one go would be amazing and save me countless hours.


    Comment by josh — October 16, 2009 @ 6:39 pm

  29. Josh,
    Sounds interesting. I’ve never worked with variables in Illustrator before. Can you post a sample file with some instructions? I can take a look and try to put together a script.

    Comment by Justin — October 19, 2009 @ 4:20 pm


    Hi Justin,

    Thanks for looking into this! The file contains something called a Causal Loop Diagram, something used for System Dynamics analysis. These diagrams usually carry a number of variables (this sample has fewer)

    These variable names are simply text, but because each variable name is usually made up of 2-4 lines, each variable name is made up of 2-4 text boxes when pasted into illustrator. Your merge tool seamlessly merges these names into single text boxes, but the merge script needs to be run individually for each and every variable name.

    Can you think of a way to have every single “grouping of words” be merged into single text boxes by running a script only once?

    thanks! again, we are very grateful for your script and are using it even when we run it for each variable; it STILL saves us time =)

    Comment by josh — October 20, 2009 @ 7:54 pm

  31. Hello,

    Is there a way to merge text layers while keeping their format intact? Of course keeping the text editable at the same time. This script is very useful but it seems to still justify the type requiring one to re-layout and format. I have pages and pages of files that I need to condense with layers of 500 and above. I will then export them to a layered PSD format and bring them into After Effects. Have any ideas? Thank you for this great script and any input you can provide for my dilemma.


    Comment by Edward — October 29, 2009 @ 8:04 pm

  32. Hi Edward,
    This script will maintain the text format and a lot of the paragraph formatting, but maintaining indents or spacing relative to the artboard is another beast entirely.

    As far as merging layers goes, you can select the layers, then select “merge selected” from the layers panel fly-out menu. That won’t merge the text into one textfield, but it will get everything on one layer. Getting the text into one textfield and keeping the spacing between the original textfields is much more difficult to do.

    Comment by Justin — November 19, 2009 @ 8:32 pm

  33. Josh,
    I think what you’re asking can be done. I’m still planning to get back to you, just need to get a window of time.

    Comment by Justin — November 19, 2009 @ 8:34 pm

  34. [...] Merge Textframes: para combinar varios marcos de texto en uno solo, también disponible para Flash e Illustrator [...]

    Pingback by Dándole de comer a Adobe InDesign | Más de 30 Scripts y extensiones | ceslava - Diseño y Formación — December 15, 2009 @ 2:34 pm

  35. I have a suggestion for a similar, and perhaps easier, extension. For those (for example) PDFs that when opened in Illustrator consist of each character being a separate text object, I would like to have the text assembled into strings, but I don’t care a darn about maintaining fonts.

    Comment by TLMurray — February 23, 2010 @ 6:27 pm

  36. TLMurray, this extension should accomplish that as well. Where do you find it wanting in this regard?

    Comment by Justin — February 23, 2010 @ 6:41 pm

  37. For anyone who’s ever tried to edit text from a PDF opened in Illustrator

    Comment by jzelez (jzelez) — April 6, 2010 @ 6:15 am

  38. Merge multiple/broken text boxes in Illustrator with a super simple fix:

    Comment by ladycupcake (ladycupcake) — April 8, 2010 @ 7:13 pm

  39. Regarding not “caring a darn about maintaining fonts”, if the result were like your illustration at the top of this page, then a simple “select all” and setting to the same face is the same thing.

    Now, I’m not finding a way out of that “you must select more than one text field” issue. I have a three-line sample at No matter how I select the three lines, I can’t combine them.

    Comment by TLMurray — April 10, 2010 @ 1:38 am

  40. TLMurray, toggle open your “Layer 1″ in the layers panel. Two of your textfields are actually within groups (notice the sublayers are named ““). If you select all, ungroup (ctl + shift + g on Win & cmd + shift + g on Mac), then run the script, it works just fine. The interface is slightly deceptive because it will let you edit them as if they are plain textfields.

    Comment by Justin — April 10, 2010 @ 3:39 am

  41. Josh, Sorry for the long delay. Here’s a modification of the script that will merge by variable name: MergeTextByVariable.jsx.

    Comment by Justin — April 12, 2010 @ 5:30 pm

  42. This script has just made my day, month and year. Fantastic!

    Comment by shaun — April 23, 2010 @ 12:05 am

  43. That’s great to hear, Shawn!

    Comment by Justin — April 23, 2010 @ 12:11 am

  44. your so cool thanks a ton a real life saver :)

    Comment by LinZ — May 11, 2010 @ 3:20 am

  45. Stumbled on exactly what I was looking for after hours of searching. Thanks for sharing.

    Comment by Alkaline Water — June 2, 2010 @ 11:45 pm

  46. WOW!!! THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU! Seriously. You have no idea how happy I am right now about this script. You are awesome…what else do you have on this SITE!?!?!?!

    *Starts Browsing*

    Comment by Nick Stanley — June 16, 2010 @ 7:39 pm

  47. Glad to hear it, Nick!

    Comment by Justin — June 18, 2010 @ 3:51 am

  48. First of, great script! and its a super timesaver :)

    but I just upgraded to CS5 and it’s not showing up in the script folder:( anyone know how o fix it?

    Comment by Picto — August 9, 2010 @ 11:09 am

  49. Doh! Figured it out, it created a new language folder called US while my default script folder is UK, a quick “copy and paste” fixed the problem.

    Once again, nice script :)

    Comment by Picto — August 9, 2010 @ 11:13 am

  50. Nice. This just made my life a little easier.

    Big Thanks :)

    Comment by zOnk.oNe — August 17, 2010 @ 6:14 pm

  51. Great to hear it, zOnk.oNe!

    Comment by Justin — August 17, 2010 @ 6:17 pm

  52. Nice script! thanks so much.


    Comment by Jupiter Ionizer — August 25, 2010 @ 10:15 pm

  53. [...] des PlugIns von Ajar Productions ist nun einfach machbar. Ihr findet den gesammten Eintrag hier. Das MXP (Adobe Extension) als Download gibts [...]

    Pingback by Illustrator: Textfelder zusammenfassen — August 27, 2010 @ 10:46 am

  54. Thanks for this brother! will it work in cs5?

    Comment by Luis — September 3, 2010 @ 3:31 pm

  55. Hi Luis, it should work just fine in CS5, but you may have to alter the installation directory.

    Comment by Justin — September 3, 2010 @ 3:36 pm

  56. I get an error message:
    Error 24: newOminoDialog is not a function.
    -> var omd = newOminoDialog(“Merge Textfields”);

    What am I doing wrong? I have a Mac and AI CS4.

    Comment by Devon — November 3, 2010 @ 11:28 pm

  57. Hi Devon,
    It looks like you’re trying to run the CS1 file in CS4. Download the JSX file or the MXP file above. Either one of those should work fine.

    Comment by Justin — November 3, 2010 @ 11:37 pm

  58. Thanks very much for creating this script.

    Comment by waterionizer — June 2, 2011 @ 5:38 am

  59. Great script! thansk so much!

    Comment by Herrhumi — July 26, 2011 @ 9:41 am

  60. Love it! your just made my evening a lot easier!!

    Comment by jimmy — July 26, 2011 @ 7:02 pm

  61. Glad to hear it! Thanks for the comments, Jimmy and Herrhumi!

    Comment by Justin — July 26, 2011 @ 7:03 pm

  62. I am using this in CS5 PC, and when I select the text and try to merge, I get a Script Alert message that says “No textfield selected”. Anyone know why or how to fix? Thanks!

    Comment by Daniel — October 3, 2011 @ 5:26 pm

  63. Hi Daniel,
    Are the textfields locked in any way?

    Is anyone else having this issue?

    Comment by Justin — October 7, 2011 @ 5:20 pm

  64. Gracias, excelente desarrollo, no saben cuanto me ayudara!!!


    Saludos desde Chile

    Comment by Claudio — October 27, 2011 @ 1:15 am

  65. Gracias, Claudio!

    Comment by Justin — October 27, 2011 @ 8:04 pm

  66. Amazing. What a life saver. Thank you!!!

    Comment by Dylan — December 6, 2011 @ 2:27 pm

  67. Glad to hear it, Dylan! Thanks for your comment.

    Comment by Justin — December 6, 2011 @ 4:17 pm

  68. Hi,

    Very very useful script. Thanks lot.

    Comment by Kiran Ahire — January 6, 2012 @ 11:19 am

  69. THRILLING!!! You just saved me a TON of time. Thank you x a mil.

    Comment by Jules — January 11, 2012 @ 10:23 pm

  70. Awesome! Glad to hear it, Jules!

    Comment by Justin — January 12, 2012 @ 2:47 am

  71. Hi,

    I’m very excited about this product, but I’m running into some issues. It’s working for some text boxes, but for most it gives me the following error:

    JavaScrit Error!

    Error Number: 30614
    Error String: Invalid object for this request.

    (then gives the file location, etc)

    I’ve double checked that I am only selecting text boxes, and still no-go. Any suggestions?
    If it makes any difference, I used PDF2ID to convert this from a PDF, and as you may or may not know, it converts the file into all separated text boxes. I’d love to get around this somehow!

    Comment by Amy — February 1, 2012 @ 6:54 pm

  72. Hi Amy,
    I’d be happy to look at this issue. Can you post line number and source that are given when the error occurs?

    Also, let me know which version of AI you’re using. If you can post a copy of the file that would be helpful, too.

    Comment by Justin — February 1, 2012 @ 7:47 pm

  73. Well, you’re not going to believe this, but since I was messing around with the settings on my PDF2ID, I figured I should re-run the file to give you a fresh one. Guess what- all the paragraphs came in in single text boxes! The sad part is I have NO idea what setting I changed in PDF2ID, but whatever it was, it fixed my issue. Whew. Thanks so much for your prompt response though… I’ll certainly let you know if I run into this issue again!

    p.s. tried your Illustrator one and it works wonderfully- thank you!

    Comment by Amy — February 1, 2012 @ 8:33 pm

  74. yeeeeeee just saved me a bunch of time! Thanks!!!

    Comment by KO — February 7, 2012 @ 10:41 pm

  75. the script does not show up in the menu File > Scripts. it says it’s installed in adobe extension manager, what am i doing wrong?

    Comment by J — February 8, 2012 @ 2:11 pm

  76. Thanks for the comment, KO!

    Hi J, my best guess is that the version of Extension Manager does not match the version of Illustrator that you’re using. Do you have multiple versions of CS applications installed?

    Comment by Justin — February 8, 2012 @ 4:10 pm

  77. cool!

    it runs with the german illu cs5.1, when i move the file from

    C:\Program Files (x86)\Adobe\Adobe Illustrator CS5.1\Presets\en_US\Scripts


    C:\Program Files (x86)\Adobe\Adobe Illustrator CS5.1\Presets\de_DE\Skripten

    thank you!

    Comment by HP — February 29, 2012 @ 3:12 pm

  78. Glad to hear it, HP. Thanks for sharing!

    Comment by Justin — February 29, 2012 @ 4:20 pm

  79. Thanks so much for this script! It’s just what I needed.

    Comment by LSE — March 1, 2012 @ 1:37 am

  80. Awesome! Thanks for the comment, LSE!

    Comment by Justin — March 1, 2012 @ 3:37 am

  81. WOW! [><] WOW!!! Awesome Justin! Saved me a ton of time! Thank You… -Dan

    Comment by Dan — March 8, 2012 @ 2:09 am

  82. Great! Glad to hear it, Dan!

    Comment by Justin — March 8, 2012 @ 4:18 am

  83. I can’t wait to use this! I have run into this very problem hundreds of times. Unfortunately after I downloaded the MergeText_AI_en.mxp (CS4 & up – US English) and attempted to use it in my illustrator CS5 I received this error.

    Error22:Window does not have a
    Line: 341
    -> var oD = new

    Thanks in advance!

    Comment by Diana — April 16, 2012 @ 8:05 pm

  84. Hi Diana,
    This error may be a result of a corrupt preferences file on your system. To reset the preferences in Illustrator: Hold down Shift+Ctrl+Alt (Win) / Shift+Command+Option (Mac) when you start up Illustrator. Hopefully that should resolve the issue.

    Comment by Justin — April 16, 2012 @ 8:28 pm

  85. Oh, wow. Needed art and copy and only had a PDF from the other designer …. didn’t get the .AI file …. This PDF opened particularly messy when brought back to AI and it was going to take me all night to re-join the copy. You saved me hours! Thank you!

    Comment by James Keister — May 22, 2012 @ 5:55 am

  86. Awesome, James! Glad to hear it!

    Comment by Justin — May 22, 2012 @ 3:35 pm

  87. Justin, thanks so much for this script. Definitely helps.

    Would you know of a way to rejoin text that has been broken into individual letters, each letter being a path (apparently). I’m new to AI and have received this file from a designer where almost every text is broken up into individual letter, for reasons I can’t quite fathom. However, that makes it impossible to manipulate the text, unless I recreate a text object looking the same (which means I have to guess the font, size etc.)

    Here’s a screenshot.

    Comment by Dan Dascalescu — August 1, 2012 @ 9:18 am

  88. Hi Dan, glad to hear that the script helps!

    Unfortunately, once the text is converted to outlines, there isn’t a good way to get it back.

    Here’s one (admittedly convoluted) idea. Use OCR in Acrobat to recognize the text (in my version it’s found under View > Tools > Recognize Text). You may need to export from AI to high-res (300+ dpi) bitmap for this to work. You can then paste the text into Illustrator.

    Then use WhatTheFont to determine which fonts were used.

    This might save you some time for large documents.

    Comment by Justin — August 1, 2012 @ 3:42 pm

  89. THANK YOU !!! after trying SO many different things, this FINALLY worked!!! it was so much text and i tried it all at once to see if the script could handle it… it stop responding for a little while, but then i walked away for a couple minutes and came back to a fully formed paragraph that was once 5,200 separate characters. THANK YOU!!!

    Comment by kate — September 6, 2012 @ 6:29 pm

  90. Hi Kate,

    So glad it was helpful! Thanks for your comment.

    Comment by Justin — September 7, 2012 @ 2:43 am

  91. Thanks a lot for this. I had it installed on my computer at work some years ago, then I switched jobs and could not it again. But I finally did!!!!

    Thanks for assisting me with crappy clients :-)

    Comment by Gio — February 21, 2013 @ 5:50 pm

  92. Hi Gio, Glad you re-discovered our script! Happy to assist you!

    Comment by Justin — February 21, 2013 @ 5:58 pm

  93. Worked like a charm!

    Thanks a lot ;)

    Comment by Ekon — March 20, 2013 @ 11:29 pm

  94. Glad to hear it, Ekon!

    Comment by Justin — March 20, 2013 @ 11:35 pm

  95. I have loved this extension ever since it first saved the day for me….but now I cant get it to install with the new CC version…such a great tool hope there is a CC update soon?

    Comment by Greg — June 27, 2013 @ 11:54 am

  96. Hi Greg,
    I haven’t tested this in CC yet, but you can try changing the file extension from mxp to zxp. It should then install with Extension Manager CC.

    Comment by Justin — June 27, 2013 @ 2:55 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

You may use the following html tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .

× four = 24

Subscribe without commenting