Pārlūkot izejas kodu

more json enhancements

Jason Rivard 3 gadi atpakaļ
vecāks
revīzija
a851971e21

+ 4 - 4
server/src/main/java/password/pwm/config/value/FormValue.java

@@ -177,16 +177,16 @@ public class FormValue extends AbstractValue implements StoredValue
                 sb.append( " Multi-Value:" ).append( formRow.isMultivalue() );
                 sb.append( " Source:" ).append( formRow.getSource() );
                 sb.append( "\n" );
-                sb.append( " Label:" ).append( JsonUtil.serializeMap( formRow.getLabels() ) ).append( "\n" );
-                sb.append( " Description:" ).append( JsonUtil.serializeMap( formRow.getDescription() ) ).append( "\n" );
+                sb.append( " Label:" ).append( JsonUtil.serializeStringMap( formRow.getLabels() ) ).append( "\n" );
+                sb.append( " Description:" ).append( JsonUtil.serializeStringMap( formRow.getDescription() ) ).append( "\n" );
                 if ( formRow.getType() == FormConfiguration.Type.select && CollectionUtil.isEmpty( formRow.getSelectOptions() ) )
                 {
-                    sb.append( " Select Options: " ).append( JsonUtil.serializeMap( formRow.getSelectOptions() ) ).append( "\n" );
+                    sb.append( " Select Options: " ).append( JsonUtil.serializeStringMap( formRow.getSelectOptions() ) ).append( "\n" );
                 }
                 if ( StringUtil.notEmpty( formRow.getRegex() ) )
                 {
                     sb.append( " Regex:" ).append( formRow.getRegex() )
-                            .append( " Regex Error:" ).append( JsonUtil.serializeMap( formRow.getRegexErrors() ) );
+                            .append( " Regex Error:" ).append( JsonUtil.serializeStringMap( formRow.getRegexErrors() ) );
                 }
                 if ( formRow.getType() == FormConfiguration.Type.photo )
                 {

+ 1 - 4
server/src/main/java/password/pwm/config/value/UserPermissionValue.java

@@ -20,7 +20,6 @@
 
 package password.pwm.config.value;
 
-import com.google.gson.reflect.TypeToken;
 import password.pwm.config.PwmSetting;
 import password.pwm.config.stored.StoredConfigXmlConstants;
 import password.pwm.config.stored.XmlOutputProcessData;
@@ -82,9 +81,7 @@ public class UserPermissionValue extends AbstractValue implements StoredValue
                 }
                 else
                 {
-                    List<UserPermission> srcList = JsonUtil.deserialize( input, new TypeToken<List<UserPermission>>()
-                    {
-                    } );
+                    List<UserPermission> srcList = JsonUtil.deserializeList( input, UserPermission.class );
                     srcList = srcList == null ? Collections.emptyList() : srcList;
                     return new UserPermissionValue( Collections.unmodifiableList( srcList ) );
                 }

+ 1 - 4
server/src/main/java/password/pwm/http/servlet/command/CommandServlet.java

@@ -37,7 +37,6 @@ import password.pwm.http.PwmSession;
 import password.pwm.http.filter.AuthenticationFilter;
 import password.pwm.http.servlet.ControlledPwmServlet;
 import password.pwm.http.servlet.PwmServletDefinition;
-import password.pwm.util.java.JsonUtil;
 import password.pwm.util.logging.PwmLogger;
 
 import javax.servlet.ServletException;
@@ -45,7 +44,6 @@ import java.io.IOException;
 import java.time.Instant;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Map;
 
 public abstract class CommandServlet extends ControlledPwmServlet
 {
@@ -103,8 +101,7 @@ public abstract class CommandServlet extends ControlledPwmServlet
         final String body = pwmRequest.readRequestBodyAsString();
         try
         {
-            final Map<String, Object> map = JsonUtil.deserializeStringObjectMap( body );
-            LOGGER.trace( () -> "CSP Report: " + JsonUtil.serializeMap( map, JsonUtil.Flag.PrettyPrint ) );
+            LOGGER.trace( () -> "CSP Report: " + body );
         }
         catch ( final Exception e )
         {

+ 308 - 0
server/src/main/java/password/pwm/util/java/JsonAdaptors.java

@@ -0,0 +1,308 @@
+/*
+ * Password Management Servlets (PWM)
+ * http://www.pwm-project.org
+ *
+ * Copyright (c) 2006-2009 Novell, Inc.
+ * Copyright (c) 2009-2021 The PWM Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package password.pwm.util.java;
+
+import com.squareup.moshi.JsonAdapter;
+import com.squareup.moshi.JsonReader;
+import com.squareup.moshi.JsonWriter;
+import com.squareup.moshi.Moshi;
+import org.jetbrains.annotations.Nullable;
+import password.pwm.PwmConstants;
+import password.pwm.bean.DomainID;
+import password.pwm.error.PwmInternalException;
+import password.pwm.error.PwmUnrecoverableException;
+import password.pwm.util.PasswordData;
+import password.pwm.util.logging.PwmLogger;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.time.Instant;
+import java.util.Date;
+import java.util.Objects;
+import java.util.TimeZone;
+import java.util.concurrent.atomic.LongAdder;
+
+public class JsonAdaptors
+{
+    private static final PwmLogger LOGGER = PwmLogger.forClass( JsonAdaptors.class );
+
+    static void registerTypeAdapters( final Moshi.Builder moshiBuilder, final JsonUtil.Flag... flags )
+    {
+        moshiBuilder.add( Date.class, applyFlagsToAdapter( new DateTypeAdapter(), flags ) );
+        moshiBuilder.add( Instant.class, applyFlagsToAdapter( new InstantTypeAdapter(), flags ) );
+        moshiBuilder.add( X509Certificate.class, applyFlagsToAdapter( new X509CertificateAdapter(), flags ) );
+        moshiBuilder.add( PasswordData.class, applyFlagsToAdapter( new PasswordDataAdapter(), flags ) );
+        moshiBuilder.add( DomainID.class, applyFlagsToAdapter( new DomainIdAdaptor(), flags ) );
+        moshiBuilder.add( LongAdder.class, applyFlagsToAdapter( new LongAdderTypeAdaptor(), flags ) );
+    }
+
+    static <T> JsonAdapter<T> applyFlagsToAdapter( final JsonAdapter<T> adapter, final JsonUtil.Flag... flags )
+    {
+        JsonAdapter<T> adapterInProgress = adapter;
+
+        if ( JavaHelper.enumArrayContainsValue( flags, JsonUtil.Flag.PrettyPrint ) )
+        {
+            adapterInProgress = adapter.indent( "  " );
+        }
+
+        return adapterInProgress;
+    }
+
+
+
+    /**
+     * Stores instants in ISO 8601 format, with a deserializer that also reads local-platform format reading.
+     */
+    private static class InstantTypeAdapter extends JsonAdapter<Instant>
+    {
+        @Nullable
+        @Override
+        public Instant fromJson( final JsonReader reader ) throws IOException
+        {
+            final String strValue = reader.nextString();
+            if ( StringUtil.isEmpty( strValue ) )
+            {
+                return null;
+            }
+            try
+            {
+                return JavaHelper.parseIsoToInstant( strValue );
+            }
+            catch ( final Exception e )
+            {
+                LOGGER.debug( () -> "unable to parse stored json Instant.class timestamp '" + strValue + "' error: " + e.getMessage() );
+                throw new IOException( e );
+            }
+        }
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final Instant value ) throws IOException
+        {
+            if ( value == null )
+            {
+                writer.jsonValue( "" );
+            }
+            else
+            {
+                writer.jsonValue( JavaHelper.toIsoDate( value ) );
+            }
+        }
+    }
+
+    /**
+     * GsonSerializer that stores dates in ISO 8601 format, with a deserializer that also reads local-platform format reading.
+     */
+    private static class DateTypeAdapter extends JsonAdapter<Date>
+    {
+        private static final PwmDateFormat ISO_DATE_FORMAT = PwmDateFormat.newPwmDateFormat(
+                "yyyy-MM-dd'T'HH:mm:ss'Z'",
+                PwmConstants.DEFAULT_LOCALE,
+                TimeZone.getTimeZone( "Zulu" ) );
+
+        private static DateFormat getLegacyDateFormat()
+        {
+            final DateFormat gsonDateFormat = DateFormat.getDateTimeInstance( DateFormat.DEFAULT, DateFormat.DEFAULT );
+            gsonDateFormat.setTimeZone( TimeZone.getDefault() );
+            return gsonDateFormat;
+        }
+
+        @Nullable
+        @Override
+        public Date fromJson( final JsonReader reader ) throws IOException
+        {
+            final String strValue = reader.nextString();
+            try
+            {
+                return Date.from( ISO_DATE_FORMAT.parse( strValue ) );
+            }
+            catch ( final ParseException e )
+            {
+                /* noop */
+            }
+
+            // for backwards compatibility
+            try
+            {
+                return getLegacyDateFormat().parse( strValue );
+            }
+            catch ( final ParseException e )
+            {
+                LOGGER.debug( () -> "unable to parse stored json Date.class timestamp '" + strValue + "' error: " + e.getMessage() );
+                throw new IOException( e );
+            }
+        }
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final Date value ) throws IOException
+        {
+            Objects.requireNonNull( value );
+            writer.value( ISO_DATE_FORMAT.format( value.toInstant() ) );
+        }
+    }
+
+    private static class DomainIdAdaptor extends JsonAdapter<DomainID>
+    {
+        @Nullable
+        @Override
+        public DomainID fromJson( final JsonReader reader ) throws IOException
+        {
+            final String stringValue = reader.nextString();
+
+            if ( StringUtil.isEmpty( stringValue ) )
+            {
+                return null;
+            }
+
+            if ( DomainID.systemId().toString().equals( stringValue ) )
+            {
+                return DomainID.systemId();
+            }
+
+            return DomainID.create( stringValue );
+        }
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final DomainID value ) throws IOException
+        {
+            if ( value == null )
+            {
+                writer.nullValue();
+
+            }
+            else
+            {
+                writer.value( value.toString() );
+            }
+        }
+    }
+
+    /**
+     * Gson Serializer for {@link java.security.cert.X509Certificate}.  Necessary because sometimes X509Certs have circular references
+     * and the default gson serializer will cause a {@code java.lang.StackOverflowError}.  Standard Base64 encoding of
+     * the cert is used as the json format.
+     */
+    private static class X509CertificateAdapter extends JsonAdapter<X509Certificate>
+    {
+        @Nullable
+        @Override
+        public X509Certificate fromJson( final JsonReader reader ) throws IOException
+        {
+            final String strValue = reader.nextString();
+            try
+            {
+                final CertificateFactory certificateFactory = CertificateFactory.getInstance( "X.509" );
+                try ( ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( StringUtil.base64Decode( strValue ) ) )
+                {
+                    return ( X509Certificate ) certificateFactory.generateCertificate( byteArrayInputStream );
+                }
+            }
+            catch ( final Exception e )
+            {
+                throw new IOException( "unable to parse x509certificate: " + e.getMessage() );
+            }
+        }
+
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final X509Certificate value ) throws IOException
+        {
+            if ( value == null )
+            {
+                writer.nullValue();
+            }
+            else
+            {
+                try
+                {
+                    final byte[] encoded = value.getEncoded();
+                    writer.value( StringUtil.stripAllWhitespace( StringUtil.base64Encode( encoded ) ) );
+                }
+                catch ( final PwmInternalException | CertificateEncodingException e )
+                {
+                    throw new IOException( "unable to json-encode certificate: " + e.getMessage() );
+                }
+            }
+        }
+    }
+
+
+    private static class PasswordDataAdapter extends JsonAdapter<PasswordData>
+    {
+        @Nullable
+        @Override
+        public PasswordData fromJson( final JsonReader reader ) throws IOException
+        {
+            final String strValue = reader.nextString();
+            try
+            {
+                return new PasswordData( strValue );
+            }
+            catch ( final PwmUnrecoverableException e )
+            {
+                final String errorMsg = "error while deserializing password data: " + e.getMessage();
+                LOGGER.error( () -> errorMsg );
+                throw new IOException( errorMsg, e );
+            }
+        }
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final PasswordData value ) throws IOException
+        {
+            Objects.requireNonNull( value );
+            try
+            {
+                writer.value( value.getStringValue() );
+            }
+            catch ( final PwmUnrecoverableException e )
+            {
+                final String errorMsg = "error while serializing password data: " + e.getMessage();
+                LOGGER.error( () -> errorMsg );
+                throw new IOException( errorMsg, e );
+            }
+        }
+    }
+
+    private static class LongAdderTypeAdaptor extends JsonAdapter<LongAdder>
+    {
+        @Nullable
+        @Override
+        public LongAdder fromJson( final JsonReader reader ) throws IOException
+        {
+            final String strValue = reader.nextString();
+            final long longValue = Long.parseLong( strValue );
+            final LongAdder longAddr = new LongAdder();
+            longAddr.add( longValue );
+            return longAddr;
+        }
+
+        @Override
+        public void toJson( final JsonWriter writer, @Nullable final LongAdder value ) throws IOException
+        {
+            Objects.requireNonNull( value );
+            writer.value( value.longValue() );
+        }
+    }
+}

+ 91 - 297
server/src/main/java/password/pwm/util/java/JsonUtil.java

@@ -31,11 +31,8 @@ import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 import com.google.gson.reflect.TypeToken;
 import com.squareup.moshi.JsonAdapter;
-import com.squareup.moshi.JsonReader;
-import com.squareup.moshi.JsonWriter;
 import com.squareup.moshi.Moshi;
 import com.squareup.moshi.Types;
-import org.jetbrains.annotations.Nullable;
 import password.pwm.PwmConstants;
 import password.pwm.bean.DomainID;
 import password.pwm.error.PwmInternalException;
@@ -79,20 +76,24 @@ public class JsonUtil
 
         <T> T deserialize( String jsonString, Type type );
 
+        <V> List<V> deserializeList( String json, Class<V> classOfV );
+
+        <K, V> Map<K, V> deserializeMap( String json, Class<K> classOfK, Class<V> classOfV );
+
         List<String> deserializeStringList( String jsonString );
 
         Map<String, String> deserializeStringMap( String jsonString );
 
-        Map<String, Object> deserializeStringObjectMap( String jsonString );
-
         Map<String, Object> deserializeMap( String jsonString );
 
-        <T> T deserialize( String jsonString, Class<T> classOfT, Type... parameterizedTypes );
-
         String serialize( Serializable object, Flag... flags );
 
         String serializeMap( Map object, Flag... flags );
 
+        <V> String serializeList( List<V> object, Class<V> parameterizedValue, Flag... flags );
+
+        <K, V> String serializeMap( Map<K, V> object, Class<K> parameterizedKey, Class<V> parameterizedValue, Flag... flags );
+
         String serializeCollection( Collection object, Flag... flags );
 
         <T> T cloneUsingJson( Serializable srcObject, Class<T> classOfT );
@@ -100,7 +101,7 @@ public class JsonUtil
 
     private static final PwmJsonServiceProvider GSON_PROVIDER = new GsonPwmJsonServiceProvider();
     private static final PwmJsonServiceProvider MOSHI_PROVIDER = new MoshiPwmJsonServiceProvider();
-    private static final PwmJsonServiceProvider PROVIDER = GSON_PROVIDER;
+    private static final PwmJsonServiceProvider PROVIDER = MOSHI_PROVIDER;
 
     public static <T> T deserialize( final String jsonString, final TypeToken typeToken )
     {
@@ -117,9 +118,14 @@ public class JsonUtil
         return PROVIDER.deserialize( json, classOfT );
     }
 
-    public static <T> T deserialize( final String json, final Class<T> classOfT, final Type... parameterizedTypes )
+    public static <V> List<V> deserializeList( final String json, final Class<V> classOfV )
     {
-        return PROVIDER.deserialize( json, classOfT, parameterizedTypes );
+        return PROVIDER.deserializeList( json, classOfV );
+    }
+
+    public static <K, V> Map<K, V> deserializeMap( final String json, final Class<K> classOfK, final Class<V> classOfV )
+    {
+        return PROVIDER.deserializeMap( json, classOfK, classOfV );
     }
 
     public static List<String> deserializeStringList( final String jsonString )
@@ -132,11 +138,6 @@ public class JsonUtil
         return PROVIDER.deserializeStringMap( jsonString );
     }
 
-    public static Map<String, Object> deserializeStringObjectMap( final String jsonString )
-    {
-        return PROVIDER.deserializeStringObjectMap( jsonString );
-    }
-
     public static Map<String, Object> deserializeMap( final String jsonString )
     {
         return PROVIDER.deserializeMap( jsonString );
@@ -152,6 +153,21 @@ public class JsonUtil
         return PROVIDER.serializeMap( object, flags );
     }
 
+    public static String serializeStringMap( final Map<String, String> object, final Flag... flags )
+    {
+        return PROVIDER.serializeMap( object, String.class, String.class, flags );
+    }
+
+    public static <V> String serializeList( final List<V> object, final Class<V> parameterizedKey, final Flag... flags )
+    {
+        return PROVIDER.serializeList( object, parameterizedKey, flags );
+    }
+
+    public static <K, V> String serializeMap( final Map<K, V> object, final Class<K> parameterizedKey, final Class<V> parameterizedValue, final Flag... flags )
+    {
+        return PROVIDER.serializeMap( object, parameterizedKey, parameterizedValue, flags );
+    }
+
     public static String serializeCollection( final Collection object, final Flag... flags )
     {
         return PROVIDER.serializeCollection( object, flags );
@@ -174,32 +190,10 @@ public class JsonUtil
             }
 
             final Moshi.Builder moshiBuilder = new Moshi.Builder();
-            registerTypeAdapters( moshiBuilder );
+            JsonAdaptors.registerTypeAdapters( moshiBuilder );
             return moshiBuilder.build();
         }
 
-        private static <T> JsonAdapter<T> applyFlagsToAdapter( final JsonAdapter<T> adapter, final Flag... flags )
-        {
-            JsonAdapter<T> adapterInProgress = adapter;
-
-            if ( JavaHelper.enumArrayContainsValue( flags, Flag.PrettyPrint ) )
-            {
-                adapterInProgress = adapter.indent( "  " );
-            }
-
-            return adapterInProgress;
-        }
-
-        private static void registerTypeAdapters( final Moshi.Builder moshiBuilder, final Flag... flags )
-        {
-            moshiBuilder.add( Date.class, applyFlagsToAdapter( new DateTypeAdapter(), flags ) );
-            moshiBuilder.add( Instant.class, applyFlagsToAdapter( new InstantTypeAdapter(), flags ) );
-            moshiBuilder.add( X509Certificate.class, applyFlagsToAdapter( new X509CertificateAdapter(), flags ) );
-            moshiBuilder.add( PasswordData.class, applyFlagsToAdapter( new PasswordDataAdapter(), flags ) );
-            moshiBuilder.add( DomainID.class, applyFlagsToAdapter( new DomainIdAdaptor(), flags ) );
-            moshiBuilder.add( LongAdder.class, applyFlagsToAdapter( new LongAdderTypeAdaptor(), flags ) );
-        }
-
         @Override
         public List<String> deserializeStringList( final String jsonString )
         {
@@ -219,6 +213,11 @@ public class JsonUtil
 
         @Override
         public <T> T deserialize( final String jsonString, final Type type )
+        {
+           return deserializeImpl( jsonString, type );
+        }
+
+        public <T> T deserializeImpl( final String jsonString, final Type type )
         {
             final Moshi moshi = getMoshi();
             final JsonAdapter<T> adapter = moshi.adapter( type );
@@ -241,44 +240,43 @@ public class JsonUtil
         }
 
         @Override
-        public Map<String, Object> deserializeStringObjectMap( final String jsonString )
+        public Map<String, Object> deserializeMap( final String jsonString )
         {
-            final Type type = Types.newParameterizedType( Map.class, String.class, String.class );
+            final Type type = Types.newParameterizedType( Map.class, String.class, Object.class );
             return Map.copyOf( deserialize( jsonString, type ) );
         }
 
         @Override
-        public Map<String, Object> deserializeMap( final String jsonString )
+        public <V> List<V> deserializeList( final String json, final Class<V> classOfV )
         {
-            final Type type = Types.newParameterizedType( Map.class, String.class, Object.class );
-            return Map.copyOf( deserialize( jsonString, type ) );
+            final Type type = Types.newParameterizedType( List.class, classOfV );
+            return List.copyOf( deserialize( json, type ) );
         }
 
         @Override
-        public <T> T deserialize( final String jsonString, final Class<T> classOfT )
+        public <K, V> Map<K, V> deserializeMap( final String json, final Class<K> classOfK, final Class<V> classOfV )
         {
-            final Type type = Types.supertypeOf( classOfT );
-            return deserialize( jsonString, type );
+            final Type type = Types.newParameterizedType( Map.class, classOfK, classOfV );
+            return Map.copyOf( deserialize( json, type ) );
         }
 
         @Override
-        public <T> T deserialize( final String jsonString, final TypeToken typeToken )
+        public <T> T deserialize( final String jsonString, final Class<T> classOfT )
         {
-            final Type type = Types.newParameterizedType( typeToken.getRawType() );
-            return deserialize( jsonString, type );
+            return deserializeImpl( jsonString, classOfT );
         }
 
         @Override
-        public <T> T deserialize( final String jsonString, final Class<T> classOfT, final Type... parameterizedTypes )
+        public <T> T deserialize( final String jsonString, final TypeToken typeToken )
         {
-            final Type type = Types.newParameterizedType( classOfT, parameterizedTypes );
+            final Type type = Types.newParameterizedType( typeToken.getRawType() );
             return deserialize( jsonString, type );
         }
 
         private <T> String serialize( final T object, final Type type, final Flag... flags )
         {
             final Moshi moshi = getMoshi();
-            final JsonAdapter<T> jsonAdapter = applyFlagsToAdapter( moshi.adapter( type ), flags );
+            final JsonAdapter<T> jsonAdapter = JsonAdaptors.applyFlagsToAdapter( moshi.adapter( type ), flags );
             return jsonAdapter.toJson( object );
         }
 
@@ -310,251 +308,34 @@ public class JsonUtil
         }
 
         @Override
-        public String serializeCollection( final Collection object, final Flag... flags )
+        public <V> String serializeList( final List<V> object, final Class<V> parameterizedValue, final Flag... flags )
         {
-            final Type type = Types.subtypeOf( Collection.class );
-            return serialize( object, type, flags );
+            final Type type = Types.newParameterizedType( List.class, parameterizedValue );
+            return serialize( object, type );
         }
 
         @Override
-        public <T> T cloneUsingJson( final Serializable srcObject, final Class<T> classOfT )
-        {
-            final String jsonObj = this.serialize( srcObject );
-            return this.deserialize( jsonObj, classOfT );
-        }
-
-        /**
-         * GsonSerializer that stores instants in ISO 8601 format, with a deserializer that also reads local-platform format reading.
-         */
-        private static class InstantTypeAdapter extends JsonAdapter<Instant>
-        {
-            @Nullable
-            @Override
-            public Instant fromJson( final JsonReader reader ) throws IOException
-            {
-                final String strValue = reader.nextString();
-                if ( StringUtil.isEmpty( strValue ) )
-                {
-                    return null;
-                }
-                try
-                {
-                    return JavaHelper.parseIsoToInstant( strValue );
-                }
-                catch ( final Exception e )
-                {
-                    LOGGER.debug( () -> "unable to parse stored json Instant.class timestamp '" + strValue + "' error: " + e.getMessage() );
-                    throw new IOException( e );
-                }
-            }
-
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final Instant value ) throws IOException
-            {
-                if ( value == null )
-                {
-                    writer.jsonValue( "" );
-                }
-                else
-                {
-                    writer.jsonValue( JavaHelper.toIsoDate( value ) );
-                }
-            }
-        }
-
-        /**
-         * GsonSerializer that stores dates in ISO 8601 format, with a deserializer that also reads local-platform format reading.
-         */
-        private static class DateTypeAdapter extends JsonAdapter<Date>
-        {
-            private static final PwmDateFormat ISO_DATE_FORMAT = PwmDateFormat.newPwmDateFormat(
-                    "yyyy-MM-dd'T'HH:mm:ss'Z'",
-                    PwmConstants.DEFAULT_LOCALE,
-                    TimeZone.getTimeZone( "Zulu" ) );
-
-            private static DateFormat getLegacyDateFormat()
-            {
-                final DateFormat gsonDateFormat = DateFormat.getDateTimeInstance( DateFormat.DEFAULT, DateFormat.DEFAULT );
-                gsonDateFormat.setTimeZone( TimeZone.getDefault() );
-                return gsonDateFormat;
-            }
-
-            @Nullable
-            @Override
-            public Date fromJson( final JsonReader reader ) throws IOException
-            {
-                final String strValue = reader.nextString();
-                try
-                {
-                    return Date.from( ISO_DATE_FORMAT.parse( strValue ) );
-                }
-                catch ( final ParseException e )
-                {
-                    /* noop */
-                }
-
-                // for backwards compatibility
-                try
-                {
-                    return getLegacyDateFormat().parse( strValue );
-                }
-                catch ( final ParseException e )
-                {
-                    LOGGER.debug( () -> "unable to parse stored json Date.class timestamp '" + strValue + "' error: " + e.getMessage() );
-                    throw new IOException( e );
-                }
-            }
-
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final Date value ) throws IOException
-            {
-                Objects.requireNonNull( value );
-                writer.value( ISO_DATE_FORMAT.format( value.toInstant() ) );
-            }
-        }
-
-        private static class DomainIdAdaptor extends JsonAdapter<DomainID>
+        public <K, V> String serializeMap( final Map<K, V> object, final Class<K> parameterizedKey, final Class<V> parameterizedValue, final Flag... flags )
         {
-            @Nullable
-            @Override
-            public DomainID fromJson( final JsonReader reader ) throws IOException
-            {
-                final String stringValue = reader.nextString();
-
-                if ( StringUtil.isEmpty( stringValue ) )
-                {
-                    return null;
-                }
-
-                if ( DomainID.systemId().toString().equals( stringValue ) )
-                {
-                    return DomainID.systemId();
-                }
-
-                return DomainID.create( stringValue );
-            }
-
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final DomainID value ) throws IOException
-            {
-                if ( value == null )
-                {
-                    writer.nullValue();
-
-                }
-                else
-                {
-                    writer.value( value.toString() );
-                }
-            }
+            final Type type = Types.newParameterizedType( Map.class, parameterizedKey, parameterizedValue );
+            return serialize( object, type );
         }
 
-        /**
-         * Gson Serializer for {@link java.security.cert.X509Certificate}.  Necessary because sometimes X509Certs have circular references
-         * and the default gson serializer will cause a {@code java.lang.StackOverflowError}.  Standard Base64 encoding of
-         * the cert is used as the json format.
-         */
-        private static class X509CertificateAdapter extends JsonAdapter<X509Certificate>
+        @Override
+        public String serializeCollection( final Collection object, final Flag... flags )
         {
-            @Nullable
-            @Override
-            public X509Certificate fromJson( final JsonReader reader ) throws IOException
-            {
-                final String strValue = reader.nextString();
-                try
-                {
-                    final CertificateFactory certificateFactory = CertificateFactory.getInstance( "X.509" );
-                    try ( ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( StringUtil.base64Decode( strValue ) ) )
-                    {
-                        return ( X509Certificate ) certificateFactory.generateCertificate( byteArrayInputStream );
-                    }
-                }
-                catch ( final Exception e )
-                {
-                    throw new IOException( "unable to parse x509certificate: " + e.getMessage() );
-                }
-            }
-
-
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final X509Certificate value ) throws IOException
-            {
-                if ( value == null )
-                {
-                    writer.nullValue();
-                }
-                else
-                {
-                    try
-                    {
-                        final byte[] encoded = value.getEncoded();
-                        writer.value( StringUtil.stripAllWhitespace( StringUtil.base64Encode( encoded ) ) );
-                    }
-                    catch ( final PwmInternalException | CertificateEncodingException e )
-                    {
-                        throw new IOException( "unable to json-encode certificate: " + e.getMessage() );
-                    }
-                }
-            }
+            final Type type = Types.subtypeOf( Collection.class );
+            return serialize( object, type, flags );
         }
 
-
-        private static class PasswordDataAdapter extends JsonAdapter<PasswordData>
+        @Override
+        public <T> T cloneUsingJson( final Serializable srcObject, final Class<T> classOfT )
         {
-            @Nullable
-            @Override
-            public PasswordData fromJson( final JsonReader reader ) throws IOException
-            {
-                final String strValue = reader.nextString();
-                try
-                {
-                    return new PasswordData( strValue );
-                }
-                catch ( final PwmUnrecoverableException e )
-                {
-                    final String errorMsg = "error while deserializing password data: " + e.getMessage();
-                    LOGGER.error( () -> errorMsg );
-                    throw new IOException( errorMsg, e );
-                }
-            }
-
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final PasswordData value ) throws IOException
-            {
-                Objects.requireNonNull( value );
-                try
-                {
-                    writer.value( value.getStringValue() );
-                }
-                catch ( final PwmUnrecoverableException e )
-                {
-                    final String errorMsg = "error while serializing password data: " + e.getMessage();
-                    LOGGER.error( () -> errorMsg );
-                    throw new IOException( errorMsg, e );
-                }
-            }
+            final String jsonObj = this.serialize( srcObject );
+            return this.deserialize( jsonObj, classOfT );
         }
 
-        private static class LongAdderTypeAdaptor extends JsonAdapter<LongAdder>
-        {
-            @Nullable
-            @Override
-            public LongAdder fromJson( final JsonReader reader ) throws IOException
-            {
-                final String strValue = reader.nextString();
-                final long longValue = Long.parseLong( strValue );
-                final LongAdder longAddr = new LongAdder();
-                longAddr.add( longValue );
-                return longAddr;
-            }
 
-            @Override
-            public void toJson( final JsonWriter writer, @Nullable final LongAdder value ) throws IOException
-            {
-                Objects.requireNonNull( value );
-                writer.value( value.longValue() );
-            }
-        }
     }
 
     private static class GsonPwmJsonServiceProvider implements PwmJsonServiceProvider
@@ -592,34 +373,33 @@ public class JsonUtil
             return getGson().fromJson( jsonString, type );
         }
 
-
         @Override
-        public <T> T deserialize( final String json, final Class<T> classOfT, final Type... parameterizedTypes )
+        public <T> T deserialize( final String json, final Class<T> classOfT )
         {
-            final TypeToken typeToken = TypeToken.getParameterized( classOfT, parameterizedTypes );
-            return getGson().fromJson( json, typeToken.getType() );
+            return getGson().fromJson( json, classOfT );
         }
 
         @Override
-        public <T> T deserialize( final String json, final Class<T> classOfT )
+        public <V> List<V> deserializeList( final String json, final Class<V> classOfV )
         {
-            return getGson().fromJson( json, classOfT );
+            final Type type = Types.newParameterizedType( List.class, classOfV );
+            return List.copyOf( getGson().fromJson( json, type ) );
         }
 
         @Override
-        public Map<String, String> deserializeStringMap( final String jsonString )
+        public <K, V> Map<K, V> deserializeMap( final String json, final Class<K> classOfK, final Class<V> classOfV )
         {
-            return Map.copyOf( getGson().fromJson( jsonString, new TypeToken<Map<String, String>>()
-            {
-            }.getType() ) );
+            final Type type = Types.newParameterizedType( Map.class, classOfK, classOfV );
+            return Map.copyOf( getGson().fromJson( json, type ) );
         }
 
+
         @Override
-        public Map<String, Object> deserializeStringObjectMap( final String jsonString )
+        public Map<String, String> deserializeStringMap( final String jsonString )
         {
-            return getGson().fromJson( jsonString, new TypeToken<Map<String, Object>>()
+            return Map.copyOf( getGson().fromJson( jsonString, new TypeToken<Map<String, String>>()
             {
-            }.getType() );
+            }.getType() ) );
         }
 
         @Override
@@ -642,6 +422,21 @@ public class JsonUtil
             return getGson( flags ).toJson( object );
         }
 
+
+        @Override
+        public <V> String serializeList( final List<V> object, final Class<V> parameterizedValue, final Flag... flags )
+        {
+            final Type type = Types.newParameterizedType( List.class, parameterizedValue );
+            return getGson( flags ).toJson( object, type );
+        }
+
+        @Override
+        public <K, V> String serializeMap( final Map<K, V> object, final Class<K> parameterizedKey, final Class<V> parameterizedValue, final Flag... flags )
+        {
+            final Type type = Types.newParameterizedType( Map.class, parameterizedKey, parameterizedValue );
+            return getGson( flags ).toJson( object, type );
+        }
+
         @Override
         public String serializeCollection( final Collection object, final Flag... flags )
         {
@@ -816,7 +611,6 @@ public class JsonUtil
                     throw new JsonParseException( errorMsg, e );
                 }
             }
-
         }
 
         private static class PwmLdapVendorTypeAdaptor implements JsonSerializer<PwmLdapVendor>, JsonDeserializer<PwmLdapVendor>

+ 288 - 288
server/src/main/resources/password/pwm/config/PwmSetting.xml

@@ -2141,294 +2141,294 @@
     </setting>
     <setting hidden="false" key="challenge.randomChallenges" level="1">
         <default>
-            <value><![CDATA[{"text":"What is the name of the main character in your favorite book?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is the name of your favorite teacher?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is the name of your favorite pet?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What was the name of your childhood best friend?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What was your favorite show as a child?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"Who is your favorite author?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is your favorite food?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is your partner's nickname?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is your favorite team?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What street did you grow up on?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What city / town were you born in?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is your favorite vehicle?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"If you could meet someone from history, who would it be?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What is your least favorite film of all time?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"Who was your least favorite teacher?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value><![CDATA[{"text":"What food do you dislike the most?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Com es diu el personatge principal del seu llibre preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Com es diu el seu mestre preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Com es diu la seva mascota preferida?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Com es deia el seu millor amic de la infància?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin era seu programa televisiu preferit en la infància?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin és el seu escriptor preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin és el seu menjar preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin sobrenom té la seva parella?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin és el seu equip preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"En quin carrer va créixer?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"En quin poble o en quina ciutat va néixer?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin és el seu vehicle preferit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Si pogués conèixer un personatge històric, qui triaria?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quina és la pel·lícula que menys li ha agradat de totes les que ha vist?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Com es deia el mestre que menys li agradava?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ca"><![CDATA[{"text":"Quin és el menjar que menys li agrada?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad hedder hovedpersonen i din yndlingsbog?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad hedder din yndlingslærer?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad er navnet på dit yndlingskæledyr?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad hed din bedste barndomsven?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad var dit yndlingsshow som barn?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvem er din yndlingsforfatter?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad er din livret?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad er din partners kaldenavn?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad er dit yndlingshold?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad var navnet på din barndomsgade?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvilken by er du født i?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvad er dit yndlingskøretøj?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvis du kunne møde en historisk person, hvem skulle det så være?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvilken film kan du mindst lide?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvilken lærer kunne du mindst lide?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="da"><![CDATA[{"text":"Hvilken fødevare bryder du dig mindst om?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie heißt die Hauptperson in Ihrem Lieblingsbuch?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingslehrer?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingshaustier?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie hieß Ihr bester Freund/Ihre beste Freundin aus der Kindheit?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Welche Sendung haben Sie als Kind am liebsten angeschaut?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingsautor?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Was essen Sie am liebsten?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie lautet der Kosename Ihres Partners?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Welches ist Ihre Lieblingsmannschaft?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"In welcher Straße haben Sie als Kind gewohnt?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie lautet Ihr Geburtsort?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Welches ist Ihr bevorzugtes Fahrzeug?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Welche historische Persönlichkeit würden Sie gerne kennenlernen?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie heißt der schlechteste Film, den Sie je gesehen haben?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Wie hieß der Lehrer, den Sie am wenigsten mochten?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="de"><![CDATA[{"text":"Was essen Sie überhaupt nicht gerne?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre del personaje principal de su libro favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de su profesor favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de su mascota favorita?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cómo se llamaba su mejor amigo del colegio?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál era su programa de televisión favorito cuando era niño?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Quién es su autor favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es su comida favorita?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es el apodo de su pareja?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es su equipo favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de la calle en la que se crió?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿En qué ciudad nació?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es su vehículo favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"Si pudiera conocer a algún personaje histórico, ¿quién sería?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es la película que menos le gusta?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Quién era el profesor que menos le gustaba?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="es"><![CDATA[{"text":"¿Cuál es la comida que menos le gusta?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is the name of the main character in your favourite book?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is the name of your favourite teacher?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is the name of your favourite pet?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What was the name of your childhood best friend?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What was your favourite show as a child?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"Who is your favourite author?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is your favourite food?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is your partner's nickname?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is your favourite team?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What street did you grow up on?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What city/town were you born in?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is your favourite vehicle?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"If you could meet someone from history, who would it be?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What is your least favourite film of all time?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"Who was your least favourite teacher?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="en_CA"><![CDATA[{"text":"What food do you dislike the most?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle le héros de votre livre préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle votre professeur préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel est le nom de votre animal préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle votre meilleur ami d'enfance?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quelle était votre émission préférée lorsque vous étiez enfant?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Qui est votre auteur préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel est votre plat préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel est le surnom de votre partenaire?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quelle est votre équipe préférée?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Dans quelle rue avez-vous grandi?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quelle est votre ville de naissance?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel est votre véhicule préféré?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Si vous pouviez rencontrer un personnage historique, qui voudriez-vous rencontrer?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel film avez-vous toujours détesté?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Qui est le professeur que vous avez le plus détesté?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr_CA"><![CDATA[{"text":"Quel plat détestez-vous le plus?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Comment s'appelle le héros de votre livre préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Comment s'appelle votre professeur préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel est le nom de votre animal préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Comment s'appelle votre meilleur ami d'enfance ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quelle était votre émission préférée lorsque vous étiez enfant ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Qui est votre auteur préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel est votre plat préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel est le surnom de votre partenaire ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quelle est votre équipe préférée ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Dans quelle rue avez-vous grandi ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quelle est votre ville de naissance ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel est votre véhicule préféré ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Si vous pouviez rencontrer un personnage historique, qui voudriez-vous rencontrer ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel film avez-vous toujours détesté ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Qui est le professeur que vous avez le plus détesté ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="fr"><![CDATA[{"text":"Quel plat détestez-vous le plus ?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו שם הדמות הראשית בספר האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו שם המורה האהוב/ה עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו שם חיית המחמד האהובה עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מה היה שמו של חבר הילדות הטוב ביותר שלך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מה היתה תוכנית הטלוויזיה האהובה עליך בילדותך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מי הסופר האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו המאכל האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו הכינוי של בת/בן הזוג שלך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו שם הקבוצה האהובה עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"באיזה רחוב גדלת?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"באיזו עיר נולדת?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו הרכב האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"אם היית יכול לפגוש דמות מההיסטוריה, את מי היית רוצה לפגוש?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו שם הסרט הכי פחות אהוב עליך בכל הזמנים?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מי היה המורה הכי פחות אהוב/ה עליך?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="iw"><![CDATA[{"text":"מהו המאכל שאתה הכי לא אוהב?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Come si chiama il protagonista del tuo libro preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Come si chiama il tuo insegnante preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Come si chiama il tuo animale domestico preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Come si chiamava il tuo miglior amico dell'infanzia?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual era il tuo programma preferito da bambino?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il tuo autore preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il tuo cibo preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il soprannome del/della tuo/a partner?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è la tua squadra del cuore?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"In quale via sei cresciuto/a?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"In quale città sei nato/a?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il tuo mezzo di trasporto preferito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Se potessi incontrare un personaggio storico, chi sceglieresti?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il film che ti è piaciuto di meno in assoluto?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Quale insegnante amavi di meno?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="it"><![CDATA[{"text":"Qual è il cibo che odi di più?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"お気に入りの本の主人公の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"お気に入りの先生の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"お気に入りのペットの名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"子供の頃の親友の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"子供の頃好きだったテレビ番組は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"好きな作家は誰ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"好きな食べ物は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"パートナーのニックネームは何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"好きなチームは何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"あなたが育った通りの名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"あなたが生まれた市町村区の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"お気に入りの車は何ですか」?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"歴史上の人物に会えるとしたら、誰に会いたいですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"これまでに見た中で嫌いな映画は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"嫌いな先生は誰でしたか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ja"><![CDATA[{"text":"一番嫌いな食べ物は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is de naam van de hoofdpersoon in uw favoriete boek?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw favoriete leraar?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw favoriete huisdier?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw beste jeugdvriend?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat was uw favoriete tv-programma als kind?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wie is uw favoriete schrijver?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete eten?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is de bijnaam van uw partner?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete voetbalteam?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"In welke straat bent u opgegroeid?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"In welke stad of in welk dorp bent u geboren?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete voertuig?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Als u een bekende persoon uit het verleden zou kunnen ontmoeten, wie zou dat dan zijn?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wat is uw minst favoriete film aller tijden?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Wie was uw minst favoriete leraar?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="nl"><![CDATA[{"text":"Welk eten vindt u het minst lekker?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jak nazywa się główny bohater Twojej ulubionej książki?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jak nazywa się Twój ulubiony nauczyciel?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jak nazywa się Twój ulubiony zwierzak?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jak miał na imię Twój najlepszy kolega z dzieciństwa?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jaki był Twój ulubiony program telewizyjny w dzieciństwie?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Kto jest Twoim ulubionym pisarzem?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Co jest Twoją ulubioną potrawą?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jak brzmi przydomek Twojego partnera?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jaka jest Twoja ulubiona drużyna?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Na jakiej ulicy dorastałeś(-aś)?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jakie miasto jest miejscem Twojego urodzenia?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jaki jest Twój ulubiony pojazd?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Gdyby było możliwe spotkanie jakiejś historycznej postaci, kto by nią był?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jaki jest Twój ulubiony film wszechczasów?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Kto był Twoim najmniej lubianym nauczycielem?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pl"><![CDATA[{"text":"Jakiej potrawy najbardziej nie lubisz?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do personagem principal do seu livro favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do seu professor favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do seu animal de estimação favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual era o nome do seu melhor amigo de infância?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual era seu programa de TV favorito quando criança?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Quem é seu autor favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu prato favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o apelido de seu(sua) companheiro(a)?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu time favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Em que rua você cresceu?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Em que cidade você nasceu?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu carro favorito?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Se você pudesse conhecer um personagem histórico, quem seria?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o filme de que você menos gostou até hoje?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual era o professor de quem você menos gostava?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="pt_BR"><![CDATA[{"text":"Qual é o prato de que você menos gosta?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Имя главного персонажа в вашей любимой книге.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Имя вашего любимого учителя.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Имя вашего любимого домашнего животного.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Имя вашего лучшего друга детства.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваше любимое шоу в детстве.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваш любимый автор.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваша любимая еда.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Как вы называете своего партнера?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваша любимая команда.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Улица, на которой вы выросли.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Город (населенный пункт), в котором вы родились.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваш любимый автомобиль.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"С кем из исторических персонажей вы бы хотели встретиться?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Самый нелюбимый вами фильм за все время.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Ваш самый нелюбимый учитель.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="ru"><![CDATA[{"text":"Еда, которая вам не нравится больше всего.","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad heter huvudpersonen i din favoritbok?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad heter din favoritlärare?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad heter ditt favorithusdjur?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad hette din bästa kompis när du var barn?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilket var ditt favoritprogram på TV när du var liten?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vem är din favoritförfattare?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilken är din favoriträtt?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad är din partners smeknamn?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilket lag håller du på?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vad hette gatan där du växte upp?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"I vilken stad är du född?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilket är ditt favoritfordon?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Om du kunde träffa en historisk person, vem skulle du välja?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilken film tycker du är historiens sämsta?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilken lärare tyckte du sämst om?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="sv"><![CDATA[{"text":"Vilken mat tycker du sämst om?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"在您最喜爱的书中,主人公叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的老师叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最喜爱的宠物叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您儿时的好友叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"孩提时代,您最喜欢的节目是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的作者是谁?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最爱吃的食物是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您伴侣的绰号是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最喜爱的球队是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您在哪条街道长大?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您出生在哪个城市/城镇?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的交通工具是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"如果您可以穿越历史邂逅某个人物,此人会是谁?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"一直以来,您最不喜欢的电影是什么?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最不喜欢的老师是谁?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_CN"><![CDATA[{"text":"您最不爱吃哪种食物?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的書籍主角姓名?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的老師姓名?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的寵物名字?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您兒時摯友的姓名?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您小時候最喜歡的節目?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的作家?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的食物?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您伴侶的綽號?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的運動隊伍?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您在哪條街上長大的?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您出生的城市/城鎮?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的交通工具?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"若您可以與歷史人物見面,會是哪一位歷史人物?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最不喜愛的電影?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最不喜愛的老師?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
-            <value locale="zh_TW"><![CDATA[{"text":"您最討厭的食物?","minLength":4,"maxLength":200,"adminDefined":true,enforceWordlist:true,maxQuestionCharsInAnswer:3}]]></value>
+            <value><![CDATA[{"text":"What is the name of the main character in your favorite book?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is the name of your favorite teacher?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is the name of your favorite pet?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What was the name of your childhood best friend?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What was your favorite show as a child?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"Who is your favorite author?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is your favorite food?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is your partner's nickname?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is your favorite team?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What street did you grow up on?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What city / town were you born in?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is your favorite vehicle?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"If you could meet someone from history, who would it be?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What is your least favorite film of all time?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"Who was your least favorite teacher?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value><![CDATA[{"text":"What food do you dislike the most?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Com es diu el personatge principal del seu llibre preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Com es diu el seu mestre preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Com es diu la seva mascota preferida?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Com es deia el seu millor amic de la infància?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin era seu programa televisiu preferit en la infància?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin és el seu escriptor preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin és el seu menjar preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin sobrenom té la seva parella?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin és el seu equip preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"En quin carrer va créixer?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"En quin poble o en quina ciutat va néixer?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin és el seu vehicle preferit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Si pogués conèixer un personatge històric, qui triaria?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quina és la pel·lícula que menys li ha agradat de totes les que ha vist?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Com es deia el mestre que menys li agradava?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ca"><![CDATA[{"text":"Quin és el menjar que menys li agrada?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad hedder hovedpersonen i din yndlingsbog?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad hedder din yndlingslærer?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad er navnet på dit yndlingskæledyr?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad hed din bedste barndomsven?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad var dit yndlingsshow som barn?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvem er din yndlingsforfatter?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad er din livret?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad er din partners kaldenavn?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad er dit yndlingshold?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad var navnet på din barndomsgade?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvilken by er du født i?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvad er dit yndlingskøretøj?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvis du kunne møde en historisk person, hvem skulle det så være?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvilken film kan du mindst lide?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvilken lærer kunne du mindst lide?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="da"><![CDATA[{"text":"Hvilken fødevare bryder du dig mindst om?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie heißt die Hauptperson in Ihrem Lieblingsbuch?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingslehrer?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingshaustier?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie hieß Ihr bester Freund/Ihre beste Freundin aus der Kindheit?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Welche Sendung haben Sie als Kind am liebsten angeschaut?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie heißt Ihr Lieblingsautor?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Was essen Sie am liebsten?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie lautet der Kosename Ihres Partners?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Welches ist Ihre Lieblingsmannschaft?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"In welcher Straße haben Sie als Kind gewohnt?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie lautet Ihr Geburtsort?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Welches ist Ihr bevorzugtes Fahrzeug?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Welche historische Persönlichkeit würden Sie gerne kennenlernen?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie heißt der schlechteste Film, den Sie je gesehen haben?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Wie hieß der Lehrer, den Sie am wenigsten mochten?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="de"><![CDATA[{"text":"Was essen Sie überhaupt nicht gerne?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre del personaje principal de su libro favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de su profesor favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de su mascota favorita?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cómo se llamaba su mejor amigo del colegio?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál era su programa de televisión favorito cuando era niño?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Quién es su autor favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es su comida favorita?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es el apodo de su pareja?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es su equipo favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es el nombre de la calle en la que se crió?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿En qué ciudad nació?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es su vehículo favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"Si pudiera conocer a algún personaje histórico, ¿quién sería?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es la película que menos le gusta?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Quién era el profesor que menos le gustaba?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="es"><![CDATA[{"text":"¿Cuál es la comida que menos le gusta?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is the name of the main character in your favourite book?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is the name of your favourite teacher?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is the name of your favourite pet?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What was the name of your childhood best friend?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What was your favourite show as a child?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"Who is your favourite author?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is your favourite food?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is your partner's nickname?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is your favourite team?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What street did you grow up on?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What city/town were you born in?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is your favourite vehicle?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"If you could meet someone from history, who would it be?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What is your least favourite film of all time?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"Who was your least favourite teacher?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="en_CA"><![CDATA[{"text":"What food do you dislike the most?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle le héros de votre livre préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle votre professeur préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel est le nom de votre animal préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Comment s'appelle votre meilleur ami d'enfance?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quelle était votre émission préférée lorsque vous étiez enfant?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Qui est votre auteur préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel est votre plat préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel est le surnom de votre partenaire?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quelle est votre équipe préférée?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Dans quelle rue avez-vous grandi?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quelle est votre ville de naissance?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel est votre véhicule préféré?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Si vous pouviez rencontrer un personnage historique, qui voudriez-vous rencontrer?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel film avez-vous toujours détesté?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Qui est le professeur que vous avez le plus détesté?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr_CA"><![CDATA[{"text":"Quel plat détestez-vous le plus?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Comment s'appelle le héros de votre livre préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Comment s'appelle votre professeur préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel est le nom de votre animal préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Comment s'appelle votre meilleur ami d'enfance ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quelle était votre émission préférée lorsque vous étiez enfant ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Qui est votre auteur préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel est votre plat préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel est le surnom de votre partenaire ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quelle est votre équipe préférée ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Dans quelle rue avez-vous grandi ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quelle est votre ville de naissance ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel est votre véhicule préféré ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Si vous pouviez rencontrer un personnage historique, qui voudriez-vous rencontrer ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel film avez-vous toujours détesté ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Qui est le professeur que vous avez le plus détesté ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="fr"><![CDATA[{"text":"Quel plat détestez-vous le plus ?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו שם הדמות הראשית בספר האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו שם המורה האהוב/ה עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו שם חיית המחמד האהובה עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מה היה שמו של חבר הילדות הטוב ביותר שלך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מה היתה תוכנית הטלוויזיה האהובה עליך בילדותך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מי הסופר האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו המאכל האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו הכינוי של בת/בן הזוג שלך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו שם הקבוצה האהובה עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"באיזה רחוב גדלת?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"באיזו עיר נולדת?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו הרכב האהוב עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"אם היית יכול לפגוש דמות מההיסטוריה, את מי היית רוצה לפגוש?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו שם הסרט הכי פחות אהוב עליך בכל הזמנים?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מי היה המורה הכי פחות אהוב/ה עליך?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="iw"><![CDATA[{"text":"מהו המאכל שאתה הכי לא אוהב?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Come si chiama il protagonista del tuo libro preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Come si chiama il tuo insegnante preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Come si chiama il tuo animale domestico preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Come si chiamava il tuo miglior amico dell'infanzia?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual era il tuo programma preferito da bambino?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il tuo autore preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il tuo cibo preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il soprannome del/della tuo/a partner?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è la tua squadra del cuore?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"In quale via sei cresciuto/a?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"In quale città sei nato/a?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il tuo mezzo di trasporto preferito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Se potessi incontrare un personaggio storico, chi sceglieresti?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il film che ti è piaciuto di meno in assoluto?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Quale insegnante amavi di meno?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="it"><![CDATA[{"text":"Qual è il cibo che odi di più?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"お気に入りの本の主人公の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"お気に入りの先生の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"お気に入りのペットの名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"子供の頃の親友の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"子供の頃好きだったテレビ番組は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"好きな作家は誰ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"好きな食べ物は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"パートナーのニックネームは何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"好きなチームは何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"あなたが育った通りの名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"あなたが生まれた市町村区の名前は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"お気に入りの車は何ですか」?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"歴史上の人物に会えるとしたら、誰に会いたいですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"これまでに見た中で嫌いな映画は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"嫌いな先生は誰でしたか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ja"><![CDATA[{"text":"一番嫌いな食べ物は何ですか?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is de naam van de hoofdpersoon in uw favoriete boek?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw favoriete leraar?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw favoriete huisdier?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is de naam van uw beste jeugdvriend?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat was uw favoriete tv-programma als kind?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wie is uw favoriete schrijver?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete eten?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is de bijnaam van uw partner?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete voetbalteam?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"In welke straat bent u opgegroeid?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"In welke stad of in welk dorp bent u geboren?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is uw favoriete voertuig?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Als u een bekende persoon uit het verleden zou kunnen ontmoeten, wie zou dat dan zijn?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wat is uw minst favoriete film aller tijden?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Wie was uw minst favoriete leraar?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="nl"><![CDATA[{"text":"Welk eten vindt u het minst lekker?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jak nazywa się główny bohater Twojej ulubionej książki?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jak nazywa się Twój ulubiony nauczyciel?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jak nazywa się Twój ulubiony zwierzak?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jak miał na imię Twój najlepszy kolega z dzieciństwa?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jaki był Twój ulubiony program telewizyjny w dzieciństwie?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Kto jest Twoim ulubionym pisarzem?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Co jest Twoją ulubioną potrawą?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jak brzmi przydomek Twojego partnera?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jaka jest Twoja ulubiona drużyna?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Na jakiej ulicy dorastałeś(-aś)?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jakie miasto jest miejscem Twojego urodzenia?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jaki jest Twój ulubiony pojazd?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Gdyby było możliwe spotkanie jakiejś historycznej postaci, kto by nią był?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jaki jest Twój ulubiony film wszechczasów?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Kto był Twoim najmniej lubianym nauczycielem?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pl"><![CDATA[{"text":"Jakiej potrawy najbardziej nie lubisz?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do personagem principal do seu livro favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do seu professor favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o nome do seu animal de estimação favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual era o nome do seu melhor amigo de infância?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual era seu programa de TV favorito quando criança?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Quem é seu autor favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu prato favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o apelido de seu(sua) companheiro(a)?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu time favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Em que rua você cresceu?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Em que cidade você nasceu?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é seu carro favorito?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Se você pudesse conhecer um personagem histórico, quem seria?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o filme de que você menos gostou até hoje?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual era o professor de quem você menos gostava?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="pt_BR"><![CDATA[{"text":"Qual é o prato de que você menos gosta?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Имя главного персонажа в вашей любимой книге.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Имя вашего любимого учителя.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Имя вашего любимого домашнего животного.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Имя вашего лучшего друга детства.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваше любимое шоу в детстве.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваш любимый автор.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваша любимая еда.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Как вы называете своего партнера?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваша любимая команда.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Улица, на которой вы выросли.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Город (населенный пункт), в котором вы родились.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваш любимый автомобиль.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"С кем из исторических персонажей вы бы хотели встретиться?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Самый нелюбимый вами фильм за все время.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Ваш самый нелюбимый учитель.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="ru"><![CDATA[{"text":"Еда, которая вам не нравится больше всего.","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad heter huvudpersonen i din favoritbok?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad heter din favoritlärare?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad heter ditt favorithusdjur?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad hette din bästa kompis när du var barn?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilket var ditt favoritprogram på TV när du var liten?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vem är din favoritförfattare?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilken är din favoriträtt?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad är din partners smeknamn?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilket lag håller du på?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vad hette gatan där du växte upp?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"I vilken stad är du född?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilket är ditt favoritfordon?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Om du kunde träffa en historisk person, vem skulle du välja?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilken film tycker du är historiens sämsta?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilken lärare tyckte du sämst om?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="sv"><![CDATA[{"text":"Vilken mat tycker du sämst om?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"在您最喜爱的书中,主人公叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的老师叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最喜爱的宠物叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您儿时的好友叫什么名字?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"孩提时代,您最喜欢的节目是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的作者是谁?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最爱吃的食物是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您伴侣的绰号是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最喜爱的球队是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您在哪条街道长大?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您出生在哪个城市/城镇?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最喜欢的交通工具是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"如果您可以穿越历史邂逅某个人物,此人会是谁?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"一直以来,您最不喜欢的电影是什么?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最不喜欢的老师是谁?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_CN"><![CDATA[{"text":"您最不爱吃哪种食物?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的書籍主角姓名?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的老師姓名?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的寵物名字?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您兒時摯友的姓名?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您小時候最喜歡的節目?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的作家?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的食物?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您伴侶的綽號?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的運動隊伍?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您在哪條街上長大的?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您出生的城市/城鎮?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最喜愛的交通工具?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"若您可以與歷史人物見面,會是哪一位歷史人物?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最不喜愛的電影?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最不喜愛的老師?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
+            <value locale="zh_TW"><![CDATA[{"text":"您最討厭的食物?","minLength":4,"maxLength":200,"adminDefined":true,"enforceWordlist":true,"maxQuestionCharsInAnswer":3}]]></value>
         </default>
     </setting>
     <setting hidden="false" key="challenge.requiredChallenges" level="1">

+ 5 - 2
server/src/test/java/password/pwm/config/PwmSettingTest.java

@@ -60,7 +60,7 @@ public class PwmSettingTest
                 .build();
         for ( final PwmSetting pwmSetting : PwmSetting.values() )
         {
-            System.out.println( pwmSetting.name() + " " + pwmSetting.getKey()  );
+            //System.out.println( pwmSetting.name() + " " + pwmSetting.getKey()  );
             for ( final PwmSettingTemplateSet templateSet : PwmSettingTemplateSet.allValues() )
             {
                 final StoredValue storedValue = pwmSetting.getDefaultValue( templateSet );
@@ -70,7 +70,10 @@ public class PwmSettingTest
                 storedValue.toXmlValues( StoredConfigXmlConstants.XML_ELEMENT_VALUE, outputSettings );
                 storedValue.validateValue( pwmSetting );
                 Assert.assertNotNull( storedValue.valueHash() );
-                JsonUtil.serialize( (Serializable) storedValue.toNativeObject() );
+                if ( storedValue.toNativeObject() != null )
+                {
+                    JsonUtil.serialize( ( Serializable ) storedValue.toNativeObject() );
+                }
             }
         }
     }

+ 1 - 1
server/src/test/java/password/pwm/svc/event/JsonAuditFormatterTest.java

@@ -53,7 +53,7 @@ public class JsonAuditFormatterTest
                 + "}";
 
         final UserAuditRecord auditRecord = JsonUtil.deserialize( jsonInput, AuditRecordData.class );
-        final String expectedOutput = PwmConstants.PWM_APP_NAME + " " + jsonInput;
+        final String expectedOutput = PwmConstants.PWM_APP_NAME + " " + JsonUtil.serialize( auditRecord );
         final AuditFormatter auditFormatter = new JsonAuditFormatter();
 
         final PwmApplication pwmApplication = TestHelper.makeTestPwmApplication( temporaryFolder.newFolder() );

+ 27 - 1
server/src/test/java/password/pwm/util/java/JsonUtilTest.java

@@ -24,8 +24,10 @@ import org.junit.Assert;
 import org.junit.Test;
 import password.pwm.bean.DomainID;
 import password.pwm.config.value.data.ActionConfiguration;
+import password.pwm.config.value.data.UserPermission;
 import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.ldap.PwmLdapVendor;
+import password.pwm.ldap.permission.UserPermissionType;
 import password.pwm.util.PasswordData;
 import password.pwm.util.secure.X509Utils;
 
@@ -38,6 +40,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.concurrent.atomic.LongAdder;
 
 
@@ -138,7 +141,7 @@ public class JsonUtilTest
         }
         final String json = JsonUtil.serializeCollection( srcList );
 
-        final List<ActionConfiguration> deserializedList = JsonUtil.deserialize( json, List.class, ActionConfiguration.class );
+        final List<ActionConfiguration> deserializedList = JsonUtil.deserializeList( json, ActionConfiguration.class );
 
         Assert.assertEquals( srcList, deserializedList );
     }
@@ -288,5 +291,28 @@ public class JsonUtilTest
             return string1;
         }
     }
+
+    @Test
+    public void deserializeUserPermissionTest()
+    {
+        {
+            final String json = "[{\"type\":\"ldapQuery\",\"ldapProfileID\":\"all\",\"ldapQuery\":\"(cn=asmith)\"}]";
+
+            final List<UserPermission> userPermission = JsonUtil.deserializeList( json, UserPermission.class );
+
+            Assert.assertEquals( UserPermissionType.ldapQuery, userPermission.get( 0 ).getType() );
+        }
+
+        {
+            final Map<String, Integer> map = Map.of(
+                    "J", 1,
+                    "JJ", 2,
+                    "JJJ", 3
+            );
+
+            final String json = JsonUtil.serializeMap( new TreeMap<>( map ), String.class, Integer.class );
+            Assert.assertEquals( "{\"J\":1,\"JJ\":2,\"JJJ\":3}", json );
+        }
+    }
 }