/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
extern string IndicatorName = "iMA";
extern string IndicatorParameters = "14|0|0|0";
extern int RangeBars = 100;
int gi_96 = -1;
int gi_100 = 8;
bool gi_104 = TRUE;
double gda_108[];
int g_arr_size_112;
int gi_116 = 0;
int gi_120 = -1;
int gi_124;
datetime g_time_128;
int gi_132;
bool gi_136;
bool gi_140;
int gi_144 = 10;
int gi_148 = 10;
int g_corner_152 = 2;
string gs_verdana_156 = "Verdana";
int g_fontsize_164 = 10;
int g_fontsize_168 = 8;
int g_fontsize_172 = 60;
int g_fontsize_176 = 23;
int g_color_180 = Red;
int g_color_184 = LimeGreen;
int gi_188 = 55295;
double gda_192[][8];
double gda_196[][8];
string gsa_200[];

void init() {
   RangeBars = MathMax(RangeBars, 8);
   IndicatorParameters = stringTrim(IndicatorParameters);
   stringSplit(gsa_200, IndicatorParameters, "|");
   g_arr_size_112 = ArraySize(gsa_200);
   ArrayResize(gda_108, g_arr_size_112);
   for (int l_index_0 = 0; l_index_0 < g_arr_size_112; l_index_0++) gda_108[l_index_0] = StrToDouble(stringTrim(gsa_200[l_index_0]));
   ArrayResize(gda_192, RangeBars);
   ArrayResize(gda_196, RangeBars);
   ArrayInitialize(gda_192, 0.0);
   ArrayInitialize(gda_196, 0.0);
   g_time_128 = 0;
   gi_132 = 0;
   gi_136 = TRUE;
   gi_140 = FALSE;
   gi_124 = 0;
   gi_100 = MathMax(gi_100, 1);
   getValue(IndicatorName, g_arr_size_112, 0, gda_108, 0);
   int li_4 = g_arr_size_112;
   if (gi_120 != -1) li_4 = gi_120;
   Print("IndicatorTester" + " " + "v1.0.0" + " initialized. Number of indicator\'s parameters = " + li_4 + ".");
}

void start() {
   int li_0;
   int li_4;
   datetime l_time_8 = Time[0];
   bool li_12 = FALSE;
   if (l_time_8 != g_time_128) {
      li_12 = TRUE;
      g_time_128 = l_time_8;
   }
   if (!gi_136) {
      if (!gi_140) {
         getCurrentValues();
         li_4 = compareValues(li_12);
         if (li_4 > gi_116) {
            gi_116 = li_4;
            Print("[" + TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS) + "] New maximal redraw factor = " + gi_116);
         }
         li_0 = iBarShift(NULL, 0, gi_132) - iBarShift(NULL, 0, Time[0]);
         copyCurrentToPrevious();
      }
   } else {
      gi_132 = Time[0];
      getCurrentValues();
      gi_140 = isEmpty();
      copyCurrentToPrevious();
      gi_136 = FALSE;
   }
   showBox(gi_116, li_0);
   showBuffers();
}

void deinit() {
   string l_name_0;
   if (!IsTesting()) {
      for (int l_objs_total_8 = ObjectsTotal(); l_objs_total_8 >= 0; l_objs_total_8--) {
         l_name_0 = ObjectName(l_objs_total_8);
         if (stringStartsWith(l_name_0, "IndicatorTester")) ObjectDelete(l_name_0);
      }
      Comment("");
   }
}

int compareValues(bool ai_0) {
   bool li_4;
   int li_8 = ArrayRange(gda_192, 0);
   int li_12 = ArrayRange(gda_192, 1);
   int l_count_16 = 0;
   int li_20 = 0;
   if (ai_0) li_20 = 1;
   for (int li_24 = li_8 - 1; li_24 >= li_20; li_24--) {
      li_4 = TRUE;
      for (int l_count_28 = 0; l_count_28 < MathMin(li_12, gi_100); l_count_28++) {
         if (NormalizeDouble(gda_192[li_24][l_count_28], 8) != NormalizeDouble(gda_196[li_24 - li_20][l_count_28], 8)) {
            li_4 = FALSE;
            if (gi_96 != -1 && li_8 - l_count_16 - li_20 >= gi_96) {
            }
         }
      }
      if (!(li_4)) break;
      l_count_16++;
   }
   return (li_8 - l_count_16 - li_20);
}

void copyCurrentToPrevious() {
   int li_0 = ArrayRange(gda_192, 0);
   int li_4 = ArrayRange(gda_192, 1);
   ArrayResize(gda_196, li_0);
   for (int l_index_8 = 0; l_index_8 < li_0; l_index_8++) for (int l_count_12 = 0; l_count_12 < li_4; l_count_12++) gda_196[l_index_8][l_count_12] = gda_192[l_index_8][l_count_12];
}

void getCurrentValues() {
   int li_0 = RangeBars;
   int li_4 = ArrayRange(gda_192, 1);
   for (int l_index_8 = 0; l_index_8 < li_0; l_index_8++) for (int l_count_12 = 0; l_count_12 < li_4; l_count_12++) gda_192[l_index_8][l_count_12] = getValue(IndicatorName, g_arr_size_112, l_count_12, gda_108, l_index_8);
}

int isEmpty() {
   bool li_ret_0 = TRUE;
   int li_4 = ArrayRange(gda_192, 0);
   int li_8 = ArrayRange(gda_192, 1);
   for (int l_index_12 = 0; l_index_12 < li_4; l_index_12++) {
      for (int l_count_16 = 0; l_count_16 < li_8; l_count_16++)
         if (gda_192[l_index_12][l_count_16] != 0.0) li_ret_0 = FALSE;
   }
   return (li_ret_0);
}

double getValue(string as_0, int ai_8, int ai_12, double ada_16[], int ai_20) {
   if (as_0 == "iAC") {
      if (ai_12 > 0) return (0);
      gi_120 = 0;
      gi_124 = 2;
      return (iAC(NULL, 0, ai_20));
   }
   if (as_0 == "iAD") {
      if (ai_12 > 0) return (0);
      gi_120 = 0;
      gi_124 = 2;
      return (iAD(NULL, 0, ai_20));
   }
   if (as_0 == "iAlligator") {
      gi_120 = 8;
      gi_124 = 2;
      return (iAlligator(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ai_12, ai_20));
   }
   if (as_0 == "iADX") {
      gi_120 = 2;
      gi_124 = 2;
      return (iADX(NULL, 0, ada_16[0], ada_16[1], ai_12, ai_20));
   }
   if (as_0 == "iATR") {
      if (ai_12 > 0) return (0);
      gi_120 = 1;
      gi_124 = 2;
      return (iATR(NULL, 0, ada_16[0], ai_20));
   }
   if (as_0 == "iAO") {
      if (ai_12 > 0) return (0);
      gi_120 = 0;
      gi_124 = 2;
      return (iAO(NULL, 0, ai_20));
   }
   if (as_0 == "iBearsPower") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iBearsPower(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iBands") {
      gi_120 = 4;
      gi_124 = 2;
      return (iBands(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_12, ai_20));
   }
   if (as_0 == "iBullsPower") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iBullsPower(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iCCI") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iCCI(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iDeMarker") {
      if (ai_12 > 0) return (0);
      gi_120 = 1;
      gi_124 = 2;
      return (iDeMarker(NULL, 0, ada_16[0], ai_20));
   }
   if (as_0 == "iEnvelopes") {
      gi_120 = 5;
      gi_124 = 2;
      return (iEnvelopes(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ai_12, ai_20));
   }
   if (as_0 == "iForce") {
      if (ai_12 > 0) return (0);
      gi_120 = 3;
      gi_124 = 2;
      return (iForce(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ai_20));
   }
   if (as_0 == "iFractals") {
      gi_120 = 0;
      gi_124 = 2;
      return (iFractals(NULL, 0, ai_12, ai_20));
   }
   if (as_0 == "iGator") {
      gi_120 = 8;
      gi_124 = 2;
      return (iGator(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ai_12, ai_20));
   }
   if (as_0 == "iIchimoku") {
      gi_120 = 3;
      gi_124 = 2;
      return (iIchimoku(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ai_12, ai_20));
   }
   if (as_0 == "iBWMFI") {
      if (ai_12 > 0) return (0);
      gi_120 = 0;
      gi_124 = 2;
      return (iBWMFI(NULL, 0, ai_20));
   }
   if (as_0 == "iMomentum") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iMomentum(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iMFI") {
      if (ai_12 > 0) return (0);
      gi_120 = 1;
      gi_124 = 2;
      return (iMFI(NULL, 0, ada_16[0], ai_20));
   }
   if (as_0 == "iMA") {
      if (ai_12 > 0) return (0);
      gi_120 = 4;
      gi_124 = 2;
      return (iMA(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_20));
   }
   if (as_0 == "iOsMA") {
      if (ai_12 > 0) return (0);
      gi_120 = 3;
      gi_124 = 2;
      return (iOsMA(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_20));
   }
   if (as_0 == "iMACD") {
      gi_120 = 3;
      gi_124 = 2;
      return (iMACD(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_12, ai_20));
   }
   if (as_0 == "iOBV") {
      if (ai_12 > 0) return (0);
      gi_120 = 1;
      gi_124 = 2;
      return (iOBV(NULL, 0, ada_16[0], ai_20));
   }
   if (as_0 == "iSAR") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iSAR(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iRSI") {
      if (ai_12 > 0) return (0);
      gi_120 = 2;
      gi_124 = 2;
      return (iRSI(NULL, 0, ada_16[0], ada_16[1], ai_20));
   }
   if (as_0 == "iRVI") {
      gi_120 = 1;
      gi_124 = 2;
      return (iRVI(NULL, 0, ada_16[0], ai_12, ai_20));
   }
   if (as_0 == "iStdDev") {
      if (ai_12 > 0) return (0);
      gi_120 = 4;
      gi_124 = 2;
      return (iStdDev(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_20));
   }
   if (as_0 == "iStochastic") {
      gi_120 = 5;
      gi_124 = 2;
      return (iStochastic(NULL, 0, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ai_12, ai_20));
   }
   if (as_0 == "iWPR") {
      if (ai_12 > 0) return (0);
      gi_120 = 1;
      gi_124 = 2;
      return (iWPR(NULL, 0, ada_16[0], ai_20));
   }
   gi_124 = 1;
   switch (ai_8) {
   case 0:
      return (iCustom(NULL, 0, IndicatorName, ai_12, ai_20));
   case 1:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ai_12, ai_20));
   case 2:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ai_12, ai_20));
   case 3:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ai_12, ai_20));
   case 4:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ai_12, ai_20));
   case 5:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ai_12, ai_20));
   case 6:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ai_12, ai_20));
   case 7:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ai_12, ai_20));
   case 8:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ai_12, ai_20));
   case 9:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ai_12, ai_20));
   case 10:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ai_12, ai_20));
   case 11:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ai_12, ai_20));
   case 12:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ai_12, ai_20));
   case 13:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ai_12, ai_20));
   case 14:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ai_12, ai_20));
   case 15:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ai_12, ai_20));
   case 16:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ai_12, ai_20));
   case 17:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ai_12, ai_20));
   case 18:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ai_12, ai_20));
   case 19:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ai_12, ai_20));
   case 20:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ai_12, ai_20));
   case 21:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ai_12, ai_20));
   case 22:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ai_12, ai_20));
   case 23:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ai_12, ai_20));
   case 24:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ai_12, ai_20));
   case 25:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ai_12, ai_20));
   case 26:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ai_12, ai_20));
   case 27:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ai_12, ai_20));
   case 28:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ada_16[27], ai_12, ai_20));
   case 29:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ada_16[27], ada_16[28], ai_12, ai_20));
   case 30:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ada_16[27], ada_16[28], ada_16[29], ai_12, ai_20));
   case 31:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ada_16[27], ada_16[28], ada_16[29], ada_16[30], ai_12, ai_20));
   case 32:
      return (iCustom(NULL, 0, IndicatorName, ada_16[0], ada_16[1], ada_16[2], ada_16[3], ada_16[4], ada_16[5], ada_16[6], ada_16[7], ada_16[8], ada_16[9], ada_16[10], ada_16[11], ada_16[12], ada_16[13], ada_16[14], ada_16[15], ada_16[16], ada_16[17], ada_16[18], ada_16[19], ada_16[20], ada_16[21], ada_16[22], ada_16[23], ada_16[24], ada_16[25], ada_16[26], ada_16[27], ada_16[28], ada_16[29], ada_16[30], ada_16[31], ai_12, ai_20));
   }
   return (0);
}

void stringSplit(string &asa_0[], string as_4, string as_12) {
   int li_20;
   int l_arr_size_24;
   ArrayResize(asa_0, 0);
   if (as_4 != "") {
      while (true) {
         li_20 = StringFind(as_4, as_12);
         l_arr_size_24 = ArraySize(asa_0);
         ArrayResize(asa_0, l_arr_size_24 + 1);
         if (li_20 == -1) break;
         if (li_20 > 0) asa_0[l_arr_size_24] = StringSubstr(as_4, 0, li_20);
         else asa_0[l_arr_size_24] = "";
         as_4 = StringSubstr(as_4, li_20 + 1);
      }
      asa_0[l_arr_size_24] = as_4;
   }
}

string stringTrim(string as_0) {
   return (StringTrimRight(StringTrimLeft(as_0)));
}

bool stringStartsWith(string as_0, string as_8) {
   return (StringFind(as_0, as_8) == 0);
}

bool stringEndsWith(string as_0, string as_8) {
   int li_16 = StringLen(as_0) - StringLen(as_8);
   return (StringFind(as_0, as_8, li_16) == li_16);
}

string doubleToStr(double ad_0) {
   if (ad_0 == EMPTY_VALUE) return ("EMPTY_VALUE");
   string l_dbl2str_8 = DoubleToStr(ad_0, 8);
   int li_16 = StringFind(l_dbl2str_8, ".");
   if (li_16 == -1) return (l_dbl2str_8);
   while (stringEndsWith(l_dbl2str_8, "0")) l_dbl2str_8 = StringSubstr(l_dbl2str_8, 0, StringLen(l_dbl2str_8) - 1);
   if (stringEndsWith(l_dbl2str_8, ".")) l_dbl2str_8 = StringSubstr(l_dbl2str_8, 0, StringLen(l_dbl2str_8) - 1);
   return (l_dbl2str_8);
}

void showBuffers() {
   string l_name_0;
   int l_x_8;
   int l_y_12;
   string l_text_16;
   for (int l_count_24 = 0; l_count_24 < MathMin(8, gi_100); l_count_24++) {
      l_name_0 = "IndicatorTester" + "-Buffer-" + l_count_24;
      l_x_8 = gi_144 + 350;
      l_y_12 = gi_148 + 91 - 13 * l_count_24;
      l_text_16 = "B#" + l_count_24 + " = " + doubleToStr(gda_192[0][l_count_24]);
      if (ObjectFind(l_name_0) < 0) {
         if (gi_104) {
            ObjectCreate(l_name_0, OBJ_LABEL, 0, 0, 0);
            ObjectSetText(l_name_0, l_text_16, g_fontsize_168, gs_verdana_156, g_color_184);
            ObjectSet(l_name_0, OBJPROP_CORNER, g_corner_152);
            ObjectSet(l_name_0, OBJPROP_XDISTANCE, l_x_8);
            ObjectSet(l_name_0, OBJPROP_YDISTANCE, l_y_12);
         }
      } else {
         if (gi_104) ObjectSetText(l_name_0, l_text_16, g_fontsize_168, gs_verdana_156, g_color_184);
         else ObjectDelete(l_name_0);
      }
   }
}

void showBox(int ai_0, int ai_4) {
   color l_color_8;
   color l_color_12;
   int li_16;
   string l_name_20 = "IndicatorTester" + "-Version";
   string l_name_28 = "IndicatorTester" + "-Tested";
   string l_name_36 = "IndicatorTester" + "-Name";
   string l_name_44 = "IndicatorTester" + "-Redraw";
   string l_name_52 = "IndicatorTester" + "-Visit";
   string l_name_60 = "IndicatorTester" + "-Copyright";
   string l_name_68 = "IndicatorTester" + "-Licence";
   string l_name_76 = "IndicatorTester" + "-Horizontal";
   string l_name_84 = "IndicatorTester" + "-RedrawFactor";
   string l_name_92 = "IndicatorTester" + "-Warning";
   string l_name_100 = "IndicatorTester" + "-MaxTest";
   switch (ai_0) {
   case 0:
      l_color_8 = LimeGreen;
      break;
   case 1:
      l_color_8 = Gold;
      break;
   default:
      l_color_8 = Red;
   }
   int l_x_112 = gi_144 + 0;
   int l_y_116 = gi_148 + 91;
   string l_text_120 = "IndicatorTester" + " " + "v1.0.0";
   int l_x_128 = gi_144 + 0;
   int l_y_132 = gi_148 + 76;
   string l_text_136 = "Tested Indicator:";
   int l_x_144 = gi_144 + 0;
   int l_y_148 = gi_148 + 61;
   string l_text_152 = IndicatorName;
   string ls_160 = TerminalPath() + "\\experts\\indicators\\" + IndicatorName + ".ex4";
   if (gi_124 == 2) l_color_12 = gi_188;
   else l_color_12 = g_color_184;
   if (gi_140) {
      l_text_152 = "Indicator \"" + l_text_152 + "\" can\'t be analysed!";
      l_color_12 = g_color_180;
   } else {
      if ((g_arr_size_112 > 0 && gi_120 == -1) || gi_120 > 0) {
         li_16 = g_arr_size_112;
         if (gi_120 != -1) li_16 = gi_120;
         l_text_152 = l_text_152 + "(";
         for (int l_index_168 = 0; l_index_168 < li_16; l_index_168++) {
            l_text_152 = l_text_152 + doubleToStr(gda_108[l_index_168]);
            if (l_index_168 != li_16 - 1) l_text_152 = l_text_152 + ",";
         }
         l_text_152 = l_text_152 + ")";
      }
   }
   int l_x_172 = gi_144 + 0;
   int l_y_176 = gi_148 + 39;
   string l_text_180 = "REDRAW FACTOR after " + ai_4 + " bars =";
   int l_x_188 = gi_144 + 185;
   int l_y_192 = gi_148 + 20;
   int l_x_196 = gi_144 + 41;
   int l_y_200 = gi_148 + 10;
   int l_x_204 = gi_144 + 121;
   int l_y_208 = gi_148 + 0;
   int l_x_212 = gi_144 + 0;
   int l_y_216 = gi_148 + 35;
   string l_text_220 = "__________________";
   int l_x_228 = gi_144 + 238;
   int l_y_232 = gi_148 + 25;
   string l_text_236 = ai_0;
   if (ai_0 < 10) l_x_228 += 54;
   int l_x_244 = gi_144 + 0;
   int l_y_248 = gi_148 + 39;
   string l_text_252 = ls_160;
   int l_x_260 = gi_144 + 0;
   int l_y_264 = gi_148 + 20;
   string l_text_268 = "Range = " + RangeBars + " bars";
   string l_text_276 = decodeString("²°¼ñ«¹°¬ÓÎMñ¨¨¨ÿ«¶¬¶É");
   string l_text_284 = decodeString("ñ»º©­º¬º­ÿ¬«·¸¶­ÿ³³Þÿñ´¾¶±z°Èÿ»³°«¶Èÿçïïíÿvÿ«·¸¶­¦¯°Ü");
   string l_text_292 = decodeString("ñº¬ªÿ³¾±°¬­º¯ÿ­°¹ÿººr¹ÿ¬¶ÿ­º«¬ºË­°«¾¼¶»±Ö");
   if (ObjectFind(l_name_20) < 0) {
      ObjectCreate(l_name_20, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_20, l_text_120, g_fontsize_164, gs_verdana_156, g_color_180);
      ObjectSet(l_name_20, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_20, OBJPROP_XDISTANCE, l_x_112);
      ObjectSet(l_name_20, OBJPROP_YDISTANCE, l_y_116);
   }
   if (ObjectFind(l_name_28) < 0) {
      ObjectCreate(l_name_28, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_28, l_text_136, g_fontsize_164, gs_verdana_156, g_color_180);
      ObjectSet(l_name_28, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_28, OBJPROP_XDISTANCE, l_x_128);
      ObjectSet(l_name_28, OBJPROP_YDISTANCE, l_y_132);
   }
   if (ObjectFind(l_name_36) < 0) {
      ObjectCreate(l_name_36, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_36, l_text_152, g_fontsize_164, gs_verdana_156, l_color_12);
      ObjectSet(l_name_36, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_36, OBJPROP_XDISTANCE, l_x_144);
      ObjectSet(l_name_36, OBJPROP_YDISTANCE, l_y_148);
   }
   if (!gi_140) {
      if (ObjectFind(l_name_44) < 0) {
         ObjectCreate(l_name_44, OBJ_LABEL, 0, 0, 0);
         ObjectSetText(l_name_44, l_text_180, g_fontsize_164, gs_verdana_156, g_color_180);
         ObjectSet(l_name_44, OBJPROP_CORNER, g_corner_152);
         ObjectSet(l_name_44, OBJPROP_XDISTANCE, l_x_172);
         ObjectSet(l_name_44, OBJPROP_YDISTANCE, l_y_176);
      } else ObjectSetText(l_name_44, l_text_180, g_fontsize_164, gs_verdana_156, g_color_180);
   } else {
      if (ObjectFind(l_name_92) < 0) {
         ObjectCreate(l_name_92, OBJ_LABEL, 0, 0, 0);
         ObjectSetText(l_name_92, l_text_252, g_fontsize_168, gs_verdana_156, g_color_180);
         ObjectSet(l_name_92, OBJPROP_CORNER, g_corner_152);
         ObjectSet(l_name_92, OBJPROP_XDISTANCE, l_x_244);
         ObjectSet(l_name_92, OBJPROP_YDISTANCE, l_y_248);
      }
   }
   if (ObjectFind(l_name_52) < 0) {
      ObjectCreate(l_name_52, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_52, l_text_276, g_fontsize_164, gs_verdana_156, g_color_180);
      ObjectSet(l_name_52, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_52, OBJPROP_XDISTANCE, l_x_188);
      ObjectSet(l_name_52, OBJPROP_YDISTANCE, l_y_192);
   }
   if (ObjectFind(l_name_60) < 0) {
      ObjectCreate(l_name_60, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_60, l_text_284, g_fontsize_168, gs_verdana_156, g_color_180);
      ObjectSet(l_name_60, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_60, OBJPROP_XDISTANCE, l_x_196);
      ObjectSet(l_name_60, OBJPROP_YDISTANCE, l_y_200);
   }
   if (ObjectFind(l_name_68) < 0) {
      ObjectCreate(l_name_68, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_68, l_text_292, g_fontsize_168, gs_verdana_156, g_color_180);
      ObjectSet(l_name_68, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_68, OBJPROP_XDISTANCE, l_x_204);
      ObjectSet(l_name_68, OBJPROP_YDISTANCE, l_y_208);
   }
   if (ObjectFind(l_name_76) < 0) {
      ObjectCreate(l_name_76, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_76, l_text_220, g_fontsize_176, gs_verdana_156, g_color_184);
      ObjectSet(l_name_76, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_76, OBJPROP_XDISTANCE, l_x_212);
      ObjectSet(l_name_76, OBJPROP_YDISTANCE, l_y_216);
   }
   if (!gi_140) {
      if (ObjectFind(l_name_84) < 0) {
         ObjectCreate(l_name_84, OBJ_LABEL, 0, 0, 0);
         ObjectSetText(l_name_84, l_text_236, g_fontsize_172, gs_verdana_156, l_color_8);
         ObjectSet(l_name_84, OBJPROP_CORNER, g_corner_152);
         ObjectSet(l_name_84, OBJPROP_XDISTANCE, l_x_228);
         ObjectSet(l_name_84, OBJPROP_YDISTANCE, l_y_232);
      } else {
         ObjectSetText(l_name_84, l_text_236, g_fontsize_172, gs_verdana_156, l_color_8);
         ObjectSet(l_name_84, OBJPROP_XDISTANCE, l_x_228);
      }
   }
   if (ObjectFind(l_name_100) < 0) {
      ObjectCreate(l_name_100, OBJ_LABEL, 0, 0, 0);
      ObjectSetText(l_name_100, l_text_268, g_fontsize_164, gs_verdana_156, g_color_180);
      ObjectSet(l_name_100, OBJPROP_CORNER, g_corner_152);
      ObjectSet(l_name_100, OBJPROP_XDISTANCE, l_x_260);
      ObjectSet(l_name_100, OBJPROP_YDISTANCE, l_y_264);
   }
   ObjectsRedraw();
}

string decodeString(string as_0) {
   int li_8;
   int li_12;
   int l_str_len_16 = StringLen(as_0);
   for (int li_20 = 0; li_20 < l_str_len_16 / 2; li_20++) {
      li_8 = StringGetChar(as_0, li_20) ^ 255 + 32;
      li_12 = StringGetChar(as_0, l_str_len_16 - li_20 - 1) ^ 255 + 32;
      as_0 = StringSetChar(as_0, li_20, li_12);
      as_0 = StringSetChar(as_0, l_str_len_16 - li_20 - 1, li_8);
   }
   return (as_0);
}
