Cq5 tutorial

Cq5 tutorial DEFAULT

IntroductionDay’s CQ5 platform allows you to build compelling content-centric applications that combine Web Content Management, Workflow Management, Digital Asset Management and Social Collaboration.
The product has been completely redesigned from Communiqué 4, allowing Day to use new
architecture and technologies, thus increasing functionality while reducing complexity. Extensive use of standards helps ensure long-term stability

The Graphical User Interface has been completely re-engineered using AJAX and the latest browser technologies. This leads to an unparalleled user experience. With the help of the Apache Sling framework (a core part of the CQ5 platform) it becomes fast and efficient to develop content-enabled vertical applications (CEVA) that are both JCR-based and REST-style.

All these changes ensure that CQ:

  • is easily scalable
  • is highly reliable
  • makes it easier to reuse, or extend, elements
  • is faster
  • allows for rapid development
  • is already feature-rich when taken straight out-of-the-box

CQ in-Depth
JSR-170 and the JCR API
JSR 170 is the Java Specification Request for the Content Repository for JavaTM technology API.
Specification lead is held by Day Software AG.
The JCR API package, javax.jcr.* is used for the direct access and manipulation of repository
content.The Java Content Repository (JCR) is fully leveraged with many important features; including search, versioning, access control and observation.
CRX is Day’s proprietary implementation of the JCR.
Apache Jackrabbit is an open source, fully conforming, implementation of this API.

CQ DAM (Communiqué Digital Asset Management) is used to centrally manage all digital media
files and essential metadata information.

CQ WCM has been developed using the ExtJS library of widgets.
FileVault (source revision system)
FileVault provides your JCR repository with file system mapping and version control. It can be used to manage CQ development projects with full support for storing and versioning project code,content, configurations and so on, in standard version control systems (for example, Subversion).
Workflow Engine
Your content is often subject to organizational processes, including steps such as approval and sign-off by various participants. These processes can be represented as workflows, defined within CQ, then applied to the appropriate content pages or digital assets as required.The Workflow Engine is used to manage the implementation of your workflows, and their subsequent application to your content. More information on how to use Workflows is given in the

The Dispatcher is Day’s tool for both caching and/or load balancing. Further information can be found under Tools – the Dispatcher.
Localization is at the core of CQ5. It provides support for adapting applications, created using the CQ5 platform, into different languages and regional configurations . While processing the request, the Locale is extracted. This is then used to reference a language code, and optionally a country
code, which can be used for controlling either the specific content or format of certain output.Localization will be used throughout CQ5 – wherever reasonable. One notable exception is the system log information of CQ5 itself, this is never localized and always in English.

Sling Request Processing
Introduction to Sling
CQ5 is built using Sling, a Web application framework based on REST principles that provides easy development of content-oriented applications. Sling uses a JCR repository, such as Apache Jackrabbit, or Day’s CRX, as its data store.
Sling started as an internal project of Day Management AG and is included in the installation of CQ5. Sling has since been contributed to the Apache Software Foundation – further information can be found at Apache.Using Sling, the type of content to be rendered is not the first processing consideration. Instead the
main consideration is whether the URL resolves to a content object for which a script can then befound to perform the rendering. This provides excellent support for web content authors to buildpages which are easily customized to their requirements.
The advantages of this flexibility are apparent in applications with a wide range of different content elements, or when you need pages that can be easily customized. In particular, when implementing a Web Content Management system such as CQ WCM.
Sling is Content Centric
Sling is content-centric. This means that processing is focused on the content as each (HTTP) request is mapped onto content in the form of a JCR resource (a repository node):
• the first target is the resource (JCR node) holding the content
• secondly, the representation, or script, is located from the resource properties in combination with certain parts of the request (e.g. selectors and/or the extension)
RESTful Sling Due to the content-centric philosophy, Sling implements a REST-oriented server and thus features a new concept in web application frameworks. The advantages are:
• very RESTful; resources and representations are correctly modelled inside the server
• removes one or more data models
• previously the following were needed: URL structure, business objects, DB schema;
• this is now reduced to: URL = resource = JCR structure

URL Decomposition
In Sling, and therefore also CQ5, processing is driven by the URL of the user request. This defines the content to be displayed by the appropriate scripts. To do this, information is extracted from the URL. If we analyze the following URL:


We can break it down into its composite parts:

protocol| host|content path|selector(s)  extension |suffix| param(s)
http://| myhost| tools/spy | .printable.a4. |html |/ a/b ? | x=12
Name of the website.
content path
Path specifying the content to be rendered. Is used in combination with the extension; in this
example they translate to tools/spy.html.
Used for alternative methods of rendering the content; in this example a printer-friendly version in A4 format.
Content format; also specifies the script to be used for rendering.
Can be used to specify additional information.
Any parameters required for dynamic content.

From URL to Content and Scripts

Using these principles:
• the mapping uses the content path extracted from the request to locate the resource
• when the appropriate resource is located, the sling resource type is extracted, and used to locate the script to be used for rendering the content

The figure below illustrates the mechanism used, which will be discussed in more detail in the following sections.


Mapping requests to resources
The request is broken down and the necessary information extracted. The repository is searched for the requested resource (content node):
• first Sling checks whether a node exists at the location specified in the request; e.g. ../
• if no node is found, the extension is dropped and the search repeated; e.g. ../content/
• if no node is found then Sling will return the http code 404 (Not Found).

Note:Sling also allows things other than JCR nodes to be resources, but this is an advanced

Locating the script

When the appropriate resource (content node) is located, the sling resource type is extracted. This is a path, which locates the script to be used for rendering the content.
The path specified by the sling:resourceType can be either:
• absolute
• relative, to a configuration parameter

Note:Relative paths are recommended by Day as they increase portability.
All Sling scripts are stored in subfolders of either /apps or /libs, which will be searched in this order.
A few other points to note are:
• when the Method (GET, POST) is required, it will be specified in uppercase as according to the HTTP specification e.g. jobs.POST.esp (see below)
• various script engines are supported:
• .esp, .ecma: ECMAScript (JavaScript) Pages (server-side execution)
• .jsp: Java Server Pages (server-side execution)
• .java: Java Servlet Compiler (server-side execution)
• .jst: JavaScript templates (client-side execution)
• .js: ECMAScript / JavaScript (client-side execution)
The list of script engines supported by the given instance of CQ are listed on the Felix
Management Console (http://localhost:4502/system/console/scriptengines ).

Additionally, Apache Sling supports integration with other popular scripting engines (e.g., Groovy,JRuby, Freemarker), and provides a way of integrating new scripting engines.
Using the above example, if the sling:resourceType is hr/jobs then for:
• GET/HEAD requests, and URLs ending in .html (default request types, default format)
The script will be /apps/hr/jobs/jobs.esp; the last section of the sling:resourceType
forms the file name.
• POST requests (all request types excluding GET/HEAD, the method name must be uppercase) POST will be used in the script name.The script will be /apps/h/jobs/POST.esp.
• URLs in other formats, not ending with .html For example ../content/corporat/jobs/developer.pdf
The script will be /apps/hr/jobs/jobs.pdf.esp; the suffix is added to the script name.
• URLs with selectors
Selectors can be used to display the same content in an alternative format. For example a printer friendly version, an rss feed or a summary.If we look at a printer friendly version where the selector could be print; as in ../content/corporate/jobs/developer.print.html
The script will be /apps/hr/jobs/jobs.print.esp; the selector is added to the script name.
• If no sling:resourceType has been defined then:

  •   the content path will be used to search for an appropriate script (if the path based ResourceTypeProvider is active).For example, the script for ../content/corporate/jobs/developer.html would generate a search in /apps/content/corporate/jobs/.
  • the primary node type will be used.

• If no script is found at all then the default script will be used.
The default rendition is currently supported as plain text (.txt), HTML (.html) and JSON (.json), all of which will list the node’s properties (suitably formatted). The default rendition for the extension .res, or requests without a request extension, is to spool the resource (where possible).
• For http error handling (codes 404 or 500) Sling will look for a script at /libs/sling/
servlet/errorhandler/404.esp, or 500.esp, respectively.
If multiple scripts apply for a given request, the script with the best match is selected. The more specific a match is, the better it is; in other words, the more selector matches the better, regardless of any request extension or method name match.
For example, consider a request to access the resource /content/corporate/jobs/
developer.print.a4.html of type sling:resourceType=”hr/jobs”. Assuming we have
the following list of scripts in the correct location:
1. jobs.esp
2. jobs.GET.esp
3. jobs.GET.html.esp
4. jobs.html.esp
5. jobs.print.esp
6. jobs.print.a4.esp
7. jobs.print.html.esp
8. jobs.print.GET.html.esp
9. jobs.print.a4.html.esp
Then the order of preference would be (10) – (9) – (6) – (8) – (7) – (5) – (3) – (4) – (2) – (1).

(6) is a better match than (8), because it matches more selectors even though (8) has a
method name and extension match where (6) does not.
In addition to the resource types (primarily defined by the sling:resourceType property) there
is also the resource super type. This is generally indicated by the sling:resourceSuperType
property. These super types are also considered when trying to find a script. The advantage of
resource super types is that they may form a hierarchy of resources where the default resource
type sling/servlet/default (used by the default servlets) is effectively the root.

The resource super type of a resource may be defined in two ways:
1. by the sling:resourceSuperType property of the resource.
2. by the sling:resourceSuperType property of the node to which the sling:resourceType

Sling Scripts cannot be called directly
Within Sling, scripts cannot be called directly as this would break the strict concept of a REST
server; you would mix resources and representations.
If you call the representation (the script) directly you hide the resource inside your script, so the
framework (Sling) no longer knows about it. Thus you lose certain features:
• automatic handling of http methods other than GET, including:
• POST, PUT, DELETE which are handled with a sling default implementation
• the POST.js script in your sling:resourceType location
• your code architecture is no longer as clean nor as clearly structured as it should be; of prime
importance for large-scale development

Referencing existing elements using sling:include

A final consideration is the need to reference existing elements within the scripts.
More complex scripts (aggregating scripts) might need to access multiple resources (for example
navigation, sidebar, footer, elements of a list) and do so by including the resource.
To do this you can use the sling:include(“/<path>/<resource>”) command. This will
effectively include the definition of the referenced resource, as in the following statement which
references an existing definition for rendering images:
%><sling:include resourceType=”geometrixx/components/image/img”/><%

First Steps – an example for using Sling
An introduction the first steps of developing with Sling (and CRX) can be seen on http://

OSGi defines an architecture for developing and deploying modular applications and libraries (it
is also known as the Dynamic Module System for Java). OSGi containers allow you to break your
application into individual modules (are jar files with additional meta information and called bundles
in OSGi terminology) and manage the cross-dependencies between them with:
• services implemented within the container
• a contract between the container and your application
These services and contracts provide an architecture which enables individual elements to
dynamically discover each other for collaboration.
An OSGi framework then offers you dynamic loading/unloading, configuration and control of these
bundles – without requiring restarts.

This enables you to perform the following actions on any of the packages within your installation:
• install
• start
• stop
• update
• uninstall
• see the current status
• access more detailed information (e.g. symbolic name, version, location, etc) about the specific

Next Page>>

Related articles
  • Building Search in CQ (cq5demosearch.wordpress.com)

Like this:


Sours: https://adobecq5interviewquestions.wordpress.com/introduction-to-cq/

AEM CQ5 Tutorials AEM CQ5 Tutorials

Ankur AhlawatNovember 29, 2016Adobe AEM/CQ5 Tutorials, Tutorials

Welcome to AEM CQ5 Tutorial or Adobe Experience Manager Tutorial. The purpose of creating this post is that most of AEM blogs and tutorials available online are not properly indexed. For example if a beginner want to learn AEM he doesn’t have any proper guide, where to start learning aem from and how to learn AEM. So, i have decided to create this index post that will consist all topics in sequence that a beginner should follow to learn aem.


Good To Know:-

Basic AEM Developer

AEM with HTL (HTML Template Language) formerly known as Sightly

Advanced AEM Developer

AEM System Administrator

Troubleshooting AEM

AEM Integrations

AEM Miscellaneous Tasks

AEM Programs

AEM Interview Questions

AEM Forms

The list is not completed Yet, i will add more topics soon. Feel free to suggest topics that will be added in these sections to improve AEM CQ5 Tutorial list further for AEM Beginners and Advanced developers.
Note:- The link that are not clickable yet for them i am going to add post soon 🙂

Written by Ankur Ahlawat

I’m a AEM 6 Certified Lead Developer having 9+ years of industry experience and an active member of AEM community. Want to work together to help AEM community ? I’d love to hear from you. Just drop a mail at [email protected]

61 Responses to "AEM CQ5 Tutorial for Beginners"

    1. You are amazing person and doing good things to the people As creating these wonderful blogs.I salute you for this. Really helpful.
      Greate Job…
      Keep it up..

      Many Thanks 🙂

          1. Hey Ankur, I am waiting for these two topics. Please note, the rest all downstream topics depends heavily on these.
            Will be waiting

      1. Hi Ankur,

        I’m new to AEM and need some tutorial to start with.

        Can you please share the documents/tutorial to me: [email protected]

        Thanks for all your help.

        Also can you also please let me know if we can get the trial version of jar file for practice.


        1. Hi,

          Please suggest me on this issue:

          “Once user has logged in successfully his/her name should appear in right corner of the menu”

          I have created login form, which accepting Name and Password.

          Thank in advance.

          1. After successful login, you can create a session cookie and save username in it. Then on each page fetch it from session cookie. Once user logout delete the cookie.

            1. Hi Ankur,

              I am going through AEM topics and learning a lot from this site. very nice..!! Keep it up..!!
              But i have faced difficulty to navigate through different different topic links, so i think to improve readability and easy navigation “just provide all topic links in left side”. So user can navigate through any topic whatever he want read.

              Please correct me if i am wrong.

              Akash Sadarang

            1. Hi Ankur,

              I have started learning AEM but not able to properly find material like how we get help/material for other technologies like Oracle/Java etc.
              In this regard I found your web site and felt happy that I can understand AEm as I move forward.

              Can you please share the documents/tutorial to me at: [email protected]
              regards, kumar

            2. Hi,
              I have a questionnaire form(a question with strongly agree, agree, Disagree, Strongly disagree options) and whenever user click Submit button, the form response should store in JCR repository.

              Can anyone help me with code….

              Thank You.

            3. Hi Ankur,
              this is an excellent resource that you have built up and shared with others who are interested in this filed. Thankyou. You are a breath of fresh air and you must be a fantastic asset to any team or project. I have much to learn and this will help me hugely.

            4. Hi Ankur,
              I’m a beginner to learn AEM.Could you help me in sending the documents and tutorials,So that it would be more resourceful for me to learn the concepts.
              Sharath Reddy

            5. Hi Ankur,
              Hope you are doing good.

              I have just started working in AEM and need some tutorial to start with.

              Can you please share the documents/tutorial to me – [email protected]
              Much appreciate your help in this regard.

              Thanks & Regards
              Vedanth C A

            6. Hey Ankur,
              I have just started working in AEM and need AEM road map for beginners and some tutorial to start with.

              Can you please share the documents/tutorial to me – [email protected]
              Much appreciate your help in this regard.

              -Satnam Singh

            7. Hi Ankur I am a Business Analyst & interested in exploring AEM , I have never worked on AEM before , do you have any advice for me , where I should start & how , do you have any materials that will help me .


            8. An amazing tutorial ever found on AEM. Thank you very much.
              Please keep posing new and advanced topics.

            9. Hi Ankur,
              Hope you are doing good.

              I have just started working in AEM and need some tutorial to start with.

              Can you please share the documents/tutorial to me – [email protected]
              Much appreciate your help in this regard.

              Thanks & Regards

            10. Hi,

              I’m facing issues with rollout configs while creating a new live copy. If I’m making a new live copy under any page, I’m unable to see all rollout configurations. If I restart the author after that only all configs gets load.

              Is there anyone who faced the same issue or knows the solution.


            11. Hi Ankur,

              Nice tutorial.I am a beginner to AEM and referring your blog to learn ,would request you to please update information in non clickable links this would help me better understand the topics and terms covered later on or else if you could share some documents on [email protected] that would be helpful.

            12. Hi Ankur,

              Thank you so much for me it was a gateway for studying AEM. I’m working in a AEM (CQ5) as a content developer (CMS). I’m eager to studying how to create those components which I work. so can you kindly help me in what are the basic knowledge I require to become a AEM developer ?


            13. I was kicked out of my project due to Org change and then I had landed up here, studying/brushing up hoping to get other job/project in better stable place. Thank you for your blog! God bless you & your family!!

              Would be helpful if you can forward anything which would help me in preparing! Thank you again. [email protected]

            This site uses Akismet to reduce spam. Learn how your comment data is processed.

            Sours: http://www.aemcq5tutorials.com/tutorials/aem-cq5-tutorial/
            1. Ez shelf lowes
            2. Tehillim day 8
            3. Manual faucet
            4. 6800 xt hybrid

            Adobe CQ5 Experience Manger CMS Review

            Welcome to Adobe CQ5 Tutorials. The objective of these tutorials is to provide in depth understanding of Adobe CQ5 Experience Manager concepts. In these tutorials, we will cover topics such as Architecture,  Components,  etc.

            In addition to Ajax Tutorials, we will cover common interview question and issues Adobe AEM CQ5.

            Introduction To Adobe Experience Manager

            Adobe CQ5 Developer Training teaches developers the fundamentals of building a custom CQ application, based on templates and components. This includes practice with CQ development techniques such as developing templates and authoring environments for mobile sites and websites, dynamic image rendering, navigation and modularization, using both CRXDE Lite and CRXDE.

            In-depth lecture presentations and discussions introduce concepts essential to CQ while comprehensive hands-on exercises, using CRXDE, reinforce concepts learned during lecture presentations. The overall goal of this training is to enable developers to create and understand basic CQ development practices and to prepare themselves for project work under the lead of a senior web developer.

            The CQ 5.5 Developer class is designed for developers who wish to learn more about application development with the CQ5 WCM Platform.

            Adobe CQ5 Experience Manager Architecture

            The following diagram illustrates the interrelationship between CQ and other operational elements; which may be products from Day Management AG, or their third-party equivalents:

            adobe experience manager architecture

            Interested in mastering Adobe Experience Manager ?

            Enroll Now FREE Demo on Adobe Experience Manager Training.

            Servlet Engine: The Servlet Engine acts as the server within which each CQ (and CRX if used) instance runs as a web application.Any Servlet Engine supporting the Servlet API 2.4 (or higher) can be used.Although you can run CQ WCM without an application server, a Servlet Engine is needed. Both CRX, and therefore CQ WCM, ship with Day’s CQSE (CQ Servlet Engine), which you can use freely and which is fully supported.

            Java Content Repository (JCR)A Java Content Repository uses the JSR-170 API to access the content repository using Java, independent of the physical implementation. JCR is theJava Content Repository standard, also known as JSR-170 after its Java Specification Request.A repository effectively consists of two parts:

            -A Web application that offers the JSR-170 compliant API and temporary data storage (in the form of the session).

            -A Persistence Manager with persistent data storage, such as the file system or a database.

            Content Repository Extreme (CRX) is Day Management AG’s own repository product. See the CRX documentation for more details; including direct access using WebDAV, CIFS, File Vault etc.

            CQ5 :The common foundation of the CQ5 platform provides a basis for the interoperability and seamless integration of all CQ applications. This is available to both:

            -The applications that are integral to CQ itself

            -Any customized applications developed for the CQ5 platform.

            CQ WCM (Web Content Management) and the CQ Workflow Engine were the first applications developed to exploit the advantages of CQ5. CQ DAM and CQ Social Collaboration are now available and other Day products will be developed in the near future

            Inside Adobe CQ5 Experience Manager

            Adobe CQ5 forms a stable platform for content-centric applications such as CQ WCM:

            CQ5 Internal Layers

            Adobe AEM Tutorial - Adobe CQ5 Architecture

            CQ WCM: Web Content Management within the CQ5 platform allows you to generate and publish pages to your website.

            CQ Workflow Engine: The CQ Workflow Engine is a powerful and easy to use process engine that can be used by all applications running on the CQ5 platform. A Java API and RESTful HTTP interface is also provided for access by applications outside CQ5.Within CQ WCM workflows can be used to control the process of generating and publishing content, which are often subject to organizational processes, including steps such as approval and sign-off by various participants.

            CQ Components: Components provide the logic (code) to render content. They include both templates and specific components such as Text with Image, Column Control and Subtitle amongst others. Components are based on a combination of widgets, replacing the CFC from Communiqué 4.

            CQ Widgets: Widgets are the basic elements used to implement a specific user function, often the editing of a piece of content; they include buttons, radio-boxes, dialogs, etc.

            Apache Sling: The Component Framework (Sling) provides the underlying mechanisms for rendering content.

            Learn more about Adobe Experience Manager Interview Questions in this blog post.
            Adobe CQ5 Tutorial - Adobe CQ5 Experience Manger CMS

            Created by software company Day Software, CQ5 is a content management system centered around a powerful set of management features and various Web 2.0 technologies. This CMS is geared towards webmasters who want to distance themselves from the complexities of IT and simply have an enjoyable environment to work in. According to Kevin Cochrane, Day CMO, content management should no longer be just about functionality and ease of use, but fun and unleashing innovation from within. These are benefits that also extend to developers as CQ5 gives them their chance at new ActionScript and JavaScript API’s as well as an infrastructure based on many open-source technologies and standards. However, the inexperienced user may have a tough time finding themselves around.


            Primary Features of Adobe CQ5

            When looking at the list of features, you can tell that Day put a lot of sweat into the most recent version of CQ5. While many CMS vendors are steering clear of Web 2.0, fearing it will soon be eclipsed by the Semantic Web 3.0, Day is one company that puts a huge emphasis on it. Some of its key features enable blog, forum and calendering functionality to help users incorporate that community like feel into their sites. The application also comes included with a number of pre-installed widgets for site enhancement. Web forms, comments, tags, slideshows, RSS feeds and wikis are just a few of the elements that can be used to encourage visitor interaction on you website.

            Media Management Tools

            CQ5 has a nicely integrated facility that makes it easy to maintain a variety of digital media assets. Some of the most notable features allow you to manage audio and video, Word, Excel, PowerPoint and PDF file formats, watermarking and format transcoding. One of CQ5’s best qualities from a user aspect is image editing. The platform allows full image rendering and has some pretty nice editing features. Unlike many other content management tools, CQ5 offers a browser-based cropping functionality for getting the most out of your photos as you can easily crop, rotate, map and flush images.

            Backup and Recovery

            CQ5 truly excels in terms of its backup and recovery functionality. The newest version offers a hot backup utility that allows you to create backups of your entire file system. This includes content, configuration files, modules and web scripts. Restoring a complete CQ5 instance is a simple as extracting the backup from the zip file and restarting the system. This could be a great benefit that saves a company a lot time, money and valuable resources. All it takes a single click and all data is sent to Quickstart bundled file for disaster recovery purposes, allowing you to backup and restore your business environment in minutes.

            Advantages of CQ5 Experience Manger

            -Implementation of workflows for creating, editing and publishing of content

            -Managing a repository of digital assets like images, documents and integrating them to the websites.

            -Usage of search queries to find content no matter where it is stored in your organization.

            -Setting up easily the social collaboration blogs, groups.

            -Tagging utility to organize the digital assets such as images.

            Check out the top Adobe CQ5 Interview Questions now!
            Sours: https://tekslate.com/tutorialsadobe-cq5
            Understanding Adobe Experience Manager (AEM) Dispatcher

            Text pre-extraction in AEM is very useful and highly recommended for re/indexing Lucene indexes on repositories with large binaries that contain extractable text (eg. PDFs, Word Docs, PPTs, TXT, etc.). Running re-indexing directly on lucene indexes is very expensive and may cause performance issues. After completing this tutorial you will …

            Ankur AhlawatApril 5, 2021Adobe AEM/CQ5 Tutorials, TutorialsPermalink

            Replication or Publishing content from author to publish is heart of any CMS (Content Management System). In this blog I will go …

            aem sling query

            Sling Query is basically a Sling resource tree traversal tool inspired by the jQuery JavaScript API created by Tomek Rękawek and contributed …

            aem cloud service

            Adobe Experience Manager is the recognized leader for digital experience management, and now, to strengthen this position even further. Adobe is finally …

            duplicated osgi configurations upgrade

            Duplicated OSGI Configurations is one of the most common issue that each developer face while performing upgrade from AEM 6.0 to higher …

            expression customizer aem

            Expression Customizer is an extension of Expression Language and available since AEM 6.3, but i have seen very few developers making use …

            connected assets aem

            Connected assets is  a long awaited feature by many enterprise customers of AEM. Customers that have their separate central DAM (Digital asset …

            autocomplete adaptive form

            This tutorial demonstrates on how to implement Autocomplete in an Adaptive Form. Here we have created two samples which will guide you …

            Read all Articles →

            Sours: http://www.aemcq5tutorials.com/

            Tutorial cq5

            He, too, was red and warm, almost hot. Open especially for my finger. I returned to the clitoris, her finger moving along one side, slightly touching it. I stroked the other side, and when she took her hand away with a satisfied sigh, I put my finger on the other side and quickened the.


            Sanya is in shock, not knowing what to say: -I'm in awe. All gorgeous. Awesome.

            Similar news:

            Was not enough for Vadim. Therefore, he grabbed my head and began to push on his penis. Its barrel rested right into my throat.

            9558 9559 9560 9561 9562