﻿<?xml version="1.0" encoding="utf-8"?><Root><Survey VersionNumber="2" VersionName="1.31.0"><SurveyID>7806e31d-9487-42c0-91fb-41bf7add74e3</SurveyID><OrgId>639e61ae-2ac4-48e0-9e5d-7890c4a2ef83</OrgId><SurveyName>Regular Expressions Sample</SurveyName><Description /><Sealed>False</Sealed><Creator>IrisGv</Creator><TimeCreated>635394497844230000</TimeCreated><TimeModified>635499276769885064</TimeModified><TimeSealed>635418084927230000</TimeSealed><Randomed>True</Randomed><HalfRandomed>False</HalfRandomed><NextQuestionID>13</NextQuestionID><ReadOnly>False</ReadOnly><Deleted>0</Deleted><ULAssembly /><ULClassName>SurveyToGo.UserLogic.Creator.SurveyLogicTempl</ULClassName><ULSource>&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;UserLogicContents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;Items&gt;
    &lt;HData&gt;
      &lt;HTp&gt;ehtQuestion&lt;/HTp&gt;
      &lt;STp&gt;estLast&lt;/STp&gt;
      &lt;CTp&gt;echtLast&lt;/CTp&gt;
      &lt;QTp&gt;eqhtValidationRule&lt;/QTp&gt;
      &lt;Key&gt;3&lt;/Key&gt;
      &lt;Name&gt;HandleQuestionValidate_3&lt;/Name&gt;
      &lt;Behv&gt;ecsbDefault&lt;/Behv&gt;
      &lt;QDep /&gt;
      &lt;CDep /&gt;
    &lt;/HData&gt;
    &lt;HData&gt;
      &lt;HTp&gt;ehtQuestion&lt;/HTp&gt;
      &lt;STp&gt;estLast&lt;/STp&gt;
      &lt;CTp&gt;echtLast&lt;/CTp&gt;
      &lt;QTp&gt;eqhtValidationRule&lt;/QTp&gt;
      &lt;Key&gt;2&lt;/Key&gt;
      &lt;Name&gt;HandleQuestionValidate_2&lt;/Name&gt;
      &lt;Behv&gt;ecsbDefault&lt;/Behv&gt;
      &lt;QDep /&gt;
      &lt;CDep /&gt;
    &lt;/HData&gt;
    &lt;HData&gt;
      &lt;HTp&gt;ehtQuestion&lt;/HTp&gt;
      &lt;STp&gt;estLast&lt;/STp&gt;
      &lt;CTp&gt;echtLast&lt;/CTp&gt;
      &lt;QTp&gt;eqhtValidationRule&lt;/QTp&gt;
      &lt;Key&gt;1&lt;/Key&gt;
      &lt;Name&gt;HandleQuestionValidate_1&lt;/Name&gt;
      &lt;Behv&gt;ecsbDefault&lt;/Behv&gt;
      &lt;QDep /&gt;
      &lt;CDep /&gt;
    &lt;/HData&gt;
    &lt;HData&gt;
      &lt;HTp&gt;ehtQuestion&lt;/HTp&gt;
      &lt;STp&gt;estLast&lt;/STp&gt;
      &lt;CTp&gt;echtLast&lt;/CTp&gt;
      &lt;QTp&gt;eqhtValidationRule&lt;/QTp&gt;
      &lt;Key&gt;0&lt;/Key&gt;
      &lt;Name&gt;HandleQuestionValidate_0&lt;/Name&gt;
      &lt;Behv&gt;ecsbDefault&lt;/Behv&gt;
      &lt;QDep /&gt;
      &lt;CDep /&gt;
    &lt;/HData&gt;
    &lt;HData&gt;
      &lt;HTp&gt;ehtQuestion&lt;/HTp&gt;
      &lt;STp&gt;estLast&lt;/STp&gt;
      &lt;CTp&gt;echtLast&lt;/CTp&gt;
      &lt;QTp&gt;eqhtStart&lt;/QTp&gt;
      &lt;Key&gt;4&lt;/Key&gt;
      &lt;Name&gt;QuestionStart_4&lt;/Name&gt;
      &lt;Behv&gt;ecsbDefault&lt;/Behv&gt;
      &lt;QDep /&gt;
      &lt;CDep /&gt;
    &lt;/HData&gt;
  &lt;/Items&gt;
  &lt;Source&gt;	function StartSurvey()
	{
		/*_@_SS_START_@*/

		/*_@_SS_END_@*/
	}

	/*_@_USERCODE_START_@*/
function toInt(number) 
{
	return number &amp;amp;&amp;amp; + number | 0 || 0;
}

function TNS_random(min,max)
{
	return Math.floor(Math.random()*(max-min+1)+min);
}

/*
Генерирует трёхзначное случайное число (от 100 до 999)
*/

function TNS_rand(){
	return Math.floor(Math.random()*(999-100+1)+100);
}
function TNS_rand3()
{
	return TNS_rand();
}

/*
Генерирует случайное 4х значное число
*/

function TNS_listID(){
	var id = Math.floor(Math.random()*(9999-1000+1)+1000);
	return id;
}
function TNS_rand4()
{
	return TNS_listID();
}

function TNS_rand2()
{
	var id = Math.floor(Math.random()*(1-0+1)+0);
	return id;
}

/*
Перемешиваем массив
*/
function TNS_shuffle(o)
{
	for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
	return o;
}

/*
Перемешивание элементов массива случайным образом
*/
function TNS_RandomizeArray(inputarray) 
{
	var currentIndex = inputarray.length, temporaryValue, randomIndex;
  	// While there remain elements to shuffle...
  	while (0 !== currentIndex) 
	{
	   	// Pick a remaining element...
    	randomIndex = Math.floor(Math.random() * currentIndex);
    	currentIndex -= 1;
    	// And swap it with the current element.
    	temporaryValue = inputarray[currentIndex];
    	inputarray[currentIndex] = inputarray[randomIndex];
    	inputarray[randomIndex] = temporaryValue;	
	}
	return inputarray;
}

/*
Этот скрипт показывает (и скрывает все остальные) или скрывает 
определённую последовательность ответов (от "chainStart" до "chainStop") 
для определённого ответа ("answerIdx") в другом вопросе ("controlQuestion"). 

Может использоваться только в Question Start Script.

Пример: Demo Customer -&amp;gt; Temp -&amp;gt; big_list_visibility_test
*/

function TNS_ChainVisibility(controlQuestion,answerIdx,chainStart,chainStop,tOrF) {
	
	var retVal=false
	
	if (Answer(controlQuestion)==answerIdx) {
		
		SetAnswerVisible(CurrQues,!tOrF);  
		
		for (var i=chainStart;i&amp;lt;=chainStop;i++) {
			SetAnswerVisible(CurrQues,i,tOrF)
		}
		
		retVal=true
	}
	
	return retVal
}

/*Для клиники пытаюсь отображать ответы в нужном порядке*/
function TNS_SetQuesOrder(controlQuestion,variant0) 
{
	var retVal=false;
	if (variant0==8)
	{
		switch(Answer(controlQuestion).ToInt())
		{
			case 1: RandomizeAnswers(CurrQues,[1,2,3,4,5,6,7,8]); break;
			case 2: RandomizeAnswers(CurrQues,[4,1,2,3,5,6,7,8]); break;
			case 3: RandomizeAnswers(CurrQues,[3,4,1,2,5,6,7,8]); break;
			case 4: RandomizeAnswers(CurrQues,[2,3,4,1,5,6,7,8]); break;
			case 5: RandomizeAnswers(CurrQues,[4,5,6,7,1,2,3,8]); break;
			case 6: RandomizeAnswers(CurrQues,[7,4,5,6,1,2,3,8]); break;
			case 7: RandomizeAnswers(CurrQues,[6,7,4,5,1,2,3,8]); break;
			case 8: RandomizeAnswers(CurrQues,[5,6,7,4,1,2,3,8]); break;
		}
		retVal=true;
	}
	if (variant0==7)
	{
		switch(Answer(controlQuestion).ToInt())
		{
			case 1: RandomizeAnswers(CurrQues,[1,2,3,4,5,6,7]); break;
			case 2: RandomizeAnswers(CurrQues,[4,1,2,3,5,6,7]); break;
			case 3: RandomizeAnswers(CurrQues,[3,4,1,2,5,6,7]); break;
			case 4: RandomizeAnswers(CurrQues,[2,3,4,1,5,6,7]); break;
			case 5: RandomizeAnswers(CurrQues,[4,5,6,7,1,2,3]); break;
			case 6: RandomizeAnswers(CurrQues,[7,4,5,6,1,2,3]); break;
			case 7: RandomizeAnswers(CurrQues,[6,7,4,5,1,2,3]); break;
			case 8: RandomizeAnswers(CurrQues,[5,6,7,4,1,2,3]); break;
		}
		retVal=true;
	}	
	return retVal;
}

function TNS_SetQuesOrderEx(whatQuestion,controlQuestion,variant0) 
{
	var retVal=false;
	if (variant0==8)
	{
		switch(Answer(controlQuestion).ToInt())
		{
			case 1: RandomizeAnswers(whatQuestion,[1,2,3,4,5,6,7,8]); break;
			case 2: RandomizeAnswers(whatQuestion,[4,1,2,3,5,6,7,8]); break;
			case 3: RandomizeAnswers(whatQuestion,[3,4,1,2,5,6,7,8]); break;
			case 4: RandomizeAnswers(whatQuestion,[2,3,4,1,5,6,7,8]); break;
			case 5: RandomizeAnswers(whatQuestion,[4,5,6,7,1,2,3,8]); break;
			case 6: RandomizeAnswers(whatQuestion,[7,4,5,6,1,2,3,8]); break;
			case 7: RandomizeAnswers(whatQuestion,[6,7,4,5,1,2,3,8]); break;
			case 8: RandomizeAnswers(whatQuestion,[5,6,7,4,1,2,3,8]); break;
		}
		retVal=true;
	}
	if (variant0==7)
	{
		switch(Answer(controlQuestion).ToInt())
		{
			case 1: RandomizeAnswers(whatQuestion,[1,2,3,4,5,6,7]); break;
			case 2: RandomizeAnswers(whatQuestion,[4,1,2,3,5,6,7]); break;
			case 3: RandomizeAnswers(whatQuestion,[3,4,1,2,5,6,7]); break;
			case 4: RandomizeAnswers(whatQuestion,[2,3,4,1,5,6,7]); break;
			case 5: RandomizeAnswers(whatQuestion,[4,5,6,7,1,2,3]); break;
			case 6: RandomizeAnswers(whatQuestion,[7,4,5,6,1,2,3]); break;
			case 7: RandomizeAnswers(whatQuestion,[6,7,4,5,1,2,3]); break;
			case 8: RandomizeAnswers(whatQuestion,[5,6,7,4,1,2,3]); break;
		}
		retVal=true;
	}	
	return retVal;
}

/*
Скрывает или показывает определённую последовательность вариантов ответов
*/

function TNS_ChainVisibilityUni(QuestionIdx,chainStart,chainStop,tOrF) {
	
	var retVal=false
		
	for (var i=chainStart;i&amp;lt;=chainStop;i++) {
		SetAnswerVisible(QuestionIdx,i,tOrF)
	}
		
	retVal=true
	
	return retVal
}

/*
Для Nokia хитрый фильтр
*/

function TNS_tryCorE(start,end,q1,q2,q3){
	var retVal = false;
	
	for (var i=start;i&amp;lt;=end;i++){
		if (ContainsAnyIter(q1,i)) {
			retVal = true;
			break;
		};
		if (Contains(q2,i)) {
			retVal = true;
			break;
		};
		if (Contains(q3,i)) {
			retVal = true;
			break;
		};
	}
	
	return retVal;
};

/*
Этот скрипт фильтрует ответы по первым n символам ("symbolN") ответа 
в другом вопросе ("controlQuestion"). Например список с марками 
сигарет (Kent, Marlboro), а в следующем вопросе различные вариации 
(Kent HD, Kent SuperSlims, Marlboro Classic, Marlboro Mint)

Может использоваться только в Question Start Script.

Пример: Demo Customer -&amp;gt; Temp -&amp;gt; FF Moscow &amp;amp; Spb TEST вопрос (21)
*/


function TNS_TextControl(controlQuestion,symbolN) {

	var retVal=false
	
	SetAnswerVisible(CurrQues,false)

	var currCount=GetAnswerCount(CurrQues)
	var ansText=AnswerText(controlQuestion,Answer(controlQuestion)).substring(0,symbolN)

	for (var i=1;i&amp;lt;=currCount;i++) {
		var currText=AnswerText(CurrQues,i).substring(0,symbolN)
		SetAnswerVisible(CurrQues,i,ansText==currText)
		if (ansText==currText) retVal=true
	}
	
	return retVal

}

/*
Тоже самое, только круче (сам находитн нужный отрезок текста, требуется только указать вопрос)

Пример: Demo Customer -&amp;gt; Temp -&amp;gt; FF Moscow &amp;amp; Spb TEST вопрос (21)
*/

function TNS_TextControlAuto(controlQuestion) {

	var retVal = [];
	
	SetAnswerVisible(CurrQues,false)

	var currCount=GetAnswerCount(CurrQues)
	var ansText=AnswerText(controlQuestion,Answer(controlQuestion))
	
	var divider=['/','-'] //список можно дополнять
	
	for (var i=0;i&amp;lt;=divider.length;i++) {
		if (ansText.indexOf(divider[i])!=-1) {
			ansText=ansText.slice(0,ansText.indexOf(divider[i])-1) 
		}
	}
	
	for (var i=1;i&amp;lt;=currCount;i++) {
		var currText=AnswerText(CurrQues,i).substring(0,ansText.length)
		SetAnswerVisible(CurrQues,i,ansText==currText)
		if (ansText==currText) retVal.push(i);
	}
	
	return retVal

}

/*
Тоже самое, только только без учёта регистра

Пример: Demo Customer -&amp;gt; Temp -&amp;gt; FF Moscow &amp;amp; Spb TEST вопрос (21)
*/

function TNS_TextControlAutoNotCaseSensitive(controlQuestion) 
{

	var retVal = [];
	
	SetAnswerVisible(CurrQues,false);

	var currCount=GetAnswerCount(CurrQues);
	var ansText=AnswerText(controlQuestion,Answer(controlQuestion)).toUpperCase();
	
	var divider=['/','-']; //список можно дополнять
	
	for (var i=0;i&amp;lt;=divider.length;i++) 
	{
		if (ansText.indexOf(divider[i])!=-1) 
		{
			ansText=ansText.slice(0,ansText.indexOf(divider[i])-1);
		}
	}
	
	for (var i=1;i&amp;lt;=currCount;i++)
	{
		var currText=AnswerText(CurrQues,i).substring(0,ansText.length).toUpperCase();
		SetAnswerVisible(CurrQues,i,ansText==currText);
		if (ansText==currText) retVal.push(i);
	}
	
	return retVal;

}

/*
Функция для сортировки ответов в данном вопросе по AnswerCode ответа в RefQues.
Очень удобно для сигаретных опросов.
*/

function TNS_AnsCodeFilter(RefQues) {
	
	SetAnswerVisible(CurrQues,false)
	
	var retVal = [];
	
	var CurrAnsCount=GetAnswerCount(CurrQues)
	var RefQuesAnsCode=AnswerCode(RefQues,Answer(RefQues))
	
	for (var i=1;i&amp;lt;=CurrAnsCount;i++) {
		var CurrAnsCode=AnswerCode(CurrQues,i).substring(0,RefQuesAnsCode.length)
		SetAnswerVisible(CurrQues,i,CurrAnsCode==RefQuesAnsCode)
		if (CurrAnsCode==RefQuesAnsCode) retVal.push(i);
	}
	
	return retVal
}

/*Скрипт для генерации контрольного числа Верхуффа*/

function generateCheckSum(array){
	var c=0;
	
	var invertedArray=[];
	
	var d=[
		   [0,1,2,3,4,5,6,7,8,9],
		   [1,2,3,4,0,6,7,8,9,5],
		   [2,3,4,0,1,7,8,9,5,6],
		   [3,4,0,1,2,8,9,5,6,7],
		   [4,0,1,2,3,9,5,6,7,8],
		   [5,9,8,7,6,0,4,3,2,1],
		   [6,5,9,8,7,1,0,4,3,2],
		   [7,6,5,9,8,2,1,0,4,3],
		   [8,7,6,5,9,3,2,1,0,4],
		   [9,8,7,6,5,4,3,2,1,0]
		];

	var p=[
	       [0,1,2,3,4,5,6,7,8,9],
	       [1,5,7,6,2,8,3,0,9,4],
	       [5,8,0,3,7,9,6,1,4,2],
	       [8,9,1,6,0,4,3,5,2,7],
	       [9,4,5,3,1,2,6,8,7,0],
	       [4,2,8,6,5,7,3,9,0,1],
	       [2,7,9,3,8,0,6,4,1,5],
	       [7,0,4,6,9,1,3,2,5,8]
	    ];
	
	var inv=[0, 4, 3, 2, 1, 5, 6, 7, 8, 9];
	
	for (var i=array.length-1;i&amp;gt;=0;i--){
		invertedArray.push(array[i]);
	}
	
	for (var i=0;i&amp;lt;invertedArray.length-1;i++){
		c=d[c][p[((i+1)%8)][invertedArray[i]]];
	}
	
//	array.push(c);
	
	return inv[c];
}

/*Скрипт для кодирования временного промежутка для уникального кода интервью*/

function returnTimeDiff(timeDiff){
	var timeCode=[
		["К","Б","А"],
		["У","Э"],
		["Е","И"],
		["Р","Т"],
		["Л","С","Я"]
	];
	var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
	var rndTimeIdx=Math.floor((Math.random()*100)+1);
	var rndLetterIdx=Math.floor(Math.random()*10);
	
	var text=new String();	
	var i,j;
	
	if (timeDiff&amp;lt;1){
		i=0;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	} else if (timeDiff&amp;gt;=1 &amp;amp;&amp;amp; timeDiff&amp;lt;3){
		i=1;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=3 &amp;amp;&amp;amp; timeDiff&amp;lt;4){
		i=2;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=4 &amp;amp;&amp;amp; timeDiff&amp;lt;5){
		i=3;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=5){
		i=4;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	};
	
	text=rndLetter[rndLetterIdx]+timeCode[i][j];
		
	return text;
}

function returnTimeDiff_BLM(timeDiff){
	var timeCode=[
		["К","Б","А"],
		["У","Э"],
		["Е","И"],
		["Р","Т"],
		["Л","С","Я"]
	];
	var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
	var rndTimeIdx=Math.floor((Math.random()*100)+1);
	var rndLetterIdx=Math.floor(Math.random()*10);
	
	var text=new String();	
	var i,j;
	
	if (timeDiff&amp;lt;1){
		i=0;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	} else if (timeDiff&amp;gt;=1 &amp;amp;&amp;amp; timeDiff&amp;lt;3){
		i=1;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=3 &amp;amp;&amp;amp; timeDiff&amp;lt;6){
		i=2;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=6 &amp;amp;&amp;amp; timeDiff&amp;lt;10){
		i=3;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=10){
		i=4;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	};
	
	text=rndLetter[rndLetterIdx]+timeCode[i][j];
		
	return text;
}

/*

***********************************************************************
** Универсальный скрипт для генерации кода, использовать ТОЛЬКО его! **
***********************************************************************

*/
function returnTimeDiff_Uni1(timeDiff){
	var timeCode=[
		["К","Б"],
		["У","Э"],
		["Е","И"],
		["Р","Т"],
		["Л","С"],
		["А","Я"]
	];
	var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
	var rndTimeIdx=Math.floor((Math.random()*100)+1);
	var rndLetterIdx=Math.floor(Math.random()*10);
/*3,7,12,17,25,*/	
	var t1=3;
	var t2=7;
	var t3=12;
	var t4=17;
	var t5=25;	
	var text=new String();	
	var i,j;
	
	if (timeDiff&amp;lt;t1){
		i=0;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t1 &amp;amp;&amp;amp; timeDiff&amp;lt;t2){
		i=1;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t2 &amp;amp;&amp;amp; timeDiff&amp;lt;t3){
		i=2;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t3 &amp;amp;&amp;amp; timeDiff&amp;lt;t4){
		i=3;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	}else if (timeDiff&amp;gt;=t4 &amp;amp;&amp;amp; timeDiff&amp;lt;t5){
		i=4;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	}
	else if (timeDiff&amp;gt;=t5){
		i=5;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	};
	
	text=rndLetter[rndLetterIdx]+timeCode[i][j];
		
	return text;
}

function returnTimeDiff_Uni(timeDiff,t1,t2,t3,t4){
	var timeCode=[
		["К","Б","А"],
		["У","Э"],
		["Е","И"],
		["Р","Т"],
		["Л","С","Я"]
	];
	var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
	var rndTimeIdx=Math.floor((Math.random()*100)+1);
	var rndLetterIdx=Math.floor(Math.random()*10);
	
	var text=new String();	
	var i,j;
	
	if (timeDiff&amp;lt;t1){
		i=0;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	} else if (timeDiff&amp;gt;=t1 &amp;amp;&amp;amp; timeDiff&amp;lt;t2){
		i=1;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t2 &amp;amp;&amp;amp; timeDiff&amp;lt;t3){
		i=2;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t3 &amp;amp;&amp;amp; timeDiff&amp;lt;t4){
		i=3;
		if (rndTimeIdx&amp;lt;=50){
			j=0;
		} else if (rndTimeIdx&amp;gt;50) {
			j=1;
		};
	} else if (timeDiff&amp;gt;=t4){
		i=4;
		if (rndTimeIdx&amp;lt;33){
			j=0;
		} else if (rndTimeIdx&amp;gt;=33 &amp;amp;&amp;amp; rndTimeIdx&amp;lt;66) {
			j=1;
		} else if (rndTimeIdx&amp;gt;=66) {
			j=2;
		};
	};
	
	text=rndLetter[rndLetterIdx]+timeCode[i][j];
		
	return text;
}

/*Скрипт для декодирования уникального кода интервью*/

function decodeArray(text){
	var array=[];
	var dcArray=[];
	var rndLetter=["А","Б","Е","И","К","Л","Р","С","Т","У"];
	var letter = /^[А-Я]/;
	var number = /^[0-9]/;
	var flag=false;
	
	for (var i=0;i&amp;lt;=text.length-1;i++){
		if (text.charAt(i).match(letter)||text.charAt(i).match(number)){
				array.push(text.charAt(i).toString());
		};
	};

	for (var i=0;i&amp;lt;=array.length-1;i++){
		if (array[i].match(number)){
			dcArray.push(array[i]);
		} else if (array[i].match(letter)) {
			if (!flag) {
				for (var j=0;j&amp;lt;=rndLetter.length-1;j++){
					if (array[i]==rndLetter[j]){
						dcArray.push(j);
						break;
					};
				};
				flag=true;
			} else {
				switch (array[i]) {
					case "К":
					case "Б":
					case "А":
						dcArray.push(1);
						break;
					case "У":
					case "Э":
						dcArray.push(2);
						break;
					case "Е":
					case "И":
						dcArray.push(3);
						break;
					case "Р":
					case "Т":
						dcArray.push(4);
						break;
					case "Л":
					case "С":
					case "Я":
						dcArray.push(5);
						break;
					default:
						dcArray.push(0);
						break;
				};
			};
		};
	};
	
	return dcArray;
}

/*
Выдаётся индекс модели по букве (CarClinic)
*/
function TNS_GetModelCodeByLetter(ModelLetter) 
{
	var ModelCode=0;
	ModelCode=ModelLetter=="K"?1:ModelCode;
	ModelCode=ModelLetter=="U"?2:ModelCode;
	ModelCode=ModelLetter=="L"?3:ModelCode;
	ModelCode=ModelLetter=="N"?4:ModelCode;
	ModelCode=ModelLetter=="R"?5:ModelCode;
	ModelCode=ModelLetter=="P"?6:ModelCode;
	return ModelCode
}

/*скрипт для кодировки промежутков (типа age_code)*/

function TNS_intCoder(QIndex,Arr){
//////////////////////
}

/* содержится ли элемент n в массиве arr */

function TNS_contains(arr,n) {
    var i = arr.length;
    while (i--) {
        if (arr[i] == n) {
            return true;
        }
    }
    return false;
}

/*** Для GSC  ***/
function TNS_GCS_isinSKU(skuQuestion,xQuestion,i) {
	var xcode=AnswerCode(xQuestion,i).toString();
	var retVal=false;
	for (var j=1;j&amp;lt;=GetAnswerCount(skuQuestion);j++)
	{
		if (xcode==AnswerCode(skuQuestion,j).toString().substring(0,3) &amp;amp;&amp;amp; Contains(skuQuestion,j))
		{
			retVal=true;
			continue;
		}
	}
	return retVal;
}

/*** Для GSC первычисление кодов из sku в house ***/

function TNS_RecalcSKU(inCode) {

	var retVal = -1;

if (inCode=9003) retVal=1;
if (inCode=9001) retVal=2;
if (inCode=9002) retVal=2;
if (inCode=9253) retVal=3;
if (inCode=9329) retVal=4;
if (inCode=1011) retVal=5;
if (inCode=1012) retVal=5;
if (inCode=1013) retVal=5;
if (inCode=1015) retVal=5;
if (inCode=1021) retVal=5;
if (inCode=1031) retVal=5;
if (inCode=9398) retVal=6;
if (inCode=9021) retVal=7;
if (inCode=9022) retVal=7;
if (inCode=9004) retVal=8;
if (inCode=9023) retVal=9;
if (inCode=9383) retVal=10;
if (inCode=9351) retVal=11;
if (inCode=9352) retVal=11;
if (inCode=1111) retVal=12;
if (inCode=1112) retVal=12;
if (inCode=1113) retVal=12;
if (inCode=1121) retVal=12;
if (inCode=1122) retVal=12;
if (inCode=1131) retVal=12;
if (inCode=1141) retVal=12;
if (inCode=9364) retVal=13;
if (inCode=9254) retVal=14;
if (inCode=9255) retVal=15;
if (inCode=9005) retVal=16;
if (inCode=9298) retVal=17;
if (inCode=9006) retVal=18;
if (inCode=9007) retVal=18;
if (inCode=9008) retVal=18;
if (inCode=9009) retVal=19;
if (inCode=9010) retVal=19;
if (inCode=9011) retVal=19;
if (inCode=9012) retVal=19;
if (inCode=9380) retVal=19;
if (inCode=9013) retVal=20;
if (inCode=9014) retVal=20;
if (inCode=9015) retVal=20;
if (inCode=1311) retVal=21;
if (inCode=1312) retVal=21;
if (inCode=1313) retVal=21;
if (inCode=1314) retVal=21;
if (inCode=1321) retVal=21;
if (inCode=1322) retVal=21;
if (inCode=9291) retVal=22;
if (inCode=9016) retVal=23;
if (inCode=9017) retVal=23;
if (inCode=9018) retVal=23;
if (inCode=9019) retVal=24;
if (inCode=9020) retVal=25;
if (inCode=9256) retVal=26;
if (inCode=9257) retVal=26;
if (inCode=9233) retVal=27;
if (inCode=9373) retVal=28;
if (inCode=9386) retVal=28;
if (inCode=1411) retVal=29;
if (inCode=1413) retVal=29;
if (inCode=1414) retVal=29;
if (inCode=9210) retVal=30;
if (inCode=9226) retVal=31;
if (inCode=9024) retVal=32;
if (inCode=9025) retVal=33;
if (inCode=9026) retVal=34;
if (inCode=9361) retVal=35;
if (inCode=9372) retVal=35;
if (inCode=9238) retVal=36;
if (inCode=9343) retVal=37;
if (inCode=1511) retVal=38;
if (inCode=1512) retVal=38;
if (inCode=1513) retVal=38;
if (inCode=1531) retVal=38;
if (inCode=1541) retVal=38;
if (inCode=1551) retVal=38;
if (inCode=1552) retVal=38;
if (inCode=1561) retVal=38;
if (inCode=1562) retVal=38;
if (inCode=9258) retVal=39;
if (inCode=9307) retVal=40;
if (inCode=9309) retVal=41;
if (inCode=9310) retVal=41;
if (inCode=9311) retVal=41;
if (inCode=9312) retVal=41;
if (inCode=9313) retVal=41;
if (inCode=9027) retVal=42;
if (inCode=9028) retVal=42;
if (inCode=9029) retVal=42;
if (inCode=7311) retVal=43;
if (inCode=7312) retVal=43;
if (inCode=9033) retVal=44;
if (inCode=9397) retVal=45;
if (inCode=6111) retVal=46;
if (inCode=6113) retVal=46;
if (inCode=6114) retVal=46;
if (inCode=9234) retVal=47;
if (inCode=9259) retVal=48;
if (inCode=9235) retVal=49;
if (inCode=9196) retVal=50;
if (inCode=9197) retVal=50;
if (inCode=6411) retVal=51;
if (inCode=6412) retVal=51;
if (inCode=6413) retVal=51;
if (inCode=6414) retVal=51;
if (inCode=6421) retVal=51;
if (inCode=6422) retVal=51;
if (inCode=6423) retVal=51;
if (inCode=6431) retVal=51;
if (inCode=6432) retVal=51;
if (inCode=6433) retVal=51;
if (inCode=6441) retVal=51;
if (inCode=6442) retVal=51;
if (inCode=6443) retVal=51;
if (inCode=6451) retVal=51;
if (inCode=6461) retVal=51;
if (inCode=6471) retVal=51;
if (inCode=6472) retVal=51;
if (inCode=6473) retVal=51;
if (inCode=6481) retVal=51;
if (inCode=6482) retVal=51;
if (inCode=6491) retVal=51;
if (inCode=6492) retVal=51;
if (inCode=6493) retVal=51;
if (inCode=7001) retVal=52;
if (inCode=7002) retVal=52;
if (inCode=7003) retVal=52;
if (inCode=6511) retVal=53;
if (inCode=6512) retVal=53;
if (inCode=6513) retVal=53;
if (inCode=6514) retVal=53;
if (inCode=6515) retVal=53;
if (inCode=6521) retVal=53;
if (inCode=6522) retVal=53;
if (inCode=6523) retVal=53;
if (inCode=6524) retVal=53;
if (inCode=6531) retVal=53;
if (inCode=6532) retVal=53;
if (inCode=6533) retVal=53;
if (inCode=6534) retVal=53;
if (inCode=6541) retVal=53;
if (inCode=6542) retVal=53;
if (inCode=6543) retVal=53;
if (inCode=6551) retVal=53;
if (inCode=6552) retVal=53;
if (inCode=6561) retVal=53;
if (inCode=6562) retVal=53;
if (inCode=9289) retVal=54;
if (inCode=9290) retVal=54;
if (inCode=6221) retVal=55;
if (inCode=6222) retVal=55;
if (inCode=6223) retVal=55;
if (inCode=6311) retVal=56;
if (inCode=6312) retVal=56;
if (inCode=6313) retVal=56;
if (inCode=6321) retVal=56;
if (inCode=6322) retVal=56;
if (inCode=6323) retVal=56;
if (inCode=6324) retVal=56;
if (inCode=6331) retVal=56;
if (inCode=6332) retVal=56;
if (inCode=6341) retVal=56;
if (inCode=6342) retVal=56;
if (inCode=9260) retVal=57;
if (inCode=9287) retVal=58;
if (inCode=9213) retVal=59;
if (inCode=9261) retVal=60;
if (inCode=9363) retVal=61;
if (inCode=9236) retVal=62;
if (inCode=9095) retVal=63;
if (inCode=9096) retVal=63;
if (inCode=9088) retVal=64;
if (inCode=2711) retVal=65;
if (inCode=2712) retVal=65;
if (inCode=2713) retVal=65;
if (inCode=2714) retVal=65;
if (inCode=2722) retVal=65;
if (inCode=2723) retVal=65;
if (inCode=2731) retVal=65;
if (inCode=2732) retVal=65;
if (inCode=2733) retVal=65;
if (inCode=2734) retVal=65;
if (inCode=2751) retVal=65;
if (inCode=2752) retVal=65;
if (inCode=2811) retVal=66;
if (inCode=2812) retVal=66;
if (inCode=2813) retVal=66;
if (inCode=9262) retVal=67;
if (inCode=9089) retVal=68;
if (inCode=9090) retVal=69;
if (inCode=9091) retVal=69;
if (inCode=9092) retVal=69;
if (inCode=9330) retVal=70;
if (inCode=9083) retVal=71;
if (inCode=9084) retVal=71;
if (inCode=9085) retVal=71;
if (inCode=9093) retVal=72;
if (inCode=9094) retVal=72;
if (inCode=9359) retVal=73;
if (inCode=9263) retVal=74;
if (inCode=2101) retVal=75;
if (inCode=2102) retVal=75;
if (inCode=2134) retVal=75;
if (inCode=2135) retVal=75;
if (inCode=2151) retVal=75;
if (inCode=2152) retVal=75;
if (inCode=2153) retVal=75;
if (inCode=2161) retVal=75;
if (inCode=2162) retVal=75;
if (inCode=2163) retVal=75;
if (inCode=2171) retVal=75;
if (inCode=2172) retVal=75;
if (inCode=2181) retVal=75;
if (inCode=2182) retVal=75;
if (inCode=2183) retVal=75;
if (inCode=2191) retVal=75;
if (inCode=2192) retVal=75;
if (inCode=2011) retVal=76;
if (inCode=2012) retVal=76;
if (inCode=9371) retVal=77;
if (inCode=9323) retVal=78;
if (inCode=2411) retVal=79;
if (inCode=2412) retVal=79;
if (inCode=2413) retVal=79;
if (inCode=2414) retVal=79;
if (inCode=2421) retVal=79;
if (inCode=2422) retVal=79;
if (inCode=2423) retVal=79;
if (inCode=2424) retVal=79;
if (inCode=9396) retVal=80;
if (inCode=9237) retVal=81;
if (inCode=9360) retVal=82;
if (inCode=9314) retVal=83;
if (inCode=9316) retVal=84;
if (inCode=9337) retVal=85;
if (inCode=9336) retVal=86;
if (inCode=2341) retVal=87;
if (inCode=2342) retVal=87;
if (inCode=2343) retVal=87;
if (inCode=2344) retVal=87;
if (inCode=2351) retVal=87;
if (inCode=9230) retVal=88;
if (inCode=9054) retVal=89;
if (inCode=9239) retVal=90;
if (inCode=9055) retVal=91;
if (inCode=9056) retVal=91;
if (inCode=9057) retVal=92;
if (inCode=9058) retVal=92;
if (inCode=9368) retVal=92;
if (inCode=9059) retVal=93;
if (inCode=9060) retVal=93;
if (inCode=9061) retVal=93;
if (inCode=9240) retVal=94;
if (inCode=2211) retVal=95;
if (inCode=2212) retVal=95;
if (inCode=2221) retVal=95;
if (inCode=9264) retVal=96;
if (inCode=9367) retVal=97;
if (inCode=9065) retVal=98;
if (inCode=9358) retVal=99;
if (inCode=9319) retVal=100;
if (inCode=2511) retVal=101;
if (inCode=2512) retVal=101;
if (inCode=2513) retVal=101;
if (inCode=2514) retVal=101;
if (inCode=2515) retVal=101;
if (inCode=2516) retVal=101;
if (inCode=2517) retVal=101;
if (inCode=2518) retVal=101;
if (inCode=2519) retVal=101;
if (inCode=2520) retVal=101;
if (inCode=2521) retVal=101;
if (inCode=2531) retVal=101;
if (inCode=2532) retVal=101;
if (inCode=2541) retVal=101;
if (inCode=2542) retVal=101;
if (inCode=2543) retVal=101;
if (inCode=2544) retVal=101;
if (inCode=2545) retVal=101;
if (inCode=2551) retVal=101;
if (inCode=2552) retVal=101;
if (inCode=9292) retVal=102;
if (inCode=9087) retVal=103;
if (inCode=9382) retVal=103;
if (inCode=9204) retVal=104;
if (inCode=9205) retVal=104;
if (inCode=9206) retVal=104;
if (inCode=9203) retVal=105;
if (inCode=6811) retVal=106;
if (inCode=6812) retVal=106;
if (inCode=6813) retVal=106;
if (inCode=6814) retVal=106;
if (inCode=6911) retVal=107;
if (inCode=6912) retVal=107;
if (inCode=9201) retVal=108;
if (inCode=9202) retVal=108;
if (inCode=9344) retVal=109;
if (inCode=9097) retVal=110;
if (inCode=9098) retVal=110;
if (inCode=2611) retVal=111;
if (inCode=2612) retVal=111;
if (inCode=2613) retVal=111;
if (inCode=2621) retVal=111;
if (inCode=9265) retVal=112;
if (inCode=9099) retVal=113;
if (inCode=9306) retVal=114;
if (inCode=9100) retVal=115;
if (inCode=9101) retVal=115;
if (inCode=9102) retVal=115;
if (inCode=9103) retVal=115;
if (inCode=9304) retVal=116;
if (inCode=9305) retVal=116;
if (inCode=9104) retVal=117;
if (inCode=9105) retVal=118;
if (inCode=9362) retVal=119;
if (inCode=9334) retVal=120;
if (inCode=9328) retVal=121;
if (inCode=9266) retVal=122;
if (inCode=9106) retVal=123;
if (inCode=9107) retVal=123;
if (inCode=9108) retVal=123;
if (inCode=1711) retVal=124;
if (inCode=1712) retVal=124;
if (inCode=9109) retVal=125;
if (inCode=9110) retVal=125;
if (inCode=9111) retVal=125;
if (inCode=9034) retVal=126;
if (inCode=9035) retVal=126;
if (inCode=9036) retVal=126;
if (inCode=9037) retVal=126;
if (inCode=9038) retVal=126;
if (inCode=9315) retVal=127;
if (inCode=2921) retVal=128;
if (inCode=2922) retVal=128;
if (inCode=2923) retVal=128;
if (inCode=2931) retVal=128;
if (inCode=2932) retVal=128;
if (inCode=2933) retVal=128;
if (inCode=2934) retVal=128;
if (inCode=2941) retVal=128;
if (inCode=2942) retVal=128;
if (inCode=2943) retVal=128;
if (inCode=2944) retVal=128;
if (inCode=2951) retVal=128;
if (inCode=2952) retVal=128;
if (inCode=2953) retVal=128;
if (inCode=2961) retVal=128;
if (inCode=2962) retVal=128;
if (inCode=2963) retVal=128;
if (inCode=2971) retVal=128;
if (inCode=2972) retVal=128;
if (inCode=2981) retVal=128;
if (inCode=2982) retVal=128;
if (inCode=3011) retVal=129;
if (inCode=3012) retVal=129;
if (inCode=3013) retVal=129;
if (inCode=3014) retVal=129;
if (inCode=3031) retVal=129;
if (inCode=3032) retVal=129;
if (inCode=3033) retVal=129;
if (inCode=3021) retVal=129;
if (inCode=3022) retVal=129;
if (inCode=3023) retVal=129;
if (inCode=3024) retVal=129;
if (inCode=9321) retVal=130;
if (inCode=9045) retVal=131;
if (inCode=9267) retVal=132;
if (inCode=9112) retVal=133;
if (inCode=9211) retVal=134;
if (inCode=9376) retVal=134;
if (inCode=9338) retVal=135;
if (inCode=9046) retVal=136;
if (inCode=9047) retVal=136;
if (inCode=9048) retVal=136;
if (inCode=9049) retVal=136;
if (inCode=9050) retVal=136;
if (inCode=9051) retVal=136;
if (inCode=9052) retVal=136;
if (inCode=9053) retVal=136;
if (inCode=7511) retVal=137;
if (inCode=7512) retVal=137;
if (inCode=7513) retVal=137;
if (inCode=7514) retVal=137;
if (inCode=9308) retVal=138;
if (inCode=9113) retVal=139;
if (inCode=9374) retVal=140;
if (inCode=9381) retVal=141;
if (inCode=9391) retVal=142;
if (inCode=1611) retVal=143;
if (inCode=1612) retVal=143;
if (inCode=1613) retVal=143;
if (inCode=1631) retVal=143;
if (inCode=1632) retVal=143;
if (inCode=1633) retVal=143;
if (inCode=1641) retVal=143;
if (inCode=1642) retVal=143;
if (inCode=1811) retVal=144;
if (inCode=1812) retVal=144;
if (inCode=1813) retVal=144;
if (inCode=1814) retVal=144;
if (inCode=9119) retVal=145;
if (inCode=9241) retVal=146;
if (inCode=3411) retVal=147;
if (inCode=3412) retVal=147;
if (inCode=3421) retVal=147;
if (inCode=3422) retVal=147;
if (inCode=9268) retVal=148;
if (inCode=3201) retVal=149;
if (inCode=3202) retVal=149;
if (inCode=3211) retVal=149;
if (inCode=3212) retVal=149;
if (inCode=3213) retVal=149;
if (inCode=3214) retVal=149;
if (inCode=3221) retVal=149;
if (inCode=3222) retVal=149;
if (inCode=3223) retVal=149;
if (inCode=3261) retVal=149;
if (inCode=3262) retVal=149;
if (inCode=3271) retVal=149;
if (inCode=3272) retVal=149;
if (inCode=3273) retVal=149;
if (inCode=3281) retVal=149;
if (inCode=3282) retVal=149;
if (inCode=3291) retVal=149;
if (inCode=9121) retVal=150;
if (inCode=9122) retVal=150;
if (inCode=9116) retVal=151;
if (inCode=9117) retVal=151;
if (inCode=9118) retVal=151;
if (inCode=9270) retVal=152;
if (inCode=9120) retVal=153;
if (inCode=9327) retVal=154;
if (inCode=9269) retVal=155;
if (inCode=9209) retVal=156;
if (inCode=9217) retVal=156;
if (inCode=9218) retVal=156;
if (inCode=9365) retVal=156;
if (inCode=9366) retVal=156;
if (inCode=3171) retVal=157;
if (inCode=3172) retVal=157;
if (inCode=3173) retVal=157;
if (inCode=3174) retVal=157;
if (inCode=3175) retVal=157;
if (inCode=3151) retVal=157;
if (inCode=3161) retVal=157;
if (inCode=3121) retVal=157;
if (inCode=3122) retVal=157;
if (inCode=3131) retVal=157;
if (inCode=3132) retVal=157;
if (inCode=3141) retVal=157;
if (inCode=3142) retVal=157;
if (inCode=9123) retVal=158;
if (inCode=9124) retVal=159;
if (inCode=9271) retVal=160;
if (inCode=3311) retVal=161;
if (inCode=3312) retVal=161;
if (inCode=9114) retVal=162;
if (inCode=9115) retVal=162;
if (inCode=9125) retVal=163;
if (inCode=9126) retVal=163;
if (inCode=9388) retVal=164;
if (inCode=9389) retVal=164;
if (inCode=9272) retVal=165;
if (inCode=3811) retVal=166;
if (inCode=3812) retVal=166;
if (inCode=3821) retVal=166;
if (inCode=3822) retVal=166;
if (inCode=3823) retVal=166;
if (inCode=3831) retVal=166;
if (inCode=3841) retVal=166;
if (inCode=3851) retVal=166;
if (inCode=3852) retVal=166;
if (inCode=3611) retVal=167;
if (inCode=3614) retVal=167;
if (inCode=3615) retVal=167;
if (inCode=3616) retVal=167;
if (inCode=3617) retVal=167;
if (inCode=3621) retVal=167;
if (inCode=3622) retVal=167;
if (inCode=3631) retVal=167;
if (inCode=3632) retVal=167;
if (inCode=3633) retVal=167;
if (inCode=3641) retVal=167;
if (inCode=3642) retVal=167;
if (inCode=3651) retVal=167;
if (inCode=3652) retVal=167;
if (inCode=3711) retVal=168;
if (inCode=3712) retVal=168;
if (inCode=3721) retVal=168;
if (inCode=3722) retVal=168;
if (inCode=3511) retVal=169;
if (inCode=3521) retVal=169;
if (inCode=3522) retVal=169;
if (inCode=3523) retVal=169;
if (inCode=3524) retVal=169;
if (inCode=3531) retVal=169;
if (inCode=3542) retVal=169;
if (inCode=3551) retVal=169;
if (inCode=3552) retVal=169;
if (inCode=3561) retVal=169;
if (inCode=3562) retVal=169;
if (inCode=3571) retVal=169;
if (inCode=9130) retVal=170;
if (inCode=9131) retVal=170;
if (inCode=9214) retVal=170;
if (inCode=9286) retVal=171;
if (inCode=9288) retVal=172;
if (inCode=9273) retVal=173;
if (inCode=9132) retVal=174;
if (inCode=9133) retVal=174;
if (inCode=9242) retVal=175;
if (inCode=9134) retVal=176;
if (inCode=9331) retVal=177;
if (inCode=9384) retVal=177;
if (inCode=9390) retVal=177;
if (inCode=9135) retVal=178;
if (inCode=9136) retVal=179;
if (inCode=9137) retVal=179;
if (inCode=9138) retVal=179;
if (inCode=9225) retVal=180;
if (inCode=9139) retVal=181;
if (inCode=9140) retVal=182;
if (inCode=9141) retVal=182;
if (inCode=9142) retVal=182;
if (inCode=3911) retVal=183;
if (inCode=3912) retVal=183;
if (inCode=3913) retVal=183;
if (inCode=3921) retVal=183;
if (inCode=3922) retVal=183;
if (inCode=3931) retVal=183;
if (inCode=3932) retVal=183;
if (inCode=3941) retVal=183;
if (inCode=9143) retVal=184;
if (inCode=4011) retVal=185;
if (inCode=4012) retVal=185;
if (inCode=4013) retVal=185;
if (inCode=4021) retVal=185;
if (inCode=4022) retVal=185;
if (inCode=4023) retVal=185;
if (inCode=9145) retVal=186;
if (inCode=9146) retVal=186;
if (inCode=9147) retVal=186;
if (inCode=9148) retVal=186;
if (inCode=4111) retVal=187;
if (inCode=4112) retVal=187;
if (inCode=4121) retVal=187;
if (inCode=4122) retVal=187;
if (inCode=4123) retVal=187;
if (inCode=9144) retVal=188;
if (inCode=9297) retVal=189;
if (inCode=9243) retVal=190;
if (inCode=9149) retVal=191;
if (inCode=4211) retVal=192;
if (inCode=4212) retVal=192;
if (inCode=4213) retVal=192;
if (inCode=4231) retVal=192;
if (inCode=4232) retVal=192;
if (inCode=4233) retVal=192;
if (inCode=4241) retVal=192;
if (inCode=4242) retVal=192;
if (inCode=4251) retVal=192;
if (inCode=9231) retVal=193;
if (inCode=9150) retVal=194;
if (inCode=9151) retVal=194;
if (inCode=4311) retVal=195;
if (inCode=4312) retVal=195;
if (inCode=4313) retVal=195;
if (inCode=9274) retVal=196;
if (inCode=9152) retVal=197;
if (inCode=4411) retVal=198;
if (inCode=4412) retVal=198;
if (inCode=4413) retVal=198;
if (inCode=4414) retVal=198;
if (inCode=4415) retVal=198;
if (inCode=9295) retVal=199;
if (inCode=9244) retVal=200;
if (inCode=9161) retVal=201;
if (inCode=9162) retVal=201;
if (inCode=9163) retVal=201;
if (inCode=9164) retVal=201;
if (inCode=9153) retVal=202;
if (inCode=9283) retVal=203;
if (inCode=4611) retVal=204;
if (inCode=4612) retVal=204;
if (inCode=4613) retVal=204;
if (inCode=4614) retVal=204;
if (inCode=4621) retVal=204;
if (inCode=4622) retVal=204;
if (inCode=4631) retVal=204;
if (inCode=4632) retVal=204;
if (inCode=4641) retVal=204;
if (inCode=4651) retVal=204;
if (inCode=9276) retVal=205;
if (inCode=9154) retVal=206;
if (inCode=9155) retVal=207;
if (inCode=9332) retVal=208;
if (inCode=4711) retVal=209;
if (inCode=4712) retVal=209;
if (inCode=4713) retVal=209;
if (inCode=4714) retVal=209;
if (inCode=9300) retVal=210;
if (inCode=9245) retVal=211;
if (inCode=9349) retVal=212;
if (inCode=9350) retVal=212;
if (inCode=9165) retVal=213;
if (inCode=9357) retVal=214;
if (inCode=9277) retVal=215;
if (inCode=9246) retVal=216;
if (inCode=9166) retVal=217;
if (inCode=9167) retVal=217;
if (inCode=9168) retVal=217;
if (inCode=9247) retVal=218;
if (inCode=9284) retVal=219;
if (inCode=4811) retVal=220;
if (inCode=4812) retVal=220;
if (inCode=4813) retVal=220;
if (inCode=4821) retVal=220;
if (inCode=4831) retVal=220;
if (inCode=4832) retVal=220;
if (inCode=9278) retVal=221;
if (inCode=9377) retVal=222;
if (inCode=9378) retVal=222;
if (inCode=9169) retVal=223;
if (inCode=9170) retVal=223;
if (inCode=9171) retVal=223;
if (inCode=9279) retVal=224;
if (inCode=9156) retVal=225;
if (inCode=9157) retVal=225;
if (inCode=9158) retVal=225;
if (inCode=9159) retVal=225;
if (inCode=9160) retVal=225;
if (inCode=4511) retVal=226;
if (inCode=4512) retVal=226;
if (inCode=4513) retVal=226;
if (inCode=4521) retVal=226;
if (inCode=4522) retVal=226;
if (inCode=4531) retVal=226;
if (inCode=4532) retVal=226;
if (inCode=4533) retVal=226;
if (inCode=4541) retVal=226;
if (inCode=4542) retVal=226;
if (inCode=4543) retVal=226;
if (inCode=4544) retVal=226;
if (inCode=4545) retVal=226;
if (inCode=4546) retVal=226;
if (inCode=4943) retVal=227;
if (inCode=4944) retVal=228;
if (inCode=4951) retVal=229;
if (inCode=4952) retVal=230;
if (inCode=4953) retVal=231;
if (inCode=4954) retVal=232;
if (inCode=4912) retVal=233;
if (inCode=4921) retVal=234;
if (inCode=4922) retVal=235;
if (inCode=4931) retVal=236;
if (inCode=4932) retVal=237;
if (inCode=4941) retVal=238;
if (inCode=4942) retVal=239;
if (inCode=9223) retVal=240;
if (inCode=9392) retVal=241;
if (inCode=5011) retVal=242;
if (inCode=5012) retVal=242;
if (inCode=5013) retVal=242;
if (inCode=5021) retVal=242;
if (inCode=5022) retVal=242;
if (inCode=5031) retVal=242;
if (inCode=5032) retVal=242;
if (inCode=5041) retVal=242;
if (inCode=5051) retVal=242;
if (inCode=9172) retVal=243;
if (inCode=9282) retVal=243;
if (inCode=9320) retVal=244;
if (inCode=9173) retVal=245;
if (inCode=9174) retVal=245;
if (inCode=9175) retVal=246;
if (inCode=9219) retVal=247;
if (inCode=9296) retVal=247;
if (inCode=5141) retVal=248;
if (inCode=5142) retVal=248;
if (inCode=5151) retVal=248;
if (inCode=5152) retVal=248;
if (inCode=5161) retVal=248;
if (inCode=9385) retVal=249;
if (inCode=5211) retVal=250;
if (inCode=5212) retVal=250;
if (inCode=5213) retVal=250;
if (inCode=5221) retVal=250;
if (inCode=9345) retVal=251;
if (inCode=9346) retVal=251;
if (inCode=9347) retVal=251;
if (inCode=9348) retVal=251;
if (inCode=9176) retVal=252;
if (inCode=9177) retVal=252;
if (inCode=9178) retVal=252;
if (inCode=9248) retVal=253;
if (inCode=9249) retVal=253;
if (inCode=9179) retVal=254;
if (inCode=9180) retVal=254;
if (inCode=5411) retVal=255;
if (inCode=5421) retVal=255;
if (inCode=5422) retVal=255;
if (inCode=5431) retVal=255;
if (inCode=5432) retVal=255;
if (inCode=9339) retVal=256;
if (inCode=9181) retVal=257;
if (inCode=9182) retVal=257;
if (inCode=9220) retVal=258;
if (inCode=9183) retVal=259;
if (inCode=9184) retVal=259;
if (inCode=9185) retVal=259;
if (inCode=9208) retVal=260;
if (inCode=9227) retVal=260;
if (inCode=9294) retVal=260;
if (inCode=9302) retVal=260;
if (inCode=9250) retVal=261;
if (inCode=9280) retVal=262;
if (inCode=9251) retVal=263;
if (inCode=5511) retVal=264;
if (inCode=5512) retVal=264;
if (inCode=5521) retVal=264;
if (inCode=5522) retVal=264;
if (inCode=5523) retVal=264;
if (inCode=5524) retVal=264;
if (inCode=5531) retVal=264;
if (inCode=5541) retVal=264;
if (inCode=5551) retVal=264;
if (inCode=9394) retVal=265;
if (inCode=9395) retVal=265;
if (inCode=9039) retVal=266;
if (inCode=9040) retVal=266;
if (inCode=9041) retVal=267;
if (inCode=9042) retVal=267;
if (inCode=9043) retVal=267;
if (inCode=9044) retVal=267;
if (inCode=7211) retVal=268;
if (inCode=7212) retVal=268;
if (inCode=5611) retVal=269;
if (inCode=5612) retVal=269;
if (inCode=5613) retVal=269;
if (inCode=5614) retVal=269;
if (inCode=5631) retVal=269;
if (inCode=5641) retVal=269;
if (inCode=5661) retVal=269;
if (inCode=5671) retVal=269;
if (inCode=5672) retVal=269;
if (inCode=5673) retVal=269;
if (inCode=5674) retVal=269;
if (inCode=5681) retVal=269;
if (inCode=5682) retVal=269;
if (inCode=5683) retVal=269;
if (inCode=5691) retVal=269;
if (inCode=5692) retVal=269;
if (inCode=5693) retVal=269;
if (inCode=5711) retVal=270;
if (inCode=5712) retVal=270;
if (inCode=1211) retVal=271;
if (inCode=1212) retVal=271;
if (inCode=9379) retVal=272;
if (inCode=9281) retVal=273;
if (inCode=9275) retVal=274;
if (inCode=5911) retVal=275;
if (inCode=5912) retVal=275;
if (inCode=5913) retVal=275;
if (inCode=5914) retVal=275;
if (inCode=5921) retVal=275;
if (inCode=5922) retVal=275;
if (inCode=5923) retVal=275;
if (inCode=5924) retVal=275;
if (inCode=5931) retVal=275;
if (inCode=5932) retVal=275;
if (inCode=9221) retVal=276;
if (inCode=9340) retVal=277;
if (inCode=9187) retVal=278;
if (inCode=9188) retVal=278;
if (inCode=9189) retVal=279;
if (inCode=9215) retVal=280;
if (inCode=5811) retVal=281;
if (inCode=5812) retVal=281;
if (inCode=9232) retVal=282;
if (inCode=5311) retVal=283;
if (inCode=5312) retVal=283;
if (inCode=5313) retVal=283;
if (inCode=5314) retVal=283;
if (inCode=9393) retVal=284;
if (inCode=9207) retVal=285;
if (inCode=9222) retVal=286;
if (inCode=9369) retVal=287;
if (inCode=7411) retVal=288;
if (inCode=7412) retVal=288;
if (inCode=9252) retVal=289;
if (inCode=9318) retVal=290;
if (inCode=9192) retVal=291;
if (inCode=9190) retVal=292;
if (inCode=9191) retVal=292;
if (inCode=6011) retVal=293;
if (inCode=6012) retVal=293;
if (inCode=9370) retVal=294;
if (inCode=9193) retVal=295;
if (inCode=9194) retVal=295;
if (inCode=9195) retVal=296;
if (inCode=9333) retVal=297;
if (inCode=7111) retVal=298;
if (inCode=9072) retVal=299;
if (inCode=9073) retVal=299;
if (inCode=9074) retVal=299;
if (inCode=9075) retVal=299;
if (inCode=9076) retVal=299;
if (inCode=9229) retVal=300;
if (inCode=9228) retVal=301;
if (inCode=9335) retVal=302;
if (inCode=9293) retVal=303;
if (inCode=9077) retVal=304;
if (inCode=9078) retVal=304;
if (inCode=9079) retVal=304;
if (inCode=9080) retVal=305;
if (inCode=9081) retVal=305;
if (inCode=9375) retVal=306;
if (inCode=9387) retVal=306;
if (inCode=9301) retVal=307;
if (inCode=9285) retVal=308;
if (inCode=9224) retVal=309;
if (inCode=1911) retVal=310;
if (inCode=1912) retVal=310;
if (inCode=1913) retVal=310;
if (inCode=1921) retVal=310;
if (inCode=1931) retVal=310;
if (inCode=1932) retVal=310;
if (inCode=9353) retVal=311;
if (inCode=9354) retVal=311;
if (inCode=9355) retVal=311;
if (inCode=9356) retVal=311;
if (inCode=9186) retVal=312;
if (inCode=9062) retVal=313;
if (inCode=9063) retVal=313;
if (inCode=9064) retVal=313;
if (inCode=9066) retVal=314;
if (inCode=9067) retVal=314;
if (inCode=9068) retVal=314;
if (inCode=9069) retVal=314;
if (inCode=9070) retVal=315;
if (inCode=9071) retVal=315;
if (inCode=6711) retVal=316;
if (inCode=6712) retVal=316;
if (inCode=6713) retVal=316;
if (inCode=6714) retVal=316;
if (inCode=6715) retVal=316;
if (inCode=6721) retVal=316;
if (inCode=6722) retVal=316;
if (inCode=6723) retVal=316;
if (inCode=6611) retVal=317;
if (inCode=6612) retVal=317;
if (inCode=6613) retVal=317;
if (inCode=6614) retVal=317;
if (inCode=6621) retVal=317;
if (inCode=6622) retVal=317;
if (inCode=6631) retVal=317;
if (inCode=6632) retVal=317;

	return retVal

}


// Use to count the number of topics not blank (SingleChoiceGrid)
function dblNumOfTopicsNotBlank(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; (AnswerChoice(inQ,i) &amp;gt;=1 &amp;amp;&amp;amp;AnswerChoice(inQ,i) &amp;lt;1000) || AnswerChoice(inQ,i)!="" ) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function dblNumOfTopicsNotBlankText(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i)!="" ) {
			retVal++;
		}
	}
	
	return retVal;
}
// Check code dupplicated
function dblNumOfCodesDupplicated(inQ)
{
	var retVal = 0;
	var i=0;
	var j=0;
	
	
	for (i=1; i&amp;lt;=GetTopicCount(inQ)-1;i++){
	{for (j=1;j&amp;lt;=GetTopicCount(inQ)-1;j++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; IsTopicVisible(inQ,i+j)&amp;amp;&amp;amp;AnswerChoice(inQ,i)==AnswerChoice(inQ,i+j)&amp;amp;&amp;amp;AnswerChoice(inQ,i)&amp;gt;=1) {
			retVal++;
		}}}
	}
	
	return retVal;
}
// This function can't be used.
function dblMissingCodesInGrid(inQ)
{
	var retVal = 0;
	var i=0;
	var j=0;
	var k=0;
	var str=""
	var add=" "
	
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++)
	{if (IsTopicVisible(inQ,i))
	{var txt = IntArrayToString(GetAnswersChoice(inQ, i));
	 for (k=1;k&amp;lt;=GetAnswerCount(inQ);k++) 
	 {if (txt.IndexOf(k)!=-1)
	 {var str1=k+add;
	  if (str.IndexOf(k)==-1)
	  {str=str.concat(str1);}}}}}
	//
	for (var i=1;1&amp;lt;=GetAnswerCount(inQ);i++)
	{
	var str2="";
	if (str.IndexOf(k)!=-1)
	{var str1=k+add;
	str=str2.concat(str1);}}
	
	//
	for (k=1;k&amp;lt;=9;k++)
	{if (str.IndexOf(k)!=-1)
	{var ch=str.charAt(str.IndexOf(k)+3);
	if (ch!="")
	{var k1=k+1;
	if (str.IndexOf(k1)==-1)
	{for (k=k1;k&amp;lt;=10;i++)
	{if (str.IndexOf(k)==-1)
	{retVal=retVal+1;}}}}}}
	var retVal1=retVal;
	//
	for (k=10;k&amp;lt;=GetAnswerCount-1;k++)
	{if (str.IndexOf(k)!=-1)
	{var ch=str.charAt(str.IndexOf(k)+3);
	if (ch!="")
	{var k1=k+1;
	if (str.IndexOf(k1)==-1)
	{for (k=k1;k&amp;lt;=GetAnswerCount;i++)
	{if (str.IndexOf(k)==-1)
	{retVal1=retVal1+1;}}}}}}
	return retVal1;
}
//

function dblSumOfCodesInLoop(inQ,inAnswerIdx,inMaxIter)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxIter;i++){
		if (AnswerIter(inQ,i)==inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}
//

function dblSumOfLessCodesInLoop(inQ,inAnswerIdx,inMaxIter)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxIter;i++){
		if (AnswerIter(inQ,i)&amp;lt;inAnswerIdx &amp;amp;&amp;amp; AnswerIter(inQ,i)&amp;gt;0) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function dblSumOfGreaterCodesInLoop(inQ,inAnswerIdx,inMaxIter)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxIter;i++){
		if (AnswerIter(inQ,i)&amp;gt;inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function dblBlankScale(inQ,inMaxScale)
{
	var retVal = 0;
	var count=1
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
	{for (var j=1;j&amp;lt;=inMaxScale;j++)
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i)!=j) {
			count++;
		}
	}}
	if (count=1) {retVal=1;}
	return retVal;
}
//

function dblSumOfCodesInGrid(inQ,inAnswerIdx,inMaxTopic)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxTopic;i++){
		if (AnswerChoice(inQ,i)==inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}
// Sum of selected codes in a range. - use for multiple choice
function dblSumOfCodesBetween(inQ,Min,Max)
{
	var retVal = 0;
	for (var i=Min; i&amp;lt;=Max;i++){
		if (Contains(inQ,i)) {
			retVal++;
		}
	}
	
	return retVal;
}
//Use for text question related.
function dblNumOfTopicsTextNotBlank(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i) !="") {
			retVal++;
		}
	}
	
	return retVal;
}
// 
function dblSumOfCodesBetweenInGrid(inQ,Min,Max,inMaxTopic)
{
	var retVal = 0;
	var j=0
	for (j=1; j&amp;lt;=inMaxTopic;j++)
	{for (var i=Min; i&amp;lt;=Max;i++){
		if (AnswerChoice(inQ,j)==i) {
			retVal++;
		}
	}}
	
	return retVal;
}

function dblMaxTopicInNumericGrid(inQ)
{
	var retVal = 0;
	var temp=1
	for (var j=2; j&amp;lt;=GetTopicCount(inQ);j++)
	{
		if (AnswerChoice(inQ,temp)&amp;gt;AnswerChoice(inQ,j))
		{
			retVal= temp
			
		
		}
		else {retVal= j; temp=j}
	}
	
	return retVal;
}
function dblNumOfTopicsBlankText(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i)=="" ) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function dblNumOfVisibleCodes(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetAnswerCount(inQ);i++){
		if (IsAnswerVisible(inQ,i)==true) {
			retVal++;
		}
	}
	
	return retVal;
}
//
//
function dblSumOfGreaterCodesInGrid(inQ,inAnswerIdx,inMaxTopic)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxTopic;i++){
		if (AnswerChoice(inQ,i)&amp;gt;inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}
//
//
function dblSumOfLessCodesInGrid(inQ,inAnswerIdx,inMaxTopic)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxTopic;i++){
		if (AnswerChoice(inQ,i)&amp;lt;inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function TnsSumVisibleTopic(inQ)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i)==true) {
			retVal++;
		}
	}
	
	return retVal;
}
//
function  TnsFindIndexOfArray(index,Array)
{
var Array
var i=0
       for (var i = 0; i &amp;lt; Array.length; i++)
	   {
	   
              if (Array[i]==index)
			  {
                    return i; //i là vị trí của index
              }
       }
       return -1; // không có trả về -1 vì 0 là vị trí đầu tiên trong mảng
}


//K.Thanh
//Check valid câu trả lời PHẢI nằm trong những câu trả lời ở câu hỏi trước đó. (VD: Q1 - Answer 1,2,3 || Q2 - Answer must be in the range 1 to 3) MA
function ValidCheckIfCurrentAnswerIsSelectedInPreviousQuestion(InQ, PreviousQuestionToCheck){
	var result = false;
	for(var i = 1 ; i &amp;lt;= NumOfSelectedChoices(InQ); i++){
		//Prompt(AnswerChoice(CurrQues,i))
		if(!(Contains(PreviousQuestionToCheck,AnswerChoice(InQ,i)))){
			result = true;
		}
	}
	return result;
}


//K.Thanh
//Check valid câu trả lời PHẢI nằm trong những câu trả lời ở câu hỏi trước đó. (VD: Q1 - Answer 1,2,3 || Q2 - Answer must be in the range 1 to 3) MA
function ValidCheckIfCurrentAnswerIsSelectedInPreviousQuestionSA(InQ, PreviousQuestionToCheck){
	var result = false;
	for(var i = 1 ; i &amp;lt;= NumOfSelectedChoices(InQ); i++){
		//Prompt(AnswerChoice(CurrQues,i))
		if(!(Contains(PreviousQuestionToCheck,Contains(InQ,i)))){
			result = true;
		}
	}
	return result;
}



//K.Thanh
//Check valid câu trả lời KHÔNG nằm trong những câu trả lời ở câu hỏi trước đó. (VD: Q1 - Answer 1,2,3 || Q2 - Answer must be in the range 1 to 3) MA
function ValidCheckIfCurrentAnswerIsNotSelectedInPreviousQuestion(InQ, PreviousQuestionToCheck){
	var result = false;
	for(var i = 1 ; i &amp;lt;= NumOfSelectedChoices(InQ); i++){
		//Prompt(AnswerChoice(CurrQues,i))
		if((Contains(PreviousQuestionToCheck,AnswerChoice(InQ,i)))){
			result = true;
		}
	}
	return result;
}


//K.Thanh
//Check valid cho single choice grid, nếu 1 answer có từ 2 topic trở lên (hay dùng với các câu ghi nhận thứ tự trả lời).
//Note: numberIndexOfAnswer : là số lượng answer không tính câu "không biết/không nhớ" hoặc "khác."
function checkValidForDuplicatingAnswerInSingleChoiceGrid(inQ, numberIndexOfAnswer){
	for(var i = 1; i &amp;lt;= numberIndexOfAnswer; i++){
		if(GetNumOfTopicsWithValues(inQ,i)&amp;gt;=2){
			return true;
			break;
		}			
	}
}

// Dan
// Check Mod in topic
function TNSCheckModInGrid(inQ, Num){
var temp=0
	for(var i = 1; i &amp;lt;= GetTopicCount(inQ); i++){
		if(AnswerChoice(inQ,i)%Num!= 0){
			temp++;
		}			
	}
	return temp;
}
// Dan Test chơi cho vui
function test (InQuota, MaxBrand)
{var a = new Array();
while(a.length &amp;lt;MaxBrand) {
  var n = Random(MaxBrand)+1;
  if (IndexOf(n,a)==-1 &amp;amp;&amp;amp; QuotaMgr.GetQuotaCurrent("'"+InQuota+"'")&amp;lt;=2) a.push(n);
}
	return a;}
	
// KT
// Divisor by a given number (check xem có chia hết hay ko) (Grid)
function TNSCheckDivisorByGivenNumber(inQ, Num){
var result = false;
	for(var i = 1; i &amp;lt;= GetTopicCount(inQ); i++){
		if(AnswerChoice(inQ,i)%Num != 0){
			result = true;
			break;
		}			
	}
	return result;	
}



// function for BAT project.
function BAT_SEC_Definition (InSourceQ, InPerQ, SecQ)
{
var sum=0; var ans=0;
for(var i=1; i&amp;lt;=GetTopicCount(InSourceQ); i++)
{ans=AnswerChoice(InSourceQ,i);
switch(i){
case 1:ans*=3;break;
case 2:ans*=20;break;
case 3:ans*=27;break;
case 4:ans*=7;break;
case 5:ans*=13;break;
case 6:ans*=40;break;
case 7:ans*=67;break;
case 8:ans*=47;break;
case 9:ans*=82;break;
case 10:ans*=180;break;
case 11:ans*=250;break;
case 12:ans*=400;break;}
sum+=ans;}

//Calculating point/person

var pp=Math.round(sum/AnswerChoice(InPerQ,1));
//Set SEC

ClearAnswer(SecQ);

if (pp&amp;lt;=17) {SetAnswer(SecQ,5);}
if (pp&amp;gt;17 &amp;amp;&amp;amp; pp &amp;lt;=48) {SetAnswer(SecQ,4);}
if (pp&amp;gt;48 &amp;amp;&amp;amp; pp &amp;lt;=80) {SetAnswer(SecQ,3);}
if (pp&amp;gt;80 &amp;amp;&amp;amp; pp &amp;lt;=134) {SetAnswer(SecQ,2);}
if (pp&amp;gt;134) {SetAnswer(SecQ,1);}
}

function BAT_Stick_Group(InSourceQ, GroupQ)
{
ClearAnswer(GroupQ);
if(Answer(InSourceQ)&amp;gt;=5&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=10){SetAnswer(GroupQ,2);}
if(Answer(InSourceQ)&amp;gt;=11&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=15){SetAnswer(GroupQ,3);}
if(Answer(InSourceQ)&amp;gt;=16&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=20){SetAnswer(GroupQ,4);}
if(Answer(InSourceQ)&amp;gt;=21&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=25){SetAnswer(GroupQ,5);}
if(Answer(InSourceQ)&amp;gt;=26&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=30){SetAnswer(GroupQ,6);}
if(Answer(InSourceQ)&amp;gt;=31&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=35){SetAnswer(GroupQ,7);}
if(Answer(InSourceQ)&amp;gt;=36&amp;amp;&amp;amp;Answer(InSourceQ)&amp;lt;=40){SetAnswer(GroupQ,8);}
if(Answer(InSourceQ)&amp;gt;=41){SetAnswer(GroupQ,9);}

}

function BAT_SmokingLength (AgeQ, TargetQ)
{
SetAnswerVisible(TargetQ,true);

if (Answer(AgeQ)==18) 
{for (var i=4;i&amp;lt;=8;i++)
{SetAnswerVisible(TargetQ,[i],false);}}
else if (Answer(AgeQ)==19)
{for (var i=5;i&amp;lt;=8;i++)
{SetAnswerVisible(TargetQ,[i],false);}}
else if ((Answer(AgeQ)&amp;gt;=20) &amp;amp;&amp;amp; (Answer(AgeQ)&amp;lt;=22))
{for (var i=7;i&amp;lt;=8;i++)
{SetAnswerVisible(TargetQ,[i],false);}}
else if ((Answer(AgeQ)&amp;gt;22) &amp;amp;&amp;amp; (Answer(AgeQ)&amp;lt;=28))
{for (var i=8;i&amp;lt;=8;i++)
{SetAnswerVisible(TargetQ,[i],false);}}
}

function BAT_Check_Personal_Income (TargetQ, PersonQ, OccupQ, HIncomeQ)
{
	SetAnswerVisible(TargetQ,false);
	// Total=1
	if (AnswerChoice(PersonQ,1)==1) {SetAnswerVisible(TargetQ,Answer(HIncomeQ),true);}
	// Total &amp;gt; 1
	if (AnswerChoice(PersonQ,1)&amp;gt;1)
	   // Earning = 1
	   {if (AnswerChoice(PersonQ,2)==1) {for (var i=1;i&amp;lt;=Answer(HIncomeQ);i++) {SetAnswerVisible(TargetQ,i,true);}}
	   /*{if (AnswerChoice(PersonQ,2)==1)
	   		// Earning = Respondent
			   {if (Answer(OccupQ)&amp;gt;4) {SetAnswerVisible(TargetQ,Answer(HIncomeQ),true);}
			// Earning != Respondent
				if (Answer(OccupQ)&amp;lt;4) {SetAnswerVisible(TargetQ,1,true);}}}*/
		// Earning &amp;gt;=1
		if (AnswerChoice(PersonQ,2)&amp;gt;1) {for (var i=1;i&amp;lt;Answer(HIncomeQ);i++) {SetAnswerVisible(TargetQ,i,true);}}}
}

function BAT_CheckYearOnly(AgeQ)
{
	var C_Year=(Answer(AgeQ).ToInt())-18;
	return C_Year;
}

function BAT_CheckYear(AgeQ,PeriodQ,YearQ)
{	SetAnswerVisible(YearQ,true);
	for (var i=1;i&amp;lt;GetAnswerCount(PeriodQ);i++)
	{if (Answer(PeriodQ)==i) {switch(i){
	case 1: SetAnswerVisible(YearQ,false); SetAnswerVisible(YearQ,1,true); break;
	case 2: SetAnswerVisible(YearQ,false); SetAnswerVisible(YearQ,1,true); break;
	case 3: SetAnswerVisible(YearQ,false); for (var j=1;j&amp;lt;=2;j++) {SetAnswerVisible(YearQ,j,true);} break;
	case 4: SetAnswerVisible(YearQ,false); for (var j=1;j&amp;lt;=2;j++) {SetAnswerVisible(YearQ,j,true);} break;
	case 5: SetAnswerVisible(YearQ,false); for (var j=1;j&amp;lt;=3;j++) {SetAnswerVisible(YearQ,j,true);} break;
	case 6: SetAnswerVisible(YearQ,false); for (var j=1;j&amp;lt;=6;j++) {SetAnswerVisible(YearQ,j,true);} break;
	case 7: SetAnswerVisible(YearQ,false); for (var j=1;j&amp;lt;=11;j++) {SetAnswerVisible(YearQ,j,true);} break;}}}
	//
	if (Answer(PeriodQ)==8)
	{var C_Year=(Answer(AgeQ).ToInt())-18; SetAnswerVisible(PeriodQ,false);
	for (var i=1;i&amp;lt;=C_Year;i++) {SetAnswerVisible(YearQ,i,true);}}
	
}

function BAT_CheckMonth(AgeQ,PeriodQ,MonthQ)
{
	SetAnswerVisible(MonthQ,true);
	for (var i=1;i&amp;lt;GetAnswerCount(PeriodQ);i++)
	{if (Answer(PeriodQ)==i) {switch(i){
	case 1: SetAnswerVisible(MonthQ,false); for (var j=2;j&amp;lt;=4;j++) {SetAnswerVisible(MonthQ,j,true);} break;
	case 2: SetAnswerVisible(MonthQ,false); for (var j=5;j&amp;lt;=6;j++) {SetAnswerVisible(MonthQ,j,true);} break;
	case 3: SetAnswerVisible(MonthQ,false); for (var j=7;j&amp;lt;=12;j++) {SetAnswerVisible(MonthQ,j,true);} SetAnswerVisible(MonthQ,1,true);break;
	case 4: SetAnswerVisible(MonthQ,false); for (var j=1;j&amp;lt;=7;j++) {SetAnswerVisible(MonthQ,j,true);} break;
	case 5: SetAnswerVisible(MonthQ,false); for (var j=8;j&amp;lt;=12;j++) {SetAnswerVisible(MonthQ,j,true);} SetAnswerVisible(MonthQ,1,true);break;
	case 6: SetAnswerVisible(MonthQ,false); for (var j=1;j&amp;lt;=12;j++) {SetAnswerVisible(MonthQ,j,true);} break;
	case 7: SetAnswerVisible(MonthQ,false); for (var j=1;j&amp;lt;=12;j++) {SetAnswerVisible(MonthQ,j,true);} break;}}}
	
}
//********************** MB function ***********************//

// ******** BE2a order control. ********//
function MB_BE2a (Max, Loc, ArrayQ, OrderQ)
{
	if (Loc == "None") {Loc="";}
	//
	var a = new Array();
	var b = new Array();
	var Num=0;
	var Rand, Start,m1,m2,m3,Rand1
	// Get Quota	
		for (var j=1;j&amp;lt;=Max;j++)
			{var temp=Loc+ "BE2a_1_"+j;
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a.push(j);}
			}
		Prompt(a.ToString());
	// Create Rotation Array
		m1=Random(a.length);
		m2=a[m1];
		Prompt(m2);
		Prompt(Loc+"BE2a_1_"+ m2);
		Prompt(QuotaMgr.GetQuotaCurrent(Loc+ "BE2a_1_"+ m2));
		Rand=CreateCyclicArray(Max,m2);
		for (var i=0;i&amp;lt;=Rand.length-1;i++)
		{b[i]=Rand[i];}
		
ClearAnswer(ArrayQ);
ClearAnswer(OrderQ);
SetAnswer(ArrayQ,b.ToString());
SetAnswer(OrderQ,b);
}
//*********Q2-Q6 Order control *********//
function MB_Q2 (NumB,ArrayQ)
{
	if (NotAnswered(ArrayQ))
	{ClearAnswer(ArrayQ);
	var temp=CreateRandomArray(NumB);
	var ArrQ2=new Array();
	for (var i=0;i&amp;lt;temp.length;i++)
	{ArrQ2.push(temp[i]);}
	Prompt(ArrQ2.ToString());
	SetAnswer(ArrayQ,ArrQ2.ToString());}
}
//********AD's Control *************//
function MB_AD (ListOfBrands, maxAdshow, DummyAdQ, AdQinLoop,Loc)
{
	if (Loc == "None") {Loc="";}
	var arr = StringToIntArray(ListOfBrands);
//
	var NotFull=new Array();
	var needToBeFill = new Array();
	var adShow = new Array();
	// Get All Quota not full.	
		for (var j=0;j&amp;lt;arr.length;j++)
			{var temp= Loc+"_AD"+arr[j];
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{NotFull.push(arr[j]);}
			}
			Prompt(NotFull.ToString());
	// Random pick 2 AD's from Not full.
	while(adShow.length&amp;lt;maxAdshow){
		var ad = Random(NotFull.length)
		if(IndexOf(NotFull[ad],adShow)==-1){
		adShow.push(NotFull[ad]); dblSetSpecificAnswer(DummyAdQ,NotFull[ad],true);
		}
	}
	
//*************************************
	var a = new Array();
	var b = new Array();
	var Num=0;
	var Rand, Start,m1,m2,m3,Rand1
	// Get Quota Order Not full.
		for (var j=0;j&amp;lt;maxAdshow;j++)
			{var temp= Loc+"_AD"+adShow[j]+"_1";
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a.push(adShow[j]); Num++;}
			}
		Prompt(a.ToString());
	// Create Rotation Array
		m1=Random(a.length)+1;
		Rand=CreateCyclicArray(maxAdshow,m1);
		Prompt(Rand.length);
		for (var i=0;i&amp;lt;Rand.length;i++)
		{b[i]=adShow[Rand[i]-1];
			SetAnswerIter(AdQinLoop,i+1,b[i]); Prompt(b[i]);
		}
}
function MB_GetQuota_Ad (NumOfBrands, Loc,CurrentQ)
{
	var ArrQuo=new Array()
	for (var i=1;i&amp;lt;=NumOfBrands;i++)
	{var temp=Loc+"_AD"+i
	ArrQuo.push(QuotaMgr.GetQuotaCurrent(temp));}
	//
	for (var i=1;i&amp;lt;=NumOfBrands;i++)
	{var temp=Loc+"_AD"+i+"_1"
	ArrQuo.push(QuotaMgr.GetQuotaCurrent(temp));}
	//
	ArrQuo.push(QuotaMgr.GetQuotaCurrent(Loc));
	ClearAnswer(CurrentQ);
	SetAnswer(CurrentQ,ArrQuo);
}
function MB_DummySpon(StartQ, Interval, MaxQ)
{
	var Spon= new Array()
	for (var i=0;i&amp;lt;MaxQ;i++)
	{var temp=GetAnswers(StartQ+(i*Interval));
	for (var j=0;j&amp;lt;temp.length;j++)
	{Spon.push(temp[j]);}}
	
	return Spon;
	
}


function MB_Hide_Net(InQ, ArrayNet)
{
	var temp=StringToIntArray(ArrayNet)
	for (var i=0;i&amp;lt;temp.length;i++)
	{SetAnswerVisible(InQ,temp[i],false);}
}
function MB_Hide_Unspecified(InQ, ArrayUn)
{
	var temp=StringToIntArray(ArrayUn)
	for (var i=0;i&amp;lt;temp.length;i++)
	{SetAnswerVisible(InQ,temp[i],false);}
}
function MB_Hide_Reserved(InQ, ArrayRe)
{
	var temp=StringToIntArray(ArrayRe)
	for (var i=0;i&amp;lt;temp.length;i++)
	{SetAnswerVisible(InQ,temp[i],false);}
}
function MB_SetNet(SourceQ, TargetQ, NetAnswer, Variant)
{
	var temp=StringToIntArray(Variant);
	var Ques=StringToIntArray(SourceQ);
	for (var j=0;j&amp;lt;Ques.length;j++)
	{for (var i=0;i&amp;lt;temp.length;i++)
	{if (Contains(Ques[j],temp[i]))
	dblSetSpecificAnswer(TargetQ,temp[i],true);}}
}
function MB_AD_Week15_AD1_3 (ListOfBrands, maxAdshow, DummyAdQ, AdQinLoop,Loc)
{
	if (Loc == "None") {Loc="";}
	var arr = StringToIntArray(ListOfBrands);
//
	var NotFull=new Array();
	var needToBeFill = new Array();
	var adShow = new Array();
	// Get All Quota not full.	
		for (var j=0;j&amp;lt;arr.length;j++)
			{var temp= Loc+"_AD"+arr[j];
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{NotFull.push(arr[j]);}
			}
			Prompt(NotFull.ToString());
	// Random pick 2 AD's from Not full.
	while(adShow.length&amp;lt;maxAdshow){
		var ad = Random(NotFull.length)
		if(IndexOf(NotFull[ad],adShow)==-1){
		adShow.push(NotFull[ad]); dblSetSpecificAnswer(DummyAdQ,NotFull[ad],true);
		}
	}
	
//*************************************
	var a = new Array();
	var b = new Array();
	var Num=0;
	var Rand, Start,m1,m2,m3,Rand1
	// Get Quota Order Not full.
		for (var j=0;j&amp;lt;maxAdshow;j++)
			{var temp= Loc+"_AD"+adShow[j]+"_1";
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a.push(adShow[j]); Num++;}
			}
		Prompt(a.ToString());
	// Create Rotation Array
		m1=Random(a.length)+1;
		Rand=CreateCyclicArray(maxAdshow,m1);
		Prompt(Rand.length);
		for (var i=0;i&amp;lt;Rand.length;i++)
		{b[i]=adShow[Rand[i]-1];
			SetAnswerIter(AdQinLoop,i+3,b[i]); Prompt(b[i]);
		}
}

//*******************************//
function MB_AD_Week27 (ListOfBrands, maxAdshow, DummyAdQ, AdQinLoop,Loc)
{
	if (Loc == "None") {Loc="";}
	var arr = StringToIntArray(ListOfBrands);
//
	var NotFull=new Array();
	var needToBeFill = new Array();
	var adShow = new Array();
	// Get All Quota not full.	
		for (var j=0;j&amp;lt;arr.length;j++)
			{var temp= Loc+"_AD"+arr[j];
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{NotFull.push(arr[j]);}
			}
			Prompt(NotFull.ToString());
	// Random pick 2 AD's from Not full.
	while(adShow.length&amp;lt;maxAdshow){
		var ad = Random(NotFull.length)
		if(IndexOf(NotFull[ad],adShow)==-1){
		adShow.push(NotFull[ad]); dblSetSpecificAnswer(DummyAdQ,NotFull[ad],true);
		}
	}
	
//*************************************
	var a = new Array();
	var b = new Array();
	var Num=0;
	var Rand, Start,m1,m2,m3,Rand1
	// Get Quota Order Not full.
		for (var j=0;j&amp;lt;maxAdshow;j++)
			{var temp= Loc+"_AD"+adShow[j]+"_1";
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a.push(adShow[j]); Num++;}
			}
		Prompt(a.ToString());
	// Create Rotation Array
		m1=Random(a.length)+1;
		Rand=CreateCyclicArray(maxAdshow,m1);
		Prompt(Rand.length);
		for (var i=0;i&amp;lt;Rand.length;i++)
		{b[i]=adShow[Rand[i]-1];
			SetAnswerIter(AdQinLoop,i+2,b[i]); Prompt(b[i]);
		}
		SetAnswerIter(AdQinLoop,1,6)
		dblSetSpecificAnswer(DummyAdQ,6,true);
}

//*************** for MILO *********************//
function dblSumOfCodesBetweenInLoop(inQ,Min,Max,inMaxIter)
{
	var retVal = 0;
	var j=0
	for (j=1; j&amp;lt;=inMaxIter;j++)
	{for (var i=Min; i&amp;lt;=Max;i++){
		if (AnswerIter(inQ,j)==i) {
			retVal++;
		}
	}}
	
	return retVal;
}
function dblSumOfCodesInSpecificTopics(inQ,inAnswerIdx,MinTopic, MaxTopic)
{
	var retVal = 0;
	var i=0;
	for (i=MinTopic; i&amp;lt;=MaxTopic;i++){
		if (AnswerChoice(inQ,i)==inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}

function dblSumNumericGridb(inQ)
{
	var retVal=0;
	var numOfTopics=GetTopicCount(inQ);
	var i;
	
	for(i=1; i&amp;lt;=numOfTopics; i++)
	{
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i)&amp;gt;=1) {
			retVal+=AnswerChoice(inQ,i);
		}
	}
	
	return retVal;
}

function Check_MB_AD_Energy (ListOfBrands, maxAdshow, AwareAds, DummyAdQ, AdQinLoop,Loc)
{
	if (Loc == "None") {Loc="";}
	var arr = StringToIntArray(ListOfBrands);
//
	ClearAnswer(DummyAdQ);
	var NotFull=new Array();
	
	var needToBeFill = new Array();
	var adShow = new Array();
	// Get All Quota not full.	
		for (var j=0;j&amp;lt;arr.length;j++)
			{var temp= Loc+"_AD"+arr[j];
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{NotFull.push(arr[j]);}
			}
			Prompt(NotFull.ToString());
	
	// kiem tra du it nhat 4 mau quang cao
	if (NotFull.length&amp;gt;=4)
		return 1
	else
		return 0;
}

//-------------------------------
function MB_AD_Energy (ListOfBrands, maxAdshow, AwareAds, DummyAdQ, AdQinLoop,Loc)
{
	if (Loc == "None") {Loc="";}
	var arr = StringToIntArray(ListOfBrands);
//
	ClearAnswer(DummyAdQ);
	var NotFull=new Array();
	
	var needToBeFill = new Array();
	var adShow = new Array();
	// Get All Quota not full.	
		for (var j=0;j&amp;lt;arr.length;j++)
			{var temp= Loc+"_AD"+arr[j];
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{NotFull.push(arr[j]);}
			}
			Prompt(NotFull.ToString());
	
	
	
	// Random pick 2 AD's from Not full.
	while(adShow.length&amp;lt;maxAdshow){
		var ad = Random(NotFull.length)
		if(IndexOf(NotFull[ad],adShow)==-1){
		adShow.push(NotFull[ad]); dblSetSpecificAnswer(DummyAdQ,NotFull[ad],true);
		}
	}
	
//************* 2 Full Ads ************************
	var a = new Array();
	var b = new Array();
	var Rem=new Array();
	var Num=0;
	var Rand, Start,m1,m2,m3,Rand1
	// Get Quota Order Not full.
		for (var j=0;j&amp;lt;maxAdshow;j++)
			{var temp= Loc+"_AD"+adShow[j]+"_1";
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a.push(adShow[j]); Num++;}
			}
		Prompt(a.ToString());
	// Create Rotation Array
		m1=Random(a.length)+1;
		Rand=CreateCyclicArray(maxAdshow,m1);
		for (var i=0;i&amp;lt;Rand.length;i++)
		{b[i]=adShow[Rand[i]-1];
			SetAnswerIter(AdQinLoop,i+1,b[i]);
		}
	// Gets Ads remained
	for (var i=0;i&amp;lt;NotFull.length;i++)
	{if (IndexOf(NotFull[i],adShow)==-1) {Rem.push(NotFull[i]);}}
	
//************* 2 Awares *********************
	var Num=0;
	var a1 = new Array();
	var b1 = new Array();
	var Awa= new Array();
	// Random pick 2 AD's from Not full.
	while(Awa.length&amp;lt;AwareAds){
		var ad = Random(Rem.length)
		if(IndexOf(Rem[ad],Awa)==-1){
		Awa.push(Rem[ad]); dblSetSpecificAnswer(DummyAdQ,Rem[ad],true);
		}
	}
	// Get Quota Order Not full.
		for (var j=0;j&amp;lt;Awa.length;j++)
			{var temp= Loc+"_AD"+Awa[j]+"_3";
			 if (QuotaMgr.HasFilledQuota(temp)==false)
				{a1.push(Awa[j]); Num++;}
			}
		Prompt(a1.ToString());
	// Create Rotation Array
		m1=Random(a1.length)+1;
		Rand=CreateCyclicArray(AwareAds,m1);
		Prompt(Rand.length);
		for (var i=0;i&amp;lt;Rand.length;i++)
		{b1[i]=Awa[Rand[i]-1];
			SetAnswerIter(AdQinLoop,i+3,b1[i]); Prompt(b1[i]);
		}
}
function dblSumOfCodesInSpecificIters(inQ,inAnswerIdx,MinIter, MaxIter)
{
	var retVal = 0;
	var i=0;
	for (i=MinIter; i&amp;lt;=MaxIter;i++){
		if (AnswerIter(inQ,i)==inAnswerIdx) {
			retVal++;
		}
	}
	
	return retVal;
}

function dblSumOfCodesInGridMA(inQ,inAnswerIdx,inMaxTopic)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=inMaxTopic;i++){
		if (ContainsChoice(inQ,i,inAnswerIdx)) {
			retVal++;
		}
	}
	
	return retVal;
}

function dblColorFromRGB(red, green, blue){
	return (255&amp;lt;&amp;lt;24)+ (red&amp;lt;&amp;lt;16) + (green&amp;lt;&amp;lt;8) + blue;
}


function dblDistanceFromGPSFence (fenceLat, fenceLon)
{
	var pi = Math.PI;
	var fenceLatInRad=fenceLat* pi / 180;
	var fenceLonInRad=fenceLon* pi / 180;
	var targetLatInRad = GetGPSLocation().Latitude * pi / 180;
	var targetLonInRad = GetGPSLocation().Longitude * pi / 180;
	var dist = Math.acos(Math.sin(targetLatInRad) * Math.sin(fenceLatInRad) + Math.cos(targetLatInRad) * Math.cos(fenceLatInRad) * Math.cos(targetLonInRad - fenceLonInRad)) * 6371;
	var retVal;
      
	retVal=dist;
	return retVal;
}

function dblIsInGPSFence (fenceLat, fenceLon, distInKM)
{
	var dist = dblDistanceFromGPSFence(fenceLat, fenceLon);
	var retVal = false;
	
	if(dist&amp;lt;distInKM){
	    retVal=true;}
	else{
	    retVal=false;
	}
	return retVal;
}

function dblSumNumericGrid(inQ)
{
	var retVal=0;
	var numOfTopics=GetTopicCount(inQ);
	var i;
	
	for(i=1; i&amp;lt;=numOfTopics; i++)
	{
		if (IsTopicVisible(inQ,i)) {
			retVal+=AnswerChoice(inQ,i);
		}
	}
	
	return retVal;
}

function dblContainsOneOf(inQTarget,inAnswers)
{
	var retVal = false;
	var numOfAnswers = inAnswers.length;
	var i;
	for (i=0;i&amp;lt; numOfAnswers;i++) {
		if (Contains(inQTarget,inAnswers[i])) {
			retVal = true;
			break;
		}
	}
	return retVal;
}


//function dblContainsAll(inQTarget,inAnswers)
//{
//	var retVal = true;
//	var numOfAnswers = arguments.length-1;
//	var i;
//	for (i=0;i&amp;lt; numOfAnswers;i++) {
//		retVal = retVal &amp;amp;&amp;amp; Contains(inQTarget,arguments[i+1]);
//	}
//	return retVal;
//}

function dblContainsAllOf(inQTarget,inAnswers)
{
	var retVal = true;
	var numOfAnswers = inAnswers.length;
	var i;
	for (i=0;i&amp;lt; numOfAnswers;i++) {
		retVal = retVal &amp;amp;&amp;amp; Contains(inQTarget,inAnswers[i]);
	}
	return retVal;
}

function dblNumOfTopicsContains(inQ, inValueToCheck)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;=GetTopicCount(inQ);i++){
		if (IsTopicVisible(inQ,i) &amp;amp;&amp;amp; AnswerChoice(inQ,i) == inValueToCheck) {
			retVal++;
		}
	}
	
	return retVal;
}

function dblNumOfIterContains(inQ, inValueToCheck)
{
	var retVal = 0;
	var i=0;
	for (i=1; i&amp;lt;IterationIndex;i++){
		if (ContainsIter(inQ,inValueToCheck,i)) {
			retVal++;
		}
	}
	
	return retVal;
}


function dblSetSpecificTopic(inQ, inTopicIndex, inValue)
{
	var curTopics = GetTopicCount(inQ);
	var newAnswers=new Array();
	var newArIdx=0;
	var i;
	for (i=0;i&amp;lt; curTopics;i++) {
		var actualTopic = i+1;
		if (actualTopic == inTopicIndex) {
			newAnswers[i] = inValue;
		}
		else {
			newAnswers[i] = AnswerChoice(inQ,actualTopic);
		}
	}
	SetAnswer(inQ,newAnswers);
}


function dblSetSpecificAnswer(inQ, inAnswerIdx, inChecked)
{
	var curAnswers = GetAnswers(inQ);
	var newAnswers=new Array();
	var newArIdx=0;
	var i;
	for (i=0;i&amp;lt; curAnswers.length;i++) {
		if (curAnswers[i] != inAnswerIdx) {
			newAnswers[newArIdx] = curAnswers[i];
			newArIdx++;
		}
	}
	if (inChecked) {
		newAnswers[newArIdx] = inAnswerIdx;
	}
	if (newAnswers.length &amp;gt; 0) {
	
		SetAnswer(inQ,newAnswers);
	}
	else {
		ClearAnswer(inQ);
	}
}

function dblSetAnswersByAnswers(inQTarget,inQids)
{
	var numOfQues = inQids.length;
	var numOfAnswers = GetAnswerCount(inQids[0]);
	var i;
	for (i=1;i&amp;lt;= numOfAnswers;i++) {
		var contained = false;
		var j;
		for (j=0; j&amp;lt;numOfQues;j++) {
			contained = Contains(inQids[j],i);
			if (contained) {
				break;
			}
		}
		if (contained) {
			dblSetSpecificAnswer(inQTarget, i,true);
		}
	}
}

function dblSetAnswersByAnswersEx (inQTarget,inQids,inExcludeHiddenTargetAnswers)
{
	var numOfQues = inQids.length;
	var numOfAnswers = GetAnswerCount(inQids[0]);
	var i;
	// go over all answers and for each check if it exists in the source questions
	for (i=1;i&amp;lt;= numOfAnswers;i++) {
		var contained = false;
		var j;
		// go over all source questions and check if the answer is checked
		for (j=0; j&amp;lt;numOfQues;j++) {
			contained = Contains(inQids[j],i);
			if (contained) {
				break;
			}
		}
		// in case it was contained check if need to add to target question
		if (contained) {
			var addAnswer = true;
			if ((inExcludeHiddenTargetAnswers) &amp;amp;&amp;amp; !IsAnswerVisible(inQTarget,i)) {
				addAnswer = false;
			}
			if (addAnswer) {
				dblSetSpecificAnswer(inQTarget, i,true);
			}
		}
	}
}


function dblSumOfTopics (inQuesIdx)
{
      var retVal = 0;
      var i;
      var numOfTopics = GetTopicCount(inQuesIdx);
      for (i=0;i&amp;lt;numOfTopics;i++) {
            var currTopic = i+1;
            if (IsTopicVisible (inQuesIdx, currTopic)) {
                  var currValue = AnswerChoice(inQuesIdx, currTopic);
                  if (currValue != -99999) {
	                  retVal += currValue;
                  }
            }
      }


      return retVal;
}

function dblFormatNumberToCurrency(num) {
	var retVal = "";
	var num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	var cents = num%100;
	num = Math.floor(num/100).toString();
	var addZero = "";
	if(cents&amp;lt;10) {
		addZero = "0";
	}
	for (var i = 0; i &amp;lt; Math.floor((num.length-(1+i))/3); i++) {
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	}
	retVal = (((sign)?'':'-') + '$' + num + '.' +addZero+ cents)
	return retVal;
}

function dblToFloat(inNumber)
{
	var retVal = parseFloat(inNumber.toString().replace(",", "."));
	return retVal;
}


function dblSetAnswerVisible(inQTarget,inValue,inReset,inAnswers)
{
	var retVal = false;
	var numOfAnswers = inAnswers.length;
	var i;
	if (inReset) {
		SetAnswerVisible(CurrQues,true);
	}
	for (i=0;i&amp;lt; numOfAnswers;i++) {
		SetAnswerVisible(inQTarget, inAnswers[i], inValue);
	}
	return retVal;
}


function dblContainsByText(inQIdx, inText)
{
	var retVal = false;
	var i=0;
	for (i=0; i&amp;lt;GetAnswerCount(inQIdx); i++){
		var idx = i+1;
		var text = AnswerText(inQIdx,idx);
		if (text == inText) {
			if (Contains(inQIdx,idx)) {
				retVal = true;
				break;
			}
		}
	}
	return retVal;
}


function dblFilterAnswersByAnswersByText (inTargetQ, inShow,inSourceQ)
{
	SetAnswerVisible(inTargetQ,!inShow);	
	var i =0;
	for (i=0; i&amp;lt;GetAnswerCount(inTargetQ);i++){
		var idx = i+1;
		var text = AnswerText(inTargetQ,idx);
		if (dblContainsByText(inSourceQ,text)) {
			SetAnswerVisible(inTargetQ,idx,inShow);	
		}
	}
	
	return true;
}

function dblFilterTopicsByAnswersByText (inTargetQ, inShow, inSourceQ)
{
	SetTopicVisible(inTargetQ,!inShow);	
	var i=0;
	for (i=0; i&amp;lt;GetTopicCount(inTargetQ); i++){
		var idx = i+1;
		var text = GetTopicOriginalText(inTargetQ,idx);
		if (dblContainsByText(inSourceQ,text)) {
			SetTopicVisible(inTargetQ,idx,inShow);	
		}
	}
	
	return true;
}

function dblGetSubjectStoreRow(inStoreName,inIDColumnName,inID)
{
	var retVal = null;
	try {
		var table = GetTableFromStore(inStoreName,"","@@"+inIDColumnName+"='"+inID+"'","");
		if (table != null &amp;amp;&amp;amp; table.RowCount &amp;gt;0) {
			var row = table[0];
			retVal = row;
		}
	}
	catch(err)
	{
		retVal = null;	
	}

	return retVal;
}

function dblIsRegEx (pattern,value) {
	var pattern = new RegExp(pattern);
	return pattern.test(value);
}

function dblDateToSQLDate(inDate)
{
	var retVal = "";
	retVal = inDate.Year+"-"+inDate.Month+"-"+inDate.Day;	
	return retVal;
}

function dblOrderArray(inOrderArray, inDataArray)
{
	var retVal = CreateRandomArray(inOrderArray.length);
	var i = 0;
	for (i = 0; i &amp;lt; inOrderArray.length; i++) {
		retVal[i] = inDataArray[inOrderArray[i]-1];
	}
	return retVal;
} 

function dblRespondentID ()
{
	var retVal = "".concat("D", SID, "-", DeviceIndex);
	return retVal;
}


	/*_@_USERCODE_END_@*/

	//_@_AddHandler_@{ Begin Add Handlers
	//_@_AddHandler_@} End Add Handlers

	//_@_HandlerZone_@{
		
		function QuestionStart_4()
		{

SetTopicVisible(CurrQues, false);


		}
		
		
		function HandleQuestionValidate_0(ioValid)
		{
			/*_@_CC_@{1}_@_CC_@*/
			ioValid.outMessage = "";
			ioValid.outID = -1;
			ioValid.retVal = true;
			if (1 &amp;lt; 0) {{
			}}
			if (!dblIsRegEx("^[\\d]{5}$", Answer(CurrQues).ToString())) {
				ioValid.retVal = false;
				ioValid.outMessage = "Answer is not in the correct form";
				ioValid.outID = 2;
				return;
			}
			
		}
		
		
		function HandleQuestionValidate_1(ioValid)
		{
			/*_@_CC_@{1}_@_CC_@*/
			ioValid.outMessage = "";
			ioValid.outID = -1;
			ioValid.retVal = true;
			if (1 &amp;lt; 0) {{
			}}
			if (!dblIsRegEx("^[0-9]{3}[-][0-9]{3}[-][0-9]{4}$", Answer(CurrQues).ToString())) {
				ioValid.retVal = false;
				ioValid.outMessage = "Answer is not in the correct form";
				ioValid.outID = 2;
				return;
			}
			
		}
		
		
		function HandleQuestionValidate_2(ioValid)
		{
			/*_@_CC_@{1}_@_CC_@*/
			ioValid.outMessage = "";
			ioValid.outID = -1;
			ioValid.retVal = true;
			if (1 &amp;lt; 0) {{
			}}
			if (!dblIsRegEx("^[0-9]{10}$",Answer(CurrQues).ToString())) {
				ioValid.retVal = false;
				ioValid.outMessage = "Answer is not in the correct form";
				ioValid.outID = 1;
				return;
			}
			
		}
		
		
		function HandleQuestionValidate_3(ioValid)
		{
			/*_@_CC_@{1}_@_CC_@*/
			ioValid.outMessage = "";
			ioValid.outID = -1;
			ioValid.retVal = true;
			if (1 &amp;lt; 0) {{
			}}
			if (!dblIsRegEx("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$",Answer(CurrQues).ToString())) {
				ioValid.retVal = false;
				ioValid.outMessage = "Answer is not in the correct form";
				ioValid.outID = 1;
				return;
			}
			
		}
		
	//_@_HandlerZone_@}


    function JSDBLInitAllScript()
    {
    }var eJumpQuestionResult = {ejqrNext:0, ejqrSubmit:1,ejqrCancel:2,ejqrFilter:3,ejqrNone:4,ejqrIndex:5,ejqrChapter:6};
var ePlatform = {None:0, Web:1, PC:2, PDA:4, MobileWeb:8, SmartPhone:16, Android:32, AllWindows:31, AllJSEnabled: 34, All:63};
var eAttachmentSource = {easDefault:0};
var eAskButtons = {OKCancel:0, YesNoCancel:1, YesNo:2};
var eAskResult = {None:0, OK:1, Yes:2, No:3, Cancel:4};
var eQuotaFilledResult = {Default:0,Filter:1,Cancel:2,Nothing:3};
var eExtraLabel = { MatrixLower:0, MatrixMiddle:1, MatrixUpper:2, MatrixIrrelevant:3, ScaleLower:4, ScaleMiddle:5, ScaleUpper:6, CountersTotal:7,CountersRemaining:8, NumericGridTotal:9, NumericGridRemaining:10 }; 
&lt;/Source&gt;
&lt;/UserLogicContents&gt;</ULSource><RestrictSPSS>False</RestrictSPSS><ExtraText1 /><ExtraBool1>False</ExtraBool1><ExtraBool2>False</ExtraBool2><ExtraInt1>-1</ExtraInt1><ExtraInt2>0</ExtraInt2><STGVersion>1.32.0.0</STGVersion><ULAssemblyData>AAEAAAD/////AQAAAAAAAAAMAgAAAEdVc2VyTG9naWNDcmVhdG9yLCBWZXJzaW9uPTEuMC4xLjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAKVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuQXNzZW1ibHlEYXRhEAAAAAZtVGFibGUNbVN1cnZleUNvbnN0cw9tU3VydmV5U25pcHBldHMNbUNoYXB0ZXJUYWJsZQ1tTGFzdEJ1Y2tldElEEW1MYXN0TWV0YUJ1Y2tldElED21TdXJ2ZXlJbml0Q29kZRBtU3VydmV5QmxvY2tDb2RlEW1MYXN0TGlzdFNvdXJjZUlEE21MYXN0Q3VzdG9tQWN0aW9uSUQHbUZsYXZvcg5tVXNlR2xvYmFsQ29kZQttVXNlT3JnQ29kZQ5tU3RyaWN0SlNDaGVjaxdtTGFzdEF0dGFjaG1lbnRTb3VyY2VJRA5tU3VydmV5TmF2Q29kZQMDAwMAAAEBAAAEAAAAAAEeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHlN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGVbXQgICAgkU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5lRmxhdm9yAgAAAAEBAQgCAAAACQMAAAAJBAAAAAkFAAAACQYAAAABAAAAAgAAAAYHAAAAAAkHAAAAAQAAAAEAAAAF+P///yRTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLmVGbGF2b3IBAAAAB3ZhbHVlX18ACAIAAAACAAAAAQEBAQAAAAkHAAAABwMAAAAAAQAAAAYAAAADHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUJCQAAAAkKAAAACQsAAAAJDAAAAAkNAAAACQ4AAAAEBAAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29s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ZWF0b3IuVmFsaWRhdGVJbmZvK1ZhbGlkYXRlQ29uZGl0aW9uAgAAAAljAAAAB18AAAAAAQAAAAEAAAAEO1N1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuVmFsaWRhdGVJbmZvK1ZhbGlkYXRlQ29uZGl0aW9uAgAAAAlkAAAAEGAAAAAAAAAABWEAAAA7U3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5WYWxpZGF0ZUluZm8rVmFsaWRhdGVDb25kaXRpb24DAAAACWNvbmRpdGlvbgNtc2cCSUQEAQAmU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5Db25kaXRpb24CAAAACAIAAAAJZQAAAAZmAAAAIUFuc3dlciBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybQEAAAABYgAAAGEAAAAJZwAAAAZoAAAAIUFuc3dlciBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybQEAAAABYwAAAGEAAAAJaQAAAAZqAAAAIUFuc3dlciBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybQIAAAABZAAAAGEAAAAJawAAAAZsAAAAIUFuc3dlciBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybQIAAAAFZQAAACZTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLkNvbmRpdGlvbgEAAAAFbVRleHQBAgAAAAZtAAAAfCFkYmxJc1JlZ0V4KCJeW19BLVphLXowLTktXSsoXC5bX0EtWmEtejAtOS1dKykqQFtBLVphLXowLTldKyhcLltBLVphLXowLTldKykqKFwuW0EtWmEtel17Mix9KSQiLEFuc3dlcihDdXJyUXVlcykuVG9TdHJpbmcoKSkBZwAAAGUAAAAGbgAAADYhZGJsSXNSZWdFeCgiXlswLTldezEwfSQiLEFuc3dlcihDdXJyUXVlcykuVG9TdHJpbmcoKSkBaQAAAGUAAAAGbwAAAEwhZGJsSXNSZWdFeCgiXlswLTldezN9Wy1dWzAtOV17M31bLV1bMC05XXs0fSQiLCBBbnN3ZXIoQ3VyclF1ZXMpLlRvU3RyaW5nKCkpAWsAAABlAAAABnAAAAA2IWRibElzUmVnRXgoIl5bXFxkXXs1fSQiLCBBbnN3ZXIoQ3VyclF1ZXMpLlRvU3RyaW5nKCkpCw==</ULAssemblyData><NumOfQuestionsInPage>-1</NumOfQuestionsInPage><Version>25</Version><NextChapterID>1</NextChapterID><DefaultChapterDesc /><Flags>272629772</Flags><NextAnswerID>1</NextAnswerID><ClientData /><DefaultFont /><Comment /><ExternalSystem>-1</ExternalSystem><NextScoreID>1</NextScoreID><LocationStoreID>-1</LocationStoreID><NextScaleID>2</NextScaleID><Mode>0</Mode><DefTextPanelHeight>-1</DefTextPanelHeight><DefAnswerPanelHeight>-1</DefAnswerPanelHeight><SurveyFlags2>65792</SurveyFlags2><NumOfQuestionsPDA>-1</NumOfQuestionsPDA><NumOfQuestionsPC>-1</NumOfQuestionsPC><NumOfQuestionsSmartPhone>-1</NumOfQuestionsSmartPhone><NextLangID>0</NextLangID><QuestionCounterResetText /><QuestionNumericResetText /><QuestionStopperResetText /><QuestionFormSurveyCanceled /><QuestionFormSurveyFiltered /><QuestionFormCanotExit /><QuestionFormSureToCancelNoSave /><QuestionFormSureToCancel /><QuestionFormSaved /><PromptOnSubmitText /><PromptOnCancelText /><PromptOnFilterText /><StartWithLangID>-1</StartWithLangID><ReportFlags>0</ReportFlags><SurveyFlags3>160</SurveyFlags3><ClientTypes>54</ClientTypes></Survey><SQs><ElemStr>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</ElemStr></SQs><SANs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+MXDf979Ph42Vzl9dnTo53Hd+3vj39inTctgaDfHz6+6/31+Gz2Dk3x4/Gb/F17tPv4Lv98/Hpe1S01yZa//87OQ/o/fWM+cwDpvX0PIsD8ZFYX2aTMX2SL/Oj497//+9OLwWePT3gA6Ep/e/x6XV/m1wT5wcHOp/m93dn2w/2DB9v7e9Od7Ye755Pt/d3J+YNsNnuwn98jPEzzx0/zMm/zGcZgfn38nfVidbY8r462qQf7x+PTd22dYWy76V3960lVlbtHz7KyyR/f9T6Rb8+W7S4Auz8U86+WJ/N8+la67X6kbcyfdpD2e6Dw7TdfPAcWz8rsogEU+eXxl+08r1+v8ikRjGn1WujX+5x6WSzyZQsg382Li3kLKPrb49fTqs7xgfzy+Kx5Pc3K3IzU/Pn4Vb6iCQVCgPMqvyzyK/cXvjtbzvJ3TEj/78cv8/o8bHhSlVXtNZS/Hz8tmlWZXbtvgw8IseNpW1zmR2/qNSOmfz7+si4uimVWMqI00Xi1+9njl3Xe5MQJM79V78PHZ4vsIge2L+tqxdTufCItzmYYzVfPfzIr17n3K8083vH+Mt88zafeN/jr8atsOasWn9fVeiXE8P5WStk59/+kqYL4hjK8e3sZ3vVleG9Qhve+rgzvDcjw3o9k+FYyvPcjGf75KcNDdnj3Bjv8tFp+3Ka/17K6igrz7gaDvO3Djkjzzo8s8gdJ8843aJGNzPx8FubdTx88eLB3b+//MzI9ZJcjMh3Y5Vf5+brJZ4MCPWSdbxboH5nnDxPob848/0ig/z8h0Pi3Ofp/ADHSzYZjDwAA</ElemStr></SANs><STos><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zdVw/8ePT5eNld5ffb0aOfxXfv7459Y501LIOj3h4/ven89Ppu9O9refXwXPx+/yd+1R9nju/zz8et5VbfUpl39/js7D+n/1Mx85iDSe/seSID5yawuskmZv8gW+dGb3//+708vBp89PuERHNHn+tvj1+v6Mr8myA8Odj7N7+3Oth/uHzzY3t+b7mw/3D2fbO/vTs4fZLPZg/38HuFhmj9+mpd5m88wXvPr4++sF6uz5XnFI7N/PD5919YZxrab3tW/nlRVuXv0LCub/PFd7xP59mzZ7gKw+0Mx/2p5Ms+nb6Xb7kfaxvxpB2m/BwrffvPFc2DxrMwuGkCRXx5/2c7z+vUqnxLBQCu0OakWi3zZ4tfv5sXFvAVM/e3x62lV5wAgvzw+a15PszI3YzJ/Pn6Vr2jq0DXgvMovi/zK/YXvzpaznCfT//Pxy7w+N3xhf9c3TqqyqpnI/t+PnxbNqsyu3bfBB4Th8bQtLok16jVjqH8+/rIuLoplVjLGNLd4tfvZ45d13uQ0+TO/Ve/Dx2eL7CIHri/rasUE7nwiLc5mGP9Xz38yK9e59ytNNt7x/jLfPM2n3jf46/GrbDmrFp/X1XolxPD+VkrZafb/pDmDyIZyu/secrvny+1kUG73vq7c7g3I7d6P5Pb/dXJ7f0huJz+S2x+G3O69h9ze8+V2Oii3976u3N4bkNt7P5Lb/9fJ7adDcjv9kdz+MOT23nvI7b4vt7NBud3/unK7PyC3+z+S2//Xye2DIbmd/Uhuf3bkFv82R/8PsoABLRYPAAA=</ElemStr></STos><SCs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65MG/xw9Pnt6tPP4Lv37+EW2yI++90VWLNOTebZq8/r7j+/yh49fr+vL/JoaPTjY+TS/tzvbfrh/8GB7f2+6s/1w93yyvb87OX+QzWYP9vN7j+/a5o+f5mXe5jN0YX59/DKr82VL327vPr5r/3j8vLoops/K7KJBa++vx6/y5Syv5Y/7j+/6f1IHzbQuVi0N9ujNvGhS+l87z9O6qtp0KsNIq/M0K0v+/Bet8waNm7vNerKtDeitJX/bMOKj3zj5jZPfp1qn02yZLglOnS+qy5xaEHB9ZZRmyxlDdRAttMW6adNJnq6BaPDa2Ae9oEk5v06LtklXdbXK67bIm3RrSSQfpTM3sFHa5u/aNG+n4zugoxvx4zf44u7R49N3bZ09qapy9+hZVjb547veJ+7bvaM39dr/ck+/PFu2uzwf7i/7xR7mw/3x+Gz2jpviJyPw7TdfPAcSJ9ViQZOJX7+bFxfzFi/qb49fT6s6Bzfh61f5qqrbk6zNL6r6usd0na+1+ZuiLfntL7J3Z9QwYxIAk+CDx8+Lpn1dretpfjbjr4MPGOOX2TIvvy2YoUX3s8ev3jwzpH1FE10tPq+r9Yrb+n8/PmuOp21xmStd7Z8Bjs2b6vQdRtBD1n1DQnPC/zRH/w9Oy4cpxQMAAA==</ElemStr></SCs><SBNs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6ycvmvTu0f8DVNIIpTEAAAA=</ElemStr></SBNs><SATs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+M3TXr36P8B2S/MCTEAAAA=</ElemStr></SATs><SSCOs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnXzbp3aP/B1t6G+cyAAAA</ElemStr></SSCOs><SPs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65dNevfo/wF1B76WMAAAAA==</ElemStr></SPs><RGs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxq8+b9O7R/wNCnyKPMAAAAA==</ElemStr></RGs><CSs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxyesmvXv0/wA+f8jSMAAAAA==</ElemStr></CSs><SSCs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnDf9L/6zry/z67OnRg4OdT/N7u7Pth/sHD7b396Y72w93zyfb+7uT8wfZbPZgP7/3+K5t/vj1NCtz+mWXPtRfH7/IFvlR1c7zOs2WzRWh8fguf/b4ad5M62LVElrp3aPHz8rsojnaeXxXfqGvy7zNZ/jE/Pr4rDmetsVlfvSmXueP79o/H7/I37XHDJ763KMe/L8JGwzrLg/x/wEH/stSEgEAAA==</ElemStr></SSCs><QAs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxTxw36d2j/wdMGPaGMAAAAA==</ElemStr></QAs><SLs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+dNevfo/wH2fa4zMAAAAA==</ElemStr></SLs><STes><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zd5k949+n8Axy2WxjEAAAA=</ElemStr></STes><SMBs><ElemStr>H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6y+eNPwv/bOuL/Prs6dHDw52Ps3v7c62H+4fPNje35vubD/cPZ9s7+9Ozh9ks9mD/fze47u2+eMn6+nbvKXfdh7ftb/rpy+yRZ7ePXr8ND/P1mX7E+uqzdAu+Pvxm+tVjk/55+OfWOdNS1gTlO3dx3e9Px+/zOp82eoX9o/HXy1P5jl1NzteNlc05CeEF3q9KwP7Zka3Gx/d0Yv8Kn09z/PWfM+f3mbE995nxDu3H/BdntX/B5dNdDUFAgAA</ElemStr></SMBs></Root>