Sunday, July 12, 2015

Liferay Clustering nodes communication

In Liferay clustering, Nodes communicate each other with  JGroups software.
Jgroups is Reliable and Multicast.

We use   UDP - Multicast 



##
## Multicast
##

    #
    # Consolidate multicast address and port settings in one location for easier
    # maintenance. These settings must correlate to your physical network
    # configuration (i.e. firewall, switch, and other network hardware matter)
    # to ensure speedy and accurate communication across a cluster.
    #
    # Each address and port combination represent a conversation that is made
    # between different nodes. If they are not unique or correctly set, there
    # will be a potential of unnecessary network traffic that may cause slower
    # updates or inaccurate updates.
    #

    #
    # See the property "cluster.link.channel.properties.control".
    #
    multicast.group.address["cluster-link-control"]=239.255.0.1
    multicast.group.port["cluster-link-control"]=23301

    #
    # See the properties "cluster.link.channel.properties.transport.0" and
    # "cluster.link.channel.system.properties".
    #
    multicast.group.address["cluster-link-udp"]=239.255.0.2
    multicast.group.port["cluster-link-udp"]=23302

    #
    # See the property "cluster.link.channel.system.properties".
    #
    multicast.group.address["cluster-link-mping"]=239.255.0.3
    multicast.group.port["cluster-link-mping"]=23303

    #
    # See the properties "net.sf.ehcache.configurationResourceName" and
    # "net.sf.ehcache.configurationResourceName.peerProviderProperties".
    #
    multicast.group.address["hibernate"]=239.255.0.4
    multicast.group.port["hibernate"]=23304

    #
    # See the properties "ehcache.multi.vm.config.location" and
    # "ehcache.multi.vm.config.location.peerProviderProperties".
    #
    multicast.group.address["multi-vm"]=239.255.0.5
    multicast.group.port["multi-vm"]=23305






##
## Cluster Link
##

    #
    # Set the cluster node bootup response timeout in milliseconds.
    #
    cluster.link.node.bootup.response.timeout=10000

    #
    # Set this to true to enable the cluster link. This is required if you want
    # to cluster indexing and other features that depend the cluster link.
    #
    cluster.link.enabled=false

    #
    # Set the JGroups properties for each channel, we support up to 10 transport
    # channels and 1 single required control channel. Use as few transport
    # channels as possible for best performance. By default, only one UDP
    # control channel and one UDP transport channel are enabled. Channels can be
    # configured by XML files that are located in the class path or by inline
    # properties.
    #
    cluster.link.channel.properties.control=UDP(bind_addr=localhost;mcast_group_addr=${multicast.group.address["cluster-link-control"]};mcast_port=${multicast.group.port["cluster-link-control"]}):PING:MERGE2(min_interval=5000;max_interval=10000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;discard_delivered_msgs=true):UNICAST(timeout=300,600,1200,2400):pbcast.STABLE(desired_avg_gossip=20000):FRAG(frag_size=8096):pbcast.GMS(join_timeout=5000;print_local_addr=true)
    cluster.link.channel.properties.transport.0=UDP(bind_addr=localhost;mcast_group_addr=${multicast.group.address["cluster-link-udp"]};mcast_port=${multicast.group.port["cluster-link-udp"]}):PING:MERGE2(min_interval=5000;max_interval=10000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;discard_delivered_msgs=true):UNICAST(timeout=300,600,1200,2400):pbcast.STABLE(desired_avg_gossip=20000):FRAG(frag_size=8096):pbcast.GMS(join_timeout=5000;print_local_addr=true)
    #cluster.link.channel.properties.transport.1=udp.xml
    #cluster.link.channel.properties.transport.2=mping.xml

    #
    # Set JGroups' system properties. System properties have higher priority
    # than individual properties given to each channel. That means system
    # properties will override individual properties.
    #
    cluster.link.channel.system.properties=\
        #
        # Common
        #
        \
        jgroups.bind_addr:localhost,\
        #jgroups.bind_interface:eth0,\
        \
        #
        # Multicast
        #
        \
        jgroups.mping.mcast_addr:${multicast.group.address["cluster-link-mping"]},\
        jgroups.mping.mcast_port:${multicast.group.port["cluster-link-mping"]},\
        jgroups.mping.ip_ttl:8

    #
    # Set this property to autodetect the default outgoing IP address so that
    # JGroups can bind to it. The property must point to an address that is
    # accessible to the portal server, www.google.com or your local gateway.
    #
    cluster.link.autodetect.address=www.google.com:80

##
## Cluster Executor
##

    #
    # Set this to true to enable the cluster executor debugging. This will
    # attach a debugging listener which will log every cluster event it
    # receives.
    #
    cluster.executor.debug.enabled=false

Liferay 6.1 vs Liferay 6.2



In  6.2 new features
============
ADTs  , Target Audience , New UI , Trash concept




company algorithm

in 6.1,company.encryption.algorithm=DES
in 6.2 ,company.encryption.algorithm=AES


in 6.1,
 company.encryption.key.size=56
 company.encryption.key.size=128
 
in 6.1,
  passwords.encryption.algorithm=SHA
in 6.2,
   passwords.encryption.algorithm=PBKDF2WithHmacSHA1/160/128000
 
 
 
  in 6.2, Liferay spell check in lucene search
 
 #
    # Set this to true to enable spell checking the query.
    #
    index.search.collated.spell.check.result.enabled=true

    #
    # Set the limit for considering the returned results as valid.
    # When this threshold is not met, the most relevant spell checked
    # query will be displayed.
    #
    index.search.collated.spell.check.result.scores.threshold=50




in 6.2 , some new concept Intraband

in 6.2, we have a property to contril http only cookies
 cookie.http.only.names.excludes=



In 6.2, Portal Resilency


in 6.1,     dl.file.max.size=3072000
   6.2  dl.file.max.size=0
 

 in 6.2, more lanagues support in translator portlet

   


in 6.1 by default these are true
 #
    # Set other Hibernate cache settings.
    #
    hibernate.cache.use_query_cache=false
    hibernate.cache.use_second_level_cache=false
 
 
 
In 6.2 , custom sql wildcards escapte enabled

    #
    # Set this property to true to automatically escape wildcards to literal
    # values.
    #
    custom.sql.auto.escape.wildcards.enabled=false

    #

Sunday, December 21, 2014

Liferay out of the box portlet IDs?

Open Language.properties in portal-impl.jar to find titles

javax.portlet.title.2=Account Settings
javax.portlet.title.3=Search
javax.portlet.title.9=Admin
javax.portlet.title.10=Address Book
javax.portlet.title.11=Portal Directory
javax.portlet.title.15=Web Content
javax.portlet.title.16=Currency Converter
javax.portlet.title.19=Message Boards
javax.portlet.title.20=Documents and Media
javax.portlet.title.23=Dictionary
javax.portlet.title.25=Polls
javax.portlet.title.26=Translator
javax.portlet.title.27=Unit Converter
javax.portlet.title.28=Bookmarks
javax.portlet.title.29=My Sites
javax.portlet.title.30=Network Utilities
javax.portlet.title.31=Media Gallery
javax.portlet.title.33=Blogs
javax.portlet.title.34=Shopping
javax.portlet.title.36=Wiki
javax.portlet.title.39=RSS
javax.portlet.title.48=IFrame
javax.portlet.title.49=Site Redirector
javax.portlet.title.54=Wiki Display
javax.portlet.title.56=Web Content Display
javax.portlet.title.58=Sign In
javax.portlet.title.59=Polls Display
javax.portlet.title.61=Loan Calculator
javax.portlet.title.62=Web Content List
javax.portlet.title.64=Recent Downloads
javax.portlet.title.66=Web Proxy
javax.portlet.title.67=Amazon Rankings
javax.portlet.title.70=Password Generator
javax.portlet.title.71=Navigation
javax.portlet.title.73=Breadcrumb
javax.portlet.title.77=Web Content Search
javax.portlet.title.82=Language
javax.portlet.title.83=Alerts
javax.portlet.title.84=Announcements
javax.portlet.title.85=Site Map
javax.portlet.title.86=Portlet Configuration
javax.portlet.title.88=Manage Pages
javax.portlet.title.90=Portal
javax.portlet.title.97=Quick Note
javax.portlet.title.98=Software Catalog
javax.portlet.title.99=Tags
javax.portlet.title.100=Invitation
javax.portlet.title.101=Asset Publisher
javax.portlet.title.102=XSL Content
javax.portlet.title.107=Page Comments
javax.portlet.title.108=Page Ratings
javax.portlet.title.110=Documents and Media Display
javax.portlet.title.113=Portlet CSS
javax.portlet.title.114=Recent Bloggers
javax.portlet.title.115=Blogs Aggregator
javax.portlet.title.116=Activities
javax.portlet.title.118=Nested Portlets
javax.portlet.title.121=Requests
javax.portlet.title.122=Categories Navigation
javax.portlet.title.124=Social
javax.portlet.title.125=Users and Organizations
javax.portlet.title.127=User Groups
javax.portlet.title.128=Roles
javax.portlet.title.129=Password Policies
javax.portlet.title.130=Portal Settings
javax.portlet.title.131=Monitoring
javax.portlet.title.132=Plugins Configuration
javax.portlet.title.133=Portlet Sharing
javax.portlet.title.134=Sites
javax.portlet.title.135=Portal Instances
javax.portlet.title.136=Plugins Installation
javax.portlet.title.137=Server Administration
javax.portlet.title.139=Custom Fields
javax.portlet.title.140=My Pages
javax.portlet.title.141=Tags Navigation
javax.portlet.title.142=Flags
javax.portlet.title.143=Page Flags
javax.portlet.title.144=Ratings
javax.portlet.title.145=Dockbar
javax.portlet.title.146=Page Templates
javax.portlet.title.147=Categories
javax.portlet.title.148=Tag Cloud
javax.portlet.title.149=Site Templates
javax.portlet.title.150=Workflow Tasks
javax.portlet.title.151=Workflow
javax.portlet.title.152=Workflow Configuration
javax.portlet.title.153=My Workflow Tasks
javax.portlet.title.154=Wiki
javax.portlet.title.156=Site Pages
javax.portlet.title.157=Submissions
javax.portlet.title.158=My Submissions
javax.portlet.title.161=Blogs
javax.portlet.title.162=Message Boards
javax.portlet.title.164=Fast Sign In
javax.portlet.title.165=Site Settings
javax.portlet.title.166=Dynamic Data Mapping
javax.portlet.title.167=Dynamic Data Lists
javax.portlet.title.169=Dynamic Data List Display
javax.portlet.title.173=Recent Content
javax.portlet.title.174=Site Memberships
javax.portlet.title.175=Related Assets
javax.portlet.title.176=License Manager
javax.portlet.title.178=Mobile Device Families
javax.portlet.title.179=Social Activity
javax.portlet.title.180=User Statistics
javax.portlet.title.181=Group Statistics
javax.portlet.title.182=Recycle Bin
javax.portlet.title.183=Application Display Templates
javax.portlet.title.184=Sites Directory
javax.portlet.title.186=Friends Directory
javax.portlet.title.187=Site Members Directory
javax.portlet.title.188=My Sites Directory
javax.portlet.title.190=Control Panel Home
javax.portlet.title.191=Site Teams
javax.portlet.title.192=Site Template Settings
javax.portlet.title.193=Most Viewed Assets
javax.portlet.title.194=Highest Rated Assets

what happens if we deploy a Hook with empty portal.properties file?

In 6.2, if we try to deploy empty portal.properties file we are seeing following error



04:06:01,617 INFO  [localhost-startStop-11][HookHotDeployListener:687] Registering hook for MyHook5CA-hook
04:06:01,620 ERROR [localhost-startStop-11][HookHotDeployListener:1645] Unable to read portal.properties
com.germinus.easyconf.ConfigurationNotFoundException: Error reading configuration for portal: The base properties file was not found
at com.liferay.portal.configuration.easyconf.ClassLoaderComponentConfiguration.getProperties(ClassLoaderComponentConfiguration.java:80)
at com.liferay.portal.configuration.ConfigurationImpl.getComponentProperties(ConfigurationImpl.java:414)
at com.liferay.portal.configuration.ConfigurationImpl.printSources(ConfigurationImpl.java:429)
at com.liferay.portal.configuration.ConfigurationImpl.<init>(ConfigurationImpl.java:78)
at com.liferay.portal.configuration.ConfigurationImpl.<init>(ConfigurationImpl.java:55)
at com.liferay.portal.configuration.ConfigurationFactoryImpl.getConfiguration(ConfigurationFactoryImpl.java:32)
at com.liferay.portal.kernel.configuration.ConfigurationFactoryUtil.getConfiguration(ConfigurationFactoryUtil.java:27)
at com.liferay.portal.deploy.hot.HookHotDeployListener.initPortalProperties(HookHotDeployListener.java:1641)
at com.liferay.portal.deploy.hot.HookHotDeployListener.doInvokeDeploy(HookHotDeployListener.java:698)
at com.liferay.portal.deploy.hot.HookHotDeployListener.invokeDeploy(HookHotDeployListener.java:305)
at com.liferay.portal.deploy.hot.HotDeployImpl.doFireDeployEvent(HotDeployImpl.java:208)
at com.liferay.portal.deploy.hot.HotDeployImpl.fireDeployEvent(HotDeployImpl.java:95)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:27)
at com.liferay.portal.kernel.servlet.PluginContextListener.fireDeployEvent(PluginContextListener.java:164)
at com.liferay.portal.kernel.servlet.PluginContextListener.doPortalInit(PluginContextListener.java:154)
at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56)
at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:54)
at com.liferay.portal.kernel.servlet.PluginContextListener.contextInitialized(PluginContextListener.java:116)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:656)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1635)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
04:06:01,620 INFO  [localhost-startStop-11][HookHotDeployListener:814] Hook for MyHook5CA-hook is available for use

Friday, December 5, 2014

Liferay Default database connection details in portal-impl.jar

Data Source definition
========================================
<bean id="liferayDataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
        <property name="targetDataSource" ref="liferayDataSourceWrapper" />
    </bean>

     <bean id="liferayDataSourceWrapper" class="com.liferay.portal.dao.jdbc.util.DataSourceWrapper">
        <constructor-arg ref="liferayDataSourceImpl" />
    </bean>




    <bean id="liferayDataSourceImpl" class="com.liferay.portal.dao.jdbc.spring.DataSourceFactoryBean">
        <property name="propertyPrefix" value="jdbc.default." />
    </bean>


Session Factory & Hibernate sessionFactory Definition
=========================

    <bean id="liferayHibernateSessionFactory" class="com.liferay.portal.spring.hibernate.PortalHibernateConfiguration">
        <property name="dataSource" ref="liferayDataSource" />
    </bean>

<bean id="liferaySessionFactory" class="com.liferay.portal.dao.orm.hibernate.SessionFactoryImpl">
        <property name="sessionFactoryClassLoader">
            <bean class="com.liferay.portal.kernel.util.PortalClassLoaderUtil" factory-method="getClassLoader" />
        </property>
        <property name="sessionFactoryImplementor" ref="liferayHibernateSessionFactory" />
    </bean>
   

Liferay Transaction manager
 =============================
<bean id="liferayTransactionManager" class="com.liferay.portal.spring.transaction.TransactionManagerFactory" factory-method="createTransactionManager">
        <constructor-arg ref="liferayDataSource" />
        <constructor-arg ref="liferayHibernateSessionFactory" />
    </bean>
   


Base Persistence
===============
<bean id="basePersistence" abstract="true">
        <property name="dataSource" ref="liferayDataSource" />
        <property name="sessionFactory" ref="liferaySessionFactory" />
    </bean>

Tuesday, December 2, 2014

poral.properties file

##
## Properties Override
##

    #
    # Specify where to get the overridden properties. Updates should not be made
    # on portal.properties or on portal-bundle.properties, but in
    # portal-ext.properties.
    #
    # The default read order is: portal.properties, portal-bundle.properties,
    # portal-ext.properties, and then portal-setup-wizard.properties.
    #
    include-and-override=portal-bundle.properties
    include-and-override=${liferay.home}/portal-bundle.properties
    include-and-override=portal-patched.properties
    include-and-override=${liferay.home}/portal-patched.properties
    include-and-override=portal-ext.properties
    include-and-override=${liferay.home}/portal-ext.properties
    include-and-override=portal-setup-wizard.properties
    include-and-override=${liferay.home}/portal-setup-wizard.properties

    #
    # Each portal instance can have its own overriden property file following
    # the convention portal-companyWebId.properties. To enable this feature, set
    # the "company-id-properties" system property to true.
    #
    # To enable:
    #
    #     java ... -Dcompany-id-properties=true
    #
    # The read order will now be: portal.properties, then portal-ext.properties,
    # and then portal-liferay.com.properties.
    #
    # Note that not all properties can have different values per company. This
    # functionality is only available for legacy reasons. The preferred way to
    # configure a portal instance is through the Control Panel.
    #
    include-and-override=portal-${easyconf:companyId}.properties
    include-and-override=${liferay.home}/portal-${easyconf:companyId}.properties

    #
    # Additional property files can be used by setting the "external-properties"
    # system property.
    #
    # A common use case is to keep legacy property values when upgrading to
    # newer versions of Liferay. To enable:
    #
    #     java ... -Dexternal-properties=portal-legacy-5.1.properties
    #
    # The read order will now be: portal.properties, then portal-ext.properties,
    # and then portal-legacy-5.1.properties.
    #
    include-and-override=${external-properties}
    include-and-override=${liferay.home}/${external-properties}

##
## Liferay Home
##

    #
    # Specify the Liferay home directory.
    #
    liferay.home=${resource.repositories.root}

    #
    # This property is available for backwards compatibility. Please set the
    # property "liferay.home" instead.
    #
    resource.repositories.root=${default.liferay.home}

##
## Portal Context
##

    #
    # Set the application server's HTTP port. This value should be different
    # from the value in the property "web.server.http.port". That property
    # refers to the web server, this property refers to the application server.
    # This property should only be set when the application server is sitting
    # behind a web server like Apache. See LPS-17106 for more information.
    #
    portal.instance.http.port=

    #
    # Set this property if the application server is served behind a proxy and
    # a prefix needs to be added to the portal servlet context path. This prefix
    # will also be added to static resources served by layout templates,
    # portlets, and themes.
    #
    portal.proxy.path=

##
## TCK
##

    #
    # Set this to true to enable programmatic configuration to let the Portlet
    # TCK obtain a URL for each test. This should never be set to true unless
    # you are running the TCK tests.
    #
    tck.url=false

##
## Schema
##

    #
    # Set this to true to automatically create tables and populate with default
    # data if the database is empty.
    #
    schema.run.enabled=true

##
## Upgrade
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.upgrade.UpgradeProcess. These classes will run on
    # startup to upgrade older data to match with the latest version.
    #
    # Escape the comma so that the property can be properly interpolated. For
    # example, the property "upgrade.processes.6100" will not properly reference
    # the property "upgrade.processes.default" unless the commas are escaped.
    # See StartupHelper#getUpgradeProcessClassNames(String).
    #
    upgrade.processes.master=\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_0\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_1\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_2\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_3\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_5\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_6\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_0\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_1\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_2_0

    upgrade.processes.5203=${upgrade.processes.master}
    upgrade.processes.6000=${upgrade.processes.master}
    upgrade.processes.6001=${upgrade.processes.master}
    upgrade.processes.6002=${upgrade.processes.master}
    upgrade.processes.6003=${upgrade.processes.master}
    upgrade.processes.6004=${upgrade.processes.master}
    upgrade.processes.6005=${upgrade.processes.master}
    upgrade.processes.6006=${upgrade.processes.master}
    upgrade.processes.6100=${upgrade.processes.master}
    upgrade.processes.6101=${upgrade.processes.master}
    upgrade.processes.6102=${upgrade.processes.master}
    upgrade.processes.6110=${upgrade.processes.master}
    upgrade.processes.6120=${upgrade.processes.master}
    upgrade.processes.6130=${upgrade.processes.master}
    upgrade.processes.6200=${upgrade.processes.master}

    #
    # If this property is specified with a list of classes, then the portal will
    # use this list of upgrade processes without taking into account any of the
    # other "upgrade.processes.*" property settings.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    upgrade.processes=

    #
    # The following are upgrade processes for EE releases.
    #
    upgrade.processes.5208=\
        com.liferay.portal.upgrade.UpgradeProcess_5_2_8_to_6_0_5\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_6\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_0\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_1\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_2_0

    upgrade.processes.5209=\
        com.liferay.portal.upgrade.UpgradeProcess_5_2_9_to_6_0_11\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_12\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_12_to_6_1_0\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_1\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_2_0

    upgrade.processes.6010=${upgrade.processes.master}

    upgrade.processes.6011=\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_12\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_0_12_to_6_1_0\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_1_1\,\
        com.liferay.portal.upgrade.UpgradeProcess_6_2_0

    upgrade.processes.6012=${upgrade.processes.6011}

    #
    # Set this to true to disable database transaction management during
    # upgrades. This forces autocommit which will speed up the upgrade process.
    #
    upgrade.database.transactions.disabled=true

##
## Verify
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.integrity.VerifyProcess. These classes will run on
    # startup to verify and fix any integrity problems found in the database.
    #
    verify.processes=com.liferay.portal.verify.VerifyProcessSuite

    #
    # Specify the frequency for verifying the integrity of the database.
    #
    # Constants in VerifyProcess:
    #     public static final int ALWAYS = -1;
    #     public static final int NEVER = 0;
    #     public static final int ONCE = 1;
    #
    verify.frequency=1

    #
    # Set this to true to disable database transaction management during
    # verification. This forces autocommit which will speed up the verify
    # process.
    #
    verify.database.transactions.disabled=true

##
## Convert
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.convert.ConvertProcess. These classes can be run
    # from within the Admin portlet to convert older data to match a new
    # configuration of the portal.
    #
    convert.processes=\
        com.liferay.portal.convert.ConvertDatabase,\
        com.liferay.portal.convert.ConvertDocumentLibrary,\
        com.liferay.portal.convert.ConvertDocumentLibraryExtraSettings,\
        com.liferay.portal.convert.ConvertWikiCreole

##
## Auto Deploy
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.kernel.deploy.auto.AutoDeployListener. These classes
    # are used to process the auto deployment of WARs.
    #
    auto.deploy.listeners=\
        com.liferay.portal.deploy.auto.ExtAutoDeployListener,\
        com.liferay.portal.deploy.auto.HookAutoDeployListener,\
        com.liferay.portal.deploy.auto.LayoutTemplateAutoDeployListener,\
        com.liferay.portal.deploy.auto.LiferayPackageAutoDeployListener,\
        com.liferay.portal.deploy.auto.ModuleAutoDeployListener,\
        com.liferay.portal.deploy.auto.PortletAutoDeployListener,\
        com.liferay.portal.deploy.auto.ThemeAutoDeployListener,\
        com.liferay.portal.deploy.auto.WebAutoDeployListener,\
        com.liferay.portal.deploy.auto.exploded.tomcat.HookExplodedTomcatListener,\
        com.liferay.portal.deploy.auto.exploded.tomcat.LayoutTemplateExplodedTomcatListener,\
        com.liferay.portal.deploy.auto.exploded.tomcat.PortletExplodedTomcatListener,\
        com.liferay.portal.license.deploy.auto.LicenseAutoDeployListener,com.liferay.portal.deploy.auto.exploded.tomcat.ThemeExplodedTomcatListener

    #
    # Set this to true to enable auto deploy of layout templates, portlets, and
    # themes.
    #
    auto.deploy.enabled=true

    #
    # Set the directory to scan for layout templates, portlets, and themes to
    # auto deploy.
    #
    auto.deploy.deploy.dir=${liferay.home}/deploy

    #
    # Set the directory where auto deployed WARs are copied to. The application
    # server or servlet container must know to listen on that directory.
    # Different containers have different hot deploy paths. For example, Tomcat
    # listens on "${catalina.base}/webapps" whereas JBoss listens on
    # "${jboss.home.dir}/deploy". Set a blank directory to automatically use the
    # application server specific directory.
    #
    auto.deploy.dest.dir=
    auto.deploy.default.dest.dir=../webapps
    auto.deploy.geronimo.dest.dir=${org.apache.geronimo.home.dir}/deploy
    auto.deploy.glassfish.dest.dir=${com.sun.aas.instanceRoot}/autodeploy
    auto.deploy.jboss.dest.dir=${jboss.home.dir}/standalone/deployments
    auto.deploy.jboss.dest.dir[5]=${jboss.server.home.dir}/deploy
    auto.deploy.jetty.dest.dir=${jetty.home}/webapps
    auto.deploy.jonas.dest.dir=${jonas.base}/deploy
    auto.deploy.resin.dest.dir=${resin.home}/webapps
    auto.deploy.tomcat.dest.dir=${catalina.base}/webapps
    auto.deploy.weblogic.dest.dir=${env.DOMAIN_HOME}/autodeploy
    auto.deploy.websphere.dest.dir=${env.USER_INSTALL_ROOT}/wsadmin-deploy

    #
    # Set the interval in milliseconds on how often to scan the directory for
    # changes.
    #
    auto.deploy.interval=3000

    #
    # Set this to true if deployed WARs are unpacked. Set this to false if your
    # application server has concurrency issues with deploying large WARs.
    #
    auto.deploy.unpack.war=true

    #
    # Set this to true if plugins should automatically copy Commons Logging.
    #
    auto.deploy.copy.commons.logging=true

    #
    # Set this to true if plugins should automatically copy Log4j.
    #
    auto.deploy.copy.log4j=true

    #
    # Set this to true if you want the deployer to rename portlet.xml to
    # portlet-custom.xml. This is only needed when deploying the portal on
    # WebSphere 6.1.x with a version before 6.1.0.7 because WebSphere's portlet
    # container will try to process a portlet at the same time that Liferay is
    # trying to process a portlet.
    #
    auto.deploy.custom.portlet.xml=false

    #
    # Set this to 1 if you are using JBoss' PrefixDeploymentSorter. This will
    # append a 1 in front of your WAR name. For example, if you are deploying a
    # portlet called test-portlet.war, it will deploy it to 1test-portlet.war.
    # JBoss now knows to load this portlet after the other WARs have loaded.
    # However, it will remove the 1 from the context path.
    #
    # Modify /server/default/conf/jboss-service.xml.
    # See org.jboss.deployment.scanner.PrefixDeploymentSorter.
    #
    auto.deploy.jboss.prefix=

    #
    # Set the Glassfish settings to enable JSR 88 application deployment.
    #
    auto.deploy.glassfish.jee.deployment.enabled=false
    auto.deploy.glassfish.jee.dm.id=deployer:Sun:AppServer::localhost:4848
    auto.deploy.glassfish.jee.dm.user=admin
    auto.deploy.glassfish.jee.dm.passwd=adminadmin
    auto.deploy.glassfish.jee.df.classname=com.sun.enterprise.deployapi.SunDeploymentFactory

    #
    # Set the path to Tomcat's configuration directory. This property is used to
    # auto deploy exploded WARs. Tomcat context XML files found in the auto
    # deploy directory will be copied to Tomcat's configuration directory. The
    # context XML file must have a docBase attribute that points to a valid WAR
    # directory.
    #
    auto.deploy.tomcat.conf.dir=../conf/Catalina/localhost

    #
    # Set the path to Tomcat's global class loader. This property is only used
    # by Tomcat in a standalone environment.
    #
    auto.deploy.tomcat.lib.dir=../common/lib/ext

    #
    # Set the options used when calling the AdminApp.install command.
    #
    # See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9
    # for more information.
    #
    auto.deploy.websphere.wsadmin.app.manager.install.options=-appname ${auto.deploy.websphere.wsadmin.app.name} -contextroot /${plugin.servlet.context.name} -usedefaultbindings

    #
    # Set the options used when calling the AdminApp.list command.
    #
    # See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9
    # for more information.
    #
    auto.deploy.websphere.wsadmin.app.manager.list.options=

    #
    # Set the options used when calling the AdminApp.update command.
    #
    # See http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/topic/com.ibm.websphere.express.doc/info/exp/ae/rxml_adminapp.html#rxml_adminapp__cmd9
    # for more information.
    #
    auto.deploy.websphere.wsadmin.app.manager.update.options=-contents ${auto.deploy.dest.dir}/${plugin.servlet.context.name}.war -contextroot /${plugin.servlet.context.name} -operation update -usedefaultbindings

    #
    # WebSphere 6 and 7 do not support the ability to hot deploy a WAR. The
    # portal will attempt to use the wsadmin script to install a hot deployed
    # plugin at runtime if this property is set. The wsadmin script uses this
    # property to query the WebSphere application manager. Set this property
    # to a blank value to disable this feature.
    #
    #auto.deploy.websphere.wsadmin.app.manager.query=
    auto.deploy.websphere.wsadmin.app.manager.query=type=ApplicationManager,process=server1,*

    #
    # Set the suffix to be added to the plugin servlet context name in order to
    # identify the WebSphere process it is deployed to. Leave it blank to use
    # the plugin servlet context name only.
    #
    auto.deploy.websphere.wsadmin.app.name.suffix=

    #
    # Set the properties file name to use when invoking the wsadmin command.
    # Configure this property to change the the behavior of the wsadmin command,
    # such as connection port or protocol.
    #
    auto.deploy.websphere.wsadmin.properties.file.name=

    #
    # Set the URLs of libraries that might be needed to download during the
    # auto deploy process.
    #
    library.download.url.resin.jar=http://cdn.files.liferay.com/public/quercus/4.0.11/resin.jar
    library.download.url.script-10.jar=http://cdn.files.liferay.com/public/quercus/3.1.9/script-10.jar

##
## Hot Deploy
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.kernel.deploy.hot.HotDeployListener. These classes are
    # used to process the deployment and undeployment of WARs at runtime.
    #
    # The listeners are invoked in the order defined by this property.
    # PluginPackageHotDeployListener must always be invoked first.
    # SpringHotDeployListener must always be invoked before
    # ServletContextListenerHotDeployListener. MessagingHotDeployListener must
    # always be invoked last.
    #
    hot.deploy.listeners=\
        com.liferay.portal.deploy.hot.PluginPackageHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.SpringHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.ServletContextListenerHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.ExtHotDeployListener,\
        com.liferay.portal.deploy.hot.HookHotDeployListener,\
        com.liferay.portal.deploy.hot.JSONWebServiceHotDeployListener,\
        com.liferay.portal.deploy.hot.LayoutTemplateHotDeployListener,\
        com.liferay.portal.deploy.hot.PortletHotDeployListener,\
        com.liferay.portal.deploy.hot.SocialHotDeployListener,\
        com.liferay.portal.deploy.hot.ThemeHotDeployListener,\
        com.liferay.portal.deploy.hot.ThemeLoaderHotDeployListener,\
        \
        com.liferay.portal.deploy.hot.MessagingHotDeployListener

##
## Hot Undeploy
##

    #
    # Set this to true to enable undeploying plugins.
    #
    hot.undeploy.enabled=true

    #
    # Set the undeploy interval in milliseconds on how long to wait for the
    # undeploy process to finish.
    #
    hot.undeploy.interval=0

    #
    # Set this to true to undeploy a plugin before deploying a new version. This
    # property will only be used if the property "hot.undeploy.enabled" is set
    # to true.
    #
    hot.undeploy.on.redeploy=false

##
## Sandbox Deploy
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.kernel.deploy.sandbox.SandboxDeployListener. These
    # classes are used to process sandbox style plugins.
    #
    sandbox.deploy.listeners=\
        com.liferay.portal.deploy.sandbox.PortletSandboxDeployListener,\
        com.liferay.portal.deploy.sandbox.ThemeSandboxDeployListener

    #
    # Set this to true to enable sandbox style plugin development.
    #
    sandbox.deploy.enabled=false

    #
    # Set the directory to scan for sand box style plugins.
    #
    sandbox.deploy.dir=${liferay.home}/sandbox

    #
    # Set the interval in milliseconds on how often to scan the directory for
    # changes.
    #
    sandbox.deploy.interval=3000

##
## Plugin
##

    #
    # Input a list of comma delimited supported plugin types.
    #
    plugin.types=portlet,theme,layout-template,hook,web

    #
    # Input a list of Liferay plugin repositories separated by \n characters.
    #
    plugin.repositories.trusted=
    plugin.repositories.untrusted=

    #
    # Set this property to false to avoid receiving on screen notifications
    # when there is a new version of an installed plugin.
    #
    plugin.notifications.enabled=false

    #
    # Input a list of plugin packages ids separated by \n characters.
    # Administrators won't be notified when a new version of these plugins are
    # available. The ids are of the form groupId/artifactId. You can also end
    # the id with an asterisk to match any id that starts with the previous
    # character.
    #
    #plugin.notifications.packages.ignored=liferay/sample-jsp-portlet

##
## Portlet
##

    #
    # Set this property to set the default virtual path for all hot deployed
    # portlets. See liferay-portlet-app_6_1_0.dtd and the virtual-path element
    # for more information.
    #
    portlet.virtual.path=

    #
    # Set this property to true to validate portlet.xml against the portlet
    # schema.
    #
    portlet.xml.validate=true

    #
    # Portlets that have configured liferay-portlet.xml with the element
    # "add-default-resource" set to true will allow those portlets to be
    # dynamically added to any page by any user. This is useful
    # (and necessary) for some portlets that need to be dynamically added to a
    # page, but it can also pose a security risk because it also allows any user
    # to do it.
    #
    # Set this property to true to add a security check around this behavior.
    # If set to true, then portlets can only be dynamically added to a page if
    # it contains a proper security token. This security token is automatically
    # passed when using a portlet URL from one portlet to another portlet.
    #
    # Modify the property "portlet.add.default.resource.check.whitelist" to
    # whitelist certain portlets from this security check.
    #
    # The security check utilizes the implementation set in the property
    # "auth.token.impl".
    #
    portlet.add.default.resource.check.enabled=true

    #
    # Set a list of comma delimited portlet ids that will bypass the security
    # check set in the property "portlet.add.default.resource.check.enabled".
    #
    portlet.add.default.resource.check.whitelist=3,56_INSTANCE_0000,58,82,86,103,113,145,164,166,170

    #
    # Input a list of comma delimited struts actions that will bypass the
    # security check set in the property
    # "portlet.add.default.resource.check.enabled".
    #
    portlet.add.default.resource.check.whitelist.actions=\
        /journal/rss,\
        /language/view

    #
    # Input a regular expression to ban paths that cannot be used to serve
    # resources in portlets.
    #
    portlet.resource.id.banned.paths.regexp=.*/(?:META-INF|WEB-INF)/.*

##
## Portlet Container
##

    #
    # Set this property to true to restrict portlet communication via request
    # attributes. See the property "layout.parallel.render.enable" on how that
    # property affects this property.
    #
    portlet.container.restrict=true

##
## Portlet Coordination
##

    #
    # This property controls how cross layout portlet URLs are invoked. When set
    # to "render", only render URLs will be allowed invocation across
    # different layouts. When set to "all", all portlet URL types will be
    # allowed invocation.
    #
    portlet.cross.layout.invocation.mode=render

    #
    # Set this property to specify how events are distributed. If the value is
    # "layout-set", then events will be distributed to all portlets contained in
    # a layout set. If the value is "layout", then events will be distributed to
    # all portlets that are present in a layout.
    #
    portlet.event.distribution=layout

    #
    # Set this property to specify how public render parameters are distributed.
    # If the value is "layout-set", then public render parameters will be
    # distributed to all portlets contained in a layout set. This will only work
    # correctly if the property "layout.default.p_l_reset" is set to false. If
    # the value is "layout", then public render parameters will be distributed
    # to all portlets that are present in a layout.
    #
    portlet.public.render.parameter.distribution=layout

##
## Portlet Display Templates
##

    #
    # Set the location of the default help content for portlet display
    # templates for each language type.
    #
    portlet.display.templates.help[ftl]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_help.ftl
    portlet.display.templates.help[vm]=com/liferay/portlet/portletdisplaytemplate/dependencies/portlet_display_template_help.vm

##
## Portlet Filters
##

    #
    # Input a list of portlet filters that will be applied to all portlets.
    #
    portlet.filters.system=com.liferay.portlet.ScriptDataPortletFilter

##
## Theme
##

    #
    # Set this property to true to load the theme's merged CSS files for faster
    # loading for production.
    #
    # Set this property to false for easier debugging for development. You can
    # also disable fast loading by setting the URL parameter "css_fast_load" to
    # "0".
    #
    theme.css.fast.load=true

    #
    # Set this property to true to load the theme's merged image files for
    # faster loading for production.
    #
    # Set this property to false for easier debugging for development. You can
    # also disable fast loading by setting the URL parameter "images_fast_load"
    # to "0".
    #
    theme.images.fast.load=true

    #
    # Set this property to true to allow directly invoked JSPs to be
    # overridden by a different version of the JSP that exists in a theme.
    #
    theme.jsp.override.enabled=false

    #
    # Set the theme's shortcut icon.
    #
    theme.shortcut.icon=favicon.ico

    #
    # Set this property to set the default virtual path for all hot deployed
    # themes. See liferay-look-and-feel_6_1_0.dtd and the virtual-path element
    # for more information.
    #
    theme.virtual.path=

    #
    # Set this with an absolute path to specify where imported theme files from
    # a LAR will be stored. This path will override the file-storage path
    # specified in liferay-theme-loader.xml.
    #
    theme.loader.storage.path=

    #
    # Themes can be imported via LAR files. Set this to true if imported themes
    # should use a new theme id on every import. This will ensure that a copy of
    # the old theme is preserved in the theme loader storage path. However, this
    # also means that a lot of themes that are no longer used remain in the file
    # system. It is recommended that you set this to false.
    #
    theme.loader.new.theme.id.on.import=false

    #
    # Set this to true to decorate portlets by default.
    #
    theme.portlet.decorate.default=true

    #
    # Set this to true to expose sharing icons for portlets by default.
    #
    theme.portlet.sharing.default=false

##
## Resource Actions
##

    #
    # Input a list of comma delimited resource action configurations that will
    # be read from the class path.
    #
    resource.actions.configs=resource-actions/default.xml

    #
    # This should only be set to false when it is called by Service Builder
    # outside of an application server or servlet container.
    #
    resource.actions.read.portlet.resources=true

##
## Model Hints
##

    #
    # Input a list of comma delimited model hints configurations.
    #
    model.hints.configs=\
        META-INF/portal-model-hints.xml,\
        classpath*:META-INF/ext-model-hints.xml,\
        META-INF/portlet-model-hints.xml

##
## Model Tree Path
##

    #
    # Set the batch size of database query results returned during the tree
    # rebuilding operation. If set to -1, the results will not be paginated
    # and may result in a larger memory footprint.
    #
    model.tree.rebuild.query.results.batch.size=10000

##
## Service Builder
##

    #
    # Input a list of common delimited method prefixes designated for read-only
    # transactions. Service Builder will use these prefixes to annotate methods
    # that are to run in read-only transactions.
    #
    service.builder.service.read.only.prefixes=\
        fetch,\
        get,\
        has,\
        is,\
        load,\
        reindex,\
        search

##
## Spring
##

    #
    # Input a list of comma delimited Spring configurations. These will be
    # loaded after the bean definitions specified in the contextConfigLocation
    # parameter in web.xml.
    #
    # Note that there is a special case for hibernate-spring.xml and
    # jpa-spring.xml. Even though both files are specified, only one will
    # actually load at runtime based on the property "persistence.provider".
    #
    spring.configs=\
        META-INF/base-spring.xml,\
        \
        META-INF/hibernate-spring.xml,\
        META-INF/infrastructure-spring.xml,\
        META-INF/management-spring.xml,\
        \
        META-INF/util-spring.xml,\
        \
        META-INF/jpa-spring.xml,\
        \
        META-INF/executor-spring.xml,\
        \
        META-INF/audit-spring.xml,\
        META-INF/cluster-spring.xml,\
        META-INF/editor-spring.xml,\
        META-INF/jcr-spring.xml,\
        META-INF/ldap-spring.xml,\
        META-INF/messaging-core-spring.xml,\
        META-INF/messaging-misc-spring.xml,\
        META-INF/mobile-device-spring.xml,\
        META-INF/notifications-spring.xml,\
        META-INF/poller-spring.xml,\
        META-INF/rules-spring.xml,\
        META-INF/scheduler-spring.xml,\
        META-INF/search-spring.xml,\
        META-INF/workflow-spring.xml,\
        \
        META-INF/counter-spring.xml,\
        META-INF/mail-spring.xml,\
        META-INF/portal-spring.xml,\
        META-INF/portlet-container-spring.xml,\
        META-INF/staging-spring.xml,\
        META-INF/virtual-layouts-spring.xml,\
        \
        META-INF/monitoring-spring.xml,\
        \
        #META-INF/dynamic-data-source-spring.xml,\
        #META-INF/shard-data-source-spring.xml,\
        #META-INF/memcached-spring.xml,\
        \
        classpath*:META-INF/ext-spring.xml

    #
    # Set the bean name for the Liferay data source.
    #
    spring.hibernate.data.source=liferayDataSource

    #
    # Set the bean name for the Liferay session factory.
    #
    spring.hibernate.session.factory=&liferaySessionFactory

    #
    # Set the list of portal classes that will be preloaded by the
    # PreloadClassloader and therefore available to a plugin's Hibernate session
    # factory.
    #
    spring.hibernate.configuration.proxy.factory.preload.classloader.classes=\
        javassist.util.proxy.MethodHandler,\
        javassist.util.proxy.ProxyObject,\
        javassist.util.proxy.RuntimeSupport,\
        org.hibernate.proxy.HibernateProxy,\
        org.hibernate.proxy.LazyInitializer

    #
    # Set the list of portal classes that will be preloaded by the
    # PreloadClassloader and therefore available to a plugin's Hibernate session
    # factory.
    #
    spring.hibernate.session.factory.preload.classloader.classes=\
        org.hibernate.engine.jdbc.WrappedBlob

    #
    # Set this property to false to manually open and close sessions.
    #
    spring.hibernate.session.delegated=true

##
## Persistence
##

    #
    # Set the provider used for ORM persistence. If this property is set to
    # "jpa", then the properties with the prefix "jpa." will be read. If this
    # property is set to "hibernate", then the properties with the prefix
    # "hibernate." will be read.
    #
    # Note that this property affects the loading of hibernate-spring.xml or
    # jpa-spring.xml in the property "spring.configs".
    #
    persistence.provider=hibernate
    #persistence.provider=jpa

##
## Hibernate
##

    #
    # Input a list of comma delimited Hibernate configurations.
    #
    hibernate.configs=\
        META-INF/mail-hbm.xml,\
        META-INF/portal-hbm.xml,\
        classpath*:META-INF/ext-hbm.xml

    #
    # Liferay will automatically detect the Hibernate dialect in
    # com.liferay.portal.spring.PortalHibernateConfiguration. Set this property
    # to manually override the automatically detected dialect.
    #
    #hibernate.dialect=

    #
    # Set the Hibernate connection release mode. You should not modify this
    # unless you know what you're doing. The default setting works best for
    # Spring managed transactions. See the method buildSessionFactory in class
    # org.springframework.orm.hibernate3.LocalSessionFactoryBean and search for
    # the phrase "on_close" to understand how this works.
    #
    #hibernate.connection.release_mode=on_close

    #
    # Set the Hibernate cache region factory. Ehcache is recommended in a
    # clustered environment. See the property
    # "net.sf.ehcache.configurationResourceName" for detailed configuration.
    #
    hibernate.cache.region.factory_class=com.liferay.portal.dao.orm.hibernate.region.SingletonLiferayEhcacheRegionFactory

    #
    # This property is used if Hibernate is configured to use Ehcache's region
    # factory.
    #
    net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml

    #
    # Configure this property if using Ehcache's default replication method for
    # Hibernate's region cache.
    #
    net.sf.ehcache.configurationResourceName.peerProviderProperties=peerDiscovery=automatic,multicastGroupAddress=${multicast.group.address["hibernate"]},multicastGroupPort=${multicast.group.port["hibernate"]},timeToLive=1

    #
    # Set other Hibernate cache settings.
    #
    hibernate.cache.use_query_cache=false
    hibernate.cache.use_second_level_cache=false
    hibernate.cache.use_minimal_puts=true
    hibernate.cache.use_structured_entries=false

    #
    # Set the JDBC batch size to improve performance.
    #
    # If you're using Hypersonic, you SHOULD set the batch size to 0 as a
    # workaround for a logging bug in the Hypersonic driver. See LPS-5426 for
    # more information.
    #
    # If you're using Oracle 9i, you MUST set the batch size to 0 as a
    # workaround for a hanging bug in the Oracle driver. See LEP-1234 for more
    # information.
    #
    #hibernate.jdbc.batch_size=0
    hibernate.jdbc.batch_size=20

    #
    # Set other miscellaneous Hibernate properties.
    #
    hibernate.jdbc.use_scrollable_resultset=true
    hibernate.bytecode.use_reflection_optimizer=true
    hibernate.show_sql=false

    #
    # Use the classic query factory until WebLogic and Hibernate 3 can get
    # along. See http://www.hibernate.org/250.html#A23 for more information.
    #
    hibernate.query.factory_class=org.hibernate.hql.classic.ClassicQueryTranslatorFactory

    #
    # Set this property to true to enable Hibernate cache monitoring. See
    # LPS-2056 for more information.
    #
    hibernate.generate_statistics=false

##
## JPA
##

    #
    # Set this property to "none" to disable the JPA validation. Some
    # application servers have the validation JARs in the global class path
    # which causes conflicts with Hibernate. See LPS-22453 for more information.
    #
    javax.persistence.validation.mode=none

    #
    # Input a list of comma delimited JPA configurations.
    #
    jpa.configs=\
        META-INF/mail-orm.xml,\
        META-INF/portal-orm.xml

    #
    # Set the name of the JPA provider.
    #
    jpa.provider=eclipselink
    #jpa.provider=hibernate
    #jpa.provider=openjpa
    #jpa.provider=toplink

    #
    # Specify provider specific properties prefixed with "jpa.provider.property."
    #
    jpa.provider.property.eclipselink.allow-zero-id=true
    #jpa.provider.property.eclipselink.logging.level=FINEST
    #jpa.provider.property.eclipselink.logging.timestamp=true

    #
    # The LoadTimeWeaver interface is a Spring class that allows JPA
    # ClassTransformer instances to be plugged in a specific manner depending on
    # the environment.
    #
    # Not all JPA providers require a JVM agent (Hibernate is an example). If
    # your provider does not require an agent or you have other alternatives
    # (such as applying enhancements at build time through a custom compiler or
    # an Ant task), then the loadtime weaver should not be used.
    #
    jpa.load.time.weaver=org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver
    #jpa.load.time.weaver=org.springframework.instrument.classloading.glassfish.GlassFishLoadTimeWeaver
    #jpa.load.time.weaver=org.springframework.instrument.classloading.oc4j.OC4JLoadTimeWeaver
    #jpa.load.time.weaver=org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver

    #
    # Specify a specific database platform setting if the JPA provider is not
    # able to detect the database platform.
    #
    # Valid values for the Hibernate and OpenJPA providers are: DB2, DERBY,
    # HSQL, INFORMIX, MYSQL, ORACLE, POSTGRESQL, SQL_SERVER, and SYBASE.
    #
    # Valid values for the EclipseLink provider are:
    # org.eclipse.persistence.platform.database.DB2MainframePlatform,
    # org.eclipse.persistence.platform.database.DB2Platform,
    # org.eclipse.persistence.platform.database.DerbyPlatform,
    # org.eclipse.persistence.platform.database.HSQLPlatform,
    # org.eclipse.persistence.platform.database.InformixPlatform,
    # org.eclipse.persistence.platform.database.MySQLPlatform,
    # org.eclipse.persistence.platform.database.OraclePlatform,
    # org.eclipse.persistence.platform.database.PostgreSQLPlatform,
    # org.eclipse.persistence.platform.database.SQLServerPlatform, or
    # org.eclipse.persistence.platform.database.SybasePlatform.
    #
    # Check with JPA provider's documentation for details and all possible
    # values.
    #
    #jpa.database.platform=

    #
    # Liferay will automatically detect the database type by initializing
    # DBUtil. You can override the value here if needed. Expected values are:
    # db2, derby, firebird, hypersonic, informix, ingres, interbase, jdatastore,
    # mysql, oracle, postgresql, sap, sqlserver, and sybase.
    #
    #jpa.database.type=

##
## JDBC
##

    #
    # Set the JNDI name to lookup the JDBC data source. If none is set,
    # then the portal will attempt to create the JDBC data source based on the
    # properties prefixed with "jdbc.default.".
    #
    #jdbc.default.jndi.name=jdbc/LiferayPool

    #
    # Set the properties used to create the JDBC data source. These properties
    # will only be read if the property "jdbc.default.jndi.name" is not set.
    #
    # The default settings are configured for an in-memory database called
    # Hypersonic that is not recommended for production use. Please change the
    # properties to use another database.
    #
    # Add dynamic-data-source-spring.xml to the property "spring.configs" to
    # configure the portal to use one database cluster for read calls and
    # another database cluster for write calls. The convention is to create a
    # set of properties prefixed with "jdbc.read." to handle read calls and
    # another set of properties prefixed with "jdbc.write." to handle write
    # calls. These data sources can also be created via JNDI by setting the
    # properties "jdbc.read.jndi.name" and "jdbc.write.jndi.name". Note that
    # these settings, though separate, are a copy of the default settings with
    # the newly overridden values.
    #

    #
    # DB2
    #
    #jdbc.default.driverClassName=com.ibm.db2.jcc.DB2Driver
    #jdbc.default.url=jdbc:db2://localhost:50000/lportal:deferPrepares=false;fullyMaterializeInputStreams=true;fullyMaterializeLobData=true;progresssiveLocators=2;progressiveStreaming=2;
    #jdbc.default.username=db2admin
    #jdbc.default.password=lportal

    #
    # Derby
    #
    #jdbc.default.driverClassName=org.apache.derby.jdbc.EmbeddedDriver
    #jdbc.default.url=jdbc:derby:lportal
    #jdbc.default.username=
    #jdbc.default.password=

    #
    # Hypersonic
    #
    jdbc.default.driverClassName=org.hsqldb.jdbcDriver
    jdbc.default.url=jdbc:hsqldb:${liferay.home}/data/hsql/lportal
    jdbc.default.username=sa
    jdbc.default.password=

    #
    # Ingres
    #
    #jdbc.default.driverClassName=com.ingres.jdbc.IngresDriver
    #jdbc.default.url=jdbc:ingres://localhost:II7/lportal
    #jdbc.default.username=
    #jdbc.default.password=

    #
    # MySQL
    #
    #jdbc.default.driverClassName=com.mysql.jdbc.Driver
    #jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
    #jdbc.default.username=
    #jdbc.default.password=

    #
    # Oracle
    #
    #jdbc.default.driverClassName=oracle.jdbc.driver.OracleDriver
    #jdbc.default.url=jdbc:oracle:thin:@localhost:1521:xe
    #jdbc.default.username=lportal
    #jdbc.default.password=lportal

    #
    # P6Spy
    #
    #jdbc.default.driverClassName=com.p6spy.engine.spy.P6SpyDriver
    #jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
    #jdbc.default.username=
    #jdbc.default.password=

    #
    # PostgreSQL
    #
    #jdbc.default.driverClassName=org.postgresql.Driver
    #jdbc.default.url=jdbc:postgresql://localhost:5432/lportal
    #jdbc.default.username=sa
    #jdbc.default.password=

    #
    # SQL Server
    #
    #jdbc.default.driverClassName=net.sourceforge.jtds.jdbc.Driver
    #jdbc.default.url=jdbc:jtds:sqlserver://localhost/lportal
    #jdbc.default.username=sa
    #jdbc.default.password=

    #
    # Sybase
    #
    #jdbc.default.driverClassName=net.sourceforge.jtds.jdbc.Driver
    #jdbc.default.url=jdbc:jtds:sybase://localhost:5000/lportal
    #jdbc.default.username=sa
    #jdbc.default.password=

    #
    # Liferay can use C3PO, DBCP, or Tomcat for connection pooling. See
    # com.liferay.portal.dao.jdbc.util.DataSourceFactoryBean for the actual
    # implementation. It is important to understand the strengths and weaknesses
    # of each provider so that you can choose the best one that fits your
    # deployment scenario. Provider specific properties can also be passed along
    # directly to the provider. For example, the property
    # "jdbc.default.acquireIncrement" is read by C3PO, and the property
    # "jdbc.default.maxActive" is read by DBCP.
    #
    # The default provider is C3PO.
    #
    jdbc.default.liferay.pool.provider=c3po
    #jdbc.default.liferay.pool.provider=dbcp
    #jdbc.default.liferay.pool.provider=tomcat

    #
    # The following properties will be read by C3PO if Liferay is configured to
    # use C3PO in the property "jdbc.default.liferay.pool.provider". See
    # http://www.mchange.com/projects/c3p0/index.html#configuration for a list
    # of additional fields used by C3PO for configuring database connections.
    #
    jdbc.default.acquireIncrement=5
    jdbc.default.acquireRetryAttempts=3
    jdbc.default.acquireRetryDelay=1000
    jdbc.default.connectionCustomizerClassName=com.liferay.portal.dao.jdbc.pool.c3p0.PortalConnectionCustomizer
    jdbc.default.idleConnectionTestPeriod=60
    jdbc.default.maxIdleTime=3600
    jdbc.default.maxPoolSize=100
    jdbc.default.minPoolSize=10
    jdbc.default.numHelperThreads=10
    #jdbc.default.transactionIsolation=1

    #
    # The following properties will be read by both DBCP and Tomcat JDBC
    # Connection Pool if Liferay is configured to use DBCP or Tomcat JDBC
    # Connection Pool in the property "jdbc.default.liferay.pool.provider". See
    # http://commons.apache.org/dbcp/configuration.html and
    # http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html for a list of
    # additional fields used by DBCP or Tomcat JDBC Connection Pool for
    # configuring database connections.
    #
    #jdbc.default.defaultTransactionIsolation=READ_UNCOMMITTED
    jdbc.default.maxActive=100
    jdbc.default.minIdle=10
    jdbc.default.removeAbandonedTimeout=3600

    #
    # The following properties will be read by Tomcat JDBC Connection Pool if
    # Liferay is configured to use Tomcat JDBC Connection Pool in the property
    # "jdbc.default.liferay.pool.provider". See
    # http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html for a list of
    # additional fields used by Tomcat JDBC Connection Pool for configuring
    # database connections.
    #
    jdbc.default.jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState
    jdbc.default.jmxEnabled=true
    jdbc.default.fairQueue=true
    jdbc.default.timeBetweenEvictionRunsMillis=30000
    jdbc.default.useEquals=false

##
## Custom SQL
##

    #
    # Set this property to true to automatically escape wildcards to literal
    # values.
    #
    custom.sql.auto.escape.wildcards.enabled=false

    #
    # Input a list of comma delimited custom SQL configurations.
    #
    custom.sql.configs=custom-sql/default.xml

    #
    # Some databases do not recognize a NULL IS NULL check. Set the
    # "custom.sql.function.isnull" and "custom.sql.function.isnotnull"
    # properties for your specific database.
    #
    # There is no need to manually set these properties because
    # com.liferay.portal.spring.PortalHibernateConfiguration already sets it.
    # However, these properties are available so that you can see how you can
    # override it for a database that PortalHibernateConfiguration does not yet
    # know how to auto configure.
    #

    #
    # DB2
    #
    #custom.sql.function.isnull=CAST(? AS VARCHAR(32672)) IS NULL
    #custom.sql.function.isnotnull=CAST(? AS VARCHAR(32672)) IS NOT NULL

    #
    # MySQL (for testing only)
    #
    #custom.sql.function.isnull=IFNULL(?, '1') = '1'
    #custom.sql.function.isnotnull=IFNULL(?, '1') = '0'

    #
    # Sybase
    #
    #custom.sql.function.isnull=CONVERT(VARCHAR,?) IS NULL
    #custom.sql.function.isnotnull=CONVERT(VARCHAR,?) IS NOT NULL

##
## Database
##

    #
    # Set this property to true to update database indexes on startup. This will
    # ensure that all necessary indexes are added and that unnecessary indexes
    # are removed. Only indexes that have names that match "LIFERAY_" OR "IX_"
    # will be updated. Make sure that your custom indexes do not match the
    # Liferay pattern to ensure that your custom indexes are not removed as
    # unnecessary indexes.
    #
    database.indexes.update.on.startup=false

    #
    # Specify any database vendor specific settings.
    #

    #
    # MySQL
    #

    #
    # Set the MySQL engine type. InnoDB is the recommended engine because it
    # provides transactional integrity.
    #
    database.mysql.engine=InnoDB

##
## Transaction
##

    #
    # Set the transaction isolation level for the Counter service. See
    # "transaction.isolation.portal" for more information. The preferred value
    # is 8 when the transaction manager supports it. If the transaction manager
    # does not support it, (i.e. when using JPA and JpaTransactionManager) set
    # this to -1 to use the database's default isolation level.
    #
    transaction.isolation.counter=2

    #
    # Set the definition of the "portal" transaction isolation level. The
    # "portal" transaction isolation level is not a real isolation level. It is
    # just a pointer to a real isolation level that can be configured by setting
    # this property. Set the value to -1 to use the database's default isolation
    # level. Set the value to 2 to use "read committed". Set the value to 1 to
    # use "read uncommitted". Set the value to 4 to use "repeatable read". Set
    # the value to 8 to use "serializable".
    #
    transaction.isolation.portal=2

    #
    # Set the transaction manager. It must be a class that extends
    # org.springframework.transaction.support.AbstractPlatformTransactionManager.
    #
    # The application server specific transaction managers provide XA
    # transactions by leveraging application server specific data sources and
    # thus require additional application server specific configuration. You
    # should not modify this unless you know what you're doing.
    #
    transaction.manager.impl=com.liferay.portal.spring.hibernate.LastSessionRecorderHibernateTransactionManager
    #transaction.manager.impl=org.springframework.transaction.jta.JtaTransactionManager
    #transaction.manager.impl=org.springframework.transaction.jta.OC4JJtaTransactionManager
    #transaction.manager.impl=org.springframework.transaction.jta.WebLogicJtaTransactionManager
    #transaction.manager.impl=org.springframework.transaction.jta.WebSphereUowTransactionManager

    #
    # Additional properties that follow the pattern
    # "transaction.manager.property.*" will be read to call the setters on the
    # transaction manager. For example, the property
    # "transaction.manager.property.globalRollbackOnParticipationFailure", will
    # call the setter "setGlobalRollbackOnParticipationFailure" on the
    # transaction manager. The list of available setters depends on the
    # implementation specified in the property "transaction.manager.impl".
    #
    # "allowCustomIsolationLevels" should be set to true when using the
    # JtaTransactionManager.
    #
    #transaction.manager.property.allowCustomIsolationLevels=true
    transaction.manager.property.globalRollbackOnParticipationFailure=false

##
## Transactional Cache
##

    #
    # Set this property to true to enable transactional cache. When enabled,
    # changes to caches take effect when transaction commits successfully.
    # Caches rollback when transactions rollback.
    #
    transactional.cache.enable=true

    #
    # Set a list of comma delimited transactional portal cache names. The "?"
    # character represents a single character wildcard. The "*" symbol character
    # a multiple character wildcard. The "%" character is used to escape
    # characters.
    #
    transactional.cache.names=com.liferay.portal.kernel.dao.orm.EntityCache*,com.liferay.portal.kernel.dao.orm.FinderCache*,com.liferay.portal.service.persistence.impl.TableMapper-*,com.liferay.portlet.PortalPreferencesWrapperCacheUtil

##
## Sharded Databases
##

    #
    # Set the database that is to be used for the default company and globally
    # used tables in a sharded environment.
    #
    shard.default.name=default

    #
    # Specify an algorithm for selecting a new shard on portal instance
    # creation. Use ManualShardSelector for shard selection via the web
    # interface.
    #
    shard.selector=com.liferay.portal.dao.shard.RoundRobinShardSelector
    #shard.selector=com.liferay.portal.dao.shard.ManualShardSelector

##
## Ehcache
##

    #
    # Set the classpath to the location of the Ehcache config file for internal
    # caches. Edit the file specified in the property
    # "ehcache.multi-vm.config.location" to enable clustered cache.
    #
    ehcache.single.vm.config.location=/ehcache/liferay-single-vm.xml
    ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml

    #
    # Uncomment the following in a clustered environment.
    #
    ehcache.multi.vm.config.location.peerProviderProperties=peerDiscovery=automatic,multicastGroupAddress=${multicast.group.address["multi-vm"]},multicastGroupPort=${multicast.group.port["multi-vm"]},timeToLive=1

    #
    # Set this to true to enable the Ehcache bootstrap cache loader.
    #
    ehcache.bootstrap.cache.loader.enabled=false

    #
    # Input a class name that extends
    # net.sf.ehcache.bootstrap.BootstrapCacheLoaderFactory. This class is used
    # by Ehcache to determine how caches communicate with each other in a
    # clustered environment.
    #
    ehcache.bootstrap.cache.loader.factory=net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory
    #ehcache.bootstrap.cache.loader.factory=com.liferay.portal.cache.ehcache.JGroupsBootstrapCacheLoaderFactory

    #
    # Input a class name that extends
    # net.sf.ehcache.event.CacheEventListenerFactory. This class is used by
    # Ehcache to determine how caches communicate with each other in a clustered
    # environment.
    #
    ehcache.cache.event.listener.factory=net.sf.ehcache.distribution.RMICacheReplicatorFactory
    #ehcache.cache.event.listener.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory

    #
    # Input a class name that extends
    # net.sf.ehcache.distribution.CacheManagerPeerProviderFactory. This class is
    # used by Ehcache to determine how caches communicate with each other in a
    # clustered environment.
    #
    ehcache.cache.manager.peer.provider.factory=net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory
    #ehcache.cache.manager.peer.provider.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory

    #
    # The Ehcache cache manager internally maintains a scheduled thread pool
    # executor for statistics. The default size of tthe scheduled thread pool
    # executor is set to the number of CPUs. This is too heavy for a server with
    # a lot of processors. Set this property to reduce the scheduled thread pool
    # size.
    #
    ehcache.cache.manager.statistics.thread.pool.size=1

    #
    # Set this to true to enable JMX integration in
    # com.liferay.portal.cache.EhcachePortalCacheManager. Set this to false if
    # the portal needs to be reloaded under WebSphere.
    #
    ehcache.portal.cache.manager.jmx.enabled=true

    #
    # Set this to true to allow Ehcache to use blocking caches. This improves
    # performance significantly by locking on keys instead of the entire cache.
    # The drawback is that threads can hang if the cache is not used properly.
    # Make sure that all queries that return a miss also immediately populate
    # the cache, or else other threads that are blocked on a query of that same
    # key will continue to hang. Reference Ehcache's BlockingCache for more
    # information. The blocking cache is no longer implemented by Ehcache's
    # BlockingCache, but by Liferay's BlockingPortalCache for better safety and
    # faster performance.
    #
    # Blocking cache together with transactional cache performs poorly, because
    # transactional cache affects the cache population visibility across
    # transactions. When transactional cache is on, blocking cache most likely
    # does nothing useful unless the transaction window time is short. When
    # transactional cache is off, it is better to turn on blocking cache for
    # better database access performance.
    #
    ehcache.blocking.cache.allowed=false

    #
    # Set the socket timeout in milliseconds.
    #
    ehcache.socket.so.timeout=10000

    #
    # Set the start port for Ehcache socket. The port number will increase by 1
    # until it finds an unused port.
    #
    ehcache.socket.start.port=32454

##
## JavaScript
##

    #
    # Set a list of JavaScript files that will be loaded automatically in
    # /html/common/themes/top_js.jsp.
    #
    # There are two lists of files specified in the properties
    # "javascript.barebone.files" and "javascript.everything.files".
    #
    # As the name suggests, the barebone list is the minimum list of JavaScript
    # files required for most cases. The everything list includes everything
    # else not listed in the barebone list.
    #
    # The two lists of files exist for performance reasons because
    # unauthenticated users usually do not utilize all the JavaScript that is
    # available. See the property "javascript.barebone.enabled" for more
    # information on the logic of when the barebone list is used and when the
    # everything list is used and how to customize that logic.
    #
    # The list of files are also merged and packed for further performance
    # improvements. See the property "javascript.fast.load" for more details.
    #

    #
    # Specify the list of barebone files.
    #
    # The ordering of the JavaScript files is important.
    #
    # The Liferay scripts are grouped in such a way, that the first grouping
    # denotes utility scripts that are used by the second and third groups. The
    # second grouping denotes utility classes that rely on the first group, but
    # does not rely on the second or third group. The third grouping denotes
    # modules that rely on the first and second group.
    #
    javascript.barebone.files=\
        \
        #
        # YUI core
        #
        \
        aui/aui/aui.js,\
        aui/aui-base-html5-shiv/aui-base-html5-shiv.js,\
        \
        #
        # Liferay module definitions
        #
        \
        liferay/browser_selectors.js,\
        liferay/modules.js,\
        \
        #
        # AUI sandbox
        #
        \
        liferay/aui_sandbox.js,\
        \
        #
        # YUI modules
        #
        \
        aui/arraylist-add/arraylist-add.js,\
        aui/arraylist-filter/arraylist-filter.js,\
        aui/arraylist/arraylist.js,\
        aui/array-extras/array-extras.js,\
        aui/array-invoke/array-invoke.js,\
        aui/attribute-base/attribute-base.js,\
        aui/attribute-complex/attribute-complex.js,\
        aui/attribute-core/attribute-core.js,\
        aui/attribute-observable/attribute-observable.js,\
        aui/attribute-extras/attribute-extras.js,\
        aui/base-base/base-base.js,\
        aui/base-pluginhost/base-pluginhost.js,\
        aui/classnamemanager/classnamemanager.js,\
        aui/datatype-xml-format/datatype-xml-format.js,\
        aui/datatype-xml-parse/datatype-xml-parse.js,\
        aui/dom-base/dom-base.js,\
        aui/dom-core/dom-core.js,\
        aui/dom-screen/dom-screen.js,\
        aui/dom-style/dom-style.js,\
        aui/event-base/event-base.js,\
        aui/event-custom-base/event-custom-base.js,\
        aui/event-custom-complex/event-custom-complex.js,\
        aui/event-delegate/event-delegate.js,\
        aui/event-focus/event-focus.js,\
        aui/event-hover/event-hover.js,\
        aui/event-key/event-key.js,\
        aui/event-mouseenter/event-mouseenter.js,\
        aui/event-mousewheel/event-mousewheel.js,\
        aui/event-outside/event-outside.js,\
        aui/event-resize/event-resize.js,\
        aui/event-simulate/event-simulate.js,\
        aui/event-synthetic/event-synthetic.js,\
        aui/intl/intl.js,\
        aui/io-base/io-base.js,\
        aui/io-form/io-form.js,\
        aui/io-queue/io-queue.js,\
        aui/io-upload-iframe/io-upload-iframe.js,\
        aui/io-xdr/io-xdr.js,\
        aui/json-parse/json-parse.js,\
        aui/json-stringify/json-stringify.js,\
        aui/node-base/node-base.js,\
        aui/node-core/node-core.js,\
        aui/node-event-delegate/node-event-delegate.js,\
        aui/node-event-simulate/node-event-simulate.js,\
        aui/node-focusmanager/node-focusmanager.js,\
        aui/node-pluginhost/node-pluginhost.js,\
        aui/node-screen/node-screen.js,\
        aui/node-style/node-style.js,\
        aui/oop/oop.js,\
        aui/plugin/plugin.js,\
        aui/pluginhost-base/pluginhost-base.js,\
        aui/pluginhost-config/pluginhost-config.js,\
        aui/querystring-stringify-simple/querystring-stringify-simple.js,\
        aui/queue-promote/queue-promote.js,\
        aui/selector-css2/selector-css2.js,\
        aui/selector-css3/selector-css3.js,\
        aui/selector-native/selector-native.js,\
        aui/selector/selector.js,\
        aui/widget-base/widget-base.js,\
        aui/widget-htmlparser/widget-htmlparser.js,\
        aui/widget-skin/widget-skin.js,\
        aui/widget-uievents/widget-uievents.js,\
        aui/yui-throttle/yui-throttle.js,\
        \
        #
        # Alloy core
        #
        \
        aui/aui-base-core/aui-base-core.js,\
        aui/aui-base-lang/aui-base-lang.js,\
        \
        #
        # Alloy modules
        #
        \
        aui/aui-classnamemanager/aui-classnamemanager.js,\
        aui/aui-component/aui-component.js,\
        aui/aui-debounce/aui-debounce.js,\
        aui/aui-delayed-task-deprecated/aui-delayed-task-deprecated.js,\
        aui/aui-event-base/aui-event-base.js,\
        aui/aui-event-input/aui-event-input.js,\
        aui/aui-form-validator/aui-form-validator.js,\
        aui/aui-node-base/aui-node-base.js,\
        aui/aui-node-html5/aui-node-html5.js,\
        aui/aui-selector/aui-selector.js,\
        aui/aui-timer/aui-timer.js,\
        \
        #
        # Liferay base utility scripts
        #
        \
        liferay/dependency.js,\
        liferay/events.js,\
        liferay/language.js,\
        liferay/liferay.js,\
        liferay/util.js,\
        \
        #
        # Liferay utility scripts
        #
        \
        liferay/portal.js,\
        liferay/portlet.js,\
        liferay/portlet_sharing.js,\
        liferay/workflow.js,\
        \
        #
        # Liferay modules
        #
        \
        liferay/form.js,\
        liferay/form_placeholders.js,\
        liferay/icon.js,\
        liferay/menu.js,\
        liferay/notice.js,\
        liferay/poller.js

    #
    # Specify the list of everything files (everything else not already in the
    # list of barebone files).
    #
    javascript.everything.files=\
        \
        #
        # YUI modules
        #
        \
        aui/async-queue/async-queue.js,\
        aui/base-build/base-build.js,\
        aui/cookie/cookie.js,\
        aui/event-touch/event-touch.js,\
        aui/overlay/overlay.js,\
        aui/querystring-stringify/querystring-stringify.js,\
        aui/widget-child/widget-child.js,\
        aui/widget-position-align/widget-position-align.js,\
        aui/widget-position-constrain/widget-position-constrain.js,\
        aui/widget-position/widget-position.js,\
        aui/widget-stack/widget-stack.js,\
        aui/widget-stdmod/widget-stdmod.js,\
        \
        #
        # Alloy modules
        #
        \
        aui/aui-aria/aui-aria.js,\
        aui/aui-io-plugin-deprecated/aui-io-plugin-deprecated.js,\
        aui/aui-io-request/aui-io-request.js,\
        aui/aui-loading-mask-deprecated/aui-loading-mask-deprecated.js,\
        aui/aui-overlay-base-deprecated/aui-overlay-base-deprecated.js,\
        aui/aui-overlay-context-deprecated/aui-overlay-context-deprecated.js,\
        aui/aui-overlay-manager-deprecated/aui-overlay-manager-deprecated.js,\
        aui/aui-overlay-mask-deprecated/aui-overlay-mask-deprecated.js,\
        aui/aui-parse-content/aui-parse-content.js,\
        \
        #
        # Liferay modules
        #
        \
        liferay/address.js,\
        liferay/dockbar.js,\
        liferay/layout_exporter.js,\
        liferay/session.js,\
        \
        #
        # Deprecated JS
        #
        \
        liferay/deprecated.js

    #
    # Set this property to false to always load JavaScript files listed in the
    # property "javascript.everything.files". Set this to true to sometimes
    # load "javascript.barebone.files" and sometimes load
    # "javascript.everything.files".
    #
    # The default logic is coded in com.liferay.portal.events.ServicePreAction
    # in such a way that unauthenticated users get the list of barebone
    # JavaScript files whereas authenticated users get both the list of barebone
    # JavaScript files and the list of everything JavaScript files.
    #
    javascript.barebone.enabled=true

    #
    # Set this property to true to load the packed version of files listed in
    # the properties "javascript.barebone.files" or
    # "javascript.everything.files".
    #
    # Set this property to false for easier debugging for development. You can
    # also disable fast loading by setting the URL parameter "js_fast_load" to
    # "0".
    #
    javascript.fast.load=true

    #
    # Input a list of comma delimited properties that are valid bundle ids for
    # the JavaScript minifier.
    #
    javascript.bundle.ids=\
        javascript.barebone.files,\
        javascript.everything.files

    #
    # Define a bundle directory for each property listed in
    # "javascript.bundle.ids".
    #
    javascript.bundle.dir[javascript.barebone.files]=/html/js
    javascript.bundle.dir[javascript.everything.files]=/html/js

    #
    # Define the bundle dependencies using any property listed in
    # "javascript.bundle.ids".
    #
    javascript.bundle.dependencies[javascript.everything.files]=javascript.barebone.files

    #
    # Set this to true to enable the display of JavaScript logging.
    #
    javascript.log.enabled=false

##
## SQL Data
##

    #
    # Set the default SQL ids for common objects.
    #
    sql.data.com.liferay.portal.model.Country.country.id=19
    sql.data.com.liferay.portal.model.Region.region.id=5
    sql.data.com.liferay.portal.model.ListType.account.address=10000
    sql.data.com.liferay.portal.model.ListType.account.email.address=10004
    sql.data.com.liferay.portal.model.ListType.contact.email.address=11003
    sql.data.com.liferay.portal.model.ListType.organization.status=12017

    #
    # Set the maximum parameters that a SQL transaction query can contain. Some
    # databases do not allow for more than 2000 parameters in a query.
    #
    sql.data.max.parameters=1000

##
## Weblogic
##

    #
    # Set the strategy for non-serializable wrapping on Weblogic. If set to
    # true, the wrapping is done for all objects. If set to false, no wrapping
    # is done, but Weblogic must be configured not serializae request
    # attributes.
    #
    weblogic.request.wrap.non.serializable=true

##
## Company
##

    company.default.name=Liferay

    #
    # This sets the default web id. Omniadmin users must belong to the company
    # with this web id.
    #
    company.default.web.id=liferay.com

    #
    # This sets the default home URL of the portal.
    #
    company.default.home.url=/web/guest

    #
    # This sets the default locale of the portal, overriding the properties
    # "user.language" and "user.country" specified in system.properties.
    #
    #company.default.locale=en_US

    #
    # This sets the default time zone of the portal.
    #
    company.default.time.zone=UTC

    #
    # Set this to the appropriate encryption algorithm to be used for
    # company level encryption algorithms (except password encryption which is
    # defined via the property "passwords.encryption.algorithm").
    #
    # If you change this setting, you may need to also change the property
    # "company.encryption.key.size" to configure the desired encryption key
    # size.
    #
    # For more details about encryption keys, see the Java Cryptography
    # Extension documentation.
    #
    company.encryption.algorithm=AES
    #company.encryption.algorithm=Blowfish
    #company.encryption.algorithm=DES
    #company.encryption.algorithm=DESede

    #
    # Set this to define the size used for the company wide encryption key. If
    # you change this setting, you may need to also change the property
    # "company.encryption.algorithm" to ensure the algorithm supports your key
    # size. Most encryption algorithm implementations do not support key sizes
    # stronger than 128. Only those with unlimited strength cryptography support
    # stronger keys.
    #
    # For more details about supported key sizes for encryption keys, see
    # the Java Cryptography Extension documentation.
    #
    #company.encryption.key.size=56
    company.encryption.key.size=128
    #company.encryption.key.size=168
    #company.encryption.key.size=256
    #company.encryption.key.size=384
    #company.encryption.key.size=512

    #
    # The login field is prepopulated with the company's domain name if the
    # login is unpopulated and user authentication is based on email addresses.
    # Set this to false to disable the behavior.
    #
    company.login.prepopulate.domain=true

    #
    # The portal can authenticate users based on their email address, screen
    # name, or user id.
    #
    company.security.auth.type=emailAddress
    #company.security.auth.type=screenName
    #company.security.auth.type=userId

    #
    # Set this to true to ensure users login with https. If this is set to true
    # and you want your HTTP session to contain your credentials after logging
    # in, then the property "session.enable.phishing.protection" must be set to
    # false or your credentials will only be available in the HTTPS session.
    #
    company.security.auth.requires.https=false

    #
    # Set this to true to allow users to select the "remember me" feature to
    # automatically login to the portal.
    #
    company.security.auto.login=true

    #
    # Set this to the maximum age (in number of seconds) of the browser cookie
    # that enables the "remember me" feature. A value of 31536000 signifies
    # lifespan of one year. A value of -1 signifies a lifespan of a browser
    # session.
    #
    # Rather than setting this to 0, set the property
    # "company.security.auto.login" to false to disable the "remember me"
    # feature.
    #
    company.security.auto.login.max.age=31536000

    #
    # Set this to true to allow users to autocomplete the login form based on
    # their previously entered values.
    #
    company.security.login.form.autocomplete=true

    #
    # Set this to true to allow users to ask the portal to send them their
    # password.
    #
    company.security.send.password=true

    #
    # Set this to true to allow users to ask the portal to send them a password
    # reset link.
    #
    company.security.send.password.reset.link=true

    #
    # Set this to true to allow strangers to create accounts and register
    # themselves on the portal.
    #
    company.security.strangers=true

    #
    # Enter a friendly URL of a page that will be used to create new accounts
    # whenever the user clicks the "create account" link in the login portlet.
    # This allows providing custom portlets to create accounts. By default, the
    # portal's create account will be used.
    #
    #company.security.strangers.url=/create_account

    #
    # Set this to true if strangers can create accounts with email addresses
    # that match the company mail suffix. This property is not used unless
    # "company.security.strangers" is also set to true.
    #
    company.security.strangers.with.mx=true

    #
    # Set this to true if strangers who create accounts need to be verified via
    # email.
    #
    company.security.strangers.verify=false

    #
    # Set this to true to allow site administrators to use their own logo
    # instead of the enterprise logo.
    #
    company.security.site.logo=true

    #
    # Input a list of sections that will be included as part of the company
    # settings form.
    #
    company.settings.form.configuration=general,authentication,users,mail-host-names,email-notifications,content-sharing
    #company.settings.form.configuration=general,authentication,users,mail-host-names,email-notifications,content-sharing,recycle-bin
    company.settings.form.identification=addresses,phone-numbers,additional-email-addresses,websites
    company.settings.form.miscellaneous=display-settings,analytics,google-apps

    #
    # Input a list of sections that will be included as part of the company
    # authentication settings form.
    #
    company.settings.form.authentication=general,ldap,cas,facebook,ntlm,open-id,open-sso,siteminder

##
## Users
##

    #
    # Set this to false if users cannot be deleted.
    #
    users.delete=true

    #
    # Set this to true when you want the validation to allow for creation of
    # numeric screen names.
    #
    users.screen.name.allow.numeric=false

    #
    # Set this to true to always autogenerate user screen names even if the user
    # gives a specific user screen name. If this is set to true, the LDAP
    # importer will fetch users by their email address even if the property
    # "company.security.auth.type" is set to screenName.
    #
    users.screen.name.always.autogenerate=false

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.ScreenNameGenerator. This class will be
    # called to generate user screen names.
    #
    users.screen.name.generator=com.liferay.portal.security.auth.DefaultScreenNameGenerator

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.ScreenNameValidator. This class will be
    # called to validate user screen names.
    #
    users.screen.name.validator=com.liferay.portal.security.auth.DefaultScreenNameValidator
    #users.screen.name.validator=com.liferay.portal.security.auth.LiberalScreenNameValidator

    #
    # Set this to false if you want to be able to create users without an email
    # address. An email address will be automatically assigned to a user based
    # on the property "users.email.address.auto.suffix".
    #
    users.email.address.required=true

    #
    # Set the suffix of the email address that will be automatically generated
    # for a user that does not have an email address. This property is not used
    # unless the property "users.email.address.required" is set to false. The
    # autogenerated email address will be the user id plus the specified suffix.
    #
    users.email.address.auto.suffix=@no-emailaddress.com

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.EmailAddressGenerator. This class will be
    # called to generate an email address for a user that does not specify an
    # email address. This class will only be used if the property
    # "users.email.address.required" is set to false.
    #
    users.email.address.generator=com.liferay.portal.security.auth.DefaultEmailAddressGenerator

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.EmailAddressValidator. This class will be
    # called to validate user email addresses.
    #
    users.email.address.validator=com.liferay.portal.security.auth.DefaultEmailAddressValidator
    #users.email.address.validator=com.liferay.portal.security.auth.LiberalEmailAddressValidator

    #
    # Set this to true if you want the last name to be required when creating
    # users.
    #
    users.last.name.required=false

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.FullNameGenerator. This class will be
    # called to generate a full name from the user's first, middle, and last
    # names.
    #
    users.full.name.generator=com.liferay.portal.security.auth.DefaultFullNameGenerator
    #users.full.name.generator=com.liferay.portal.security.auth.FamilyNameFirstFullNameGenerator

    #
    # Input a class name that implements
    # com.liferay.portal.security.auth.FullNameValidator. This class will be
    # called to validate the user's first, middle, and last names.
    #
    users.full.name.validator=com.liferay.portal.security.auth.DefaultFullNameValidator

    #
    # Set this to true to check the image token before displaying it.
    #
    users.image.check.token=true

    #
    # Set the maximum file size for user portraits. A value
    # of 0 for the maximum file size can be used to indicate unlimited file
    # size. However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    users.image.max.size=307200

    #
    # Set the maximum user portrait height and width in pixels. A value of 0
    # indicates no restrictions on user portrait dimensions.
    #
    users.image.max.height=120
    users.image.max.width=100

    # Set this to true to record last login information for a user.
    #
    users.update.last.login=true

    #
    # Input a list of sections that will be included as part of the user form
    # when adding a user.
    #
    users.form.add.main=details,organizations,personal-site
    users.form.add.identification=
    users.form.add.miscellaneous=

    #
    # Input a list of sections that will be included as part of the user form
    # when updating a user.
    #
    users.form.update.main=details,password,organizations,sites,user-groups,roles,personal-site,categorization
    users.form.update.identification=addresses,phone-numbers,additional-email-addresses,websites,instant-messenger,social-network,sms,open-id
    users.form.update.miscellaneous=announcements,display-settings,comments,custom-fields

    #
    # Input a list of sections that will be included as part of the user form
    # when updating a user in the My Account portlet.
    #
    users.form.my.account.main=details,password,organizations,sites,user-groups,roles,categorization
    users.form.my.account.identification=addresses,phone-numbers,additional-email-addresses,websites,instant-messenger,social-network,sms,open-id
    users.form.my.account.miscellaneous=announcements,display-settings,comments,custom-fields

    #
    # Set the allowed user list views.
    #
    users.list.views=tree,flat-user-groups

    #
    # Set this to true to enable reminder queries that are used to help reset a
    # user's password.
    #
    users.reminder.queries.enabled=true
    users.reminder.queries.custom.question.enabled=true

    #
    # Set this to false to enable users without a reminder query to reset their
    # password.
    #
    users.reminder.queries.required=false

    #
    # Input a list of questions used for reminder queries.
    #
    users.reminder.queries.questions=what-is-your-primary-frequent-flyer-number,what-is-your-library-card-number,what-was-your-first-phone-number,what-was-your-first-teacher's-name,what-is-your-father's-middle-name

    #
    # Set this to false to disable the user indexer.
    #
    users.indexer.enabled=true

    #
    # Set this to true to search users from the index. Set this to false to
    # search users from the database. Note that setting this to false will
    # disable the ability to search users based on Expando attributes. This
    # setting is not used unless the property "users.indexer.enabled" is set
    # to true.
    #
    users.search.with.index=true

    #
    # Set a property with the prefix "users.update.user.name." and a suffix
    # with the class name that should be updated whenever a user's name has
    # changed.
    #
    users.update.user.name.com.liferay.portlet.messageboards.model.MBMessage=true

    #
    # Input a list of user attributes that will be included when exporting users
    # to a CSV file. You can include custom fields by adding the prefix
    # "expando:" to the attribute name.
    #
    users.export.csv.fields=fullName,emailAddress

    #
    # Set the friendly URL to a user's profile page. If none is specified, the
    # portal will query the user's first public page at runtime.
    #
    # The following variables can be used: ${liferay:screenName} and
    # ${liferay:userId}.
    #
    #users.profile.friendly.url=/web/${liferay:screenName}/profile

##
## Groups and Roles
##

    #
    # Input a list of comma delimited system group names that will exist in
    # addition to the standard system groups. When the server starts, the portal
    # checks to ensure all system groups exist. Any missing system group will be
    # created by the portal.
    #
    system.groups=

    #
    # Input a list of comma delimited system role names that will exist in
    # addition to the standard system roles. When the server starts, the portal
    # checks to ensure all system roles exist. Any missing system role will be
    # created by the portal.
    #
    # The standard system roles are: Administrator, Guest, Power User, and User.
    # These roles cannot be removed or renamed.
    #
    system.roles=

    #
    # Set the description of the Administrator system role.
    #
    system.role.Administrator.description=Administrators are super users who can do anything.

    #
    # Set the description of the Guest system role.
    #
    system.role.Guest.description=Unauthenticated users always have this role.

    #
    # Set the description of the Owner system role.
    #
    system.role.Owner.description=This is an implied role with respect to the objects users create.

    #
    # Set the description of the Power User system role.
    #
    system.role.Power.User.description=Power Users have their own personal site.

    #
    # Set the description of the User system role.
    #
    system.role.User.description=Authenticated users should be assigned this role.

    #
    # Input a list of comma delimited system organization role names that will
    # exist in addition to the standard system organization roles. When the
    # server starts, the portal checks to ensure all system organization roles
    # exist. Any missing system organization role will be created by the portal.
    #
    # The standard system organization roles are: Organization Administrator,
    # Organization Member, and Organization Owner. These roles cannot be removed
    # or renamed.
    #
    system.organization.roles=

    #
    # Set the description of the Organization Administrator system organization
    # role.
    #
    system.organization.role.Organization.Administrator.description=Organization Administrators are super users of their organization but cannot make other users into Organization Administrators.

    #
    # Set the description of the Organization Member system organization role.
    #
    system.organization.role.Organization.User.description=All users who belong to an organization have this role within that organization.

    #
    # Set the description of the Organization Owner system organization role.
    #
    system.organization.role.Organization.Owner.description=Organization Owners are super users of their organization and can assign organization roles to users.

    #
    # Input a list of comma delimited system site role names that will exist in
    # addition to the standard system site roles. When the server starts, the
    # portal checks to ensure all system site roles exist. Any missing system
    # site role will be created by the portal.
    #
    # The standard system site roles are: Site Administrator, Site Member, and
    # Site Owner. These roles cannot be removed or renamed.
    #
    system.site.roles=

    #
    # Set the description of the Site Administrator system site role.
    #
    system.site.role.Site.Administrator.description=Site Administrators are super users of their site but cannot make other users into Site Administrators.

    #
    # Set the description of the Site Member system site role.
    #
    system.site.role.Site.Member.description=All users who belong to a site have this role within that site.

    #
    # Set the description of the Site Owner system site role.
    #
    system.site.role.Site.Owner.description=Site Owners are super users of their site and can assign site roles to users.

    #
    # Omniadmin users can administer the portal's core functionality: gc,
    # shutdown, etc. Omniadmin users must belong to the default company.
    #
    # Multiple portal instances might be deployed on one application server, but
    # not all of the administrators should have access to this core
    # functionality. Input the ids of users who are omniadmin users.
    #
    # Leave this field blank if users who belong to the right company and have
    # the Administrator role are allowed to administer the portal's core
    # functionality.
    #
    omniadmin.users=

    #
    # Set this to true if all users are required to agree to the terms of use.
    #
    terms.of.use.required=true

    #
    # Specify the group id and the article id of the Journal article that will
    # be displayed as the terms of use. The default text will be used if no
    # Journal article is specified.
    #
    terms.of.use.journal.article.group.id=
    terms.of.use.journal.article.id=

    #
    # Input a list of group class names that will trigger a complex SQL query to
    # delegate filtering in the database tier. A group class name corresponds to
    # the className column in the Group_ table. Filtering in memory at the
    # application tier after a simple SQL query can be much better on
    # performance.
    #
    groups.complex.sql.class.names=com.liferay.portal.model.User

    #
    # Specify subtypes of roles if you want to be able to search for roles
    # using your custom criteria.
    #
    roles.site.subtypes=
    roles.organization.subtypes=
    roles.regular.subtypes=

    #
    # Set this to true when you want the validation to allow for creation of
    # roles with numeric names.
    #
    roles.name.allow.numeric=false

##
## Organizations
##

    organizations.types=regular-organization,location

    organizations.rootable[regular-organization]=true
    organizations.children.types[regular-organization]=regular-organization,location
    organizations.country.enabled[regular-organization]=false
    organizations.country.required[regular-organization]=false

    organizations.rootable[location]=false
    #organizations.children.types[location]=
    organizations.country.enabled[location]=true
    organizations.country.required[location]=true

    #
    # Input a list of sections that will be included as part of the organization
    # form when adding an organization.
    #
    organizations.form.add.main=details,organization-site
    organizations.form.add.identification=
    organizations.form.add.miscellaneous=

    #
    # Input a list of sections that will be included as part of the organization
    # form when updating an organization.
    #
    organizations.form.update.main=details,organization-site,categorization
    organizations.form.update.identification=addresses,phone-numbers,additional-email-addresses,websites,services
    organizations.form.update.miscellaneous=comments,reminder-queries,custom-fields

    #
    # Set this property to false if you want any administrator of an
    # organization to be able to assign any user to that organization. By
    # default, he will only be able to assign the users of the organizations
    # and suborganizations that he can manage.
    #
    organizations.assignment.strict=true

    #
    # Set this property to true if you want users to only be members of the
    # organizations to which they are assigned explicitly. By default, they will
    # also become implicit members of the ancestors of those organizations.
    # For example, if a user belongs to Liferay Spain, he will implicitly be a
    # member of the ancestors Liferay Europe and Liferay Global and will be
    # able to access their private pages.
    #
    organizations.membership.strict=false

    #
    # Set this to false to disable the organization indexer.
    #
    organizations.indexer.enabled=true

    #
    # Set this to true to search organizations from the index. Set this to false
    # to search organizations from the database. Note that setting this to false
    # will disable the ability to search organizations based on Expando
    # attributes. This setting is not used unless the property
    # "organizations.indexer.enabled" is set to true.
    #
    organizations.search.with.index=true

##
## User Groups
##

    #
    # Set this to true when you want the validation to allow for creation of
    # user groups with numeric names.
    #
    user.groups.name.allow.numeric=false

    #
    # Set this to true to enable the legacy behavior of copying user group pages
    # to user personal sites. This behavior is deprecated and is likely to be
    # removed and replaced with a different scheme in future releases.
    #
    user.groups.copy.layouts.to.user.personal.site=false

    #
    # Set this to false to disable the user group indexer.
    #
    user.groups.indexer.enabled=true

    #
    # Set this to true to search user groups from the index. Set this to false
    # to search user groups from the database. Note that setting this to false
    # will disable the ability to search user groups based on Expando
    # attributes. This setting is not used unless the property
    # "user.groups.indexer.enabled" is set to true.
    #
    user.groups.search.with.index=true

##
## Membership Policies
##

    #
    # Set this to true to verify membership policies every time the server
    # starts or when a membership policy hook is deployed.
    #
    membership.policy.auto.verify=false

    #
    # Input a class name that implements
    # com.liferay.portal.security.membershippolicy.OrganizationMembershipPolicy.
    # This class will be called whenever a user is added or removed from an
    # organization or when a user is assigned or unassigned to a organization
    # role or when a new organization is added or updated.
    #
    membership.policy.organizations=com.liferay.portal.security.membershippolicy.DummyOrganizationMembershipPolicy

    #
    # Input a class name that implements
    # com.liferay.portal.security.membershippolicy.RoleMembershipPolicy. This
    # class will be called whenever a user is assign or unassigned from a
    # regular role or when a a new role is added or updated.
    #
    membership.policy.roles=com.liferay.portal.security.membershippolicy.DummyRoleMembershipPolicy

    #
    # Input a class name that implements
    # com.liferay.portal.security.membershippolicy.SiteMembershipPolicy. This
    # class will be called whenever a user is added or removed from a site or
    # when a user is assigned or unassigned to a site role or a new site is
    # added or updated.
    #
    #membership.policy.sites=com.liferay.portal.security.membershippolicy.DummySiteMembershipPolicy
    membership.policy.sites=com.liferay.portal.security.membershippolicy.DefaultSiteMembershipPolicy

    #
    # Input a class name that implements
    # com.liferay.portal.security.membershippolicy.UserGroupsMembershipPolicy.
    # This class will be called whenever a user is added or removed from a user
    # group or a new user group is added or updated.
    #
    membership.policy.user.groups=com.liferay.portal.security.membershippolicy.DummyUserGroupMembershipPolicy

##
## Languages and Time Zones
##

    #
    # Specify the available locales. Messages corresponding to a specific
    # language are specified in properties files with file names matching that
    # of content/Language_*.properties. These values can also be overridden in
    # properties files with file names matching that of
    # content/Language-ext_*.properties. Use a comma to separate
    # each entry.
    #
    # If there is more than one locale for the same language, the first one in
    # the list will be used when a translation is requested in another locale of
    # the same language but a translated value cannot be found. For example, if
    # there are two locales such us pt_BR and pt_PT (in this order), any key not
    # found in pt_PT will be looked for in pt_BR.
    #
    # Language codes follow the ISO 639-1 standard. Content for each locale must
    # be UTF-8 encoded.
    #
    # See the following links, which specify language and country codes:
    #     http://www.loc.gov/standards/iso639-2/php/code_list.php
    #     http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
    #
    locales=ar_SA,eu_ES,bg_BG,ca_AD,ca_ES,zh_CN,zh_TW,hr_HR,cs_CZ,da_DK,nl_NL,nl_BE,en_US,en_GB,en_AU,et_EE,fi_FI,fr_FR,fr_CA,gl_ES,de_DE,el_GR,iw_IL,hi_IN,hu_HU,in_ID,it_IT,ja_JP,ko_KR,lo_LA,lt_LT,nb_NO,fa_IR,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sr_RS,sr_RS_latin,sl_SI,sk_SK,es_ES,sv_SE,tr_TR,uk_UA,vi_VN

    #
    # Specify the locales that are in beta. Go to http://translate.liferay.com
    # to participate in the translation efforts.
    #
    locales.beta=ar_SA,eu_ES,bg_BG,ca_AD,zh_TW,hr_HR,cs_CZ,da_DK,nl_NL,nl_BE,en_GB,en_AU,et_EE,gl_ES,el_GR,hi_IN,in_ID,it_IT,ko_KR,lo_LA,lt_LT,nb_NO,fa_IR,pl_PL,pt_PT,ro_RO,ru_RU,sr_RS,sr_RS_latin,sl_SI,sk_SK,sv_SE,tr_TR,uk_UA,vi_VN

    #
    # Specify the locales that are enabled by default.
    #
    locales.enabled=ca_ES,zh_CN,en_US,fi_FI,fr_FR,de_DE,iw_IL,hu_HU,ja_JP,pt_BR,es_ES

    #
    # Set this to true if unauthenticated users get their preferred language
    # from the Accept-Language header. Set this to false if unauthenticated
    # users get their preferred language from their company.
    #
    locale.default.request=false

    #
    # Set this to 0 if the locale is not automatically prepended to a URL. This
    # means that each URL could potentially point to many different languages.
    # For example, the URL http://localhost:8080/web/guest/home could then be
    # viewed by users in many different languages.
    #
    # Set this to 1 if the locale is automatically prepended to a URL when the
    # requested locale is not the default locale. This means that each URL
    # points to just one language. For example, the URL
    # http://localhost:8080/web/guest/home would point to the default language.
    # The URL http://localhost:8080/zh/web/guest/home and
    # http://localhost:8080/zh_CN/web/guest/home would both point to the Chinese
    # language.
    #
    # In cases where the prepended locale is "zh" and not the complete locale
    # "zh_CN", then the full locale returned will be based on the order in which
    # the locales appear in the property "locales". If "zh_CN" appears before
    # "zh_TW", then "zh" will be a short hand for "zh_TW".
    #
    # The default language is set in system.properties with the properties
    # "user.country" and "user.language".
    #
    # Set this to 2 if the locale is automatically prepended to every URL. This
    # means that each URL points to just one language.
    #
    # Set this to 3 if the locale is automatically prepended to a URL when the
    # requested locale is not the default user locale. In the case of guest
    # users, the behavior is the same as having a value of 1.
    #
    # Note that each language requires an entry in the property "locales" and a
    # servlet mapping in web.xml for the I18n Servlet.
    #
    locale.prepend.friendly.url.style=3

    #
    # Set this to true to disable language translations. When a translation is
    # requested for the key "first-name", instead of returning "First Name" in
    # English (or in its relevant locale), it will return "first-name".
    #
    translations.disabled=false

    #
    # Specify the available time zones. The specified ids must match those from
    # the class java.util.TimeZone.
    #
    time.zones=\
        Pacific/Midway,\
        Pacific/Honolulu,\
        America/Anchorage,\
        America/Los_Angeles,\
        America/Denver,\
        America/Chicago,\
        America/New_York,\
        America/Caracas,\
        America/Puerto_Rico,\
        America/St_Johns,\
        America/Sao_Paulo,\
        America/Noronha,\
        Atlantic/Azores,\
        UTC,\
        Europe/Lisbon,\
        Europe/Paris,\
        Europe/Istanbul,\
        Asia/Jerusalem,\
        Asia/Baghdad,\
        Asia/Tehran,\
        Asia/Dubai,\
        Asia/Kabul,\
        Asia/Karachi,\
        Asia/Calcutta,\
        Asia/Katmandu,\
        Asia/Dhaka,\
        Asia/Rangoon,\
        Asia/Saigon,\
        Asia/Shanghai,\
        Asia/Tokyo,\
        Asia/Seoul,\
        Australia/Darwin,\
        Australia/Sydney,\
        Pacific/Guadalcanal,\
        Pacific/Auckland,\
        Pacific/Enderbury,\
        Pacific/Kiritimati

##
## Look and Feel
##

    #
    # Set this to false if the system does not allow users to modify the look
    # and feel.
    #
    look.and.feel.modifiable=true

    #
    # Set the default layout template id.
    #
    default.layout.template.id=2_columns_ii

    #
    # Set the default theme id for regular themes.
    #
    default.regular.theme.id=classic

    #
    # Set the default color scheme id for regular themes.
    #
    default.regular.color.scheme.id=01

    #
    # Set the default theme id for wap themes. This property is not used unless
    # the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    default.wap.theme.id=mobile

    #
    # Set the default color scheme id for wap themes. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    default.wap.color.scheme.id=01

    #
    # Set this to true if you want a change in the theme selection of the public
    # or private group to automatically be applied to the other (i.e. if public
    # and private group themes should always be the same).
    #
    theme.sync.on.group=false

##
## Request
##

    #
    # Portlets that have been configured to use private request attributes in
    # liferay-portlet.xml may still want to share some request attributes. This
    # property allows you to configure which request attributes will be shared.
    # Set a comma delimited list of attribute names that will be shared when the
    # attribute name starts with one of the specified attribute names. For
    # example, if you set the value to "hello_,world_", then all attribute names
    # that start with "hello_" or "world_" will be shared.
    #
    request.shared.attributes=LIFERAY_SHARED_

##
## Session
##

    #
    # Set this property to true to validate CSRF token in the
    # SessionClicksAction. This property does not exist from Liferay version
    # 7.0, the auth token is always checked.
    #
    session.clicks.auth.token.enabled=true

    #
    # Set the maximum number of key value pairs that can be stored in the
    # session via SessionClicks. See LPS-20096 for more information.
    #
    session.clicks.max.allowed.values=1024

    #
    # Set the maximum size of key and value terms that can be stored in the
    # session via SessionClicks. See LPS-20096 for more information.
    #
    session.clicks.max.size.terms=1024

    #
    # Specify the delimiter for parsing compound session ids.
    #
    # This addresses an issue with Weblogic and all application servers where
    # the application server appends a unique JVM code to the session id. See
    # LPS-18587.
    #
    # Set a blank delimiter for the portal to attempt to detect a delimiter
    # based on the application server.
    #
    session.id.delimiter=
    session.id.weblogic.delimiter=!

    #
    # Specify the maximum number of sessions allowed. A value of 0 or less than
    # 0 means there is no limit. A value greater than 0 limits the
    # number of sessions by invalidating newer sessions.
    #
    # This property is not used unless the session max allowed filter is
    # enabled.
    #
    session.max.allowed=0

    #
    # Specify the number of minutes before a session expires. This value is
    # always overridden by the value set in web.xml.
    #
    session.timeout=30

    #
    # Specify the number of minutes before a warning is sent to the user
    # informing the user of the session expiration. Specify 0 to disable any
    # warnings.
    #
    session.timeout.warning=1

    #
    # Set the auto-extend mode to true to avoid having to ask the user whether
    # to extend the session or not. Instead, it will be automatically extended.
    # The purpose of this mode is to keep the session open as long as the user's
    # browser is open with a portal page loaded. It is recommended to use
    # this setting along with a smaller "session.timeout", such as 5 minutes,
    # for better performance.
    #
    session.timeout.auto.extend=false

    #
    # Set this to true if the user is redirected to the default page when the
    # session expires.
    #
    session.timeout.redirect.on.expire=false

    #
    # Portlets that have been configured to use private session attributes in
    # liferay-portlet.xml may still want to share some session attributes. This
    # property allows you to configure which session attributes will be shared.
    # Set a comma delimited list of attribute names that will be shared when the
    # attribute name starts with one of the specified attribute names. For
    # example, if you set the value to "hello_,world_", then all attribute names
    # that start with "hello_" or "world_" will be shared.
    #
    # Note that this property is used to specify the sharing of session
    # attributes from the portal to the portlet. This is not used to specify
    # session sharing between portlet WARs or from the portlet to the portal.
    #
    session.shared.attributes=COMPANY_,LIFERAY_SHARED_,org.apache.struts.action.LOCALE,PORTLET_RENDER_PARAMETERS_,PUBLIC_RENDER_PARAMETERS_POOL_,USER_

    #
    # Explicitly exclude attributes that are shared from the portal to portlets.
    #
    session.shared.attributes.excludes=USER_PASSWORD

    #
    # Set this to true to store the user's password in the session.
    #
    session.store.password=false

    #
    # Set this to false to disable all persistent cookies. Features like
    # automatically logging in will not work.
    #
    session.enable.persistent.cookies=true

    #
    # Set this to true to enable sessions when cookies are disabled. See
    # LEP-4787. This behavior is configurable because enabling it can break
    # certain setups.
    #
    session.enable.url.with.session.id=false

    #
    # The login process sets several cookies if persistent cookies are enabled.
    # Set this property to set the domain of those cookies.
    #
    #session.cookie.domain=

    #
    # Set this to true to use the full hostname for cookie domain values. By
    # default the domain is trimmed to use only the root domain to allow cross
    # domain logins.
    #
    session.cookie.use.full.hostname=false

    #
    # Set this to true to invalidate the session when a user logs into the
    # portal. This helps prevent phishing. Set this to false if you need the
    # guest user and the authenticated user to have the same session.
    #
    # Set this to false if the property "company.security.auth.requires.https"
    # is set to true and you want to maintain the same credentials across HTTP
    # and HTTPS sessions.
    #
    session.enable.phishing.protection=true

    #
    # Set a comma delimited list of attribute names that will be copied to the
    # new session when the property "session.enable.phishing.protection" is set
    # to true.
    #
    session.phishing.protected.attributes=HTTPS_INITIAL,LAST_PATH

    #
    # Set this to true to test whether users have cookie support before allowing
    # them to sign in. This test will always fail if "tck.url" is set to true
    # because that property disables session cookies.
    #
    session.test.cookie.support=true

    #
    # Set this to true to allow
    # com.liferay.portal.kernel.servlet.SerializableSessionAttributeListener to
    # test if an added session variable is serializable. Unserializable values
    # stored into the session will cause a session to not replicate if session
    # replication was enabled by the application server.
    #
    session.verify.serializable.attribute=true

    #
    # Set this to true to disable sessions. Doing this will use cookies to
    # remember the user across requests. This is useful if you want to scale
    # very large sites where the user may be sent to a different server for each
    # request. The drawback to this approach is that you must not rely on the
    # API for sessions provided by the servlet and portlet specs.
    #
    # This feature is only available for Tomcat and requires that you set
    # Tomcat's Manager class to
    # "com.liferay.support.tomcat.session.SessionLessManagerBase".
    #
    # Setting this to true will forcibly set "layout.ajax.render.enable" to
    # false since ajax rendering requires sessions to be enabled.
    #
    session.disabled=false

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.struts.SessionAction. These classes will run at the
    # specified event.
    #

    #
    # Servlet session create event
    #
    servlet.session.create.events=com.liferay.portal.events.SessionCreateAction

    #
    # Servlet session destroy event
    #
    servlet.session.destroy.events=com.liferay.portal.events.SessionDestroyAction,com.liferay.portal.events.ChannelSessionDestroyAction

    #
    # Set this to true to track user clicks in memory for the duration of a
    # user's session. Setting this to true allows you to view all live sessions
    # in the Admin portlet.
    #
    session.tracker.memory.enabled=true

    #
    # Set this to true to track user clicks in the database after a user's
    # session is invalidated. Setting this to true allows you to generate usage
    # reports from the database. Use this cautiously because this will store a
    # lot of usage data.
    #
    session.tracker.persistence.enabled=false

    #
    # Set this to true to convert the tracked paths to friendly URLs.
    #
    session.tracker.friendly.paths.enabled=false

    #
    # Enter a list of comma delimited paths that should not be tracked.
    #
    session.tracker.ignore.paths=\
        /portal/render_portlet,\
        \
        /document_library/get_file

##
## JAAS
##

    #
    # Set this to false to disable JAAS security checks. Disabling JAAS speeds
    # up login. JAAS must be disabled if administrators are to be able to
    # impersonate other users.
    #
    portal.jaas.enable=false

    #
    # JAAS can authenticate users based on their email address, screen name,
    # user id, or login as determined by the property
    # "company.security.auth.type".
    #
    #portal.jaas.auth.type=emailAddress
    #portal.jaas.auth.type=screenName
    portal.jaas.auth.type=userId
    #portal.jaas.auth.type=login

    #
    # By default, com.liferay.portal.security.jaas.PortalLoginModule loads the
    # correct JAAS login module based on what application server or servlet
    # container the portal is deployed on. Set a JAAS implementation class to
    # override this behavior.
    #
    #portal.jaas.impl=

    #
    # Some JAAS login modules only work with a plain text password. Set this
    # property to true to pass plain text passwords to JAAS.
    #
    portal.jaas.plain.password=false

    #
    # The JAAS process may pass in an encrypted password and the authentication
    # will only succeed if there is an exact match. Set this property to false
    # to relax that behavior so the user can input an unencrypted password.
    #
    portal.jaas.strict.password=false

    #
    # Set this to true to enable administrators to impersonate other users.
    #
    portal.impersonation.enable=true

##
## JNDI
##

    #
    # Set the configuration values for the JNDI context. Any property prefixed
    # with "jndi.environment." will be passed to the JNDI context as an
    # environment variable. The valid values are those specified in
    # javax.naming.Context.
    #
    #jndi.environment.java.naming.security.credentials=
    #jndi.environment.java.naming.security.principal=

##
## Security Manager
##

    #
    # Set this property to "default" to use the default security manager
    # configured by the application server. A security manager will not be used
    # if the application server did not configure one.
    #
    # Set this property to "liferay" to use Liferay's security manager if the
    # application server has not configured a security manager.
    #
    portal.security.manager.strategy=default

    #
    # Set the PACL policy checker to use for checking a security manager
    # permission.
    #
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalHookPermission]=com.liferay.portal.security.pacl.checker.PortalHookChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalMessageBusPermission]=com.liferay.portal.security.pacl.checker.PortalMessageBusChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalRuntimePermission]=com.liferay.portal.security.pacl.checker.PortalRuntimeChecker
    portal.security.manager.pacl.policy.checker[com.liferay.portal.kernel.security.pacl.permission.PortalServicePermission]=com.liferay.portal.security.pacl.checker.PortalServiceChecker
    portal.security.manager.pacl.policy.checker[java.awt.AWTPermission]=com.liferay.portal.security.pacl.checker.AWTChecker
    portal.security.manager.pacl.policy.checker[java.io.FilePermission]=com.liferay.portal.security.pacl.checker.FileChecker
    portal.security.manager.pacl.policy.checker[java.io.SerializablePermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker
    portal.security.manager.pacl.policy.checker[java.lang.RuntimePermission]=com.liferay.portal.security.pacl.checker.RuntimeChecker
    #portal.security.manager.pacl.policy.checker[java.lang.management.ManagementPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[java.lang.reflect.ReflectPermission]=com.liferay.portal.security.pacl.checker.ReflectChecker
    portal.security.manager.pacl.policy.checker[java.net.NetPermission]=com.liferay.portal.security.pacl.checker.NetChecker
    portal.security.manager.pacl.policy.checker[java.net.SocketPermission]=com.liferay.portal.security.pacl.checker.SocketChecker
    #portal.security.manager.pacl.policy.checker[java.security.AllPermission]=
    portal.security.manager.pacl.policy.checker[java.security.SecurityPermission]=com.liferay.portal.security.pacl.checker.SecurityChecker
    #portal.security.manager.pacl.policy.checker[java.security.UnresolvedPermission]=
    portal.security.manager.pacl.policy.checker[java.sql.SQLPermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker
    portal.security.manager.pacl.policy.checker[java.util.PropertyPermission]=com.liferay.portal.security.pacl.checker.PropertyChecker
    #portal.security.manager.pacl.policy.checker[java.util.logging.LoggingPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanServerPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.MBeanTrustPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.management.remote.SubjectDelegationPermission]=com.liferay.portal.security.pacl.checker.MBeanChecker
    portal.security.manager.pacl.policy.checker[javax.net.ssl.SSLPermission]=com.liferay.portal.security.pacl.checker.DefaultRejectChecker
    #portal.security.manager.pacl.policy.checker[javax.security.auth.AuthPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    #portal.security.manager.pacl.policy.checker[javax.security.auth.PrivateCredentialPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    #portal.security.manager.pacl.policy.checker[javax.security.auth.kerberos.DelegationPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    #portal.security.manager.pacl.policy.checker[javax.security.auth.kerberos.ServicePermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker
    #portal.security.manager.pacl.policy.checker[javax.sound.sampled.AudioPermission]=com.liferay.portal.security.pacl.checker.DefaultAcceptChecker

    #
    # Set the default read paths used by
    # com.liferay.portal.security.pacl.checker.FileChecker.
    #
    portal.security.manager.file.checker.default.read.paths[glassfish]=\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

    portal.security.manager.file.checker.default.read.paths[geronimo]=\
        ${org.apache.geronimo.home.dir}/var/shared/-

    portal.security.manager.file.checker.default.read.paths[jetty]=\
        ${liferay.web.portal.dir},\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

    portal.security.manager.file.checker.default.read.paths[resin]=\
        ${resin.home}ext-lib/-,\
        ${liferay.web.portal.dir},\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-

    portal.security.manager.file.checker.default.read.paths[weblogic]=\
        ${auto.deploy.installed.dir}/${plugin.servlet.context.name}/-,\
        ${auto.deploy.installed.dir}/ROOT/html/common/-,\
        ${auto.deploy.installed.dir}/ROOT/html/taglib/-

    portal.security.manager.file.checker.default.read.paths[websphere]=\
        ${liferay.web.portal.dir}html/common/-,\
        ${liferay.web.portal.dir}html/taglib/-,\
        ${liferay.web.portal.dir}WEB-INF/classes,\
        ${liferay.web.portal.dir}WEB-INF/classes/html/common/-,\
        ${liferay.web.portal.dir}WEB-INF/classes/html/taglib/-

    #
    # Set the list of classes that will be preloaded by the PreloadClassloader
    # to be made available to plugins when the portal security manager is
    # enabled. These classes will be exempt from the security checks that result
    # from class loading.
    #
    portal.security.manager.preload.classloader.classes=\
        org.aopalliance.aop.Advice,\
        org.springframework.aop.Advisor,\
        org.springframework.aop.SpringProxy,\
        org.springframework.aop.TargetSource,\
        org.springframework.aop.framework.Advised,\
        org.springframework.aop.framework.AopConfigException,\
        org.springframework.jmx.export.MBeanExporter

##
## LDAP
##

    #
    # Set the values used to connect to an LDAP store.
    #
    ldap.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
    ldap.referral=follow

    #
    # Settings for com.liferay.portal.security.auth.LDAPAuth can be configured
    # from the Admin portlet. It provides out-of-the-box support for the Apache
    # Directory Server, Microsoft Active Directory Server, Novell eDirectory,
    # and OpenLDAP. The default settings are for the Apache Directory Server.
    #
    # The LDAPAuth class must be specified in the property "auth.pipeline.pre"
    # to be executed.
    #
    # Encryption is implemented by com.liferay.util.Encryptor.provider.class in
    # system.properties.
    #
    ldap.auth.enabled=false
    ldap.auth.required=false

    #
    # Set the page size for directory servers that support paging. This value
    # needs to be 1000 or less for the Microsoft Active Directory Server.
    #
    ldap.page.size=1000

    #
    # Set the number of values to return in each query to a multivalued
    # attribute for directory servers that support range retrieval. The range
    # size must be 1000 or less for Windows 2000 and 1500 or less for Windows
    # Server 2003.
    #
    ldap.range.size=1000

    #
    # Set either bind or password-compare for the LDAP authentication method.
    # Bind is preferred by most vendors so that you don't have to worry about
    # encryption strategies.
    #
    ldap.auth.method=bind
    #ldap.auth.method=password-compare

    #
    # Set the password encryption to use for comparing passwords during import
    # and to use for encrypting passwords during export. Comparing passwords
    # during import will only be used when the property "ldap.auth.method" is
    # set to password-compare. If the encryption is set to NONE, which is the
    # default value, passwords are considered as plain text. The SHA-512
    # algorithm is currently unsupported.
    #
    #ldap.auth.password.encryption.algorithm=BCRYPT
    #ldap.auth.password.encryption.algorithm=MD2
    #ldap.auth.password.encryption.algorithm=MD5
    ldap.auth.password.encryption.algorithm=NONE
    #ldap.auth.password.encryption.algorithm=SHA
    #ldap.auth.password.encryption.algorithm=SHA-256
    #ldap.auth.password.encryption.algorithm=SHA-384
    #ldap.auth.password.encryption.algorithm=SSHA
    #ldap.auth.password.encryption.algorithm=UFC-CRYPT

    #
    # You can write your own class that implements
    # com.liferay.portal.security.ldap.AttributesTransformer to transform the
    # LDAP attributes before a user or group is imported to the LDAP store.
    #
    ldap.attrs.transformer.impl=com.liferay.portal.security.ldap.DefaultAttributesTransformer

    #
    # Specify the settings for LDAP connections. Any property prefixed with
    # "ldap.connection." will be passed to the LDAP context as an environment
    # variable.
    #
    # To enable LDAP connection pooling, you have to set
    # "ldap.connection.com.sun.jndi.ldap.connect.pool" to true and provide
    # additional JVM system properties via the JVM start-up options via:
    #
    #     java ... -Dcom.sun.jndi.ldap.connect.pool.maxsize=50 -Dcom.sun.jndi.ldap.connect.pool.timeout=10000
    #
    # See the following link:
    #     http://docs.oracle.com/javase/6/docs/technotes/guides/jndi/jndi-ldap.html#POOL
    #
    ldap.connection.com.sun.jndi.ldap.connect.pool=true
    ldap.connection.com.sun.jndi.ldap.connect.timeout=500
    ldap.connection.com.sun.jndi.ldap.read.timeout=15000

    #
    # Settings for importing users and groups from LDAP to the portal.
    #
    ldap.import.enabled=false
    ldap.import.on.startup=false
    ldap.import.interval=10

    #
    # Set either user or group for import method. If set to user, the portal
    # imports all users and the groups associated with those users. If set
    # to group, the portal imports all groups and the users associated with
    # those groups. This value should be set based on how your LDAP server
    # stores group membership information.
    #
    ldap.import.method=user
    #ldap.import.method=group

    #
    # Set the lock expiration time for LDAP import. By default, the expiration
    # time is 1 day.
    #
    ldap.import.lock.expiration.time=86400000

    #
    # If set to true, the group filter will be applied, but only to groups in
    # the specified base DN. If set to false, the filter will not be applied and
    # all groups that are associated with the imported users will be imported
    # regardless of the base DN.
    #
    ldap.import.group.search.filter.enabled=true

    #
    # Specify whether group DN lookups will be cached during LDAP import and
    # login. If set to true, this will speed up LDAP import and login, but
    # updates to group attributes will not be recognized until the cache entry
    # expires. The cache size and timeout may be configured in the configuration
    # file specifed in the property "ehcache.single.vm.config.location".
    #
    ldap.import.group.cache.enabled=true

    #
    # Set this to true if the portal should automatically create a role per
    # group imported from LDAP. The role will be assigned to the group so that
    # users can automatically inherit that role when they are assigned to the
    # group.
    #
    ldap.import.create.role.per.group=false

    #
    # Set these values to be a portion of the error message returned by the
    # appropriate directory server to allow the portal to recognize messages
    # from the LDAP server. The default values will work for Fedora DS.
    #
    ldap.error.password.age=age
    ldap.error.password.expired=expired
    ldap.error.password.history=history
    ldap.error.password.not.changeable=not allowed to change
    ldap.error.password.syntax=syntax
    ldap.error.password.trivial=trivial
    ldap.error.user.lockout=retry limit

    #
    # Set this to true to use LDAP's password policy instead of the portal
    # password policy.
    #
    # If set to true, it is possible that portal generated passwords will not
    # match the LDAP policy. See the "passwords.regexptoolkit.*" properties for
    # details on configuring RegExpToolkit in generating these passwords.
    #
    ldap.password.policy.enabled=false

    #
    # Set this to false when the LDAP user's password should not be imported to
    # the Liferay user.
    #
    ldap.import.user.password.enabled=true

    #
    # Set this to true to autogenerate passwords for users imported from
    # LDAP.
    #
    # This property is only in use if the property
    # "ldap.import.user.password.enabled" is set to false.
    #
    # If an LDAP password policy is enabled (see the property
    # "ldap.password.policy.enabled"), the password will be generated using
    # RegExpToolkit. Set the "auth.pipeline.enable.liferay.check" property to
    # false to disable password checking by the portal's internal authentication
    # (which is not compatible with LDAP), and set the "auth.pipeline.pre"
    # property to com.liferay.portal.security.auth.LDAPAuth so that password
    # checking will be delegated to the LDAPAuth authenticator.
    #
    # Note that enabling LDAP export, by setting the "ldap.export.enabled"
    # property to true, may lead to overwriting the LDAP user's password with an
    # autogenerated password.
    #
    ldap.import.user.password.autogenerated=false

    #
    # Set either screenName or plain text as the default password for the
    # imported LDAP user. Setting the value to screenName will use the user's
    # screen name as the password for the imported LDAP user. Setting the value
    # to any other plain text value will use that value as the password for the
    # imported LDAP user.
    #
    # This property is only in use if the properties
    # "ldap.import.user.password.enabled" and
    # "ldap.import.user.password.autogenerated" are both set to false.
    #
    ldap.import.user.password.default=test
    #ldap.import.user.password.default=screenName

    #
    # Settings for exporting users from the portal to LDAP. This allows a user
    # to modify his first name, last name, etc. in the portal and have that
    # change pushed to the LDAP server. This setting is not used unless the
    # property "ldap.auth.enabled" is set to true.
    #
    ldap.export.enabled=false

    #
    # Set this to true if groups and their associations should be exported from
    # the portal to LDAP. This setting is not used unless the property
    # "ldap.auth.enabled" is set to true.
    #
    ldap.export.group.enabled=true

    #
    # Set the values used to connect to an LDAP store.
    #
    # The list of properties must end with a subsequent integer (0, 1, etc.) and
    # it is assumed that the list has reached an end when the pattern or
    # replacement is not set.
    #
    #ldap.base.provider.url.0=ldap://localhost:10389
    #ldap.base.dn.0=dc=example,dc=com
    #ldap.security.principal.0=uid=admin,ou=system
    #ldap.security.credentials.0=secret

    #
    # Active Directory stores information about the user account as a series of
    # bit fields in the UserAccountControl attribute.
    #
    # If you want to prevent disabled accounts from logging into the portal you
    # need to use a search filter similar to the following:
    # (&(objectclass=person)(userprincipalname=@email_address@)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))
    #
    # See the following links:
    #     http://support.microsoft.com/kb/305144/
    #     http://support.microsoft.com/?kbid=269181
    #
    #ldap.auth.search.filter.0=(mail=@email_address@)

    #
    # When importing and exporting users, the portal will use this mapping to
    # connect LDAP user attributes and portal contact attributes.
    #
    # See com.liferay.portal.model.ContactModel for a list of attributes.
    #
    #ldap.contact.mappings.0=aimSn=\nbirthday=\nfacebookSn=\nicqSn=\njabberSn=\njobTitle=\nmsnSn=\nmySpaceSn=\nskypeSn=\nsmsSn=\ntwitterSn=\nymSn=

    #
    # When importing and exporting users, the portal will use this mapping to
    # connect LDAP user attributes and portal contact's custom attributes.
    #
    #ldap.contact.custom.mappings.0=

    #
    # When a user is exported to LDAP and the user does not exist, the user will
    # be created with the following default object classes.
    #
    #ldap.user.default.object.classes.0=top,person,inetOrgPerson,organizationalPerson

    #
    # When importing and exporting users, the portal will use this mapping to
    # connect LDAP user attributes and portal user attributes.
    #
    # See com.liferay.portal.model.UserModel for a list of attributes.
    #
    #ldap.user.mappings.0=emailAddress=mail\nfirstName=givenName\ngroup=groupMembership\njobTitle=title\nlastName=sn\npassword=userPassword\nscreenName=cn\nuuid=uuid\n

    #
    # When importing and exporting users, the portal will use this mapping to
    # connect LDAP user attributes and portal user's custom attributes.
    #
    #ldap.user.custom.mappings.0=

    #
    # Set the user attributes that are controlled from the portal. When adding
    # or updating a user from LDAP, these attributes will be skipped.
    #
    ldap.user.ignore.attributes=
    #ldap.user.ignore.attributes=aimSn,comments,facebookId,facebookSn,firstName,greeting,icqSn,jabberSn,jobTitle,languageId,lastName,middleName,msnSn,mySpaceSn,openId,prefixId,reminderQueryAnswer,reminderQueryQuestion,skypeSn,smsSn,suffixId,timeZoneId,twitterSn,ymSn

    #
    # When a group is exported to LDAP and the group does not exist, the group
    # will be created with the following default object classes.
    #
    #ldap.group.default.object.classes.0=top,groupOfUniqueNames

    #
    # When importing groups, the portal will use this mapping to connect LDAP
    # group attributes and portal user group attributes.
    #
    #ldap.group.mappings.0=description=description\ngroupName=cn\nuser=uniqueMember

    #
    # Settings for importing users and groups from LDAP to the portal. These
    # settings are not used unless the property "ldap.import.enabled" is set
    # to true.
    #
    #ldap.import.user.search.filter.0=(objectClass=inetOrgPerson)
    #ldap.import.group.search.filter.0=(objectClass=groupOfUniqueNames)

    #
    # New users and groups will be created at the specified DN. This will only
    # be active if the property "ldap.auth.enabled" and "ldap.export.enabled"
    # are set to true.
    #
    #ldap.users.dn.0=ou=users,dc=example,dc=com
    #ldap.groups.dn.0=ou=groups,dc=example,dc=com

##
## Basic Authentication
##

    #
    # Set this to true to require a password when using basic authentication.
    # Only set this to false if additional security measures are in place to
    # ensure users have been properly authenticated.
    #
    basic.auth.password.required=true

##
## CAS
##

    #
    # Set this to true to enable CAS single sign on. NTLM will work only if
    # LDAP authentication is also enabled and the authentication is made by
    # screen name. If set to true, then the property "auto.login.hooks" must
    # contain a reference to the class
    # com.liferay.portal.security.auth.CASAutoLogin and the filter
    # com.liferay.portal.servlet.filters.sso.cas.CASFilter must be referenced
    # in web.xml.
    #
    cas.auth.enabled=false

    #
    # A user may be authenticated from CAS and not yet exist in the portal. Set
    # this to true to automatically import users from LDAP if they do not exist
    # in the portal.
    #
    cas.import.from.ldap=false

    #
    # Set the default values for the required CAS URLs. Set either
    # "cas.server.name" or "cas.service.url". Setting "cas.server.name" allows
    # deep linking. See LEP-4423.
    #
    cas.login.url=https://localhost:8443/cas-web/login
    cas.logout.url=https://localhost:8443/cas-web/logout
    cas.server.name=localhost:8080
    cas.server.url=https://localhost:8443/cas-web
    cas.service.url=
    #cas.service.url=http://localhost:8080/c/portal/login
    cas.no.such.user.redirect.url=http://localhost:8080

    #
    # Set this to true to log out the user from CAS when the portal session
    # expires.
    #
    cas.logout.on.session.expiration=false

##
## Facebook Connect SSO
##

    facebook.connect.auth.enabled=false
    facebook.connect.app.id=
    facebook.connect.app.secret=
    facebook.connect.graph.url=https://graph.facebook.com
    facebook.connect.oauth.auth.url=https://graph.facebook.com/oauth/authorize
    facebook.connect.oauth.redirect.url=http://localhost:8080/c/login/facebook_connect_oauth
    facebook.connect.oauth.token.url=https://graph.facebook.com/oauth/access_token
    facebook.connect.verified.account.required=false

##
## NTLM
##

    #
    # Set this to true to enable NTLM single sign on. NTLM will work only if
    # LDAP authentication is also enabled and the authentication is made by
    # screen name. If set to true, then the property "auto.login.hooks" must
    # contain a reference to the class
    # com.liferay.portal.security.auth.NtlmAutoLogin and the filter
    # com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter must be referenced
    # in web.xml.
    #
    # Negotiate flags are set according to the the client's requested
    # capabilities and the server's ServerCapabilities.
    #
    # See the following link:
    #     http://msdn.microsoft.com/en-us/library/cc717152%28v=PROT.10%29.aspx
    #
    ntlm.auth.enabled=false
    ntlm.auth.domain.controller=127.0.0.1
    ntlm.auth.domain.controller.name=EXAMPLE
    ntlm.auth.domain=EXAMPLE
    ntlm.auth.negotiate.flags=0x600FFFFF
    ntlm.auth.service.account=LIFERAY$@EXAMPLE.COM
    ntlm.auth.service.password=test

    #
    # See http://jcifs.samba.org/src/docs/ntlmhttpauth.html for more available
    # properties.
    #
    jcifs.netbios.cachePolicy=30
    jcifs.smb.client.soTimeout=35000

##
## OpenID
##

    #
    # Set this to true to enable OpenId authentication. If set to true, then the
    # property "auto.login.hooks" must contain a reference to the class
    # com.liferay.portal.security.auth.OpenIdAutoLogin.
    #
    open.id.auth.enabled=true

    open.id.providers=yahoo

    open.id.ax.schema[default]=email,firstname,lastname
    open.id.ax.type.email[default]=http://schema.openid.net/contact/email
    open.id.ax.type.firstname[default]=http://schema.openid.net/namePerson/first
    open.id.ax.type.lastname[default]=http://schema.openid.net/namePerson/last

    open.id.ax.schema[yahoo]=email,fullname
    open.id.ax.type.email[yahoo]=http://axschema.org/contact/email
    open.id.ax.type.fullname[yahoo]=http://axschema.org/namePerson
    open.id.url[yahoo]=open.login.yahooapis.com

##
## OpenSSO
##

    open.sso.auth.enabled=false

    #
    # Set this to true if you want to import the users from LDAP after
    # successful login through OpenSSO. The LDAP settings need to be configured
    # properly in the LDAP section. If this is set to false, the users will be
    # created from OpenSSO provided data.
    #
    open.sso.ldap.import.enabled=false

    open.sso.login.url=http://openssohost.example.com:8080/opensso/UI/Login?goto=http://portalhost.example.com:8080/c/portal/login
    open.sso.logout.url=http://openssohost.example.com:8080/opensso/UI/Logout?goto=http://portalhost.example.com:8080/web/guest/home
    open.sso.service.url=http://openssohost.example.com:8080/opensso
    open.sso.screen.name.attr=uid
    open.sso.email.address.attr=mail
    open.sso.first.name.attr=givenname
    open.sso.last.name.attr=sn

    #
    # Set this to true to log a user out of OpenSSO when the portal session
    # expires.
    #
    open.sso.logout.on.session.expiration=false

##
## Request Header
##

    #
    # Set this to true to automatically import users from LDAP if they do not
    # exist in the portal. The property "auto.login.hooks" must contain a
    # reference to the class
    # com.liferay.portal.security.auth.RequestHeaderAutoLogin to enable request
    # header authentication.
    #
    request.header.auth.import.from.ldap=false

    #
    # Input a list of comma delimited IPs that can automatically authenticate
    # via request headers. Input a blank list to allow any IP to automatically
    # authenticate via request headers. SERVER_IP will be replaced with the IP
    # of the host server.
    #
    request.header.auth.hosts.allowed=

    #
    # Input a list of comma delimited init parameters that should never be set
    # in the request header by the header filter.
    #
    request.header.ignore.init.params=url-regex-ignore-pattern,url-regex-pattern

##
## SiteMinder
##

    #
    # Set this to true to enable CA SiteMinder single sign on. If set to true,
    # then the property "auto.login.hooks" must contain a reference to the class
    # com.liferay.portal.security.auth.SiteMinderAutoLogin and the
    # "logout.events.post" must have a reference to
    # com.liferay.portal.events.SiteMinderLogoutAction for logout to work.
    #
    siteminder.auth.enabled=false

    #
    # A user may be authenticated from SiteMinder and not yet exist in the
    # portal. Set this to true to automatically import users from LDAP if they
    # do not exist in the portal.
    #
    siteminder.import.from.ldap=false

    #
    # Set this to the name of the user header that SiteMinder passes to the
    # portal.
    #
    siteminder.user.header=SM_USER

##
## Authentication Pipeline
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.security.auth.Authenticator. These classes will run
    # before or after the portal authentication begins.
    #
    # The Authenticator class defines the constant values that should be used
    # as return codes from the classes implementing the interface. If
    # authentication is successful, return SUCCESS; if the user exists but the
    # passwords do not match, return FAILURE; and if the user does not exist on
    # the system, return DNE.
    #
    # In the pre-authentication pipeline, if you want to skip password checking
    # by the internal portal authentication, the authenticator should return
    # SKIP_LIFERAY_CHECK. This is needed if passwords are not imported to the
    # portal.
    #
    # Constants in Authenticator:
    #     public static final int DNE = 0;
    #     public static final int FAILURE = -1;
    #     public static final int SKIP_LIFERAY_CHECK = 2;
    #     public static final int SUCCESS = 1;
    #
    # In case you have several classes in the authentication pipeline, all of
    # them have to return SKIP_LIFERAY_CHECK or SUCCESS if you want the user to
    # be able to login. If one of the authenticators returns DNE OR FAILURE, the
    # login fails.
    #
    # Under certain circumstances, you might want to keep the information in the
    # portal database in sync with an external database or an LDAP server. This
    # can easily be achieved by implementing a class via LDAPAuth that updates
    # the information stored in the portal user database whenever a user signs
    # in.
    #
    # Each portal instance can be configured at run time to either authenticate
    # based on user ids or email addresses. See the Admin portlet for more
    # information.
    #
    # Available authenticators are:
    #     com.liferay.portal.security.auth.LDAPAuth
    #
    # See the LDAP properties to configure the behavior of the LDAPAuth class.
    #
    auth.pipeline.pre=com.liferay.portal.security.auth.LDAPAuth
    #auth.pipeline.post=

    #
    # Set this to true to enable password checking by the internal portal
    # authentication. If set to false, you're essentially delegating password
    # checking to the authenticators configured in "auth.pipeline.pre" and
    # "auth.pipeline.post" settings.
    #
    auth.pipeline.enable.liferay.check=true

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.security.auth.AuthFailure. These classes will run when
    # a user has a failed login or when a user has reached the maximum number of
    # failed logins.
    #
    auth.failure=com.liferay.portal.security.auth.LoginFailure
    auth.max.failures=com.liferay.portal.security.auth.LoginMaxFailures

    #
    # Set the following to true if users are allowed to have simultaneous logins
    # from different sessions. This property is not used unless the property
    # "live.users.enabled" is set to true.
    #
    auth.simultaneous.logins=true

    #
    # Set this to true if users are forwarded to the last visited path upon
    # successful login. If set to false, users will be forwarded to their
    # default layout page.
    #
    auth.forward.by.last.path=true

    #
    # The login page reads a redirect by a parameter named "redirect". If this
    # property is set to true, then users will be redirected to the given
    # redirect path upon successful login. If the user does not have permission
    # to view that page, then the rule set by the property
    # "auth.forward.by.last.path" will apply.
    #
    # You can set the redirect manually from another application by appending
    # the "redirect" parameter in a url that looks like this:
    # /c/portal/login?redirect=%2Fgroup%2Femployees%2Fcalendar. This url will
    # redirect the user to the path "/group/employees/calendar" upon successful
    # login.
    #
    auth.forward.by.redirect=true

    #
    # Enter a list of comma delimited paths that can be considered part of the
    # last visited path.
    #
    auth.forward.last.paths=/document_library/get_file

    #
    # Enter a URL that will be used to login portal users whenever needed. By
    # default, the portal's login page is used.
    #
    #auth.login.url=/web/guest/home

    #
    # Set this to true to prompt a guest user to login when attempting to access
    # a protected page resource in the portal. By setting this value to false,
    # the portal will inform all users that a requested resource is not found if
    # they have no entitlements to view the resource. The portal will not prompt
    # for login even if the user is a guest user. This behavior complies with
    # OWASP best practices.
    #
    auth.login.prompt.enabled=true

    #
    # Enter a friendly URL of a page that will be used to login portal users
    # whenever the user is navigating a site and authentication is needed. By
    # default, the portal's login page or the URL set in the property
    # "auth.login.url" is used.
    #
    auth.login.site.url=/login

    #
    # Enter the name of the login portlet used in a page identified by the URL
    # of the previous property (if one has been set). This will allow the
    # portlet to have access to the redirect parameter and forward the user
    # to the page he was trying to access, when necessary. You should leave
    # the default value unless you have your own custom login portlet.
    #
    auth.login.portlet.name=58

    #
    # Set this to true to disable any users from logging into the portal.
    # Preventing users from logging into the portal provides a read-only version
    # of the portal that can be used to minimize site outages during upgrades.
    #
    auth.login.disabled=false
    auth.login.disabled.path=/portal/login_disabled

    #
    # Enter a list of comma delimited paths that do not require authentication.
    #
    auth.public.paths=\
        /asset/get_categories,\
        \
        /blogs/find_entry,\
        /blogs/rss,\
        /blogs/trackback,\
        \
        /blogs_aggregator/rss,\
        \
        /bookmarks/find_entry,\
        /bookmarks/find_folder,\
        /bookmarks/open_entry,\
        \
        /document_library/find_file_entry,\
        /document_library/find_folder,\
        /document_library/get_file,\
        \
        /dynamic_data_mapping/render_structure_field,\
        \
        /flags/edit_flag,\
        \
        /iframe/proxy,\
        \
        /image_gallery_display/find_folder,\
        /image_gallery_display/find_image,\
        \
        /journal/find_folder,\
        /journal/get_article,\
        /journal/get_articles,\
        /journal/get_latest_article_content,\
        /journal/rss,\
        /journal/view_article_content,\
        /journal_articles/view_article_content,\
        \
        /layouts_admin/robots,\
        /layouts_admin/sitemap,\
        \
        /login/facebook_connect_oauth,\
        \
        /message_boards/find_category,\
        /message_boards/find_message,\
        /message_boards/find_thread,\
        /message_boards/get_message_attachment,\
        /message_boards/rss,\
        \
        /my_sites/view,\
        \
        /polls/view_chart,\
        \
        /portal/emoticons,\
        /portal/expire_session,\
        /portal/extend_session,\
        /portal/extend_session_confirm,\
        /portal/json_service,\
        /portal/license,\
        /portal/logout,\
        /portal/open_id_request,\
        /portal/open_id_response,\
        /portal/portlet_url,\
        /portal/session_click,\
        /portal/session_tree_js_click,\
        /portal/status,\
        \
        /search/open_search,\
        /search/open_search_description.xml,\
        \
        /shopping/notify,\
        \
        /wiki/find_page,\
        /wiki/get_page_attachment,\
        /wiki/rss

##
## Authentication Verifier
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.security.auth.AuthVerifier. These classes are used to
    # verify whether a request is authenticated or not.
    #
    # Each authentication verifier can have custom properties set via the
    # property prefix "auth.verifier." and the authentication verifier's simple
    # class name. All property suffixes are stripped of their prefix and passed
    # directly to the authentication verifier. For example, the property
    # "auth.verifier.BasicAuthHeaderAutoLogin.hosts.allowed" is passed to
    # BasicAuthHeaderAutoLogin as "hosts.allowed".
    #
    # The expected property suffixes are "hosts.allowed" and "urls". See the
    # property "json.service.auth.token.hosts.allowed" for the accepted values
    # for the property suffix "hosts.allowed".
    #
    # The property suffix "urls.includes" denotes the valid URLs that apply to
    # an authentication verifier.
    #
    # The property suffix "urls.excludes" denotes URLs that will not be handled
    # even if they match the patterns set in "urls.includes".
    #
    auth.verifier.pipeline=com.liferay.portal.security.auth.BasicAuthHeaderAutoLogin,com.liferay.portal.security.auth.DigestAuthenticationAuthVerifier,com.liferay.portal.security.auth.ParameterAutoLogin,com.liferay.portal.security.auth.PortalSessionAuthVerifier,com.liferay.portal.security.auth.TunnelingServletAuthVerifier

    #
    # BasicAuthHeaderAutoLogin
    #
    auth.verifier.BasicAuthHeaderAutoLogin.hosts.allowed=
    auth.verifier.BasicAuthHeaderAutoLogin.urls.includes=/api/*,/xmlrpc/*
    auth.verifier.BasicAuthHeaderAutoLogin.urls.excludes=/api/liferay/do

    #
    # DigestAuthenticationAuthVerifier
    #
    auth.verifier.DigestAuthenticationAuthVerifier.hosts.allowed=
    auth.verifier.DigestAuthenticationAuthVerifier.urls.includes=N/A

    #
    # ParameterAutoLogin
    #
    auth.verifier.ParameterAutoLogin.hosts.allowed=
    auth.verifier.ParameterAutoLogin.urls.includes=N/A

    #
    # PortalSessionAuthVerifier
    #
    auth.verifier.PortalSessionAuthVerifier.hosts.allowed=
    auth.verifier.PortalSessionAuthVerifier.urls.includes=\
        /api/json/*,\
        /api/jsonws/*,\
        /c/portal/json_service/*

    #
    # TunnelingServletAuthVerifier
    #
    auth.verifier.TunnelingServletAuthVerifier.hosts.allowed=255.255.255.255
    auth.verifier.TunnelingServletAuthVerifier.urls.includes=/api/liferay/do

##
## Authentication Token
##

    #
    # Set this to true to enable authentication token security checks. The
    # checks can be disabled for specific actions via the property
    # "auth.token.ignore.actions" or for specific portlets via the init
    # parameter "check-auth-token" in portlet.xml.
    #
    auth.token.check.enabled=true

    #
    # Set the authentication token class. This class must implement
    # com.liferay.portal.security.auth.AuthToken. This class is used to prevent
    # CSRF attacks. See http://issues.liferay.com/browse/LPS-8399 for more
    # information.
    #
    auth.token.impl=com.liferay.portal.security.auth.SessionAuthToken

    #
    # Input a list of comma delimited struts actions that will not be checked
    # for an authentication token.
    #
    auth.token.ignore.actions=\
        /asset/rss,\
        \
        /asset_publisher/edit_article_discussion,\
        /asset_publisher/edit_entry_discussion,\
        /asset_publisher/edit_file_entry_discussion,\
        /asset_publisher/edit_page_discussion,\
        \
        /blogs/edit_entry,\
        /blogs/edit_entry_discussion,\
        /blogs/rss,\
        /blogs/trackback,\
        \
        /blogs_aggregator/edit_entry,\
        /blogs_aggregator/edit_entry_discussion,\
        /blogs_aggregator/rss,\
        \
        /document_library/edit_file_entry,\
        /document_library/edit_file_entry_discussion,\
        \
        /document_library_display/edit_file_entry,\
        /document_library_display/edit_file_entry_discussion,\
        \
        /journal/edit_article_discussion,\
        /journal/rss,\
        \
        /journal_content/edit_article_discussion,\
        \
        /image_gallery_display/edit_file_entry,\
        /image_gallery_display/edit_image,\
        \
        /login/create_account,\
        /login/login,\
        \
        /message_boards/edit_discussion,\
        /message_boards/edit_message,\
        /message_boards/rss,\
        \
        /my_sites/view,\
        \
        /page_comments/edit_page_discussion,\
        \
        /shopping/edit_order_discussion,\
        \
        /software_catalog/edit_product_entry_discussion,\
        \
        /wiki/edit_page,\
        /wiki/edit_page_attachment,\
        /wiki/edit_page_discussion,\
        /wiki/get_page_attachment,\
        /wiki/rss,\
        \
        /wiki_admin/edit_page_attachment,\
        \
        /wiki_display/edit_page_attachment,\
        /wiki_display/edit_page_discussion

    #
    # Set a list of comma delimited origins that will not be checked for an
    # authentication token.
    #
    #auth.token.ignore.origins=\
    #    com.liferay.portal.action.JSONServiceAction:com.liferay.portlet.expando.service.ExpandoValueServiceUtil#getJSONData,\
    #    com.liferay.portal.jsonwebservice.JSONWebServiceServiceAction:/classname/,\
    #    com.liferay.portal.jsonwebservice.JSONWebServiceServiceAction:/user/get-user-by-email-address,\
    #    com.liferay.portlet.asset.action.GetCategoriesAction,\
    #    com.liferay.portlet.portletconfiguration.action.GetLookAndFeelAction

    #
    # Set a list of comma delimited portlet ids that will not be checked for an
    # authentication token.
    #
    auth.token.ignore.portlets=82

    #
    # Set the length of the authentication token. Longer auth tokens will
    # require more CPU cycles to generate and may impact overall performance.
    #
    auth.token.length=8

    #
    # Set the shared secret that is used for requests where it is not possible
    # to generate an authentication token (i.e. WSRP).
    #
    #auth.token.shared.secret=

##
## Auto Login
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.security.auth.AutoLogin. These classes will run in
    # consecutive order for all unauthenticated users until one of them returns
    # a valid user id and password combination. If no valid combination is
    # returned, then the request continues to process normally. If a valid
    # combination is returned, then the portal will automatically login that
    # user with the returned user id and password combination.
    #
    # For example, com.liferay.portal.security.auth.RememberMeAutoLogin reads
    # from a cookie to automatically log in a user who previously logged in
    # while checking on the "Remember Me" box.
    #
    # This interface allows deployers to easily configure the portal to work
    # with other SSO servers. See com.liferay.portal.security.auth.CASAutoLogin
    # for an example of how to configure the portal with Yale's SSO server.
    #
    auto.login.hooks=com.liferay.portal.security.auth.CASAutoLogin,com.liferay.portal.security.auth.FacebookAutoLogin,com.liferay.portal.security.auth.NtlmAutoLogin,com.liferay.portal.security.auth.OpenIdAutoLogin,com.liferay.portal.security.auth.OpenSSOAutoLogin,com.liferay.portal.security.auth.RememberMeAutoLogin,com.liferay.portal.security.auth.SiteMinderAutoLogin

    #
    # Set the hosts that will be ignored for auto login.
    #
    auto.login.ignore.hosts=

    #
    # Set the paths that will be ignored for auto login.
    #
    auto.login.ignore.paths=

##
## SSO with MAC (Message Authentication Code)
##

    #
    # To use SSO with MAC, post to a URL like:
    #     http://localhost:8080/c/portal/login?cmd=already-registered&login=<userId|emailAddress>&password=<MAC>
    #
    # Pass the MAC in the password field. Make sure the MAC gets URL encoded
    # because it might contain characters not allowed in a URL.
    #
    # SSO with MAC also requires that you set the following property in
    # system.properties:
    #
    #     com.liferay.util.servlet.SessionParameters=false
    #
    # See the following links:
    #     http://issues.liferay.com/browse/LEP-1288
    #     http://en.wikipedia.org/wiki/Message_authentication_code
    #
    # Set this to true to enable SSO with MAC.
    #
    auth.mac.allow=false

    #
    # Set the algorithm to use for MAC encryption.
    #
    auth.mac.algorithm=MD5

    #
    # Set the shared key used to generate the MAC.
    #
    auth.mac.shared.key=

##
## Passwords
##

    #
    # Set the following encryption algorithm to designate the password
    # encryption algorithm to migrate from. This is only necessary if
    # upgrading from a release prior to 6.2 or if you wish to switch password
    # encryption algorithms when there are existing users with passwords in the
    # portal.
    #
    #passwords.encryption.algorithm.legacy=BCRYPT
    #passwords.encryption.algorithm.legacy=MD2
    #passwords.encryption.algorithm.legacy=MD5
    #passwords.encryption.algorithm.legacy=NONE
    #passwords.encryption.algorithm.legacy=SHA
    #passwords.encryption.algorithm.legacy=SHA-256
    #passwords.encryption.algorithm.legacy=SHA-384
    #passwords.encryption.algorithm.legacy=SSHA
    #passwords.encryption.algorithm.legacy=UFC-CRYPT

    #
    # Set the following encryption algorithm to encrypt passwords. The default
    # algorithm is PBKDF2WithHmacSHA1/160/128000, generating 160 bit hashes
    # using 128,000 rounds.
    #
    # It is possible to decrease the rounds value in case of slow production
    # hardware, but be aware that 128,000 is the recommended value for 2014
    # by OWASP.
    #
    # If set to NONE, passwords are stored in the database as plain text.
    #
    #passwords.encryption.algorithm=BCRYPT/10
    #passwords.encryption.algorithm=MD2
    #passwords.encryption.algorithm=MD5
    #passwords.encryption.algorithm=NONE
    passwords.encryption.algorithm=PBKDF2WithHmacSHA1/160/128000
    #passwords.encryption.algorithm=SHA
    #passwords.encryption.algorithm=SHA-256
    #passwords.encryption.algorithm=SHA-384
    #passwords.encryption.algorithm=SSHA
    #passwords.encryption.algorithm=UFC-CRYPT

    #
    # Digested passwords are encoded via base64 or hex encoding. The default is
    # base64.
    #
    passwords.digest.encoding=base64
    #passwords.digest.encoding=hex

    #
    # Input a class name that implements
    # com.liferay.portal.security.pwd.Toolkit. This class will be called to
    # generate and validate passwords.
    #
    passwords.toolkit=com.liferay.portal.security.pwd.PasswordPolicyToolkit
    #passwords.toolkit=com.liferay.portal.security.pwd.RegExpToolkit

    #
    # If you choose to use com.liferay.portal.security.pwd.PasswordPolicyToolkit
    # as your password toolkit, you can choose either static or dynamic password
    # generation. Static is set through the property
    # "passwords.passwordpolicytoolkit.static" and dynamic uses the class
    # com.liferay.util.PwdGenerator to generate the password. If you are using
    # LDAP password syntax checking, you will also have to use the static
    # generator so that you can guarantee that passwords obey its rules.
    #
    #passwords.passwordpolicytoolkit.generator=static
    passwords.passwordpolicytoolkit.generator=dynamic
    passwords.passwordpolicytoolkit.static=iheartliferay

    #
    # Set the character sets for password validation.
    #
    passwords.passwordpolicytoolkit.charset.lowercase=abcdefghjkmnpqrstuvwxyz
    passwords.passwordpolicytoolkit.charset.numbers=0123456789
    passwords.passwordpolicytoolkit.charset.symbols=_.!@$*=-?
    passwords.passwordpolicytoolkit.charset.uppercase=ABCDEFGHJKLMNPQRSTUVWXYZ

    #
    # If you choose to use com.liferay.portal.security.pwd.RegExpToolkit as
    # your password toolkit, set the regular expression pattern that will be
    # used to generate and validate passwords.
    #
    # Note that \ is replaced with \\ to work in Java.
    #
    # The first pattern ensures that passwords must have at least 4 valid
    # characters consisting of digits or letters.
    #
    # The second pattern ensures that passwords must have at least 8 valid
    # characters consisting of digits or letters.
    #
    passwords.regexptoolkit.pattern=(?=.{4})(?:[a-zA-Z0-9]*)
    #passwords.regexptoolkit.pattern=(?=.{8})(?:[a-zA-Z0-9]*)

    #
    # Set the length and key for generating passwords.
    #
    #passwords.regexptoolkit.charset=0123456789
    passwords.regexptoolkit.charset=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    #passwords.regexptoolkit.length=4
    passwords.regexptoolkit.length=8

    #
    # Set the properties of the default password policy.
    #
    passwords.default.policy.allow.dictionary.words=true
    passwords.default.policy.changeable=true
    passwords.default.policy.change.required=true
    passwords.default.policy.check.syntax=false
    passwords.default.policy.expireable=false
    passwords.default.policy.grace.limit=0
    passwords.default.policy.history=false
    passwords.default.policy.history.count=6
    passwords.default.policy.lockout=false
    passwords.default.policy.lockout.duration=0
    passwords.default.policy.max.age=8640000
    passwords.default.policy.max.failure=3
    passwords.default.policy.min.age=0
    passwords.default.policy.min.alphanumeric=0
    passwords.default.policy.min.length=6
    passwords.default.policy.min.lowercase=0
    passwords.default.policy.min.numbers=1
    passwords.default.policy.min.symbols=0
    passwords.default.policy.min.uppercase=1
    passwords.default.policy.name=Default Password Policy
    passwords.default.policy.regex=(?=.{4})(?:[a-zA-Z0-9]*)
    passwords.default.policy.reset.failure.count=600
    passwords.default.policy.reset.ticket.max.age=86400
    passwords.default.policy.warning.time=86400

##
## Permissions
##

    #
    # Set the default permission checker class used by
    # com.liferay.portal.security.permission.PermissionCheckerFactory to check
    # permissions for actions on objects. This class can be overriden with a
    # custom class that implements
    # com.liferay.portal.security.permission.PermissionChecker.
    #
    #permissions.checker=com.liferay.portal.security.permission.SimplePermissionChecker
    permissions.checker=com.liferay.portal.security.permission.AdvancedPermissionChecker

    #
    # Set the default permissions list filter class. This class must implement
    # com.liferay.portal.kernel.security.permission.PermissionsListFilter. This
    # is used if you want to filter the list of permissions before it is
    # actually persisted. For example, if you want to make sure that all users
    # who create objects never have the UPDATE action, then you can filter that
    # list and remove any permissions that have the UPDATE action before it is
    # persisted.
    #
    permissions.list.filter=com.liferay.portal.security.permission.PermissionsListFilterImpl

    #
    # Set this to true to configure permission caching to block. See the
    # property "ehcache.blocking.cache.allowed" for more information.
    #
    permissions.object.blocking.cache=false

    #
    # Configure this threshold to indicate when to use the custom SQL finder to
    # check resource permissions.
    #
    permissions.role.resource.permission.query.threshold=10

    # The permissions cache uses a thread local map to store the most frequently
    # accessed items to lower the number of queries to the underlying cache. Set
    # the maximum map size to 0 to disable the thread level cache.
    #
    permissions.thread.local.cache.max.size=100

    #
    # Set this to true to enable inline SQL permission checks.
    #
    permissions.inline.sql.check.enabled=true

    #
    # Configure this threshold to indicate when to pass in the resource block
    # ids directly to the inline SQL statement and when to use a subselect to
    # determine the resource block ids.
    #
    permissions.inline.sql.resource.block.query.threshhold=100

    #
    # Set this to true to use permission checking when reading custom
    # attributes by default.
    #
    permissions.custom.attribute.read.check.by.default=true

    #
    # Set this to true to use permission checking when writing custom
    # attributes by default.
    #
    permissions.custom.attribute.write.check.by.default=true

    #
    # Set the following to true to automatically check the view permission on
    # parent categories or folders when checking the permission on a specific
    # item.
    #
    # For example, if set to true, to be able to have access to a document,
    # a user must have the view permission on the document's folder and all its
    # parent folders. Or, to have access to a comment, a user must have the view
    # permission on the comments's category and all its parent categories.
    #
    permissions.view.dynamic.inheritance=true

    #
    # Set the following to true to enable propagation of permissions between
    # models.
    #
    # For example, when setting the permissions on a a specific Wiki node, if
    # you assign a role a permission (e.g. DELETE), then the assignment of that
    # permission is also propagated to all Wiki pages that belong to that Wiki
    # node.
    #
    # The actual logic of how permissions are propagated among models is
    # specified per portlet. See liferay-portlet.xml's use of the element
    # "permission-propagator".
    #
    permissions.propagation.enabled=false

    #
    # Set this to true if resources should assume that all users have the Guest
    # role. Set this to false if resources will not assume that all users have
    # the Guest role and, thus, do not automatically inherit permissions that
    # belong to the Guest role.
    #
    # Setting this property to false may require users to grant permissions to
    # roles like Site Member and User.
    #
    permissions.check.guest.enabled=true

##
## Captcha
##

    #
    # Set the maximum number of captcha checks per portlet session. Set this
    # value to 0 to always check. Set this value to a number less than 0 to
    # never check. Unauthenticated users will always be checked on every request
    # if captcha checks is enabled.
    #
    captcha.max.challenges=1

    #
    # Set whether or not to use captcha checks for the following actions.
    #
    captcha.check.portal.create_account=true
    captcha.check.portal.send_password=true
    captcha.check.portlet.message_boards.edit_category=false
    captcha.check.portlet.message_boards.edit_message=false

    #
    # Set the engine used to generate captchas. reCAPTCHA uses an external
    # service that must be configured independently but provides an audible
    # alternative which makes the captcha accessible to the visually impaired.
    # See https://www.google.com/recaptcha/admin/create for details.
    #
    #captcha.engine.impl=com.liferay.portal.captcha.recaptcha.ReCaptchaImpl
    captcha.engine.impl=com.liferay.portal.captcha.simplecaptcha.SimpleCaptchaImpl

    #
    # reCAPTCHA
    #
    captcha.engine.recaptcha.key.private=
    captcha.engine.recaptcha.key.public=
    captcha.engine.recaptcha.url.script=http://www.google.com/recaptcha/api/challenge?k=
    captcha.engine.recaptcha.url.noscript=http://www.google.com/recaptcha/api/noscript?k=
    captcha.engine.recaptcha.url.verify=http://www.google.com/recaptcha/api/verify

    #
    # SimpleCaptcha
    #

    #
    # Set the height and width for captcha images generated by SimpleCaptcha.
    #
    captcha.engine.simplecaptcha.height=50
    captcha.engine.simplecaptcha.width=150

    #
    # Input a list of comma delimited class names that implement
    # nl.captcha.backgrounds.BackgroundProducer. These classes will be randomly
    # used by SimpleCaptcha to generate a background for a captcha image.
    #
    captcha.engine.simplecaptcha.background.producers=nl.captcha.backgrounds.FlatColorBackgroundProducer,nl.captcha.backgrounds.GradiatedBackgroundProducer,nl.captcha.backgrounds.SquigglesBackgroundProducer,nl.captcha.backgrounds.TransparentBackgroundProducer

    #
    # Input a list of comma delimited class names that implement
    # nl.captcha.gimpy.GimpyRenderer. These classes will be randomly
    # used by SimpleCaptcha to gimp a captcha image.
    #
    #captcha.engine.simplecaptcha.gimpy.renderers=nl.captcha.gimpy.RippleGimpyRenderer
    captcha.engine.simplecaptcha.gimpy.renderers=nl.captcha.gimpy.BlockGimpyRenderer,nl.captcha.gimpy.DropShadowGimpyRenderer,nl.captcha.gimpy.FishEyeGimpyRenderer,nl.captcha.gimpy.RippleGimpyRenderer,nl.captcha.gimpy.ShearGimpyRenderer

    #
    # Input a list of comma delimited class names that implement
    # nl.captcha.noise.NoiseProducer. These classes will be randomly
    # used by SimpleCaptcha to add noise to a captcha image.
    #
    #captcha.engine.simplecaptcha.noise.producers=nl.captcha.noise.CurvedLineNoiseProducer
    captcha.engine.simplecaptcha.noise.producers=nl.captcha.noise.CurvedLineNoiseProducer,nl.captcha.noise.StraightLineNoiseProducer

    #
    # Input a list of comma delimited class names that implement
    # nl.captcha.text.producer.TextProducer. These classes will be randomly
    # used by SimpleCaptcha to generate text for a captcha image.
    #
    captcha.engine.simplecaptcha.text.producers=com.liferay.portal.captcha.simplecaptcha.PinNumberTextProducer
    #captcha.engine.simplecaptcha.text.producers=com.liferay.portal.captcha.simplecaptcha.DictionaryWordTextProducer,com.liferay.portal.captcha.simplecaptcha.PinNumberTextProducer,nl.captcha.text.producer.DefaultTextProducer,nl.captcha.text.producer.FiveLetterFirstNameTextProducer

    #
    # Input a list of comma delimited class names that implement
    # nl.captcha.text.renderer .WordRenderer. These classes will be randomly
    # used by SimpleCaptcha to render text for a captcha image.
    #
    captcha.engine.simplecaptcha.word.renderers=nl.captcha.text.renderer.DefaultWordRenderer
    #captcha.engine.simplecaptcha.word.renderers=nl.captcha.text.renderer.ColoredEdgesWordRenderer,nl.captcha.text.renderer.DefaultWordRenderer

##
## Startup Events
##

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.struts.SimpleAction. These classes will run at the
    # specified event.
    #

    #
    # Global startup event that runs once when the portal initializes.
    #
    global.startup.events=com.liferay.portal.events.GlobalStartupAction,com.liferay.portal.events.CryptoStartupAction

    #
    # Application startup event that runs once for every web site instance of
    # the portal that initializes.
    #
    application.startup.events=com.liferay.portal.events.AddDefaultDataAction,com.liferay.portal.events.AppStartupAction,com.liferay.portal.events.ChannelHubAppStartupAction
    #application.startup.events=com.liferay.portal.events.AppStartupAction,com.liferay.portal.events.SampleAppStartupAction

##
## Shutdown Events
##

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.struts.SimpleAction. These classes will run at the
    # specified event.
    #

    #
    # Global shutdown event that runs once when the portal shuts down.
    #
    global.shutdown.events=com.liferay.portal.events.GlobalShutdownAction

    #
    # Application shutdown event that runs once for every web site instance of
    # the portal that shuts down.
    #
    application.shutdown.events=com.liferay.portal.events.AppShutdownAction,com.liferay.portal.events.ChannelHubAppShutdownAction

    #
    # Programmatically kill the Java process on shutdown. This is a workaround
    # for a bug in Tomcat and Linux where the process hangs on forever.
    #
    # See http://issues.liferay.com/browse/LEP-2048 for more information.
    #
    shutdown.programmatically.exit=false

##
## Portal Events
##

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.kernel.events.Action. These classes will run before or
    # after the specified event.
    #

    #
    # Servlet service event (the pre-service events have an associated error
    # page and will forward to that page if an exception is thrown during
    # excecution of the events). The pre-service events process before Struts
    # processes the request. The post-service events process after Struts
    # processes the request.
    #
    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    #servlet.service.events.pre=com.liferay.portal.events.LogMemoryUsageAction,com.liferay.portal.events.LogThreadCountAction,com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    #servlet.service.events.pre=com.liferay.portal.events.LogSessionIdAction,com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction
    #servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.RandomLayoutAction
    #servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.RandomLookAndFeelAction
    #servlet.service.events.pre=com.liferay.portal.events.ServicePreAction,com.liferay.portal.events.DeviceServicePreAction,com.liferay.portal.events.ThemeServicePreAction,com.liferay.portal.events.SecureRequestAction
    servlet.service.events.pre.error.page=/common/error.jsp
    servlet.service.events.post=com.liferay.portal.events.ServicePostAction

    #
    # Login event
    #
    login.events.pre=com.liferay.portal.events.LoginPreAction
    login.events.post=com.liferay.portal.events.ChannelLoginPostAction,com.liferay.portal.events.DefaultLandingPageAction,com.liferay.portal.events.LoginPostAction

    #
    # Logout event
    #
    logout.events.pre=com.liferay.portal.events.LogoutPreAction
    logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.DefaultLogoutPageAction,com.liferay.portal.events.SiteMinderLogoutAction
    #logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.GarbageCollectorAction

##
## Default Landing Page
##

    #
    # Set the default landing page path for logged in users relative to the
    # server path. This is the page users are automatically redirected to after
    # logging in. For example, if you want the default landing page to be
    # http://localhost:8080/web/guest/login, set this to /web/guest/login. To
    # activate this feature, set auth.forward.by.last.path to true. To customize
    # the behavior, see com.liferay.portal.events.DefaultLandingPageAction in
    # the "login.events.post" property above.
    #
    # The following variables can be used: ${liferay:screenName} and
    # ${liferay:userId}.
    #
    default.landing.page.path=
    #default.landing.page.path=/web/guest/login
    #default.landing.page.path=/user/${liferay:screenName}/home

##
## Default Logout Page
##

    #
    # Set the default logout page path for users relative to the server path.
    # This is the page users are automatically redirected to after logging out.
    # For example, if you want the default logout page to be
    # http://localhost:8080/web/guest/logout, set this to /web/guest/logout. To
    # activate this feature, set auth.forward.by.last.path to true. To customize
    # the behavior, see com.liferay.portal.events.DefaultLogoutPageAction in
    # the "logout.events.post" property above.
    #
    default.logout.page.path=
    #default.logout.page.path=/web/guest/logout

##
## Default Guest Public Layouts
##

    #
    # The Guest group must have at least one public page. The settings for the
    # initial public page are specified in the following properties.
    #
    # If you need to add more than one page, set the property
    # "default.guest.public.layouts.lar" to specifiy a LAR file instead.
    #
    # For even more complex behavior, override the addDefaultGuestPublicLayouts
    # method in com.liferay.portal.service.impl.GroupLocalServiceImpl.
    #

    #
    # Set the name of the public layout.
    #
    default.guest.public.layout.name=Welcome

    #
    # Set the layout template id of the public layout.
    #
    default.guest.public.layout.template.id=2_columns_ii

    #
    # Set the portlet ids for the columns specified in the layout template.
    #
    default.guest.public.layout.column-1=58
    default.guest.public.layout.column-2=47
    default.guest.public.layout.column-3=
    default.guest.public.layout.column-4=

    #
    # Set the friendly url of the public layout.
    #
    default.guest.public.layout.friendly.url=/home

    #
    # Set the regular theme id for the public layout.
    #
    #default.guest.public.layout.regular.theme.id=classic

    #
    # Set the regular color scheme id for the public layout.
    #
    #default.guest.public.layout.regular.color.scheme.id=01

    #
    # Set the wap theme id for the public layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.guest.public.layout.wap.theme.id=mobile

    #
    # Set the wap color scheme for the public layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.guest.public.layout.wap.color.scheme.id=01

    #
    # Specify a LAR file that can be used to create the guest public layouts.
    # If this property is set, the previous layout properties will be ignored.
    #
    #default.guest.public.layouts.lar=${liferay.home}/deploy/default_guest_public.lar

##
## Default User Private Layouts
##

    #
    # If the properties "layout.user.private.layouts.enabled" and
    # "layout.user.private.layouts.auto.create" are both set to true, then users
    # will have private layouts and they will be automatically created. The
    # settings below are used for the creation of the initial private pages.
    #
    # If you need to add more than one page, set the property
    # "default.user.private.layouts.lar" to specifiy a LAR file instead.
    #
    # For even more complex behavior, override the addDefaultUserPrivateLayouts
    # method in com.liferay.portal.events.ServicePreAction.
    #

    #
    # Set the name of the private layout.
    #
    default.user.private.layout.name=Welcome

    #
    # Set the layout template id of the private layout.
    #
    default.user.private.layout.template.id=2_columns_ii

    #
    # Set the portlet ids for the columns specified in the layout template.
    #
    default.user.private.layout.column-1=82,23,11
    default.user.private.layout.column-2=29
    default.user.private.layout.column-3=
    default.user.private.layout.column-4=

    #
    # Set the friendly url of the private layout.
    #
    default.user.private.layout.friendly.url=/home

    #
    # Set the regular theme id for the private layout.
    #
    #default.user.private.layout.regular.theme.id=classic

    #
    # Set the regular color scheme id for the private layout.
    #
    #default.user.private.layout.regular.color.scheme.id=01

    #
    # Set the wap theme id for the private layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.user.private.layout.wap.theme.id=mobile

    #
    # Set the wap color scheme for the private layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.user.private.layout.wap.color.scheme.id=01

    #
    # Specify a LAR file that can be used to create the user private layouts. If
    # this property is set, the previous layout properties will be ignored.
    #
    #default.user.private.layouts.lar=${liferay.home}/deploy/default_user_private.lar

##
## Default User Public Layouts
##

    #
    # If the properties "layout.user.public.layouts.enabled" and
    # "layout.user.public.layouts.auto.create" are both set to true, then users
    # will have public layouts and they will be automatically created. The
    # settings below are used for the creation of the initial public pages.
    #
    # If you need to add more than one page, set the property
    # "default.user.public.layouts.lar" to specify a LAR file instead.
    #
    # For even more complex behavior, override the addDefaultUserPublicLayouts
    # method in com.liferay.portal.events.ServicePreAction.
    #

    #
    # Set the name of the public layout.
    #
    default.user.public.layout.name=Welcome

    #
    # Set the layout template id of the public layout.
    #
    default.user.public.layout.template.id=2_columns_ii

    #
    # Set the portlet ids for the columns specified in the layout template.
    #
    default.user.public.layout.column-1=82,3
    default.user.public.layout.column-2=33
    default.user.public.layout.column-3=
    default.user.public.layout.column-4=

    #
    # Set the friendly url of the public layout.
    #
    default.user.public.layout.friendly.url=/home

    #
    # Set the regular theme id for the public layout.
    #
    #default.user.public.layout.regular.theme.id=classic

    #
    # Set the regular color scheme id for the public layout.
    #
    #default.user.public.layout.regular.color.scheme.id=01

    #
    # Set the wap theme id for the public layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.user.public.layout.wap.theme.id=mobile

    #
    # Set the wap color scheme for the public layout. This property is not used
    # unless the property "mobile.device.styling.wap.enabled" is set to true.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    #default.user.public.layout.wap.color.scheme.id=01

    #
    # Specify a LAR file that can be used to create the user public layouts. If
    # this property is set, the previous layout properties will be ignored.
    #
    #default.user.public.layouts.lar=${liferay.home}/deploy/default_user_public.lar

##
## Default Admin
##

    #
    # Set the default admin password.
    #
    default.admin.password=test

    #
    # Set the default admin screen name prefix.
    #
    default.admin.screen.name=test

    #
    # Set the default admin email address prefix.
    #
    default.admin.email.address.prefix=test

    #
    # Set the default admin first name.
    #
    default.admin.first.name=Test

    #
    # Set the default admin middle name.
    #
    default.admin.middle.name=

    #
    # Set the default admin last name.
    #
    default.admin.last.name=Test

##
## Layouts
##

    #
    # Set the list of layout types. The display text of each of the layout types
    # is set in content/Language.properties and prefixed with "layout.types.".
    #
    # You can create new layout types and specify custom settings for each
    # layout type. End users input dynamic values as designed in the edit page.
    # End users see the layout as designed in the view page. The generated
    # URL can reference properties set in the edit page. Parentable layouts
    # can contain child layouts. You can also specify a comma delimited list of
    # configuration actions that will be called for your layout when it is
    # updated or deleted.
    #
    layout.types=portlet,panel,embedded,url,link_to_layout

    #
    # Input a list of sections that will be included as part of the layout form
    # when adding a layout.
    #
    layout.form.add=details

    #
    # Input a list of sections that will be included as part of the layout form
    # when updating a layout.
    #
    layout.form.update=details,seo,look-and-feel,javascript,custom-fields,advanced,mobile-device-rules

    #
    # Input a list of sections that will be included as part of the layout set
    # form when updating a layout set.
    #
    layout.set.form.update=look-and-feel,logo,javascript,advanced,mobile-device-rules

    #
    # Set whether or not private layouts are enabled. Set whether or not private
    # layouts should be auto created if a user has no private layouts. If
    # private layouts are not enabled, then the property
    # "layout.user.private.layouts.auto.create" is assumed to be false.
    #
    layout.user.private.layouts.enabled=true
    layout.user.private.layouts.auto.create=true

    #
    # Set this to true if users must have the Power User role to have private
    # pages.
    #
    layout.user.private.layouts.power.user.required=false

    #
    # Set whether or not public layouts are enabled. Set whether or not public
    # layouts should be auto created if a user has no public layouts. If public
    # layouts are not enabled, then the property
    # "layout.user.public.layouts.auto.create" is assumed to be false.
    #
    layout.user.public.layouts.enabled=true
    layout.user.public.layouts.auto.create=true

    #
    # Set this to true if users must have the Power User role to have public
    # pages.
    #
    layout.user.public.layouts.power.user.required=false

    #
    # Default settings layouts.
    #
    layout.edit.page=/portal/layout/edit/portlet.jsp
    layout.view.page=/portal/layout/view/portlet.jsp
    layout.url=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable=true
    layout.parentable=true
    layout.sitemapable=true
    layout.first.pageable=true
    #layout.configuration.action.update=
    #layout.configuration.action.delete=

    #
    # Settings for portlet layouts are inherited from the default settings.
    #
    #layout.edit.page[portlet]=/portal/layout/edit/portlet.jsp
    #layout.view.page[portlet]=/portal/layout/view/portlet.jsp
    #layout.url[portlet]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    #layout.url.friendliable[portlet]=true
    #layout.parentable[portlet]=true
    #layout.configuration.action.update[portlet]=
    #layout.configuration.action.delete[portlet]=

    #
    # Settings for panel layouts.
    #
    layout.edit.page[panel]=/portal/layout/edit/panel.jsp
    layout.view.page[panel]=/portal/layout/view/panel.jsp
    layout.url[panel]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[panel]=true
    layout.parentable[panel]=true
    layout.first.pageable[panel]=true

    #
    # Settings for control_panel layouts.
    #
    layout.edit.page[control_panel]=/portal/layout/edit/control_panel.jsp
    layout.view.page[control_panel]=/portal/layout/view/control_panel.jsp
    layout.url[control_panel]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[control_panel]=true
    layout.parentable[control_panel]=true
    layout.first.pageable[control_panel]=true

    #
    # Settings for embedded layouts.
    #
    layout.edit.page[embedded]=/portal/layout/edit/embedded.jsp
    layout.view.page[embedded]=/portal/layout/view/embedded.jsp
    layout.url[embedded]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.url.friendliable[embedded]=true
    layout.parentable[embedded]=false
    layout.sitemapable[embedded]=true
    layout.first.pageable[embedded]=true
    #layout.configuration.action.update[embedded]=
    #layout.configuration.action.delete[embedded]=

    #
    # Settings for article layouts.
    #
    layout.edit.page[article]=/portal/layout/edit/article.jsp
    layout.view.page[article]=/portal/layout/view/article.jsp
    layout.url.friendliable[article]=true
    layout.url[article]=${liferay:mainPath}/portal/layout?p_l_id=${liferay:plid}&p_v_l_s_g_id=${liferay:pvlsgid}
    layout.parentable[article]=false
    layout.sitemapable[article]=true
    layout.first.pageable[article]=true
    layout.configuration.action.update[article]=com.liferay.portal.model.LayoutTypeArticleConfigurationUpdateAction
    layout.configuration.action.delete[article]=com.liferay.portal.model.LayoutTypeArticleConfigurationDeleteAction

    #
    # Settings for URL layouts.
    #
    layout.edit.page[url]=/portal/layout/edit/url.jsp
    layout.view.page[url]=
    layout.url[url]=${url}
    layout.url.friendliable[url]=true
    layout.parentable[url]=false
    layout.sitemapable[url]=false
    layout.first.pageable[url]=false
    #layout.configuration.action.update[url]=
    #layout.configuration.action.delete[url]=

    #
    # Settings for page layouts.
    #
    layout.edit.page[link_to_layout]=/portal/layout/edit/link_to_layout.jsp
    layout.view.page[link_to_layout]=
    layout.url[link_to_layout]=${liferay:mainPath}/portal/layout?p_v_l_s_g_id=${liferay:pvlsgid}&groupId=${liferay:groupId}&privateLayout=${privateLayout}&layoutId=${linkToLayoutId}
    layout.url.friendliable[link_to_layout]=true
    layout.parentable[link_to_layout]=true
    layout.sitemapable[link_to_layout]=false
    layout.first.pageable[link_to_layout]=false
    #layout.configuration.action.update[link_to_layout]=
    #layout.configuration.action.delete[link_to_layout]=

    #
    # Specify static portlets that cannot be moved and will always appear on
    # every layout. Static portlets will take precedence over portlets that may
    # have been dynamically configured for the layout.
    #
    # For example, if you want the Hello World portlet to always appear at the
    # start of the iteration of the first column for user layouts, set the
    # property "layout.static.portlets.start.column-1[user]" to "47". If you
    # want the Hello World portlet to always appear at the end of the second
    # column for user layouts, set the property
    # "layout.static.portlets.end.column-2[user]" to "47". You can input a
    # list of comma delimited portlet ids to specify more than one portlet. If
    # the portlet is instanceable, add the suffix "_INSTANCE_abcd" to the
    # portlet id, where "abcd" is any random alphanumeric string.
    #
    # The static portlets are fetched based on the properties controlled by
    # custom filters using EasyConf. By default, the available filters are
    # user, community, and organization.
    #
    #layout.static.portlets.start.column-1[user]=3,6
    #layout.static.portlets.end.column-1[user]=14
    #layout.static.portlets.start.column-2[user]=71_INSTANCE_abcd,7
    #layout.static.portlets.end.column-2[user]=34,70
    #layout.static.portlets.start.column-3[user]=
    #layout.static.portlets.end.column-3[user]=

    #
    # It is also possible to set static portlets based on the layout's friendly
    # URL.
    #
    #layout.static.portlets.start.column-1[user][/home]=3,6
    #layout.static.portlets.end.column-2[regular-site][/home]=14

    #
    # Set the static portlets for the pages of regular sites.
    #
    #layout.static.portlets.start.column-1[regular-site]=
    #layout.static.portlets.end.column-1[regular-site]=
    #layout.static.portlets.start.column-2[regular-site]=
    #layout.static.portlets.end.column-2[regular-site]=
    #layout.static.portlets.start.column-3[regular-site]=
    #layout.static.portlets.end.column-3[regular-site]=

    #
    # Set the static portlets for the pages of organization sites.
    #
    #layout.static.portlets.start.column-1[organization]=
    #layout.static.portlets.end.column-1[organization]=
    #layout.static.portlets.start.column-2[organization]=
    #layout.static.portlets.end.column-2[organization]=
    #layout.static.portlets.start.column-3[organization]=
    #layout.static.portlets.end.column-3[organization]=

    #
    # Set the static portlets that will appear for every layout. See
    # /html/portal/layout/view/common.jspf for the logic of when these portlets
    # will be shown. For example, these portlets will only show for layouts that
    # can contain portlets and are not in a pop up state.
    #
    layout.static.portlets.all=

    #
    # Set the private group, private user, and public servlet mapping for
    # com.liferay.portal.servlet.FriendlyURLServlet. This value must match the
    # servlet mapping set in web.xml.
    #
    # For example, if the private group pages are mapped to "/group" and the
    # group's friendly URL is set to "/guest" and the layout's friendly URL is
    # set to "/company/community", then the friendly URL for the page will be
    # http://www.liferay.com/group/guest/company/community. Private group pages
    # map to a site's private pages and are only available to authenticated
    # users with the proper permissions.
    #
    # For example, if the public pages are mapped to "/web" and the group or
    # user's friendly URL is set to "/guest" and the layout's friendly URL is
    # set to "/company/community", then the friendly URL for the page will be
    # http://www.liferay.com/web/guest/company/community. Public pages are
    # available to unauthenticated users.
    #
    # The friendly URL's for users, groups, and layouts can be set during
    # runtime.
    #
    layout.friendly.url.private.group.servlet.mapping=/group
    layout.friendly.url.private.user.servlet.mapping=/user
    layout.friendly.url.public.servlet.mapping=/web

    #
    # Redirect to this resource if the user requested a friendly URL that does
    # not exist. Leave it blank to display nothing.
    #
    # Note: For backward compatibility, this overrides the property
    # "layout.show.http.status" for the 404 status code.
    #
    #layout.friendly.url.page.not.found=/html/portal/404.html

    #
    # Set the reserved keywords that cannot be used in a friendly URL.
    #
    layout.friendly.url.keywords=\
        _vti_*,\
        api*,\
        c,\
        combo,\
        delegate,\
        display_chart*,\
        dtd,\
        elqNow,\
        facebook,\
        google_gadget,\
        group,\
        html,\
        image,\
        language,\
        lucene,\
        netvibes,\
        o,\
        osgi,\
        page,\
        pbhs,\
        poller,\
        private,\
        public,\
        rest,\
        robots.txt,\
        sharepoint*,\
        sitemap.xml,\
        software_catalog*,\
        tunnel-web,\
        wap,\
        web,\
        webdav*,\
        widget,\
        xmlrpc

    #
    # Set this to true if guest users should see the maximize window icon.
    #
    layout.guest.show.max.icon=false

    #
    # Set this to true if guest users should see the minimize window icon.
    #
    layout.guest.show.min.icon=false

    #
    # Set this to true if users are shown that they do not have access to a
    # portlet. The portlet init parameter "show-portlet-access-denied" will
    # override this setting.
    #
    layout.show.portlet.access.denied=true

    #
    # Set this to true if users are shown that a portlet is inactive. The
    # portlet init parameter "show-portlet-inactive" will override this setting.
    #
    layout.show.portlet.inactive=true

    #
    # Set this to true if the portal should show HTTP status codes like 404 if
    # the requested page is not found.
    #
    layout.show.http.status=true

    #
    # Set the default layout template id used when creating layouts.
    #
    layout.default.template.id=2_columns_ii

    #
    # Set this to false to disable ajax rendering. You can also disable it
    # on a per request basis by setting the attribute key
    # com.liferay.portal.util.WebKeys.PORTLET_AJAXABLE_RENDER to the
    # Boolean.FALSE in a pre service event or by setting the URL parameter
    # "p_p_ajax" to "0". See the property "session.disabled" on how that
    # property effects this property.
    #
    layout.ajax.render.enable=true

    #
    # Set this to false to disable server side parallel rendering. You can also
    # disable it on a per request basis by setting the attribute key
    # com.liferay.portal.util.WebKeys.PORTLET_PARALLEL_RENDER to the
    # Boolean.FALSE in a pre service event or by setting the URL parameter
    # "p_p_parallel" to "0".
    #
    # Set this to true to forcibly set the property
    # "portlet.container.restrict" to true, as server side parallel rendering
    # requires restricted request attributes.
    #
    # This feature is only available for Tomcat and will be ignored when the
    # portal is running in other environments.
    #
    layout.parallel.render.enable=true

    #
    # Set this to false to disable timing out the core thread that is used for
    # server side parallel rendering. This means that after launching, the
    # thread pool will keep the core thread alive until it is shut down. Set
    # this to true to allow the core thread to time out like any other thread.
    # This is conceptually the same as setting the core thread count to 0 since
    # it removes the core thread's special privilege of timing out.
    #
    layout.parallel.render.thread.pool.allow.core.thread.timeout=true

    #
    # Set the number of core threads used for server side parallel rendering.
    #
    layout.parallel.render.thread.pool.core.thread.count=0

    #
    # Set the time in seconds to keep a thread alive for server side parallel
    # rendering.
    #
    layout.parallel.render.thread.pool.keep.alive.time=600

    #
    # Set the maximum size of the task queue for server side parallel rendering.
    # An unbounded queue size will never trigger RejectedExecutionHandler. Under
    # heavy load, this will lead to massive memory usage. A bounded queue size
    # with a proper RejectedExecutionHandler can help the server perform
    # graceful degradation.
    #
    layout.parallel.render.thread.pool.max.queue.size=100

    #
    # Set the maximum number of threads used for server side parallel rendering.
    #
    layout.parallel.render.thread.pool.max.thread.count=20

    #
    # Set the timeout time for server side parallel rendering. On timeout,
    # all pending portlets will fail back to ajax loading or trigger an error
    # message depending on whether the portlets are ajaxable.
    #
    # This timeout is an int value rather than long to avoid some atomic set
    # race condition. The Integer.MAX_VALUE is more than enough for a reasonable
    # timeout.
    #
    layout.parallel.render.timeout=5000

    #
    # Set the name of a class that implements
    # com.liferay.portal.util.LayoutClone. This class is used to remember
    # maximized and minimized states on shared pages. The default implementation
    # persists the state in the browser session.
    #
    layout.clone.impl=com.liferay.portal.util.SessionLayoutClone

    #
    # Set this to true to cache the content of layout templates. This is
    # recommended because it improves performance for production servers.
    # Setting it to false is useful during development if you need to make a lot
    # of changes.
    #
    layout.template.cache.enabled=true

    #
    # Set the default value for the "p_l_reset" parameter. If set to true,
    # render parameters are cleared when different pages are hit. This is not
    # the behavior promoted by the portlet specification, but is the one that
    # most end users seem to prefer.
    #
    layout.default.p_l_reset=true

    #
    # Set a list of comma delimited portlet IDs for portlets whose URLs are to
    # be treated as layout URLs. Upon encountering such URLs,
    # com.liferay.portal.action.LayoutAction always clears the current render
    # parameter pool and rebuilds render parameters from scratch. This property
    # is only enabled when the property "layout.default.p_l_reset" is set to
    # true.
    #
    layout.reset.portlet.ids=103

    #
    # Set this to true to enable comments for pages.
    #
    layout.comments.enabled=true

    #
    # Set this to true to remember maximized window states across different
    # pages.
    #
    layout.remember.maximized.window.state=false

    #
    # Set the initial number of child pages to display in the Manage Pages tree.
    # Set this to -1 to show all.
    #
    layout.manage.pages.initial.children=20

##
## Layout Prototypes
##

    #
    # Set this to true to enable the propagation of changes to a page from its
    # page template by default.
    #
    layout.prototype.link.enabled.default=true

    #
    # In the case that a page template would fail to merge, make sure that we
    # prevent repeated attempts that will inevitably fail by setting a fail
    # threshold.
    #
    layout.prototype.merge.fail.threshold=3

    #
    # Set the number of seconds we should expect a lock to last before we
    # recognize that an error occured and some other process should be able to
    # attempt to take it over.
    #
    layout.prototype.merge.lock.max.time=300

##
## Layout Set Prototypes
##

    #
    # In the case that a site template would fail to merge, make sure that we
    # prevent repeated attempts that will inevitably fail by setting a fail
    # threshold.
    #
    layout.set.prototype.merge.fail.threshold=3

    #
    # Set the number of seconds we should expect a lock to last before we
    # recognize that an error occured and some other process should be able to
    # attempt to take it over.
    #
    layout.set.prototype.merge.lock.max.time=600

##
## Portlet URL
##

    #
    # Set this to true if calling setParameter on a portlet URL appends the
    # parameter value versus replacing it. There is some disagreement in the
    # interpretation of the JSR 168 spec among portlet developers over this
    # specific behavior. Liferay Portal successfully passes the portlet TCK
    # tests whether this value is set to true or false.
    #
    # See http://issues.liferay.com/browse/LEP-426 for more information.
    #
    portlet.url.append.parameters=false

    #
    # Set this to true to allow portlet URLs to generate with an anchor tag.
    #
    portlet.url.anchor.enable=false

    #
    # JSR 286 specifies that portlet URLs are escaped by default. Set this to
    # false to provide for better backwards compatibility.
    #
    # If this is set to true, but a specific portlet application requires that
    # its portlet URLs not be escaped by default, then modify portlet.xml and
    # set the container runtime option "javax.portlet.escapeXml" to false.
    #
    portlet.url.escape.xml=false

    #
    # Set a list of comma delimited reserved parameters that will not be added
    # to refresh URL.
    #
    portlet.url.refresh.url.reserved.parameters=password,password1,password2,pop3Password,properties--jdbc.default.password,settings--google.apps.password,smtpPassword,settings--ldap.security.credentials

    #
    # Set this to true to allow portlet URLs to be generated using
    # /c/portal/portlet_url. Enabling can pose a security risk.
    #
    portlet.url.generate.by.path.enabled=false

##
## Preferences
##

    #
    # Set this to true to validate portlet preferences on startup.
    #
    preference.validate.on.startup=false

##
## Redirect
##

    #
    # Set this property to "ip" or "domain" for the redirect security method. If
    # set to "domain", the portal will only redirect users to domains listed in
    # the property "redirect.url.domain.allowed". If set to "ip", the portal
    # will only redirect to domains whose IP address resolve to an IP address
    # listed in the property "redirect.url.ip.allowed".
    #
    #redirect.url.security.mode=domain
    redirect.url.security.mode=ip

    #
    # Input a list of comma delimited domains which the portal is allowed to
    # redirect to. Input a blank list to allow any domain.
    #
    redirect.url.domains.allowed=

    #
    # Input a list of comma delimited IPs which the portal is allowed to
    # redirect to. Input a blank list to allow any IP. SERVER_IP will be
    # replaced with the IP of the host server.
    #
    redirect.url.ips.allowed=127.0.0.1,SERVER_IP

##
## Struts
##

    #
    # Specify the parameter names that will be ignored and not available to
    # portlets that use Struts. See LPS-46552 for more information.
    #
    struts.portlet.ignored.parameters.regexp=(.*\\.|^|.*|\\[('|"))(c|C)lass(\\.|('|")]|\\[).*

    #
    # Input the custom Struts request processor that will be used by Struts
    # based portlets. The custom class must extend
    # com.liferay.portal.struts.PortletRequestProcessor and have the same
    # constructor.
    #
    struts.portlet.request.processor=com.liferay.portal.struts.PortletRequestProcessor

##
## Images
##

    #
    # Set this to true if the Image servlet will automatically scale an image
    # based on the request "height" and "width" parameters.
    #
    image.auto.scale=false

    #
    # Set the location of the default spacer image that is used for missing
    # images. This image must be available in the class path.
    #
    image.default.spacer=com/liferay/portal/dependencies/spacer.gif

    #
    # Set the location of the default company logo image that is used for
    # missing company logo images. This image must be available in the class
    # path.
    #
    image.default.company.logo=com/liferay/portal/dependencies/company_logo.png

    #
    # Set the location of the default organization logo image that is used for
    # missing organization logo images. This image must be available in the
    # class path.
    #
    image.default.organization.logo=com/liferay/portal/dependencies/organization_logo.png

    #
    # Set the locations of the default user portrait images that are used for
    # missing user portrait images. This image must be available in the class
    # path.
    #
    image.default.user.female.portrait=com/liferay/portal/dependencies/user_female_portrait.png
    image.default.user.male.portrait=com/liferay/portal/dependencies/user_male_portrait.png

    #
    # In versions prior to 6.1, the Image Gallery portlet supported persisting
    # images via com.liferay.portal.image.DatabaseHook,
    # com.liferay.portal.image.DLHook, or
    # com.liferay.portal.image.FileSystemHook. Since 6.1, only DLHook is
    # supported.
    #
    # Set this property to the hook implementation to trigger automatic data
    # migration during an upgrade.
    #
    #image.hook.impl=com.liferay.portal.image.DatabaseHook
    #image.hook.impl=com.liferay.portal.image.DLHook
    #image.hook.impl=com.liferay.portal.image.FileSystemHook

    #
    # This is a legacy property used by the FileSystemHook to allow data
    # migration from other hooks.
    #
    image.hook.file.system.root.dir=${liferay.home}/data/images

##
## Editors
##

    #
    # You can configure individual JSP pages to use a specific implementation of
    # the available WYSIWYG editors: bbcode, ckeditor, ckeditor_bbcode,
    # ckeditor_creole, fckeditor, simple, tinymce, or tinymce_simple.
    #
    editor.wysiwyg.default=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.announcements.edit_entry.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.asset_publisher.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.blogs.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.blogs.edit_entry.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.bookmarks.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.document_library.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.invitation.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_article_content.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_article_content_xsd_el.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.login.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit_message.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_message.bb_code.jsp=ckeditor_bbcode
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_message.html.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.portal_settings.email_notifications.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.shopping.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.wiki.edit.creole.jsp=ckeditor_creole
    editor.wysiwyg.portal-web.docroot.html.portlet.wiki.edit.html.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.wiki.edit.mediawiki.jsp=simple

##
## Fields
##

    #
    # Set the following fields to false so users cannot see them. Some company
    # policies require gender and birthday information to always be hidden.
    #
    field.enable.com.liferay.portal.model.Contact.male=true
    field.enable.com.liferay.portal.model.Contact.birthday=true
    field.enable.com.liferay.portal.model.Organization.status=false

    #
    # Input a list of comma delimited user types. Users that match one of these
    # user types have permission to edit all of their own fields. Valid user
    # types are "user-with-mx" and "user-without-mx". A value of "user-with-mx"
    # is a user who has an email address that matches the company mail suffix,
    # and "user-without-mx" is a user who does not have an email address that
    # matches the company mail suffix.
    #
    field.editable.user.types=user-with-mx,user-without-mx

    #
    # Input a list of comma delimited role names. Users associated with one of
    # these roles have permission to edit all of their own fields.
    #
    field.editable.roles=administrator

    #
    # Input a list of comma delimited domain names. Users with an email address
    # that match one of these domain names have permission to edit all of their
    # own fields.
    #
    #field.editable.domains=

    #
    # Input a list of comma delimited domain names. Users with an email address
    # that match one of these domain names have permission to edit the specified
    # field.
    #
    #field.editable.domains[birthday]=
    #field.editable.domains[emailAddress]=
    #field.editable.domains[firstName]=
    #field.editable.domains[gender]=
    #field.editable.domains[jobTitle]=
    #field.editable.domains[lastName]=
    #field.editable.domains[middleName]=
    #field.editable.domains[portrait]=
    #field.editable.domains[prefix]=
    #field.editable.domains[screenName]=
    #field.editable.domains[suffix]=

##
## Mime Types
##

    #
    # Input a list of comma delimited extensions for which the content
    # disposition header has to be set to "inline".
    #
    mime.types.content.disposition.inline=flv,gif,jpg,pdf,png,swf,wmv

    #
    # Input a list of comma delimited MIME types that are optimized for
    # displaying images on the Internet. One of the use cases for this property
    # is to limit the image file types that a user can upload as a company logo,
    # organization logo, software catalog screenshot, or user portrait.
    #
    mime.types.web.images=image/gif,image/jpeg,image/pjpeg,image/png,image/x-png

##
## Amazon
##

    #
    # Enter an Amazon access key id and an Amazon associate tag. This is made
    # available only for personal use. Please see the Amazon license at
    # http://www.amazon.com for more information.
    #
    #amazon.access.key.id=
    #amazon.associate.tag=
    #amazon.secret.access.key=

##
## Browser Cache
##

    #
    # Set this to true if you want the portal to force the browser cache to be
    # disabled. It will only disable the cache for the rendered HTML response.
    # It will not have an impact on static content or other resources.
    #
    browser.cache.disabled=false

    #
    # Set this true if you want to disable the cache for authenticated users.
    # This property is not read when the property
    # "browser.cache.signed.in.disabled" is true. This is useful to ensure that
    # authenticated users cannot go to the sign in page by clicking on the back
    # button in their browsers.
    #
    browser.cache.signed.in.disabled=false

##
## Browser Compatibility
##

    #
    # Enter which versions of IE your browser should emulate to render the
    # portal. Enter "edge" to always use IE's latest standards rendering mode.
    #
    browser.compatibility.ie.versions=IE=edge

##
## Browser Launcher
##

    #
    # Enter a URL to automatically launch a browser to that URL when the portal
    # has fully initialized. Enter a blank URL to disable this feature.
    #
    browser.launcher.url=http://localhost:8080

##
## Control Panel
##

    #
    # Enter the the portlet id used in the Control Panel Home.
    #
    control.panel.home.portlet.id=190

    #
    # Set the name of the layout.
    #
    control.panel.layout.name=Control Panel

    #
    # Set the friendly URL of the layout.
    #
    control.panel.layout.friendly.url=/manage

    #
    # Set the theme of the layout.
    #
    control.panel.layout.regular.theme.id=controlpanel

    #
    # Set the maximum number of sites that will be shown in the navigation
    # menus. A large value might cause performance problems if the number of
    # sites a user can administer is very large.
    #
    control.panel.navigation.max.sites=100

    #
    # Set the name of a class that implements
    # com.liferay.portlet.ControlPanelEntry. This class denotes the default
    # value of of the element "control-panel-entry-class" in liferay-portlet.xml
    # and is called by the Control Panel to decide whether the portlet should be
    # shown to a specific user in a specific context.
    #
    control.panel.default.entry.class=com.liferay.portlet.DefaultControlPanelEntry

##
## Instant Messenger
##

    #
    # Set the AIM login and password by which the system will use AIM to
    # communicate with users.
    #
    aim.login=
    aim.password=

    #
    # Due to a bug in JOscarLib 0.3b1, you must set the full path to the ICQ
    # jar.
    #
    # See the following posts:
    #     http://sourceforge.net/projects/ooimlib/forums/forum/166562/topic/843299?message=1972697
    #     http://sourceforge.net/projects/ooimlib/forums/forum/166562/topic/843299?message=1990487
    #
    icq.jar=C:/Java/orion-2.0.7/lib/icq.jar

    #
    # Set the ICQ login and password by which the system will use ICQ to
    # communicate with users.
    #
    icq.login=
    icq.password=

    #
    # Set the MSN login and password by which the system will use MSN to
    # communicate with users.
    #
    msn.login=
    msn.password=

    #
    # Set the YM login and password by which the system will use YM to
    # communicate with users.
    #
    ym.login=
    ym.password=

##
## Lucene Search
##

    #
    # Set this to true to enable spell checking the query.
    #
    index.search.collated.spell.check.result.enabled=true

    #
    # Set the limit for considering the returned results as valid.
    # When this threshold is not met, the most relevant spell checked
    # query will be displayed.
    #
    index.search.collated.spell.check.result.scores.threshold=50

    #
    # Set this to true to enable highlighting of search results.
    #
    index.search.highlight.enabled=true

    #
    # Set the fragment size returned from the search result highlighter
    #
    index.search.highlight.fragment.size=80

    #
    # Set the number of lines for the snippet returned by a search engine.
    #
    index.search.highlight.snippet.size=3

    #
    # Set the limit for results used when performing index searches.
    #
    index.search.limit=10000

    #
    # Set this to true to enable indexing of related queries based on
    # successful searches.
    #
    index.search.query.indexing.enabled=true

    #
    # Set the limit for considering the returned results as valid. When this
    # threshold is met, the query will be indexed as related query.
    #
    index.search.query.indexing.threshold=50

    #
    # Set the location of the query suggestion dictionary files for specific
    # locales. Specify a comma delimited list of files if a locale has more than
    # one dictionary file. A group id (e.g. 123456) can also be added to specify
    # a dictionary that only applies to one group.
    #
    #index.search.query.suggestion.dictionary[en_US]=com/liferay/portal/search/lucene/dependencies/querysuggestions/en_US.txt
    #index.search.query.suggestion.dictionary[es_ES]=com/liferay/portal/search/lucene/dependencies/querysuggestions/es_ES.txt
    #index.search.query.suggestion.dictionary[en_US][123456]=com/liferay/portal/search/lucene/dependencies/querysuggestions/en_US_123456.txt

    #
    # Set this to true to enable query suggestion if insufficient scoring or
    # no results are returned for the user's original query.
    #
    index.search.query.suggestion.enabled=true

    #
    # Set the maximum number of query suggestions.
    #
    index.search.query.suggestion.max=5

    #
    # Set the limit of the search result score for triggering query suggestions.
    # Setting this to 0 will ignore scoring thresholds and only suggest queries
    # if no results are returned for the original search query.
    #
    index.search.query.suggestion.scores.threshold=0

    #
    # Set this to true to enable scoring of results.
    #
    index.search.scoring.enabled=true

    #
    # Set the location of the spell checker dictionary files for specific
    # locales. Specify a comma delimited list of files if a locale has more than
    # one dictionary file. A group id (e.g. 123456) can also be added to specify
    # a dictionary that only applies to one group.
    #
    index.search.spell.checker.dictionary[en_US]=com/liferay/portal/search/lucene/dependencies/spellchecker/en_US.txt
    index.search.spell.checker.dictionary[es_ES]=com/liferay/portal/search/lucene/dependencies/spellchecker/es_ES.txt
    #index.search.spell.checker.dictionary[en_US][123456]=com/liferay/portal/search/lucene/dependencies/spellchecker/en_US_123456.txt

    #
    # Specify the locales supported by the spell checker. This is used by
    # the search engine's spell checker when determining whether to execute
    # spell checking for a particular language.
    #
    index.search.spell.checker.supported.locales=en_US,es_ES

    #
    # Set the search engine for each indexer implementation by assigning the
    # search engine id. The search engine ids are defined in the spring
    # configuration files. The default engine id is SYSTEM_ENGINE and will be
    # used as the default for all indexers unless configured to use something
    # else.
    #
    #index.search.engine.id[com.liferay.portlet.journal.util.JournalArticleIndexerIndexer]=SYSTEM_ENGINE

    #
    # Set the limit for results used when performing index searches that are
    # subsequently filtered by permissions.
    #
    index.filter.search.limit=5000

    #
    # Set this to true if you want to avoid any writes to the index.
    # This is useful in some clustering environments where there is a shared
    # index and only one node of the cluster updates it.
    #
    index.read.only=false

    #
    # Set this to true if you want to index your entire library of files on
    # startup. This property is available so that automated test environments
    # index on startup. Do not set this to true on production systems or else
    # your index will be indexed on every startup.
    #
    index.on.startup=false

    #
    # Set this to true to add a delay before indexing on startup. A delay may be
    # necessary if a lot of plugins need to be loaded and reindexed. This
    # property is only valid if "index.on.startup" is set to true.
    #
    index.on.startup.delay=60

    #
    # Set this to true if you want to index your entire library of files after
    # an upgrade. Only set this property to false if you are running a small
    # upgrade and you do not need to reindex everything.
    #
    index.on.upgrade=true

    #
    # Set this to true if you want the indexing on startup to be executed on a
    # separate thread to speed up execution.
    #
    index.with.thread=true

    #
    # Set the date format used for storing dates as text in the index.
    #
    index.date.format.pattern=yyyyMMddHHmmss

    #
    # Set this to true if you want to compress index files before they are
    # dumped.
    #
    index.dump.compression.enabled=true

    #
    # Enter a list of comma delimited field names that will be copied to an
    # untokenized field for sorting.
    #
    index.sortable.text.fields=firstName,jobTitle,lastName,name,screenName,title

    #
    # Set the maximum length for sortable keyword fields before they are
    # truncated.
    #
    index.sortable.text.fields.truncated.length=255

    #
    # Set the maximum number of clauses to allow in a boolean query. The default
    # is 1024.
    #
    #lucene.boolean.query.clause.max.size=1024

    #
    # Designate whether Lucene stores indexes in a file system or in RAM.
    #
    lucene.store.type=file
    #lucene.store.type=ram

    #
    # When using file store, turning this flag on will tell Lucene to use
    # MMapDirectory rather than using the default selection (SimpleFSDirectory
    # for Windows and NIOFSDirectory for Linux). It only makes sense to use
    # MMapDirectory for 64-bit JVM with a lot of memory. On a 32-bit JVM, if the
    # index files are huge, this could easily lead to an out of memory for
    # non-heap memory.
    #
    lucene.store.type.file.force.mmap=false

    #
    # Set the directory where Lucene indexes are stored. This is only referenced
    # if Lucene stores indexes in the file system.
    #
    lucene.dir=${liferay.home}/data/lucene/

    #
    # Input a class name that extends
    # com.liferay.portal.search.lucene.LuceneFileExtractor. This class is called
    # by Lucene to extract text from complex files so that they can be properly
    # indexed.
    #
    lucene.file.extractor=com.liferay.portal.search.lucene.LuceneFileExtractor

    #
    # The file extractor can sometimes return text that is not valid for Lucene.
    # This property expects a regular expression. Any character that does not
    # match the regular expression will be replaced with a blank space. Set an
    # empty regular expression to disable this feature.
    #
    lucene.file.extractor.regexp.strip=
    #lucene.file.extractor.regexp.strip=[\\d\\w]

    #
    # Set how often index updates will be committed. Set the batch size to
    # configure how many consecutive updates will trigger a commit. If the value
    # is 0, then the index will be committed on every update. Set the time
    # interval in milliseconds to configure how often to commit the index. The
    # time interval is not read unless the batch size is greater than 0 because
    # the time interval works in conjunction with the batch size to guarantee
    # that the index is committed after a specified time interval. Set the time
    # interval to 0 to disable committing the index by a time interval.
    #
    lucene.commit.batch.size=0
    lucene.commit.time.interval=0

    #
    # Set the maximum number of tokens generated by the analyzer while indexing.
    #
    lucene.analyzer.max.tokens=10000

    #
    # Set Lucene's buffer size in megabytes. Higher numbers mean indexing goes
    # faster but uses more memory.
    #
    lucene.buffer.size=16

    #
    # Set Lucene's merge factor. Higher numbers mean indexing goes faster but
    # uses more memory. The default value from Lucene is 10. This should never
    # be set to a number lower than 2.
    #
    lucene.merge.factor=10

    #
    # Input a class name that extends org.apache.lucene.index.MergePolicy.
    # Lucene uses this class to determine the sequence of primitive merge
    # operations. Note that the property "lucene.merge.factor" is not only used
    # by LogDocMergePolicy.
    #
    #lucene.merge.policy=org.apache.lucene.index.LogByteSizeMergePolicy
    lucene.merge.policy=org.apache.lucene.index.LogDocMergePolicy
    #lucene.merge.policy=org.apache.lucene.index.NoMergePolicy
    #lucene.merge.policy=org.apache.lucene.index.TieredMergePolicy
    #lucene.merge.policy=org.apache.lucene.index.UpgradeIndexMergePolicy

    #
    # Input a class name that extends org.apache.lucene.index.MergeScheduler.
    # Lucene uses this class to execute merges based on the policy set in the
    # property "lucene.merge.policy".
    #
    lucene.merge.scheduler=org.apache.lucene.index.ConcurrentMergeScheduler
    #lucene.merge.scheduler=org.apache.lucene.index.NoMergeScheduler
    #lucene.merge.scheduler=org.apache.lucene.index.SerialMergeScheduler

    #
    # Set this to true if you want the portal to replicate an index write across
    # all members of the cluster. This is useful in some clustered environments
    # where you wish each server instance to have its own copy of the Lucene
    # search index. This is only relevant when using the default Lucene indexing
    # engine.
    #
    lucene.replicate.write=false

    #
    # Specify the Lucene cluster index loading synchronization timeout in
    # milliseconds.
    #
    lucene.cluster.index.loading.sync.timeout=60000

##
## Multi Value Map
##

    #
    # Set the multi value map property to 0 to store the map in memory and 1 to
    # store the map in the file system.
    #
    multi.value.map.com.liferay.portal.convert.ConvertPermissionAlgorithm.convertResourcePermission=0
    multi.value.map.com.liferay.portal.convert.ConvertPermissionAlgorithm.convertRoles=0

##
## Setup Wizard
##

    #
    # Set a comma delimited list of supported databases.
    #
    setup.database.types=db2,derby,hypersonic,ingres,mysql,oracle,postgresql,sqlserver,sybase

    setup.database.driverClassName[db2]=com.ibm.db2.jcc.DB2Driver
    setup.database.driverClassName[derby]=org.apache.derby.jdbc.EmbeddedDriver
    setup.database.driverClassName[hypersonic]=org.hsqldb.jdbcDriver
    setup.database.driverClassName[ingres]=com.ingres.jdbc.IngresDriver
    setup.database.driverClassName[mysql]=com.mysql.jdbc.Driver
    setup.database.driverClassName[oracle]=oracle.jdbc.driver.OracleDriver
    setup.database.driverClassName[postgresql]=org.postgresql.Driver
    setup.database.driverClassName[sqlserver]=net.sourceforge.jtds.jdbc.Driver
    setup.database.driverClassName[sybase]=net.sourceforge.jtds.jdbc.Driver

    setup.database.jar.name[com.mysql.jdbc.Driver]=mysql.jar
    setup.database.jar.url[com.mysql.jdbc.Driver]=http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.23/mysql-connector-java-5.1.23.jar

    setup.database.url[db2]=jdbc:db2://localhost:50000/lportal:deferPrepares=false;fullyMaterializeInputStreams=true;fullyMaterializeLobData=true;progresssiveLocators=2;progressiveStreaming=2;
    setup.database.url[derby]=jdbc:derby:lportal
    setup.database.url[hypersonic]=jdbc:hsqldb:${liferay.home}/data/hsql/lportal
    setup.database.url[ingres]=jdbc:ingres://localhost:II7/lportal
    setup.database.url[mysql]=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
    setup.database.url[oracle]=jdbc:oracle:thin:@localhost:1521:xe
    setup.database.url[postgresql]=jdbc:postgresql://localhost:5432/lportal
    setup.database.url[sqlserver]=jdbc:jtds:sqlserver://localhost/lportal
    setup.database.url[sybase]=jdbc:jtds:sybase://localhost:5000/lportal

    #
    # Set this property to true if the Setup Wizard should be displayed the
    # first time the portal is started.
    #
    setup.wizard.enabled=true

##
## SourceForge
##

    source.forge.mirrors=\
        http://downloads.sourceforge.net,\      # Redirect
        http://internap.dl.sourceforge.net,\    # San Jose, CA
        http://superb-east.dl.sourceforge.net,\ # McLean, Virginia
        http://superb-west.dl.sourceforge.net,\ # Seattle, Washington
        http://easynews.dl.sourceforge.net,\    # Phoenix, AZ
        http://kent.dl.sourceforge.net,\        # Kent, UK
        http://ufpr.dl.sourceforge.net,\        # Curitiba, Brazil
        http://belnet.dl.sourceforge.net,\      # Brussels, Belgium
        http://switch.dl.sourceforge.net,\      # Lausanne, Switzerland
        http://mesh.dl.sourceforge.net,\        # Duesseldorf, Germany
        http://ovh.dl.sourceforge.net,\         # Paris, France
        http://dfn.dl.sourceforge.net,\         # Berlin, Germany
        http://heanet.dl.sourceforge.net,\      # Dublin, Ireland
        http://garr.dl.sourceforge.net,\        # Bologna, Italy
        http://surfnet.dl.sourceforge.net       # Amsterdam, The Netherlands
        http://jaist.dl.sourceforge.net,\       # Ishikawa, Japan
        http://nchc.dl.sourceforge.net,\        # Tainan, Taiwan
        http://optusnet.dl.sourceforge.net      # Sydney, Australia

##
## Value Object
##

    #
    # You can add a listener for a specific class by setting the property
    # "value.object.listener" with a list of comma delimited class names that
    # implement com.liferay.portal.model.ModelListener. These classes are pooled
    # and reused and must be thread safe.
    #
    value.object.listener.com.liferay.portal.model.Contact=com.liferay.portal.model.ContactListener
    value.object.listener.com.liferay.portal.model.Layout=com.liferay.portal.model.LayoutListener,com.liferay.portal.service.impl.LayoutSetPrototypeLayoutListener
    value.object.listener.com.liferay.portal.model.LayoutSet=com.liferay.portal.model.LayoutSetListener,com.liferay.portal.service.impl.LayoutSetPrototypeLayoutSetListener
    value.object.listener.com.liferay.portal.model.PortletPreferences=com.liferay.portal.model.PortletPreferencesListener
    value.object.listener.com.liferay.portal.model.User=com.liferay.portal.model.UserListener
    value.object.listener.com.liferay.portal.model.UserGroup=com.liferay.portal.model.UserGroupListener
    value.object.listener.com.liferay.portlet.journal.model.JournalArticle=com.liferay.portlet.journal.model.JournalArticleListener

    #
    # Value objects are cached at three levels. They first level is "entity",
    # the second level is "finder", and the third level is "Hibernate".
    #
    # The entity level cache stores a value object's primary key to the value
    # object itself.
    #
    # The finder level cache stores the many paths that return a
    # value object and the many paths that return a list of value objects. The
    # finder level cache only caches primary keys and is further helped by the
    # entity level cache that caches the value object to the primary key.
    #
    # The Hibernate level cache is provided by the
    # "hibernate.cache.provider_class" property.
    #

    #
    # Set this to true to enable entity level caching.
    #
    value.object.entity.cache.enabled=true

    #
    # Set this to true to configure entity level caching to block. See the
    # property "ehcache.blocking.cache.allowed" for more information.
    #
    value.object.entity.blocking.cache=true

    #
    # The entity level cache uses a thread local map to store the most
    # frequently accessed items to lower the number of queries to the underlying
    # cache. Set the maximum map size to 0 to disable the thread level cache.
    #
    value.object.entity.thread.local.cache.max.size=100

    #
    # Entity level caching for a specific type of value object can be configured
    # by using a property name that includes the value object's class name.
    #
    value.object.entity.cache.enabled.com.liferay.portal.model.Layout=true
    value.object.entity.cache.enabled.com.liferay.portal.model.User=true

    #
    # Set this to true to enable finder level caching.
    #
    value.object.finder.cache.enabled=true

    #
    # Set this to true to configure finder level caching to block. See the
    # property "ehcache.blocking.cache.allowed" for more information.
    #
    value.object.finder.blocking.cache=true

    #
    # The finder level cache uses a thread local map to store the most
    # frequently accessed items to lower the number of queries to the underlying
    # cache. Set the maximum map size to 0 to disable the thread level cache.
    #
    value.object.finder.thread.local.cache.max.size=100

    #
    # Finder level caching for a specific type of value object can be configured
    # by using a property name that includes the value object's class name.
    # Mapping tables can also be specified to configure the caching of value
    # object relationships.
    #
    value.object.finder.cache.enabled.com.liferay.portal.model.Layout=true
    value.object.finder.cache.enabled.com.liferay.portal.model.User=true
    value.object.finder.cache.enabled.Users_Roles=true

##
## Audit Message
##

    audit.message.com.liferay.portal.model.Layout.VIEW=false

    audit.message.scheduler.job=false

##
## Buffered Increment
##

    #
    # Buffered incrementing provides logic to batch together requests for
    # writing view count increments to the database. Minimizing these database
    # hits can improve overall performance.
    #
    # Buffered incrementing only applies to service methods annotated with the
    # @BufferedIncrement(...) annotation. By default, it is used with methods
    # that increment view counters for Message Boards threads, Document Library
    # file entries, and Asset entries.
    #
    # Disabling buffered increment logic is not recommended. As an alternative to
    # disabling it, consider disabling its standby logic by setting the
    # "buffered.increment.standby.queue.threshold" and
    # "buffered.increment.standby.time.upper.limit" properties to 0. If
    # disabling buffered increment logic is truly desired, set this property to
    # false, but also remove the BufferedIncrementAdvice bean from
    # base-spring.xml, so annotated service methods are not skipped.
    #
    buffered.increment.enabled=true

    #
    # The standby properties manage the time the dispatcher waits to process an
    # increment requests. The longer the dispatcher waits to process a request,
    # the greater the probability that incoming requests, involving the same
    # entity instances (entries), can be batched together.
    #
    # For example, if the same Message Boards thread (MBThread instance) is
    # viewed multiple times (n times) while an existing view increment request
    # for that MBThread is waiting to be dispatched, then the incoming
    # increments can be added to the increment value of the existing request.
    # The resulting view count increment for the existing entry then would be
    # modified to 1 + n times and the incoming requests would be discarded. This
    # minimizes the database hits for incrementing that entry. Since the
    # incoming requests were no longer needed, and hence discarded, the memory
    # required for incrementing the view count of the entry was minimized too.
    #
    # Worker threads submit new increment requests to a BatchablePipe and notify
    # the dispatcher thread pool of the requests. The pipe acts as a mailbox
    # holding increment requests in a queue for the dispatcher to process. On
    # receiving a new increment request, the pipe checks if it already has a
    # request for the same entry. If it does, the pipe adds the incoming
    # increment to the existing entry's increment value and discards the
    # incoming increment request. If it doesn't find an existing request for the
    # same entry, the incoming request is simply added to the tail of the queue.
    #
    # On being notified by the worker thread of increment requests submitted to
    # the BatchablePipe, the thread pool checks the status of its dispatch
    # threads. If no dispatch threads exist, it creates one. If an idle thread
    # exists, it wakes it up. If threads exist but they are all active, the
    # thread pool leaves them alone. Active dispatch threads check the pipe's
    # queue for requests to process.
    #
    # The dispatch threads apply the standby logic before processing each
    # request from the pipe. They calculate the standby time for the request at
    # the head of the pipe's queue based on the queue threshold. If the number
    # of requests in the queue exceeds the threshold, the dispatch thread
    # processes the head request as quickly as possible, without waiting. If the
    # number of requests is within the threshold, the dispatch thread calculates
    # the standby time for the head request to be the standby time upper limit
    # (in seconds) divided by the number of requests in the queue. The fewer
    # requests in the queue, the longer the head request waits on standby.
    #
    # Consider the tradeoff between overall performance and delay in view count
    # updates as you configure standby waiting. The standby times applied to
    # the requests have a linear inverse ratio relationship to the number of
    # requests in the pipe. The standby time is not constant. The fewer requests
    # inside the queue, the longer they wait in standby. This logic increases
    # the probability of maximizing the batching of requests for dispatch. The
    # following chart illustrates the relationship:
    #
    #     ^ standby time
    #     |
    #     |\<---buffered.increment.standby.time.upper.limit
    #     | \
    #     |  \
    #     |   \
    #     |    \
    #     --------------> current BatchablePipe size
    #     0 ^
    #       |
    #       buffered.increment.standby.queue.threshold
    #
    # Typical settings for the queue threshold and upper time limit of a heavy
    # loaded system could be 10000 requests and 60 seconds, respectively.
    #
    # If either the queue threshold or upper time limit are set to 0, requests
    # are processed from the queue as quickly as possible, without waiting.
    # Negative values for either property are treated as 0.
    #
    buffered.increment.standby.queue.threshold=0
    buffered.increment.standby.time.upper.limit=0

    #
    # The dispatcher thread pool manages the lifecycle of the dispatch threads.
    # By default, the thread pool is configured to use a single dispatch thread.
    # Buffered incrementing is designed for optimal performance using a single
    # disptach thread.
    #
    # Set the "buffered.increment.threadpool.keep.alive.time" property to the
    # maximum idle time before a dispatch thread can be recycled. Negative
    # values for this property are treated as 0.
    #
    # The "buffered.increment.threadpool.max.size" property value should, in
    # in most cases, remain set to 1. If for some reason, more than one
    # dispatch thread is desired, know that this goes against the design of
    # buffered incrementing and may result in less than optimal performance.
    # Values less than or equal to 0 for this property are treated as 1.
    #
    buffered.increment.threadpool.keep.alive.time=60
    buffered.increment.threadpool.max.size=1

    #
    # Override the global buffered increment settings with specific settings for
    # the AssetEntry view counter.
    #
    #buffered.increment.enabled[AssetEntry]=true
    #buffered.increment.standby.queue.threshold[AssetEntry]=0
    #buffered.increment.standby.time.upper.limit[AssetEntry]=0
    #buffered.increment.threadpool.keep.alive.time[AssetEntry]=60
    #buffered.increment.threadpool.max.size[AssetEntry]=1

    #
    # Override the global buffered increment settings with specific settings for
    # the DLFileEntry view counter.
    #
    #buffered.increment.enabled[DLFileEntry]=true
    #buffered.increment.standby.queue.threshold[DLFileEntry]=0
    #buffered.increment.standby.time.upper.limit[DLFileEntry]=0
    #buffered.increment.threadpool.keep.alive.time[DLFileEntry]=60
    #buffered.increment.threadpool.max.size[DLFileEntry]=1

    #
    # Override the global buffered increment settings with specific settings for
    # the MBThread view counter.
    #
    #buffered.increment.enabled[MBThread]=true
    #buffered.increment.standby.queue.threshold[MBThread]=0
    #buffered.increment.standby.time.upper.limit[MBThread]=0
    #buffered.increment.threadpool.keep.alive.time[MBThread]=60
    #buffered.increment.threadpool.max.size[MBThread]=1

##
## Cache
##

    # Clear cache on context initialization.
    #
    cache.clear.on.context.initialization=true

    #
    # Clear cache when plugins are undeployed.
    #
    cache.clear.on.plugin.undeploy=true

    #
    # The cache filter caches processed web content. Set the threshold size to
    # prevent caching resources that are too large. The default value is 500 kb.
    #
    cache.content.threshold.size=512000

##
## Cluster Link
##

    #
    # Set the cluster node bootup response timeout in milliseconds.
    #
    cluster.link.node.bootup.response.timeout=10000

    #
    # Set this to true to enable the cluster link. This is required if you want
    # to cluster indexing and other features that depend on the cluster link.
    #
    cluster.link.enabled=false

    #
    # Set the JGroups properties for each channel, we support up to 10 transport
    # channels and 1 single required control channel. Use as few transport
    # channels as possible for best performance. By default, only one UDP
    # control channel and one UDP transport channel are enabled. Channels can be
    # configured by XML files that are located in the class path or by inline
    # properties.
    #
    cluster.link.channel.properties.control=UDP(bind_addr=${cluster.link.bind.addr["cluster-link-control"]};mcast_group_addr=${multicast.group.address["cluster-link-control"]};mcast_port=${multicast.group.port["cluster-link-control"]}):PING(timeout=2000;num_initial_members=20;break_on_coord_rsp=true):MERGE3(min_interval=10000;max_interval=30000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK2(xmit_interval=1000;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=30000;max_msg_batch_size=500;use_mcast_xmit=false;discard_delivered_msgs=true):UNICAST2(max_bytes=10M;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=60000;max_msg_batch_size=500):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=4M):pbcast.GMS(join_timeout=3000;print_local_addr=true;view_bundling=true):UFC(max_credits=2M;min_threshold=0.4):MFC(max_credits=2M;min_threshold=0.4):FRAG2(frag_size=61440):RSVP(resend_interval=2000;timeout=10000)
    cluster.link.channel.properties.transport.0=UDP(bind_addr=${cluster.link.bind.addr["cluster-link-udp"]};mcast_group_addr=${multicast.group.address["cluster-link-udp"]};mcast_port=${multicast.group.port["cluster-link-udp"]}):PING(timeout=2000;num_initial_members=20;break_on_coord_rsp=true):MERGE3(min_interval=10000;max_interval=30000):FD_SOCK:FD_ALL:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK2(xmit_interval=1000;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=30000;max_msg_batch_size=500;use_mcast_xmit=false;discard_delivered_msgs=true):UNICAST2(max_bytes=10M;xmit_table_num_rows=100;xmit_table_msgs_per_row=2000;xmit_table_max_compaction_time=60000;max_msg_batch_size=500):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=4M):pbcast.GMS(join_timeout=3000;print_local_addr=true;view_bundling=true):UFC(max_credits=2M;min_threshold=0.4):MFC(max_credits=2M;min_threshold=0.4):FRAG2(frag_size=61440):RSVP(resend_interval=2000;timeout=10000)
    #cluster.link.channel.properties.transport.1=udp.xml
    #cluster.link.channel.properties.transport.2=mping.xml

    #
    # Set JGroups' system properties. System properties have higher priority
    # than individual properties given to each channel. That means system
    # properties will override individual properties.
    #
    cluster.link.channel.system.properties=\
        #
        # Common
        #
        \
        jgroups.bind_addr:${cluster.link.bind.addr["cluster-link-udp"]},\
        #jgroups.bind_interface:eth0,\
        \
        #
        # Multicast
        #
        \
        jgroups.mping.mcast_addr:${multicast.group.address["cluster-link-mping"]},\
        jgroups.mping.mcast_port:${multicast.group.port["cluster-link-mping"]},\
        jgroups.mping.ip_ttl:8

    #
    # Set this property to autodetect the default outgoing IP address so that
    # JGroups can bind to it. The property must point to an address that is
    # accessible to the portal server, www.google.com, or your local gateway.
    #
    cluster.link.autodetect.address=www.google.com:80

    #
    # Set the bind address for JGroups directly, it only works when the property
    # "cluster.link.autodetect.address" is not set. See the property
    # "cluster.link.channel.properties.control" for more information.
    #
    cluster.link.bind.addr["cluster-link-control"]=localhost

    #
    # Set bind address for jgroups directly, it only works when "cluster.link.
    # autodetect.address" is not set. See the properties "cluster.link.channel.
    # properties.transport.0" and "cluster.link.channel.system.properties".
    #
    cluster.link.bind.addr["cluster-link-udp"]=localhost

##
## Cluster Executor
##

    #
    # Set this to true to enable the cluster executor debugging. This will
    # attach a debugging listener which will log every cluster event it
    # receives.
    #
    cluster.executor.debug.enabled=false

##
## Clusterable Advice
##

    #
    # Set the clusterable advice call master timeout in seconds.
    #
    clusterable.advice.call.master.timeout=10

##
## Combo
##

    #
    # A file extension of * will permit all file extensions.
    #
    combo.allowed.file.extensions=.css,.js

    #
    # The combo servlet combines multiple JavaScript files into a bundle based
    # on shared dependencies. This makes loading JavaScript files much faster.
    # Set this to false if the combination should refresh when one of its
    # JavaScript files has changed. This property should be set to true during
    # development for easier debugging but set to false during production for
    # faster performance.
    #
    combo.check.timestamp=false

    #
    # Set the minimum wait interval in milliseconds between timestamp checks on
    # resource files. This property is only used if the property
    # "combo.check.timestamp" is set to true.
    #
    combo.check.timestamp.interval=1000

##
## Content Delivery Network
##

    #
    # Set the hostname that will be used to serve static content via a CDN for
    # requests made over the HTTP protocol. This property can be disabled
    # dynamically at runtime by setting the URL parameter "cdn_enabled" to "0".
    # The value must always include the full protocol.
    #
    cdn.host.http=

    #
    # Set the hostname that will be used to serve static content via a CDN for
    # requests made over the HTTPS protocol. This property can be disabled
    # dynamically at runtime by setting the URL parameter "cdn_enabled" to "0".
    # The value must always include the full protocol.
    #
    cdn.host.https=

    #
    # Set this to true to enable serving dynamically generated CSS, JavaScript,
    # and images via a CDN. Setting this to false allows the usage of CDNs that
    # do not support lazy loading of resources (e.g. Amazon CloudFront).
    #
    cdn.dynamic.resources.enabled=true

##
## Cookie
##

    #
    # HTTP only cookies are not supposed to be exposed to client-side scripting
    # code, and may therefore help mitigate certain kinds of cross-site
    # scripting attacks. Input a list of comma delimited cookie names that are
    # not HTTP only.
    #
    cookie.http.only.names.excludes=

##
## Counter
##

    #
    # The counter operates with its own data source to prevent deadlocks. By
    # default, the data source created for the counter uses the same settings as
    # those used to create the data source used for the rest of the portal. That
    # happens because the counter service will look up the properties prefixed
    # with "jdbc.default." to create its data source. See the JDBC properties
    # prefixed with "jdbc.default." for more information.
    #
    # Setting a different value for the counter JDBC prefix allows you to better
    # fine tune the counter data source with its own set of configuration
    # settings for high availability installations. Note that these settings,
    # though separate, are a copy of the default settings with the newly
    # overridden values.
    #
    counter.jdbc.prefix=jdbc.default.

    #
    # Set the number of increments between database updates to the Counter
    # table. Set this value to a higher number for better performance.
    #
    counter.increment=100

    #
    # You can further fine tune the counter increment for specific counter
    # names. This entry will ensure that the counter name
    # "com.liferay.portal.model.Layout" or anything that starts with
    # "com.liferay.portal.model.Layout#" will only increment by 1.
    #
    counter.increment.com.liferay.portal.model.Layout=1

##
## Direct Servlet Context
##

    #
    # Set this to true to enable dispatching to a servlet directly to speed up
    # request dispatching. This property only takes effect when a developer
    # programmatically wraps a normal ServletContext with a
    # DirectServletContext. See LPS-13776 for more information.
    #
    direct.servlet.context.enabled=true

    #
    # Set this to true to refresh the servlet associated with a JSP when the JSP
    # has been modified. This property is not used unless the property
    # "direct.servlet.context.enabled" is set to true.
    #
    direct.servlet.context.reload=true

##
## ETag
##

    #
    # The ETag filter needs to process the response in order to caculate the
    # ETag value. A large response may use too much memory. Set the maximum
    # response size that will trigger an ETag calculation. The default maximum
    # response size is 1 megabyte.
    #
    etag.response.size.max=1048576

##
## FreeMarker Engine
##

    freemarker.engine.localized.lookup=false

    #
    # Set this to 0 to load template source every time. Set this to a number
    # less than 0 to load templates once and cache it indefinitely. Set this to
    # a number greater than 0 to load templates and cache it for the period of
    # time specified by that number in milliseconds.
    #
    freemarker.engine.resource.modification.check.interval=60

    #
    # Set a comma delimited list of Java classes the FreeMarker engine cannot
    # have access to.
    #
    freemarker.engine.restricted.classes=\
        java.lang.Class,\
        java.lang.ClassLoader,\
        java.lang.Thread

    #
    # Set a comma delimited list of Java packages the FreeMarker engine cannot
    # have access to.
    #
    freemarker.engine.restricted.packages=

    #
    # Set a comma delimited list of variables the FreeMarker engine cannot
    # have access to. This will affect Dynamic Data List templates, Journal
    # templates, and Portlet Display templates.
    #
    freemarker.engine.restricted.variables=serviceLocator

    #
    # The exception handler can have its value set to the name of a class
    # implementing FreeMarker's TemplateExceptionHandler, or to rethrow, debug,
    # debug_html, or ignore.
    #
    freemarker.engine.template.exception.handler=rethrow

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.template.TemplateResourceParser. These classes will
    # run in sequence to allow you to find the applicable TemplateResourceParser
    # to parse a FreeMarker template.
    #
    freemarker.engine.template.parsers=com.liferay.portal.freemarker.FreeMarkerServletResourceParser,com.liferay.portal.template.ThemeResourceParser,com.liferay.portal.template.DDMTemplateResourceParser,com.liferay.portal.template.ClassLoaderResourceParser

    #
    # Input a list of comma delimited macros that will be loaded. These files
    # must exist in the class path.
    #
    freemarker.engine.macro.library=FTL_liferay.ftl as liferay

##
## Google Apps
##

    #
    # Set the default user name and password for Google Apps integration. The
    # domain used by Google Apps is retrieved from the portal's mail domain.
    # See http://code.google.com/apis/apps for more information.
    #
    # Google Apps integration is not used unless the property "mail.hook.impl"
    # is set with the value "com.liferay.mail.util.GoogleHook".
    #
    google.apps.username=
    google.apps.password=

##
## GZip
##

    #
    # The GZip filter will compress files using the specified compression level.
    # Set the value to -1 to use the default compression level. Set the value
    # between 0 and 9 for other compression levels as documented in
    # java.util.zip.Deflater.
    #
    gzip.compression.level=-1

##
## HTTP
##

    #
    # See system.properties for more HTTP settings.
    #

    #
    # Set the maximum number of connections per host.
    #
    #com.liferay.portal.util.HttpImpl.max.connections.per.host=2
    #com.liferay.portal.util.HttpImpl.max.connections.per.host[rss.news.yahoo.com]=2

    #
    # Set the maximum number of connections.
    #
    #com.liferay.portal.util.HttpImpl.max.total.connections=20

    #
    # Set the proxy authentication type.
    #
    #com.liferay.portal.util.HttpImpl.proxy.auth.type=username-password
    #com.liferay.portal.util.HttpImpl.proxy.auth.type=ntlm

    #
    # Set user name and password used for HTTP proxy authentication.
    #
    #com.liferay.portal.util.HttpImpl.proxy.username=
    #com.liferay.portal.util.HttpImpl.proxy.password=

    #
    # Set additional properties for NTLM authentication.
    #
    #com.liferay.portal.util.HttpImpl.proxy.ntlm.domain=
    #com.liferay.portal.util.HttpImpl.proxy.ntlm.host=

    #
    # Set the connection timeout when fetching HTTP content.
    #
    com.liferay.portal.util.HttpImpl.timeout=10000
    #com.liferay.portal.util.HttpImpl.timeout[rss.news.yahoo.com]=10000

##
## HTTP Header Response
##

    #
    # Set this to true for the portal to send the "X-Content-Type-Options:
    # nosniff" HTTP header to protect against MIME sniffing. Custom URLs can
    # specified in the property
    # "http.header.secure.x.content.type.options.urls.excludes" that allow for
    # unhindered MIME sniffing.
    #
    http.header.secure.x.content.type.options=true

    #
    # Set a list of comma delimited URL prefixes that allow for unhindered
    # MIME sniffing. This property is only used when the property
    # "http.header.secure.x.content.type.options" is set to true.
    #
    #http.header.secure.x.content.type.options.urls.excludes=

    #
    # Set this to true for the portal to send the "X-Frame-Options: DENY" HTTP
    # header to protect against clickjacking.
    #
    # Custom HTTP header values instead of "DENY" can be specified per URL via
    # the properties "http.header.secure.x.frame.options.*".
    #
    http.header.secure.x.frame.options=true

    #
    # If the property "http.header.secure.x.frame.options" is set to true, then
    # the portal will iterate through the properties
    # "http.header.secure.x.frame.options.*" where the wildcard "*"
    # is replaced with an int number starting from 0 and ending with 255 to find
    # a pipe (|) delimited URL and HTTP header value pair (e.g. "/|SAMEORIGIN").
    #
    # Upon finding a matched a URL, the portal will use the custom HTTP header
    # value instead of the "DENY" value.
    #
    # By default, URLs that start with "/" will use a custom HTTP header value
    # of "SAMEORIGIN". Specify another URL and HTTP header value with a number
    # smaller than 255 to intercept this default behavior.
    #
    http.header.secure.x.frame.options.255=/|SAMEORIGIN

    #
    # Set this to nonempty value for the portal to send the "X-XSS-Protection"
    # HTTP header to block cross-site scripting attacks. Possible nonempty
    # values are "0", "1" and "1; mode=block"
    #
    http.header.secure.x.xss.protection=1

    #
    # Set the level of verbosity to use for the Liferay-Portal field in the HTTP
    # header response. Valid values are "full", which gives all of the version
    # information (e.g. Liferay Portal Community Edition 6.1.0 CE etc.) or
    # "partial", which gives only the name portion (e.g. Liferay Portal
    # Community Edition).
    #
    http.header.version.verbosity=full

##
## HTTP Tunneling
##

    #
    # Do not set this property to false in production environments. It overrides
    # the SSL hostname verification and is used for self assigned certificates.
    # See LPS-18038.
    #
    com.liferay.portal.service.http.TunnelUtil.verify.ssl.hostname=true

    #
    # Set this shared secret to secure communications from one portal to another
    # via the tunneling servlet. This portal will refuse communications from
    # other portals that do not share the same secret.
    #
    # Secrets must be 16, 32, or 64 characters long.
    #
    #tunneling.servlet.shared.secret=

##
## ImageMagick
##

    #
    # Set this to true to enable ImageMagick. You must install Ghostscript and
    # Imagemagick. See http://www.ghostscript.com and http://www.imagemagick.org
    # for more information.
    #
    # The search path should point to the directories for the ImageMagick and
    # Ghostscript executables. You may also need to configure the path for fonts
    # used by Ghostscript when in Apple or Unix environments.
    #
    imagemagick.enabled=false
    imagemagick.global.search.path[apple]=/opt/local/bin:/opt/local/share/ghostscript/fonts:/opt/local/share/fonts/urw-fonts
    imagemagick.global.search.path[unix]=/usr/local/bin:/usr/local/share/ghostscript/fonts:/usr/local/share/fonts/urw-fonts
    imagemagick.global.search.path[windows]=C:\\Program Files\\gs\\bin;C:\\Program Files\\ImageMagick

    #
    # Set these limits to configure the cache and resource usage of ImageMagick.
    # To determine the current setting of these limits, run the command:
    #
    # identify -list resource
    #
    # See http://www.imagemagick.org/script/architecture.php for more
    # information.
    #
    imagemagick.resource.limit.area=2GiB
    #imagemagick.resource.limit.disk=16GiB
    #imagemagick.resource.limit.file=256
    imagemagick.resource.limit.map=1GiB
    imagemagick.resource.limit.memory=2GiB
    #imagemagick.resource.limit.thread=2
    #imagemagick.resource.limit.time=3600

##
## Intraband
##

    #
    # Specify the class name of an Intraband implementation. The class must
    # implement the
    # com.liferay.portal.kernel.nio.intraband.Intraband interface.
    #
    # If you leave the value blank, the portal makes a best effort in choosing
    # an implementation for optimal performance on your system, considering your
    # Intraband welder.
    #
    # If com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder is
    # your Intraband welder, either explicitly configured for your
    # "intraband.welder.impl" property value or automatically chosen by the
    # portal, then the portal chooses the
    # com.liferay.portal.kernel.nio.intraband.nonblocking.SelectorIntraband class
    # as the Intraband implementation.
    #
    # Otherwise the portal chooses the
    # com.liferay.portal.kernel.nio.intraband.blocking.ExecutorIntraband class
    # as the Intraband implementation.
    #
    # Performance tips:
    #
    # FIFO, if provided by your Linux or Unix OS, only works with
    # ExecutorIntraband. To use FIFO, you must either specify the
    # ExecutorIntraband class as the Intraband implementation or leave the value
    # blank for the portal to automatically choose it.
    #
    # SelectorIntraband uses a Selector instance to manage all registered
    # SelectableChannels. It uses the Selector instance with a single polling
    # thread to serve all read/write requests. SelectorIntraband has a lower CPU
    # overhead than ExecutorIntraband. However, SelectorIntraband can
    # potentially have unnecessary read/write latency (if any callback is
    # holding the polling thread).
    #
    # ExecutorIntraband works with any
    # ScatteringByteChannel/GatheringByteChannel registered pair.
    # ExecutorIntraband launches a dedicated polling thread for each channel,
    # in blocking mode. So ExecutorIntraband has higher CPU overhead
    # than SelectorIntraband, but since each channel polling is isolated,
    # ExecutorIntraband can provide better throughput and response time.
    #
    # For a system that requires tons of connections over Intraband, it is
    # best to use SelectorIntraband to avoid massive polling threads.
    #
    # For a system that requires limited connections over Intraband, it is best
    # to use ExecutorIntraband to maximize throughput and response time.
    #
    #intraband.impl=com.liferay.portal.kernel.nio.intraband.blocking.ExecutorIntraband
    #intraband.impl=com.liferay.portal.kernel.nio.intraband.nonblocking.SelectorIntraband
    intraband.impl=

    #
    # Set this to true to launch a separate dedicated thread to reap overdue
    # mail. Otherwise, the overdue mail is reaped in a lazy manner--reaped only
    # when new mail comes in and old mail goes out.
    #
    # Performance tips:
    #
    # With the dedicated reaper thread, overdue mail is reaped in a timely
    # manner, reducing the memory footprint but costing more CPU power. Without
    # the dedicated reaper thread, CPU power is conserved but the memory
    # footprint can potentially grow large.
    #
    # Generally, for small and frequent mail messages, it is better to turn this
    # off. For huge and infrequent mail messages, it is better to turn this on.
    #
    intraband.mailbox.reaper.thread.enabled=false

    #
    # Set the number of milliseconds to keep mail living in the mailbox.
    #
    intraband.mailbox.storage.life=10000

    #
    # Set default Intraband synchronized operation timeout time in milliseconds.
    #
    intraband.timeout.default=10000

    #
    # Specify the class name of an Intraband welder. The class must implement
    # the com.liferay.portal.kernel.nio.intraband.welder.Welder interface.
    #
    # If you leave the value blank, the portal makes a best effort in choosing
    # an implementation for optimal performance on your system.
    #
    # If your system's OS is not Windows and the portal finds mkfifo command in
    # your system's PATH, the portal chooses the FIFO welder class
    # com.liferay.portal.kernel.nio.intraband.welder.fifo.FIFOWelder.
    #
    # Otherwise, the portal chooses the socket welder class
    # com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder.
    #
    # Consider the following example that compares the performance of these two
    # welders:
    #
    # On average, the FIFO welder outperforms the socket welder on both
    # throughput and response latency, until packages reach about 2
    # to 4 megabytes in size.
    #
    # On an uncustomized modern Linux kernel, the best package size for the FIFO
    # FIFO welder is 64 kilobytes. The FIFO welder's best package size is the
    # system's maximum non-blocking package size. To calculate it for your
    # system, multiply your system's pipe size (ulimit -p) by the number of
    # kernel buffers your system can allocate.
    #
    # Executing 'ulimit -p' returns the following pipe size:
    #
    #     pipe size (512 bytes) * 8 = 4 kilobytes
    #
    # The kernel can allocate up to 16 buffers. Multiplying the pipe size by the
    # the number of buffers results in the system's maximum non-blocking package
    # size:
    #
    #     4 kilobytes * 16 kernel buffers = 64 kilobytes
    #
    # As package size grows past this best size, the FIFO welder's performance
    # declines, but is still better than the socket welder's performance; that
    # is, until the package size reaches about 2 to 4 megabytes. At that package
    # size, FIFO welder performs the same as socket welder. It's only when
    # packages are greater than that size that socket welder performs better.
    # For these huge packages, you can either use the socket welder class or
    # recompile the Linux kernel to support a larger pipe size and more kernel
    # buffers.
    #
    #intraband.welder.impl=com.liferay.portal.kernel.nio.intraband.welder.fifo.FIFOWelder
    #intraband.welder.impl=com.liferay.portal.kernel.nio.intraband.welder.socket.SocketWelder
    intraband.welder.impl=

    #
    # Set the send and receive buffer size, in bytes, for both the server and
    # client socket peers.
    #
    intraband.welder.socket.buffer.size=65536

    #
    # Specify whether to keep the socket on both the server and client socket
    # peers alive.
    #
    intraband.welder.socket.keep.alive=false

    #
    # Specify whether to recycle the address on the server and client socket
    # peers and on the temporary server socket channel.
    #
    intraband.welder.socket.reuse.address=true

    #
    # Specify a port number from which the SocketWelder automatically starts
    # searching for an available port to open up a temporary ServerSocketChannel
    # to bind the the server and client. Since it doesn't matter which port this
    # ServerSocketChannel listens on, SocketWelder uses to the first available
    # port.
    #
    # After one client socket is accepting, the ServerSocketChannel is closed
    # and recycled.
    #
    intraband.welder.socket.server.start.port=32354

    #
    # Specify how long, if at all, the socket should linger on both the server
    # and client socket peers. This value is used as the integer parameter in
    # the call to Socket.setSoLinger(boolean, int).
    #
    # A non-positive value turns off lingering resulting in calling
    # Socket.setSoLinger(false, int).
    #
    intraband.welder.socket.so.linger=0

    #
    # Specify the the SO_TIMEOUT on both the server and client socket peers.
    # This value is used in calling to Socket.setSoTimeout(int).
    #
    intraband.welder.socket.so.timeout=0

    #
    # Specify whether to enable TCP_NODELAY on both the server and client socket
    # peers. This value is used in the calling Socket.setTcpNoDelay(boolean).
    #
    intraband.welder.socket.tcp.no.delay=true

##
## Invoker
##

    #
    # The invoker filter will attempt to cache InvokerFilterChain objects based
    # on the request URI and dispatcher. Set this property configure the
    # maximum number of cached InvokerFilterChain objects. Set this property to
    # 0 to disable caching of InvokerFilterChain objects.
    #
    invoker.filter.chain.cache.size=10000

##
## Javadoc Manager
##

    #
    # Set this property to true to enable runtime querying of Javadoc
    # information. This is used by the JSON web service at
    # http://localhost:8080/api/jsonws to give users better information about
    # the API. The Javadoc manager uses very little memory and has little effect
    # on the startup time, but both can be optimized by disabling this feature.
    #
    javadoc.manager.enabled=true

##
## JCR
##

    jcr.initialize.on.startup=false
    jcr.wrap.session=true

    jcr.workspace.name=liferay
    jcr.node.documentlibrary=documentlibrary

    jcr.jackrabbit.repository.root=${liferay.home}/data/jackrabbit
    jcr.jackrabbit.config.file.path=${jcr.jackrabbit.repository.root}/repository.xml
    jcr.jackrabbit.repository.home=${jcr.jackrabbit.repository.root}/home
    jcr.jackrabbit.credentials.username=none
    jcr.jackrabbit.credentials.password=none

##
## JSON
##

    #
    # Set this property to true to activate strict mode for the JSON
    # deserializer. In strict mode, the deserializer will not accept any bean
    # attributes that are either static or do not comply with bean property name
    # conventions (e.g. setBeanName, getBeanName).
    #
    json.deserializer.strict.mode=true

    #
    # Set this to to true to require JSON service calls to have a valid
    # authentication token. This property is not used unless the property
    # "auth.token.check.enabled" is also set to true.
    #
    json.service.auth.token.enabled=true

    #
    # Input a list of comma delimited IPs that can access the JSON service
    # without specifying an authenticaton token. Input a blank list to allow
    # any IP to access the JSON service. SERVER_IP will be replaced with the IP
    # of the host server.
    #
    # The default value of 255.255.255.255 means that no one can access the JSON
    # service without an authentication token since 255.255.255.255 is an
    # invalid IP.
    #
    json.service.auth.token.hosts.allowed=255.255.255.255

    #
    # Input a list of comma delimited class names that cannot be invoked via
    # JSON.
    #
    json.service.invalid.class.names=\
        com.liferay.documentlibrary.service.DLAppServiceUtil,\
        com.liferay.mail.service.CyrusServiceUtil,\
        com.liferay.mail.service.MailServiceUtil,\
        com.liferay.portal.service.CompanyServiceUtil,\
        com.liferay.portal.service.PortalServiceUtil,\
        com.liferay.portal.service.PortletServiceUtil

    #
    # Input a list of comma delimited method names that cannot be invoked via
    # JSON.
    #
    json.service.invalid.method.names=\
        getBeanIdentifier,\
        setBeanIdentifier

##
## JSON Web Service
##

    #
    # Set this property to true to enable JSON web services. Note that setting
    # this to false will cause portlets that make JSON web service calls from
    # working.
    #
    json.web.service.enabled=true

    #
    # Input a list of comma delimited HTTP methods that are not accessible. For
    # example, if you want to have a read only API, then set this property to
    # "DELETE,POST,PUT".
    #
    jsonws.web.service.invalid.http.methods=

    #
    # Set this property to true to ensure that a JSON web service action can
    # only be invoked by its expected HTTP method.
    #
    # For example, the annotation
    # com.liferay.portal.kernel.jsonwebservice.JSONWebService may configure the
    # expected HTTP method for an action to be a GET request. However, the URL
    # for that GET request may be too long, and so you may need to call that
    # with a POST request. Setting this property to false loosens this
    # requirement and allows the POST request to invoke an action that is
    # supposed to only be called by a GET request.
    #
    jsonws.web.service.strict.http.method=false

    #
    # The property "jsonws.web.service.paths.excludes" denotes patterns for JSON
    # web service action paths that are not allowed even if they match one of
    # the patterns set in "jsonws.web.service.paths.includes".
    #
    jsonws.web.service.paths.excludes=

    #
    # The property "jsonws.web.service.paths.includes" denotes patterns for JSON
    # web service action paths that are allowed. Set a blank pattern to allow
    # any service action path.
    #
    jsonws.web.service.paths.includes=

##
## Live Users
##

    #
    # Set this to true to enable tracking via Live Users.
    #
    live.users.enabled=false

##
## Lock
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.kernel.lock.LockListener. A lock listener allows you to
    # specify logic around how an object is locked. The implementation must be
    # thread safe.
    #
    lock.listeners=com.liferay.portlet.documentlibrary.util.DLFileEntryLockListener

    #
    # Set the lock expiration time for each class.
    #

    #
    # Locks for publishing processes should expire after 10 minutes.
    #
    lock.expiration.time.com.liferay.portal.kernel.staging.Staging=600000

    #
    # Locks for document library folders should expire after 1 day.
    #
    lock.expiration.time.com.liferay.portlet.documentlibrary.model.DLFolder=86400000

    #
    # Locks for document library files should expire after 1 day.
    #
    lock.expiration.time.com.liferay.portlet.documentlibrary.model.DLFileEntry=86400000

    #
    # Locks for message board threads should never expire.
    #
    lock.expiration.time.com.liferay.portlet.messageboards.model.MBThread=0

##
## Mail
##

    #
    # Set the batch size for outbound emails. Set this property to 0 to submit
    # to the mail server a request to send an email with multiple recipients all
    # at once. Set a value greater than 0 to split up the list of recipients by
    # the batch size so that multiple requests are submitted to the mail server
    # to ensure that the mail server's recipient size limit is not reached.
    #
    mail.batch.size=0

    #
    # Set the JNDI name to lookup the Java Mail session. If none is set, then
    # the portal will attempt to create the Java Mail session based on the
    # properties prefixed with "mail.session.".
    #
    #mail.session.jndi.name=mail/MailSession

    #
    # Set the properties used to create the Java Mail session. The property
    # prefix "mail.session." will be removed before it is used to create the
    # session object. These properties will only be read if the property
    # "mail.session.jndi.name" is not set.
    #
    mail.session.mail.pop3.host=localhost
    mail.session.mail.pop3.password=
    mail.session.mail.pop3.port=110
    mail.session.mail.pop3.user=
    mail.session.mail.smtp.auth=false
    mail.session.mail.smtp.host=localhost
    mail.session.mail.smtp.password=
    mail.session.mail.smtp.port=25
    mail.session.mail.smtp.user=
    mail.session.mail.store.protocol=pop3
    mail.session.mail.transport.protocol=smtp

    #
    # Set this to false if an administrator should not be allowed to change the
    # mail domain via the Admin portlet.
    #
    mail.mx.update=true

    #
    # Input a list of comma delimited email addresses that will receive a BCC of
    # every email sent through the mail server.
    #
    mail.audit.trail=

    #
    # Set the name of a class that implements com.liferay.mail.util.Hook. The
    # mail server will use this class to ensure that the mail and portal servers
    # are synchronized on user information. The portal will not know how to add,
    # update, or delete users from the mail server except through this hook.
    #
    #mail.hook.impl=com.liferay.mail.util.CyrusHook
    mail.hook.impl=com.liferay.mail.util.DummyHook
    #mail.hook.impl=com.liferay.mail.util.FuseMailHook
    #mail.hook.impl=com.liferay.mail.util.GoogleHook
    #mail.hook.impl=com.liferay.mail.util.SendmailHook
    #mail.hook.impl=com.liferay.mail.util.ShellHook

    #
    # CyrusHook
    #
    # Set the commands for adding, updating, and deleting a user where
    # %1% is the user id. Replace the password with the password for the cyrus
    # user.
    #
    mail.hook.cyrus.add.user=cyrusadmin password create %1%
    #mail.hook.cyrus.add.user=cyrus_adduser password %1%
    mail.hook.cyrus.delete.user=cyrusadmin password delete %1%
    #mail.hook.cyrus.delete.user=cyrus_userdel password %1%
    mail.hook.cyrus.home=/home/cyrus

    #
    # FuseMailHook
    #
    # See http://www.fusemail.com/support/email-hosting/api-documentation/ for
    # more information. You must also update the "mail.account.finder" property.
    #
    mail.hook.fusemail.url=https://www.fusemail.com/api/request.html
    mail.hook.fusemail.username=
    mail.hook.fusemail.password=
    mail.hook.fusemail.account.type=group_subaccount
    mail.hook.fusemail.group.parent=

    #
    # GoogleHook
    #
    # See the properties "google.apps.username" and "google.apps.password".
    #

    #
    # SendmailHook
    #
    # Set the commands for adding, updating, and deleting a user where
    # %1% is the user id and %2% is the password. Set the home and
    # virtual user table information.
    #
    mail.hook.sendmail.add.user=adduser %1% -s /bin/false
    mail.hook.sendmail.change.password=autopasswd %1% %2%
    mail.hook.sendmail.delete.user=userdel -r %1%
    mail.hook.sendmail.home=/home
    mail.hook.sendmail.virtusertable=/etc/mail/virtusertable
    mail.hook.sendmail.virtusertable.refresh=bash -c "makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable"

    #
    # ShellHook
    #
    # Set the location of the shell script that will interface with any mail
    # server.
    #
    mail.hook.shell.script=/usr/sbin/mailadmin.ksh

##
## Microsoft Translator
##

    #
    # Set the client id and client secret values for Microsoft Translation
    # integration. Subscription to the Microsoft Translator API on Azure
    # Marketplace is required. Basic subscriptions, up to 2 million characters a
    # month, are free. See http://msdn.microsoft.com/en-us/library/hh454950 for
    # more information.
    #
    microsoft.translator.client.id=
    microsoft.translator.client.secret=

##
## Minifier
##

    #
    # Set this to true to enable minification of CSS and JavaScript resources.
    #
    minifier.enabled=true

    #
    # The strip filter will attempt to cache inline minified CSS and JavaScript
    # content. Set this property to configure the maximum pieces of cached
    # content. Set this property to 0 to disable caching of inline minified
    # content.
    #
    minifier.inline.content.cache.size=10000

    #
    # Input a list of comma delimited values that will cause the minified CSS to
    # not be cached if those values are contained in the content.
    #
    minifier.inline.content.cache.skip.css=

    #
    # Input a list of comma delimited values that will cause the minified
    # JavaScript to not be cached if those values are contained in the content.
    #
    minifier.inline.content.cache.skip.javascript=getSessionId,encryptedUserId

##
## Mobile Device Rules
##

    #
    # Set this property to true to cache the user's device profile to the HTTP
    # session. If this property is false, then the portal will perform device
    # detection for each request.
    #
    mobile.device.session.cache.enabled=true

    #
    # Set this to true if mobile device rules should be published to live by default.
    #
    mobile.device.rules.publish.to.live.by.default=true

    #
    # This property defines the postfix that will be localized and appended to
    # the name of a copied rule group.
    #
    mobile.device.rules.rule.group.copy.postfix=copy

    #
    # Set this property to true to enable specific styling for WAP devices.
    #
    # This property is deprecated and only provided for backwards compatibility.
    #
    mobile.device.styling.wap.enabled=false

##
## Module Framework
##

    #
    # Set the module framework beginning start level. The module framework will
    # proceed to this start level before the Spring context is initialized.
    #
    module.framework.beginning.start.level=6

    #
    # Set the module framework runtime start level. The module framework will
    # proceed to this start level after the Spring context is initialized.
    #
    module.framework.runtime.start.level=20

    #
    # Set the directory which will form the base path of the module framework.
    #
    module.framework.base.dir=${liferay.home}/data/osgi

    #
    # Set a comma delimited list of directories to scan for modules to auto
    # deploy.
    #
    module.framework.auto.deploy.dirs=${module.framework.base.dir}/modules

    #
    # Set the interval in milliseconds on how often to scan the directories for
    # changes.
    #
    module.framework.auto.deploy.interval=5000

    #
    # Set the directory where the module framework portal libraries will be
    # placed.
    #
    module.framework.portal.dir=${module.framework.base.dir}/portal

    #
    # Set the directory where the module framework will persist its state.
    #
    module.framework.state.dir=${module.framework.base.dir}/state

    #
    # Set this to true to register Liferay's core services into the module
    # framework.
    #
    module.framework.register.liferay.services=true

    module.framework.services.ignored.interfaces=\
        com.liferay.portal.kernel.bean.IdentifiableBean,\
        com.liferay.portal.kernel.dao.orm.SessionFactory,\
        com.liferay.portal.kernel.security.pacl.PACLConstants,\
        java.io.Closeable,\
        java.io.Serializable,\
        java.lang.Comparable,\
        org.aopalliance.intercept.MethodInterceptor,\
        org.springframework.aop.PointcutAdvisor,\
        org.springframework.aop.SpringProxy,\
        org.springframework.aop.framework.Advised,\
        org.springframework.aop.framework.AopInfrastructureBean,\
        org.springframework.beans.factory.BeanClassLoaderAware,\
        org.springframework.beans.factory.BeanFactoryAware,\
        org.springframework.beans.factory.InitializingBean,\
        org.springframework.beans.factory.config.BeanPostProcessor,\
        org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor,\
        org.springframework.core.Ordered

    #
    # Set a comma delimited list of OSGi bundles that are automatically installed
    # and optionally started once the system is up and running.
    #
    module.framework.initial.bundles=\
        file:${module.framework.lib.dir}/org.apache.felix.log.jar@start,\
        felix-fileinstall.jar@start,\
        log-bridge.jar@start

    #
    # Set a comma delimited list of regular OSGi bundles in Liferay's library
    # paths for which a generated fragment will not be generated.
    #
    module.framework.system.bundle.ignored.fragments=\
        log-bridge,\
        org.apache.felix.fileinstall,\
        org.apache.felix.main,\
        org.eclipse.osgi,\
        org.glassfish.web.jstl-impl,\
        util-java,\
        util-taglib,\
        \
        #
        # Apache Commons
        #
        commons-logging,\
        org.apache.commons.io,\
        #
        # Jetty
        #
        \
        com.sun.el,\
        javax.el,\
        javax.mail.glassfish,\
        javax.servlet,\
        javax.servlet.jsp,\
        javax.servlet.jsp.jstl,\
        org.apache.jasper.glassfish,\
        org.apache.taglibs.standard.glassfish,\
        org.eclipse.*,\
        \
        #
        # JBoss
        #
        \
        slf4j.api,\
        \
        #
        # Weblogic
        #
        \
        ch.qos.cal10n.api,\
        com.bea.*,\
        com.oracle.*,\
        javax.jsp,\
        org.jboss.*,\
        \
        #
        # Websphere
        #
        \
        com.ibm.*,\
        org.objectweb.asm.*

    #
    # Set a comma delimited list of Java packages that are exported to the
    # module framework as extra system packages.
    #
    module.framework.system.packages.extra=\
        aQute.lib.osgi;version="1.43.1",\
        aQute.libg.header;version="1.0",\
        aQute.libg.version;version="1.0",\
        com.liferay.alloy.taglib.alloy,\
        com.liferay.alloy.taglib.alloy.base,\
        com.liferay.alloy.taglib.alloy_util,\
        com.liferay.alloy.taglib.alloy_util.base,\
        com.liferay.alloy.taglib.liferay,\
        com.liferay.alloy.taglib.liferay.base,\
        com.liferay.alloy.tools.model,\
        com.liferay.alloy.tools.tagbuilder,\
        com.liferay.alloy.tools.tagbuilder.templates,\
        com.liferay.alloy.tools.xmlbuilder,\
        com.liferay.alloy.util,\
        com.liferay.alloy.util.json,\
        com.liferay.osgi.bootstrap,\
        com.sun.org.apache.xalan.internal.res,\
        com.sun.org.apache.xml.internal.utils,\
        com.sun.org.apache.xpath.internal,\
        com.sun.org.apache.xpath.internal.jaxp,\
        com.sun.org.apache.xpath.internal.objects,\
        freemarker.cache,\
        freemarker.core,\
        freemarker.ext.beans,\
        freemarker.ext.jsp,\
        freemarker.ext.servlet,\
        freemarker.template,\
        freemarker.template.utility,\
        javax.annotation;version="1.1.0",\
        javax.annotation.security;version="1.1.0",\
        javax.el;version="2.1.0",\
        javax.faces.convert,\
        javax.faces.webapp,\
        javax.mail;version="1.4",\
        javax.mail.event;version="1.4",\
        javax.mail.internet;version="1.4",\
        javax.mail.search;version="1.4",\
        javax.mail.util;version="1.4",\
        javax.portlet;version="2.0.0",\
        javax.portlet.filter;version="2.0.0",\
        javax.servlet;version="2.5.0",\
        javax.servlet.http;version="2.5.0",\
        javax.servlet.jsp;version="2.1.0",\
        javax.servlet.jsp.el;version="2.1.0",\
        javax.servlet.jsp.resources;version="2.1.0",\
        javax.servlet.jsp.tagext;version="2.1.0",\
        javax.servlet.resources;version="2.5.0",\
        org.aopalliance.aop,\
        org.aopalliance.intercept,\
        org.apache.axis,\
        org.apache.axis.configuration,\
        org.apache.axis.encoding.ser,\
        org.apache.axis.handlers.http,\
        org.apache.commons.httpclient,\
        org.apache.commons.httpclient.auth,\
        org.apache.commons.httpclient.params,\
        org.apache.commons.logging;version="1.1.1",\
        org.apache.tools.ant,\
        org.apache.tools.ant.taskdefs,\
        org.apache.tools.ant.util,\
        org.apache.xml.xml_soap,\
        org.json,\
        org.objectweb.asm,\
        org.objectweb.asm.commons,\
        org.objectweb.asm.signature,\
        org.w3c.dom,\
        org.w3c.dom.traversal,\
        \
        #
        # EL support
        #
        \
        com.sun.el,\
        com.sun.el.lang,\
        com.sun.el.parser,\
        com.sun.el.query,\
        com.sun.el.util,\
        org.apache.el,\
        org.apache.el.lang,\
        org.apache.el.parser,\
        org.apache.el.util,\
        \
        #
        # Random exports
        #
        \
        com.mysql.jdbc,\
        com.sun.security.auth.module,\
        org.apache.naming.java

    #
    # Pass arbitrary extra properties to the framework using the prefix:
    # "module.framework.properties." to avoid avoid colliding with other
    # frameworks that may be running within the same JVM.
    #
    module.framework.properties.felix.fileinstall.bundles.new.start=true
    module.framework.properties.felix.fileinstall.bundles.startActivationPolicy=false
    module.framework.properties.felix.fileinstall.bundles.startTransient=false
    module.framework.properties.gosh.args=--noshutdown
    module.framework.properties.org.osgi.framework.bootdelegation=__redirected

##
## Monitoring
##

    #
    # Configure the appropriate level for monitoring Liferay.
    # Valid values are: HIGH, LOW, MEDIUM, OFF.
    #
    monitoring.level.com.liferay.monitoring.Portal=HIGH
    monitoring.level.com.liferay.monitoring.Portlet=HIGH

    #
    # Set this to true to monitor portal requests.
    #
    monitoring.portal.request=false

    #
    # Set this to true to monitor portlet action requests.
    #
    monitoring.portlet.action.request=false

    #
    # Set this to true to monitor portlet event requests.
    #
    monitoring.portlet.event.request=false

    #
    # Set this to true to monitor portlet render requests.
    #
    monitoring.portlet.render.request=false

    #
    # Set this to true to monitor portlet resource requests.
    #
    monitoring.portlet.resource.request=false

    #
    # Set this to true to show data samples at the bottom of each portal page
    # as HTML comment. In order for data to show, the property
    # "monitoring.data.sample.thread.local" must be set to true.
    #
    monitoring.show.per.request.data.sample=false

##
## Multicast
##

    #
    # Consolidate multicast address and port settings in one location for easier
    # maintenance. These settings must correlate to your physical network
    # configuration (i.e. firewall, switch, and other network hardware matter)
    # to ensure speedy and accurate communication across a cluster.
    #
    # Each address and port combination represent a conversation that is made
    # between different nodes. If they are not unique or correctly set, there
    # will be a potential of unnecessary network traffic that may cause slower
    # updates or inaccurate updates.
    #

    #
    # See the property "cluster.link.channel.properties.control".
    #
    multicast.group.address["cluster-link-control"]=239.255.0.1
    #multicast.group.address["cluster-link-control"]=ff0e::8:8:1
    multicast.group.port["cluster-link-control"]=23301

    #
    # See the properties "cluster.link.channel.properties.transport.0" and
    # "cluster.link.channel.system.properties".
    #
    multicast.group.address["cluster-link-udp"]=239.255.0.2
    #multicast.group.address["cluster-link-udp"]=ff0e::8:8:2
    multicast.group.port["cluster-link-udp"]=23302

    #
    # See the property "cluster.link.channel.system.properties".
    #
    multicast.group.address["cluster-link-mping"]=239.255.0.3
    #multicast.group.address["cluster-link-mping"]=ff0e::8:8:3
    multicast.group.port["cluster-link-mping"]=23303

    #
    # See the properties "net.sf.ehcache.configurationResourceName" and
    # "net.sf.ehcache.configurationResourceName.peerProviderProperties".
    #
    multicast.group.address["hibernate"]=239.255.0.4
    multicast.group.port["hibernate"]=23304

    #
    # See the properties "ehcache.multi.vm.config.location" and
    # "ehcache.multi.vm.config.location.peerProviderProperties".
    #
    multicast.group.address["multi-vm"]=239.255.0.5
    multicast.group.port["multi-vm"]=23305

##
## Notifications
##

    #
    # Set the maximum number of transient events allowed to queue for a user.
    # In case of excess events, the events with the closest expiration time are
    # removed.
    #
    notifications.max.events=100

##
## OpenOffice
##

    #
    # Enabling OpenOffice integration allows the Document Library portlet and
    # the Wiki portlet to provide conversion functionality. This is tested with
    # OpenOffice 2.3.x through 3.2.x. It is recommended that you have OpenOffice
    # on the same machine. Using a remote host for the instance is not fully
    # supported and could lead to various problems. To start OpenOffice as
    # service, run the command:
    #
    # soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;"
    #
    openoffice.server.enabled=false
    openoffice.server.host=127.0.0.1
    openoffice.server.port=8100
    openoffice.cache.enabled=true

    #
    # Specify the file extensions of files to allow conversions from. Entries
    # must be limited by what is supported by OpenOffice.
    #
    openoffice.conversion.source.extensions[drawing]=odg
    openoffice.conversion.source.extensions[presentation]=odp,ppt,pptx,sxi
    openoffice.conversion.source.extensions[spreadsheet]=csv,ods,sxc,tsv,xls,xlsx
    openoffice.conversion.source.extensions[text]=doc,docx,html,odt,rtf,sxw,txt,wpd

    #
    # Specify the file extensions of files to allow conversions to. Entries must
    # be limited by what is supported by OpenOffice.
    #
    openoffice.conversion.target.extensions[drawing]=pdf,svg,swf
    openoffice.conversion.target.extensions[presentation]=odp,pdf,ppt,swf,sxi
    openoffice.conversion.target.extensions[spreadsheet]=csv,ods,pdf,sxc,tsv,xls
    openoffice.conversion.target.extensions[text]=doc,odt,pdf,rtf,sxw,txt

##
## Phone Number Format
##

    #
    # Set the name of a class that implements
    # com.liferay.portal.kernel.format.PhoneNumberFormat. It will be used for
    # formatting and validating phone numbers.
    #
    phone.number.format.impl=com.liferay.portal.format.IdenticalPhoneNumberFormatImpl
    #phone.number.format.impl=com.liferay.portal.format.InternationalPhoneNumberFormatImpl
    #phone.number.format.impl=com.liferay.portal.format.USAPhoneNumberFormatImpl

    #
    # This regular expression follows the international phone number notation
    # specified by the Extensible Provisioning Protocol (EPP). EPP style phone
    # numbers use the format +CCC.NNNNNNNNNNxEEEE where C is the 1-3 digit
    # country code, N is up to 14 digits, and E is the (optional) extension.
    # The leading plus sign and the dot following the country code are required.
    # The literal 'x' character is required only if an extension is provided.
    #
    # See http://www.itu.int/rec/T-REC-E.123,
    # http://www.itu.int/rec/T-REC-E.164, and http://tools.ietf.org/html/rfc4933
    # for more information.
    #
    phone.number.format.international.regexp=^\\+[0-9]{1,3}\.[0-9]{4,14}(?:x.+)?$

    #
    # The North American Numbering Plan (NANP) is the telephone numbering plan
    # for the United States, Canada, Bermuda, and 16 Caribbean nations.
    #
    # See http://en.wikipedia.org/wiki/North_American_Numbering_Plan for more
    # information.
    #
    phone.number.format.usa.regexp=^(?:\\+?1[-. ]?)?(?:\\(?([0-9]{3})\\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$

##
## Poller
##

    #
    # Specify the notification events timout in milliseconds. This prevents the
    # poller from locking up the application server.
    #
    poller.notifications.timeout=1000

    #
    # Specify the poller request timeout in milliseconds. This prevents the
    # poller from locking up the application server.
    #
    poller.request.timeout=1000

##
## Polls
##

    #
    # Set this to true if polls should be published to live by default.
    #
    polls.publish.to.live.by.default=true

##
## POP
##

    #
    # Set this to true to enable polling of email notifications from a POP
    # server. The user credentials are the same used for SMTP authentication
    # and are specified in the mail/MailSession configuration for each
    # application server.
    #
    pop.server.notifications.enabled=false

    #
    # Set the interval on which the POPNotificationsMessageListener will run.
    # The value is set in one minute increments.
    #
    pop.server.notifications.interval=1

    #
    # Set this property to create a special MX subdomain to receive all portal
    # related email (e.g. events.liferay.com). This means configuring a
    # default inbox for the domain and receiving all emails into that inbox.
    #
    # This approach may not be allowed for some organizations. If you cannot use
    # the subdomain approach, unset this value and Liferay will use the replyTo
    # address specified in the portlet preferences.
    #
    pop.server.subdomain=events

##
## Portal Resiliency
##

    #
    # Set this to true to turn on the Portal Resiliency feature.
    #
    portal.resiliency.enabled=false

    #
    # Set this to true to add a footer to each Portal Resiliency rendered
    # portlet. Each footer identifies the SPI that is rendering it.
    #
    # At runtime you can toggle showing the footer by setting the URL parameter
    # "portalResiliencyPortletShowFooter" to "1" for on or "0" for off.
    #
    portal.resiliency.portlet.show.footer=false

    #
    # Specify the maximum number of sockets to keep alive for each
    # com.liferay.portal.resiliency.spi.agent.HttpClientSPIAgent instance.
    # Reusing the socket for HTTP communication saves TCP connection
    # setup/teardown overhead and avoids the TCP/IP protocol's slow
    # start congestion control.
    #
    # Increasing limit on the number of sockets to keep alive can generally
    # improvement each HttpClientSPIAgent's performance under heavy concurrent
    # load, but more TCP ports and file descriptors are occupied.
    #
    portal.resiliency.spi.agent.client.pool.max.size=20

##
## Quartz
##

    memory.scheduler.org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
    memory.scheduler.org.quartz.scheduler.instanceId=AUTO
    memory.scheduler.org.quartz.scheduler.instanceName=MemoryQuartzSchedulerEngineInstance
    memory.scheduler.org.quartz.scheduler.jobFactory.class=org.quartz.simpl.SimpleJobFactory
    memory.scheduler.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    memory.scheduler.org.quartz.threadPool.threadCount=5
    memory.scheduler.org.quartz.threadPool.threadPriority=5

    persisted.scheduler.org.quartz.dataSource.ds.connectionProvider.class=com.liferay.portal.scheduler.quartz.QuartzConnectionProvider
    persisted.scheduler.org.quartz.jobStore.class=com.liferay.portal.scheduler.quartz.PortalJobStore
    persisted.scheduler.org.quartz.jobStore.dataSource=ds
    persisted.scheduler.org.quartz.jobStore.misfireThreshold=60000
    persisted.scheduler.org.quartz.jobStore.tablePrefix=QUARTZ_
    persisted.scheduler.org.quartz.jobStore.useProperties=false
    persisted.scheduler.org.quartz.scheduler.instanceId=AUTO
    persisted.scheduler.org.quartz.scheduler.instanceName=PersistedQuartzSchedulerEngineInstance
    persisted.scheduler.org.quartz.scheduler.jobFactory.class=org.quartz.simpl.SimpleJobFactory
    persisted.scheduler.org.quartz.scheduler.skipUpdateCheck=true
    persisted.scheduler.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    persisted.scheduler.org.quartz.threadPool.threadCount=5
    persisted.scheduler.org.quartz.threadPool.threadPriority=5

##
## REST Proxy
##

    #
    # Input a list of comma delimited URL prefixes which the portal is allowed
    # to make proxy requests to. Input a blank list to allow any URLs.
    #
    rest.proxy.url.prefixes.allowed=http://search.yahooapis.com/ContentAnalysisService

##
## Robots.txt
##

    robots.txt.with.sitemap=com/liferay/portal/dependencies/robots_txt_with_sitemap.tmpl
    robots.txt.without.sitemap=com/liferay/portal/dependencies/robots_txt_without_sitemap.tmpl

##
## RSS
##

    #
    # Set this to true to enable RSS feeds.
    #
    rss.feeds.enabled=true

    #
    # Set the name of the display style which will be used by default.
    #
    rss.feed.display.style.default=full-content

    #
    # Set the default feed type from the feed types defined in the property
    # "rss.feed.types".
    #
    rss.feed.type.default=atom_1.0

    #
    # Enter a list of comma delimited values of feed types. The supported types
    # should be a subset of those defined for SyndFeed in the ROME project:
    # atom_1.0, rss_1.0, and rss_2.0. See http://java.net/projects/rome for more
    # information.
    #
    rss.feed.types=atom_1.0,rss_1.0,rss_2.0

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect RSS feeds.
    #
    rss.feeds.hosts.allowed=
    rss.feeds.https.required=false

    #
    # Set this to true if rss should be published to live by default.
    #
    rss.publish.to.live.by.default=true

##
## Sanitizer
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.kernel.sanitizer.Sanitizer. These classes are used to
    # sanitize content.
    #
    sanitizer.impl=com.liferay.portal.sanitizer.DummySanitizerImpl

##
## Scheduler
##

    #
    # Set this to false to disable all scheduler classes defined in
    # liferay-portlet.xml.
    #
    scheduler.enabled=true

    #
    # Set the maximum length of description, group name, and job name fields.
    #
    scheduler.description.max.length=120
    scheduler.group.name.max.length=80
    scheduler.job.name.max.length=80

##
## Scripting
##

    #
    # Input a list of comma delimited class names that will never be available
    # to user defined server side scripts. The special string "all_classes"
    # disables access to any Java class. This property is only effective when
    # using the Scripting service and invoking eval or exec methods.
    #
    scripting.forbidden.classes=com.liferay.portal.kernel.scripting.ScriptingUtil,com.liferay.portal.scripting.ScriptingImpl,java.lang.System

    #
    # Set the compile mode for the JRuby scripting engine.
    #
    #scripting.jruby.compile.mode=force
    scripting.jruby.compile.mode=jit
    #scripting.jruby.compile.mode=off

    #
    # Set the threshold at which methods will be compiled when "jit" compile
    # mode is enabled.
    #
    scripting.jruby.compile.threshold=5

    #
    # Set the load paths for the jruby engine. These paths allow JRuby to locate
    # gems and ruby code libraries in the classpath.
    #
    scripting.jruby.load.paths=\
        classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.8,\
        classpath:/META-INF/jruby.home/lib/ruby/site_ruby/shared,\
        classpath:/META-INF/jruby.home/lib/ruby/1.8,\
        classpath:/gems/chunky_png-1.2.9/lib,\
        classpath:/gems/compass-0.12.2/lib,\
        classpath:/gems/fssm-0.2.10/lib,\
        classpath:/gems/sass-3.2.12/lib,\
        ${java.io.tmpdir}/liferay/ruby/gems/chunky_png-1.2.9/lib,\
        ${java.io.tmpdir}/liferay/ruby/gems/compass-0.12.2/lib,\
        ${java.io.tmpdir}/liferay/ruby/gems/fssm-0.2.10/lib,\
        ${java.io.tmpdir}/liferay/ruby/gems/sass-3.2.12/lib

##
## Search Container
##

    #
    # Set the default number of entries to display per page.
    #
    search.container.page.default.delta=20

    #
    # Set the available values for the number of entries to display per page. An
    # empty value, or commenting out the value, will disable delta resizing.
    #
    # Always include the value specified in the property
    # "search.container.page.default.delta", since it is the default page size
    # when no delta is specified. The absolute maximum allowed delta is 200.
    #
    search.container.page.delta.values=5,10,20,30,50,75

    #
    # Set the maximum number of pages available above and below the currently
    # displayed page.
    #
    search.container.page.iterator.max.pages=25

    #
    # Set this to false to remove the pagination controls above or below
    # results.
    #
    search.container.show.pagination.top=true
    search.container.show.pagination.bottom=true

##
## Sharepoint
##

    #
    # Set the tokens for supported Sharepoint storage paths.
    #
    sharepoint.storage.tokens=document_library

    #
    # Set the class names for supported Sharepoint storage classes.
    #
    sharepoint.storage.class[document_library]=com.liferay.portlet.documentlibrary.sharepoint.DLSharepointStorageImpl

##
## Sprite
##

    #
    # Set the file names used for the auto generated sprites. The default file
    # name used to be ".sprite.png" but is now "_sprite.png" because SiteMinder
    # does not allow file names to start with a period. This property will not
    # need to be changed unless your deployment has a conflict with file names
    # that start with an underline.
    #
    sprite.file.name=_sprite.png
    sprite.properties.file.name=_sprite.properties

    #
    # Set the root directory for the autogenerated sprites. Not setting the
    # directory means that generated sprites reside in the same location as the
    # original source images.
    #
    sprite.root.dir=

##
## Staging
##

    #
    # Set this property to true to enable locking the publishing process for
    # staging. If this is enabled, the second publishing process will not start.
    # Locks are held per site.
    #
    staging.lock.enabled=false

    #
    # Set the file block sizes for remote staging. If a LAR file used for remote
    # staging exceeds this size, the file will be split into multiple files
    # prior to transmission and then reassembled on the remote server. The
    # default buffer size is 10 megabytes.
    #
    staging.remote.transfer.buffer.size=10485760

##
## Strip
##

    #
    # Set this property to true to enable the strip filter to also parse Sass
    # based CSS. This property is not used unless the property
    # "com.liferay.portal.servlet.filters.dynamiccss.DynamicCSSFilter" is set
    # to true.
    #
    strip.css.sass.enabled=false

    #
    # Enter a list of comma delimited paths that should not have its content
    # stripped by the strip filter.
    #
    strip.ignore.paths=/document_library/get_file

    #
    # Set this property to support usage of the language attribute in the script
    # element. The language attribute is deprecated since HTML4 is in favor of
    # the type attribute.
    #
    # See http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.1.
    #
    # This property is not used unless the property
    # "com.liferay.portal.servlet.filters.dynamiccss.DynamicCSSFilter" is set
    # to true.
    #
    strip.js.language.attribute.support.enabled=false

    #
    # Input a list of comma delimited MIME types that will have its content
    # stripped by the strip filter.
    #
    strip.mime.types=text/html*,text/xml*

##
## Social Activity
##

    #
    # Set the length of the counter period for social activities. The value is
    # in a number of days or the special keyword "month" to specify a month.
    #
    social.activity.counter.period.length=month

    #
    # Adding social activity counters requires a portal level lock to ensure
    # that counters are unique. When the portal fails to acquire a lock, it will
    # attempt to reacquire a lock based on the value specified in this property.
    # The value is interpreted as milliseconds.
    #
    # A small value will help the system to respond faster. However, if there
    # are too many conflicts, the database will fail with a massive
    # transaction rollback.
    #
    social.activity.lock.retry.delay=100

    #
    # Set the lock timeout for adding social activity counters. The value is
    # interpreted as milliseconds. See the property
    # "social.activity.counter.lock.retry.delay" for more information on why and
    # how locks are acquired when adding a counter.
    #
    # Portal level locks are persisted in the database. In the case that there
    # is a corrupted database, one thread may fail to acquire a lock because it
    # thinks another thread has a handle on the lock even though no other thread
    # has a handle on it.
    #
    # Setting this timeout level ensures that the portal will eventually release
    # the lock so that a new thread can acquire the lock. Do not set this
    # property to a small value because it may expire a legitimate lock held by
    # another thread that it falsely assumed to be a lock that is from a corrupt
    # database.
    #
    social.activity.lock.timeout=10000

    #
    # Enter a list of comma delimited values to use in drop down lists in the
    # Social Activity portlet.
    #
    social.activity.contribution.increments=0,1,2,3,4,5,10,20,50,100
    social.activity.contribution.limit.values=0,1,2,3,4,5,10,20
    social.activity.participation.increments=0,1,2,3,4,5,10,20,50,100
    social.activity.participation.limit.values=0,1,2,3,4,5,10,20

    #
    # Set the limit for results used when performing social activity searches
    # that are subsequently filtered by permissions.
    #
    social.activity.filter.search.limit=200

    #
    # Set this to true if similar activities should be bundled together in the
    # same activity set. If this is false, a new activity set will be created
    # with each activity.
    #
    social.activity.sets.bundling.enabled=true

    #
    # Set this to true if sets should be generated when new activities are
    # added.
    #
    social.activity.sets.enabled=false

    #
    # Set the selector for the set of interpreters that will determine how
    # activities are grouped together.
    #
    social.activity.sets.selector=

##
## Social Bookmarks
##

    social.bookmark.types=twitter,facebook,plusone

    social.bookmark.jsp[facebook]=/html/taglib/ui/social_bookmark/facebook.jsp
    social.bookmark.jsp[plusone]=/html/taglib/ui/social_bookmark/plusone.jsp
    social.bookmark.jsp[twitter]=/html/taglib/ui/social_bookmark/twitter.jsp

##
## Text Extraction
##

    #
    # Set this to true if you want text extraction of certain MIME types to
    # use a separate Java process. This will utilize extra resources from the
    # operating system while improving the portal's stability.
    #
    text.extraction.fork.process.enabled=false

    #
    # Input a list of comma delimited MIME types that will trigger text
    # extraction using a separate Java process.
    #
    text.extraction.fork.process.mime.types=application/x-tika-ooxml

##
## Thread Dump
##

    #
    # The thread dump filter will log a thread dump if the portal takes longer
    # than the specified number of seconds to process. The thread dump filter
    # must be enabled via the property
    # "com.liferay.portal.servlet.filters.threaddump.ThreadDumpFilter".
    #
    thread.dump.speed.threshold=5

##
## User Notifications
##

    #
    # Set this to true if you want users to acknowledge receipt of user
    # notification events.
    #
    user.notification.event.confirmation.enabled=false

##
## Vaadin
##

    #
    # Specify the location of the portal wide Vaadin themes and widget set
    # (client side JavaScript).
    #
    vaadin.resources.path=/html

    #
    # Specify the base Vaadin theme to load automatically for all Vaadin
    # portlets. A portlet can include an additional theme that is loaded after
    # the shared theme.
    #
    vaadin.theme=liferay

    #
    # Specify the shared widget set (client side JavaScript) that is used by all
    # Vaadin portlets running in the portal.
    #
    vaadin.widgetset=com.vaadin.portal.gwt.PortalDefaultWidgetSet

##
## Velocity Engine
##

    #
    # Set this property to true so that the #if condition calls toString() to
    # check for null values.
    #
    # For example, if the property is set to true, the condition "#if ($layout)"
    # will evalute to true if $layout is null or if $layout.toString() returns
    # null.
    #
    # It is safe to set this property to false if we know that all toString()
    # implementations return an actual value. Disabling the check (as
    # was the case in Velocity 1.5) will boost performance since calling
    # toString() may be expensive for some objects.
    #
    velocity.engine.directive.if.to.string.null.check=false

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.template.TemplateResourceParser. These classes will
    # run in sequence to allow you to find the applicable TemplateResourceParser
    # to parse a Velocity template.
    #
    velocity.engine.resource.parsers=com.liferay.portal.velocity.VelocityServletResourceParser,com.liferay.portal.template.ThemeResourceParser,com.liferay.portal.template.DDMTemplateResourceParser,com.liferay.portal.template.ClassLoaderResourceParser

    #
    # Set this to 0 to load template source every time. Set this to a number
    # less than 0 to load templates once and cache it indefinitely. Set this to
    # a number greater than 0 to load templates and cache it for the period of
    # time specified by that number in milliseconds.
    #
    velocity.engine.resource.modification.check.interval=60

    #
    # Set a comma delimited list of Java classes the Velocity engine cannot have
    # access to.
    #
    velocity.engine.restricted.classes=\
        java.lang.Class,\
        java.lang.ClassLoader,\
        java.lang.Thread

    #
    # Set a comma delimited list of Java packages the Velocity engine cannot
    # have access to.
    #
    velocity.engine.restricted.packages=

    #
    # Set a comma delimited list of variables the Velocity engine cannot
    # have access to. This will affect Dynamic Data List templates, Journal
    # templates, and Portlet Display templates.
    #
    velocity.engine.restricted.variables=serviceLocator

    #
    # Input a list of comma delimited macros that will be loaded. These files
    # must exist in the class path.
    #
    velocity.engine.velocimacro.library=VM_global_library.vm,VM_liferay.vm

    #
    # Set the Velocity logging configuration.
    #
    velocity.engine.logger=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
    velocity.engine.logger.category=org.apache.velocity

##
## Virtual Hosts
##

    #
    # Set the extensions that will be ignored for virtual hosts.
    #
    virtual.hosts.ignore.extensions=\
        /c,\
        .css,\
        .gif,\
        .image/company_logo,\
        .ico,\
        .js,\
        .jpeg,\
        .jsp,\
        .png,\
        /portal/layout,\
        /portal/login,\
        /portal/logout

    #
    # Set the hosts that will be ignored for virtual hosts.
    #
    virtual.hosts.ignore.hosts=\
        127.0.0.1,\
        localhost

    #
    # Set the paths that will be ignored for virtual hosts.
    #
    virtual.hosts.ignore.paths=\
        /c,\
        \
        /c/portal/change_password,\
        /c/portal/extend_session,\
        /c/portal/extend_session_confirm,\
        /c/portal/json_service,\
        /c/portal/layout,\
        /c/portal/login,\
        /c/portal/logout,\
        /c/portal/portlet_url,\
        /c/portal/progress_poller,\
        /c/portal/render_portlet,\
        /c/portal/reverse_ajax,\
        /c/portal/session_tree_js_click,\
        /c/portal/status,\
        /c/portal/update_layout,\
        /c/portal/update_terms_of_use,\
        \
        /c/layouts_admin/update_page

    #
    # Specify the site name that will default to the company's virtual host.
    # If the specified site has a virtual host, then that will take precedence.
    # If it does not, then it will use the company's virtual host. This property
    # is useful to remove "/web/guest" (or any other site) from the default URL.
    # For example, if this property is not set, then the default URL may be
    # http://localhost:8080/web/guest/home. If this property is set, then the
    # default URL may be http://localhost:8080/home.
    #
    virtual.hosts.default.site.name=Guest

##
## XML Validation
##

    #
    # Set this property to false to disable XML validation in the portal. XML
    # validation should only be disabled if validation cannot be performed
    # because the servers hosting the external DTD or XSD files are not
    # available.
    #
    xml.validation.enabled=true

##
## Xuggler
##

    #
    # Set this to true to enable conversion and previewing of videos in the
    # Document Library portlet. See
    # http://www.xuggle.com/xuggler/downloads for more information.
    #
    xuggler.enabled=false

    #
    # Set the properties used to install Xuggler at runtime.
    #
    xuggler.jar.file[32-linux]=xuggle-xuggler-arch-i686-pc-linux-gnu.jar
    xuggler.jar.file[32-mac]=xuggle-xuggler-arch-i386-xuggle-darwin11.jar
    xuggler.jar.file[32-win]=xuggle-xuggler-arch-i686-w64-mingw32.jar
    xuggler.jar.file[64-linux]=xuggle-xuggler-arch-x86_64-pc-linux-gnu.jar
    xuggler.jar.file[64-mac]=xuggle-xuggler-arch-x86_64-xuggle-darwin11.jar
    xuggler.jar.file[64-win]=xuggle-xuggler-arch-x86_64-w64-mingw32.jar
    xuggler.jar.name[32-linux]=Linux 32-bit JVM (with GNU libc v6)
    xuggler.jar.name[32-mac]=Mac OS X 10.7 32-bit JVM
    xuggler.jar.name[32-win]=Windows 32-bit JVM
    xuggler.jar.name[64-linux]=Linux 64-bit JVM (with GNU libc v6)
    xuggler.jar.name[64-mac]=Mac OS X 10.7 64-bit JVM
    xuggler.jar.name[64-win]=Windows 64-bit JVM
    xuggler.jar.options=32-linux,32-mac,32-win,64-linux,64-mac,64-win
    xuggler.jar.url=http://xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler/5.4/

    #
    # Set these to customize the ffmpeg preset settings used by Xuggler when
    # encoding movie files.
    #
    xuggler.ffpreset.8x8dct=0
    xuggler.ffpreset.bf=0
    xuggler.ffpreset.cmp=+chroma
    xuggler.ffpreset.coder=0
    xuggler.ffpreset.flags=+loop
    #xuggler.ffpreset.flags2=-wpred-dct8x8+mbtree
    xuggler.ffpreset.i_qfactor=0.71
    xuggler.ffpreset.mbtree=1
    xuggler.ffpreset.me_method=umh
    xuggler.ffpreset.me_range=16
    xuggler.ffpreset.qcomp=0.6
    xuggler.ffpreset.qdiff=4
    xuggler.ffpreset.qmin=10
    xuggler.ffpreset.qmax=51
    xuggler.ffpreset.sc_threshold=40
    xuggler.ffpreset.subq=8
    xuggler.ffpreset.trellis=0
    xuggler.ffpreset.wpredp=0

##
## YUI
##

    #
    # Specify the YUI compressor settings used to compress CSS.
    #
    yui.compressor.css.line.break=-1

    #
    # Specify the YUI compressor settings used to compress JavaScript.
    #
    yui.compressor.js.disable.optimizations=false
    yui.compressor.js.line.break=-1
    yui.compressor.js.munge=true
    yui.compressor.js.preserve.all.semicolons=false
    yui.compressor.js.verbose=false

##
## JSP
##

    #
    # Set the JspWriter buffer size. JspFactoryWrapper reads this value as the
    # buffer size when creating new JspWriters. This value should be kept at 0
    # for performance reasons.
    #
    jsp.writer.buffer.size=0

##
## Servlet Filters
##

    #
    # The absolute redirects filter is used to ensure that all redirects are
    # absolute. It should not be disabled because it also sets the company id in
    # the request so that subsequent calls in the thread have the company id
    # properly set. This filter should also always be the first filter in the
    # list of filters.
    #
    com.liferay.portal.servlet.filters.absoluteredirects.AbsoluteRedirectsFilter=true

    #
    # The aggregate filter is used to aggregate CSS and JavaScript. Do not
    # disable this filter because it performs necessary aggregation of portal
    # resources. You may, however, set the property "minifier.enabled" to
    # disable minification of resources.
    #
    com.liferay.portal.servlet.filters.aggregate.AggregateFilter=true

    #
    # The audit filter populates the AuditRequestThreadLocal with the
    # appropriate request values to generate audit requests.
    #
    com.liferay.portal.servlet.filters.audit.AuditFilter=false

    #
    # The auth verifier filter is used to verify whether a request is
    # authenticated or not.
    #
    com.liferay.portal.servlet.filters.authverifier.AuthVerifierFilter=true

    #
    # The auto login filter processes the classes in the property
    # "auto.login.hooks" to provide auto login functionality.
    #
    com.liferay.portal.servlet.filters.autologin.AutoLoginFilter=true

    #
    # The cache filter caches processed web content. See ehcache.xml to modify
    # the cache expiration time to live.
    #
    com.liferay.portal.servlet.filters.cache.CacheFilter=true

    #
    # The CAS filter is used to provide CAS based single sign on.
    #
    com.liferay.portal.servlet.filters.sso.cas.CASFilter=true

    #
    # The char buffer pool filter enables char buffer pooling to minimize
    # garbage collection of large char arrays. See the system property
    # "com.liferay.portal.kernel.util.StringBundler.unsafe.create.limit".
    #
    com.liferay.portal.servlet.filters.charbufferpool.CharBufferPoolFilter=false

    #
    # The dynamic CSS filter is used to parse Sass CSS.
    #
    com.liferay.portal.servlet.filters.dynamiccss.DynamicCSSFilter=true

    #
    # The ETag filter is used to generate ETag headers.
    #
    com.liferay.portal.servlet.filters.etag.ETagFilter=true

    #
    # If the user can unzip compressed HTTP content, the GZip filter will
    # zip up the HTTP content before sending it to the user. This will speed up
    # page rendering for users that are on dial up.
    #
    com.liferay.portal.servlet.filters.gzip.GZipFilter=true

    #
    # The header filter is used to set request headers.
    #
    com.liferay.portal.servlet.filters.header.HeaderFilter=true

    #
    # The ignore filter will ignore certain files from being accessed directly
    # from a browser.
    #
    com.liferay.portal.servlet.filters.ignore.IgnoreFilter=true

    #
    # The I18n filter is used to internationalize URLs. See the property
    # "locale.prepend.friendly.url.style" for more information.
    #
    com.liferay.portal.servlet.filters.i18n.I18nFilter=true

    #
    # The JSON content type filter is used because Internet Explorer does not
    # recognize the content type "application/json". See LPS-33187.
    #
    com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter=true

    #
    # The language filter replaces JavaScript code that makes a client side call
    # to translate a piece of text with the actual translated value. For
    # example, a typical piece of JavaScript code fits the pattern
    # "Liferay.Language.get('key')" where 'key' is the text to translate. This
    # filter will replace the entire piece of code with the translated text.
    # This is very useful because it will lower the number of client calls by
    # translating the text before the browser receives the JavaScript file.
    #
    com.liferay.portal.servlet.filters.language.LanguageFilter=true

    #
    # The monitoring filter monitors portal request performance.
    #
    com.liferay.portal.servlet.filters.monitoring.MonitoringFilter=true

    #
    # The NTLM filter is used to provide NTLM based single sign on.
    #
    com.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter=true

    #
    # The NTLM post filter is used to fix known issues with NTLM and ajax
    # requests. See LPS-3795.
    #
    com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter=true

    #
    # The OpenSSO filter is used to provide OpenSSO based single sign on.
    #
    com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter=true

    #
    # The secure filter is used to protect servlets based on IP and protocol.
    # See the properties "*.servlet.hosts.allowed" and
    # "*.servlet.https.required".
    #
    com.liferay.portal.servlet.filters.secure.SecureFilter=true

    #
    # The servlet authorizing filter allows external servlets to be authorized
    # by the portal. See LEP-4682.
    #
    com.liferay.portal.servlet.filters.servletauthorizing.ServletAuthorizingFilter=true

    #
    # The session id filter ensures that only one session is created between
    # HTTP and HTTPS sessions. This is useful if you want users to login via
    # HTTPS but have them view the rest of the site via HTTP. This is disabled
    # by default. Do not enable this unless you thoroughly understand how
    # cookies, HTTP, and HTTPS work.
    #
    com.liferay.portal.servlet.filters.sessionid.SessionIdFilter=false

    #
    # The session max allowed filter invalidates the latest session if the
    # latest session exceeds the maximum number of allowed sessions. This filter
    # is not used unless the property "session.max.allowed" is greater than 0.
    #
    com.liferay.portal.servlet.filters.sessionmaxallowed.SessionMaxAllowedFilter=false

    #
    # The Sharepoint filter allows users to access documents in the Document
    # Library directly from Microsoft Office using the Sharepoint protocol.
    #
    com.liferay.portal.sharepoint.SharepointFilter=true

    #
    # The strip filter will remove blank lines from the outputted content. This
    # will speed up page rendering for users that are on dial up.
    #
    com.liferay.portal.servlet.filters.strip.StripFilter=true

    #
    # The theme preview filter generates a preview of the currently applied
    # theme that can be used by the Dreamweaver Theming plugin. This is disabled
    # by default. Set the "themePreview" parameter to 1 in the URL to access
    # the theme preview for any page. For example, a URL can be
    # http://localhost:8080/web/guest?themePreview=1.
    #
    com.liferay.portal.servlet.filters.themepreview.ThemePreviewFilter=false

    #
    # The thread dump filter will automatically log thread dumps when the portal
    # is too slow. Behavior can be configured via the property
    # "thread.dump.speed.threshold".
    #
    com.liferay.portal.servlet.filters.threaddump.ThreadDumpFilter=false

    #
    # The thread local filter cleans up short lived thread locals managed by
    # CentralizedThreadLocal to prevent memory leaks.
    #
    com.liferay.portal.servlet.filters.threadlocal.ThreadLocalFilter=true

    #
    # The unsynchronized print writer pool filter enables pooling print writers
    # to minimize the creation of java.io.PrintWriter instances because it is an
    # expensive action.
    #
    com.liferay.portal.servlet.filters.unsyncprintwriterpool.UnsyncPrintWriterPoolFilter=true

    #
    # The valid host name filter will check the host name from request's
    # host header. It rejects a request with invalid server name to prevent XSS
    # attacks. Setting this property to true increases security level while
    # setting this property to false optimizes server side performance.
    #
    com.liferay.portal.servlet.filters.validhostname.ValidHostNameFilter=true

    #
    # The valid HTML filter will move JavaScript that is outside of the closing
    # body tag to its proper place inside the body tag. Most sites will prefer
    # to leave this filter disabled because having JavaScript outside of the
    # body tag causes the page to render faster. However, the side effect is
    # that it will also make the site unaccessible to screen readers because the
    # HTML is technically invalid. Setting this property to true optimizes for
    # accessibility while setting this property to false optimizes for browser
    # performance.
    #
    com.liferay.portal.servlet.filters.validhtml.ValidHtmlFilter=false

    #
    # The virtual host filter maps hosts to public and private pages. For
    # example, if the public virtual host is www.helloworld.com and the friendly
    # URL is /helloworld, then http://www.helloworld.com is mapped to
    # http://localhost:8080/web/helloworld.
    #
    com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter=true

##
## Upload Servlet Request
##

    #
    # Set the maximum file size. Default is 1024 * 1024 * 100.
    #
    com.liferay.portal.upload.UploadServletRequestImpl.max.size=104857600

    #
    # Set the temp directory for uploaded files.
    #
    #com.liferay.portal.upload.UploadServletRequestImpl.temp.dir=C:/Temp

    #
    # Set the threshold size to prevent extraneous serialization of uploaded
    # data.
    #
    com.liferay.portal.upload.LiferayFileItem.threshold.size=262144

    #
    # Set the threshold size to prevent out of memory exceptions caused by
    # caching excessively large uploaded data. Default is 1024 * 1024 * 10.
    #
    com.liferay.portal.upload.LiferayInputStream.threshold.size=10485760

##
## Web Server
##

    #
    # Set the HTTP and HTTPs ports when running the portal in a J2EE server that
    # is sitting behind another web server like Apache. Set the values to -1 if
    # the portal is not running behind another web server like Apache.
    #
    web.server.http.port=-1
    web.server.https.port=-1

    #
    # Set the hostname that will be used when the portlet generates URLs.
    # Leaving this blank will mean the host is derived from the servlet
    # container.
    #
    web.server.host=

    #
    # Set the preferred protocol.
    #
    #web.server.protocol=https

    #
    # Set this to true to display the server name at the bottom of every page.
    # This is useful when testing clustering configurations so that you can know
    # which node you are accessing.
    #
    web.server.display.node=false

    #
    # Set this to true to enable support for legacy proxy servers (Apache 1.x).
    #
    web.server.proxy.legacy.mode=false

##
## WebDAV
##

    #
    # Set a list of files for the WebDAV servlet to ignore processing.
    #
    webdav.ignore=.DS_Store,.metadata_index_homes_only,.metadata_never_index,.Spotlight-V100,.TemporaryItems,.Trashes,Backups.backupdb

    #
    # Specify the number of minutes before a generated nonce expires. When a
    # client contacts the server with an expired nonce, the server will send
    # back a HTTP error 401 with stale=true.
    #
    webdav.nonce.expiration=30

##
## Main Servlet
##

    #
    # Servlets can be protected by
    # com.liferay.portal.servlet.filters.secure.SecureFilter.
    #
    # Input a list of comma delimited IPs that can access this servlet. Input a
    # blank list to allow any IP to access this servlet. SERVER_IP will be
    # replaced with the IP of the host server.
    #
    main.servlet.hosts.allowed=

    #
    # Set this to true if this servlet can only be accessed via https.
    #
    main.servlet.https.required=false

##
## Atom Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    atom.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    atom.servlet.https.required=false

##
## Axis Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    axis.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    axis.servlet.https.required=false

##
## Dynamic Resource Servlet
##

    #
    # Set the paths which are allowed to be served from the Dynamic Resource
    # Servlet scratch.
    #
    dynamic.resource.servlet.allowed.paths=\
        /sprite

##
## Google Gadget Servlet
##

    #
    # Set the servlet mapping for the Google Gadget servlet.
    #
    google.gadget.servlet.mapping=/google_gadget

##
## JSON Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    json.servlet.hosts.allowed=
    json.servlet.https.required=false

##
## JSON Web Service Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    jsonws.servlet.hosts.allowed=
    jsonws.servlet.https.required=false

##
## Netvibes Servlet
##

    #
    # Set the servlet mapping for the Netvibes servlet.
    #
    netvibes.servlet.mapping=/netvibes

##
## Spring Remoting Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    spring.remoting.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    spring.remoting.servlet.https.required=false

##
## Tunnel Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    tunnel.servlet.hosts.allowed=127.0.0.1,SERVER_IP
    tunnel.servlet.https.required=false

##
## Web Server Servlet
##

    #
    # Set this to a comma delimited list of MIME types to send an Accept-Ranges
    # header.
    #
    web.server.servlet.accept.ranges.mime.types=audio/basic,audio/mid,audio/midi,audio/mod,audio/mp3,audio/mpeg,audio/mpeg3,audio/ogg,audio/vorbis,audio/wav,audio/x-mid,audio/x-midi,audio/x-mod,audio/x-mpeg,audio/x-pn-realaudio,audio/x-realaudio,audio/x-wav,video/avi,video/mp4,video/mpeg,video/ogg,video/quicktime,video/x-flv,video/x-m4v,video/x-ms-wmv,video/x-msvideo

    #
    # Set this property to true to enable directory indexing.
    #
    web.server.servlet.directory.indexing.enabled=false

    #
    # Set the maximum range fields that are allowed to be requested by a
    # browser.
    #
    web.server.servlet.max.range.fields=10

    #
    # Set the level of verbosity to use in the server information line printed
    # by the web server servlet. Valid values are "full", which gives all of the
    # version information (e.g. Liferay Portal Community Edition 6.1.0 CE etc.)
    # or "partial", which gives only the name portion (e.g. Liferay Portal
    # Community Edition).
    #
    web.server.servlet.version.verbosity=full

##
## WebDAV Servlet
##

    #
    # See the properties "main.servlet.hosts.allowed" and
    # "main.servlet.https.required" on how to protect this servlet.
    #
    webdav.servlet.hosts.allowed=
    webdav.servlet.https.required=false

##
## Widget Servlet
##

    #
    # Set the servlet mapping for the Widget servlet.
    #
    widget.servlet.mapping=/widget

##
## Admin Portlet
##

    #
    # Input a list of default group names separated by \n characters that are
    # associated with newly created users.
    #
    admin.default.group.names=

    #
    # Input a list of default organization group names separated by \n
    # characters that are associated with newly created users.
    #
    admin.default.organization.group.names=

    #
    # Input a list of default role names separated by \n characters that are
    # associated with newly created users.
    #
    admin.default.role.names=Power User\nUser

    #
    # Input a list of default user group names separated by \n characters that
    # are associated with newly created users.
    #
    admin.default.user.group.names=

    #
    # Set this to true to ensure that a user is synchronized with the default
    # associations of groups, roles, and user groups upon every login. Set this
    # to false if default associations should only be applied to a user when a
    # user is created.
    #
    admin.sync.default.associations=false

    #
    # Input a list of mail host names separated by \n characters.
    #
    admin.mail.host.names=

    #
    # Input a list of reserved screen names separated by \n characters.
    #
    admin.reserved.screen.names=

    #
    # Input a list of reserved email addresses separated by \n characters.
    #
    admin.reserved.email.addresses=

    #
    # Configure email notification settings.
    #
    admin.email.from.name=Joe Bloggs
    admin.email.from.address=test@liferay.com

    admin.email.user.added.enabled=true
    admin.email.user.added.subject=com/liferay/portlet/admin/dependencies/email_user_added_subject.tmpl
    admin.email.user.added.body=com/liferay/portlet/admin/dependencies/email_user_added_body.tmpl
    admin.email.user.added.no.password.body=com/liferay/portlet/admin/dependencies/email_user_added_no_password_body.tmpl

    admin.email.password.reset.subject=com/liferay/portlet/admin/dependencies/email_password_reset_subject.tmpl
    admin.email.password.reset.body=com/liferay/portlet/admin/dependencies/email_password_reset_body.tmpl

    admin.email.password.sent.subject=com/liferay/portlet/admin/dependencies/email_password_sent_subject.tmpl
    admin.email.password.sent.body=com/liferay/portlet/admin/dependencies/email_password_sent_body.tmpl

    admin.email.verification.subject=com/liferay/portlet/admin/dependencies/email_verification_subject.tmpl
    admin.email.verification.body=com/liferay/portlet/admin/dependencies/email_verification_body.tmpl

    #
    # Input a list of web analytics types separated by \n characters.
    #
    admin.analytics.types=google\npiwik

##
## Announcements Portlet
##

    #
    # Configure email notification settings.
    #
    announcements.email.from.name=
    announcements.email.from.address=

    announcements.email.to.name=
    announcements.email.to.address=noreply@liferay.com

    announcements.email.subject=com/liferay/portlet/announcements/dependencies/email_subject.tmpl
    announcements.email.body=com/liferay/portlet/announcements/dependencies/email_body.tmpl

    #
    # Set the list of announcement types. The display text of each of the
    # announcement types is set in content/Language.properties.
    #
    announcements.entry.types=general,news,test

    #
    # Set the interval in minutes on how often CheckEntryMessageListener will
    # run to check for new announcements. Users will be notified via email of
    # new announcements.
    #
    announcements.entry.check.interval=15

    #
    # Set the available values for the number of announcements to display per
    # page.
    #
    announcements.entry.page.delta.values=5,10,20,30,50,75

##
## Asset
##

    #
    # Input a list of comma delimited default properties for new categories.
    # Each item of the list should have the following format: "key:value".
    #
    asset.categories.properties.default=

    #
    # Set the following to false to specify that searching and browsing using
    # categories should only show assets that have been assigned the selected
    # category explicitly. When set to true, the children categories are also
    # included in the search.
    #
    asset.categories.search.hierarchical=true

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Asset Categories Navigation portlet.
    #
    asset.categories.navigation.display.templates.config=com/liferay/portlet/assetcategoriesnavigation/dependencies/portlet-display-templates.xml

    #
    # Set the maximum number of entries for the Asset Categories Selector.
    # A value of -1 will load all entries and the results will be not paginated.
    #
    asset.categories.selector.max.entries=50

    # Input a class name that extends
    # com.liferay.portlet.asset.util.BaseAssetEntryValidator. This class will be
    # called to validate entries. The DefaultAssetEntryValidator class is just
    # an empty class that doesn't actually do any validation. The
    # MinimalAssetEntryValidator requires all entities to have at least one tag.
    #
    asset.entry.validator=com.liferay.portlet.asset.util.DefaultAssetEntryValidator
    #asset.entry.validator=com.liferay.portlet.asset.util.MinimalAssetEntryValidator

    #
    # Set the limit for results used when performing asset searches that are
    # subsequently filtered by permissions.
    #
    asset.filter.search.limit=200

    #
    # Set this to true to enable permissions for tags. Note that this feature
    # is deprecated and should only be enabled for backwards compatibility. If
    # there is a requirement to use permissions for tags, consider using
    # categories instead.
    #
    asset.tag.permissions.enabled=false

    #
    # Input a list of comma delimited default tag properties for new tags. Each
    # item of the list should have the following format: "key:value".
    #
    asset.tag.properties.default=

    #
    # Set this to true to enable properties for tags. Note that this feature
    # is deprecated and should only be enabled for backwards compatibility. If
    # there is a requirement to use properties for tags, consider using
    # categories instead.
    #
    asset.tag.properties.enabled=false

    #
    # Set this to true to enable tag suggestions.
    #
    asset.tag.suggestions.enabled=true

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Asset Tags Navigation portlet.
    #
    asset.tags.navigation.display.templates.config=com/liferay/portlet/assettagsnavigation/dependencies/portlet-display-templates.xml

    #
    # Set the name of the vocabulary which will be created by default.
    #
    asset.vocabulary.default=Topic

    #
    # Set a property with the prefix "asset.renderer.enabled." and a suffix
    # with the asset renderer factory class name to enable or disable an asset
    # renderer factory. The default setting is true. See LPS-6085 for more
    # information.
    #
    #asset.renderer.enabled.com.liferay.portlet.documentlibrary.asset.DLFileEntryAssetRendererFactory=false
    #asset.renderer.enabled.com.liferay.portlet.messageboards.asset.MBDiscussionAssetRendererFactory=false

##
## Asset Publisher Portlet
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portlet.assetpublisher.util.AssetEntryQueryProcessor.
    #
    asset.publisher.asset.entry.query.processors=com.liferay.portlet.assetpublisher.util.CustomUserAttributesAssetEntryQueryProcessor

    #
    # Set the interval in hours on how often CheckAssetEntryMessageListener
    # will run to check for new assets. Users will be notified via email of new
    # assets.
    #
    asset.publisher.check.interval=24

    #
    # Configure email notification settings.
    #
    asset.publisher.email.from.name=
    asset.publisher.email.from.address=

    asset.publisher.email.asset.entry.added.enabled=false
    asset.publisher.email.asset.entry.added.subject=com/liferay/portlet/assetpublisher/dependencies/email_asset_entry_added_subject.tmpl
    asset.publisher.email.asset.entry.added.body=com/liferay/portlet/assetpublisher/dependencies/email_asset_entry_added_body.tmpl

    #
    # Set the name of the display style which will be used by default.
    #
    asset.publisher.display.style.default=abstracts

    #
    # Input a list of comma delimited display styles that will be available in
    # the configuration screen of Asset Publisher portlet.
    #
    asset.publisher.display.styles=table,title-list,abstracts,full-content

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Asset Publisher portlet.
    #
    asset.publisher.display.templates.config=com/liferay/portlet/assetpublisher/dependencies/portlet-display-templates.xml

    #
    # Set the maximum number of new entries to notify subscribers of Asset
    # Publisher portlets. Set this property to 0 if there is no limit.
    #
    asset.publisher.dynamic.subscription.limit=20

    #
    # Set this to true to allow users to configure Asset Publisher, Most Viewed
    # Assets, and Highest Rated Assets to skip the permissions checking on the
    # displayed assets. Enabling this property will allow regular users to view
    # assets that they do not have permission to view.
    #
    asset.publisher.permission.checking.configurable=false

    #
    # Input a list of sections that will be included as part of the asset
    # publisher configuration form.
    #
    asset.publisher.query.form.configuration=custom-user-attributes

    #
    # Set this to true to search assets in Asset Publisher from the index. Set
    # this to false to search assets in Asset Publisher from the database.
    #
    asset.publisher.search.with.index=true

##
## Blogs Portlet
##

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Blogs portlet.
    #
    blogs.display.templates.config=com/liferay/portlet/blogs/dependencies/portlet-display-templates.xml

    #
    # Configure email notification settings.
    #
    blogs.email.from.name=
    blogs.email.from.address=

    blogs.email.entry.added.enabled=true
    blogs.email.entry.added.subject=com/liferay/portlet/blogs/dependencies/email_entry_added_subject.tmpl
    blogs.email.entry.added.body=com/liferay/portlet/blogs/dependencies/email_entry_added_body.tmpl

    blogs.email.entry.updated.enabled=true
    blogs.email.entry.updated.subject=com/liferay/portlet/blogs/dependencies/email_entry_updated_subject.tmpl
    blogs.email.entry.updated.body=com/liferay/portlet/blogs/dependencies/email_entry_updated_body.tmpl

    blogs.page.abstract.length=400

    blogs.rss.abstract.length=200

    #
    # Set the excerpt length for linkbacks.
    #
    blogs.linkback.excerpt.length=200

    #
    # Set the interval on which the LinkbackMessageListener will run. The value
    # is set in one minute increments.
    #
    blogs.linkback.job.interval=5

    #
    # Set this to true to enable pingbacks.
    #
    blogs.pingback.enabled=true

    #
    # Set this to true to enable trackbacks.
    #
    blogs.trackback.enabled=true

    #
    # Set this to true to enable pinging Google on new and updated blog entries.
    #
    blogs.ping.google.enabled=true

    #
    # Set the interval in minutes on how often CheckEntryMessageListener will
    # run to check for and display blog entries scheduled to display.
    #
    blogs.entry.check.interval=1

    #
    # Set this to true to enable comments for blogs entries.
    #
    blogs.entry.comments.enabled=true

    #
    # Set the available values for the number of blogs to display per page.
    #
    blogs.entry.page.delta.values=5,10,20,30,50,75

    #
    # Set this to true to enable previous and next navigation for blogs entries.
    #
    blogs.entry.previous.and.next.navigation.enabled=true

    #
    # Set the maximum file size and valid file extensions for images. A value of
    # 0 for the maximum file size can be used to indicate unlimited file size.
    # However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    blogs.image.small.max.size=51200

    #
    # A file extension of * will permit all file extensions.
    #
    blogs.image.extensions=.gif,.jpeg,.jpg,.png

    #
    # Set this to true if blogs should be published to live by default.
    #
    blogs.publish.to.live.by.default=false

##
## Bookmarks Portlet
##

    #
    # Configure email notification settings.
    #
    bookmarks.email.from.name=
    bookmarks.email.from.address=

    bookmarks.email.entry.added.enabled=true
    bookmarks.email.entry.added.subject=com/liferay/portlet/bookmarks/dependencies/email_entry_added_subject.tmpl
    bookmarks.email.entry.added.body=com/liferay/portlet/bookmarks/dependencies/email_entry_added_body.tmpl

    bookmarks.email.entry.updated.enabled=true
    bookmarks.email.entry.updated.subject=com/liferay/portlet/bookmarks/dependencies/email_entry_updated_subject.tmpl
    bookmarks.email.entry.updated.body=com/liferay/portlet/bookmarks/dependencies/email_entry_updated_body.tmpl

    #
    # Set this to true if bookmarks should be published to live by default.
    #
    bookmarks.publish.to.live.by.default=true

##
## Breadcrumb Portlet
##

    #
    # Set the name of the display style which will be used by default.
    #
    breadcrumb.display.style.default=horizontal

    #
    # Specify the options that will be provided to the user in the edit
    # configuration mode of the portlet.
    #
    breadcrumb.display.style.options=horizontal,vertical

    #
    # Set this to true to show the Guest Site as the top level parent in
    # the breadcrumbs. It will only show if it has at least one page.
    #
    breadcrumb.show.guest.group=false

    #
    # Set this to true to show the path of parent sites or organizations
    # in the breadcrumbs. A site will only be shown if it has at least one page.
    #
    breadcrumb.show.parent.groups=true

##
## Calendar
##
    #
    # Set this to true if calendar should be published to live by default.
    #
    calendar.publish.to.live.by.default=true


##
## Discussion Tag Library
##

    #
    # Configure email notification settings for discussions.
    #
    discussion.email.comments.added.enabled=true
    discussion.email.subject=com/liferay/portlet/messageboards/dependencies/discussion_email_subject.tmpl
    discussion.email.body=com/liferay/portlet/messageboards/dependencies/discussion_email_body.tmpl

    #
    # Set this to true if the subscription checkbox for discussion comments will
    # be checked by default.
    #
    discussion.subscribe.by.default=true

    #
    # Set the thread view for discussion comments. This will affect Blogs,
    # Document Library, and other portlets that use the Discussion tag library
    # to provide comments. Set the value to "flat" to paginate comments. Set the
    # value to "combination" to show all comments in one page along with a tree
    # view of the comments.
    #
    #discussion.thread.view=combination
    discussion.thread.view=flat

    #
    # Set this property to true if users can edit their own discussion comments
    # even if they do not have the permissions defined through the Site Members
    # role.
    #
    discussion.comments.always.editable.by.owner=false

##
## Document Library Portlet
##

    #
    # Configure email notification settings.
    #
    dl.email.from.name=
    dl.email.from.address=

    dl.email.file.entry.added.enabled=true
    dl.email.file.entry.added.subject=com/liferay/portlet/documentlibrary/dependencies/email_file_entry_added_subject.tmpl
    dl.email.file.entry.added.body=com/liferay/portlet/documentlibrary/dependencies/email_file_entry_added_body.tmpl

    dl.email.file.entry.updated.enabled=true
    dl.email.file.entry.updated.subject=com/liferay/portlet/documentlibrary/dependencies/email_file_entry_updated_subject.tmpl
    dl.email.file.entry.updated.body=com/liferay/portlet/documentlibrary/dependencies/email_file_entry_updated_body.tmpl

    #
    # Set this property to true to enable execution of antivirus check when
    # files are submitted into a store. Setting this value to true will prevent
    # any potential virus files from entering the store but will not allow for
    # file quarantines.
    #
    dl.store.antivirus.enabled=false

    #
    # Set the name of a class that implements
    # com.liferay.portlet.documentlibrary.antivirus.AntivirusScanner. The
    # document library server will use this to scan documents for viruses.
    #
    dl.store.antivirus.impl=com.liferay.portlet.documentlibrary.antivirus.DummyAntivirusScannerImpl
    #dl.store.antivirus.impl=com.liferay.portlet.documentlibrary.antivirus.ClamAntivirusScannerImpl

    #
    # Set the name of a class that implements
    # com.liferay.portlet.documentlibrary.store.Store. The
    # document library server will use this to persist documents.
    #
    #dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
    #dl.store.impl=com.liferay.portlet.documentlibrary.store.CMISStore
    #dl.store.impl=com.liferay.portlet.documentlibrary.store.DBStore
    dl.store.impl=com.liferay.portlet.documentlibrary.store.FileSystemStore
    #dl.store.impl=com.liferay.portlet.documentlibrary.store.JCRStore
    #dl.store.impl=com.liferay.portlet.documentlibrary.store.S3Store

    #
    # CMISStore
    #
    dl.store.cmis.credentials.username=none
    dl.store.cmis.credentials.password=none
    dl.store.cmis.repository.url=http://localhost:8080/alfresco/service/api/cmis
    dl.store.cmis.system.root.dir=Liferay Home

    #
    # FileSystemStore
    #
    dl.store.file.system.root.dir=${liferay.home}/data/document_library

    #
    # JCRStore
    #
    dl.store.jcr.fetch.delay=500
    dl.store.jcr.fetch.max.failures=5

    #
    # Set this to true to allow version labels to be moved when updated. This
    # provides a workaround to duplicate version labels that may result when
    # using JCRStore.
    #
    dl.store.jcr.move.version.labels=false

    #
    # S3Store
    #
    dl.store.s3.access.key=
    dl.store.s3.secret.key=
    dl.store.s3.bucket.name=

    #
    # Set the number of days that files should be left in the temporary
    # directory before they are deleted.
    #
    dl.store.s3.temp.dir.clean.up.expunge=7

    #
    # Set to the number of calls to S3Store#getFile() before triggering the
    # clean up process.
    #
    dl.store.s3.temp.dir.clean.up.frequency=100

    #
    # Set the maximum file size and valid file extensions for documents. A value
    # of 0 for the maximum file size can be used to indicate unlimited file
    # size. However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    dl.file.max.size=0
    #dl.file.max.size=307200
    #dl.file.max.size=1024000
    #dl.file.max.size=3072000

    #
    # A file extension of * will permit all file extensions.
    #
    dl.file.extensions=*
    #dl.file.extensions=.bmp,.css,.doc,.docx,.dot,.gif,.gz,.htm,.html,.jpg,.js,.lar,.odb,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.ppt,.pptx,.rtf,.swf,.sxc,.sxi,.sxw,.tar,.tiff,.tgz,.txt,.vsd,.xls,.xlsx,.xml,.zip,.jrxml

    #
    # Set this to false to allow users to update file entries by uploading a
    # file with an extension different from the one of the originally uploaded
    # file. There is a known issue where setting this to true will break OSX
    # compatibility. See LPS-10770 for more information.
    #
    dl.file.extensions.strict.check=false

    #
    # Characters that are not allowed in directory names and file names.
    #
    dl.char.blacklist=\\\\,//,:,*,?,\",<,>,|,../,/..

    #
    # Characters that are not allowed as the last character in directory names
    # or file names.
    #
    dl.char.last.blacklist=\\u0020,.

    #
    # Directory names and file names that are blacklisted regardless of the
    # extension.
    #
    dl.name.blacklist=con,prn,aux,nul,com1,com2,com3,com4,com5,com6,com7,com8,com9,lpt1,lpt2,lpt3,lpt4,lpt5,lpt6,lpt7,lpt8,lpt9

    #
    # You can map a PNG for generic thumbnails by adding the image to the
    # theme's file system folder. For example, the generic thumbnail for
    # documents can be found in:
    # /html/themes/_unstyled/images/file_system/large/document.png.
    #
    dl.file.generic.names=compressed,document,flash,image,music,pdf,presentation,spreadsheet,video
    dl.file.generic.extensions[compressed]=lar,rar,zip
    dl.file.generic.extensions[document]=doc,docx,pages,rtf,odt
    dl.file.generic.extensions[flash]=flv,swf
    dl.file.generic.extensions[image]=bmp,gif,jpeg,jpg,odg,png,svg
    dl.file.generic.extensions[music]=acc,mid,mp3,oga,ogg,wav,wma
    dl.file.generic.extensions[pdf]=pdf
    dl.file.generic.extensions[presentation]=key,keynote,odp,pps,ppt,pptx
    dl.file.generic.extensions[spreadsheet]=csv,numbers,ods,xls,xlsx
    dl.file.generic.extensions[video]=avi,m4v,mov,mp4,mpg,ogv,qt,rm,wmv

    #
    # Set the maximum file size for indexing file contents. Files larger than
    # this property will not have their contents indexed, only their metadata
    # will be indexed. A value of -1 indicates that all file contents will be
    # indexed. A value of 0 indicates that no file contents will be indexed.
    #
    dl.file.indexing.max.size=10485760

    #
    # Set the file extensions that will be ignored when indexing file contents.
    # Files with these extensions will not have their contents indexed, only
    # their metadata will be indexed.
    #
    dl.file.indexing.ignore.extensions=
    #dl.file.indexing.ignore.extensions=.pdf,.ppt

    #
    # You can map a GIF for the extension by adding the image to the theme's
    # image display and document library folder. The wildcard extension of *
    # will be ignored. For example, the default image for the DOC extension
    # would be found in:
    # /html/themes/_unstyled/images/file_system/small/doc.gif.
    #
    dl.file.icons=.bmp,.css,.doc,.docx,.dot,.gif,.gz,.htm,.html,.jpeg,.jpg,.js,.lar,.odb,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.ppt,.pptx,.rtf,.swf,.sxc,.sxi,.sxw,.tar,.tiff,.tgz,.txt,.vsd,.xls,.xlsx,.xml,.zip,.jrxml

    #
    # Set which file extensions are comparable by the diff tool. Any binary
    # files listed here will only be comparable if OpenOffice is enabled and the
    # the file is convertable to text.
    #
    dl.comparable.file.extensions=.css,.doc,.docx,.js,.htm,.html,.odt,.rtf,.sxw,.txt,.xml

    #
    # Set this to true to enable comments for document library files.
    #
    dl.file.entry.comments.enabled=true

    #
    # Set this to true to enable conversions for document library files.
    #
    # This property is not used unless OpenOffice is also enabled. See
    # the property "openoffice.server.enabled".
    #
    dl.file.entry.conversions.enabled=true

    #
    # Set this to true to enable drafts for document library files.
    #
    dl.file.entry.drafts.enabled=false

    #
    # Set this to 0 to automatically cancel a check out if it times out. Set
    # this to 1 to automatically check in if a check out times out.
    #
    dl.file.entry.lock.policy=0

    #
    # Set this to true to force users to perform a check in via the Document
    # Library user interface when using the "Open in MS Office" feature. Set
    # this to false to allow users to automatically check in the file upon
    # closing the appropriate MS Office application.
    #
    dl.file.entry.open.in.ms.office.manual.check.in.required=false

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portlet.documentlibrary.util.DLProcessor. These classes will
    # trigger asynchronous processing for document library files.
    #
    # com.liferay.portlet.documentlibrary.util.PDFProcessor will process all
    # PDF files and, if OpenOffice is enabled, all formats convertable to PDF.
    # Image generation will use PDFBox by default unless ImageMagick is enabled.
    # PDFBox is less accurate in image generation and has trouble with certain
    # fonts.
    #
    dl.file.entry.processors=com.liferay.portlet.documentlibrary.util.AudioProcessorImpl,com.liferay.portlet.documentlibrary.util.ImageProcessorImpl,com.liferay.portlet.documentlibrary.util.PDFProcessorImpl,com.liferay.portlet.documentlibrary.util.RawMetadataProcessorImpl,com.liferay.portlet.documentlibrary.util.VideoProcessorImpl

    #
    # Set the maximum file size for preview and thumbnail generation. Files
    # larger than the value specified in this property will not result in the
    # execution of a processor that generates a preview. A value of -1 indicates
    # that all files will be processed. A value of 0 indicates that no files
    # will be processed. The default maximum size is 100 megabytes.
    #
    dl.file.entry.previewable.processor.max.size=104857600

    #
    # Set this to 0 to force all updates to file entries to result in a new
    # version. Set this to 1 to keep the version number if no changes are
    # detected or if the only change is from a zero byte binary to a non-zero
    # byte binary.
    #
    dl.file.entry.version.policy=1

    #
    # Set the interval in minutes on how often CheckFileRankMessageListener will
    # run to check for and remove file ranks in excess of the maximum number of
    # file ranks to maintain per user per file.
    #
    dl.file.rank.check.interval=15

    #
    # Set this to true to enable file rank for document library files.
    #
    dl.file.rank.enabled=true

    #
    # Set the maximum number of file ranks to maintain per user per file.
    #
    dl.file.rank.max.size=5

    #
    # Set the values related to preview and thumbnail generation for document
    # library files. The classes enabled under "dl.file.entry.processors" will
    # utilize these parameters to generate the necessary files.
    #
    # Some parameters are applied universally across all processors (e.g.,
    # dl.file.entry.thumbnail.max.height) while others are specific to certain
    # types of generation, as specified (e.g.,
    # dl.file.entry.preview.document.depth).
    #
    # See the properties "imagemagick.enabled", "openoffice.server.enabled", and
    # "xuggler.enabled".
    #
    dl.file.entry.preview.enabled=true
    dl.file.entry.preview.document.depth=8
    dl.file.entry.preview.document.dpi=300
    dl.file.entry.preview.document.max.height=0
    dl.file.entry.preview.document.max.width=1000
    dl.file.entry.preview.video.height=360
    dl.file.entry.preview.video.width=640
    dl.file.entry.thumbnail.enabled=true
    dl.file.entry.thumbnail.max.height=128
    dl.file.entry.thumbnail.max.width=128
    #dl.file.entry.thumbnail.custom1.max.height=100
    #dl.file.entry.thumbnail.custom1.max.width=100
    #dl.file.entry.thumbnail.custom2.max.height=0
    #dl.file.entry.thumbnail.custom2.max.width=0
    dl.file.entry.thumbnail.video.frame.percentage=25

    #
    # Input a list of comma delimited audio containers for preview files. The
    # supported formats are MP3 and OGG.
    #
    dl.file.entry.preview.audio.containers=mp3,ogg
    #dl.file.entry.preview.audio.containers=mp3
    #dl.file.entry.preview.audio.containers=ogg

    #
    # Set the bit rate and sample rate values for each audio container format.
    #
    # Bit rates will be capped at 500000. A value less than 0 will be defaulted
    # to 64000.
    #
    # Sample rates will be capped at 192000. A value less than 0 will be
    # defaulted to 44100.
    #
    # Note that some audio container formats may not support the maximum capped
    # values. Care should be taken not to exceed the value allowed by the given
    # format.
    #
    dl.file.entry.preview.audio.bit.rate[mp3]=64000
    dl.file.entry.preview.audio.sample.rate[mp3]=44100

    dl.file.entry.preview.audio.bit.rate[ogg]=64000
    dl.file.entry.preview.audio.sample.rate[ogg]=44100

    #
    # Input a list of comma delimited audio MIME types that will trigger
    # generation of audio previews.
    #
    dl.file.entry.preview.audio.mime.types=audio/basic,audio/mid,audio/midi,audio/mod,audio/mp3,audio/mpeg,audio/mpeg3,audio/ogg,audio/vorbis,audio/wav,audio/x-mid,audio/x-midi,audio/x-mod,audio/x-mpeg,audio/x-pn-realaudio,audio/x-realaudio,audio/x-wav

    #
    # Set this to true to generate document previews automatically when
    # upgrading to 6.1. Setting this to true will cause your upgrade to take
    # longer. If set to false, previews for a document will be generated the
    # first time it is accessed by an end user.
    #
    dl.file.entry.preview.auto.create.on.upgrade=false

    #
    # Set this to true if you want preview generation to use a separate Java
    # process. This will utilize extra resources from the operating system while
    # improving the portal's stability.
    #
    dl.file.entry.preview.fork.process.enabled=true

    #
    # Input a list of comma delimited video MIME types that will trigger
    # generation of image previews.
    #
    dl.file.entry.preview.image.mime.types=image/bmp,image/gif,image/jpeg,image/pjpeg,image/png,image/tiff,image/x-citrix-jpeg,image/x-citrix-png,image/x-ms-bmp,image/x-png,image/x-tiff

    #
    # Input a list of comma delimited video containers for preview files. The
    # only formats supported are MP4 and OGV.
    #
    dl.file.entry.preview.video.containers=mp4,ogv
    #dl.file.entry.preview.video.containers=mp4
    #dl.file.entry.preview.video.containers=ogv

    #
    # Set the bit rate and frame rate values for each preview video container
    # format.
    #
    # Bit rates will be capped at 1200000. A value less than 0 will be defaulted
    # to 250000.
    #
    # Frame rates are determined by a numerator divided by a denominator. If
    # either value is less than 0, then the input video's frame rate will be
    # used.
    #
    dl.file.entry.preview.video.bit.rate[mp4]=250000
    dl.file.entry.preview.video.frame.rate.denominator[mp4]=1
    dl.file.entry.preview.video.frame.rate.numerator[mp4]=30

    dl.file.entry.preview.video.bit.rate[ogv]=250000
    dl.file.entry.preview.video.frame.rate.denominator[ogv]=-1
    dl.file.entry.preview.video.frame.rate.numerator[ogv]=-1

    #
    # Input a list of comma delimited video MIME types that will trigger
    # generation of video previews.
    #
    dl.file.entry.preview.video.mime.types=video/avi,video/mp4,video/mpeg,video/ogg,video/quicktime,video/x-flv,video/x-m4v,video/x-ms-wmv,video/x-msvideo

    #
    # When migrating images from the Image Gallery (this is only applicable if
    # upgrading from a version prior to Liferay 6.1) to the Document Library,
    # images will be migrated as documents of the type "Image Gallery Image".
    # Asset Publishers configured to display Image Gallery images will display
    # this document type instead after the migration. Set this property to false
    # to migrate Image Gallery images as basic documents instead. This property
    # will not work unless the property "application.startup.events" includes
    # com.liferay.portal.events.AddDefaultDataAction, which it does by default.
    #
    dl.file.entry.type.ig.image.auto.create.on.upgrade=true

    #
    # Set this to true if document library should be published to live by
    # default.
    #
    dl.publish.to.live.by.default=true

    #
    # Input a list of comma delimited class names of the third party
    # repositories that extend
    # com.liferay.portal.kernel.repository.BaseRepositoryImpl.
    #
    dl.repository.impl=com.liferay.portal.repository.cmis.CMISAtomPubRepository,com.liferay.portal.repository.cmis.CMISWebServicesRepository

    #
    # Sets the depth of mapped CMIS entries to remove when a deletion is called
    # from within the portal. The deeper the setting, the more calls to the
    # server required. When a deletion is called from outside the portal, mapped
    # CMIS entries remain stagnant in the database. Expected values are: -1 for
    # deep, 0 for none, and 1 for shallow.
    #
    dl.repository.cmis.delete.depth=1

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Document Library portlet.
    #
    dl.display.templates.config=com/liferay/portlet/documentlibrary/dependencies/portlet-display-templates.xml

    #
    # Set the list of supported display views.
    #
    dl.display.views=icon,descriptive,list

    #
    # Set the default display view.
    #
    dl.default.display.view=icon

    #
    # Set this to true to show a tip for using Liferay Sync.
    #
    dl.show.liferay.sync.message=true

##
## Dockbar Portlet
##

    #
    # Set the portlet ids that will be shown directly in the "Add Application"
    # menu.
    #
    dockbar.add.portlets=56,101,110,71

    #
    # Set this to true if administrative links in the dockbar should be shown in
    # a pop up window. The links under the "Manage" menu and the "Manage My
    # Account" link are considered administrative links.
    #
    dockbar.administrative.links.show.in.pop.up=true

##
## Dynamic Data Lists Portlet
##

    #
    # Set this to true if Dynamic Data Lists record set keys should always be
    # autogenerated.
    #
    dynamic.data.lists.record.set.force.autogenerate.key=false

    #
    # Set the storage type that will be used to store the Dynamic Data Lists
    # records. Valid values are: expando and xml.
    #
    dynamic.data.lists.storage.type=xml

    #
    # Specify the path to the template used for providing error messages on
    # Dynamic Data Lists templates.
    #
    dynamic.data.lists.error.template[ftl]=com/liferay/portlet/dynamicdatalists/dependencies/error.ftl
    dynamic.data.lists.error.template[vm]=com/liferay/portlet/dynamicdatalists/dependencies/error.vm

##
## Dynamic Data Mapping Portlet
##

    #
    # Set the maximum file size and valid file extensions for images. A value of
    # 0 for the maximum file size can be used to indicate unlimited file size.
    # However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    dynamic.data.mapping.image.small.max.size=51200

    #
    # A file extension of * will permit all file extensions.
    #
    dynamic.data.mapping.image.extensions=.gif,.jpeg,.jpg,.png

    #
    # Set this to true if dynamic data mapping structure keys should always be
    # autogenerated.
    #
    dynamic.data.mapping.structure.force.autogenerate.id=false

    #
    # Set the private field names to be able to store fields that are not part
    # of the structure.
    #
    dynamic.data.mapping.structure.private.field.names=_fieldsDisplay

    #
    # Set the data type for each private field.
    #
    dynamic.data.mapping.structure.private.field.datatype[_fieldsDisplay]=string

    #
    # Set the repeatable for each private field.
    #
    dynamic.data.mapping.structure.private.field.repeatable[_fieldsDisplay]=false

    #
    # Set the name of template language which will be used by default.
    #
    dynamic.data.mapping.template.language.default=ftl

    #
    # Set the location of the default content for each language type.
    #
    dynamic.data.mapping.template.language.content[ftl]=com/liferay/portlet/dynamicdatamapping/dependencies/template.ftl
    dynamic.data.mapping.template.language.content[vm]=com/liferay/portlet/dynamicdatamapping/dependencies/template.vm
    dynamic.data.mapping.template.language.content[xsl]=com/liferay/portlet/dynamicdatamapping/dependencies/template.xsl

##
## Flags Portlet
##

    #
    # Input a list of questions used for flag reasons.
    #
    flags.reasons=sexual-content,violent-or-repulsive-content,hateful-or-abusive-content,harmful-dangerous-acts,spam,infringes-my-rights

    #
    # Configure email notification settings.
    #
    flags.email.from.name=
    flags.email.from.address=

    flags.email.subject=com/liferay/portlet/flags/dependencies/email_flag_subject.tmpl
    flags.email.body=com/liferay/portlet/flags/dependencies/email_flag_body.tmpl

    #
    # Set this to true to enable guest users to flag content.
    #
    flags.guest.users.enabled=false

##
## Icon Menu Tag Library
##

    #
    # Configure maximum number of items to display when using the Icon Menu tag
    # library. If the number of items is higher than the maximum allowed, then
    # the icon menu will provide an autocomplete search box to display the
    # items.
    #
    icon.menu.max.display.items=15

##
## IFrame Portlet
##

    #
    # Specify a role name that a user must be associated with in order to
    # configure the IFrame portlet to use the @password@ token. This token is
    # used to post the password of users who access this portlet in order to
    # automatically login to the framed site.
    #
    # No role is required by default. However, it is recommended that you
    # specify a role in high security environments where users who configure
    # this portlet may attempt password theft. See LPS-5272 for more
    # information.
    #
    iframe.password.token.role=

##
## Invitation Portlet
##

    invitation.email.max.recipients=20
    invitation.email.message.body=com/liferay/portlet/invitation/dependencies/email_message_body.tmpl
    invitation.email.message.subject=com/liferay/portlet/invitation/dependencies/email_message_subject.tmpl

##
## Journal Portlet
##

    #
    # Set the list of supported display views.
    #
    journal.display.views=icon,descriptive,list

    #
    # Set the default display view.
    #
    journal.default.display.view=descriptive

    #
    # Set this to true to expire all article versions when expiring an article.
    # Set this to false to only expire the latest approved article version when
    # expiring an article.
    #
    journal.article.expire.all.versions=true

    #
    # Input a list of sections that will be included as part of the article form
    # when adding an article.
    #
    journal.article.form.add=content,abstract,categorization,schedule,display-page,related-assets,permissions,custom-fields

    #
    # Input a list of sections that will be included as part of the article form
    # when defining the default values of a structure.
    #
    journal.article.form.default.values=content,abstract,categorization,display-page,related-assets,permissions,custom-fields

    #
    # Input a list of sections that will be included as part of the article form
    # when translating an article.
    #
    journal.article.form.translate=content,abstract

    #
    # Input a list of sections that will be included as part of the article form
    # when updating an article.
    #
    journal.article.form.update=content,abstract,categorization,schedule,display-page,related-assets,custom-fields

    #
    # Set this to true if article ids should always be autogenerated.
    #
    journal.article.force.autogenerate.id=true

    #
    # Set the list of article types. The display text of each of the article
    # types is set in content/Language.properties.
    #
    journal.article.types=announcements,blogs,general,news,press-release,test

    #
    # Set a list of custom tokens that will be replaced when article content is
    # rendered. For example, if set to "custom_token_1", then "@custom_token_1@"
    # will be replaced with its token value before an article is displayed.
    #
    #journal.article.custom.tokens=custom_token_1,custom_token_2
    #journal.article.custom.token.value[custom_token_1]=This is the first custom token.
    #journal.article.custom.token.value[custom_token_2]=This is the second custom token.

    #
    # Set the token used when inserting simple page breaks in articles.
    #
    journal.article.token.page.break=@page_break@

    #
    # Set the interval in minutes on how often CheckArticleMessageListener will
    # run to check for and send email on web content due for review.
    #
    journal.article.check.interval=15

    #
    # Set the storage type that will be used to store the Journal articles.
    # Valid values are: expando and xml.
    #
    journal.article.storage.type=xml

    #
    # Set this to true to check that a user has the VIEW permission on a
    # Journal article when its content is rendered.
    #
    journal.article.view.permission.check.enabled=false

    #
    # Set this to true to enable comments for journal articles.
    #
    journal.article.comments.enabled=true

    #
    # Set this to true if feed ids should always be autogenerated.
    #
    journal.feed.force.autogenerate.id=true

    #
    # Set the location of the default content for each language type.
    #
    journal.template.language.content[css]=com/liferay/portlet/journal/dependencies/template.css
    journal.template.language.content[ftl]=com/liferay/portlet/journal/dependencies/template.ftl
    journal.template.language.content[vm]=com/liferay/portlet/journal/dependencies/template.vm
    journal.template.language.content[xsl]=com/liferay/portlet/journal/dependencies/template.xsl

    #
    # Set the maximum file size and valid file extensions for images. A value of
    # 0 for the maximum file size can be used to indicate unlimited file size.
    # However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    journal.image.small.max.size=51200

    #
    # A file extension of * will permit all file extensions.
    #
    journal.image.extensions=.gif,.jpeg,.jpg,.png

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.portal.kernel.templateparser.BaseTransformerListener. These
    # classes will run in sequence to allow you to modify the XML and XSL before
    # it is transformed and allow you to modify the final output.
    #
    journal.transformer.listener=\
        com.liferay.portlet.journal.util.TokensTransformerListener,\
        #com.liferay.portlet.journal.util.PropertiesTransformerListener,\
        com.liferay.portlet.journal.util.ContentTransformerListener,\
        com.liferay.portlet.journal.util.LocaleTransformerListener,\
        com.liferay.portlet.journal.util.RegexTransformerListener,\
        com.liferay.portlet.journal.util.ViewCounterTransformerListener

    #
    # Enter a list of regular expression patterns and replacements that will be
    # applied to outputted Journal content. The list of properties must end with
    # a subsequent integer (0, 1, etc.) and it is assumed that the list has
    # reached an end when the pattern or replacement is not set. See
    # com.liferay.portlet.journal.util.RegexTransformerListener for
    # implementation details.
    #
    #journal.transformer.regex.pattern.0=beta.sample.com
    #journal.transformer.regex.replacement.0=production.sample.com
    #journal.transformer.regex.pattern.1=staging.sample.com
    #journal.transformer.regex.replacement.1=production.sample.com

    #
    # Set this to true if journal articles should be published to live by
    # default.
    #
    journal.publish.to.live.by.default=true

    #
    # Set this to false if only the latest approved version of journal articles
    # should be published by default.
    #
    journal.publish.version.history.by.default=true

    #
    # Set whether to synchronize content searches when the server starts.
    #
    journal.sync.content.search.on.startup=false

    #
    # Configure email notification settings.
    #
    journal.email.from.name=
    journal.email.from.address=

    journal.email.article.added.enabled=true
    journal.email.article.added.subject=com/liferay/portlet/journal/dependencies/email_article_added_subject.tmpl
    journal.email.article.added.body=com/liferay/portlet/journal/dependencies/email_article_added_body.tmpl

    journal.email.article.approval.denied.enabled=false
    journal.email.article.approval.denied.subject=com/liferay/portlet/journal/dependencies/email_article_approval_denied_subject.tmpl
    journal.email.article.approval.denied.body=com/liferay/portlet/journal/dependencies/email_article_approval_denied_body.tmpl

    journal.email.article.approval.granted.enabled=false
    journal.email.article.approval.granted.subject=com/liferay/portlet/journal/dependencies/email_article_approval_granted_subject.tmpl
    journal.email.article.approval.granted.body=com/liferay/portlet/journal/dependencies/email_article_approval_granted_body.tmpl

    journal.email.article.approval.requested.enabled=false
    journal.email.article.approval.requested.subject=com/liferay/portlet/journal/dependencies/email_article_approval_requested_subject.tmpl
    journal.email.article.approval.requested.body=com/liferay/portlet/journal/dependencies/email_article_approval_requested_body.tmpl

    journal.email.article.review.enabled=true
    journal.email.article.review.subject=com/liferay/portlet/journal/dependencies/email_article_review_subject.tmpl
    journal.email.article.review.body=com/liferay/portlet/journal/dependencies/email_article_review_body.tmpl

    journal.email.article.updated.enabled=true
    journal.email.article.updated.subject=com/liferay/portlet/journal/dependencies/email_article_updated_subject.tmpl
    journal.email.article.updated.body=com/liferay/portlet/journal/dependencies/email_article_updated_body.tmpl

    #
    # Specify the strategy used when Journal content is imported using the LAR
    # system.
    #
    journal.lar.creation.strategy=com.liferay.portlet.journal.lar.JournalCreationStrategyImpl

    #
    # Specify the path to the template used for providing error messages on
    # Journal templates.
    #
    journal.error.template[ftl]=com/liferay/portlet/journal/dependencies/error.ftl
    journal.error.template[vm]=com/liferay/portlet/journal/dependencies/error.vm
    journal.error.template[xsl]=com/liferay/portlet/journal/dependencies/error.xsl

##
## Journal Articles Portlet
##

    #
    # Set the available values for the number of articles to display per page.
    #
    journal.articles.page.delta.values=5,10,20,30,50,75

    #
    # Set this to true to search articles from the index. Set this to false to
    # search articles from the database. Note that setting this to false will
    # disable searching articles based on Expando attributes or Message Boards
    # discussions or article versions.
    #
    journal.articles.search.with.index=true

##
## Journal Content Portlet
##
    #
    # Set this to true if journal content should be published to live by
    # default.
    #
    journal.content.publish.to.live.by.default=true

##
## Journal Content Search Portlet
##

    #
    # Set whether unlisted articles are excluded from search results.
    #
    journal.content.search.show.listed=true

##
## Login Portlet
##

    #
    # Configure email notification settings.
    #
    login.email.from.name=
    login.email.from.address=

    #
    # Set this to true to allow the user to choose a password during account
    # creation.
    #
    login.create.account.allow.custom.password=false

    #
    # Set this to true to disable the login popup dialog. This should only be
    # set to true if there is a custom login portlet that needs the "Sign In"
    # link to redirect to another page.
    #
    login.dialog.disabled=false

    #
    # Input a list of sections that will be included in login form navigation.
    #
    login.form.navigation.pre=anonymous,sign-in,facebook,open-id
    login.form.navigation.post=create-account,forgot-password

##
## Message Boards Portlet
##

    #
    # Configure email notification settings.
    #
    message.boards.email.from.name=
    message.boards.email.from.address=
    message.boards.email.bulk=true
    message.boards.email.html.format=true

    message.boards.email.message.added.enabled=true
    message.boards.email.message.added.subject=com/liferay/portlet/messageboards/dependencies/email_message_added_subject.tmpl
    message.boards.email.message.added.body=com/liferay/portlet/messageboards/dependencies/email_message_added_body.tmpl
    message.boards.email.message.added.signature=com/liferay/portlet/messageboards/dependencies/email_message_added_signature.tmpl

    message.boards.email.message.updated.enabled=true
    message.boards.email.message.updated.subject=com/liferay/portlet/messageboards/dependencies/email_message_updated_subject.tmpl
    message.boards.email.message.updated.body=com/liferay/portlet/messageboards/dependencies/email_message_updated_body.tmpl
    message.boards.email.message.updated.signature=com/liferay/portlet/messageboards/dependencies/email_message_updated_signature.tmpl

    #
    # Set the name of the category display style which will be used by default.
    #
    message.boards.category.display.styles.default=default

    #
    # Specify the options that will be provided to the user when editing a
    # category.
    #
    message.boards.category.display.styles=default,question

    #
    # Set the list of supported message board formats and the default message
    # board format.
    #
    message.boards.message.formats=bbcode,html
    message.boards.message.formats.default=bbcode

    #
    # Set this to true to allow anonymous posting.
    #
    message.boards.anonymous.posting.enabled=true

    #
    # Set this to true if users are subscribed by default to a thread they
    # participate in.
    #
    message.boards.subscribe.by.default=true

    #
    # Enter time in minutes on how often this job is run. If a user's ban is set
    # to expire at 12:05 PM and the job runs at 2 PM, the expire will occur
    # during the 2 PM run.
    #
    message.boards.expire.ban.job.interval=120

    #
    # Enter time in days to automatically expire bans on users. Set this
    # property or the property "message.boards.expire.ban.job.interval" to 0 to
    # disable auto expire.
    #
    message.boards.expire.ban.interval=10
    #message.boards.expire.ban.interval=0

    #
    # Set this to true to enable pingbacks.
    #
    message.boards.pingback.enabled=true

    message.boards.rss.abstract.length=200

    #
    # Set this to true to enable previous and next navigation for message board
    # threads.
    #
    message.boards.thread.previous.and.next.navigation.enabled=true

    #
    # Set the allowed thread views and the default thread view.
    #
    message.boards.thread.views=combination,flat,tree
    message.boards.thread.views.default=combination

    #
    # Set this to true if message boards should be published to live by default.
    #
    message.boards.publish.to.live.by.default=false

##
## My Places Portlet
##

    #
    # Set the display style for the My Places navigation menu.
    #
    my.sites.display.style=simple
    #my.sites.display.style=classic

    #
    # Set this to true to show user public sites with no layouts.
    #
    my.sites.show.user.public.sites.with.no.layouts=true

    #
    # Set this to true to show user private sites with no layouts.
    #
    my.sites.show.user.private.sites.with.no.layouts=true

    #
    # Set this to true to show public sites with no layouts.
    #
    my.sites.show.public.sites.with.no.layouts=true

    #
    # Set this to true to show site private sites with no layouts.
    #
    my.sites.show.private.sites.with.no.layouts=true

    #
    # Set the maximum number of elements that will be shown in the My Sites
    # navigation menu. For example, if the maximum is set to 10, then, at most,
    # 10 sites will be shown.
    #
    my.sites.max.elements=10

##
## Navigation Portlet
##

    #
    # Set the name of the display style which will be used by default.
    #
    navigation.display.style.default=relative-with-breadcrumb

    #
    # Specify the options that will be provided to the user in the edit
    # configuration mode of the portlet.
    #
    navigation.display.style.options=relative-with-breadcrumb,from-level-2-with-title,from-level-1-with-title,from-level-1,from-level-1-to-all-sublevels,from-level-0

    #
    # Define each mode with four comma delimited strings that represent the
    # form: headerType, rootLayoutType, rootLayoutLevel, includedLayouts, and
    # nestedChildren.
    #
    navigation.display.style[relative-with-breadcrumb]=breadcrumb,relative,0,auto,true
    navigation.display.style[from-level-2-with-title]=root-layout,absolute,2,auto,true
    navigation.display.style[from-level-1-with-title]=root-layout,absolute,1,auto,true
    navigation.display.style[from-level-1]=none,absolute,1,auto,true
    navigation.display.style[from-level-1-to-all-sublevels]=none,absolute,1,all,true
    navigation.display.style[from-level-0]=none,absolute,0,auto,true

##
## Nested Portlets Portlet
##

    #
    # Set the id of the layout template which will be used by default.
    #
    nested.portlets.layout.template.default=2_columns_i

    #
    # Add a comma delimited list of layout template ids that should not be
    # allowed in the Nested Portlets portlet.
    #
    nested.portlets.layout.template.unsupported=freeform,1_column

##
## Portlet CSS Portlet
##

    #
    # Set this to true to enable access to the Look and Feel icon. Setting it to
    # false will disable the ability to modify the portlet CSS at runtime, which
    # can speed up performance.
    #
    portlet.css.enabled=true

##
## Ratings Tag Library
##

    #
    # Set the number of stars that will be used by the ratings tag library by
    # default.
    #
    ratings.default.number.of.stars=5

    #
    # Set the number of max score and min score that will be used by the ratings
    # tag library for each model.
    #
    ratings.max.score[com.liferay.portlet.messageboards.model.MBDiscussion]=1
    ratings.min.score[com.liferay.portlet.messageboards.model.MBDiscussion]=-1

    ratings.max.score[com.liferay.portlet.messageboards.model.MBMessage]=1
    ratings.min.score[com.liferay.portlet.messageboards.model.MBMessage]=-1

##
## Recent Content Portlet
##

    #
    # Configure maximum number of items to display per type in the Recent
    # Content portlet.
    #
    recent.content.max.display.items=5

##
## RSS Portlet
##

    #
    # Set the HTTP connection timeout in milliseconds for reading RSS feeds.
    #
    rss.connection.timeout=2000

##
## Search Portlet
##

    #
    # Set the location of the default JSON object for the facets configured in
    # the Search portlet.
    #
    search.facet.configuration=com/liferay/portlet/search/dependencies/facet_configuration.json

    #
    # Set any of these to false to disable the portlet from being searched by
    # the Search portlet.
    #
    com.liferay.portlet.blogs.util.BlogsOpenSearchImpl=true
    com.liferay.portlet.bookmarks.util.BookmarksOpenSearchImpl=true
    com.liferay.portlet.directory.util.DirectoryOpenSearchImpl=true
    com.liferay.portlet.documentlibrary.util.DLOpenSearchImpl=true
    com.liferay.portlet.journal.util.JournalOpenSearchImpl=true
    com.liferay.portlet.messageboards.util.MBOpenSearchImpl=true
    com.liferay.portlet.wiki.util.WikiOpenSearchImpl=true

##
## My Sites Directory
##

    #
    # Specify a list of comma delimited site names that are excluded from
    # determining the organizations, user groups, and users that are displayed
    # in My Sites Directory portlet.
    #
    my.sites.directory.site.excludes=

##
## Sites Admin Portlet
##

    #
    # Set this to true to allow site members to see the Sites Admin portlet
    # and the sites they are members of in the Control Panel. Setting this to
    # false will only allow administrators to see this portlet in the Control
    # Panel.
    #
    sites.control.panel.members.visible=true

    #
    # Input a list of sections that will be included as part of the form when
    # adding a site.
    #
    sites.form.add.main=details,categorization
    sites.form.add.seo=
    sites.form.add.advanced=
    sites.form.add.miscellaneous=

    #
    # Input a list of sections that will be included as part of the form when
    # updating a site.
    #
    sites.form.update.main=details,categorization,site-url,site-template
    sites.form.update.seo=sitemap,robots
    sites.form.update.advanced=default-user-associations,staging,analytics,content-sharing,recycle-bin
    sites.form.update.miscellaneous=custom-fields,display-settings

    #
    # Set this property to 0 to disable the Sharing of Content with subsites for
    # all sites. Set this property to 1 to disable it by default while allowing
    # site administrators to enable it per site. Set this property to 2 to
    # enable it by default while allowing site administrators to disable it per
    # site.
    #
    #sites.content.sharing.with.children.enabled==0
    #sites.content.sharing.with.children.enabled==1
    sites.content.sharing.with.children.enabled=2

    #
    # Set this property to true to let every site administrator share content
    # across sites he manages.
    #
    sites.content.sharing.through.administrators.enabled=true

    #
    # Configure email notification settings.
    #
    sites.email.from.name=
    sites.email.from.address=

    sites.email.membership.reply.subject=com/liferay/portlet/sites/dependencies/email_membership_reply_subject.tmpl
    sites.email.membership.reply.body=com/liferay/portlet/sites/dependencies/email_membership_reply_body.tmpl

    sites.email.membership.request.subject=com/liferay/portlet/sites/dependencies/email_membership_request_subject.tmpl
    sites.email.membership.request.body=com/liferay/portlet/sites/dependencies/email_membership_request_body.tmpl

    #
    # Set the default change frequency for pages. This change frequency value
    # will be used by the robots visiting the pages. Possible values are:
    # always, hourly, daily, weekly, monthly, yearly, or never.
    #
    sites.sitemap.default.change.frequency=daily

    #
    # Set the default priority for pages. This priority value will used by the
    # robots visiting the pages. The possible value range is 0.0 to 1.0.
    #
    sites.sitemap.default.priority=

##
## Shopping Portlet
##

    #
    # Set this to true if cart quantities must be a multiple of the item's
    # minimum quantity.
    #
    shopping.cart.min.qty.multiple=true

    #
    # Set this to true to forward to the cart page when adding an item from the
    # category page. The item must not have dynamic fields. All items with
    # dynamic fields will forward to the item's details page regardless of the
    # following setting.
    #
    shopping.category.forward.to.cart=false

    #
    # Set this to true to show special items when browsing a category.
    #
    shopping.category.show.special.items=false

    #
    # Set this to true to show availability when viewing an item.
    #
    shopping.item.show.availability=true

    #
    # Set the maximum file size and valid file extensions for images. A value of
    # 0 for the maximum file size can be used to indicate unlimited file size.
    # However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    shopping.image.small.max.size=51200
    shopping.image.medium.max.size=153600
    shopping.image.large.max.size=307200

    #
    # A file extension of * will permit all file extensions.
    #
    shopping.image.extensions=.gif,.jpeg,.jpg,.png

    #
    # Configure email notification settings.
    #
    shopping.email.from.name=
    shopping.email.from.address=

    shopping.email.order.confirmation.enabled=true
    shopping.email.order.confirmation.subject=com/liferay/portlet/shopping/dependencies/email_order_confirmation_subject.tmpl
    shopping.email.order.confirmation.body=com/liferay/portlet/shopping/dependencies/email_order_confirmation_body.tmpl

    shopping.email.order.shipping.enabled=true
    shopping.email.order.shipping.subject=com/liferay/portlet/shopping/dependencies/email_order_shipping_subject.tmpl
    shopping.email.order.shipping.body=com/liferay/portlet/shopping/dependencies/email_order_shipping_body.tmpl

    #
    # Set this to true to enable comments for shopping orders.
    #
    shopping.order.comments.enabled=true

##
## Site Map Portlet
##

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Site Map portlet.
    #
    sitemap.display.templates.config=com/liferay/portlet/sitemap/dependencies/portlet-display-templates.xml

##
## Software Catalog Portlet
##

    #
    # Set the maximum file size and dimensions for thumbnails. A value of 0 for
    # the maximum file size can be used to indicate unlimited file size.
    # However, the maximum file size allowed is set in the property
    # "com.liferay.portal.upload.UploadServletRequestImpl.max.size".
    #
    sc.image.max.size=307200
    sc.image.thumbnail.max.height=200
    sc.image.thumbnail.max.width=160

    #
    # Set this to true to enable comments for software catalog products.
    #
    sc.product.comments.enabled=true

##
## Tags Compiler Portlet
##

    #
    # Set this to true to enable the ability to compile tags from the URL.
    # Disabling it can speed up performance.
    #
    tags.compiler.enabled=true

##
## Translator Portlet
##

    #
    # Input a list of comma delimited languages.
    #
    translator.languages=ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi_IN,ht,hu,in,it,iw,ja,ko,lt,lv,mww,nb,nl,pl,pt_PT,ro,ru,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW

    #
    # Set the default languages to translate a given text.
    #
    translator.default.languages=en_es

##
## Trash
##

    #
    # Set this property to false to disable the Recycle Bin for all sites. Set
    # this property to true to enabling while allowing site administrators to
    # disable it per site.
    #
    #trash.enabled=false
    trash.enabled=true

    #
    # Set the limit for results used when performing searches in the Recycle
    # Bin.
    #
    trash.search.limit=500

    #
    # Set the interval in minutes on how often CheckEntryMessageListener will run
    # to check for and delete trash entries that have been in the Recycle Bin
    # longer than the maximum age.
    #
    trash.entry.check.interval=60

    #
    # Set this to the maximum age (in number of minutes) that an entry will be
    # kept in the Recycle Bin. Note that these settings may be overridden in
    # Portal Settings for each Portal or in Site Settings for each Site.
    #
    trash.entries.max.age=43200

##
## Wiki Portlet
##

    #
    # Set the location of the XML file containing the configuration of the
    # default display templates for the Wiki portlet.
    #
    wiki.display.templates.config=com/liferay/portlet/wiki/dependencies/portlet-display-templates.xml

    #
    # Set the name of the default page for a wiki node. The name for the default
    # page must be a valid wiki word. A wiki word follows the format of having
    # an upper case letter followed by a series of lower case letters followed
    # by another upper case letter and another series of lower case letters. See
    # http://www.usemod.com/cgi-bin/wiki.pl?WhatIsaWiki for more information on
    # wiki naming conventions.
    #
    wiki.front.page.name=FrontPage

    #
    # Set the name of the default node that will be automatically created when
    # the Wiki portlet is first used in a site.
    #
    wiki.initial.node.name=Main

    #
    # Specify the requirements for the names of wiki pages. By default only a
    # few characters are forbidden. Uncomment the regular expression below to
    # allow only CamelCase titles.
    #
    wiki.page.titles.regexp=([^\\\\\\[\\]\\|:;%<>]+)
    #wiki.page.titles.regexp=(((\\p{Lu}\\p{Ll}+)_?)+)

    #
    # Specify the characters that will be automatically removed from the titles
    # when importing wiki pages. This regexp should remove any characters that
    # are forbidden in the regexp specified in the property
    # "wiki.page.titles.regexp".
    #
    wiki.page.titles.remove.regexp=([\\\\\\[\\]\\|:;%<>]+)

    #
    # Set this to true to enable ratings for wiki pages.
    #
    wiki.page.ratings.enabled=true

    #
    # Set this to true to enable comments for wiki pages.
    #
    wiki.page.comments.enabled=true

    #
    # Set this to true to enable social activity notifications on minor edits of
    # a wiki page.
    #
    wiki.page.minor.edit.add.social.activity=true

    #
    # Set this to true to enable email notifications on minor edits of a wiki
    # page.
    #
    wiki.page.minor.edit.send.email=false

    #
    # Set the list of supported wiki formats and the default wiki format.
    #
    wiki.formats=creole,html,mediawiki
    wiki.formats.default=creole

    #
    # Configure settings for each of the wiki formats.
    #
    wiki.formats.engine[creole]=com.liferay.portlet.wiki.engines.antlrwiki.CreoleWikiEngine
    #wiki.formats.engine[creole]=com.liferay.portlet.wiki.engines.jspwiki.JSPWikiEngine
    wiki.formats.configuration.main[creole]=jspwiki.properties
    wiki.formats.edit.page[creole]=/html/portlet/wiki/edit/wiki.jsp
    wiki.formats.help.page[creole]=/html/portlet/wiki/help/creole.jsp
    wiki.formats.help.url[creole]=http://www.wikicreole.org/wiki/Creole1.0

    wiki.formats.engine[html]=com.liferay.portlet.wiki.engines.HtmlEngine
    wiki.formats.edit.page[html]=/html/portlet/wiki/edit/html.jsp

    wiki.formats.engine[mediawiki]=com.liferay.portlet.wiki.engines.mediawiki.MediaWikiEngine
    wiki.formats.edit.page[mediawiki]=/html/portlet/wiki/edit/wiki.jsp
    wiki.formats.help.page[mediawiki]=/html/portlet/wiki/help/mediawiki.jsp
    wiki.formats.help.url[mediawiki]=http://www.mediawiki.org/wiki/Help:Formatting

    wiki.formats.engine[plain_text]=com.liferay.portlet.wiki.engines.TextEngine
    wiki.formats.edit.page[plain_text]=/html/portlet/wiki/edit/plain_text.jsp

    #
    # Set the list of supported wiki importers.
    #
    wiki.importers=MediaWiki

    #
    # Configure settings for each of the wiki importers.
    #
    wiki.importers.page[MediaWiki]=/html/portlet/wiki/import/mediawiki.jsp
    wiki.importers.class[MediaWiki]=com.liferay.portlet.wiki.importers.mediawiki.MediaWikiImporter

    #
    # Configure email notification settings.
    #
    wiki.email.from.name=
    wiki.email.from.address=

    wiki.email.page.added.enabled=true
    wiki.email.page.added.subject=com/liferay/portlet/wiki/dependencies/email_page_added_subject.tmpl
    wiki.email.page.added.body=com/liferay/portlet/wiki/dependencies/email_page_added_body.tmpl
    wiki.email.page.added.signature=com/liferay/portlet/wiki/dependencies/email_page_added_signature.tmpl

    wiki.email.page.updated.enabled=true
    wiki.email.page.updated.subject=com/liferay/portlet/wiki/dependencies/email_page_updated_subject.tmpl
    wiki.email.page.updated.body=com/liferay/portlet/wiki/dependencies/email_page_updated_body.tmpl
    wiki.email.page.updated.signature=com/liferay/portlet/wiki/dependencies/email_page_updated_signature.tmpl

    #
    # Specify the supported protocols for the Creole parser.
    #
    wiki.parsers.creole.supported.protocols=ftp://,http://,https://,mailto:,mms://

    wiki.rss.abstract.length=200