diff --git "a/Gerber_328P\350\277\267\344\275\240PD\347\203\231\351\223\201.zip" "b/Gerber_328P\350\277\267\344\275\240PD\347\203\231\351\223\201.zip" new file mode 100644 index 0000000..ff4616b Binary files /dev/null and "b/Gerber_328P\350\277\267\344\275\240PD\347\203\231\351\223\201.zip" differ diff --git "a/Schematic_328P\350\277\267\344\275\240PD\347\224\265\347\203\231\351\223\201.pdf" "b/Schematic_328P\350\277\267\344\275\240PD\347\224\265\347\203\231\351\223\201.pdf" new file mode 100644 index 0000000..cd7b716 Binary files /dev/null and "b/Schematic_328P\350\277\267\344\275\240PD\347\224\265\347\203\231\351\223\201.pdf" differ diff --git "a/iBOM\345\257\271\347\205\247\347\204\212\346\216\245.html" "b/iBOM\345\257\271\347\205\247\347\204\212\346\216\245.html" new file mode 100644 index 0000000..70a609c --- /dev/null +++ "b/iBOM\345\257\271\347\205\247\347\204\212\346\216\245.html" @@ -0,0 +1,3530 @@ + + + + + + + Interactive BOM for KiCAD + + + + + +
+
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+ + +
+
+ + + + + + + + + + + +
+ Title + + Revision +
+ Company + + Date +
+
+
+
+
+
+ + +
+ +
+
+
+ + + + + +
+
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
+ + + diff --git a/v1.03/A_ReadMe.ino b/v1.03/A_ReadMe.ino new file mode 100644 index 0000000..021e058 --- /dev/null +++ b/v1.03/A_ReadMe.ino @@ -0,0 +1,29 @@ +/* + 校准温度曲线的方法 + 1.准备好能测量0 - 500摄氏度的设备,探头建议使用裸装,以免外壳热传导导致热量损失测量不准 + 2.将探头紧压住烙铁头发热前段(上锡部分再下来一点),一定要紧紧压住,不然也会测量不准 + 3.放置好烙铁头以免校准时烫伤手或物品! + 4.接上电源,从控制板进入‘校准’界面,将空心选框移动至第1段温度处(即对应的ADC 10下面) + 5.按下确认键,此时空心选框变成实心选框,烙铁头开始加热,等待最下方的‘Now ADC’值稳定在一定的范围,与第一行相应的ADC值差不多即可(此时是ADC 10) + 6.使用测量设备测量烙铁头的温度,将第1段温度调至测量得到的温度(实心选框状态可旋转旋钮调节数值) + 7.依次测量剩下的第2段、第3段、第4段温度并输入至控制器 + 8.测量完4段温度后将光标移至Save,按下确认键,等待程序计时温度曲线 + 9.计算完会显示P系数界面,,再按下确认键即可退出校准界面 + 10.在主界面准备进行二次校准 + 11.在主界面开启加热至第二段校准的温度,如265,则加热至260度,若显示温度比实际高的话就到校准界面调高第二段温度,低则调低 + 12.依次加热至第三第四段温度并校准,直至自己满意为止 + 13.进入到“烙铁”选项,将冷端补偿温度改为此时主界面所显示的环境温度值(屏幕右上角),完毕。 +*/ + +/* + 长按操作(5下短音最后1下长音) + 主界面,进入设置界面 + 其他界面,退出至主界面 + 双击操作(2下短音) + 主界面,加热或停止状态切换 + 其他界面,无 + 单击(1下短音) + 主界面,无 + 设置界面,进入二级菜单 + 二级菜单,切换数值更改选中状态,或确认更改数值,无选框状态则退出至一级菜单 +*/ diff --git a/v1.03/Buzzer.ino b/v1.03/Buzzer.ino new file mode 100644 index 0000000..bdec37b --- /dev/null +++ b/v1.03/Buzzer.ino @@ -0,0 +1,83 @@ +//********** 控制蜂鸣器发声的频率和时间,系统延时法,占用系统速度大 ********** +uint32_t error_buzzer_db_time = 0; +void buzzer_run() +{ + if (buzzer_state == 1) + { + for (uint16_t i = 0; i < buzzer_count; i++) + { + digitalWrite(buzzer_pin, 1); + delayMicroseconds(buzzer_time); + digitalWrite(buzzer_pin, 0); + if (i < buzzer_count - 1) delayMicroseconds(buzzer_time); //最后一次不需要延时 + } + buzzer_state = 0; + } + //错误提示报警音 + if (vin_error == 1 || t12_adc_error == 1) + { + if (millis() - error_buzzer_db_time > 1000) + { + buzzer(120, 300); + error_buzzer_db_time = millis(); + } + } + + if (buzzer_szjm_state == 1) //进入设置界面时发出声音提示一下 + { + buzzer(150, 720); + buzzer_szjm_state = 0; + } + else if (buzzer_zjm_state == 1) //退出至主界面时发出声音提示一下 + { + buzzer(150, 720); + buzzer_zjm_state = 0; + } +} + +void buzzer(uint16_t time, uint16_t count) +{ + buzzer_state = 1; //准备好蜂鸣器 + buzzer_time = time; //设置时间 + buzzer_count = count; //设置次数 +} +//********************************************************* + +//****** 控制蜂鸣器发声的频率和时间,内部中断法,占用系统速度小 ****** + +/*void buzzer(uint16_t time, uint16_t count) //时间单位ms + { + if (buzzer_state == 0 && digitalRead(buzzer_pin) == 0) //蜂鸣器停止状态才能设置定时器 + { + buzzer_count = count; //设置次数 + Timer1.initialize(time); //设置时间 + Timer1.attachInterrupt(buzzer_isr); //设置定时器中断函数 + Timer1.start(); //启动定时器 + } + } + void buzzer_isr() + { + buzzer_isr_count++; + bitWrite(PINB, 0, 1); //设置pin8为输出 PINX写1翻转状态 + buzzer_state = 1; //标识蜂鸣器正在工作 + if (buzzer_isr_count >= buzzer_count) + { + buzzer_isr_count = 0; // 清除计数 + buzzer_state = 0; //标识蜂鸣器已停止 + digitalWrite(buzzer_pin, 0); //关闭蜂鸣器 + Timer1.stop(); //停止中断 + } + }*/ +//********************************************************* +uint8_t get_num_digit(uint32_t num)//获取数字的位数 +{ + uint8_t count = 0; + if (num == 0) count = 1; + while (num != 0) + { + // n = n/10 + num /= 10; + ++count; + } + return count; +} diff --git a/v1.03/CurveFitting.ino b/v1.03/CurveFitting.ino new file mode 100644 index 0000000..eac1bb7 --- /dev/null +++ b/v1.03/CurveFitting.ino @@ -0,0 +1,125 @@ +//********** 曲线拟合程序 ********** +//曲线拟合算法来至https://blog.csdn.net/m0_37362454/article/details/82456616 by欧阳小俊 +void qxnh_run() //曲线拟合运行 +{ + int16_t i, sizenum; + float P[4]; + int8_t dimension = 3; //3次多项式拟合 + // 要拟合的数据 + int xx[] = {sz_adc0, sz_adc1, sz_adc2, sz_adc3}; //t12 adc + //int yy[] = {45, 219, 366, 435}; //测量设备的温度 + + sizenum = sizeof(xx) / sizeof(xx[0]); //拟合数据的维数 + polyfit(sizenum, xx, sz_temp, dimension, P); + + sz_p[0] = P[0]; + sz_p[1] = P[1]; + sz_p[2] = P[2]; + sz_p[3] = P[3]; + /* + 得出系数:P[0],P[1],P[2] + 曲线公式:y = P[3]*X*X*X+P[2]*X*X + P[1]*X + P[0] + 曲线公式:t12_temp =P[3]* t12_ad * t12_ad* t12_ad + P[2] * t12_ad * t12_ad + P[1] * t12_ad + P[0]; + */ +} + +/*==================polyfit(n,x,y,poly_n,a)===================*/ +/*=======拟合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n========*/ +/*=====n是数据个数 xy是数据值 poly_n是多项式的项数======*/ +/*===返回a0,a1,a2,……a[poly_n],系数比项数多一(常数项)=====*/ +void polyfit(int n, int x[], int y[], int poly_n, float p[]) +{ + int i, j; + float *tempx, *tempy, *sumxx, *sumxy, *ata; + + tempx = (float *)calloc(n , sizeof(float)); + sumxx = (float *)calloc((poly_n * 2 + 1) , sizeof(float)); + tempy = (float *)calloc(n , sizeof(float)); + sumxy = (float *)calloc((poly_n + 1) , sizeof(float)); + ata = (float *)calloc( (poly_n + 1) * (poly_n + 1) , sizeof(float) ); + for (i = 0; i < n; i++) + { + tempx[i] = 1; + tempy[i] = y[i]; + } + for (i = 0; i < 2 * poly_n + 1; i++) + { + for (sumxx[i] = 0, j = 0; j < n; j++) + { + sumxx[i] += tempx[j]; + tempx[j] *= x[j]; + } + } + for (i = 0; i < poly_n + 1; i++) + { + for (sumxy[i] = 0, j = 0; j < n; j++) + { + sumxy[i] += tempy[j]; + tempy[j] *= x[j]; + } + } + for (i = 0; i < poly_n + 1; i++) + { + for (j = 0; j < poly_n + 1; j++) + { + ata[i * (poly_n + 1) + j] = sumxx[i + j]; + } + } + gauss_solve(poly_n + 1, ata, p, sumxy); + + free(tempx); + free(sumxx); + free(tempy); + free(sumxy); + free(ata); +} +/*============================================================ + 高斯消元法计算得到 n 次多项式的系数 + n: 系数的个数 + ata: 线性矩阵 + sumxy: 线性方程组的Y值 + p: 返回拟合的结果 + ============================================================*/ +void gauss_solve(int n, float A[], float x[], float b[]) +{ + int i, j, k, r; + float max; + for (k = 0; k < n - 1; k++) + { + max = fabs(A[k * n + k]); // find maxmum + r = k; + for (i = k + 1; i < n - 1; i++) + { + if (max < fabs(A[i * n + i])) + { + max = fabs(A[i * n + i]); + r = i; + } + } + if (r != k) + { + for (i = 0; i < n; i++) //change array:A[k]&A[r] + { + max = A[k * n + i]; + A[k * n + i] = A[r * n + i]; + A[r * n + i] = max; + } + max = b[k]; //change array:b[k]&b[r] + b[k] = b[r]; + b[r] = max; + } + + for (i = k + 1; i < n; i++) + { + for (j = k + 1; j < n; j++) + A[i * n + j] -= A[i * n + k] * A[k * n + j] / A[k * n + k]; + b[i] -= A[i * n + k] * b[k] / A[k * n + k]; + } + } + + for (i = n - 1; i >= 0; x[i] /= A[i * n + i], i--) + { + for (j = i + 1, x[i] = b[i]; j < n; j++) + x[i] -= A[i * n + j] * x[j]; + } +} diff --git a/v1.03/Display.ino b/v1.03/Display.ino new file mode 100644 index 0000000..dda0369 --- /dev/null +++ b/v1.03/Display.ino @@ -0,0 +1,104 @@ +//********** 显示决策 ********** +uint32_t system_sleep_db_time = 0; //系统进入睡眠对比时间 +void display() +{ + if (xp_state == 0) //正常显示 + { + if (display_count == ZJM) zjm(); + else if (display_count == SZJM) szjm(); + else if (display_count == SZJM_PID) szjm_pid(); + else if (display_count == SZJM_SLEEP) szjm_sleep(); + else if (display_count == SZJM_OLED) szjm_oled(); + else if (display_count == SZJM_POWER) szjm_power(); + else if (display_count == SZJM_LAOTIE) szjm_laotie(); + else if (display_count == SZJM_JIAOZHUN) szjm_jiaozhun(); + } + else xpjm(); //显示息屏界面 +} + +void draw_page(void) +{ + static uint8_t is_next_page = 0; + // 调用第一页,如果需要 + if ( is_next_page == 0 ) + { + u8g2.firstPage(); + is_next_page = 1; + } + // 画我们的屏幕 + display(); + // 调用下一页 + if ( u8g2.nextPage() == 0 ) + { + is_next_page = 0; // 确保调用了第一个页面 + } +} + +void display_hfccsz() //恢复出厂设置进度显示界面 +{ + uint16_t x_old = 0; + for (int i = 0 ; i < EEPROM.length() ; i++) + { + __asm__ __volatile__ ("wdr"); //防止没清除完因看门狗没喂狗导致重启 + uint16_t x_new = map(i, 0, EEPROM.length(), 0, 100); + if (x_new - x_old >= 5) + { + u8g2.firstPage(); + do { + u8g2.setCursor(50, 16); + u8g2.print(x_new); + u8g2.setCursor(75, 16); + u8g2.print("%"); + x_old = x_new; + } while ( u8g2.nextPage() ); + } + EEPROM.write(i, 0); //清除所有EEPROM + } + set_wdt_mod(1, 0); //利用看门狗实现软重启 +} + +void kj_display() //开机显示版本号 +{ + u8g2.firstPage(); + do { + u8g2.setFont(chinese15); + u8g2.setCursor(50, 21); + u8g2.print(version); + } while ( u8g2.nextPage() ); +} + +void xpjm() //息屏界面 +{ + if (xp_x - xp_x_old > 0) + { + if (xp_x_old != xp_x) xp_x_old++; + } + else if (xp_x - xp_x_old < 0 ) + { + if (xp_x_old != xp_x) xp_x_old--; + } + + if (xp_y - xp_y_old > 0) + { + if (xp_y_old != xp_y) xp_y_old++; + } + else if (xp_y - xp_y_old < 0 ) + { + if (xp_y_old != xp_y) xp_y_old--; + } + + u8g2.setFont(chinese15); + u8g2.setCursor(xp_x_old, xp_y_old); + u8g2.print(tc1047_temp, 1); + u8g2.setCursor(xp_x_old + 27, xp_y_old - 1); + u8g2.print("℃"); +} + +/*u8g2.firstPage(); + do { + u8g2.setFont(chinese15); + u8g2.setCursor(xp_x, xp_y); + u8g2.print(tc1047_temp, 1); + u8g2.setCursor(xp_x + 27, xp_y - 1); + u8g2.print("℃"); + } while ( u8g2.nextPage() );*/ diff --git a/v1.03/DisplayMain.ino b/v1.03/DisplayMain.ino new file mode 100644 index 0000000..0c9ff16 --- /dev/null +++ b/v1.03/DisplayMain.ino @@ -0,0 +1,193 @@ +//********** 画主界面 ********** +uint8_t zjm_x1 = 0; +uint8_t zjm_x2 = 100; +#define zjm_x3 75 +#define zjm_x4 zjm_x3+4 + +#define zjm_y1 7 +#define zjm_y2 19 +#define zjm_y3 32 +#define zjm_y4 14 +boolean zjm_dh_run = 0; //主界面动画状态 0-不允许 1-允许 +uint32_t zjm_dh_time1 = 0; //动画1运转对比时间 +uint32_t zjm_dh_time2 = 0; //动画2运转对比时间 +//热、停切换动画变量 +uint8_t zjm_dh_x1 = 0; +uint8_t zjm_dh_y1 = 0; +uint8_t zjm_dh_r1 = 1; +//pwm动效动画 +uint8_t zjm_dh_l[14]; +//开机过度动画y增量 +int8_t zjm_dh_y = 32; +void zjm() +{ + //****** 画当前温度及烙铁错误提示 + if (t12_error == 0 && t12_adc_error == 0) //正常画面 + { + u8g2.setFont(u8g2_font_bubble_tn); + if (t12_temp >= 99)u8g2.setCursor(0, zjm_dh_y + 18); + else u8g2.setCursor(10, zjm_dh_y + 18); + if (t12_switch == 1 && (thisError_average <= 4 && thisError_average >= -4)) u8g2.print(t12_temp_average); + else u8g2.print(t12_temp); + } + else if (t12_adc_error == 1) zjm_error2(); //T12ADC超出测量范围画面 + else if (t12_error == 1) zjm_error3(); //手柄未接显示画面 + //****** 画设置温度进度条 + u8g2.setFont(u8g2_font_saikyosansbold8_8n); + //自动获取设置温度的范围 + set_temp_max = ((sz_temp[3]) / 10 ) * 10; + set_temp_min = ((sz_temp[0]) / 10) * 10; + zjm_x1 = map(set_temp, set_temp_min, set_temp_max, 3, 57); + u8g2.drawDisc(zjm_x1, zjm_dh_y + 28, 2);//画实心圆 + u8g2.drawBox(0, zjm_dh_y + 30, 61, 2); //画实心框 + if (set_temp <= 260)u8g2.setCursor(zjm_x1 + 4, zjm_dh_y + 29); //画设置温度 + else u8g2.setCursor(zjm_x1 - 26, zjm_dh_y + 29); //画设置温度 + u8g2.print(set_temp); + + //****** 画加热提示及切换动画 + u8g2.setFont(chinese15); + if (zjm_dh_y != 0) //开机过渡动画变量变化 + { + zjm_dh_y --; + u8g2.setCursor(50, zjm_dh_y - 11); + u8g2.print(version); + } + if (/*millis() - zjm_dh_time1 > 30 &&*/ zjm_dh_run == 1) + { + if (zjm_dh_x1 < 7) + { + zjm_dh_x1++; + zjm_dh_y1++; + if (zjm_dh_x1 == 7) + { + zjm_dh_r1 = 0; + if (t12_switch == 1 && zjm_sleep_ts == 0) EEPROM.put(set_temp_eeprom, set_temp); //停止时保存当前的设置温度 + t12_switch = !t12_switch; //动画播放完,切换T12工作状态 + MsTimer2::stop(); //停止一次 然后在MsTimer2_rw1()里自动切换定时的中断任务 + } + zjm_dh_time1 = millis(); + } + else if (zjm_dh_x1 >= 7 && millis() - zjm_dh_time1 > 300) + { + zjm_dh_x1 = 0; + zjm_dh_y1 = 0; + zjm_dh_r1 = 1; + zjm_dh_run = 0; //关闭动画 + } + } + u8g2.drawRFrame(zjm_x3 - 3, zjm_dh_y + zjm_y4 - 14, 18, 18, 3); //空心圆角方形 + u8g2.setCursor(zjm_x3, zjm_dh_y + zjm_y4); + if (t12_switch == 1 && zjm_sleep_ts == 0) u8g2.print("热"); + else if (t12_switch == 1 && zjm_sleep_ts == 1) u8g2.print("休"); + else u8g2.print("停"); + if (zjm_dh_x1 == 7)u8g2.setDrawColor(2); + u8g2.drawRBox(80 - zjm_dh_x1, zjm_dh_y + 8 - zjm_dh_y1, 2 + zjm_dh_x1 * 2, 2 + zjm_dh_y1 * 2, zjm_dh_r1); //实心圆角方形 + if (zjm_dh_x1 == 7)u8g2.setDrawColor(1); + + //****** 画PWM输出比例动画 + if (t12_switch == 1) + { + uint16_t zjm_pwmdh_time = map(pid_out, pwm_min, pwm_max, 450, 150); //输出比例决定刷新时间 + uint8_t zjm_pwmdh_l = map(pid_out, pwm_min, pwm_max, 3, 12); //输出比例决定L的最大值 + if (millis() - zjm_dh_time2 > zjm_pwmdh_time) + { + for (uint8_t i = 0; i < 14; i++) + { + zjm_dh_l[i] = random(1, zjm_pwmdh_l); + } + zjm_dh_time2 = millis(); + } + + for (uint8_t i = 0; i < 14; i++) + { + u8g2.drawLine(74 + i, zjm_dh_y + 32, 74 + i, zjm_dh_y + 32 - zjm_dh_l[i]); //绘制垂直线,X,Y,长度 + //delay(100); + } + } + else u8g2.drawHLine(74, zjm_dh_y + 31, 14); + + //****** 画室温-电压-电流-工作状态 + if (vin_error == 1) zjm_error1(); //电压电流有一个报警就显示 报警提示画面 + else zjm_vin_ec_temp_state(); //显示正常画面 + + //****** 调试信息显示 + //u8g2.setCursor(75, 32); + //u8g2.print(zjm_ca_count); +} + + +void zjm_vin_ec_temp_state() //画室温-电压-电流-工作状态 +{ + //画室温-电压 + u8g2.setFont(u8g2_font_lucasfont_alternate_tr); + u8g2.setCursor(zjm_x2, zjm_dh_y + zjm_y1); + u8g2.print(tc1047_temp, 1); + u8g2.drawCircle(zjm_x2 + 21, zjm_dh_y + zjm_y1 - 6, 1, U8G2_DRAW_ALL); //画空心圆 + u8g2.setCursor(zjm_x2 + 23, zjm_dh_y + zjm_y1); + u8g2.print("C"); + + u8g2.setCursor(zjm_x2, zjm_dh_y + zjm_y2); + u8g2.print(vin, 1); + u8g2.setCursor(zjm_x2 + 22, zjm_dh_y + zjm_y2); + u8g2.print("V"); + + u8g2.setCursor(zjm_x2, zjm_dh_y + zjm_y3); + u8g2.print(pid_out_bfb); + u8g2.setCursor(zjm_x2 + 20, zjm_dh_y + zjm_y3); + u8g2.print("%"); + + //u8g2.setCursor(70, 27); + //u8g2.print(t12_ad,0); + + //u8g2.setCursor(45, 27); + //u8g2.print(sleep_count); + //u8g2.setCursor(65, 27); + //u8g2.print(xp_time_count); + + /*u8g2.setCursor(55, 13); + u8g2.print(sleep_MsTimer2_state);*/ + + //u8g2.setCursor(50, 27); + //u8g2.print(pid_out); + + //u8g2.setCursor(0, 29); + //u8g2.print(t12_temp_read_time); + + //u8g2.setCursor(0, 29); + //u8g2.print(analogRead(tc1047_pin)); +} +void zjm_error1() //主界面 电压电流报警 提示 +{ + u8g2.setFont(chinese15); + if (vin_error == 1) + { + u8g2.setCursor(95, zjm_dh_y + 13); + u8g2.print("电 压"); + u8g2.setCursor(95, zjm_dh_y + 29); + u8g2.print("过 低"); + } + u8g2.setDrawColor(2); + u8g2.drawBox(95 - 2, zjm_dh_y + 0, 40, 32); //实心方形 + u8g2.setDrawColor(1); +} +void zjm_error2() //主界面 温度超出测量范围 错误提示 +{ + u8g2.setFont(u8g2_font_lucasfont_alternate_tr); + u8g2.setCursor(12, zjm_dh_y + 8); + u8g2.print("T12 ADC"); + u8g2.setCursor(23, zjm_dh_y + 17); + u8g2.print("HIGH"); + u8g2.setDrawColor(2); + u8g2.drawBox(0, zjm_dh_y + 0, 61, 18); //实心方形 + u8g2.setDrawColor(1); +} +void zjm_error3() //主界面 手柄未接显示界面 错误提示 +{ + u8g2.setFont(chinese15); + u8g2.setCursor(5, zjm_dh_y + 14); + u8g2.print("手柄未接"); + + u8g2.setDrawColor(2); + u8g2.drawBox(0, zjm_dh_y + 0, 61, 18); //实心方形 + u8g2.setDrawColor(1); +} diff --git a/v1.03/DisplaySet.ino b/v1.03/DisplaySet.ino new file mode 100644 index 0000000..21a99a8 --- /dev/null +++ b/v1.03/DisplaySet.ino @@ -0,0 +1,505 @@ +//********** 画设置主界面及其他界面 ********** +#define szjm_y1 21 +int16_t szjm_dh_x[6] = {0, 50, 100, 150, 200, 250}; +int16_t szjm_dh_x_count = 0; //设置界面动画x增量记录 + +#define szjm_dh_bc 5 //变化步长,只能为5的倍数 +void szjm() +{ + //画十字坐标 + //u8g2.drawHLine(0, 15, 128); + //u8g2.drawVLine(63, 0, 32); + //********** 线性滚动动画 + if (szjm_kxxk_L == 1) //顺时针滚动 + { + szjm_dh_x_count += szjm_dh_bc; //记录变化次数 + for (uint8_t i = 0; i < 6; i++) //开始变化 + { + szjm_dh_x[i] += szjm_dh_bc; //步长5 + } + for (uint8_t i = 0; i < 6; i++) //数值限制 + { + if (szjm_dh_x[i] > 250)szjm_dh_x[i] = -45; + } + if (szjm_dh_x_count >= 50) //变化完毕 + { + szjm_kxxk_L = 0; //释放状态 + szjm_dh_x_count = 0; //变化次数清零 + if (szjm_kxxk_count >= 6) szjm_kxxk_count = 0; //数值限制 + } + } + else if (szjm_kxxk_R == 1) //逆时针滚动 + { + szjm_dh_x_count -= szjm_dh_bc; //记录变化次数 + for (uint8_t i = 0; i < 6; i++) //开始变化 + { + szjm_dh_x[i] -= szjm_dh_bc; //步长5 + } + for (uint8_t i = 0; i < 6; i++) //数值限制 + { + if (szjm_dh_x[i] < -150)szjm_dh_x[i] = 145; + } + if (szjm_dh_x_count <= -50) //变化完毕 + { + szjm_kxxk_R = 0; //释放状态 + szjm_dh_x_count = 0; //变化次数清零 + if (szjm_kxxk_count <= -6) szjm_kxxk_count = 0; //数值限制 + } + } + //************************************************** + //********** 画文字和框框 + //调试信息显示 + //u8g2.setFont(u8g2_font_lucasfont_alternate_tr); + //u8g2.setCursor(0, 31); + //u8g2.print(szjm_dh_x_count); + //u8g2.setCursor(100, 31); + //u8g2.print(szjm_kxxk_count); + //u8g2.setCursor(50, 31); + //u8g2.print(szjm_dh_x[0]); + + u8g2.setFont(chinese15); + if (szjm_dh_x[0] >= -50 && szjm_dh_x[0] <= 150) + { + u8g2.setCursor(szjm_dh_x[0], szjm_y1); + u8g2.print("PID"); + } + if (szjm_dh_x[1] >= -50 && szjm_dh_x[1] <= 150) + { + u8g2.setCursor(szjm_dh_x[1], szjm_y1); + u8g2.print("休眠"); + } + if (szjm_dh_x[2] >= -50 && szjm_dh_x[2] <= 150) + { + u8g2.setCursor(szjm_dh_x[2], szjm_y1); + u8g2.print("屏幕"); + } + if (szjm_dh_x[3] >= -50 && szjm_dh_x[3] <= 150) + { + u8g2.setCursor(szjm_dh_x[3], szjm_y1); + u8g2.print("电源"); + } + if (szjm_dh_x[4] >= -50 && szjm_dh_x[4] <= 150) + { + u8g2.setCursor(szjm_dh_x[4], szjm_y1); + u8g2.print("校准"); + } + if (szjm_dh_x[5] >= -50 && szjm_dh_x[5] <= 150) + { + u8g2.setCursor(szjm_dh_x[5], szjm_y1); + u8g2.print("烙铁"); + } + u8g2.setDrawColor(2); + u8g2.drawRBox(43, 6, 40, 20, 1); //空心圆角方形 + u8g2.setDrawColor(1); +} + +//********** PID设置界面 ********** +#define szjm_pid_x1 2 +#define szjm_pid_x2 14 + +#define szjm_pid_x3 82 +#define szjm_pid_x4 94 + +#define szjm_pid_y1 14 +#define szjm_pid_y2 29 +void szjm_pid() +{ + u8g2.setCursor(szjm_pid_x1, szjm_pid_y1); + u8g2.print("P"); + u8g2.setCursor(szjm_pid_x2, szjm_pid_y1); + u8g2.print(p, 1); + + u8g2.setCursor(szjm_pid_x3, szjm_pid_y1); + u8g2.print("I"); + u8g2.setCursor(szjm_pid_x4, szjm_pid_y1); + u8g2.print(i, 1); + + u8g2.setCursor(szjm_pid_x1, szjm_pid_y2); + u8g2.print("D"); + u8g2.setCursor(szjm_pid_x2, szjm_pid_y2); + u8g2.print(d, 1); + + //画选框 + switch (szjm_pid_kxxk_count) //空心选框的位置 + { + case 1: //p + if (szjm_pid_sxxk_count == szjm_pid_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_pid_x1 - 2, szjm_pid_y1 - 13, 48, 16); //实心方形 + //画水平线,标识进入小数点模式 + if (dec_state == 1) u8g2.drawHLine(szjm_pid_x2 + 4 + (get_num_digit(p) * 6), szjm_pid_y1 + 1, 10); + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_pid_x1 - 2, szjm_pid_y1 - 13, 48, 16); //空心方形 + break; + case 2: //i + if (szjm_pid_sxxk_count == szjm_pid_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_pid_x3 - 2, szjm_pid_y1 - 13, 48, 16); //实心方形 + //画水平线,标识进入小数点模式 + if (dec_state == 1) u8g2.drawHLine(szjm_pid_x4 + 4 + (get_num_digit(i) * 6), szjm_pid_y1 + 1, 10); + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_pid_x3 - 2, szjm_pid_y1 - 13, 48, 16); //空心方形 + break; + case 3: //d + if (szjm_pid_sxxk_count == szjm_pid_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_pid_x1 - 2, szjm_pid_y2 - 13, 48, 16); //实心方形 + //画水平线,标识进入小数点模式 + if (dec_state == 1) u8g2.drawHLine(szjm_pid_x2 + 4 + (get_num_digit(d) * 6), szjm_pid_y2 + 1, 10); + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_pid_x1 - 2, szjm_pid_y2 - 13, 48, 16); //空心方形 + break; + } +} + +//********** 休眠设置界面 ********** +#define szjm_sleep_x1 2 +#define szjm_sleep_x2 105 +#define szjm_sleep_y1 14 +#define szjm_sleep_y2 29 +void szjm_sleep() +{ + u8g2.setCursor(szjm_sleep_x1, szjm_sleep_y1); + u8g2.print("休眠时间(S)"); + u8g2.setCursor(szjm_sleep_x2, szjm_sleep_y1); + u8g2.print(sleep_time); + + u8g2.setCursor(szjm_sleep_x1, szjm_sleep_y2); + u8g2.print("休眠温度(℃)"); + u8g2.setCursor(szjm_sleep_x2, szjm_sleep_y2); + u8g2.print(sleep_temp); + + //画选框 + switch (szjm_sleep_kxxk_count) //空心选框的位置 + { + case 1: //设置温度 + if (szjm_sleep_sxxk_count == szjm_sleep_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_sleep_x1 - 2, szjm_sleep_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_sleep_x1 - 2, szjm_sleep_y1 - 13, 128, 16); //空心方形 + break; + case 2: //设置温度 + if (szjm_sleep_sxxk_count == szjm_sleep_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_sleep_x1 - 2, szjm_sleep_y2 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_sleep_x1 - 2, szjm_sleep_y2 - 13, 128, 16); //空心方形 + break; + } +} + +//********** OLED亮度设置界面 ********** +#define szjm_oled_x1 2 +#define szjm_oled_x2 106 +#define szjm_oled_x3 86 +#define szjm_oled_y1 14 +#define szjm_oled_y2 29 +void szjm_oled() +{ + if (szjm_oled_kxxk_count == 3) //第2页 + { + u8g2.setCursor(szjm_oled_x1, szjm_oled_y1); + u8g2.print("旋转方向"); + u8g2.setCursor(szjm_oled_x3, szjm_oled_y1); + if (xzbmq_fx == 0) u8g2.print("顺+逆-"); + else u8g2.print("顺-逆+"); + } + else //第1页 + { + u8g2.setCursor(szjm_oled_x1, szjm_oled_y1); + u8g2.print("屏幕亮度"); + u8g2.setCursor(szjm_oled_x2, szjm_oled_y1); + u8g2.print(oled_ld); + + u8g2.setCursor(szjm_oled_x1, szjm_oled_y2); + u8g2.print("屏幕方向"); + u8g2.setCursor(szjm_oled_x2, szjm_oled_y2); + if (oled_fx == 0) u8g2.print("0"); + else u8g2.print("180"); + } + //画选框 + switch (szjm_oled_kxxk_count) //空心选框的位置 + { + case 1: //OLED亮度 + if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_oled_x1 - 2, szjm_oled_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_oled_x1 - 2, szjm_oled_y1 - 13, 128, 16); //空心方形 + break; + case 2: //OLED方向 + if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_oled_x1 - 2, szjm_oled_y2 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_oled_x1 - 2, szjm_oled_y2 - 13, 128, 16); //空心方形 + break; + case 3: //旋转方向 + if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_oled_x1 - 2, szjm_oled_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_oled_x1 - 2, szjm_oled_y1 - 13, 128, 16); //空心方形 + break; + } +} + +//********** 电源设置界面 ********** +#define szjm_power_x1 2 +#define szjm_power_x2 100 +#define szjm_power_y1 14 +#define szjm_power_y2 29 +void szjm_power() +{ + if (szjm_power_kxxk_count == 3) //第2页 + { + u8g2.setCursor(szjm_power_x1, szjm_power_y1); + u8g2.print("低压报警(V)"); + u8g2.setCursor(szjm_power_x2, szjm_power_y1); + if (vin_low >= 3.3) u8g2.print(vin_low, 1); + else if (vin_low < 3.3) u8g2.print("关"); + } + else //第1页 + { + u8g2.setCursor(szjm_power_x1, szjm_power_y1); + u8g2.print("基准电压(V)"); + u8g2.setCursor(szjm_power_x2, szjm_power_y1); + u8g2.print(vcc_refer); + u8g2.setCursor(szjm_power_x1, szjm_power_y2); + u8g2.print("电源电压(V)"); + if (vin_refer >= 0) + { + u8g2.setCursor(szjm_power_x2 - 8, szjm_power_y2); + u8g2.print("+"); + u8g2.setCursor(szjm_power_x2, szjm_power_y2); + u8g2.print(vin_refer); + } + else + { + u8g2.setCursor(szjm_power_x2 - 6, szjm_power_y2); + u8g2.print(vin_refer); + } + } + //画选框 + switch (szjm_power_kxxk_count) //空心选框的位置 + { + case 1: //基准电压(V) + if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_power_x1 - 2, szjm_power_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_power_x1 - 2, szjm_power_y1 - 13, 128, 16); //空心方形 + break; + case 2: //基准电压(V) + if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_power_x1 - 2, szjm_power_y2 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_power_x1 - 2, szjm_power_y2 - 13, 128, 16); //空心方形 + break; + case 3: //电源电压(V) + if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_power_x1 - 2, szjm_power_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_power_x1 - 2, szjm_power_y1 - 13, 128, 16); //空心方形 + break; + } +} +//********** 烙铁设置界面 ********** +#define szjm_laotie_x1 2 +#define szjm_laotie_x4 105 + +#define szjm_laotie_y1 14 +#define szjm_laotie_y2 29 + +void szjm_laotie() +{ + + if (szjm_laotie_kxxk_count == 3) //第2页 + { + u8g2.setCursor(szjm_laotie_x1, szjm_laotie_y1); + u8g2.print("重置"); + u8g2.setCursor(szjm_laotie_x4, szjm_laotie_y1); + if (hfccsz_state == 1) u8g2.print("YES"); + else u8g2.print("NO"); + } + else //第1页 + { + u8g2.setCursor(szjm_laotie_x1, szjm_laotie_y1); + u8g2.print("冷端补偿(℃)"); + if (tc1047_refer <= -10) u8g2.setCursor(szjm_laotie_x4, szjm_laotie_y1); + else u8g2.setCursor(szjm_laotie_x4, szjm_laotie_y1); + u8g2.print(tc1047_refer); + + u8g2.setCursor(szjm_laotie_x1, szjm_laotie_y2); + u8g2.print("开机加热"); + u8g2.setCursor(szjm_laotie_x4, szjm_laotie_y2); + if (t12_kj_jr == 1) u8g2.print("YES"); + else u8g2.print("NO"); + } + + //画选框 + switch (szjm_laotie_kxxk_count) //空心选框的位置 + { + case 1: //冷端补偿 + if (szjm_laotie_sxxk_count == szjm_laotie_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_laotie_x1 - 2, szjm_laotie_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_laotie_x1 - 2, szjm_laotie_y1 - 13, 128, 16); //空心方形 + break; + case 2: //开机加热? + if (szjm_laotie_sxxk_count == szjm_laotie_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_laotie_x1 - 2, szjm_laotie_y2 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_laotie_x1 - 2, szjm_laotie_y2 - 13, 128, 16); //空心方形 + break; + case 3: //恢复出厂设置 + if (szjm_laotie_sxxk_count == szjm_laotie_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_laotie_x1 - 2, szjm_laotie_y1 - 13, 128, 16); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_laotie_x1 - 2, szjm_laotie_y1 - 13, 128, 16); //空心方形 + break; + } +} +//********** 校准设置界面 ********** +#define szjm_jiaozhun_x1 0 + +#define szjm_jiaozhun_x2 30 +#define szjm_jiaozhun_x3 54 +#define szjm_jiaozhun_x4 80 +#define szjm_jiaozhun_x5 106 + +#define szjm_jiaozhun_x6 102 + +#define szjm_jiaozhun_y1 7 +#define szjm_jiaozhun_y2 18 +#define szjm_jiaozhun_y3 31 +void szjm_jiaozhun() +{ + u8g2.setFont(u8g2_font_lucasfont_alternate_tr); + if (szjm_jiaozhun_kxxk_count == 6) + { + u8g2.setCursor(0, 7); + u8g2.print("P0:"); + u8g2.setCursor(25, 7); + u8g2.print(sz_p[0], 10); + + u8g2.setCursor(0, 15); + u8g2.print("P1:"); + u8g2.setCursor(25, 15); + u8g2.print(sz_p[1], 10); + + u8g2.setCursor(0, 24); + u8g2.print("P2:"); + u8g2.setCursor(25, 24); + u8g2.print(sz_p[2], 10); + + u8g2.setCursor(0, 32); + u8g2.print("P3:"); + u8g2.setCursor(25, 32); + u8g2.print(sz_p[3], 10); + } + else + { + u8g2.setCursor(szjm_jiaozhun_x1, szjm_jiaozhun_y1); + u8g2.print("ADC 10 350 650 940"); + u8g2.setCursor(szjm_jiaozhun_x1, szjm_jiaozhun_y2); + u8g2.print("Temp"); + u8g2.setCursor(szjm_jiaozhun_x2, szjm_jiaozhun_y2); + u8g2.print(sz_temp[0]); + u8g2.setCursor(szjm_jiaozhun_x3, szjm_jiaozhun_y2); + u8g2.print(sz_temp[1]); + u8g2.setCursor(szjm_jiaozhun_x4, szjm_jiaozhun_y2); + u8g2.print(sz_temp[2]); + u8g2.setCursor(szjm_jiaozhun_x5, szjm_jiaozhun_y2); + u8g2.print(sz_temp[3]); + + u8g2.drawHLine(0, 22, 128); + + u8g2.setCursor(szjm_jiaozhun_x1, szjm_jiaozhun_y3); + u8g2.print("Now ADC:"); + u8g2.setCursor(48, szjm_jiaozhun_y3); + u8g2.print(t12_ad, 0); + + u8g2.setCursor(szjm_jiaozhun_x6, szjm_jiaozhun_y3); + u8g2.print("Save"); + } + //画选框 + switch (szjm_jiaozhun_kxxk_count) //空心选框的位置 + { + case 1: //深圳头1段温度 + if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_jiaozhun_x2 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_jiaozhun_x2 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //空心方形 + break; + case 2: //深圳头2段温度 + if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_jiaozhun_x3 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_jiaozhun_x3 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //空心方形 + break; + case 3: //深圳头3段温度 + if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_jiaozhun_x4 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_jiaozhun_x4 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //空心方形 + break; + case 4: //深圳头4段温度 + if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_jiaozhun_x5 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //实心方形 + u8g2.setDrawColor(1); + } + else u8g2.drawFrame(szjm_jiaozhun_x5 - 2, szjm_jiaozhun_y2 - 9, 21, 11); //空心方形 + break; + case 5: //保存 + u8g2.setDrawColor(2); + u8g2.drawBox(szjm_jiaozhun_x6 - 2, szjm_jiaozhun_y3 - 8, 28, 9); //实心方形 + u8g2.setDrawColor(1); + break; + } +} diff --git a/v1.03/EEPROM.ino b/v1.03/EEPROM.ino new file mode 100644 index 0000000..e3c8855 --- /dev/null +++ b/v1.03/EEPROM.ino @@ -0,0 +1,56 @@ +//******************* 自动刷写eeprom ******************* +void eerpom_auto() +{ + EEPROM.get(auto_get_eeprom, auto_get); //获取自动刷写的状态 + if (auto_get > 1) auto_get = 0; //防止eeprom第0位不为0 + if (auto_get == 0) //状态为0开启刷写 + { + EEPROM.put(p_eeprom, p); //pid-p + EEPROM.put(i_eeprom, i); //pid-i + EEPROM.put(d_eeprom, d); //pid-d + EEPROM.put(sleep_time_eeprom, sleep_time); //休眠时间 + EEPROM.put(sleep_temp_eeprom, sleep_temp); //休眠温度 + EEPROM.put(oled_ld_eeprom, oled_ld); //OLED亮度 + EEPROM.put(vcc_refer_eeprom, vcc_refer); //基准电压 + EEPROM.put(vin_refer_eeprom, vin_refer); //电源电压校准值 + EEPROM.put(t12_kj_jr_eeprom, t12_kj_jr); //是否开机就加热 + EEPROM.put(vin_low_eeprom, vin_low); //输入电压过底报警阈值 + EEPROM.put(tc1047_refer_eeprom, tc1047_refer); //T12环境参考温度校准值 + EEPROM.put(oled_fx_eeprom, oled_fx); //OLED方向 + EEPROM.put(xzbmq_fx_eeprom, xzbmq_fx); //旋转编码器方向 + //写入曲线的4段温度 + EEPROM.put(sz_temp0_eeprom, sz_temp[0]); + EEPROM.put(sz_temp1_eeprom, sz_temp[1]); + EEPROM.put(sz_temp2_eeprom, sz_temp[2]); + EEPROM.put(sz_temp3_eeprom, sz_temp[3]); + //写入设置温度 + EEPROM.put(set_temp_eeprom, set_temp); + //刷写完,记录auto_get的状态,防止下次开机再次刷写 + EEPROM.put(auto_get_eeprom, 1); + auto_get = 1; + } + if (auto_get == 1)//状态为1只读取 + { + EEPROM.get(p_eeprom, p); //pid-p + EEPROM.get(i_eeprom, i); //pid-i + EEPROM.get(d_eeprom, d); //pid-d + EEPROM.get(sleep_time_eeprom, sleep_time); //休眠时间 + EEPROM.get(sleep_temp_eeprom, sleep_temp); //休眠温度 + EEPROM.get(oled_ld_eeprom, oled_ld); //OLED亮度 + EEPROM.get(vcc_refer_eeprom, vcc_refer); //基准电压 + EEPROM.get(vin_refer_eeprom, vin_refer); //电源电压校准值 + EEPROM.get(t12_kj_jr_eeprom, t12_kj_jr); //是否开机就加热 + EEPROM.get(vin_low_eeprom, vin_low); //输入电压过底报警阈值 + EEPROM.get(tc1047_refer_eeprom, tc1047_refer); //T12环境参考温度校准值 + EEPROM.get(oled_fx_eeprom, oled_fx); //OLED方向 + EEPROM.get(xzbmq_fx_eeprom, xzbmq_fx); //旋转编码器方向 + //获取曲线的4段温度 + EEPROM.get(sz_temp0_eeprom, sz_temp[0]); + EEPROM.get(sz_temp1_eeprom, sz_temp[1]); + EEPROM.get(sz_temp2_eeprom, sz_temp[2]); + EEPROM.get(sz_temp3_eeprom, sz_temp[3]); + //获取设置温度 + EEPROM.get(set_temp_eeprom, set_temp); + } +} +//****************************************************** diff --git a/v1.03/InterruptKey.ino b/v1.03/InterruptKey.ino new file mode 100644 index 0000000..3371f6f --- /dev/null +++ b/v1.03/InterruptKey.ino @@ -0,0 +1,580 @@ +//********** 编码器按键决策 ********** +#define xklv_time 120 //切换选框的滤波时间 +#define szlv_time 20 //切换选框的滤波时间 +#define szjm_qrcs 2; + +void xuan_zhaun() //旋转中断 选框决策 +{ + + /*Serial.print("DT "); Serial.print(digitalRead(DT)); + Serial.print(" | "); + Serial.print("CLK "); Serial.print(digitalRead(CLK)); + Serial.print(" | "); + Serial.print("SW "); Serial.print(digitalRead(SW)); + Serial.println(" ");*/ + if ((millis() - xzbmq_time) < szlv_time) return; + buzzer(100, 70); //时间,次数 + if (display_count == ZJM) + { + zjm_xz_key(); + buzzer_temp_average_state = 0; //准备好到达温度提示声 + sleep_count = 0; //休眠计数归零 + zjm_sleep_ts = 0; //提示主界面退出显示休眠状态 + t12_adc_error = 0; //清除温度超出测量范围提示 + xp_state = 0; //结束息屏 + xp_time_count = 0; //清除息屏计数 + xp_time_count_old = 0; //清除息屏计数旧 + } + else if (display_count == SZJM) szjm_xz_key(); + else if (display_count == SZJM_PID) pid_xz_key(); + else if (display_count == SZJM_SLEEP) sleep_xz_key(); + else if (display_count == SZJM_OLED) oled_xz_key(); + else if (display_count == SZJM_POWER) power_xz_key(); + else if (display_count == SZJM_LAOTIE) laotie_xz_key(); + else if (display_count == SZJM_JIAOZHUN) jiaozhun_xz_key(); + xzbmq_time = millis(); +} + +void an_xia() +{ + if ((millis() - xzbmq_time) < 160) return; + qj_sw_key(); //全局长按进入设置界面 或 退出至主界面 +} +//************************ 全局长按进入设置界面 或 退出至主界面 ************************ +void qj_sw_key() +{ + //长按计数增加 + if (digitalRead(SW) == 0) + { + qj_ca_count++; //计数加一 + buzzer(80, 150); //时间,次数 + + if (display_count == ZJM) t12_adc_error = 0; //清除温度超出测量范围提示 + xp_state = 0; //结束息屏 + xp_time_count = 0; //清除息屏计数 + xp_time_count_old = 0; //清除息屏计数旧 + + xzbmq_time = millis(); + } + //判断按了几次 该做些什么 + if (qj_ca_count >= 5) //进入设置界面 + { + if (display_count == ZJM) + { + display_count = SZJM; //在主界面时进入设置界面 + buzzer_szjm_state = 1; + } + else if (display_count != SZJM_JIAOZHUN) + { + display_count = ZJM; //在其他界面是退出至主界面 + buzzer_zjm_state = 1; + } + qj_ca_count = 0; //计数清零 + } + else if ((millis() - xzbmq_time) > 260) //等待一段时间,确定松手了 + { + //在主界面的按下决策 + if (display_count == ZJM) zjm_sw_key(); + //在设置界面的按下决策 + else if (display_count == SZJM) szjm_sw_key(); + //在PID界面的按下决策 + else if (display_count == SZJM_PID) pid_sw_key(); + //在休眠界面的按下决策 + else if (display_count == SZJM_SLEEP) sleep_sw_key(); + //在OLED亮度界面的按下决策 + else if (display_count == SZJM_OLED) oled_sw_key(); + //在电源校准界面的按下决策 + else if (display_count == SZJM_POWER) power_sw_key(); + //在烙铁界面的按下决策 + else if (display_count == SZJM_LAOTIE) laotie_sw_key(); + //在校准界面的按下决策 + else if (display_count == SZJM_JIAOZHUN) jiaozhun_sw_key(); + qj_ca_count = 0;//计数清零 + } +} +//************************ 主界面 ************************ +void zjm_sw_key() +{ + if (qj_ca_count == 2 && vin_error == 0 && t12_error == 0) // 启动或停止加热 + { + zjm_dh_run = 1; //允许播放动画 ,动画播放完在DisplayMain里切换T12工作状态 + zjm_sleep_ts = 0; //提示主界面退出显示休眠状态 + buzzer_temp_average_state = 0; //准备好到达温度提示声 + } +} +void zjm_xz_key() //主界面 旋转 +{ + if (digitalRead(DT) == xzbmq_fx) set_temp += 10; + else if (digitalRead(CLK) == xzbmq_fx) set_temp -= 10; + //自动获取设置温度的范围 + set_temp_max = ((sz_temp[3]) / 10 ) * 10; + set_temp_min = ((sz_temp[0]) / 10) * 10; + if (set_temp > set_temp_max) set_temp = set_temp_min; + else if (set_temp < set_temp_min) set_temp = set_temp_max; +} +//************************ 设置界面 ************************ +void szjm_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //进入二级菜单 + { + if (szjm_kxxk_count == 0) display_count = SZJM_SLEEP; //进入休眠设置菜单 + else if (szjm_kxxk_count == -5 || szjm_kxxk_count == 1) display_count = SZJM_PID; //进入PID设置菜单 + else if (szjm_kxxk_count == -1 || szjm_kxxk_count == 5) display_count = SZJM_OLED; //进入OELD亮度设置菜单 + else if (szjm_kxxk_count == -2 || szjm_kxxk_count == 4) display_count = SZJM_POWER; //进入电源设置菜单 + else if (szjm_kxxk_count == -4 || szjm_kxxk_count == 2) display_count = SZJM_LAOTIE;//进入烙铁设置菜单 + else if (szjm_kxxk_count == -3 || szjm_kxxk_count == 3) + { + //使用比较柔和的pid参数,退出校准界面时记得恢复正常的PID策略 + p = p_jz; //比例系数 + i = i_jz; //积分系数 + d = d_jz; //微分系数 + display_count = SZJM_JIAOZHUN;//进入烙铁设置菜单 + } + } +} +void szjm_xz_key() //设置界面 旋转 +{ + if (digitalRead(DT) == xzbmq_fx) + { + if (szjm_kxxk_L == 0 && szjm_kxxk_R == 0) //顺时针 + { + szjm_kxxk_L = 1; //允许播放动画 + szjm_kxxk_count++; //下一项 + } + } + else if (digitalRead(CLK) == xzbmq_fx) + { + if (szjm_kxxk_L == 0 && szjm_kxxk_R == 0) //逆时针 + { + szjm_kxxk_R = 1; //允许播放动画 + szjm_kxxk_count--; //上一项 + } + } +} +//************************ PID设置界面 ************************ +void pid_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_pid_kxxk_count) + { + case 0: //返回至设置界面 + display_count = SZJM; + break; + case 1: //p 存储 + if (szjm_pid_sxxk_count == 0) szjm_pid_sxxk_count = szjm_pid_kxxk_count; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 0) dec_state = 1; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 1) + { + EEPROM.put(p_eeprom, p); + dec_state = 0; + szjm_pid_sxxk_count = 0; + } + break; + case 2: //i 存储 + if (szjm_pid_sxxk_count == 0) szjm_pid_sxxk_count = szjm_pid_kxxk_count; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 0) dec_state = 1; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 1) + { + EEPROM.put(i_eeprom, i); + dec_state = 0; + szjm_pid_sxxk_count = 0; + } + break; + case 3: //d 存储 + if (szjm_pid_sxxk_count == 0) szjm_pid_sxxk_count = szjm_pid_kxxk_count; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 0) dec_state = 1; + else if (szjm_pid_sxxk_count == szjm_pid_kxxk_count && dec_state == 1) + { + EEPROM.put(d_eeprom, d); + dec_state = 0; + szjm_pid_sxxk_count = 0; + } + break; + } + } +} +void pid_xz_key() //设置界面 旋转 +{ + if (szjm_pid_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_pid_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_pid_kxxk_count--; + } + else if (szjm_pid_sxxk_count == 1) //p加减 + { + if (digitalRead(DT) == xzbmq_fx && dec_state == 0) p += 1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 0) p -= 1; + else if (digitalRead(DT) == xzbmq_fx && dec_state == 1) p += 0.1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 1) p -= 0.1; + } + else if (szjm_pid_sxxk_count == 2) //i加减 + { + if (digitalRead(DT) == xzbmq_fx && dec_state == 0) i += 1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 0) i -= 1; + else if (digitalRead(DT) == xzbmq_fx && dec_state == 1) i += 0.1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 1) i -= 0.1; + } + else if (szjm_pid_sxxk_count == 3) //d加减 + { + if (digitalRead(DT) == xzbmq_fx && dec_state == 0) d += 1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 0) d -= 1; + else if (digitalRead(DT) == xzbmq_fx && dec_state == 1) d += 0.1; + else if (digitalRead(CLK) == xzbmq_fx && dec_state == 1) d -= 0.1; + } + if (szjm_pid_kxxk_count > 3) szjm_pid_kxxk_count = 0; + else if (szjm_pid_kxxk_count < 0) szjm_pid_kxxk_count = 3; +} +//************************ 休眠设置界面 ************************ +void sleep_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_sleep_kxxk_count) + { + case 0: //返回至设置界面 + display_count = SZJM; + break; + case 1: //休眠时间 存储 + if (szjm_sleep_sxxk_count == 0) szjm_sleep_sxxk_count = szjm_sleep_kxxk_count; + else if (szjm_sleep_sxxk_count == szjm_sleep_kxxk_count) + { + EEPROM.put(sleep_time_eeprom, sleep_time); //休眠时间 + szjm_sleep_sxxk_count = 0; + } + break; + case 2: //休眠温度 存储 + if (szjm_sleep_sxxk_count == 0) szjm_sleep_sxxk_count = szjm_sleep_kxxk_count; + else if (szjm_sleep_sxxk_count == szjm_sleep_kxxk_count) + { + EEPROM.put(sleep_temp_eeprom, sleep_temp); //休眠温度 + szjm_sleep_sxxk_count = 0; + } + break; + } + } +} +void sleep_xz_key() //设置界面 旋转 +{ + if (szjm_sleep_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_sleep_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_sleep_kxxk_count--; + } + else if (szjm_sleep_sxxk_count == 1) //休眠时间加减 + { + if (digitalRead(DT) == xzbmq_fx) sleep_time += 1; + else if (digitalRead(CLK) == xzbmq_fx) sleep_time -= 1; + } + else if (szjm_sleep_sxxk_count == 2) //休眠温度加减 + { + if (digitalRead(DT) == xzbmq_fx) sleep_temp += 1; + else if (digitalRead(CLK) == xzbmq_fx) sleep_temp -= 1; + } + if (szjm_sleep_kxxk_count > 2) szjm_sleep_kxxk_count = 0; + else if (szjm_sleep_kxxk_count < 0) szjm_sleep_kxxk_count = 2; + else if (sleep_time > 999) sleep_time = 10; + else if (sleep_time < 10) sleep_time = 999; +} +//************************ OLED亮度设置界面 ************************ +void oled_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_oled_kxxk_count) + { + case 0: //返回至设置界面 + display_count = SZJM; + break; + case 1: //OLED亮度 存储 + if (szjm_oled_sxxk_count == 0) szjm_oled_sxxk_count = szjm_oled_kxxk_count; + else if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + EEPROM.put(oled_ld_eeprom, oled_ld); //OLED亮度 + szjm_oled_sxxk_count = 0; + } + break; + case 2: //OLED亮度 存储 + if (szjm_oled_sxxk_count == 0) szjm_oled_sxxk_count = szjm_oled_kxxk_count; + else if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + EEPROM.put(oled_fx_eeprom, oled_fx); //OLED方向 + if (oled_fx == 1)u8g2.setDisplayRotation(U8G2_R2); //旋转180度 + else u8g2.setDisplayRotation(U8G2_R0); //0度,默认方向 + szjm_oled_sxxk_count = 0; + } + break; + case 3: //旋转编码器方向 存储 + if (szjm_oled_sxxk_count == 0) szjm_oled_sxxk_count = szjm_oled_kxxk_count; + else if (szjm_oled_sxxk_count == szjm_oled_kxxk_count) + { + EEPROM.put(xzbmq_fx_eeprom, xzbmq_fx); //OLED方向 + EEPROM.get(xzbmq_fx_eeprom, xzbmq_fx); //OLED方向 + szjm_oled_sxxk_count = 0; + } + break; + } + } +} + +void oled_xz_key() //设置界面 旋转 +{ + if (szjm_oled_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_oled_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_oled_kxxk_count--; + if (szjm_oled_kxxk_count > 3) szjm_oled_kxxk_count = 0; + else if (szjm_oled_kxxk_count < 0) szjm_oled_kxxk_count = 3; + } + else if (szjm_oled_sxxk_count == 1) //OLED亮度 加减 + { + if (digitalRead(DT) == xzbmq_fx) oled_ld += 5; + else if (digitalRead(CLK) == xzbmq_fx) oled_ld -= 5; + if (oled_ld > 1 && oled_ld < 5) oled_ld = 5; + else if (oled_ld == 0)oled_ld = 255; + } + else if (szjm_oled_sxxk_count == 2) //OLED方向 状态切换 + { + if (digitalRead(DT) == xzbmq_fx) oled_fx = !oled_fx; + else if (digitalRead(CLK) == xzbmq_fx) oled_fx = !oled_fx; + } + else if (szjm_oled_sxxk_count == 3) //旋转编码器方向 状态切换 + { + if (digitalRead(DT) == xzbmq_fx) xzbmq_fx = !xzbmq_fx; + else if (digitalRead(CLK) == xzbmq_fx) xzbmq_fx = !xzbmq_fx; + } +} +//************************ 电源校准界面 ************************ +void power_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_power_kxxk_count) + { + case 0: //返回至设置界面 + display_count = SZJM; + break; + case 1: //基准电压 存储 + if (szjm_power_sxxk_count == 0) szjm_power_sxxk_count = szjm_power_kxxk_count; + else if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + EEPROM.put(vcc_refer_eeprom, vcc_refer); + szjm_power_sxxk_count = 0; + } + break; + case 2: //电源电压校准值 存储 + if (szjm_power_sxxk_count == 0) szjm_power_sxxk_count = szjm_power_kxxk_count; + else if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + EEPROM.put(vin_refer_eeprom, vin_refer); + szjm_power_sxxk_count = 0; + } + break; + case 3: //低压报警阈值 存储 + if (szjm_power_sxxk_count == 0) szjm_power_sxxk_count = szjm_power_kxxk_count; + else if (szjm_power_sxxk_count == szjm_power_kxxk_count) + { + EEPROM.put(vin_low_eeprom, vin_low); + szjm_power_sxxk_count = 0; + } + break; + } + } +} + +void power_xz_key() //设置界面 旋转 +{ + if (szjm_power_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_power_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_power_kxxk_count--; + if (szjm_power_kxxk_count > 3) szjm_power_kxxk_count = 0; + else if (szjm_power_kxxk_count < 0) szjm_power_kxxk_count = 3; + } + else if (szjm_power_sxxk_count == 1) //基准电压 加减 + { + if (digitalRead(DT) == xzbmq_fx) vcc_refer += 0.01; + else if (digitalRead(CLK) == xzbmq_fx) vcc_refer -= 0.01; + } + else if (szjm_power_sxxk_count == 2) //电源电压校准值 加减 + { + if (digitalRead(DT) == xzbmq_fx) vin_refer += 0.1; + else if (digitalRead(CLK) == xzbmq_fx) vin_refer -= 0.1; + } + else if (szjm_power_sxxk_count == 3) //低压报警阈值 加减 + { + if (digitalRead(DT) == xzbmq_fx) vin_low += 0.1; + else if (digitalRead(CLK) == xzbmq_fx) vin_low -= 0.1; + if (vin_low > 30)vin_low = 3.2; + else if (vin_low < 3.2)vin_low = 30; + } +} + +//************************ 烙铁界面 ************************ +void laotie_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_laotie_kxxk_count) + { + case 0: //返回至设置界面 + display_count = SZJM; + break; + case 1: //冷端补偿 存储 + if (szjm_laotie_sxxk_count == 0) szjm_laotie_sxxk_count = szjm_laotie_kxxk_count; + else if (szjm_laotie_sxxk_count == szjm_laotie_kxxk_count) + { + EEPROM.put(tc1047_refer_eeprom, tc1047_refer); + szjm_laotie_sxxk_count = 0; + } + break; + case 2: //开机加热 存储 + if (szjm_laotie_sxxk_count == 0) + { + t12_kj_jr = !t12_kj_jr; + EEPROM.put(t12_kj_jr_eeprom, t12_kj_jr); + } + break; + case 3: //恢复出厂设置 存储 + if (szjm_laotie_sxxk_count == 0) szjm_laotie_sxxk_count = szjm_laotie_kxxk_count; + else if (szjm_laotie_sxxk_count == szjm_laotie_kxxk_count) + { + if (hfccsz_state == 1) display_hfccsz(); + szjm_laotie_sxxk_count = 0; + } + break; + } + } +} +void laotie_xz_key() //设置界面 旋转 +{ + if (szjm_laotie_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_laotie_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_laotie_kxxk_count--; + if (szjm_laotie_kxxk_count > 3) szjm_laotie_kxxk_count = 0; + else if (szjm_laotie_kxxk_count < 0) szjm_laotie_kxxk_count = 3; + } + else if (szjm_laotie_sxxk_count == 1) //冷端补偿校准值 加减 + { + if (digitalRead(DT) == xzbmq_fx) tc1047_refer += 1; + else if (digitalRead(CLK) == xzbmq_fx) tc1047_refer -= 1; + if (tc1047_refer > 99)tc1047_refer = 0; + else if (tc1047_refer < -99) tc1047_refer = 0; + } + else if (szjm_laotie_sxxk_count == 3) //恢复出厂设置 状态切换 + { + if (digitalRead(DT) == xzbmq_fx) hfccsz_state = !hfccsz_state; + else if (digitalRead(CLK) == xzbmq_fx) hfccsz_state = !hfccsz_state; + } +} +//************************ 校准界面 ************************ +void jiaozhun_sw_key() //设置界面 按下 +{ + if (qj_ca_count == 1) //返回或进入调节框 + { + switch (szjm_jiaozhun_kxxk_count) + { + case 0: //返回至设置界面,并恢复正常PID参数 + display_count = SZJM; + szjm_jiaozhun_kxxk_count = 0; + EEPROM.get(p_eeprom, p); //pid-p + EEPROM.get(i_eeprom, i); //pid-i + EEPROM.get(d_eeprom, d); //pid-d + break; + case 1: //深圳校准温度1段 存储 + if (szjm_jiaozhun_sxxk_count == 0) + { + szjm_jiaozhun_sxxk_count = szjm_jiaozhun_kxxk_count; + t12_switch = 1; //打开加热 + } + else if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + EEPROM.put(sz_temp0_eeprom, sz_temp[0]); + szjm_jiaozhun_sxxk_count = 0; + t12_switch = 0; //关闭加热 + } + break; + case 2: //深圳校准温度2段 存储 + if (szjm_jiaozhun_sxxk_count == 0) + { + szjm_jiaozhun_sxxk_count = szjm_jiaozhun_kxxk_count; + t12_switch = 1; //打开加热 + } + else if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + EEPROM.put(sz_temp1_eeprom, sz_temp[1]); + szjm_jiaozhun_sxxk_count = 0; + t12_switch = 0; //关闭加热 + } + break; + case 3: //深圳校准温度3段 存储 + if (szjm_jiaozhun_sxxk_count == 0) + { + szjm_jiaozhun_sxxk_count = szjm_jiaozhun_kxxk_count; + t12_switch = 1; //打开加热 + } + else if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + EEPROM.put(sz_temp2_eeprom, sz_temp[2]); + szjm_jiaozhun_sxxk_count = 0; + t12_switch = 0; //关闭加热 + } + break; + case 4: //深圳校准温度4段 存储 + if (szjm_jiaozhun_sxxk_count == 0) + { + szjm_jiaozhun_sxxk_count = szjm_jiaozhun_kxxk_count; + t12_switch = 1; //打开加热 + } + else if (szjm_jiaozhun_sxxk_count == szjm_jiaozhun_kxxk_count) + { + EEPROM.put(sz_temp3_eeprom, sz_temp[3]); + szjm_jiaozhun_sxxk_count = 0; + t12_switch = 0; //关闭加热 + } + break; + case 5: //开始曲线拟合系数计算 + qxnh_run(); //计算曲线拟合系数 + szjm_jiaozhun_kxxk_count = 6; + break; + case 6: //返回至设置界面,并恢复正常PID参数 + display_count = SZJM; + szjm_jiaozhun_kxxk_count = 0; + EEPROM.get(p_eeprom, p); //pid-p + EEPROM.get(i_eeprom, i); //pid-i + EEPROM.get(d_eeprom, d); //pid-d + break; + } + } +} +void jiaozhun_xz_key() //设置界面 旋转 +{ + if (szjm_jiaozhun_sxxk_count == 0) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) szjm_jiaozhun_kxxk_count++; + else if (digitalRead(CLK) == xzbmq_fx) szjm_jiaozhun_kxxk_count--; + if (szjm_jiaozhun_kxxk_count > 6) szjm_jiaozhun_kxxk_count = 0; + else if (szjm_jiaozhun_kxxk_count < 0) szjm_jiaozhun_kxxk_count = 6; + } + else if (szjm_jiaozhun_sxxk_count == 1) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) sz_temp[0] += 1; + else if (digitalRead(CLK) == xzbmq_fx) sz_temp[0] -= 1; + } + else if (szjm_jiaozhun_sxxk_count == 2) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) sz_temp[1] += 1; + else if (digitalRead(CLK) == xzbmq_fx) sz_temp[1] -= 1; + } + else if (szjm_jiaozhun_sxxk_count == 3) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) sz_temp[2] += 1; + else if (digitalRead(CLK) == xzbmq_fx) sz_temp[2] -= 1; + } + else if (szjm_jiaozhun_sxxk_count == 4) //选框移动 + { + if (digitalRead(DT) == xzbmq_fx) sz_temp[3] += 1; + else if (digitalRead(CLK) == xzbmq_fx) sz_temp[3] -= 1; + } +} diff --git a/v1.03/MsTimer2.ino b/v1.03/MsTimer2.ino new file mode 100644 index 0000000..63d5fa1 --- /dev/null +++ b/v1.03/MsTimer2.ino @@ -0,0 +1,41 @@ +//定时器2 +uint32_t t12_sleep_old_time = 0; +void MsTimer2_rw1() +{ + if (t12_switch == 1) //烙铁启动,打开休眠判断决策 + { + if (bitRead(TIMSK2, TOIE2) == 0) + { + sleep_count = 0; + xp_time_count = 0; + MsTimer2::set(1000, sleep_timing); // 1000ms 运行一次 + MsTimer2::start(); //打开定时器2计数 + } + if (millis() - t12_sleep_old_time > 700) + { + t12_sleep(); //T12休眠决策 + t12_sleep_old_time = millis(); + } + } + else if (t12_switch == 0) + { + if (bitRead(TIMSK2, TOIE2) == 0) + { + sleep_count = 0; + xp_time_count = 0; + MsTimer2::set(1000, xp_timing); // 1000ms 运行一次 + MsTimer2::start(); //打开定时器2计数 + } + system_sleep(); //系统休眠决策 + } +} + +void sleep_timing() //休眠定时任务 +{ + sleep_count++; //烙铁没动,计数增加 +} + +void xp_timing() //息屏定时任务,校准界面不息屏 +{ + if (display_count != SZJM_JIAOZHUN) xp_time_count++; //烙铁没动,计数增加 +} diff --git a/v1.03/PID.ino b/v1.03/PID.ino new file mode 100644 index 0000000..ebd6535 --- /dev/null +++ b/v1.03/PID.ino @@ -0,0 +1,176 @@ +//********** PID算法 ********** +//算法来至https://blog.csdn.net/foxclever/article/details/105006205 By foxclever +void pid() +{ + if (t12_switch == 1 && vin_error == 0 && t12_error == 0) //加热开关开启 + { + //计算设定值与平均温度的差值 + int16_t ek_average = set_temp - t12_temp_average; + //平均差值小于3,发出声音提示一下 + if (ek_average >= -3 && ek_average <= 3 && buzzer_temp_average_state == 0) + { + buzzer(120, 300); + buzzer_temp_average_state = 1; + } + if (display_count == SZJM_JIAOZHUN) + PIDRegulator(t12_ad); //在校准界面时使用T12的ADC作为PID的目标值 + else + PIDRegulator(t12_temp); //在其他界面时使用T12的温度值作为PID的目标值 + } + else + { + pid_out = 0; + lasterror = 0; + preerror = 0; + t12_temp_read_time = 450; + } + pwm_1b(pid_out); + pid_out_bfb = (pid_out / (pwm_max - pwm_min)) * 100; +} + +void PIDRegulator(float PV) +{ + float factor = 0.0; //变积分系数 + float increment = 0.0; + float pError = 0.0, dError = 0.0, iError = 0.0; + if (display_count == SZJM_JIAOZHUN) //在校准界面时使用T12的ADC作为PID的目标值 ,计算偏差 + { + if (szjm_jiaozhun_sxxk_count == 1) thisError = sz_adc0 - PV; + else if (szjm_jiaozhun_sxxk_count == 2) thisError = sz_adc1 - PV; + else if (szjm_jiaozhun_sxxk_count == 3) thisError = sz_adc2 - PV; + else if (szjm_jiaozhun_sxxk_count == 4) thisError = sz_adc3 - PV; + } + else //在其他界面时使用T12的温度值作为PID的目标值 ,计算偏差 + { + thisError = set_temp - PV; //得到偏差值 + thisError_average = set_temp - t12_temp_average; //得到平均值的偏差值 + } + //规定采样时间 + if (thisError < -5) t12_temp_read_time = 150; + else if (thisError >= -5 && thisError <= 10) t12_temp_read_time = 400; + else if (thisError > 10 && thisError <= 30) t12_temp_read_time = 500; + else t12_temp_read_time = 800; + if (thisError <= 30 && thisError > -15) + { + if (fabs(thisError) > deadband) + { + pError = thisError - lasterror; + iError = float((thisError + lasterror)) / 2.0; + dError = thisError - 2 * (lasterror) + preerror; + + //变积分系数获取 + factor = get_factor(thisError, errorabsmax, errorabsmin); + + //计算微分项增量带不完全微分 + deltadiff = d * (1 - alpha) * dError + alpha * deltadiff; + + increment = p * pError + i * factor * iError + deltadiff; //增量计算 + } + else + { + if ((fabs(set_temp - pwm_min) < deadband) && (fabs(PV - pwm_min) < deadband)) + { + pid_out = pwm_min; + } + increment = 0.0; + } + + pid_out = pid_out + increment; + + /*对输出限值,避免超调和积分饱和问题*/ + if (pid_out >= pwm_max) + { + if (thisError <= 0) pid_out = pwm_min; + else pid_out = pwm_max; + } + else if (pid_out <= pwm_min) pid_out = pwm_min; + + } + else if (thisError > 30) pid_out = pwm_max; + else if (thisError < -15) pid_out = pwm_min; + preerror = lasterror; //存放偏差用于下次运算 + lasterror = thisError; +} + +float get_factor(float ek0, float absmax, float absmin) //变积分系数获取 +{ + float factor1 = 0.0; + factor1 = map(ek0, absmax, absmin, 0.0, 1.0); + if (abs(ek0) >= absmax) factor1 = 0.0; + else if (abs(ek0) <= absmin) factor1 = 1.0; + return factor1; +} + +void pwm_1b(uint16_t val)//自定义PWM,使用相位和频率校正模式,2048级控温 +{ + //输出通道B 占空比: (OCR1B+1) / (OCR1A+1) + //占空比不能大于OCR1A + + if (val >= pwm_max) digitalWrite(t12_pwm_pin, 1); + else if (val <= pwm_min) digitalWrite(t12_pwm_pin, 0); + else + { + //pinMode(10, OUTPUT); //pin10连接至B通道 + //bitWrite(DDRB, 2, 1); //设置pin10为输出 + //相位和频率校正PWM,分频比64,频率: 16000000/2*256*(OCR1A+1) = 15HZ + TCCR1A = B00100001; + TCCR1B = B00010100; + OCR1A = pwm_max; //从0开始数到0CR1A,0-65535,设置周期和频率 + OCR1B = val; //用来设置比较器,占空比 + } + //ec_read(); //读取电流 +} +/*时钟输出 | Arduino输出Pin | 芯片Pin | Pin 名字 + OC0A 6 12 PD6 + OC0B 5 11 PD5 + OC1A 9 15 PB1 + OC1B 10 16 PB2 + OC2A 11 17 PB3 + OC2B 3 5 PD3 + + 脉冲生成模式控制位(WGM):用来设置PWM的模式或CTC模式 + 时钟选择位(CS):设置时钟的预分频 + 输出模式控制位(COMnA和COMnB):使能/禁用/反相 输出A和输出B + 输出比较器(OCRnA和OCRnB):当计数器等于这两个值时,输出值根据不同的模式进行变化 + + 快速PWM(0-255 0-255 数完归零) + 相位修正PWM(0-255 255-0 数完倒数) + + 8位(定时器0/2) + CSn0 001 = 1 + CSn1 010 = 8 + CSn2 011= 32 + CSn3 100= 64 + CSn4 101= 128 + CSn5 110= 256 + CSn6 111= 1024 + 16位(定时器1) + CSn0 001 = 1 + CSn1 010 = 8 + CSn2 011= 64 + CSn3 100= 256 + CSn4 101= 1024 + + COMnA1 COMnB1 = 占空比AB都可控 + 从0数到2047 0时输出高电平 + OCRnA 当数到OCRnA,输出低电平,即A的占空比=OCRnA的值 + OCRnB 当数到OCRnB,输出低电平,即B的占空比=OCRnB的值 + + COMnA0 COMnB1 = A当数到头是反相 占空比A50% B可控 + OCRnA 从0数到OCRnA 0时输出高电平 + OCRnB 当OCRnA=OCRnB,输出低电平 + 输出通道B 占空比: (OCR1B+1) / (OCR1A+1) + 占空比不能大于OCR1A + pinMode(10, OUTPUT); //B + bitWrite(DDRB, 2, 1); //设置pin10为输出 + 快速PWM,分频比64,频率: 16000000/64*(OCR1A+1) = 976HZ + TCCR1A = B00100011; + TCCR1B = B00011011; + 相位和频率校正PWM,分频比8,频率: 16000,000/2*8*(OCR1A+1) = 488HZ + TCCR1A = B00100001; + TCCR1B = B00010010; + 相位校正PWM,分频比256,频率: 16000000/2*256*(OCR1A+1) = 61HZ + TCCR1A = B00100011; + TCCR1B = B00010100; + OCR1A = 2047; //从0开始数到0CR1A,0-65535,设置周期和频率 + OCR1B = val; //用来设置比较器,占空比*/ diff --git a/v1.03/Sleep.ino b/v1.03/Sleep.ino new file mode 100644 index 0000000..d71719c --- /dev/null +++ b/v1.03/Sleep.ino @@ -0,0 +1,62 @@ +//********** T12休眠判断决策 ********** +void t12_sleep() +{ + if (sleep_state != digitalRead(t12_sleep_pin))//烙铁动了,计数清零 + { + sleep_state = !sleep_state; //状态取反 + sleep_count = 0; //计数清零 + if (zjm_sleep_ts == 1) + { + zjm_sleep_ts = 0; //提示主界面退出显示休眠状态 + set_temp = sleep_temp_cache; + sleep_temp_cache = 0; + buzzer_temp_average_state = 0; //准备好到达温度提示声 + buzzer(150, 300); //提示一下 + } + } + if (sleep_count == sleep_time && zjm_sleep_ts == 0) //达到休眠的阈值,进入休眠 + { + EEPROM.put(set_temp_eeprom, set_temp); //自动保存当前设置温度 + zjm_sleep_ts = 1; //提示主界面显示休眠中 + buzzer(150, 300); //提示一下 + + if (set_temp > sleep_temp) //大于设置的休眠温度 + { + sleep_temp_cache = set_temp; //休眠前将温度记录下来,记录和调温 + set_temp = sleep_temp; //将温度调至休眠温度 + } + else if (set_temp <= sleep_temp) //小于等于设置的休眠温度,只记录不调温 + sleep_temp_cache = set_temp; //休眠前将温度记录下来 + } + else if (sleep_count > 1800) //半小时没操作,关闭加热 + { + MsTimer2::stop(); + set_temp = sleep_temp_cache; + sleep_temp_cache = 0; + t12_switch = 0; + sleep_count = 0; + zjm_sleep_ts = 0; //提示主界面退出休眠 + buzzer(150, 1000); //提示一下 + } +} + +//********** 系统休眠判断决策 ********** +void system_sleep() +{ + if (xp_time_count >= 180) //无加热无操作超过180秒就显示息屏界面 + { + if (xp_time_count - xp_time_count_old > 3) //每隔3秒刷新一次位置 + { + display_count = ZJM;//退出至主界面 + xp_state = 1; //标记息屏状态 + xp_x = random(0, 90); + xp_y = random(11, 31); + xp_time_count_old = xp_time_count; + } + else if (xp_time_count >= 65530) //防止数值溢出 + { + xp_time_count = 180; + xp_time_count_old = 0; + } + } +} diff --git a/v1.03/WDT.ino b/v1.03/WDT.ino new file mode 100644 index 0000000..507d4a3 --- /dev/null +++ b/v1.03/WDT.ino @@ -0,0 +1,54 @@ +//********** 看门狗函数 ********** +void set_wdt_mod(uint8_t mod, uint8_t ii) //模式,超时时间 +{ + /* + WDCE + 该位在定时序列中用于更改WDE和预分频器位 + 要清除WDE位或更改预分频器位,必须将WDCE置1。 + 一旦写入1,硬件将在四个时钟周期后清除WDCE。 + 0=16ms,1=32ms,2=64ms,3=128ms,4=250ms + 5=500ms,6=1s,7=2s,8=4s,9=8s + */ + if (ii > 9 ) ii = 9; + byte bb; + bb = ii & 7; + if (ii > 7) bb |= (1 << 5); + bb |= (1 << WDCE); + + switch (mod) { + case 0: //关闭看门狗 + __asm__ __volatile__ ("wdr"); //看门狗复位 + MCUSR = 0x00; //看门狗复位标志清零 + WDTCSR = (1 << WDCE) | (1 << WDE); //打开允许修改使能,并WDE置1 + WDTCSR = 0x00; //清除所有预分频位 + break; + + case 1: //打开看门狗,设置复位模式 + __asm__ __volatile__ ("wdr"); //看门狗复位 + MCUSR &= ~(1 << WDRF); //MUUSR中的WDRF清零,清除复位标志 + WDTCSR |= (1 << WDCE) | (1 << WDE); //打开允许修改使能,并WDE置1 + //设置新的看门狗超时值bb + WDTCSR = bb; //8秒时bb=0011 0001 + WDTCSR |= _BV(WDE); //设置复位模式 + break; + + case 2: //打开看门狗,设置中断模式 + __asm__ __volatile__ ("wdr"); //看门狗复位 + MCUSR &= ~(1 << WDRF); //MUUSR中的WDRF清零,清除复位标志 + WDTCSR |= (1 << WDCE) | (1 << WDE); //打开允许修改使能,并WDE置1 + //设置新的看门狗超时值bb + WDTCSR = bb; //8秒时bb=0011 0001 + WDTCSR |= _BV(WDIE); //设置中断模式 + break; + + case 3: //打开看门狗,设置中断+复位模式 + __asm__ __volatile__ ("wdr"); //看门狗复位 + MCUSR &= ~(1 << WDRF); //MUUSR中的WDRF清零,清除复位标志 + WDTCSR |= (1 << WDCE) | (1 << WDE); //打开允许修改使能,并WDE置1 + //设置新的看门狗超时值bb + WDTCSR = bb; //8秒时bb=0011 0001 + WDTCSR |= _BV(WDIE); //设置中断模式 + WDTCSR |= _BV(WDE); //设置复位模式 + break; + } +} diff --git a/v1.03/analogRead.ino b/v1.03/analogRead.ino new file mode 100644 index 0000000..b073734 --- /dev/null +++ b/v1.03/analogRead.ino @@ -0,0 +1,153 @@ +//********** 读取电压、电流、温度 ********** +float vin_cache = 0.0; +uint8_t vin_cache_count = 0; + +float tc1047_cache = 0.0; +uint8_t tc1047_cache_count = 0; + +#define cycs 10 //时间平均滤波的采样次数 采样周期 = 采样次数*定时执行任务的时间 +uint8_t t12_adc_error_count = 0; //t12ADC超出检测范围错误计数 +void read_timing() //定时读取电源电压和机内温度 +{ + if (millis() - vin_read_time > t12_temp_read_time) + { + read_t12_temp(); + vin_read_time = millis(); + } +} +void read_timing2() +{ + vin_read(); //读取电压 + tc1047_temp_read(); //读取室温 + if (szjm_oled_sxxk_count == 1) u8g2.setContrast(oled_ld); //改变亮度 +} +void read_t12_temp() //定时读取T12的温度 +{ + float t12_ad_nwe = 0.0; //临时AD + digitalWrite(t12_pwm_pin, 0); + read_timing2(); + delay(1); + t12_ad_nwe = denoiseAnalog(t12_temp_pin); //读取即时AD + //t12_ad_nwe = analogRead(t12_temp_pin); //读取即时AD + t12_ad += (t12_ad_nwe - t12_ad) * 0.7; //平滑滤波 + //if (digitalRead(t12_sleep_pin) == 1) t12_ad += 2; //补偿上拉噪声干扰 + //计算温度,温度曲线由校准程序自动计算 + t12_temp = sz_p[3] * t12_ad * t12_ad * t12_ad + sz_p[2] * t12_ad * t12_ad + sz_p[1] * t12_ad + sz_p[0]; + t12_temp += (tc1047_temp - tc1047_refer); //环境温度补偿 + + //记录平均温度 + t12_temp_average_cache += t12_temp; + t12_temp_average_count++; + if (t12_temp_average_count == 8) + { + t12_temp_average = t12_temp_average_cache >> 3; + t12_temp_average_cache = 0; //累计缓存温度清零 + t12_temp_average_count = 0; //计数清零 + } + //运行PID + pid(); + + //手柄检测及超出测量范围检测 + if (t12_switch == 0 && t12_ad >= 1020) //无手柄 + { + t12_error = 1; + t12_switch = 0; + } + else if (t12_switch == 1 && t12_ad >= 1020) //超出测量范围检测,延时检测 + { + t12_adc_error_count++; + if (t12_adc_error_count >= 8) + { + MsTimer2::stop(); //停止一次 然后在MsTimer2_rw1()里自动切换定时的中断任务 + t12_adc_error_count = 0; //清除计数 + t12_adc_error = 1; + t12_switch = 0; + } + } + else if (t12_switch == 1 && t12_ad < 1020) + { + t12_adc_error = 0; + t12_adc_error_count = 0; //清除计数 + } + else t12_error = 0; +} + +void vin_read() +{ + /* + 串联电阻的中点电压计算公式 + Eout 中点电压 + Vcc 输入电压(两端施加电压) + R1、R2 两个串联的分压电阻 + Eout = Vcc * R2/(R1+R2) R1靠近电源 R2靠近地 + */ + /*vin = (denoiseAnalog(vin_pin) / 0.1282) * vcc_refer_fl; //计算电源电压 10/68+10=0.1282 + if (vin < vin_low && vin_low >= 3.3) //电压过低提示 + { + vin_error = 1; + t12_switch = 0; + }*/ + + vin_cache += (denoiseAnalog(vin_pin) / 0.1282) * vcc_refer_fl; + vin_cache_count++; + if (vin_cache_count >= cycs) + { + vin = vin_cache / cycs + vin_refer; + vin_cache_count = 0; + vin_cache = 0; + //电压过低提示 + if (vin < vin_low && vin_low >= 3.3) + { + vin_error = 1; + t12_switch = 0; + } + else vin_error = 0; + } +} + +void tc1047_temp_read() //读取tc1047温度 +{ + //tc1047_temp = ((denoiseAnalog(tc1047_pin) * vcc_refer_fl) - 0.5) * 100; + + tc1047_cache += ((denoiseAnalog(tc1047_pin) * vcc_refer_fl) - 0.5) * 100; + tc1047_cache_count++; + if (tc1047_cache_count >= cycs) + { + tc1047_temp = tc1047_cache / cycs; + tc1047_cache_count = 0; + tc1047_cache = 0; + } +} + +/*uint16_t denoiseAnalog(uint8_t pin) + { + uint8_t low, high; + if (pin >= A0) pin -= A0; //设置端口 + ADMUX = (0x0F & pin) | bit(REFS0); //设置基准电压为5V,设置端口 + ADCSRA |= bit (ADEN) | bit (ADIF); //启用ADC,关闭任何挂起的中断 + set_sleep_mode (SLEEP_MODE_ADC); //在取样时进行睡眠以降低噪音,需要开启ADC中断进行唤醒 + sleep_mode(); //进入休眠自动启动转换 + //bitSet(ADCSRA, ADSC); //ADSC 写1启动AD转换 + while (bitRead(ADCSRA, ADSC)); //等待转换结束 + low = ADCL; + high = ADCH; + bitClear (ADCSRA, ADEN); // 禁用ADC + return (high << 8) | low; //返回数值 + }*/ +uint16_t denoiseAnalog (byte port) +{ + uint16_t result = 0; + if (port >= A0) port -= A0; //设置端口 + ADMUX = (0x0F & port) | bit(REFS0); //设置基准电压为5V,设置端口 + ADCSRA |= bit (ADEN) | bit (ADIF); //启用ADC,关闭任何挂起的中断 + set_sleep_mode (SLEEP_MODE_ADC); //在取样时进行睡眠以降低噪音,需要开启ADC中断进行唤醒 + for (uint8_t i = 0; i < 16; i++) { // get 32 readings + sleep_mode(); // go to sleep while taking ADC sample + while (bitRead(ADCSRA, ADSC)); // 等待转换结束 + result += ADC; // add them up + } + bitClear (ADCSRA, ADEN); // 禁用ADC + return (result >> 4); // devide by 32 and return value +} +//ADC中断服务 +EMPTY_INTERRUPT (ADC_vect); // 这里没什么可做的 diff --git a/v1.03/v1.03.ino b/v1.03/v1.03.ino new file mode 100644 index 0000000..70e08df --- /dev/null +++ b/v1.03/v1.03.ino @@ -0,0 +1,328 @@ +/*项目代码修改自 甘草酸不酸 开源https://github.com/jie326513988/mini-T12 + * _樱下小渚花田汐_ https://space.bilibili.com/34620092 修改 + * 编码器控制改为按键控制 +*/ + +/* + 默认支持深圳头,更换其他厂商的头需要自行校准温度曲线 + 一定要使用我提供的U8g2库,否者无法显示中文和提示内存过大无法编译!!! +*/ +/*程序更新说明 + * v1.03 + 1.增大旋转的音调音量,修改进入和退出设置界面的音调音量 + 2.降低烙铁唤醒烙铁的灵敏度 + 3.优化pid,并不是很明显 + * v1.02 + 1.新增停止时记录当前的设置温度(休眠时也会自动保存) + v1.01 + 1.调节PID运行间隔 + 2.降低PWM频率为15HZ,手柄和mos的声音几乎没有了!之前为61HZ,声音还是有一点的。 + v1.00(此版本需要更新U8G2库) + 1.缩小一点点的内存 + 2.修复T12 ADC HIGH报警时无法进入息屏的BUG + v0.99 + 1.开机就加热的模式下PWM动画会向下鬼畜,所以将开机过渡动画改为向上过渡,这样就看不到鬼畜啦 + 2.开机加热模式的选择改为按下确认键就切换模式,取消原实心选框旋转选择 + 3.添加只有在主界面下才能清除T12 ADC 超出读取读取范围的提示 + v0.98 + 1.温度曲线适配最新版本的PCB + v0.97 + 1.优化校准界面的PID策略 + v0.96 + 1.优化内存 + v0.95 + 1.平滑的开机过度效果 + v0.94 + 1.曲线拟合改为3项式,以更加准确的绘制温度曲线 + v0.93 + 1.动态PID + 2.取消电流传感器,主界面取消电流显示改为显示PWM百分比 + 3.设置菜单增加曲线拟合校准 + 4.休眠计时和息屏倒计时改用定时器2计时 + 5.息屏显示,无加热无操作3分钟后进入,息屏时显示环境温度 + 6.开机提示音和开机画面 + 7.休眠时自动保存当前设置温度到eeprom + 8.待机功耗8.8ma 息屏待机功耗6.4ma +*/ +/* + 按键功能定义 + 长按操作(5下短音最后1下长音) + 主界面:进入设置界面 + 其他界面:退出至主界面(校准界面除外) + 双击操作(2下短音) + 主界面:加热或停止状态切换 + 其他界面:无 + 单击(1下短音) + 主界面:无 + 设置界面:进入二级菜单 + 二级菜单:切换数值更改的选中状态(空心选框或实心选框),或确认更改数值,无选框状态则退出至一级菜单 + 菜单选项 + PID + P + I + D + 休眠 + 休眠时间 + 休眠温度 + 屏幕 + 屏幕亮度 + 屏幕方向 + 编码器方向 + 电源 + 基准电压 + 电源电压 + 低压报警 + 校准 + 调节曲线1段温度 + 调节曲线2段温度 + 调节曲线2段温度 + 调节曲线3段温度 + 运行曲线拟合并校准曲线 + 烙铁 + 冷端补偿 + 开机加热 + 重置 +*/ +#include +#include //掉电数值存储库 +#include //休眠库 +#include //屏幕驱动库 +#ifdef U8X8_HAVE_HW_I2C +#include +#endif +U8G2_SSD1306_128X32_UNIVISION_2_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); + +//********** 版本号 ********** +#define version "v1.03" +//********** 引脚定义 ********** +#define SW 4 //按下 ,可更改其他引脚 +#define CLK 3 //旋转 ,不可更改 +#define DT 2 //旋转 ,可更改其他引脚 +//除了10号脚不能改,其他都可以改,但模拟引脚只能改模拟引脚(休眠引脚除外) +#define t12_sleep_pin A0 //t12休眠 模拟读取引脚 +#define t12_temp_pin A2 //t12温度 模拟读取引脚 +#define tc1047_pin A3 //机内温度 模拟读取引脚 +#define vin_pin A6 //电源电压 模拟读取引脚 +#define t12_pwm_pin 10 //t12加热 pwm输出引脚,定死不可更改 +#define buzzer_pin 8 //蜂鸣器 输出引脚 +//************ EEPROM地址定义 ************ +uint8_t auto_get = 0; //自动刷写eeprom的状态存储,判断是否首次开机 0-首次 1-非首次 +#define auto_get_eeprom 0 //自动刷写eeprom的状态存储,1位 +#define p_eeprom 1 //p地址,4位 +#define i_eeprom p_eeprom+4 //i地址,4位 +#define d_eeprom i_eeprom+4 //d地址,4位 +#define sleep_time_eeprom d_eeprom+4 //休眠时间,4位 +#define sleep_temp_eeprom sleep_time_eeprom+4 //休眠温度,1位 +#define oled_ld_eeprom sleep_temp_eeprom+1 //OLED亮度,1位 +#define vcc_refer_eeprom oled_ld_eeprom+1 //基准电压,4位 +#define vin_refer_eeprom vcc_refer_eeprom+4 //电源电压校准值,4位 +#define t12_kj_jr_eeprom vin_refer_eeprom+4 //是否开机就加热?,1位 +#define vin_low_eeprom t12_kj_jr_eeprom+1 //输入电压低压报警阈值,4位 +#define tc1047_refer_eeprom vin_low_eeprom+4 //冷端补偿校准值,1位 +#define oled_fx_eeprom tc1047_refer_eeprom+1 //OELD方向,1位 +#define xzbmq_fx_eeprom oled_fx_eeprom+1 //编码器旋转方向,1位 +#define sz_temp0_eeprom xzbmq_fx_eeprom+1 //深圳头曲线温度校准1段,4位 +#define sz_temp1_eeprom sz_temp0_eeprom+4 //深圳头曲线温度校准2段,4位 +#define sz_temp2_eeprom sz_temp1_eeprom+4 //深圳头曲线温度校准3段,4位 +#define sz_temp3_eeprom sz_temp2_eeprom+4 //深圳头曲线温度校准4段,4位 +#define set_temp_eeprom sz_temp3_eeprom+4 //t12设置温度,4位 +//T12及温度相关 +boolean t12_switch = 0; //T12加热开关 +boolean t12_kj_jr = 1; //是否开机就加热? 0-否 1-是 + +float t12_ad = 0.0; //T12即时ADC值 +uint16_t t12_temp = 0.0; //T12即时温度 +boolean t12_error = 0; //手柄未接提示 +boolean t12_adc_error = 0; //温度超出测量范围 +uint16_t set_temp_max; //自动计算设置的温度最大值 +uint16_t set_temp_min; //自动计算设置的温度最小值 + +int16_t t12_temp_average_cache = 0; //记录采集温度,缓存用 +int16_t t12_temp_average = 0; //8次内采集到的平均温度,显示用 +uint8_t t12_temp_average_count = 0; //平均温度采集计数 +boolean buzzer_temp_average_state = 0; //到达温度提示声 + +//float tc1047_ad = 0.0; //tc1047ADC值 +float tc1047_temp = 0.0; //tc1047温度,机内温度 +int8_t tc1047_refer = 30; //T12环境参考温度校准值 + +float vcc_refer = 4.95; //参考电压,稳压芯片输出的电压是多少就填多少 +float vin = 0.0; //电源电压 +float vin_refer = 0.0; //输入电压校准值 +float vin_low = 3.3; //低压报警阈值 +boolean vin_error = 0; //低压报警提示 +#define vcc_refer_fl vcc_refer/1023.0 //参考电压每级分量 + +uint32_t xzbmq_time = 0; //编码器消抖对比时间 +uint32_t temp_read_time = 0; //定时读取温度对比时间 +uint32_t vin_read_time = 0; //定时读取输入电压时间 +uint32_t t12_temp_read_time = 450; //定时T12温度采样时间 + +boolean buzzer_state = 0; //蜂鸣器准备状态 +uint16_t buzzer_time; //蜂鸣器响的时间 +uint16_t buzzer_count; //蜂鸣器响的次数 +boolean buzzer_szjm_state = 0; //进入设置界面的长音状态 +boolean buzzer_zjm_state = 0; //退出至主界面的长音状态 + +boolean zjm_sleep_ts = 0; //主界面休眠提示 0-无 1-休眠中 +uint16_t sleep_time = 180; //进入休眠的时间阈值,单位秒 +uint8_t sleep_temp = 200; //休眠时的温度,单位摄氏度 +boolean sleep_state = 0; //休眠引脚状态 0低电平 1高电平 +uint16_t sleep_count = 0; //休眠计数 +uint16_t sleep_temp_cache = 0; //休眠前的温度缓存 + +uint8_t oled_ld = 50; //OLED亮度 +boolean oled_fx = 0; //OLED方向 0-不旋转,横向显示 1-旋转180度 +boolean xzbmq_fx = 0; //编码器方向 0-顺加逆减 1-顺减逆加 +boolean hfccsz_state = 0; //恢复出厂设置 0-NO 1-YES + +boolean xp_state = 0; //息屏状态 0-无 1-息屏 +uint16_t xp_time_count = 0; //息屏计数 +uint16_t xp_time_count_old = 0; //上一次时间计数 +int8_t xp_x = 0; //息屏随机变化位置X +int8_t xp_y = 0; //息屏随机变化位置Y +int8_t xp_x_old = 50; //上一次息屏随机变化位置X +int8_t xp_y_old = 21; //上一次息屏随机变化位置Y + +//深圳头曲线拟合的4段ADC +#define sz_adc0 10 +#define sz_adc1 350 +#define sz_adc2 650 +#define sz_adc3 940 +uint16_t sz_temp[4] = {49, 262, 391, 486}; //深圳头曲线拟合的4段温度 Y +float sz_p[4]; //深圳头曲线拟合的4个系数 P +//********** 菜单标志位相关 ********** +#define ZJM 1 //主界面 +#define SZJM 2 //设置界面 +#define SZJM_PID 3 //PID设置界面 +#define SZJM_SLEEP 4 //休眠设置界面 +#define SZJM_OLED 5 //OLED设置界面 +#define SZJM_POWER 6 //电源设置界面 +#define SZJM_JIAOZHUN 7 //校准设置界面 +#define SZJM_LAOTIE 8 //烙铁头设置界面 + +uint8_t display_count = 1; //默认要显示的界面 +boolean dec_state = 0; //小数点输入状态 0关闭 1开启 +uint8_t qj_ca_count = 0; //全局长按计数 + +boolean szjm_kxxk_L = 0; //设置界面空心选框 顺时针转 +boolean szjm_kxxk_R = 0; //设置界面空心选框 逆时针转 +int8_t szjm_kxxk_count = 0; //设置界面空心选框 + +int8_t szjm_pid_kxxk_count = 0; //pid界面空心选框 +int8_t szjm_pid_sxxk_count = 0; //pid界面实心选框 + +int8_t szjm_sleep_kxxk_count = 0; //pid界面空心选框 +int8_t szjm_sleep_sxxk_count = 0; //pid界面实心选框 + +int8_t szjm_oled_kxxk_count = 0; //oled界面空心选框 +int8_t szjm_oled_sxxk_count = 0; //oled界面实心选框 + +int8_t szjm_power_kxxk_count = 0; //电源设置界面空心选框 +int8_t szjm_power_sxxk_count = 0; //电源设置界面实心选框 + +int8_t szjm_pwm_kxxk_count = 0; //PWM界面空心选框 +int8_t szjm_pwm_sxxk_count = 0; //PWM界面实心选框 + +int8_t szjm_laotie_kxxk_count = 0; //烙铁头设置界面空心选框 +int8_t szjm_laotie_sxxk_count = 0; //烙铁头设置界面实心选框 + +int8_t szjm_jiaozhun_kxxk_count = 0; //烙铁头设置界面空心选框 +int8_t szjm_jiaozhun_sxxk_count = 0; //烙铁头设置界面实心选框 +//********** 动态调参PID ********** +float p = 25.0; //比例系数 +float i = 8.7; //积分系数 +float d = 2.6; //微分系数 + +#define p_jz 12.0 //校准界面用的 比例系数 +#define i_jz 2.2 //校准界面用的 积分系数 +#define d_jz 1.2 //校准界面用的 微分系数 + +uint16_t set_temp = 320; //设置温度 +int16_t thisError = 0; //本次误差 +int16_t thisError_average = 0; //平均值的误差 +int16_t lasterror = 0; //前一拍偏差 +int16_t preerror = 0; //前两拍偏差 +const int8_t deadband = 0; //死区 +int16_t pid_out = 0.0; //PID控制器计算结果 +uint8_t pid_out_bfb = 0.0; //输出值0-100% +const float pwm_max = 2047.0; //输出值上限 +const float pwm_min = 0.0; //输出值下限 +const float errorabsmax = 2000.0; //偏差绝对值最大值 +const float errorabsmin = 50.0; //偏差绝对值最小值 +const float alpha = 0.2; //不完全微分系数 +float deltadiff = 0.0; //微分增量 + +void setup() +{ + //***** 首次开机自动刷写eeprom + eerpom_auto(); + //***** 编码器配置 + pinMode(SW, INPUT_PULLUP); //按下 + pinMode(CLK, INPUT_PULLUP); //相位A + pinMode(DT, INPUT_PULLUP); //相位B + pinMode(t12_temp_pin, INPUT); //t12温度 + pinMode(t12_sleep_pin, INPUT_PULLUP); //t12休眠 + pinMode(vin_pin, INPUT); //电源电压 + pinMode(tc1047_pin, INPUT); //机内温度 + pinMode(buzzer_pin, OUTPUT); //蜂鸣器 + pinMode(t12_pwm_pin, OUTPUT); //t12加热,不可更改 + + digitalWrite(t12_pwm_pin, 0); //默认关闭 + digitalWrite(buzzer_pin, 0); //默认关闭 + //***** OLED初始化 + u8g2.begin(); + u8g2.enableUTF8Print(); + u8g2.setContrast(oled_ld); //设置亮度1-255 + //u8g2.setBusClock(400000); //设置I2C通讯速度默认MAX400000 + //u8g2.setPowerSave(0); //0开启屏幕 1关闭屏幕 + if (oled_fx)u8g2.setDisplayRotation(U8G2_R2); //旋转180度 + else u8g2.setDisplayRotation(U8G2_R0); //0度,默认方向 + //***** ADC初始化 + //ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // 设置ADC分频 128倍 + ADCSRA |= bit (ADPS1) | bit (ADPS2); //设置ADC分频 64倍 + ADCSRA |= bit (ADIE); // 开启ADC中断 + interrupts(); // 开启全局中断 + //***** 打开外部中断 + attachInterrupt(digitalPinToInterrupt(CLK), xuan_zhaun, FALLING); //PIN3,选择编码器 旋转,下降沿触发 FALLING + attachInterrupt(digitalPinToInterrupt(DT), xuan_zhaun, FALLING); + + //***** 播放开机画面和开机声 + kj_display(); + buzzer(600, 200); //时间,次数 + buzzer_run(); + buzzer(400, 300); //时间,次数 + buzzer_run(); + buzzer(130, 1000); //时间,次数 + buzzer_run(); + //读取电压/温度 + for (uint8_t i = 0; i < 10; i++) //读取初始值 + { + vin_read(); + tc1047_temp_read(); + read_t12_temp(); + } + //***** 开启看门狗 + //set_wdt_mod(1, 7); + //***** 是否开机加热 + if (t12_kj_jr == 1) t12_switch = 1; + else t12_switch = 0; + //***** 开机计算曲线拟合系数 + qxnh_run(); + //Serial.begin(9600); //打开串口调试 +} + +void loop() +{ + //uint32_t time0 = micros(); + + __asm__ __volatile__ ("wdr"); //看门狗复位 + an_xia(); //编码器按下决策 + draw_page(); //刷新屏幕 + buzzer_run(); //蜂鸣器运行决策 + read_timing(); //定时读取任务 + MsTimer2_rw1(); //定时器2任务 + + //uint32_t time1 = micros(); + //Serial.println(time1 - time0); +} diff --git a/v1.03/v1.03.ino.standard.hex b/v1.03/v1.03.ino.standard.hex new file mode 100644 index 0000000..a7b204e --- /dev/null +++ b/v1.03/v1.03.ino.standard.hex @@ -0,0 +1,1999 @@ +:100000000C94A3080C94F0260C94C9260C94CB08ED +:100010000C94CB080C94CB080C94CB080C94CB0814 +:100020000C94CB080C9436280C94CB080C94CB0879 +:100030000C94CB080C94CB080C94CB080C94CB08F4 +:100040000C947F260C94CB080C94CB080C94CB0812 +:100050000C94CB080C94A8280C94CB080C94CB08D7 +:100060000C9417270C94CB080000000024002700F4 +:100070002A0000000000250028002B0000000000DE +:1000800023002600290004040404040404040202DA +:100090000202020203030303030301020408102007 +:1000A0004080010204081020010204081020000012 +:1000B0000008000201000003040700000000000027 +:1000C00000005D0003020303010405070800FF07A9 +:1000D000FF0700012E025B0371200540A4002107E9 +:1000E000799418A20022075BA6482C01230E7DB448 +:1000F0002925C9A05406A5942400240B7DB4CA0662 +:100100007110072D02250A7FC44EB2B45B1203267C +:100110000C7EBCD1A2362D4AB46809270559961821 +:1001200028087BA44A4AB50229097BA4C84A95122B +:10013000002A0CEFC4C92AD130444956012B0AEDDC +:10014000B40AA3410A23002C07DA9B4914002D05A9 +:10015000CEBD382E055194102F077FC44EFB0C30B6 +:10016000097DB459326FC90231097DB4CAC44E83C6 +:1001700000320A7DB459B2306B1B04330C7DB418C5 +:10018000D23019C2705000340C7DB4CBA4A4940CAE +:100190005A9800350A7DB4B8AEA1962C00360C7D75 +:1001A000B459327148322D590037097DB418C4ACA6 +:1001B000D804380C7DB459322D59322D5900390CE0 +:1001C0007DB459322D19422D59003A06E194880226 +:1001D0003B07F29B4913053C077CAC8B1A1B3D0780 +:1001E0005DB518D4413E087CAC089BDA003F0B7D1E +:1001F000B459B230AB431100400F7FC4199454522C +:10020000948A32ECC0A000410B7DB459326D183293 +:100210005B00420D7DB418924C1B944C1B140043A0 +:10022000097DB419C4AE4300440A7DB41892CCDBF6 +:10023000A000450B7DB438864312868300460A7DB4 +:10024000B4388643121601470C7DB4593231193245 +:100250002D5900480A7DB4C86CC390D9024906796B +:100260009438044A097DB4ECA8250B004B0C7DB4EE +:10027000C8A4A4A42551250B4C087DB4087B1C04FC +:100280004D0B7FC448B7A52245AA354E0C7EBC084D +:10029000372592126D14034F097DB459326FC9028C +:1002A000500B7DB418924C1B94B008510B7DB4597F +:1002B0003297448A9400520C7DB418924C1B94528D +:1002C000250B530A7DB4593275D5920554097DB476 +:1002D00018A4B0270055097DB4C87C4B16005609F8 +:1002E0007DB4C8BC25B508570B7FC4489D22A5B274 +:1002F000AD01580B7DB4C8B4A456A96901590A7D53 +:10030000B4C86C492D2C015A097DB418C4ACE32043 +:100310005B087BA418A24E035C0E7FC4C8811CC876 +:10032000811CC8811C085D087BA4983A0D015F06FA +:100330004FC43804610A6DB45993414B8600620B77 +:1003400075B408C321C9B4410163086CAC19B2E2A9 +:1003500000640A75B4AC0C9A960C01650A6DB45928 +:10036000B241498700660A74AC52A221C94A0067AB +:100370000BF5B359322D19C26401680A75B408C36C +:1003800021C96C01690771944886006A08FBA34A79 +:10039000A3D2026B0974ACC84A43D2146C06729C97 +:1003A000507A6D0B6FC4B84491144991546E086D26 +:1003B000B41892CC2D6F096DB459325BB200700B3A +:1003C000F5B318924C1B943004710AF5B319342D0F +:1003D00019C20272096DB418924C2C0273086DB4E4 +:1003E00019D48302740A75B48A0629AC26007508EC +:1003F0006DB4C8DC922176096DB4C86C492D0277C2 +:100400000C6FC48822299222A9320C78096DB4C8D5 +:10041000925AA516790BF5B3C86CC910260B007A51 +:10042000086DB418B4B6417B0A7CAC52B228CC42F9 +:10043000017C06799438047D0A7CAC10B330CA1272 +:10044000097E07D6BD912C0000000004FFFF0000CC +:100450001203040304040101050807000007000754 +:10046000000000000000D7200788E3C711002A0D14 +:1004700088E394109AB919929087012B0B88E307AF +:100480001213321293052C0988E3472D2625042DDB +:100490000888E347630F0A2E0888E3C74C0D002F36 +:1004A0000A88630F93D2591800301188E32C919178 +:1004B00090919091909190112901310A88E3951AB9 +:1004C000D3910500320D88E32C911193A19112BBB9 +:1004D00000330E88E32C911193A1939011290134DC +:1004E0000D8863A59110D1C995980800350D8863D2 +:1004F000BC10B3139390112901360F88E32C91910E +:100500001033919190112901370B8863BC9091525F +:10051000A60D00381088E32C9191901129919190AB +:10052000112901390F88E32C919190113193901189 +:1005300029013A0A88E30712131793050000000403 +:10054000FFFF000010000302050501040614160059 +:10055000FC12FA12FA00000000024D2005004414BB +:100560002A1EAD6DB7F35299929E14C7A46DD08622 +:100570001D1CB6414B1A15A7A4A7A532AF002C101D +:1005800027253483925A132DAA4559126A002E0B3F +:10059000A7443483925A9341012F2854C6FA8441C8 +:1005A00027A4391AE7609CA375B48ED6D13A5A476E +:1005B000EB681DADA375B48EC63918E7689D30E8A9 +:1005C00004303054C69AC3B38E6A39A94E4A726059 +:1005D000C801398CD53855E3548D53354ED538552F +:1005E000E3540E631D187220C9497552A6A3F2F098 +:1005F00008312048C674431626A99CA4499AA449E8 +:100600009AA4499AA4499AA4499AA4499AA4D1A01F +:1006100000323054C65AC3C79C12E5B424A725F152 +:1006200020276918478318E7609C83710EC6391824 +:10063000E7609C83718EC9C329A7E9449D980CBFCC +:1006400000333654C67AC3839A13B29C94E4B4241C +:100650001ED6248DC368D08630C77220077320074A +:1006600073240787341A742055E3541E669D98E45A +:10067000A42C27A4C3830634325346FAD830E4604E +:100680000EE4508EE4480EE5408EC569AB1AA649CB +:100690009AA5511AA5599AC483BAD3749A4E4B8617 +:1006A00083AA83698ED6E14102353053463AC307A7 +:1006B00025A7E9349D260F0725CDD178B8E5142567 +:1006C000A725C36B0E87391C0E430E84EA30A43A6B +:1006D0002DC9497542383C4800363054C67AC3C7E4 +:1006E0009C12E5A424A725F1F092E6703C1CB29C74 +:1006F00054A725F130AB71AAC6A91AA7F230EBC4F2 +:1007000024276539211D1E3400372C54C63AC32FC7 +:10071000395127EAC46478CEC13807E31C8C7330A2 +:10072000CED13A5A87D31CADC3698ED6E13487D374 +:100730009C30E81000383154C67AC3839A13B29CB7 +:1007400054275587350AE3302B6769366C718ED68E +:1007500009593AAC491AA76A9CCAC3AC13939C9432 +:10076000E5847478D000392E54C67AC3839A13B2C4 +:100770009C94E4447998D53855E3548D5379987511 +:100780006292D3A2E13587D3E1AB4E4B725A9413F8 +:10079000C4E141043A12C7453483925A9341E73485 +:1007A00028A93519140000000004FFFF00008C0088 +:1007B000030204040304050C0E00FD09FD0AFE01FA +:1007C0007B0303046C200500440B2107A1BF8B436E +:1007D000222207347D8BC814230FB6BC9BA89761D7 +:1007E000897A1996A817002410B5BDAB6CA9289971 +:1007F000A82551A254B608251197449C508992B659 +:10080000282D654953222600261097442C31CAA270 +:100810002C492B6D51264D01270631FE8A01280BEC +:10082000C3B6AB244AA2DEA22C290CC3B68B2CCAB9 +:10083000A25EA224022A0E774CBC30A94DC3106DD3 +:100840004931032B0B77CCBBB8360C595C032C0811 +:1008500042B58A2151002D0616E48B032E0622C5CF +:100860008A212F0EC6B4DB621AA6611AA6619A020B +:10087000300C96C49B2109FD980C09003109954460 +:100880008BB19F0601320B96C49B2109C5BE0E0396 +:10089000330E96C49B2109D3D29C8AC99000340F91 +:1008A00096C43B2D89BA6449960C639A00350E961E +:1008B000C48B439A0E729A8AC99000360F96C49BD5 +:1008C0002109D564D14463322400370B96C48B636D +:1008D0001AA6C5B406380F96C49B21098DC9908409 +:1008E000C6644800390F96C49B21098DC9A0A66231 +:1008F0003224003A08724E8B211E023B09923E8B35 +:10090000211E12053C08B6B4DBB0E71E3D0846D4F4 +:100910008B3B3A0C3E09B6B48BB8C75E013F0FA6BD +:10092000BC9B2109C53413D31C4C23004014A7449D +:10093000ACAD92485A22294A45A9488992651300CC +:10094000411098C43C598DC2280BA3301A96580EFA +:10095000420D96C48B41098DC3121A8705430B962D +:10096000C4AB2109D3CEF110440D97448C410A93B6 +:10097000D4C7649000450C96C48B435A1D94B43A76 +:100980000C460B96C48B435A1D94B415470F9744DD +:10099000AC210AE5DA90AA49180D02480A97448C5E +:1009A000D475B8BA06490993448A25EACB004A08A7 +:1009B000C32CAAFED3024B1096C48B504BA24A26DE +:1009C0002659544BC2004C0996C48BB45F87014D25 +:1009D0000F98C40C7108972851A244F26C0E4E1166 +:1009E00097440C71543225932229D2122D11054FB0 +:1009F0000C9744ACAD927A4DB26C02500C96C48BFD +:100A000041091D8725AD02510DA73CACAD927A4D31 +:100A1000B26C0704520F96C48B41098DC312D59254 +:100A20002C0903530F96C49B2109D578885331199B +:100A30001200540A97448C4316F71B00550B974439 +:100A40008CD4AF49964D00560F97448CD49A64517C +:100A500056099334CE00571A9B448E3014432DC947 +:100A60009228892A5912255912255992A5611A01ED +:100A7000580E97448C544DB24A5AC92AA91A590C97 +:100A800097448C34C92A69DC1B005A0B97448C4369 +:100A90009CF67918025B09C3BE8B21EA9F065C0CA9 +:100AA000A5C58B300DD3300DD3305D09C3BE8BA9E6 +:100AB0007F1A025E0835FDAB2CA9055F0616BC8BBC +:100AC00003600733F60B290B610C76C49B214E861D +:100AD000D1A62C01620DA6C48BB465D144E3A62C2B +:100AE00000630975449B41EC3A04640BA6C4DB9691 +:100AF000451BDD9425650E76C49B2109C56150C355 +:100B0000644800660BA4C49A21CB06AD3700670E7B +:100B1000A6AC9B451BDD9425AD0C0900680BA6C453 +:100B20008BB465D1448F0169089144896418026AC5 +:100B300009C2AC992CE917056B0EA5448BB04D4A40 +:100B40004A5A1255B2006C07A1448987006D10798A +:100B5000448D4452245BA6655AA6655A016E0A76F6 +:100B6000C48B64D1448F016F0C7744ACAD925A931F +:100B70002C9B00700DA6AC8B64D144E3A62C6915A8 +:100B8000710BA6AC9B451BDD94256D720A74C48A5B +:100B90006488B26E00730B75449B2553572D590022 +:100BA000740B94C49A2C1A92ACA300750976C48B6A +:100BB000D0376509760E77448C34C9A2AC12266909 +:100BC0009C01771079448D2CD32A9D92A6A4AD98D0 +:100BD0004500780B75448B4C4B6A959A167910A793 +:100BE0002C8C544DB228AB84491AA771087A0A7527 +:100BF000448B41CC3A0E027B0CD3B6AB24EA12658F +:100C0000515B007C06C1BF8B0F7D0CD3B68B2CEAE9 +:100C10001625514B047E0935DD9B2CA9250080113A +:100C2000B63C3B2D4AD27090C2414AE328530000A3 +:100C3000000004FFFF210317B9BD9E1C48A2A9169E +:100C4000E6408EE4488EE4508E64E9024EAE1CCC41 +:100C5000BCEE74784BD361C829C341C9A1241AA43E +:100C600030CB812C0EA3441E4F111DCCBCBE3A903C +:100C7000C5619C0C432456B2355BA3A41825C5243A +:100C8000AA69A530044F4E1BCCBCBE544C8634AA76 +:100C90004645A99644C310B546D5A897A668923A8A +:100CA000505C1DCCBCBE3A10A6C9304839260D4B4D +:100CB00029CC92619092388A862DEDB601507F1F23 +:100CC000CCBCBE24AA45492DAD0C83A2C44A346CC9 +:100CD00039980C8314C659CB3048D500517319CBC1 +:100CE000BCAEB49603493A9C732C1D0E6A0E25398E +:100CF00090A5251D1051B71CCCBCEE3455B3288CE3 +:100D0000C250CAA4304D8621D281AC14866A1DCD52 +:100D10000051C622CCBC8E3049B3284C9261C89297 +:100D2000284DA4341A162D0AB361CAA2308BC26CA6 +:100D300018D21852A024CCBCBE1CCC916148862C81 +:100D40004AA22C4AA22C4AA22C4AA25A12D592A8F4 +:100D5000964449980C9A54538B1BCCBCAEE110E5D9 +:100D600060398CC33819862C8CC3242C55A36A187F +:100D70000D0754111BCABDCE1C8987838EE88834A9 +:100D80004452492A4943A42372A203090057FA1A7C +:100D9000CBBCBEDA70D0CA839CC5839C65C3416A54 +:100DA0005206454D8783005C4F1DCCBCAEE19603D7 +:100DB000D9704BC252753844AD5175382459144618 +:100DC0005929CC005E551CCBBCBEDA70D0AAC3102A +:100DD000A6E1308449160D07A96938488D512201D2 +:100DE0005EA61ECCBC7E201E0E512D1C0E512D8CDD +:100DF0000631079361C8A2AC9884E1166D035F00C9 +:100E00001CCCBC9EE190663990E540960359363C77 +:100E1000663990C5611CA6C53803624B18CBBCEE81 +:100E2000211A742CC7E2E19C63E97050732C47EAE5 +:100E3000500C62A522CCBCAE68D8A2308BC264989C +:100E4000C42847A261534AC99444599414A35A121E +:100E500025B5CC0063A51FCCBCAEB4340C515619DB +:100E6000A4248C86214A5365388451560A432D099F +:100E7000932C3365B917CCBCDE1C4D87C71CCCC185 +:100E8000610ED38E711626591C0265CB22CCBCAEE6 +:100E90003007B27078CA726019A6248B2AAD4965F2 +:100EA00048A2A41825C548D1A2241A0265F61CCC74 +:100EB000BC7E281AD2A81A45C3214AA321C9A2FE82 +:100EC0006B34A4512DC9B10C672A18CBBCDE1C8B26 +:100ED00087738EA5C341CDA11D48AA5149CBD41417 +:100EE000673A21CCBCAE1CCC86308BA24189C22C87 +:100EF000CAA69A52AA3455B2288CB224AA255112F5 +:100F00000E67C41ECCBCAE1C8C86214AB3E1A993EB +:100F100012552C15254A2A4AA449D5A81A15056840 +:100F2000211BCCBCAE304E4BC34B146635254D94C3 +:100F300052A5A912AA8D491869026E2921CCBC9E1E +:100F40006C10A32C0706A9925592418CB2300793DE +:100F50006148A4A4A9D254694A86036E9025CCBCEA +:100F60009E6818A424CB8128CC9241AA649564D0B1 +:100F7000925A251914290B93282925A58A1249016B +:100F800070D922CCBCAE2C07B2414B6A49A23425A1 +:100F900069968449986C5236684D49944595414903 +:100FA000B30470ED21CCBCAE2C07B2744806318B73 +:100FB00042458AB6288C9216258A7438896A514B24 +:100FC000165500753519CBBDCE1C8B875356CA4AB2 +:100FD000C3292B65A5E112A6619A0E03772026CCC2 +:100FE000BCDE611992308992308992611992288B06 +:100FF00092288B92E1A044599444599464C9A06802 +:101000006A017AEF21CCBC9E388D4A831255874104 +:10101000CAA1241986A41647C310559A86A4B225DE +:10102000ADA1007F6E1BCCBC9EE110751A0E713C09 +:101030003CE6D0308871384861368471343C88652C +:1010400018CCBC9E38AD0D5A1CA6A99864493446EC +:101050004A2DAAF61B008B661DCCBC9E6149A36875 +:101060004886A54F61D26938E89461C869C3905633 +:101070008721028F6C1DCCBCAEB46D50062D4C93F5 +:101080002C4D92E12547A2411C93214BD2502D01BA +:101090008FC71FCCBC9E1C08E33019061DCA812CCB +:1010A000DAA2308BC238AC846998E448360C0290DE +:1010B0000620CCBC9EAC982569320C3A9023516531 +:1010C000896AC9306449540BE32C4ECAD93008915F +:1010D000CD1ACBBC7E401B76281D0E52E3308451C6 +:1010E000711872201ECEE9701094C11DCCBC9E38C0 +:1010F000AC8443524B076598D2A6E12D0D933089FD +:101100009250CA4A690095F421CBBC9E6818A21C73 +:10111000D0216990A42C92B2481A24298BA42C9235 +:10112000064907121D4900987A1BCCBC9E2C1994C5 +:10113000B64A294C2A83D22DE9FFFFFF298C9262FF +:1011400092050000A92811241FBECFEFD8E0DEBF12 +:10115000CDBF13E0A0E0B1E0E2E8FAE702C00590FD +:101160000D92A035B107D9F726E0A0E5B3E001C0A4 +:101170001D92AF36B207E1F718E0C3EAD8E004C029 +:101180002197FE010E94E23BC23AD107C9F70E94B3 +:1011900052290C943F3D0C940000662329F06A30DC +:1011A00019F0862F90E008958FEF9FEF0895CF926A +:1011B000DF92EF92FF920F931F93CF93DF93EC0197 +:1011C000842F8770E1E0F0E0082E01C0EE0F0A9452 +:1011D000EAF73E2F7E0193E7E90EF11CD7019C91BF +:1011E00010E0923018F41E2F913029F150E0487F22 +:1011F000E8ADF9ADC880D980D60150969C91949FF6 +:101200006001959FD00C11246C0D7D2D711DDF01A7 +:10121000A60FB71F011115C08C91812B83278D93C9 +:101220002150D1F7DF91CF911F910F91FF90EF9057 +:10123000DF90CF90089530E0D9CF110F330F2223E4 +:1012400089F39C91912B93279C938F5F87702150FA +:101250008111F3CF9CADA90FB11DF70190819230A0 +:1012600028F4913009F031E011E0E9CF31E0E7CF27 +:1012700080E0089580E00895CF93DF93CEEED5E02F +:101280009BAF8AAFDC01ED91FC9182EF95E009956F +:10129000EAADFBAD0280F381E02D82EF95E0DF91B6 +:1012A000CF910994809365060895CF93DF9348EE1C +:1012B00053E060E070E04093DE045093DF046093FD +:1012C000E0047093E1049093DD048093DC04A0E7D4 +:1012D000B0E08C918E7F8C93E0EBF0E080818C7F8E +:1012E0008083E1EBF0E08081877F8083C6EBD0E0F4 +:1012F00088818F7D88838C918D7F8C9380818460A1 +:10130000808380818C7F808386E090E09093DB04F3 +:101310008093DA04DF91CF9108959B01DC01189648 +:10132000ED91FC9141E067E109948091D70490919F +:10133000D80401969093D8048093D70408958330FD +:1013400081F028F4813099F08230A9F00895873037 +:10135000A9F08830C9F08430B1F4809180008F7D8D +:1013600003C0809180008F7780938000089584B5BA +:101370008F7784BD089584B58F7DFBCF8091B000B9 +:101380008F778093B00008958091B0008F7DF9CF62 +:10139000CF93DF93282F30E0F901E255FF4F84917E +:1013A000F901E656FF4FD491F901EA57FF4FC49176 +:1013B000CC23A1F081110E949F09EC2FF0E0EE0FE9 +:1013C000FF1FE458FF4FA591B491EC91ED2381E00C +:1013D00090E009F480E0DF91CF91089580E090E003 +:1013E000FACF1F93CF93DF93282F30E0F901E25516 +:1013F000FF4F8491F901E656FF4FD491F901EA5766 +:10140000FF4FC491CC23A9F0162F81110E949F0990 +:10141000EC2FF0E0EE0FFF1FEE58FF4FA591B491B7 +:101420008FB7F894EC91111108C0D095DE23DC93AE +:101430008FBFDF91CF911F910895DE2BF8CFCF930F +:10144000DF9390E0FC01E656FF4F24918A579F4FAF +:10145000FC0184918823C9F090E0880F991FFC015A +:10146000E859FF4FA591B491FC01EE58FF4FC5918B +:10147000D49161110DC09FB7F8948C91209582236F +:101480008C938881282328839FBFDF91CF91089573 +:10149000623051F49FB7F8943C91822F809583235A +:1014A0008C93E8812E2BEFCF8FB7F894EC912E2BF5 +:1014B0002C938FBFEACF8230910538F0880F991FA7 +:1014C000880F991F05970197F1F708953FB7F89492 +:1014D0008091550490915604A0915704B0915804FE +:1014E00026B5A89B05C02F3F19F00196A11DB11D7F +:1014F0003FBFBA2FA92F982F8827BC01CD01620FBB +:10150000711D811D911D42E0660F771F881F991F75 +:101510004A95D1F708958F929F92AF92BF92CF9242 +:10152000DF92EF92FF926B017C010E94660A4B01F1 +:101530005C01C114D104E104F104B9F00E94660A0F +:10154000681979098A099B09683E734081059105EC +:1015500080F321E0C21AD108E108F10888EE880E74 +:1015600083E0981EA11CB11CE4CFFF90EF90DF90A8 +:10157000CF90BF90AF909F908F9008950F931F933F +:10158000CF93DF938C01C62F642FCC32E8F4CA329C +:1015900008F041C0C83271F1C93209F442C080E09C +:1015A000C034D0F1CF73F801EC0FF11D868D8F3F61 +:1015B00091F1C031E0F00E94C80921E0892B09F4C3 +:1015C00020E0F801218F27C0CD3289F140F384EB70 +:1015D0008C0F823020F7CF73C00FD12FD11D8E8D8D +:1015E00041112EC061E00E941F0A60E08E8D0E94B2 +:1015F000F10911C0025E1F4FD0E0F80181918F0107 +:101600008F3F31F061E0D03108F062E00E941F0AA4 +:10161000DF5FD63191F781E0DF91CF911F910F917C +:10162000089570E090E080E00E948B0AF4CF85E09E +:1016300090E0433010F082E090E00E945B0AEBCF34 +:1016400062E00E941F0AE7CF2FB7F894609151041F +:101650007091520480915304909154042FBF0895C7 +:10166000089520910404260F3327331F21323105BA +:10167000ECF420912A04FC0190E080E0243069F031 +:1016800082E00895A09104042191AC014E515C4F79 +:10169000A40FB52FB11D2C930196861798F3809156 +:1016A0000404680F6093040480E0089581E00895C5 +:1016B00010922A0481E080932C0410922B0461E0A4 +:1016C00082E10E94F10961E083E10E94F109E9EB06 +:1016D000F0E080818E7F808380818D7F808388E4AD +:1016E0008093B80085E48093BC000895CF93DF9386 +:1016F00091E09093E1038823B9F0C091B800D091B4 +:10170000BA008091BC008A7B8093BC0060E082E1DB +:101710000E94F10960E083E10E94F1090E94580BE8 +:10172000D093BA00C093B800DF91CF910895089587 +:1017300008950895E091D9038091D803E81730F413 +:10174000F0E0E854FC4F808190E008958FEF9FEF28 +:1017500008959091D9038091D8032FEF3FEF981708 +:1017600048F4E92FF0E0E854FC4F208130E09F5F1F +:101770009093D903C90108958091D8039091D9031A +:10178000891B990B0895CF92DF92EF92FF920F93EE +:101790001F93CF93DF937C01CB018A012091B70384 +:1017A000222389F0EB016B01C40ED51ECC15DD059B +:1017B00069F06991D701ED91FC910190F081E02DE4 +:1017C000C7010995F3CF642F0E94310BC801DF9147 +:1017D000CF911F910F91FF90EF90DF90CF900895E0 +:1017E000CF93DF931F92CDB7DEB769832091B70304 +:1017F0002223F9F02091DA03203258F021E030E082 +:10180000FC013383228390E080E00F90DF91CF9141 +:1018100008958091DB03E82FF0E0E956FC4F9981B1 +:1018200090838F5F8093DB038093DA0381E090E005 +:10183000ECCF61E0CE0101960E94310BF7CFDC01C5 +:101840001A96ED91FC9130E020E00994DC011696A7 +:10185000ED91FC9130E020E040E069E10994DC0189 +:101860001696ED91FC9130E020E040E068E10994AB +:101870009A01DC011696ED91FC91462F67E10994DF +:10188000EF92FF920F931F93CF93DF931F92CDB7E9 +:10189000DEB77C018B01D8016C91673129F150F4DE +:1018A0006531A0F40F90DF91CF911F910F91FF90C0 +:1018B000EF9008956A3118F16E3FA1F7F801418168 +:1018C000498369E2C7010E941F0C0BC0F8014181E6 +:1018D0004983D7011696ED91FC9130E020E0C701D5 +:1018E00009950E5F1F4FD7CFF80181818983AE0123 +:1018F0004F5F5F4F61E0C7010E94380CF2CF0F5F6E +:101900001F4FD7011696ED91FC9130E020E040E0AA +:10191000C7010995C0CF462FDC011696ED91FC91C9 +:1019200030E020E066E10994462FDC011696ED9147 +:10193000FC9130E020E065E10994EF92FF920F9373 +:101940001F93CF93DF93EC01042F7901693069F481 +:101950008BE991E0998388831C8A81E0DF91CF91A4 +:101960001F910F91FF90EF9008956D3009F475C0AD +:1019700038F46A3091F16B3009F468C080E0EECF42 +:101980006E3009F47DC06F30C9F70E942F0CF7014B +:101990001381110F110F110F6C89160F612F6295B2 +:1019A0006F706061CE010E94940C612F6F70CE0148 +:1019B0000E94940CF7016481606BCE010E94940C2C +:1019C000F701408151816281660F660F660FCE017B +:1019D0000E94380C0150A1F75DC0EA85FB8530E01C +:1019E00020E040E068E20995EE81FF8130E020E0F0 +:1019F00040E064E1CE01099541E06BE4CE010E9434 +:101A00001F0CE881F981448169E2CE010E941F0C1C +:101A100040E06BE4CE010E941F0CE881F981448113 +:101A200069E2CE010E941F0C41E06BE4CE010E94EE +:101A30001F0CE881F981458169E2CE010E941F0CEB +:101A400066E671E0CE010E94400C87CF61E671E04E +:101A50004423C1F36CE571E0F5CF411109C065E5A0 +:101A600071E00E94400CE881F98182898C8B75CFEE +:101A70006EE471E00E94400CE881F9818389F6CF21 +:101A80000E942F0C61E8CE010E94940C602FCE01C1 +:101A90000E948B0CCE010E94260C5FCFDC011896B1 +:101AA000ED91FC9130E020E040E069E10994DC0137 +:101AB0001896ED91FC9130E020E040E068E1099457 +:101AC000CF93DF931F92CDB7DEB76983BE016F5FFF +:101AD0007F4F0E948D090F90DF91CF910895EF9273 +:101AE000FF921F93CF93DF93EC01162F7A010E9490 +:101AF000570D60E4CE010E94600DE885F9859701DD +:101B0000412F67E1CE010995CE01DF91CF911F9161 +:101B1000FF90EF900C944E0DEF92FF921F93CF9396 +:101B2000DF93EC01142F7901663181F138F46431CF +:101B300009F44BC0653179F080E022C06831C9F109 +:101B400050F16931C9F780919603882391F1CE0154 +:101B50000E944E0D2EC080919603882319F0CE016D +:101B60000E944E0DCE010E94570D60E0CE010E94F2 +:101B7000600D612FCE010E94600D81E0809396037D +:101B8000DF91CF911F91FF90EF900895642F0E94F5 +:101B9000600D81E0F5CF80919603882319F0CE0186 +:101BA0000E944E0DA701193138F4612FCE010E9419 +:101BB0006F0D10929603EDCF68E1CE010E946F0D7C +:101BC000185188E1E80EF11CEDCF8E898F3F11F49A +:101BD00088E78E8BE885F9859701412F64E1CE0176 +:101BE000DF91CF911F91FF90EF900994FC01662344 +:101BF000D9F16A30C9F1808D811125C06C3F48F060 +:101C000085E0808F617070E0738B628B2EEF3FEF09 +:101C100029C0683F20F084E0808F6370F4CF603F7C +:101C200020F083E0808F6770EECF603E20F082E08E +:101C3000808F6F70E8CF262F30E0603C98F081E015 +:101C4000808F6F71E0CF8150808F2289338996E039 +:101C5000220F331F9A95E1F76F73262B338B228B5C +:101C60008111D4CFC90108952FEF3FEFFBCF0F9320 +:101C7000DC01FC01EE5BFF4F9081941B492F3197F3 +:101C80009081961B692F01110EC04150621BDE9698 +:101C90008C91DE97481BD496ED91FC91D597CD01A0 +:101CA00009950F910895013091F76150421BEFCFD4 +:101CB0000F93DC01DE963C91DE97431BD496ED91A9 +:101CC000FC9109950F910895FC01ED5BFF4F108287 +:101CD0003196DC01AF5BBF4F2C912083319610828F +:101CE00011962C9112973C91231718F0422F431B09 +:101CF0004083FC01EA5BFF4FDC01DF968C91281BDF +:101D000020830895FC01ED5BFF4F10823196DC01CA +:101D1000AF5BBF4F2C9120833196DC01DF962C9175 +:101D200020833196805C9F4FDC018C9180830895E5 +:101D3000CF93DF93FC01A081B18182AD982F990FE1 +:101D4000990F990F95AF50969C915097903208F04B +:101D50009FE1990F990F990F94AF23AD922F990F8F +:101D6000990F990F96AF51963C915197682F620F3A +:101D70007727771F3617170614F4832F821B97AF28 +:101D8000EF01C05CDF4F880F880F880F890F8883B1 +:101D9000219680EF888354968D919C915597813F31 +:101DA000910508F48883EE5BFF4F56968C918083F3 +:101DB000DF91CF9108950C94980E0C94980E0F9388 +:101DC000DC01222371F1FC0101112DC0EB5BFF4FFF +:101DD0008081481730F131968081481710F532978D +:101DE000908131978081260F2617C8F46917B0F4C7 +:101DF0002FEF290F8217A8F4681708F4682F291706 +:101E000008F4922F961BD696ED91FC91D7970480FB +:101E1000F581E02D292FCD01099503C0682F6917A1 +:101E200048F30F910895ED5BFF4F80816817C8F369 +:101E3000319680816817A8F732969081319780811A +:101E4000240F241778F4491760F42FEF290F821715 +:101E500040F7481708F4482F291708F4922F941BCD +:101E6000D2CF482F4917E8F6F2CF0F93462F00E064 +:101E700021E0682F82EF95E00E94DF0E0F91089518 +:101E8000FF920F931F93CF93DF93F82ED62F142F2B +:101E9000C22F00FF0CC0622F6D1B842F8F0D0E947C +:101EA000350F6C2F6F198D2F810F0E94350F01FF99 +:101EB0000CC06C2F6D1B812F8F190E94350F6C2F5A +:101EC0006F19812F8D1B0E94350F03FF0CC06C2FE3 +:101ED0006D0F812F8F0D0E94350F6C2F6F0D8D2F81 +:101EE000810F0E94350F02FF11C06C2F6D0F812FE3 +:101EF0008F190E94350F6C2F6F0D812F8D1BDF9175 +:101F0000CF911F910F91FF900C94350FDF91CF91DE +:101F10001F910F91FF900895CF92DF92EF92FF9261 +:101F20000F931F93CF93DF93E82ED62EC42FC22E8C +:101F3000D1E0D41BF42EF194FF0C022F262F482F52 +:101F40006C2F80E00E94400F10E0D7FD04C0C1500C +:101F5000F394F394DF0D1F5F812F880F8F5FD80FED +:101F60000C2D2D2D4E2D6C2F812F0E94400F1C17F4 +:101F700060F3DF91CF911F910F91FF90EF90DF9071 +:101F8000CF900895FF920F931F93CF93DF93182F55 +:101F9000C62FF42ED62FD20FCD1306C0DF91CF91CE +:101FA0001F910F91FF90089500E02F2D4C2F612F6E +:101FB00082EF95E00E94DF0ECF5FEECF0F93242FCC +:101FC00001E0462F682F82EF95E00E94DF0E0F910F +:101FD0000895FF920F931F93CF93DF93C82FD62FAF +:101FE000142FF22E00FF10C041E0460F622F6D1B30 +:101FF000812F8C0F0E94DE0F41E04C0F6F2D6C1B68 +:102000008D2F810F0E94DE0F01FF10C041E04D0FA8 +:102010006F2D6D1B812F8C1B0E94DE0F41E04C0F3A +:102020006F2D6C1B812F8D1B0E94DE0F03FF0EC0D6 +:1020300041E04D0F6F2D812F8C0F0E94DE0F41E08C +:102040004C0F6F2D8D2F810F0E94DE0F02FF13C0EA +:1020500041E04D0F6F2D812F8C1B0E94DE0F41E060 +:102060004C0F6F2D812F8D1BDF91CF911F910F9101 +:10207000FF900C94DE0FDF91CF911F910F91FF9095 +:102080000895CF92DF92EF92FF920F931F93CF9319 +:10209000DF93E82ED62EC42FC22ED1E0D41BF42E0F +:1020A000F194FF0C022F262F482F6C2F80E00E9406 +:1020B000E90F10E01C1748F0DF91CF911F910F91AD +:1020C000FF90EF90DF90CF900895D7FD04C0C150EE +:1020D000F394F394DF0D1F5F812F880F8F5FD80F6C +:1020E0000C2D2D2D4E2D6C2F812F0E94E90FE2CF4C +:1020F000AF92BF92CF92DF92EF92FF920F931F9316 +:10210000CF93DF93E82EB62ED42EC22FF82EF00EEA +:10211000C02EC60E1FEF140F180F101BDFEFD20FCB +:10212000D60FD01B22E0402F6C2D8F2D0E94411026 +:1021300021E0402F6C2D812F0E94411024E0402F80 +:102140006D2F8F2D0E94411028E0402F6D2F812F81 +:102150000E9441101D2D101B101B133088F0F394AA +:102160001250AA24A394A00E2A2D412F6B2D8F2D3F +:102170000E94C20F2A2D412F6D2F8F2D0E94C20F5A +:102180002C2F201B201B233088F0225061E06C0D87 +:102190004D2D8E2DDF91CF911F910F91FF90EF90DC +:1021A000DF90CF90BF90AF900C94C20FDF91CF9192 +:1021B0001F910F91FF90EF90DF90CF90BF90AF9065 +:1021C0000895FF920F931F93CF93DF93D82F162F6D +:1021D000F42EC22F00E0242F462F682F82EF95E0C7 +:1021E0000E94DF0E01E02C2F412F6D2F82EF95E032 +:1021F0000E94DF0E6FEF6F0D6D0F2C2F412F82EFBE +:1022000095E00E94DF0E4FEF4C0F410F00E02F2DA5 +:102210006D2F82EF95E00E94DF0EDF91CF911F912D +:102220000F91FF900895DC0118964C911897ED914D +:10223000FC911197249130E0042E02C0359527952A +:102240000A94E2F7842F860F883068F03196119651 +:10225000FC93EE93E49198E0941B01C0EE0F9A95E5 +:10226000EAF72E2B885018968C938FEF9FEF01C0C2 +:10227000880F6A95EAF7809582230895FC01E60F9E +:10228000F11D849190E0982F88273196E4918E0F6C +:10229000911D0895CF93DF932091390630913A062E +:1022A0002817390709F490C0EC0190933A068093FF +:1022B0003906FC018491809349063196E491E093BC +:1022C0004A06FE013296E491E0934B06FE013396F6 +:1022D000E491E0934C06FE013496E491E0934D06C0 +:1022E000FE013596E491E0934E06FE013696E491A8 +:1022F000E0934F06FE013796E491E0935006FE010D +:102300003896E491E0935106FE013996E491E0930A +:102310005206FE013A96E491E0935306FE013B9685 +:10232000E491E0935406FE013C96E491E093550657 +:10233000FE013D96E491E0935606FE013E96E4913F +:10234000E0935706FE013F96E491E0935806FE01A4 +:102350007096E491E093590661E1CE010E943E112E +:1023600090935B0680935A0663E1CE010E943E1172 +:1023700090935D0680935C0665E1CE010E943E115C +:1023800090935F0680935E068091390690913A069D +:10239000892BD1F0809156068093610640915706B3 +:1023A0004093620690916006992371F0913079F420 +:1023B00090915806891714F49093610680915906FC +:1023C000841714F480936206DF91CF9108953091C1 +:1023D000530620915506082E000C990B622F022EF1 +:1023E000000C770B630F711D37FD7A9586179707E1 +:1023F0001CF4320F30936106241734F720936206E1 +:10240000E3CFCF93DF93EC016BAFEEA9FFA901906F +:10241000F081E02D0995EEA9FFA90280F381E02D5E +:10242000CE01DF91CF910994AF92BF92CF92DF920C +:10243000EF92FF920F931F93CF93DF9300D000D0C2 +:102440001F92CDB7DEB78C01DC01DA96AC90DA973B +:10245000DB96EC90DB97ED91FC91B188FE2CD12CB2 +:10246000C12CD801ED91FC9111978089D8962D91BE +:102470003C911C82FD828B83B8E08B9FC0011124AC +:102480008C9DA0018D9D500D9C9D500D1124240FFD +:10249000351F3A832983D8011496ED91FC919E0152 +:1024A0002F5F3F4F41E06FE0C8010995F3948F2DF6 +:1024B0008E198A1528F4BFEFCB1ADB0AFB1488F2B9 +:1024C0000F900F900F900F900F90DF91CF911F9171 +:1024D0000F91FF90EF90DF90CF90BF90AF90089555 +:1024E000CF92DF92EF92FF920F931F93CF93DF93E0 +:1024F000EC01962F683109F44BC0B901993130F4E1 +:102500009431C9F0973189F080E006C0993109F41F +:1025100061C09032C9F781E0DF91CF911F910F9197 +:10252000FF90EF90DF90CF90089550E082EE94E01E +:102530000E94C30BF0CF8C859D85AE85BF85892B0E +:102540008A2B8B2B71F4E881F981A585B0E020EA14 +:1025500036E841E050E00E9447396C877D878E87DE +:102560009F871092D9031092D8031092DB03109228 +:10257000DA030E94580B87E99BE090930304809351 +:10258000020488E99BE09093070480930604C3CF7C +:102590002C853D854E855F8560E074E284EF90E098 +:1025A0000E945A39205131094109510956954795E0 +:1025B000379527952093B8008E8990E0959587955B +:1025C00091E09093B703809395031092DB031092F0 +:1025D000DA03A1CFD091DA03D13208F093C0C091D1 +:1025E00095030E94660A6B017C0180912A04811187 +:1025F00064C082E080932A0481E080932C048FEFF2 +:102600008093290410924E04D0934D04A7E9B3E0BF +:10261000EDE2F4E080E0D8137CC010924F0480918A +:102620004F04CC0FC82BC0934F0480912B048130F2 +:1026300009F073C010922B040E94660A6B017C01A2 +:1026400080914F048093BB008091DD039091DE0365 +:10265000A091DF03B091E003892B8A2B8B2B99F09B +:102660000E94660A0091DD031091DE032091DF03D2 +:102670003091E0036C197D098E099F090617170731 +:1026800028073907D8F18091BC0083FDD9CF85ECAC +:102690008093BC000E94660A6B017C0180912A0431 +:1026A0008230E9F1809129048F3F61F18091290402 +:1026B000803241F18091290425C08091DD03909101 +:1026C000DE03A091DF03B091E003892B8A2B8B2BD3 +:1026D00009F48BCF0E94660A0091DD031091DE039E +:1026E0002091DF033091E0036C197D098E099F0969 +:1026F000061717072807390708F077CF8091DC0302 +:102700000E94760B1092DB031092DA031092B7034B +:1027100002CF9D9191938F5F7ECF85EEB9CF80914F +:10272000DD039091DE03A091DF03B091E003892BDC +:102730008A2B8B2B09F4B2CF0E94660A0091DD032D +:102740001091DE032091DF033091E0036C197D09C5 +:102750008E099F09061717072807390708F09ECF2B +:10276000CDCF109291031092920310929303109286 +:102770009403109290038091DA049091DB0480938B +:10278000B200E0E7F0E080818160808308958E50A0 +:10279000806480937C0080917A00806980937A00C5 +:1027A00083B7817F826083BF20E190E080E033B710 +:1027B000316033BF889533B73E7F33BF30917A00A5 +:1027C00036FDFCCF4091780050917900840F951F21 +:1027D000215069F720917A002F7720937A0024E026 +:1027E000969587952A95E1F7089581E10E94C71390 +:1027F000BC0190E080E00E94A53A20910501309153 +:10280000060140910701509108010E945C3B20E0C5 +:1028100030EC4FE754E40E94FD3920E030E040E026 +:102820005FE30E948B3920E030E048EC52E40E94E4 +:102830005C3B20918C0330918D0340918E0350912D +:102840008F030E948C3960938C0370938D03809367 +:102850008E0390938F0320918B032F5F20938B0324 +:102860002A30C0F020E030E040E251E40E94FD391F +:102870006093B9047093BA048093BB049093BC0432 +:1028800010928B0310928C0310928D0310928E0382 +:1028900010928F030895CF92DF92EF92FF9284E11E +:1028A0000E94C713BC0190E080E00E94A53A2CED85 +:1028B00036E443E05EE30E94FD392091050130914A +:1028C000060140910701509108010E945C3B20E005 +:1028D00030EC4FE754E40E94FD392091870330919A +:1028E00088034091890350918A030E948C39609338 +:1028F0008703709388038093890390938A032091C0 +:1029000086032F5F209386032A3008F43FC020E01F +:1029100030E040E251E40E94FD3920917C04309186 +:102920007D0440917E0450917F040E948C39609315 +:102930009004709391048093920490939304109266 +:1029400086031092870310928803109289031092D5 +:102950008A03C0900901D0900A01E0900B01F09029 +:102960000C01A70196010E94F83987FF14C023E3E8 +:1029700033E343E550E4C701B6010E94573B87FDAE +:102980000AC081E0809394041092D904FF90EF90E4 +:10299000DF90CF90089510929404F8CF4F925F92F9 +:1029A0006F927F928F929F92AF92BF92CF92DF925F +:1029B000EF92FF920F931F93CF93DF9300D000D03D +:1029C00000D0CDB7DEB76B017C0180913B01873031 +:1029D00009F064C180916104813009F043C1A7010D +:1029E0009B0160E070E080E291E40E948B390E94DC +:1029F0006F3A70937D0360937C0380917C03909188 +:102A00007D039E838D838B3F9F4F0CF069C186E9C8 +:102A100090E0A0E0B0E08093320190933301A09366 +:102A20003401B093350100918003109181038D81B1 +:102A30009E810E962D813E818D9708F080C1B9014F +:102A4000330F880B990B0E94A73A6B017C019F778B +:102A500020E030E0A9010E94573B18160CF059C144 +:102A60006D817E81601B710B072E000C880B990B0A +:102A70000E94A73A4B015C016D817E81600F711F3E +:102A8000072E000C880B990B0E94A73A20E030E03B +:102A900040E05FE30E945C3B69837A838B839C8385 +:102AA000C801880F991F6D817E81681B790B809109 +:102AB0007E0390917F03680F791F072E000C880B0F +:102AC000990B0E94A73A2B013C0120E030E0A901BC +:102AD000C701B6010E94573B181624F0F7FAF0948C +:102AE000F7F8F09420E030E04AEF54E4C701B60173 +:102AF0000E94573BC12CD12C760187FF06C0C12C08 +:102B0000D12C80E8E82E8FE3F82E2DEC3CEC4CE441 +:102B10005FE360910E0170910F018091100190911F +:102B200011010E945C3BA30192010E945C3B2B01BE +:102B30003C012DEC3CEC4CE45EE360917803709139 +:102B4000790380917A0390917B030E945C3B9B0107 +:102B5000AC01C301B2010E948C392B013C014092AF +:102B600078035092790360927A0370927B032091EC +:102B70001201309113014091140150911501C701C8 +:102B8000B6010E945C3B29813A814B815C810E94A5 +:102B90005C3B6B017C012091160130911701409143 +:102BA000180150911901C501B4010E945C3B9B01C1 +:102BB000AC01C701B6010E948C39A30192010E94A9 +:102BC0008C396B017C016091A7047091A804072ED9 +:102BD000000C880B990B0E94A73AA70196010E944E +:102BE0008C390E946F3A7093A8046093A704072E53 +:102BF000000C880B990B0E94A73A6B017C0120E026 +:102C000030EE4FEF54E40E94573B87FD8DC08D811D +:102C10009E81181619060CF480C01092A804109218 +:102C2000A70410937F0300937E032D813E81309390 +:102C300081032093800326960FB6F894DEBF0FBE63 +:102C4000CDBFDF91CF911F910F91FF90EF90DF905B +:102C5000CF90BF90AF909F908F907F906F905F903C +:102C60004F900895823039F4A7019B0160E070E035 +:102C70008FEA93E4BACE833039F4A7019B0160E078 +:102C800070E882E294E4B1CE843009F0B6CEA701B8 +:102C90009B0160E070E08BE694E4A7CE20913901BF +:102CA00030913A013A832983B90190E080E00E9493 +:102CB000A53AA70196010E948B390E946F3A709342 +:102CC0007D0360937C038091B1049091B2042981CB +:102CD0003A81281B390B3093B4042093B3048DCE72 +:102CE0008D819E810596409728F480E991E0A0E0CF +:102CF000B0E091CE8D819E810B97449728F484EFAC +:102D000091E0A0E0B0E087CE80E293E0A0E0B0E008 +:102D100082CEC12CD12C760156CF8FEF97E09093C5 +:102D2000A8048093A7047DCF20E030E0A901C7016B +:102D3000B6010E94F83918160CF473CF6ECF2F31FC +:102D400031055CF7213F3F4F09F067CF6ACF8F9283 +:102D50009F92AF92BF92CF92DF92EF92FF9260E08C +:102D60008AE00E94F1090E944B140E94F5138091A1 +:102D70008104813061F4E091F605F091F70530E0CF +:102D800020E040910D016EE082EF95E0099561E051 +:102D900070E080E090E00E948B0A80E10E94C713FF +:102DA000C0906204D0906304E0906404F0906504E5 +:102DB000BC0190E080E00E94A53AA70196010E9424 +:102DC0008B3923E333E343E35FE30E945C3BA701DA +:102DD00096010E948C396B017C01C0926204D092F2 +:102DE0006304E0926404F0926504209172043091CF +:102DF000730440917404509175040E945C3BA701D8 +:102E000096010E945C3BA70196010E945C3B4B012E +:102E10005C0120916E0430916F04409170045091D8 +:102E20007104C701B6010E945C3BA70196010E9494 +:102E30005C3B9B01AC01C501B4010E948C394B0184 +:102E40005C0120916A0430916B0440916C045091B4 +:102E50006D04C701B6010E945C3B9B01AC01C5013A +:102E6000B4010E948C39209166043091670440912E +:102E70006804509169040E948C390E94763A90E06F +:102E800080E00E94A53A4B015C0160910401062E8E +:102E9000000C770B880B990B0E94A73A9B01AC01A1 +:102EA0006091B9047091BA048091BB049091BC0404 +:102EB0000E948B399B01AC01C501B4010E948C3981 +:102EC0000E94763AAB017093B6046093B50480918A +:102ED000840390918503840F951F909385038093BD +:102EE0008403209183032F5F20938303283079F498 +:102EF00023E0959587952A95E1F79093B204809306 +:102F0000B104109285031092840310928303809180 +:102F1000D904882309F497C080919404811193C047 +:102F20008091B80481118FC08091390190913A014C +:102F300003962091B1043091B204821B930B079742 +:102F4000A8F48091C704811111C081E08093C60468 +:102F500028E730E03093C5042093C4042CE231E02C +:102F60003093C3042093C2048093C70480913B0133 +:102F7000873009F062C0C701B6010E94CE14E0900C +:102F8000A704F090A804B70190E080E00E94A53A61 +:102F90004B015C0120E030EE4FEF54E40E94573BC0 +:102FA00061E087FF0BC020E030E0A901C501B4015A +:102FB0000E94F83918160CF45FC060E08AE00E94A5 +:102FC000F1096091A7047091A804072E000C880BEA +:102FD000990B0E94A73A20E030EE4FEF54E40E9494 +:102FE000FD3920E030E048EC52E40E945C3B0E9456 +:102FF000763A60938F04C0906204D0906304E090AE +:103000006404F09065048091D90420E030E04FE73B +:1030100054E4811142C0C701B6010E94573B87FDAD +:1030200066C081E08093B804FF90EF90DF90CF906E +:10303000BF90AF909F908F900895BA0190E080E08C +:103040000E94A53A9ACF1092A8041092A704109259 +:1030500081031092800310927F0310927E0382EC12 +:1030600091E0A0E0B0E08093320190933301A0930F +:103070003401B093350183CF81E28093800084E1F5 +:10308000809381008FEF97E0909389008093880070 +:10309000F0928B00E0928A0094CFC701B6010E94A3 +:1030A000573B87FD15C0809182038F5F8093820319 +:1030B000883008F4B9CF809170008E7F80937000C3 +:1030C0001092820381E08093B7041092D904ACCFB0 +:1030D00020E030E04FE754E4C701B6010E94F83920 +:1030E00087FF05C01092B704109282039DCF109203 +:1030F000B8049ACF80913B01873049F08091D50484 +:103100009091D60401969093D6048093D5040895A7 +:10311000CF92DF92EF92FF92CF93DF930E94240B26 +:10312000C0905D04D0905E04E0905F04F090600475 +:103130006C197D098E099F0964317105810591051E +:1031400008F46AC0D1E0D093C60484E690E090937E +:10315000C5048093C40486E490E09093C3048093F4 +:10316000C204C0913B01C13009F075C084E00E94E7 +:10317000C809209183042817190609F054C08091CA +:10318000390190913A010A9690933A01809339015E +:1031900080912D0190912E01CAE0D0E0BE010E94E5 +:1031A000CE3BEAE0E69F9001E79F300D112480912D +:1031B000270190912801BE010E94CE3BE69FA0010D +:1031C000E79F500D11248091390190913A01281701 +:1031D0003907C8F550933A01409339011092C7045A +:1031E0001092D8041092D7041092CA041092B70417 +:1031F0001092CE041092D6041092D5041092D004EE +:103200001092CF040E94240B60935D0470935E04BF +:1032100080935F0490936004DF91CF91FF90EF90D3 +:10322000DF90CF90089584E00E94C8092091830424 +:10323000C227C817190609F0ABCF809139019091C8 +:103240003A010A97A1CF8417950740F630933A01C7 +:1032500020933901C3CFC23081F584E00E94C809B0 +:10326000209183042817190681F480918E0481111E +:10327000C9CF80918A048111C5CFD0938E048091EB +:103280008B048F5F80938B04BDCF84E00E94C809BC +:10329000209183042D272817190609F0B3CF8091B8 +:1032A0008E048111AFCF80918A048111ABCFD0936E +:1032B0008A0480918B048150E5CFC33009F066C148 +:1032C00080918804811120C0C091890484E00E940B +:1032D000C809209183042817190659F4CF5FC093B9 +:1032E00089048091890484300CF44AC110928904C5 +:1032F00089CF84E00E94C80920918304D227D8177F +:10330000190679F7C150EBCF813009F065C084E030 +:103310000E94C809209183042817190649F4809156 +:10332000870420E030E040E85FE3882309F449C0E7 +:1033300084E00E94C8092091830431E023272817E4 +:10334000190621F4809187048823E1F084E00E942B +:10335000C809209183042817190659F184E00E94B6 +:10336000C8092091830431E023272817190609F0A2 +:10337000B8CF809187042DEC3CEC4CEC5DE38111DF +:1033800005C0AFCF20E030E040E85FE36091160178 +:103390007091170180911801909119010E948B3949 +:1033A000609316017093170180931801909319018F +:1033B00098CF80918704882389F22DEC3CEC4CEC6B +:1033C0005DE3609116017091170180911801909151 +:1033D00019010E948C39E4CF823009F066C084E084 +:1033E0000E94C809209183042817190621F48091AE +:1033F0008704882331F184E00E94C8092091830466 +:1034000031E023272817190659F184E00E94C809E2 +:103410002091830428171906F1F184E00E94C8095D +:103420002091830431E023272817190609F059CF8A +:10343000809187042DEC3CEC4CEC5DE3811118C0CD +:1034400050CF20E030E040E85FE3609112017091DE +:10345000130180911401909115010E948C3912C0C2 +:10346000809187048111D1CF20E030E040E85FE314 +:1034700060911201709113018091140190911501D6 +:103480000E948B3960931201709313018093140191 +:103490009093150126CF80918704882309F4BDCF2E +:1034A0002DEC3CEC4CEC5DE3D0CF833009F019CF30 +:1034B00084E00E94C809209183042817190621F48A +:1034C00080918704882341F184E00E94C8092091FB +:1034D000830431E0232728171906A9F184E00E940C +:1034E000C809209183042817190609F43FC084E015 +:1034F0000E94C8092091830431E023272817190668 +:1035000009F0EFCE80918704882309F4EACE2DECF0 +:103510003CEC4CEC5DE31FC020E030E040E85FE3B2 +:1035200060910E0170910F01809110019091110135 +:103530000E948C3960930E0170930F0180931001EB +:1035400090931101CECE809187048111C7CF20E0E6 +:1035500030E040E85FE360910E0170910F018091CF +:103560001001909111010E948B39E4CF8091870462 +:10357000882309F4BCCF2DEC3CEC4CEC5DE3D0CFC0 +:1035800087FF40CE83E0809389043CCEC43009F0AD +:1035900080C0C0918504C11120C0C091860484E020 +:1035A0000E94C809209183042817190659F4CF5F97 +:1035B000C09386048091860483300CF44FC010922F +:1035C000860420CE84E00E94C80920918304D2277B +:1035D000D817190679F7C150EBCFC13009F584E04F +:1035E0000E94C809209183042817190651F480917C +:1035F00037019091380101969093380180933701FB +:10360000D9CF84E00E94C80920918304C227C8173B +:10361000190681F680913701909138010197ECCF1E +:10362000C23041F684E00E94C80920918304281723 +:10363000190631F4809136018F5F80933601BACF3D +:1036400084E00E94C80920918304D227D817190664 +:1036500009F0B0CF809136018150EFCF87FF04C0D1 +:1036600082E080938604CECD80913701909138011D +:10367000883E23E0920738F08AE090E0909338018A +:1036800080933701BFCD0A9708F0BCCD87EE93E059 +:10369000F5CFC53009F08FC0C0918104C11125C09C +:1036A00084E00E94C809C0918404209183042817F3 +:1036B000190651F4CF5FC093840480918404843050 +:1036C00074F0109284049ECD84E00E94C809209179 +:1036D0008304D227D817190681F7C150ECCF87FF92 +:1036E00091CD83E0809384048DCDC13041F584E099 +:1036F0000E94C809209183042817190679F4809143 +:103700000D018B5F80930D0180910D019EEF980F4D +:10371000933088F485E080930D0174CD84E00E949D +:10372000C80920918304C227C817190669F7809138 +:103730000D018550E7CF811165CD8FEFECCFC23001 +:10374000F1F484E00E94C809209183042817190627 +:1037500039F48091820491E089278093820452CDCC +:1037600084E00E94C8092091830431E023272817B0 +:10377000190609F047CD809182048327EECFC3302C +:1037800009F040CD84E00E94C809209183042817E5 +:10379000190629F481E028272093830433CD84E09F +:1037A0000E94C8092091830431E0232728171906B5 +:1037B00009F028CDF1CFC63009F007C180917B0414 +:1037C000811125C084E00E94C809C0918004209125 +:1037D00083042817190651F4CF5FC09380048091A9 +:1037E0008004843074F0109280040CCD84E00E9438 +:1037F000C80920918304D227D817190681F7C15030 +:10380000ECCF87FFFFCC83E080938004FBCC81303A +:10381000C9F584E00E94C80920918304281719067D +:10382000B9F42AE037ED43E25CE360910501709161 +:10383000060180910701909108010E948C396093E4 +:103840000501709306018093070190930801DACC7B +:1038500084E00E94C8092091830431E023272817BF +:10386000190609F0CFCC2AE037ED43E25CE3609122 +:1038700005017091060180910701909108010E9455 +:103880008B39DDCF8230C9F584E00E94C8092091D0 +:10389000830428171906B9F42DEC3CEC4CEC5DE3DD +:1038A00060917C0470917D0480917E0490917F04EE +:1038B0000E948C3960937C0470937D0480937E0415 +:1038C00090937F049FCC84E00E94C80920918304D8 +:1038D00031E023272817190609F094CC2DEC3CEC95 +:1038E0004CEC5DE360917C0470917D0480917E04DA +:1038F00090917F040E948B39DDCF833009F082CC18 +:1039000084E00E94C8092091830428171906A9F5AC +:103910002DEC3CEC4CEC5DE36091090170910A01E7 +:1039200080910B0190910C010E948C3960930901E8 +:1039300070930A0180930B0190930C01C0900901D0 +:10394000D0900A01E0900B01F0900C0120E030E0F3 +:1039500040EF51E4C701B6010E94573B181634F5F9 +:103960008DEC9CECACE4B0E48093090190930A01E7 +:10397000A0930B01B0930C0145CC84E00E94C809D0 +:103980002091830431E0232728171906B9F62DEC7E +:103990003CEC4CEC5DE36091090170910A0180916F +:1039A0000B0190910C010E948B39C0CF2DEC3CECA7 +:1039B0004CE450E4C701B6010E94F83987FF22CCDD +:1039C00080E090E0A0EFB1E4CFCFC83009F071C043 +:1039D00080917704811126C084E00E94C809C091BB +:1039E0007A04209183042817190651F4CF5FC093FD +:1039F0007A0480917A0484307CF010927A0402CCAC +:103A000084E00E94C8092091830431E0232728170D +:103A1000190679F7C150EBCF87FFF4CB83E0809391 +:103A20007A04F0CB813021F584E00E94C80920910E +:103A300083042817190671F4809104018F5F809325 +:103A40000401809104018D59873C08F4DBCB10926E +:103A50000401D8CB84E00E94C8092091830431E09E +:103A600023272817190669F7809104018150E7CFB1 +:103A7000833009F0C7CB84E00E94C80920918304F9 +:103A80002817190639F48091790491E089278093E9 +:103A90007904B8CB84E00E94C8092091830431E006 +:103AA00023272817190609F0ADCB809179048327C5 +:103AB000EECFC73009F0A6CBC0916104C11126C07A +:103AC00084E00E94C809C0917604209183042817DD +:103AD000190651F4CF5FC093760480917604873045 +:103AE0007CF0109276048ECB84E00E94C80920916D +:103AF000830431E023272817190679F7C150EBCF4B +:103B000087FF80CB86E0809376047CCBC13011F5B3 +:103B100084E00E94C809209183042817190651F4F3 +:103B2000809127019091280101969093280180931C +:103B3000270168CB84E00E94C80920918304C22732 +:103B4000C817190609F05ECB8091270190912801D2 +:103B50000197EBCFC23019F584E00E94C80920918B +:103B600083042817190651F48091290190912A01A4 +:103B7000019690932A018093290144CB84E00E940E +:103B8000C8092091830431E023272817190609F07A +:103B900039CB8091290190912A010197EACFC33056 +:103BA00019F584E00E94C80920918304281719069A +:103BB00051F480912B0190912C01019690932C014E +:103BC00080932B011FCB84E00E94C80920918304BD +:103BD00031E023272817190609F014CB80912B0117 +:103BE00090912C010197EACFC43009F00BCB84E00F +:103BF0000E94C809209183042817190651F4809166 +:103C00002D0190912E01019690932E0180932D010C +:103C1000F9CA84E00E94C8092091830431E0232777 +:103C20002817190609F0EECA80912D0190912E01F6 +:103C30000197EACFEF92FF920F931F93CF93DF93F9 +:103C40008091C604882321F1D0E0C0E00091C20435 +:103C50001091C304C017D107C8F461E088E00E9446 +:103C6000F109E090C404F090C504C7010E945B0A0A +:103C700060E088E00E94F10901501109C017D107E6 +:103C800018F4C7010E945B0A2196E0CF1092C60487 +:103C900080919404811104C08091B704882361F15C +:103CA0000E94240B009174031091750320917603F8 +:103CB00030917703601B710B820B930B693E73404D +:103CC00081059105C8F081E08093C60488E790E003 +:103CD0009093C5048093C4048CE291E09093C30454 +:103CE0008093C2040E94240B609374037093750345 +:103CF000809376039093770380915B048823C1F0CF +:103D000081E08093C60486E990E09093C504809397 +:103D1000C40480ED92E09093C3048093C204109297 +:103D20005B04DF91CF911F910F91FF90EF90089569 +:103D300080915A048823A9F381E08093C60486E920 +:103D400090E09093C5048093C40480ED92E090933A +:103D5000C3048093C20410925A04E3CFCF92DF923F +:103D6000EF92FF920F931F93CF93DF936C01EB01C0 +:103D70007B01E40EF51E10E000E0CE15DF0561F0DA +:103D80006991D601ED91FC910190F081E02DC60181 +:103D90000995080F191FF1CFC801DF91CF911F912D +:103DA0000F91FF90EF90DF90CF900895089590E0ED +:103DB00080E00895FC0101900020E9F73197AF0100 +:103DC000481B590BBC018EEE95E00C94AE1E8F92F1 +:103DD0009F92AF92BF920F931F93CF93DF93CDB774 +:103DE000DEB7A1970FB6F894DEBF0FBECDBF19A204 +:103DF000423008F44AE08E010F5D1F4F842E912C53 +:103E0000B12CA12CA50194010E945A39E62FB901C9 +:103E1000CA01EA30F4F4E05DD801EE938D01232B62 +:103E2000242B252B79F790E080E0109719F0CD0135 +:103E30000E94DA1EA1960FB6F894DEBF0FBECDBF6A +:103E4000DF91CF911F910F91BF90AF909F908F9076 +:103E50000895E95CE1CF0C94DA1EBC0190E080E0AB +:103E60004AE00C94E71E2F923F924F925F926F921E +:103E70007F928F929F92AF92BF92CF92DF92EF92FA +:103E8000FF920F931F93CF93DF9300D000D01F9228 +:103E9000CDB7DEB78C015C0124E0A20EB11CFC01A1 +:103EA000E758FF4F0190F081E02DC50109959A83F5 +:103EB00089838E3F9F4F08F040C0F801E458FF4FC0 +:103EC000F08048016BE7860E911CF401E080BE97FC +:103ED0000190F081E02DC5010995F801EF5AFF4FDF +:103EE000E08231968F0D808337978081918147964C +:103EF00029813A812F3F310511F008F0FAC0B396BD +:103F00002136310540F469817A816134710538F0D8 +:103F1000F801E459FF4F20813181820F931F9C01EA +:103F20002F5F3F4FF9014491411121C01B82F401E1 +:103F30008081FB818F0FF401808381E090E00F90FE +:103F40000F900F900F900F90DF91CF911F910F91D5 +:103F5000FF90EF90DF90CF90BF90AF909F908F90A9 +:103F60007F906F905F904F903F902F900895FC014D +:103F7000449169817A814617170609F0B5C0029607 +:103F80000097A1F2B801615B7F4F7D836C83FB01D9 +:103F9000918380831086709660818C819D810E94C0 +:103FA0001311EC81FD818683F801E05AFF4F608197 +:103FB0008C819D810E941311782EEC81FD81878375 +:103FC0006801F7E7CF0ED11CF6019081EC81FD81ED +:103FD000928781E0911180E0EC81FD818387F80177 +:103FE000EF59FF4F6080662D8C819D810E941311D7 +:103FF000382EF801EE59FF4FF0806F2D8C819D8196 +:104000000E941311482E8FEF8F0DEE24E394F12CB4 +:10401000970102C0220F331F8A95E2F73A83298362 +:10402000F801ED59FF4F5080652D8C819D810E94D4 +:1040300013115A94970101C0220F5A94EAF7821B78 +:104040008B83EC81FD81868118160CF070CF6A9409 +:1040500001C0EE0C6A94EAF782818E19380E328222 +:104060008381F9818F0F84198719EC81FD81838306 +:10407000148215829801235A3F4F3A83298378018D +:104080003EE5E30EF11CE981FA8160818C819D811E +:104090000E941311482EF70160818C819D810E943E +:1040A0001311382EEC81FD8114816580542CEC8134 +:1040B000FD812680211A818581110FC06281438193 +:1040C0008385F6018083222D521408F4252D460D98 +:1040D000610F00E0C5010E94DF0E521408F43CC0DD +:1040E0005218639410E0E3CFF9012491820F911DDF +:1040F00016CFF801E059FF4FC080D180C80ED91EFD +:10410000760160E0C7010E943E11C80ED91E62E030 +:10411000C7010E943E11F4E0EF0EF11C29813A81A3 +:104120008217930770F3F601849190E0982F882707 +:104130003196E4918E2B009709F4F8CE29813A81CB +:104140002817390719F4C60103961ACFF6013296DB +:10415000E491CE0ED11CE7CF150DEC81FD811483C7 +:104160006582532CEC81FD812680211A6281438176 +:104170008285F6018083222D521408F4252D460DE8 +:10418000610F00E0C5010E94DF0E521420F05218AA +:10419000639410E0E7CF150DEC81FD8114836582F7 +:1041A00061E0CF010E94131181117CCFEC81FD8170 +:1041B000858187150CF467CF8285F6018083B7CEA1 +:1041C0004F925F926F927F928F929F92AF92BF9227 +:1041D000CF92DF92EF92FF92CF93DF936B017C013E +:1041E000D42FAC019B010E94C93B882391F08DED37 +:1041F00091E0DF91CF91FF90EF90DF90CF90BF9053 +:10420000AF909F908F907F906F905F904F900C94A5 +:10421000DA1E26013701E89477F82FEF3FEF4FE7DA +:104220005FE7C301B2010E94C93B81110DC02FEFAE +:104230003FEF4FE75FE7C301B2010E94F83918165C +:104240001CF481EE91E0D5CF2FEF3FEF4FE75FE415 +:10425000C701B6010E94573B18161CF485EE91E089 +:10426000C8CF2FEF3FEF4FE75FECC701B6010E94C9 +:10427000F83987FDF3CF20E030E0A901C701B6018E +:104280000E94F839912C812C87FF0AC06DE28EEED6 +:1042900095E00E94331F4C01F7FAF094F7F8F09480 +:1042A000CD2FA12C60E070E080E09FE3AD1640F4DC +:1042B00020E030E040E251E40E94FD39A394F6CFC3 +:1042C000A70196010E948C392B013C010E94763A8D +:1042D0005B016C014AE00E94E71E7C01E80CF91CBE +:1042E000DD23A9F1C601B5010E94A53A9B01AC01ED +:1042F000C301B2010E948B394B015C016EE28EEE6C +:1043000095E00E94331FE80EF91EC15000F120E035 +:1043100030E040E251E4C501B4010E945C3B2B0156 +:104320003C010E94763A4B01CB010E942D1FE80E02 +:10433000F91EB40190E080E00E94A53A9B01AC0117 +:10434000C301B2010E948B394B015C01DECFC70172 +:10435000DF91CF91FF90EF90DF90CF90BF90AF9023 +:104360009F908F907F906F905F904F900895CF9225 +:10437000DF92EF92FF92CF93DF936C01990FEE08DB +:10438000FF08F7FE19C06DE28EEE95E00E94331F24 +:10439000EC0166277727CB016C197D098E099F09EF +:1043A0004AE00E94E71E8C0F9D1FDF91CF91FF9086 +:1043B000EF90DF90CF9008954AE0C701B601DF91FA +:1043C000CF91FF90EF90DF90CF900C94E71E85ED9A +:1043D0008093BC008091DD039091DE03A091DF0308 +:1043E000B091E0030796A11DB11D23E0B695A795F6 +:1043F000979587952A95D1F72091BC0024FD03C09D +:1044000010922A0408954091DD035091DE036091DB +:10441000DF037091E003452B462B472B69F3009790 +:10442000A105B10541F025E32A95F1F700000197B8 +:10443000A109B109E1CF8091DC030C94760BFC015A +:10444000A081B18150962C9182AD38E0839FC0014C +:104450001124289FA001299F500D112470E060E0D5 +:1044600080AD91AD0C94383D1F93CF93DF93EC0159 +:104470000E9414121BAD8AAD180FE881F981818961 +:10448000181768F0EC81FD8130E020E040E060E149 +:10449000CE01099580E0DF91CF911F910895FE0133 +:1044A000EC58FF4F8081882319F0CE010E941F2213 +:1044B000612FCE010E94011281E0EDCFCF93DF93F7 +:1044C000EC01FC01EC58FF4F8081882319F0CE01EC +:1044D0000E941F2260E0CE01DF91CF910C94011267 +:1044E000FF920F931F93CF93DF93EC01F62E088179 +:1044F0001981C8010E941239F81621F06F2DC801E8 +:104500000E941A39CE01DF91CF911F910F91FF9038 +:104510000895EF92FF920F931F93CF93DF9300D0F4 +:10452000CDB7DEB78C017B019A838983FB01608163 +:10453000CE0101960E9470220F5F1F4F1A830983DC +:10454000F7016181CE0101960E947022C7010F9090 +:104550000F90DF91CF911F910F91FF90EF900895F1 +:104560000F931F93CF93DF9300D0CDB7DEB78B01AE +:104570009A838983FB016081CE0101960E9470229B +:10458000C8010F900F90DF91CF911F910F91089567 +:104590000F931F93CF93DF9300D0CDB7DEB78B017E +:1045A0009A838983FB016081CE0101960E9470226B +:1045B000C8010F900F90DF91CF911F910F91089537 +:1045C000AF92BF92CF92DF92EF92FF920F931F9321 +:1045D000CF93DF9300D0CDB7DEB78B016B0124E022 +:1045E000C20ED11C7B015C01A61AB70AC5018E0D53 +:1045F0009F1D9A838983F70161917F01CE01019606 +:104600000E947022EC14FD0489F7C8010F900F90EE +:10461000DF91CF911F910F91FF90EF90DF90CF909E +:10462000BF90AF900895CF93DF93EB010E941239B2 +:104630008883CE01DF91CF910895CF93DF93EB0173 +:104640000E9412398883CE01DF91CF9108950F9394 +:104650001F93CF93DF938C01EB010E941239888363 +:10466000C80101960E9412398983CE01DF91CF9152 +:104670001F910F910895CF92DF92EF92FF920F93C7 +:104680001F93CF93DF93EB017B0124E0E20EF11C3B +:104690008B016C01C61AD70AC601800F911F0E94B8 +:1046A0001239F80181938F01EE15FF05A9F7CE01AC +:1046B000DF91CF911F910F91FF90EF90DF90CF90FE +:1046C00008952F923F924F925F926F927F928F92B6 +:1046D0009F92AF92BF92CF92DF92EF92FF920F9391 +:1046E0001F93CF93DF93CDB7DEB7AA970FB6F89499 +:1046F000DEBF0FBECDBF88E0E6E4F1E0DE015196FB +:1047000001900D928A95E1F764E070E084E090E01A +:104710000E94F73B9EA38DA364E070E087E090E0E9 +:104720000E94F73B98A78FA364E070E084E090E0DC +:104730000E94F73B9AA789A764E070E084E090E0CC +:104740000E94F73B9CA38BA364E070E080E190E0C3 +:104750000E94F73B9E8F8D8F37E2C32E31E0D32E20 +:10476000ADA0BEA020E1A20EB11C09A51AA5EDA026 +:10477000FEA0412C512C40E8642E4FE3742ED7014B +:104780004D925D926D927D927D01F60161917191E4 +:104790006F01072E000C880B990B0E94A73AD801D5 +:1047A0006D937D938D939D938D01EA14FB0439F7EE +:1047B000EFA1F8A5FA8FE98F9F01245E3F4F3C8F50 +:1047C0002B8F8F01D8011D921D921D921D928D017C +:1047D000FE0171961F01CDA0DEA0812C912C540109 +:1047E000D6014D905D906D907D906D01A301920179 +:1047F000C501B4010E948C394B015C01F10161914A +:1048000071911F0196012450310938A32F8F072E73 +:10481000000C880B990B0E94A73AA30192010E94F9 +:104820005C3BAF8DB8A16D937D938D939C93139753 +:10483000CE14DF04A9F6F801349780829182A28217 +:10484000B382EB8DFC8D0E171F0709F0BBCF2BA198 +:104850003CA138A32F8F690130E1C30ED11C0BA1FD +:104860001CA189A59AA540969C8F8B8FD8011D927B +:104870001D921D921D928D01FE0171961F01E9A4EA +:10488000FAA4812C912C5401D7014D905D906D902C +:104890007D907D01A3019201C501B4010E948C3974 +:1048A0004B015C01F101619171911F01970124504D +:1048B00031093AA329A3072E000C880B990B0E94FB +:1048C000A73AA30192010E945C3BA9A1BAA16D93F2 +:1048D0007D938D939C931397EB8DFC8DEE15FF05C7 +:1048E00099F6F801349780829182A282B3820C15E6 +:1048F0001D0509F0BBCF4D8D5E8D405C5F4F2D8D4A +:104900003E8D90E080E0F901E80FF91FA98DBA8D86 +:10491000A80FB91FCD90DD90ED90FC90C082D182A0 +:10492000E282F38204968031910569F7898D9A8D30 +:1049300004969A8F898F205F3F4F4217530709F7DC +:104940002D8D3E8D3A8F298F1C8E1B8EB12CA12C64 +:10495000A98DBA8DCD90DD90ED90FC90E894F7F89C +:104960001501BFEF2B1A3B0AE98DFA8DFAA3E9A3D3 +:1049700085014101F3E08F16910409F1A9A1BAA1C3 +:1049800054964D905D906D907C905797E89477F891 +:10499000A7019601C301B2010E94573B18166CF0A3 +:1049A00026013701BFEF8B1A9B0AE9A1FAA1749681 +:1049B000FAA3E9A373016201DDCF8401F3CF0A15E5 +:1049C0001B0509F44AC0AD8DBE8D2B8D3C8DA20F09 +:1049D000B31F000F111F000F111FF801EE0FFF1F73 +:1049E000EE0FFF1FAD8CBE8CAE0EBF1E90E080E0C0 +:1049F0004D915D916D917D91F501C080D180E280F6 +:104A0000F3809D0124503109F901C082D182E282F4 +:104A1000F382F50141935193619371935F01019684 +:104A20008430910529F7EF8DF8A180819181A281D1 +:104A3000B3812BA13CA1020F131FF80140815181CA +:104A400062817381EF8DF8A1408351836283738308 +:104A5000F80180839183A283B3836F8C78A0F4E004 +:104A60006F0E711C80EFA82EBB24BA942B8D3C8D49 +:104A7000A21AB30A098D1A8D23014101780134E18C +:104A8000E30EF11C6101F501EE0DFF1D8B8D9C8D78 +:104A9000E80FF91FD80150962D913D914D915C91F1 +:104AA000539760817181828193810E945C3BE98D83 +:104AB000FA8D20813181428153810E94FD399B0111 +:104AC000AC01D7016D917D918D919C910E948B39A4 +:104AD000F70161937193819391937F01FFEFCF1A57 +:104AE000DF0A24E0C216D10471F6D201CD90DD9028 +:104AF000ED90FD902D01FD013497FAA3E9A3AF8D50 +:104B0000B8A12D913D914D915C91F8016089718919 +:104B1000828993890E945C3BA98DBA8D2D913D912C +:104B20004D915C910E94FD399B01AC01C701B6011A +:104B30000E948B39E9A1FAA16083718382839383F8 +:104B4000FFEF8F1A9F0A005F1F4F20E1A21AB108E2 +:104B500034E08316910409F091CFA98DBA8D549653 +:104B6000BA8FA98FEB8DFC8D7096FC8FEB8F510166 +:104B700078A26F8EF3E02F16310409F0E9CE8BA0F6 +:104B80009CA080E1880E911C8E01035F1F4FED8C6D +:104B9000FE8C9CE3E90EF11CF401B291A29192917A +:104BA00082914F01F80180839183A283B3835101E5 +:104BB000D12CC12CD8014D905D906D907C90BFEFB1 +:104BC000AB1ABB0AE4E0CE0ED11CF4E0AF16B10480 +:104BD000E9F0F801EC0DFD1D208131814281538106 +:104BE000F701EC0DFD1D60817181828193810E942E +:104BF0005C3B9B01AC01C301B2010E948B39D8011F +:104C00006D937D938D939C931397D4CFF70120815F +:104C1000318142815381C301B2010E94FD39D80123 +:104C20006D937D938D939C931397B1E02B1A31086C +:104C300004501109E4E1EE1AF108FFEF2F163F06C8 +:104C400009F0AACF8DA19EA10E94AF3C8FA198A58B +:104C50000E94AF3C89A59AA50E94AF3C8BA19CA164 +:104C60000E94AF3C8D8D9E8D0E94AF3C89819A81C0 +:104C7000AB81BC818093660490936704A093680421 +:104C8000B09369048D819E81AF81B88580936A0459 +:104C900090936B04A0936C04B0936D0489859A85FE +:104CA000AB85BC8580936E0490936F04A0937004D1 +:104CB000B09371048D859E85AF85B8898093720409 +:104CC00090937304A0937404B0937504AA960FB6DE +:104CD000F894DEBF0FBECDBFDF91CF911F910F9132 +:104CE000FF90EF90DF90CF90BF90AF909F908F900C +:104CF0007F906F905F904F903F902F9008951F92FC +:104D00000F920FB60F9211242F933F938F939F937F +:104D1000AF93BF938091510490915204A09153049A +:104D2000B09154043091500423E0230F2D3758F5EF +:104D30000196A11DB11D20935004809351049093BE +:104D40005204A0935304B09354048091550490915D +:104D50005604A0915704B09158040196A11DB11DAD +:104D60008093550490935604A0935704B09358042D +:104D7000BF91AF919F918F913F912F910F900FBE57 +:104D80000F901F90189526E8230F0296A11DB11DC4 +:104D9000D2CF1F920F920FB60F9211242F933F93F1 +:104DA0004F935F936F937F938F939F93AF93BF9333 +:104DB000EF93FF93E0910201F09103010995FF91B8 +:104DC000EF91BF91AF919F918F917F916F915F9183 +:104DD0004F913F912F910F900FBE0F901F901895FC +:104DE0001F920F920FB60F9211242F933F934F9360 +:104DF0005F936F937F938F939F93AF93BF93EF9343 +:104E0000FF93E0910001F09101010995FF91EF916D +:104E1000BF91AF919F918F917F916F915F914F91D2 +:104E20003F912F910F900FBE0F901F9018951F92DA +:104E30000F920FB60F9211242F933F934F935F93CE +:104E40006F937F938F939F93AF93BF93EF93FF9352 +:104E50008091B900887F803609F44AC0F0F5883225 +:104E600009F4A7C018F5803109F49BC0B8F4882371 +:104E700009F4F9C0883009F494C0FF91EF91BF9113 +:104E8000AF919F918F917F916F915F914F913F91E2 +:104E90002F910F900FBE0F901F901895883109F435 +:104EA00088C0803251F78093290414C0803409F4FB +:104EB0009DC040F48033B9F38833F9F68093290418 +:104EC00085ECB0C0803509F485C0883509F496C0FA +:104ED000883499F60E94E721D0CF883909F48CC034 +:104EE00038F5883729F050F4883611F0803729F6E4 +:104EF00083E080932A041092280457C0883809F46C +:104F00007BC0803919F0803809F0B7CF8091280430 +:104F1000803208F071C0E091280481E08E0F809308 +:104F200028048091BB00F0E0E85FFB4F80833DC028 +:104F3000803B39F0E0F4803A09F479C0883A09F00E +:104F40009CCF84E080932A041092050410920404FC +:104F5000E0910204F0910304099580910404811109 +:104F60000FC081E0809304041092E20309C0803CEA +:104F700009F4A6CF883C09F4A3CF883B09F07DCF84 +:104F8000E091050481E08E0F80930504F0E0EE517E +:104F9000FC4F80818093BB009091050480910404B4 +:104FA00029C080914F048093BB0085EC8093BC00A6 +:104FB00064CF90914E0480914D04981758F5E0917C +:104FC0004E0481E08E0F80934E04F0E0E35DFB4FD2 +:104FD0008081E9CFE0914E0481E08E0F80934E04F2 +:104FE0008091BB00F0E0E35DFB4F808390914E0425 +:104FF00080914D049817C8F285E8D8CFE0914E040F +:1050000081E08E0F80934E048091BB00F0E0E35D61 +:10501000FB4F808380912C0481115CCF81E08093D1 +:105020002B0484EA8093BC0010922A0426CF85ECDE +:105030008093BC0010922A0480912804803230F4BE +:10504000E0912804F0E0E85FFB4F108260912804B3 +:1050500070E0E0910604F091070488E094E009957F +:10506000109228040ACF1092290434CF1F920F9275 +:105070000FB60F9211242F933F934F935F936F932B +:105080007F938F939F93AF93BF93EF93FF93809101 +:10509000DA049091DB048093B200809191039091A7 +:1050A0009203A0919303B09194030196A11DB11DA9 +:1050B0008093910390939203A0939303B0939403EE +:1050C0008091910390919203A0919303B0919403E6 +:1050D0004091DE045091DF046091E0047091E1049E +:1050E00084179507A607B70710F1809190038111E7 +:1050F0001EC081E080939003809191039091920370 +:10510000A0919303B0919403841B950BA60BB70B4E +:105110008093910390939203A0939303B09394038D +:10512000E091DC04F091DD04099510929003FF9169 +:10513000EF91BF91AF919F918F917F916F915F910F +:105140004F913F912F910F900FBE0F901F90189588 +:105150001895CF931092E5041092E40488EE93E042 +:10516000A0E0B0E08093E6049093E704A093E80405 +:10517000B093E9048DEB91E09093E3048093E20413 +:105180001092F1051092F0058DEC98E0909368066E +:10519000809367061092690610926A0610920A06BA +:1051A0008FEC91E09093EF058093EE051092F3055C +:1051B0001092F205109207061092FE051092FF055C +:1051C00010920006109201068FEF809308068093DC +:1051D0000C06E0E1F6E086E296E0CFEFC1938E1791 +:1051E0009F07E1F78DE99CE09093F7058093F60522 +:1051F0008CE89DE09093F9058093F80580E792E1B3 +:105200009093FB058093FA058EEB9AE09093FD0551 +:105210008093FC0530E020E040E069E082EF95E01B +:105220000E949D0C10923A061092390687ED98E084 +:1052300090932706809326068EEE94E090932B069B +:1052400080932A0682E080932C0610922D061092FD +:1052500046061092640681E0809365068093660698 +:1052600087ED91E0909329068093280682EF95E0E0 +:105270000E94DB0EE0912806F09129060280F3815E +:10528000E02D82EF95E009958AE399E090933C0642 +:1052900080933B06C0931B06C0931C06C0931D065B +:1052A000CF910895CF93DF9300D0CDB7DEB7789438 +:1052B00084B5826084BD84B5816084BD85B582601B +:1052C00085BD85B5816085BD80916E0081608093CC +:1052D0006E00109281008091810082608093810035 +:1052E0008091810081608093810080918000816045 +:1052F000809380008091B10084608093B1008091A0 +:10530000B00081608093B00080917A0084608093C7 +:105310007A0080917A00826080937A0080917A008E +:10532000816080937A0080917A00806880937A000F +:105330001092C10069E574E090E080E00E941323C0 +:1053400080915904823010F01092590480915904D0 +:1053500081117AC066E171E081E090E00E94E02274 +:1053600062E171E085E090E00E94E0226EE071E091 +:1053700089E090E00E94E02267E371E08DE090E038 +:105380000E94892266E371E081E190E00E94B022F0 +:105390006DE071E082E190E00E94B02265E071E092 +:1053A00083E190E00E94E0226CE774E087E190E006 +:1053B0000E94E02268E774E08BE190E00E94C8223E +:1053C00069E071E08CE190E00E94E02264E071E02D +:1053D00080E290E00E94B02262E874E081E290E016 +:1053E0000E94C82263E874E082E290E00E94C82232 +:1053F00067E271E083E290E00E94892269E271E055 +:1054000087E290E00E9489226BE271E08BE290E0FB +:105410000E9489226DE271E08FE290E00E94892271 +:1054200069E371E083E390E00E94892281E090E0EB +:105430009A838983BE016F5F7F4F90E080E00E9476 +:10544000892281E08093590480915904813009F0C8 +:105450006CC066E171E081E090E00E943B2362E174 +:1054600071E085E090E00E943B236EE071E089E00E +:1054700090E00E943B2367E371E08DE090E00E94A2 +:10548000272366E371E081E190E00E9413236DE041 +:1054900071E082E190E00E94132365E071E083E116 +:1054A00090E00E943B236CE774E087E190E00E946B +:1054B0003B2368E774E08BE190E00E941D2369E0E4 +:1054C00071E08CE190E00E943B2364E071E080E2B7 +:1054D00090E00E94132362E874E081E290E00E9471 +:1054E0001D2363E874E082E290E00E941D2367E2DE +:1054F00071E083E290E00E94272369E271E087E295 +:1055000090E00E9427236BE271E08BE290E00E9422 +:1055100027236DE271E08FE290E00E94272369E388 +:1055200071E083E390E00E94272362E082E00E9422 +:105530001F0A62E083E00E941F0A62E084E00E948A +:105540001F0A60E080E10E941F0A62E08EE00E9474 +:105550001F0A60E084E10E941F0A60E081E10E946E +:105560001F0A61E088E00E941F0A61E08AE00E9451 +:105570001F0A60E08AE00E94F10960E088E00E9472 +:10558000F109E091F605F091F70530E020E040E008 +:105590006AE082EF95E0099582EF95E00E945E2235 +:1055A00082EF95E00E9434228111FACF60E082EF11 +:1055B00095E00E940112E091F605F091F70530E0C8 +:1055C00020E040E06BE082EF95E0099586EF9DE0FA +:1055D0009093680680936706E091F605F091F705D1 +:1055E00030E020E040910D016EE082EF95E00995FA +:1055F00080918204882309F4D0C283EB91E00E9459 +:105600003C0980917A00866080937A0080917A00CC +:10561000886080937A00789488E898E190930301F9 +:105620008093020180916900837F88608093690084 +:10563000E99A82EF95E00E945E2202E315E18EEA8C +:1056400097E00E944A110093690610936A0689EE5A +:1056500091E00E942B1F82EF95E00E94342281117D +:10566000EECF11E01093C60488E592E09093C50454 +:105670008093C40488EC90E09093C3048093C204A8 +:105680000E941A1E1093C60480E991E09093C5040D +:105690008093C4048CE291E09093C3048093C2048D +:1056A0000E941A1E1093C60482E890E09093C504ED +:1056B0008093C40488EE93E09093C3048093C20463 +:1056C0000E941A1E1AE00E944B140E94F5130E94B9 +:1056D000A7161150C1F780917804882309F460C29D +:1056E00081E08093D9040E946123B1E92B2E312CF3 +:1056F000A8950E94240B00915D0410915E042091F6 +:105700005F0430916004601B710B820B930B603A55 +:1057100071058105910508F444C082E00E94C80922 +:10572000892B71F580915C048F5F80935C0481E02C +:105730008093C60480E590E09093C5048093C404F0 +:1057400086E990E09093C3048093C20480913B016A +:10575000813011F41092B7041092CE041092D60446 +:105760001092D5041092D0041092CF040E94240B02 +:1057700060935D0470935E0480935F049093600473 +:1057800010915C04153008F417C280913B01813000 +:1057900009F009C292E090933B0180935B04109260 +:1057A0005C048091BD04811107C082EF95E00E94E6 +:1057B0005E2281E08093BD048091CE0481110C941F +:1057C000783780913B01813009F0A7C58091B704FB +:1057D00010912F019091B80491110C9458388111B7 +:1057E00099C484E495E00E944A111E5E8091B5043C +:1057F0009091B6048336910508F485C41092690629 +:1058000010936A062091D904222309F480C42091C0 +:10581000B3043091B4042C5F3F4F2930310508F0B8 +:1058200076C48091B1049091B2040E94B72180E5C2 +:1058300094E00E944A1180912701909128010AE08A +:1058400010E0B8010E94CE3BEAE0E69F6001E79FCE +:10585000D00C1124F12CE12C2091390130913A0126 +:1058600050E040E02C193D094E095F09A6E3B0E085 +:105870000E9447394B015C0180912D0190912E01CE +:10588000B8010E94CE3BE69F9001E79F300D1124A6 +:1058900050E040E02C193D094E095F09C501B401F3 +:1058A0000E942839DA01C9010396A11DB11D809318 +:1058B000B00460912F01645E2FE042E00E9441102D +:1058C00060912F01625E22E04DE380E00E94C20FF2 +:1058D0004091390150913A0190912F012091B004EB +:1058E000935E453081E0580708F03CC42C5F20935C +:1058F000690690936A06CA010E942D1F8EEA97E0FE +:105900000E944A1180912F01882371F09FEF980F18 +:1059100090932F0192E3909369068C5080936A06CE +:1059200089EE91E00E942B1F8091AF048823A1F1A2 +:105930008091AE04873008F017C48F5F8093AE0467 +:105940009091AD049F5F9093AD048730D9F410928D +:1059500026018091D904882351F08091CA048111D5 +:1059600006C069E371E083E390E00E9489228091A0 +:10597000D90491E089278093D904809170008E7FAB +:10598000809370000E94240B6093A9047093AA0472 +:105990008093AB049093AC0410912F01E3E0FE2EB2 +:1059A000F10E0EE0010F22E043E06F2D8BE40E9428 +:1059B0008C0F21E043E06F2D86E50E948C0F24E0E0 +:1059C00043E0602F8BE40E948C0F28E043E0602FBF +:1059D00086E50E948C0FF4E0FF2EF10E00E02AE035 +:1059E000412F6CE482EF95E00E94DF0E41E1410F10 +:1059F0002AE06CE482EF95E00E94DF0E4AE06F2D12 +:105A000088E40E94DE0F4AE06F2D89E50E94DE0FD8 +:105A100080912F01825F9BE49093690680936A06D0 +:105A20008091D904882309F4C0C38091CA048111EC +:105A3000B9C38CE093E00E942B1F1091AE04173085 +:105A400019F482E00E9452098091AD0421E0280FF0 +:105A5000220F41E0410F440F60912F01681B685FE6 +:105A60000091260180E5811B0E9478108091AE0490 +:105A7000873019F481E00E9452098091D90488236B +:105A800009F4DBC3E090A704F090A8040E94240B63 +:105A90000091A3041091A4042091A5043091A604C0 +:105AA0004B015C01801A910AA20AB30A9701A4ED86 +:105AB000BEEF0E94E83B2FEF37E040E050E00E944D +:105AC00028392E533E4F4F4F5F4F442755272815F7 +:105AD00039054A055B0508F047C005E914E073EA9B +:105AE000A72E74E0B72E29E030E0D7010E94F03BEA +:105AF0002FEF37E040E050E00E94283969017A0139 +:105B0000B3E0CB0ED11CE11CF11CDD24EE24FF24FC +:105B100026013701E1E04E1A51086108710881E061 +:105B200090E0A0E0B0E0F2E0CF16D104E104F1048F +:105B30005CF00E94BA38A30192010E942839DC016E +:105B4000CB010196A11DB11DF80181938F01AE1605 +:105B5000BF0629F70E94240B6093A3047093A4044A +:105B60008093A5049093A60405E914E06AE4D62E78 +:105B7000D8018D918D0190912F0150E2F52EF90EF3 +:105B8000EF2CE81AEF1410F40C946738811110C34D +:105B9000B12CCF2CFD2CED2C11C387ED91E02FCD36 +:105BA0001092D904A0CD873009F4F9CD81E080931B +:105BB0003B0180935A04F3CD0E94240BC0905D04F6 +:105BC000D0905E04E0905F04F09060046C197D0951 +:105BD0008E099F09653071408105910508F4E1CD7A +:105BE00080913B01813091F4123009F0D8CD909131 +:105BF00094049111D4CD9091B8049111D0CD80939B +:105C0000AF041092CA041092C704C9CD823009F0C3 +:105C10004EC0113009F0C3CD80918B04811104C0B6 +:105C200084E080933B01BBCD8B3F11F0813011F4B8 +:105C300083E0F7CF8F3F11F0853011F485E0F1CF8D +:105C40008E3F11F0843011F486E0EBCF8C3F11F0E1 +:105C5000823011F488E0E5CF8D3F19F0833009F0F0 +:105C60009ECD80E090E0A0E4B1E480931601909393 +:105C70001701A0931801B09319018DEC9CECACE0D6 +:105C8000B0E48093120190931301A0931401B09398 +:105C900015018AE999E9A9E9BFE380930E01909380 +:105CA0000F01A0931001B093110187E0BACF8330A8 +:105CB00009F052C0113009F072CD80918904813011 +:105CC00081F024F481116BCD82E0ABCF823031F1D1 +:105CD000833009F064CD80918804811131C083E064 +:105CE00004C090918804911103C08093880457CD1B +:105CF000913009F054CD80918704811104C081E076 +:105D0000809387044CCD66E171E081E090E00E94D1 +:105D1000E022109287041092880441CD809188047B +:105D2000811102C082E0E1CF823009F038CD80914C +:105D30008704882321F362E171E085E090E0E7CFFA +:105D4000833009F02CCD809187048823C1F26EE066 +:105D500071E089E090E0DBCF843069F5113009F023 +:105D60001ECD80918604813049F0823009F0AACF9F +:105D700080918504811115C082E004C09091850452 +:105D8000911103C0809385040ACD913009F007CDAD +:105D900067E371E08DE090E00E9489221092850413 +:105DA000FECC823009F0FBCC66E371E081E190E04B +:105DB0000E94B022F3CF853009F04FC0113009F0B6 +:105DC000EECC809184048130D9F00CF47BCF82300A +:105DD00059F1833009F0E3CC909181049923A9F023 +:105DE000933009F0DCCC63E874E082E290E00E943A +:105DF000C82263E874E082E290E00E941D2311C093 +:105E000080918104811104C081E080938104C7CC1A +:105E1000813009F0C4CC6DE071E082E190E00E9435 +:105E2000B02210928104BBCC90918104992369F334 +:105E3000923009F0B4CC62E874E081E290E00E9414 +:105E4000C82280918204882329F083EB91E00E948C +:105E50003C09E7CF87ED91E0FACF8630D1F51130DC +:105E600009F09DCC80918004813099F00CF42ACF08 +:105E7000823019F1833009F092CC90917B04992300 +:105E800069F0933009F08BCC69E071E08CE190E02F +:105E90000FC080917B04811104C081E080937B045A +:105EA0007ECC813009F07BCC65E071E083E190E04D +:105EB0000E94E02210927B0472CC90917B04992383 +:105EC00069F3923009F06BCC6CE774E087E190E005 +:105ED000EFCF883009F09BC0113009F060CC809181 +:105EE0007A04813009F46FC00CF4ECCE823009F4EE +:105EF0007DC0833009F053CC90917704992309F445 +:105F000066C0933009F04BCC80917904882309F462 +:105F10006AC0C12CD12C7601B12CA12C10E000E07C +:105F2000A89526013701AAE0759467945794479481 +:105F3000AA95D1F74201C2018A199B090597F0F091 +:105F400082EF95E00E945E2292E390936906A0E1C1 +:105F5000A0936A06C4010E942D1FBBE4B09369069A +:105F6000E0E1E0936A068FEE91E00E942B1F82EF42 +:105F700095E00E9434228111E7CF520160E0C80110 +:105F80000E941A390F5F1F4FF4E6CF0ED11CE11C9F +:105F9000F11CC11420E9D20621E0E206F10409F067 +:105FA000BFCFA89584B7877F84BF80916000886148 +:105FB0008093600080E18093600080916000886041 +:105FC0008093600010C090917704911103C080937A +:105FD0007704E5CB913009F0E2CB64E071E080E238 +:105FE00090E00E94B02210927704D9CB8091770480 +:105FF0008111D5CB8091780491E089278093780432 +:1060000068E774E08BE190E00E94C822C8CB87303B +:1060100009F0C5CB113009F0C2CBE0917604E7302E +:1060200008F0BDCB0E2E000CFF0BE75EFF4C0C946E +:10603000E23B20303830503061306F307D302030DE +:1060400082E080933B011092760466E171E081E08A +:1060500090E00E943B2362E171E085E090E00E94C5 +:106060003B236EE071E089E090E00E943B2397CBF8 +:1060700080916104811106C081E080936104809366 +:10608000D9048DCB813009F08ACB67E271E083E2DD +:1060900090E00E948922109261041092D9047FCB73 +:1060A00080916104811105C082E08093610481E0E8 +:1060B000E6CF823009F073CB69E271E087E290E0CD +:1060C000E8CF80916104811102C083E0EECF83307C +:1060D00009F065CB6BE271E08BE290E0DACF809162 +:1060E0006104811102C084E0E0CF843009F057CB15 +:1060F0006DE271E08FE290E0CCCF0E94612386E0F8 +:10610000809376044CCB2AE02093690679CB0E94D9 +:106110002D1F8DCB82EC90E00E944A118CE0809381 +:106120006906185F10936A0681EF91E00E942B1FA9 +:1061300080912F018F5E97E19093690680936A06A4 +:1061400089EF91E00E942B1F82E00E94520922E118 +:106150004DE360912F0180E00E94C20F81E00E9418 +:10616000520965CB2A51C3CB0E94240B0091A9048C +:106170001091AA042091AB043091AC04601B710B08 +:10618000820B930B6D3271408105910508F404CCAC +:106190001092AE041092AD0481E08093260110921B +:1061A000AF04FACB8BE092E046CC8FE092E043CC98 +:1061B000BB24B394CD2C8E2DEF2CF82EBFEFFB1209 +:1061C00002C04EEFF42EFE1470F5D394E8E5DE1213 +:1061D000CFCC10912F01809194048823C9F18EEACD +:1061E00097E00E944A110FE500936906135F109330 +:1061F0006A0683E192E00E942B1F80912F01835E4B +:106200000093690680936A068BE192E00E942B1F3F +:1062100082E00E94520920E248E260912F018DE560 +:106220000E94C20F3DC16C2D8E2DBB2011F06E2D32 +:106230008C2D0E94350FE394C6CF40912F01415E13 +:1062400000E02EE06AE482EF95E00E94DF0EC1CF0D +:1062500082EC90E00E944A1104E600936906195FFF +:1062600010936A066091B9047091BA048091BB04DE +:106270009091BC0441E050E00E94E02060912F0129 +:106280006F5F2FE041E089E70E948C0F80912F0122 +:10629000895F9BE79093690680936A0687EF91E098 +:1062A0000E942B1F80912F018D5E009369068093C1 +:1062B0006A0660919004709191048091920490918B +:1062C000930441E050E00E94E02080912F018D5E18 +:1062D0009AE79093690680936A0683E292E00E94AF +:1062E0002B1F80912F01805E0093690680936A06C0 +:1062F00060918F0470E090E080E04AE00E94E71E29 +:1063000080912F01805E98E79093690680936A06DA +:106310008FEE91E00E942B1F53C2823009F004C11E +:1063200080918E04882309F4BFC080918C049091E1 +:106330008D04059690938D0480938C040AE111E0FE +:1063400046E251E0F80121913191BF01625071099B +:106350002B5F3F4FDB012D933C934E175F0799F75F +:10636000D8012D913D918D012B3F310544F09D01C8 +:106370002250310943ED5FEFD9014D935C93E01753 +:10638000F10771F7C29764F010928E0410928D0499 +:1063900010928C0480918B04863014F010928B0440 +:1063A0008EEA97E00E944A1180911A0190911B0198 +:1063B0009C012E5C3F4F293C310548F480936906CF +:1063C00085E180936A0685E292E00E942B1F80910E +:1063D0001C0190911D019C012E5C3F4F293C310511 +:1063E00048F48093690685E180936A0689E292E029 +:1063F0000E942B1F80911E0190911F019C012E5C19 +:106400003F4F293C310548F48093690685E180932C +:106410006A0680E392E00E942B1F809120019091F8 +:1064200021019C012E5C3F4F293C310548F48093AB +:10643000690685E180936A0687E392E00E942B1F3C +:1064400080912201909123019C012E5C3F4F293CB9 +:10645000310548F48093690685E180936A068EE3EE +:1064600092E00E942B1F80912401909125019C01B4 +:106470002E5C3F4F293C310548F48093690685E145 +:1064800080936A0685E492E00E942B1F82E00E94BE +:10649000520901E024E148E266E08BE20E947810B4 +:1064A00081E00E9452098CC180918A04882309F4FA +:1064B00077CF80918C0490918D04059790938D04F3 +:1064C00080938C040AE111E046E251E0F801219149 +:1064D0003191BF016250710925503109DB012D93C3 +:1064E0003C934E175F0799F7D8012D913D918D018F +:1064F0002A363F4F34F4980122503109D9012D92A8 +:106500003C92E017F10781F78F3C9F4F0CF048CF8A +:1065100010928A0410928D0410928C0480918B0446 +:106520008B3F0CF43BCF3CCF833009F013C102E02A +:10653000009369061EE010936A068CE492E00E94C4 +:106540002B1F1093690610936A06609116017091D3 +:106550001701809118019091190141E050E00E94CB +:10656000E02082E58093690610936A068EE492E04B +:106570000E942B1F8EE58093690610936A06609136 +:10658000120170911301809114019091150141E065 +:1065900050E00E94E020009369060DE100936A0636 +:1065A00087E292E00E942B1F1093690600936A060F +:1065B00060910E0170910F01809110019091110175 +:1065C00041E050E00E94E02080918904823009F48B +:1065D00047C0833009F481C0813009F0F1C0809157 +:1065E000880420E140E3813009F047C282E00E9444 +:1065F000520920E140E361E080E00E94C20F8091F7 +:106600008704882309F44CCF60911601709117011B +:1066100080911801909119010E94763A11E061155C +:1066200071058105910579F010E02AE030E040E045 +:1066300050E00E945A39CA01B9011F5F6115710506 +:106640008105910591F7612F660F610F660F6E5EF0 +:1066500000E02AE04FE082EF95E00E94DF0E20CFBD +:1066600080918804823091F50E94520920E140E334 +:1066700061E080E50E94C20F80918704882309F4BD +:106680000FCF6091120170911301809114019091CC +:1066900015010E94763A11E0611571058105910599 +:1066A00079F010E02AE030E040E050E00E945A39F2 +:1066B000CA01B9011F5F611571058105910591F747 +:1066C000612F660F610F660F6E59C2CF20E140E364 +:1066D00061E080E50E94E11073C08091880420E1B0 +:1066E00040E3833009F061C182E00E94520920E159 +:1066F00040E360E180E00E94C20F8091870488231C +:1067000009F4CECE60910E0170910F0180911001BD +:10671000909111010E94763A11E061157105810591 +:10672000910579F010E02AE030E040E050E00E946E +:106730005A39CA01B9011F5F6115710581059105BB +:1067400091F7612F660F610F660F6E5E00E02AE021 +:106750004EE181CF843009F02AC112E0109369061E +:106760003EE0F32EF0926A0680E592E00E942B1F35 +:1067700009E600936906F0926A06809137019091CC +:1067800038010E942D1F109369061DE110936A06BF +:1067900080E692E00E942B1F0093690610936A0620 +:1067A0006091360170E090E080E04AE00E94E71ED0 +:1067B00080918604813009F4DEC0823009F4E8C09B +:1067C00082EF95E00E943422811102C01092BD0434 +:1067D0000E941A1E0E94240B0091BE041091BF0457 +:1067E0002091C0043091C104601B710B820B930B8C +:1067F0000091320110913301209134013091350123 +:10680000061717072807390760F40E94A7160E9489 +:10681000240B6093BE047093BF048093C0049093D4 +:10682000C1048091D904882309F4E9C380917000E0 +:1068300080FD0EC01092D8041092D7041092D60496 +:106840001092D50485E999E00E9455090E94B11380 +:106850000E94240B0091D1041091D2042091D30402 +:106860003091D404601B710B820B930B6D3B724013 +:106870008105910508F475C01091CB048EE00E944B +:10688000C8091817190651F181E018271093CB0495 +:106890001092D8041092D7049091CA049923F1F071 +:1068A0001092CA042091C8043091C90430933A016F +:1068B000209339011092C9041092C8041092C704A1 +:1068C0008093C60486E990E09093C5048093C40445 +:1068D0008CE291E09093C3048093C2048091D7042A +:1068E0009091D80420913701309138018217930795 +:1068F00009F058C32091CA04211154C369E371E01F +:1069000083E390E00E94892281E08093CA0480930F +:10691000C60486E990E09093C5048093C4048CE299 +:1069200091E09093C3048093C2048091360190E07B +:106930002091390130913A013093C9042093C80461 +:106940008217930720F490933A01809339010E94B3 +:10695000240B6093D1047093D2048093D30490935A +:10696000D40480E090E0892B11F40C94782B0E94E1 +:1069700000000C94752B80918504813009F07BC058 +:1069800082E00E94520920E140E861E080E048CCCA +:106990008091850420E140E8823039F482E00E9451 +:1069A000520920E140E860E1F1CF60E167C0853045 +:1069B00009F066C080918404833031F582E08093D1 +:1069C00069061EE010936A0682E792E00E942B1F80 +:1069D00086E58093690610936A068091830481118D +:1069E00010C08FE792E00E942B1F809184048230B8 +:1069F000D1F18330D9F1813009F0E2CE8091810468 +:106A0000BCCF88E892E0EFCF12E0109369062EE049 +:106A1000F22EF0926A0681E992E00E942B1F0AE6AC +:106A200000936906F0926A0660910D0170E090E0B3 +:106A300080E04AE00E94E71E109369061DE1109372 +:106A40006A068EE992E00E942B1F0093690610935C +:106A50006A0680918204811103C087E393E0C3CF6B +:106A60008BEA92E0C0CF8091810494CF8091810421 +:106A7000833009F485CF20E140E861E080E02ACE50 +:106A8000863009F0A4C080918004833009F03FC0B3 +:106A900082E0809369061EE010936A068FEA92E016 +:106AA0000E942B1F84E68093690610936A06C090AB +:106AB0000901D0900A01E0900B01F0900C0123E352 +:106AC00033E343E550E4C701B6010E94573B41E080 +:106AD00050E087FF73C023E333E343E550E4C7018D +:106AE000B6010E94F83987FF04C08FEB92E00E9444 +:106AF0002B1F80918004823009F463C0833009F435 +:106B000063C0813009F05CCE80917B0436CF12E007 +:106B1000109369069EE0F92EF0926A0683EC92E0EB +:106B20000E942B1F04E600936906F0926A066091AA +:106B3000050170910601809107019091080142E0E2 +:106B400050E00E94E020109369061DE110936A0650 +:106B500083ED92E00E942B1FC0907C04D0907D04B6 +:106B6000E0907E04F0907F0420E030E0A901C701AE +:106B7000B6010E94573B87FD1AC08CE580936906D9 +:106B800010936A068FE892E00E942B1F009369061B +:106B900010936A0660917C0470917D0480917E045C +:106BA00090917F0442E050E00E94E020A2CF8EE569 +:106BB0008093690610936A0642E050E0C701B6016F +:106BC000F3CF80917B04E6CE80917B0451CF883057 +:106BD00009F057C080917A04833031F582E08093C8 +:106BE00069061EE010936A0683EE92E00E942B1F56 +:106BF00089E68093690610936A0680917904882358 +:106C000081F08AEE92E00E942B1F80917A048230FC +:106C100091F1833099F1813009F0D2CD80917704E0 +:106C2000ACCE8EEE92E0EFCF12E0109369068EE0CC +:106C3000F82EF0926A0681EF92E00E942B1F80915D +:106C4000040109E600936906F0926A06082E000C1A +:106C5000990B0E94B721109369061DE110936A06F3 +:106C600083E093E00E942B1F0093690610936A064D +:106C700080917804C4CF809177048CCE8091770482 +:106C8000F7CE873009F09CCD82EC90E00E944A114B +:106C90008091760410926906863009F07CC007E086 +:106CA00000936A0680E193E00E942B1F19E1109384 +:106CB000690600936A06609166047091670480918A +:106CC0006804909169044AE050E00E94E02010922C +:106CD00069060FE000936A0684E193E00E942B1F8F +:106CE0001093690600936A0660916A0470916B04C0 +:106CF00080916C0490916D044AE050E00E94E02085 +:106D00001092690608E100936A0688E193E00E9408 +:106D10002B1F1093690600936A0660916E047091B0 +:106D20006F0480917004909171044AE050E00E94D9 +:106D3000E0201092690600E200936A068CE193E07D +:106D40000E942B1F1093690600936A0660917204DB +:106D50007091730480917404909175044AE050E03E +:106D60000E94E02080917604833009F49FC00CF0EB +:106D70007AC0813009F484C0823009F021CD80913D +:106D80006104823009F08DC00E9452092BE045E178 +:106D900069E084E345CA87E080936A0680E293E075 +:106DA0000E942B1F1092690612E110936A0689E374 +:106DB00093E00E942B1F8EE18093690610936A0670 +:106DC00080912701909128010E942D1F86E38093D6 +:106DD000690610936A068091290190912A010E9408 +:106DE0002D1F80E58093690610936A0680912B0120 +:106DF00090912C010E942D1F8AE6809369061093C2 +:106E00006A0680912D0190912E010E942D1F00E0B5 +:106E100020E846E160E082EF95E00E94DF0E1092EC +:106E200069061FE110936A068EE393E00E942B1F10 +:106E300080E38093690610936A0660916204709102 +:106E40006304809164049091650450E040E00E94E6 +:106E5000E02086E68093690610936A0687E493E053 +:106E60000E942B1F7FCF843091F1853009F0A8CC90 +:106E700082E00E94520929E04CE167E184E6D0C932 +:106E800080916104813041F482E00E9452092BE03C +:106E900045E169E08CE1C4C92BE045E169E08CE1A2 +:106EA00019CC2BE045E169E084E314CC80916104C6 +:106EB000833041F482E00E9452092BE045E169E011 +:106EC0008EE4AEC92BE045E169E08EE403CC80910D +:106ED0006104843041F482E00E9452092BE045E1D4 +:106EE00069E088E69DC92BE045E169E088E6F2CBE0 +:106EF0009091CD0480913101292F092E000C330B84 +:106F0000281B310987FD3395121613060CF03EC07D +:106F1000981719F08F5F809331019091CC04809184 +:106F20003001292F092E000C330B281B310987FD56 +:106F300033951216130684F5981719F08F5F809316 +:106F400030018EEA97E00E944A11809130019091C1 +:106F500031019093690680936A066091B90470913B +:106F6000BA048091BB049091BC0441E050E00E94BF +:106F7000E02080913001815090913101955E909395 +:106F8000690680936A068CE493E0C4C9232B29F236 +:106F9000981719F28150BFCF232B99F2981789F2D5 +:106FA0008150CDCF8930974008F4D1CC80917000CA +:106FB0008E7F809370008091C8049091C904909353 +:106FC0003A01809339011092C9041092C8041092BA +:106FD000D9041092D8041092D7041092CA0481E008 +:106FE0008093C60486E990E09093C5048093C4041E +:106FF00088EE93E09093C3048093C204A8CC809160 +:10700000700080FD0EC01092D8041092D704109228 +:10701000D6041092D5048AE798E10E9455090E948F +:10702000B1138091D5049091D604843B910508F466 +:1070300098CC2091CF043091D004AC01421B530B6B +:107040004430510530F181E080933B018093CE04C0 +:107050000E94BA382AE530E040E050E00E9428392A +:107060006093CD040E94BA3824E130E040E050E063 +:107070000E942839655F7F4F8F4F9F4F6093CC04EC +:107080008091D5049091D6049093D0048093CF043E +:1070900068CC8A3F9F4F08F464CC84EB90E09093D7 +:1070A000D6048093D5041092D0041092CF0459CC0A +:1070B000811130C88EEA97E00E944A1185E08093E2 +:1070C0006906125F10936A068EEF91E03BC8BB24FD +:1070D000B394CD2C811172C80C94C82D8F929F92BD +:1070E000AF92BF92CF92DF92EF92FF92CF93DF9356 +:1070F000EC01688179818A819B8161157105810527 +:10710000910521F464E279ED8BE597E02DE133EF11 +:1071100041E050E00E94283949015A019B01AC012D +:10712000A7EAB1E40E9447396B017C01ACEEB4EFF1 +:10713000A50194010E945539C60ED71EE81EF91EFE +:10714000F7FE06C081E0C81AD108E10880E8F80A15 +:10715000C882D982EA82FB82C701B6019F77DF919C +:10716000CF91FF90EF90DF90CF90BF90AF909F9026 +:107170008F9008958F929F92AF92BF92CF92DF929D +:10718000EF92FF9260913C0170913D0180913E0130 +:1071900090913F01611571058105910521F464E22B +:1071A00079ED8BE597E02DE133EF41E050E00E946F +:1071B000283949015A019B01AC01A7EAB1E40E94B8 +:1071C00047396B017C01ACEEB4EFA50194010E943C +:1071D0005539C60ED71EE81EF91EF7FE06C081E01F +:1071E000C81AD108E10880E8F80AC0923C01D092A0 +:1071F0003D01E0923E01F0923F01C701B6019F7749 +:10720000FF90EF90DF90CF90BF90AF909F908F90C6 +:10721000089560933C0170933D0180933E019093EB +:107220003F010895F999FECF92BD81BDF89A992743 +:1072300080B50895262FF999FECF1FBA92BD81BD62 +:1072400020BD0FB6F894FA9AF99A0FBE01960895E8 +:10725000052E97FB1EF400940E943F3957FD07D07E +:107260000E945A3907FC03D04EF40C943F395095D4 +:107270004095309521953F4F4F4F5F4F0895909522 +:107280008095709561957F4F8F4F9F4F08950E9415 +:107290007C39A59F900DB49F900DA49F800D911DEA +:1072A00011240895B7FF0C9447390E944739821B77 +:1072B000930B0895A1E21A2EAA1BBB1BFD010DC062 +:1072C000AA1FBB1FEE1FFF1FA217B307E407F50796 +:1072D00020F0A21BB30BE40BF50B661F771F881F72 +:1072E000991F1A9469F760957095809590959B0108 +:1072F000AC01BD01CF010895A29FB001B39FC001B1 +:10730000A39F700D811D1124911DB29F700D811DD1 +:107310001124911D08955058BB27AA270E94A33914 +:107320000C941D3B0E940F3B38F00E94163B20F04E +:1073300039F49F3F19F426F40C940C3B0EF4E095BD +:10734000E7FB0C94063BE92F0E942E3B58F3BA173B +:10735000620773078407950720F079F4A6F50C946B +:10736000503B0EF4E0950B2EBA2FA02D0B01B90166 +:1073700090010C01CA01A0011124FF27591B99F0AB +:10738000593F50F4503E68F11A16F040A22F232FB7 +:10739000342F4427585FF3CF469537952795A79507 +:1073A000F0405395C9F77EF41F16BA0B620B730BAE +:1073B000840BBAF09150A1F0FF0FBB1F661F771F1F +:1073C000881FC2F70EC0BA0F621F731F841F48F4D4 +:1073D000879577956795B795F7959E3F08F0B0CF5D +:1073E0009395880F08F09927EE0F97958795089544 +:1073F0000E94E23A08F481E008950E94113A0C9448 +:107400001D3B0E94163B58F00E940F3B40F029F4B0 +:107410005F3F29F00C94063B51110C94513B0C94A6 +:107420000C3B0E942E3B68F39923B1F3552391F353 +:10743000951B550BBB27AA2762177307840738F0E3 +:107440009F5F5F4F220F331F441FAA1FA9F335D040 +:107450000E2E3AF0E0E832D091505040E695001CF4 +:10746000CAF72BD0FE2F29D0660F771F881FBB1FAE +:10747000261737074807AB07B0E809F0BB0B802D8C +:10748000BF01FF2793585F4F3AF09E3F510578F0B8 +:107490000C94063B0C94513B5F3FE4F3983ED4F3CD +:1074A000869577956795B795F7959F5FC9F7880F8C +:1074B000911D9695879597F90895E1E0660F771FDE +:1074C000881FBB1F621773078407BA0720F0621B6F +:1074D000730B840BBA0BEE1F88F7E09508950E949A +:1074E000763A6894B1110C94513B08950E94363B52 +:1074F00088F09F5798F0B92F9927B751B0F0E1F075 +:10750000660F771F881F991F1AF0BA95C9F714C024 +:10751000B13091F00E94503BB1E008950C94503B83 +:10752000672F782F8827B85F39F0B93FCCF386955D +:1075300077956795B395D9F73EF4909580957095BA +:1075400061957F4F8F4F9F4F0895E89409C097FB37 +:107550003EF490958095709561957F4F8F4F9F4F2A +:107560009923A9F0F92F96E9BB279395F69587956E +:1075700077956795B795F111F8CFFAF4BB0F11F431 +:1075800060FF1BC06F5F7F4F8F4F9F4F16C08823D8 +:1075900011F096E911C0772321F09EE8872F762F0E +:1075A00005C0662371F096E8862F70E060E02AF04F +:1075B0009A95660F771F881FDAF7880F969587953B +:1075C00097F90895990F0008550FAA0BE0E8FEEF10 +:1075D00016161706E807F907C0F012161306E40797 +:1075E000F50798F0621B730B840B950B39F40A2690 +:1075F00061F0232B242B252B21F408950A2609F46E +:10760000A140A6958FEF811D811D089597F99F6771 +:1076100080E870E060E008959FEF80EC089500241A +:107620000A941616170618060906089500240A94E7 +:1076300012161306140605060895092E0394000C6D +:1076400011F4882352F0BB0F40F4BF2B11F460FFFC +:1076500004C06F5F7F4F8F4F9F4F089557FD905825 +:10766000440F551F59F05F3F71F04795880F97FB06 +:10767000991F61F09F3F79F08795089512161306C0 +:107680001406551FF2CF4695F1DF08C016161706EF +:107690001806991FF1CF8695710561050894089524 +:1076A000E894BB2766277727CB0197F908950E94B6 +:1076B000E23A08F48FEF08950E946F3B0C941D3B53 +:1076C0000E940F3B38F00E94163B20F0952311F0EA +:1076D0000C94063B0C940C3B11240C94513B0E94DF +:1076E0002E3B70F3959FC1F3950F50E0551F629F9D +:1076F000F001729FBB27F00DB11D639FAA27F00D0B +:10770000B11DAA1F649F6627B00DA11D661F829F31 +:107710002227B00DA11D621F739FB00DA11D621F16 +:10772000839FA00D611D221F749F3327A00D611D33 +:10773000231F849F600D211D822F762F6A2F112415 +:107740009F5750409AF0F1F088234AF0EE0FFF1F48 +:10775000BB1F661F771F881F91505040A9F79E3F9F +:10776000510580F00C94063B0C94513B5F3FE4F3D1 +:10777000983ED4F3869577956795B795F795E795F5 +:107780009F5FC1F7FE2B880F911D9695879597F9FE +:1077900008950E94E23A880B990B0895AA1BBB1B1F +:1077A00051E107C0AA1FBB1FA617B70710F0A61B01 +:1077B000B70B881F991F5A95A9F780959095BC0122 +:1077C000CD010895EE0FFF1F0590F491E02D09946F +:1077D0000E947C39332312F48A1B9B0B0C94F23BDE +:1077E0000E947C39B7FF0895821B930B08950F9375 +:1077F0001F93CF93DF93869F8001879F100D969FE5 +:10780000100D1124C8010E94133CEC01009729F0CF +:10781000A80170E060E00E94383DCE01DF91CF9179 +:107820001F910F9108950F931F93CF93DF93823091 +:10783000910510F482E090E0E0916D06F0916E0603 +:1078400030E020E0B0E0A0E0309799F42115310558 +:1078500009F44AC0281B390B24303105D8F58A8138 +:107860009B816115710589F1FB0193838283FE0180 +:1078700011C0408151810281138148175907E0F0FE +:107880004817590799F4109761F012960C931297C4 +:1078900013961C933296CF01DF91CF911F910F91D8 +:1078A000089500936D0610936E06F4CF21153105EF +:1078B00051F04217530738F0A901DB019A01BD01CD +:1078C000DF01F801C1CFEF01F9CF90936E068093ED +:1078D0006D06CDCFFE01E20FF31F819391932250ED +:1078E000310939832883D7CF20916B0630916C06FC +:1078F000232B41F4209142013091430130936C06D7 +:1079000020936B06209140013091410121153105F2 +:1079100041F42DB73EB74091440150914501241BDD +:10792000350BE0916B06F0916C06E217F307A0F4BB +:107930002E1B3F0B2817390778F0AC014E5F5F4FC5 +:107940002417350748F04E0F5F1F50936C06409385 +:107950006B06819391939FCFF0E0E0E09CCFCF93B3 +:10796000DF930097E9F0FC01329713821282A09115 +:107970006D06B0916E06ED0130E020E01097A1F4A5 +:1079800020813181820F931F20916B0630916C060C +:107990002817390709F061C0F0936C06E0936B0675 +:1079A000DF91CF910895EA01CE17DF07E8F54A810C +:1079B0005B819E0141155105B1F7E901FB83EA8323 +:1079C00049915991C40FD51FEC17FD0761F48081CF +:1079D00091810296840F951FE901998388838281A2 +:1079E00093819B838A83F0E0E0E012968D919C91D5 +:1079F00013970097B9F52D913C911197CD010296FF +:107A0000820F931F20916B0630916C06281739075F +:107A100039F6309751F510926E0610926D06B093BC +:107A20006C06A0936B06BCCFD383C2834081518187 +:107A3000840F951FC817D90761F44E5F5F4F888187 +:107A40009981480F591F518340838A819B81938379 +:107A500082832115310509F0B0CFF0936E06E093D3 +:107A60006D069ECFFD01DC01C0CF13821282D7CFFD +:107A7000DC0101C06D9341505040E0F70895F89447 +:027A8000FFCF36 +:107A8200300B300B1E295C9F403333534032666605 +:107A9200264033330B410000C8410000320064002D +:107AA2009600C800FA0001310006018701E60120B4 +:107AB2001532C2010000C8B40040010101000000FB +:107AC20000006F0680000A005E018A02AC031815EE +:107AD200A015C019FF1815A115C819FF1815AE1960 +:107AE200FF1815AF19FF1815AE15D5168015A81673 +:107AF2001F15D316001540158D16141520160015E6 +:107B0200A115C815DA16021581168F15D916F115A9 +:107B1200DB1640152E15A415A619FF0001140A64E0 +:107B220064323200127A00000428961004000080A9 +:107B3200002000DD0E640E370E00000000F00BC3C3 +:107B42000BD71E990BBC0BA90B9A0B00000000333C +:107B52001FAE1ED71ED61EDB0E820E580E6E616E33 +:107B620000696E66006F76660076312E303300252E +:107B72000054313220414443004849474800E689D5 +:107B82008BE69F84E69CAAE68EA500E4BC9100E504 +:107B9200819C00E794B520E58E8B00E8BF8720E446 +:107BA200BD8E00560050494400E4BC91E79CA00001 +:107BB200E5B18FE5B99500E794B5E6BA9000E6A085 +:107BC200A1E5878600E78399E99381005000490087 +:107BD200E4BC91E79CA0E697B6E997B42853290044 +:107BE200E4BC91E79CA0E6B8A9E5BAA628E28483A2 +:107BF2002900E6978BE8BDACE696B9E5909100E9DD +:107C0200A1BA2BE980862D00E9A1BA2DE980862B45 +:107C120000E5B18FE5B995E4BAAEE5BAA600E5B1E3 +:107C22008FE5B995E696B9E590910031383000E4D8 +:107C3200BD8EE58E8BE68AA5E8ADA628562900E51D +:107C420085B300E59FBAE58786E794B5E58E8B2874 +:107C5200562900E794B5E6BA90E794B5E58E8B28ED +:107C6200562900E9878DE7BDAE00594553004E4FB6 +:107C720000E586B7E7ABAFE8A1A5E581BF28E284BE +:107C8200832900E5BC80E69CBAE58AA0E783AD00C3 +:107C920050303A0050313A0050323A0050333A00F4 +:107CA2004144432020203130202020333530202011 +:107CB20036353020203934300054656D70004E6FF7 +:107CC20077204144433A005361766500E2848300A1 +:00000001FF diff --git a/v1.03/v1.03.ino.with_bootloader.standard.hex b/v1.03/v1.03.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..ea68889 --- /dev/null +++ b/v1.03/v1.03.ino.with_bootloader.standard.hex @@ -0,0 +1,2033 @@ +:020000040000FA +:100000000C94A3080C94F0260C94C9260C94CB08ED +:100010000C94CB080C94CB080C94CB080C94CB0814 +:100020000C94CB080C9436280C94CB080C94CB0879 +:100030000C94CB080C94CB080C94CB080C94CB08F4 +:100040000C947F260C94CB080C94CB080C94CB0812 +:100050000C94CB080C94A8280C94CB080C94CB08D7 +:100060000C9417270C94CB080000000024002700F4 +:100070002A0000000000250028002B0000000000DE +:1000800023002600290004040404040404040202DA +:100090000202020203030303030301020408102007 +:1000A0004080010204081020010204081020000012 +:1000B0000008000201000003040700000000000027 +:1000C00000005D0003020303010405070800FF07A9 +:1000D000FF0700012E025B0371200540A4002107E9 +:1000E000799418A20022075BA6482C01230E7DB448 +:1000F0002925C9A05406A5942400240B7DB4CA0662 +:100100007110072D02250A7FC44EB2B45B1203267C +:100110000C7EBCD1A2362D4AB46809270559961821 +:1001200028087BA44A4AB50229097BA4C84A95122B +:10013000002A0CEFC4C92AD130444956012B0AEDDC +:10014000B40AA3410A23002C07DA9B4914002D05A9 +:10015000CEBD382E055194102F077FC44EFB0C30B6 +:10016000097DB459326FC90231097DB4CAC44E83C6 +:1001700000320A7DB459B2306B1B04330C7DB418C5 +:10018000D23019C2705000340C7DB4CBA4A4940CAE +:100190005A9800350A7DB4B8AEA1962C00360C7D75 +:1001A000B459327148322D590037097DB418C4ACA6 +:1001B000D804380C7DB459322D59322D5900390CE0 +:1001C0007DB459322D19422D59003A06E194880226 +:1001D0003B07F29B4913053C077CAC8B1A1B3D0780 +:1001E0005DB518D4413E087CAC089BDA003F0B7D1E +:1001F000B459B230AB431100400F7FC4199454522C +:10020000948A32ECC0A000410B7DB459326D183293 +:100210005B00420D7DB418924C1B944C1B140043A0 +:10022000097DB419C4AE4300440A7DB41892CCDBF6 +:10023000A000450B7DB438864312868300460A7DB4 +:10024000B4388643121601470C7DB4593231193245 +:100250002D5900480A7DB4C86CC390D9024906796B +:100260009438044A097DB4ECA8250B004B0C7DB4EE +:10027000C8A4A4A42551250B4C087DB4087B1C04FC +:100280004D0B7FC448B7A52245AA354E0C7EBC084D +:10029000372592126D14034F097DB459326FC9028C +:1002A000500B7DB418924C1B94B008510B7DB4597F +:1002B0003297448A9400520C7DB418924C1B94528D +:1002C000250B530A7DB4593275D5920554097DB476 +:1002D00018A4B0270055097DB4C87C4B16005609F8 +:1002E0007DB4C8BC25B508570B7FC4489D22A5B274 +:1002F000AD01580B7DB4C8B4A456A96901590A7D53 +:10030000B4C86C492D2C015A097DB418C4ACE32043 +:100310005B087BA418A24E035C0E7FC4C8811CC876 +:10032000811CC8811C085D087BA4983A0D015F06FA +:100330004FC43804610A6DB45993414B8600620B77 +:1003400075B408C321C9B4410163086CAC19B2E2A9 +:1003500000640A75B4AC0C9A960C01650A6DB45928 +:10036000B241498700660A74AC52A221C94A0067AB +:100370000BF5B359322D19C26401680A75B408C36C +:1003800021C96C01690771944886006A08FBA34A79 +:10039000A3D2026B0974ACC84A43D2146C06729C97 +:1003A000507A6D0B6FC4B84491144991546E086D26 +:1003B000B41892CC2D6F096DB459325BB200700B3A +:1003C000F5B318924C1B943004710AF5B319342D0F +:1003D00019C20272096DB418924C2C0273086DB4E4 +:1003E00019D48302740A75B48A0629AC26007508EC +:1003F0006DB4C8DC922176096DB4C86C492D0277C2 +:100400000C6FC48822299222A9320C78096DB4C8D5 +:10041000925AA516790BF5B3C86CC910260B007A51 +:10042000086DB418B4B6417B0A7CAC52B228CC42F9 +:10043000017C06799438047D0A7CAC10B330CA1272 +:10044000097E07D6BD912C0000000004FFFF0000CC +:100450001203040304040101050807000007000754 +:10046000000000000000D7200788E3C711002A0D14 +:1004700088E394109AB919929087012B0B88E307AF +:100480001213321293052C0988E3472D2625042DDB +:100490000888E347630F0A2E0888E3C74C0D002F36 +:1004A0000A88630F93D2591800301188E32C919178 +:1004B00090919091909190112901310A88E3951AB9 +:1004C000D3910500320D88E32C911193A19112BBB9 +:1004D00000330E88E32C911193A1939011290134DC +:1004E0000D8863A59110D1C995980800350D8863D2 +:1004F000BC10B3139390112901360F88E32C91910E +:100500001033919190112901370B8863BC9091525F +:10051000A60D00381088E32C9191901129919190AB +:10052000112901390F88E32C919190113193901189 +:1005300029013A0A88E30712131793050000000403 +:10054000FFFF000010000302050501040614160059 +:10055000FC12FA12FA00000000024D2005004414BB +:100560002A1EAD6DB7F35299929E14C7A46DD08622 +:100570001D1CB6414B1A15A7A4A7A532AF002C101D +:1005800027253483925A132DAA4559126A002E0B3F +:10059000A7443483925A9341012F2854C6FA8441C8 +:1005A00027A4391AE7609CA375B48ED6D13A5A476E +:1005B000EB681DADA375B48EC63918E7689D30E8A9 +:1005C00004303054C69AC3B38E6A39A94E4A726059 +:1005D000C801398CD53855E3548D53354ED538552F +:1005E000E3540E631D187220C9497552A6A3F2F098 +:1005F00008312048C674431626A99CA4499AA449E8 +:100600009AA4499AA4499AA4499AA4499AA4D1A01F +:1006100000323054C65AC3C79C12E5B424A725F152 +:1006200020276918478318E7609C83710EC6391824 +:10063000E7609C83718EC9C329A7E9449D980CBFCC +:1006400000333654C67AC3839A13B29C94E4B4241C +:100650001ED6248DC368D08630C77220077320074A +:1006600073240787341A742055E3541E669D98E45A +:10067000A42C27A4C3830634325346FAD830E4604E +:100680000EE4508EE4480EE5408EC569AB1AA649CB +:100690009AA5511AA5599AC483BAD3749A4E4B8617 +:1006A00083AA83698ED6E14102353053463AC307A7 +:1006B00025A7E9349D260F0725CDD178B8E5142567 +:1006C000A725C36B0E87391C0E430E84EA30A43A6B +:1006D0002DC9497542383C4800363054C67AC3C7E4 +:1006E0009C12E5A424A725F1F092E6703C1CB29C74 +:1006F00054A725F130AB71AAC6A91AA7F230EBC4F2 +:1007000024276539211D1E3400372C54C63AC32FC7 +:10071000395127EAC46478CEC13807E31C8C7330A2 +:10072000CED13A5A87D31CADC3698ED6E13487D374 +:100730009C30E81000383154C67AC3839A13B29CB7 +:1007400054275587350AE3302B6769366C718ED68E +:1007500009593AAC491AA76A9CCAC3AC13939C9432 +:10076000E5847478D000392E54C67AC3839A13B2C4 +:100770009C94E4447998D53855E3548D5379987511 +:100780006292D3A2E13587D3E1AB4E4B725A9413F8 +:10079000C4E141043A12C7453483925A9341E73485 +:1007A00028A93519140000000004FFFF00008C0088 +:1007B000030204040304050C0E00FD09FD0AFE01FA +:1007C0007B0303046C200500440B2107A1BF8B436E +:1007D000222207347D8BC814230FB6BC9BA89761D7 +:1007E000897A1996A817002410B5BDAB6CA9289971 +:1007F000A82551A254B608251197449C508992B659 +:10080000282D654953222600261097442C31CAA270 +:100810002C492B6D51264D01270631FE8A01280BEC +:10082000C3B6AB244AA2DEA22C290CC3B68B2CCAB9 +:10083000A25EA224022A0E774CBC30A94DC3106DD3 +:100840004931032B0B77CCBBB8360C595C032C0811 +:1008500042B58A2151002D0616E48B032E0622C5CF +:100860008A212F0EC6B4DB621AA6611AA6619A020B +:10087000300C96C49B2109FD980C09003109954460 +:100880008BB19F0601320B96C49B2109C5BE0E0396 +:10089000330E96C49B2109D3D29C8AC99000340F91 +:1008A00096C43B2D89BA6449960C639A00350E961E +:1008B000C48B439A0E729A8AC99000360F96C49BD5 +:1008C0002109D564D14463322400370B96C48B636D +:1008D0001AA6C5B406380F96C49B21098DC9908409 +:1008E000C6644800390F96C49B21098DC9A0A66231 +:1008F0003224003A08724E8B211E023B09923E8B35 +:10090000211E12053C08B6B4DBB0E71E3D0846D4F4 +:100910008B3B3A0C3E09B6B48BB8C75E013F0FA6BD +:10092000BC9B2109C53413D31C4C23004014A7449D +:10093000ACAD92485A22294A45A9488992651300CC +:10094000411098C43C598DC2280BA3301A96580EFA +:10095000420D96C48B41098DC3121A8705430B962D +:10096000C4AB2109D3CEF110440D97448C410A93B6 +:10097000D4C7649000450C96C48B435A1D94B43A76 +:100980000C460B96C48B435A1D94B415470F9744DD +:10099000AC210AE5DA90AA49180D02480A97448C5E +:1009A000D475B8BA06490993448A25EACB004A08A7 +:1009B000C32CAAFED3024B1096C48B504BA24A26DE +:1009C0002659544BC2004C0996C48BB45F87014D25 +:1009D0000F98C40C7108972851A244F26C0E4E1166 +:1009E00097440C71543225932229D2122D11054FB0 +:1009F0000C9744ACAD927A4DB26C02500C96C48BFD +:100A000041091D8725AD02510DA73CACAD927A4D31 +:100A1000B26C0704520F96C48B41098DC312D59254 +:100A20002C0903530F96C49B2109D578885331199B +:100A30001200540A97448C4316F71B00550B974439 +:100A40008CD4AF49964D00560F97448CD49A64517C +:100A500056099334CE00571A9B448E3014432DC947 +:100A60009228892A5912255912255992A5611A01ED +:100A7000580E97448C544DB24A5AC92AA91A590C97 +:100A800097448C34C92A69DC1B005A0B97448C4369 +:100A90009CF67918025B09C3BE8B21EA9F065C0CA9 +:100AA000A5C58B300DD3300DD3305D09C3BE8BA9E6 +:100AB0007F1A025E0835FDAB2CA9055F0616BC8BBC +:100AC00003600733F60B290B610C76C49B214E861D +:100AD000D1A62C01620DA6C48BB465D144E3A62C2B +:100AE00000630975449B41EC3A04640BA6C4DB9691 +:100AF000451BDD9425650E76C49B2109C56150C355 +:100B0000644800660BA4C49A21CB06AD3700670E7B +:100B1000A6AC9B451BDD9425AD0C0900680BA6C453 +:100B20008BB465D1448F0169089144896418026AC5 +:100B300009C2AC992CE917056B0EA5448BB04D4A40 +:100B40004A5A1255B2006C07A1448987006D10798A +:100B5000448D4452245BA6655AA6655A016E0A76F6 +:100B6000C48B64D1448F016F0C7744ACAD925A931F +:100B70002C9B00700DA6AC8B64D144E3A62C6915A8 +:100B8000710BA6AC9B451BDD94256D720A74C48A5B +:100B90006488B26E00730B75449B2553572D590022 +:100BA000740B94C49A2C1A92ACA300750976C48B6A +:100BB000D0376509760E77448C34C9A2AC12266909 +:100BC0009C01771079448D2CD32A9D92A6A4AD98D0 +:100BD0004500780B75448B4C4B6A959A167910A793 +:100BE0002C8C544DB228AB84491AA771087A0A7527 +:100BF000448B41CC3A0E027B0CD3B6AB24EA12658F +:100C0000515B007C06C1BF8B0F7D0CD3B68B2CEAE9 +:100C10001625514B047E0935DD9B2CA9250080113A +:100C2000B63C3B2D4AD27090C2414AE328530000A3 +:100C3000000004FFFF210317B9BD9E1C48A2A9169E +:100C4000E6408EE4488EE4508E64E9024EAE1CCC41 +:100C5000BCEE74784BD361C829C341C9A1241AA43E +:100C600030CB812C0EA3441E4F111DCCBCBE3A903C +:100C7000C5619C0C432456B2355BA3A41825C5243A +:100C8000AA69A530044F4E1BCCBCBE544C8634AA76 +:100C90004645A99644C310B546D5A897A668923A8A +:100CA000505C1DCCBCBE3A10A6C9304839260D4B4D +:100CB00029CC92619092388A862DEDB601507F1F23 +:100CC000CCBCBE24AA45492DAD0C83A2C44A346CC9 +:100CD00039980C8314C659CB3048D500517319CBC1 +:100CE000BCAEB49603493A9C732C1D0E6A0E25398E +:100CF00090A5251D1051B71CCCBCEE3455B3288CE3 +:100D0000C250CAA4304D8621D281AC14866A1DCD52 +:100D10000051C622CCBC8E3049B3284C9261C89297 +:100D2000284DA4341A162D0AB361CAA2308BC26CA6 +:100D300018D21852A024CCBCBE1CCC916148862C81 +:100D40004AA22C4AA22C4AA22C4AA25A12D592A8F4 +:100D5000964449980C9A54538B1BCCBCAEE110E5D9 +:100D600060398CC33819862C8CC3242C55A36A187F +:100D70000D0754111BCABDCE1C8987838EE88834A9 +:100D80004452492A4943A42372A203090057FA1A7C +:100D9000CBBCBEDA70D0CA839CC5839C65C3416A54 +:100DA0005206454D8783005C4F1DCCBCAEE19603D7 +:100DB000D9704BC252753844AD5175382459144618 +:100DC0005929CC005E551CCBBCBEDA70D0AAC3102A +:100DD000A6E1308449160D07A96938488D512201D2 +:100DE0005EA61ECCBC7E201E0E512D1C0E512D8CDD +:100DF0000631079361C8A2AC9884E1166D035F00C9 +:100E00001CCCBC9EE190663990E540960359363C77 +:100E1000663990C5611CA6C53803624B18CBBCEE81 +:100E2000211A742CC7E2E19C63E97050732C47EAE5 +:100E3000500C62A522CCBCAE68D8A2308BC264989C +:100E4000C42847A261534AC99444599414A35A121E +:100E500025B5CC0063A51FCCBCAEB4340C515619DB +:100E6000A4248C86214A5365388451560A432D099F +:100E7000932C3365B917CCBCDE1C4D87C71CCCC185 +:100E8000610ED38E711626591C0265CB22CCBCAEE6 +:100E90003007B27078CA726019A6248B2AAD4965F2 +:100EA00048A2A41825C548D1A2241A0265F61CCC74 +:100EB000BC7E281AD2A81A45C3214AA321C9A2FE82 +:100EC0006B34A4512DC9B10C672A18CBBCDE1C8B26 +:100ED00087738EA5C341CDA11D48AA5149CBD41417 +:100EE000673A21CCBCAE1CCC86308BA24189C22C87 +:100EF000CAA69A52AA3455B2288CB224AA255112F5 +:100F00000E67C41ECCBCAE1C8C86214AB3E1A993EB +:100F100012552C15254A2A4AA449D5A81A15056840 +:100F2000211BCCBCAE304E4BC34B146635254D94C3 +:100F300052A5A912AA8D491869026E2921CCBC9E1E +:100F40006C10A32C0706A9925592418CB2300793DE +:100F50006148A4A4A9D254694A86036E9025CCBCEA +:100F60009E6818A424CB8128CC9241AA649564D0B1 +:100F7000925A251914290B93282925A58A1249016B +:100F800070D922CCBCAE2C07B2414B6A49A23425A1 +:100F900069968449986C5236684D49944595414903 +:100FA000B30470ED21CCBCAE2C07B2744806318B73 +:100FB00042458AB6288C9216258A7438896A514B24 +:100FC000165500753519CBBDCE1C8B875356CA4AB2 +:100FD000C3292B65A5E112A6619A0E03772026CCC2 +:100FE000BCDE611992308992308992611992288B06 +:100FF00092288B92E1A044599444599464C9A06802 +:101000006A017AEF21CCBC9E388D4A831255874104 +:10101000CAA1241986A41647C310559A86A4B225DE +:10102000ADA1007F6E1BCCBC9EE110751A0E713C09 +:101030003CE6D0308871384861368471343C88652C +:1010400018CCBC9E38AD0D5A1CA6A99864493446EC +:101050004A2DAAF61B008B661DCCBC9E6149A36875 +:101060004886A54F61D26938E89461C869C3905633 +:101070008721028F6C1DCCBCAEB46D50062D4C93F5 +:101080002C4D92E12547A2411C93214BD2502D01BA +:101090008FC71FCCBC9E1C08E33019061DCA812CCB +:1010A000DAA2308BC238AC846998E448360C0290DE +:1010B0000620CCBC9EAC982569320C3A9023516531 +:1010C000896AC9306449540BE32C4ECAD93008915F +:1010D000CD1ACBBC7E401B76281D0E52E3308451C6 +:1010E000711872201ECEE9701094C11DCCBC9E38C0 +:1010F000AC8443524B076598D2A6E12D0D933089FD +:101100009250CA4A690095F421CBBC9E6818A21C73 +:10111000D0216990A42C92B2481A24298BA42C9235 +:10112000064907121D4900987A1BCCBC9E2C1994C5 +:10113000B64A294C2A83D22DE9FFFFFF298C9262FF +:1011400092050000A92811241FBECFEFD8E0DEBF12 +:10115000CDBF13E0A0E0B1E0E2E8FAE702C00590FD +:101160000D92A035B107D9F726E0A0E5B3E001C0A4 +:101170001D92AF36B207E1F718E0C3EAD8E004C029 +:101180002197FE010E94E23BC23AD107C9F70E94B3 +:1011900052290C943F3D0C940000662329F06A30DC +:1011A00019F0862F90E008958FEF9FEF0895CF926A +:1011B000DF92EF92FF920F931F93CF93DF93EC0197 +:1011C000842F8770E1E0F0E0082E01C0EE0F0A9452 +:1011D000EAF73E2F7E0193E7E90EF11CD7019C91BF +:1011E00010E0923018F41E2F913029F150E0487F22 +:1011F000E8ADF9ADC880D980D60150969C91949FF6 +:101200006001959FD00C11246C0D7D2D711DDF01A7 +:10121000A60FB71F011115C08C91812B83278D93C9 +:101220002150D1F7DF91CF911F910F91FF90EF9057 +:10123000DF90CF90089530E0D9CF110F330F2223E4 +:1012400089F39C91912B93279C938F5F87702150FA +:101250008111F3CF9CADA90FB11DF70190819230A0 +:1012600028F4913009F031E011E0E9CF31E0E7CF27 +:1012700080E0089580E00895CF93DF93CEEED5E02F +:101280009BAF8AAFDC01ED91FC9182EF95E009956F +:10129000EAADFBAD0280F381E02D82EF95E0DF91B6 +:1012A000CF910994809365060895CF93DF9348EE1C +:1012B00053E060E070E04093DE045093DF046093FD +:1012C000E0047093E1049093DD048093DC04A0E7D4 +:1012D000B0E08C918E7F8C93E0EBF0E080818C7F8E +:1012E0008083E1EBF0E08081877F8083C6EBD0E0F4 +:1012F00088818F7D88838C918D7F8C9380818460A1 +:10130000808380818C7F808386E090E09093DB04F3 +:101310008093DA04DF91CF9108959B01DC01189648 +:10132000ED91FC9141E067E109948091D70490919F +:10133000D80401969093D8048093D70408958330FD +:1013400081F028F4813099F08230A9F00895873037 +:10135000A9F08830C9F08430B1F4809180008F7D8D +:1013600003C0809180008F7780938000089584B5BA +:101370008F7784BD089584B58F7DFBCF8091B000B9 +:101380008F778093B00008958091B0008F7DF9CF62 +:10139000CF93DF93282F30E0F901E255FF4F84917E +:1013A000F901E656FF4FD491F901EA57FF4FC49176 +:1013B000CC23A1F081110E949F09EC2FF0E0EE0FE9 +:1013C000FF1FE458FF4FA591B491EC91ED2381E00C +:1013D00090E009F480E0DF91CF91089580E090E003 +:1013E000FACF1F93CF93DF93282F30E0F901E25516 +:1013F000FF4F8491F901E656FF4FD491F901EA5766 +:10140000FF4FC491CC23A9F0162F81110E949F0990 +:10141000EC2FF0E0EE0FFF1FEE58FF4FA591B491B7 +:101420008FB7F894EC91111108C0D095DE23DC93AE +:101430008FBFDF91CF911F910895DE2BF8CFCF930F +:10144000DF9390E0FC01E656FF4F24918A579F4FAF +:10145000FC0184918823C9F090E0880F991FFC015A +:10146000E859FF4FA591B491FC01EE58FF4FC5918B +:10147000D49161110DC09FB7F8948C91209582236F +:101480008C938881282328839FBFDF91CF91089573 +:10149000623051F49FB7F8943C91822F809583235A +:1014A0008C93E8812E2BEFCF8FB7F894EC912E2BF5 +:1014B0002C938FBFEACF8230910538F0880F991FA7 +:1014C000880F991F05970197F1F708953FB7F89492 +:1014D0008091550490915604A0915704B0915804FE +:1014E00026B5A89B05C02F3F19F00196A11DB11D7F +:1014F0003FBFBA2FA92F982F8827BC01CD01620FBB +:10150000711D811D911D42E0660F771F881F991F75 +:101510004A95D1F708958F929F92AF92BF92CF9242 +:10152000DF92EF92FF926B017C010E94660A4B01F1 +:101530005C01C114D104E104F104B9F00E94660A0F +:10154000681979098A099B09683E734081059105EC +:1015500080F321E0C21AD108E108F10888EE880E74 +:1015600083E0981EA11CB11CE4CFFF90EF90DF90A8 +:10157000CF90BF90AF909F908F9008950F931F933F +:10158000CF93DF938C01C62F642FCC32E8F4CA329C +:1015900008F041C0C83271F1C93209F442C080E09C +:1015A000C034D0F1CF73F801EC0FF11D868D8F3F61 +:1015B00091F1C031E0F00E94C80921E0892B09F4C3 +:1015C00020E0F801218F27C0CD3289F140F384EB70 +:1015D0008C0F823020F7CF73C00FD12FD11D8E8D8D +:1015E00041112EC061E00E941F0A60E08E8D0E94B2 +:1015F000F10911C0025E1F4FD0E0F80181918F0107 +:101600008F3F31F061E0D03108F062E00E941F0AA4 +:10161000DF5FD63191F781E0DF91CF911F910F917C +:10162000089570E090E080E00E948B0AF4CF85E09E +:1016300090E0433010F082E090E00E945B0AEBCF34 +:1016400062E00E941F0AE7CF2FB7F894609151041F +:101650007091520480915304909154042FBF0895C7 +:10166000089520910404260F3327331F21323105BA +:10167000ECF420912A04FC0190E080E0243069F031 +:1016800082E00895A09104042191AC014E515C4F79 +:10169000A40FB52FB11D2C930196861798F3809156 +:1016A0000404680F6093040480E0089581E00895C5 +:1016B00010922A0481E080932C0410922B0461E0A4 +:1016C00082E10E94F10961E083E10E94F109E9EB06 +:1016D000F0E080818E7F808380818D7F808388E4AD +:1016E0008093B80085E48093BC000895CF93DF9386 +:1016F00091E09093E1038823B9F0C091B800D091B4 +:10170000BA008091BC008A7B8093BC0060E082E1DB +:101710000E94F10960E083E10E94F1090E94580BE8 +:10172000D093BA00C093B800DF91CF910895089587 +:1017300008950895E091D9038091D803E81730F413 +:10174000F0E0E854FC4F808190E008958FEF9FEF28 +:1017500008959091D9038091D8032FEF3FEF981708 +:1017600048F4E92FF0E0E854FC4F208130E09F5F1F +:101770009093D903C90108958091D8039091D9031A +:10178000891B990B0895CF92DF92EF92FF920F93EE +:101790001F93CF93DF937C01CB018A012091B70384 +:1017A000222389F0EB016B01C40ED51ECC15DD059B +:1017B00069F06991D701ED91FC910190F081E02DE4 +:1017C000C7010995F3CF642F0E94310BC801DF9147 +:1017D000CF911F910F91FF90EF90DF90CF900895E0 +:1017E000CF93DF931F92CDB7DEB769832091B70304 +:1017F0002223F9F02091DA03203258F021E030E082 +:10180000FC013383228390E080E00F90DF91CF9141 +:1018100008958091DB03E82FF0E0E956FC4F9981B1 +:1018200090838F5F8093DB038093DA0381E090E005 +:10183000ECCF61E0CE0101960E94310BF7CFDC01C5 +:101840001A96ED91FC9130E020E00994DC011696A7 +:10185000ED91FC9130E020E040E069E10994DC0189 +:101860001696ED91FC9130E020E040E068E10994AB +:101870009A01DC011696ED91FC91462F67E10994DF +:10188000EF92FF920F931F93CF93DF931F92CDB7E9 +:10189000DEB77C018B01D8016C91673129F150F4DE +:1018A0006531A0F40F90DF91CF911F910F91FF90C0 +:1018B000EF9008956A3118F16E3FA1F7F801418168 +:1018C000498369E2C7010E941F0C0BC0F8014181E6 +:1018D0004983D7011696ED91FC9130E020E0C701D5 +:1018E00009950E5F1F4FD7CFF80181818983AE0123 +:1018F0004F5F5F4F61E0C7010E94380CF2CF0F5F6E +:101900001F4FD7011696ED91FC9130E020E040E0AA +:10191000C7010995C0CF462FDC011696ED91FC91C9 +:1019200030E020E066E10994462FDC011696ED9147 +:10193000FC9130E020E065E10994EF92FF920F9373 +:101940001F93CF93DF93EC01042F7901693069F481 +:101950008BE991E0998388831C8A81E0DF91CF91A4 +:101960001F910F91FF90EF9008956D3009F475C0AD +:1019700038F46A3091F16B3009F468C080E0EECF42 +:101980006E3009F47DC06F30C9F70E942F0CF7014B +:101990001381110F110F110F6C89160F612F6295B2 +:1019A0006F706061CE010E94940C612F6F70CE0148 +:1019B0000E94940CF7016481606BCE010E94940C2C +:1019C000F701408151816281660F660F660FCE017B +:1019D0000E94380C0150A1F75DC0EA85FB8530E01C +:1019E00020E040E068E20995EE81FF8130E020E0F0 +:1019F00040E064E1CE01099541E06BE4CE010E9434 +:101A00001F0CE881F981448169E2CE010E941F0C1C +:101A100040E06BE4CE010E941F0CE881F981448113 +:101A200069E2CE010E941F0C41E06BE4CE010E94EE +:101A30001F0CE881F981458169E2CE010E941F0CEB +:101A400066E671E0CE010E94400C87CF61E671E04E +:101A50004423C1F36CE571E0F5CF411109C065E5A0 +:101A600071E00E94400CE881F98182898C8B75CFEE +:101A70006EE471E00E94400CE881F9818389F6CF21 +:101A80000E942F0C61E8CE010E94940C602FCE01C1 +:101A90000E948B0CCE010E94260C5FCFDC011896B1 +:101AA000ED91FC9130E020E040E069E10994DC0137 +:101AB0001896ED91FC9130E020E040E068E1099457 +:101AC000CF93DF931F92CDB7DEB76983BE016F5FFF +:101AD0007F4F0E948D090F90DF91CF910895EF9273 +:101AE000FF921F93CF93DF93EC01162F7A010E9490 +:101AF000570D60E4CE010E94600DE885F9859701DD +:101B0000412F67E1CE010995CE01DF91CF911F9161 +:101B1000FF90EF900C944E0DEF92FF921F93CF9396 +:101B2000DF93EC01142F7901663181F138F46431CF +:101B300009F44BC0653179F080E022C06831C9F109 +:101B400050F16931C9F780919603882391F1CE0154 +:101B50000E944E0D2EC080919603882319F0CE016D +:101B60000E944E0DCE010E94570D60E0CE010E94F2 +:101B7000600D612FCE010E94600D81E0809396037D +:101B8000DF91CF911F91FF90EF900895642F0E94F5 +:101B9000600D81E0F5CF80919603882319F0CE0186 +:101BA0000E944E0DA701193138F4612FCE010E9419 +:101BB0006F0D10929603EDCF68E1CE010E946F0D7C +:101BC000185188E1E80EF11CEDCF8E898F3F11F49A +:101BD00088E78E8BE885F9859701412F64E1CE0176 +:101BE000DF91CF911F91FF90EF900994FC01662344 +:101BF000D9F16A30C9F1808D811125C06C3F48F060 +:101C000085E0808F617070E0738B628B2EEF3FEF09 +:101C100029C0683F20F084E0808F6370F4CF603F7C +:101C200020F083E0808F6770EECF603E20F082E08E +:101C3000808F6F70E8CF262F30E0603C98F081E015 +:101C4000808F6F71E0CF8150808F2289338996E039 +:101C5000220F331F9A95E1F76F73262B338B228B5C +:101C60008111D4CFC90108952FEF3FEFFBCF0F9320 +:101C7000DC01FC01EE5BFF4F9081941B492F3197F3 +:101C80009081961B692F01110EC04150621BDE9698 +:101C90008C91DE97481BD496ED91FC91D597CD01A0 +:101CA00009950F910895013091F76150421BEFCFD4 +:101CB0000F93DC01DE963C91DE97431BD496ED91A9 +:101CC000FC9109950F910895FC01ED5BFF4F108287 +:101CD0003196DC01AF5BBF4F2C912083319610828F +:101CE00011962C9112973C91231718F0422F431B09 +:101CF0004083FC01EA5BFF4FDC01DF968C91281BDF +:101D000020830895FC01ED5BFF4F10823196DC01CA +:101D1000AF5BBF4F2C9120833196DC01DF962C9175 +:101D200020833196805C9F4FDC018C9180830895E5 +:101D3000CF93DF93FC01A081B18182AD982F990FE1 +:101D4000990F990F95AF50969C915097903208F04B +:101D50009FE1990F990F990F94AF23AD922F990F8F +:101D6000990F990F96AF51963C915197682F620F3A +:101D70007727771F3617170614F4832F821B97AF28 +:101D8000EF01C05CDF4F880F880F880F890F8883B1 +:101D9000219680EF888354968D919C915597813F31 +:101DA000910508F48883EE5BFF4F56968C918083F3 +:101DB000DF91CF9108950C94980E0C94980E0F9388 +:101DC000DC01222371F1FC0101112DC0EB5BFF4FFF +:101DD0008081481730F131968081481710F532978D +:101DE000908131978081260F2617C8F46917B0F4C7 +:101DF0002FEF290F8217A8F4681708F4682F291706 +:101E000008F4922F961BD696ED91FC91D7970480FB +:101E1000F581E02D292FCD01099503C0682F6917A1 +:101E200048F30F910895ED5BFF4F80816817C8F369 +:101E3000319680816817A8F732969081319780811A +:101E4000240F241778F4491760F42FEF290F821715 +:101E500040F7481708F4482F291708F4922F941BCD +:101E6000D2CF482F4917E8F6F2CF0F93462F00E064 +:101E700021E0682F82EF95E00E94DF0E0F91089518 +:101E8000FF920F931F93CF93DF93F82ED62F142F2B +:101E9000C22F00FF0CC0622F6D1B842F8F0D0E947C +:101EA000350F6C2F6F198D2F810F0E94350F01FF99 +:101EB0000CC06C2F6D1B812F8F190E94350F6C2F5A +:101EC0006F19812F8D1B0E94350F03FF0CC06C2FE3 +:101ED0006D0F812F8F0D0E94350F6C2F6F0D8D2F81 +:101EE000810F0E94350F02FF11C06C2F6D0F812FE3 +:101EF0008F190E94350F6C2F6F0D812F8D1BDF9175 +:101F0000CF911F910F91FF900C94350FDF91CF91DE +:101F10001F910F91FF900895CF92DF92EF92FF9261 +:101F20000F931F93CF93DF93E82ED62EC42FC22E8C +:101F3000D1E0D41BF42EF194FF0C022F262F482F52 +:101F40006C2F80E00E94400F10E0D7FD04C0C1500C +:101F5000F394F394DF0D1F5F812F880F8F5FD80FED +:101F60000C2D2D2D4E2D6C2F812F0E94400F1C17F4 +:101F700060F3DF91CF911F910F91FF90EF90DF9071 +:101F8000CF900895FF920F931F93CF93DF93182F55 +:101F9000C62FF42ED62FD20FCD1306C0DF91CF91CE +:101FA0001F910F91FF90089500E02F2D4C2F612F6E +:101FB00082EF95E00E94DF0ECF5FEECF0F93242FCC +:101FC00001E0462F682F82EF95E00E94DF0E0F910F +:101FD0000895FF920F931F93CF93DF93C82FD62FAF +:101FE000142FF22E00FF10C041E0460F622F6D1B30 +:101FF000812F8C0F0E94DE0F41E04C0F6F2D6C1B68 +:102000008D2F810F0E94DE0F01FF10C041E04D0FA8 +:102010006F2D6D1B812F8C1B0E94DE0F41E04C0F3A +:102020006F2D6C1B812F8D1B0E94DE0F03FF0EC0D6 +:1020300041E04D0F6F2D812F8C0F0E94DE0F41E08C +:102040004C0F6F2D8D2F810F0E94DE0F02FF13C0EA +:1020500041E04D0F6F2D812F8C1B0E94DE0F41E060 +:102060004C0F6F2D812F8D1BDF91CF911F910F9101 +:10207000FF900C94DE0FDF91CF911F910F91FF9095 +:102080000895CF92DF92EF92FF920F931F93CF9319 +:10209000DF93E82ED62EC42FC22ED1E0D41BF42E0F +:1020A000F194FF0C022F262F482F6C2F80E00E9406 +:1020B000E90F10E01C1748F0DF91CF911F910F91AD +:1020C000FF90EF90DF90CF900895D7FD04C0C150EE +:1020D000F394F394DF0D1F5F812F880F8F5FD80F6C +:1020E0000C2D2D2D4E2D6C2F812F0E94E90FE2CF4C +:1020F000AF92BF92CF92DF92EF92FF920F931F9316 +:10210000CF93DF93E82EB62ED42EC22FF82EF00EEA +:10211000C02EC60E1FEF140F180F101BDFEFD20FCB +:10212000D60FD01B22E0402F6C2D8F2D0E94411026 +:1021300021E0402F6C2D812F0E94411024E0402F80 +:102140006D2F8F2D0E94411028E0402F6D2F812F81 +:102150000E9441101D2D101B101B133088F0F394AA +:102160001250AA24A394A00E2A2D412F6B2D8F2D3F +:102170000E94C20F2A2D412F6D2F8F2D0E94C20F5A +:102180002C2F201B201B233088F0225061E06C0D87 +:102190004D2D8E2DDF91CF911F910F91FF90EF90DC +:1021A000DF90CF90BF90AF900C94C20FDF91CF9192 +:1021B0001F910F91FF90EF90DF90CF90BF90AF9065 +:1021C0000895FF920F931F93CF93DF93D82F162F6D +:1021D000F42EC22F00E0242F462F682F82EF95E0C7 +:1021E0000E94DF0E01E02C2F412F6D2F82EF95E032 +:1021F0000E94DF0E6FEF6F0D6D0F2C2F412F82EFBE +:1022000095E00E94DF0E4FEF4C0F410F00E02F2DA5 +:102210006D2F82EF95E00E94DF0EDF91CF911F912D +:102220000F91FF900895DC0118964C911897ED914D +:10223000FC911197249130E0042E02C0359527952A +:102240000A94E2F7842F860F883068F03196119651 +:10225000FC93EE93E49198E0941B01C0EE0F9A95E5 +:10226000EAF72E2B885018968C938FEF9FEF01C0C2 +:10227000880F6A95EAF7809582230895FC01E60F9E +:10228000F11D849190E0982F88273196E4918E0F6C +:10229000911D0895CF93DF932091390630913A062E +:1022A0002817390709F490C0EC0190933A068093FF +:1022B0003906FC018491809349063196E491E093BC +:1022C0004A06FE013296E491E0934B06FE013396F6 +:1022D000E491E0934C06FE013496E491E0934D06C0 +:1022E000FE013596E491E0934E06FE013696E491A8 +:1022F000E0934F06FE013796E491E0935006FE010D +:102300003896E491E0935106FE013996E491E0930A +:102310005206FE013A96E491E0935306FE013B9685 +:10232000E491E0935406FE013C96E491E093550657 +:10233000FE013D96E491E0935606FE013E96E4913F +:10234000E0935706FE013F96E491E0935806FE01A4 +:102350007096E491E093590661E1CE010E943E112E +:1023600090935B0680935A0663E1CE010E943E1172 +:1023700090935D0680935C0665E1CE010E943E115C +:1023800090935F0680935E068091390690913A069D +:10239000892BD1F0809156068093610640915706B3 +:1023A0004093620690916006992371F0913079F420 +:1023B00090915806891714F49093610680915906FC +:1023C000841714F480936206DF91CF9108953091C1 +:1023D000530620915506082E000C990B622F022EF1 +:1023E000000C770B630F711D37FD7A9586179707E1 +:1023F0001CF4320F30936106241734F720936206E1 +:10240000E3CFCF93DF93EC016BAFEEA9FFA901906F +:10241000F081E02D0995EEA9FFA90280F381E02D5E +:10242000CE01DF91CF910994AF92BF92CF92DF920C +:10243000EF92FF920F931F93CF93DF9300D000D0C2 +:102440001F92CDB7DEB78C01DC01DA96AC90DA973B +:10245000DB96EC90DB97ED91FC91B188FE2CD12CB2 +:10246000C12CD801ED91FC9111978089D8962D91BE +:102470003C911C82FD828B83B8E08B9FC0011124AC +:102480008C9DA0018D9D500D9C9D500D1124240FFD +:10249000351F3A832983D8011496ED91FC919E0152 +:1024A0002F5F3F4F41E06FE0C8010995F3948F2DF6 +:1024B0008E198A1528F4BFEFCB1ADB0AFB1488F2B9 +:1024C0000F900F900F900F900F90DF91CF911F9171 +:1024D0000F91FF90EF90DF90CF90BF90AF90089555 +:1024E000CF92DF92EF92FF920F931F93CF93DF93E0 +:1024F000EC01962F683109F44BC0B901993130F4E1 +:102500009431C9F0973189F080E006C0993109F41F +:1025100061C09032C9F781E0DF91CF911F910F9197 +:10252000FF90EF90DF90CF90089550E082EE94E01E +:102530000E94C30BF0CF8C859D85AE85BF85892B0E +:102540008A2B8B2B71F4E881F981A585B0E020EA14 +:1025500036E841E050E00E9447396C877D878E87DE +:102560009F871092D9031092D8031092DB03109228 +:10257000DA030E94580B87E99BE090930304809351 +:10258000020488E99BE09093070480930604C3CF7C +:102590002C853D854E855F8560E074E284EF90E098 +:1025A0000E945A39205131094109510956954795E0 +:1025B000379527952093B8008E8990E0959587955B +:1025C00091E09093B703809395031092DB031092F0 +:1025D000DA03A1CFD091DA03D13208F093C0C091D1 +:1025E00095030E94660A6B017C0180912A04811187 +:1025F00064C082E080932A0481E080932C048FEFF2 +:102600008093290410924E04D0934D04A7E9B3E0BF +:10261000EDE2F4E080E0D8137CC010924F0480918A +:102620004F04CC0FC82BC0934F0480912B048130F2 +:1026300009F073C010922B040E94660A6B017C01A2 +:1026400080914F048093BB008091DD039091DE0365 +:10265000A091DF03B091E003892B8A2B8B2B99F09B +:102660000E94660A0091DD031091DE032091DF03D2 +:102670003091E0036C197D098E099F090617170731 +:1026800028073907D8F18091BC0083FDD9CF85ECAC +:102690008093BC000E94660A6B017C0180912A0431 +:1026A0008230E9F1809129048F3F61F18091290402 +:1026B000803241F18091290425C08091DD03909101 +:1026C000DE03A091DF03B091E003892B8A2B8B2BD3 +:1026D00009F48BCF0E94660A0091DD031091DE039E +:1026E0002091DF033091E0036C197D098E099F0969 +:1026F000061717072807390708F077CF8091DC0302 +:102700000E94760B1092DB031092DA031092B7034B +:1027100002CF9D9191938F5F7ECF85EEB9CF80914F +:10272000DD039091DE03A091DF03B091E003892BDC +:102730008A2B8B2B09F4B2CF0E94660A0091DD032D +:102740001091DE032091DF033091E0036C197D09C5 +:102750008E099F09061717072807390708F09ECF2B +:10276000CDCF109291031092920310929303109286 +:102770009403109290038091DA049091DB0480938B +:10278000B200E0E7F0E080818160808308958E50A0 +:10279000806480937C0080917A00806980937A00C5 +:1027A00083B7817F826083BF20E190E080E033B710 +:1027B000316033BF889533B73E7F33BF30917A00A5 +:1027C00036FDFCCF4091780050917900840F951F21 +:1027D000215069F720917A002F7720937A0024E026 +:1027E000969587952A95E1F7089581E10E94C71390 +:1027F000BC0190E080E00E94A53A20910501309153 +:10280000060140910701509108010E945C3B20E0C5 +:1028100030EC4FE754E40E94FD3920E030E040E026 +:102820005FE30E948B3920E030E048EC52E40E94E4 +:102830005C3B20918C0330918D0340918E0350912D +:102840008F030E948C3960938C0370938D03809367 +:102850008E0390938F0320918B032F5F20938B0324 +:102860002A30C0F020E030E040E251E40E94FD391F +:102870006093B9047093BA048093BB049093BC0432 +:1028800010928B0310928C0310928D0310928E0382 +:1028900010928F030895CF92DF92EF92FF9284E11E +:1028A0000E94C713BC0190E080E00E94A53A2CED85 +:1028B00036E443E05EE30E94FD392091050130914A +:1028C000060140910701509108010E945C3B20E005 +:1028D00030EC4FE754E40E94FD392091870330919A +:1028E00088034091890350918A030E948C39609338 +:1028F0008703709388038093890390938A032091C0 +:1029000086032F5F209386032A3008F43FC020E01F +:1029100030E040E251E40E94FD3920917C04309186 +:102920007D0440917E0450917F040E948C39609315 +:102930009004709391048093920490939304109266 +:1029400086031092870310928803109289031092D5 +:102950008A03C0900901D0900A01E0900B01F09029 +:102960000C01A70196010E94F83987FF14C023E3E8 +:1029700033E343E550E4C701B6010E94573B87FDAE +:102980000AC081E0809394041092D904FF90EF90E4 +:10299000DF90CF90089510929404F8CF4F925F92F9 +:1029A0006F927F928F929F92AF92BF92CF92DF925F +:1029B000EF92FF920F931F93CF93DF9300D000D03D +:1029C00000D0CDB7DEB76B017C0180913B01873031 +:1029D00009F064C180916104813009F043C1A7010D +:1029E0009B0160E070E080E291E40E948B390E94DC +:1029F0006F3A70937D0360937C0380917C03909188 +:102A00007D039E838D838B3F9F4F0CF069C186E9C8 +:102A100090E0A0E0B0E08093320190933301A09366 +:102A20003401B093350100918003109181038D81B1 +:102A30009E810E962D813E818D9708F080C1B9014F +:102A4000330F880B990B0E94A73A6B017C019F778B +:102A500020E030E0A9010E94573B18160CF059C144 +:102A60006D817E81601B710B072E000C880B990B0A +:102A70000E94A73A4B015C016D817E81600F711F3E +:102A8000072E000C880B990B0E94A73A20E030E03B +:102A900040E05FE30E945C3B69837A838B839C8385 +:102AA000C801880F991F6D817E81681B790B809109 +:102AB0007E0390917F03680F791F072E000C880B0F +:102AC000990B0E94A73A2B013C0120E030E0A901BC +:102AD000C701B6010E94573B181624F0F7FAF0948C +:102AE000F7F8F09420E030E04AEF54E4C701B60173 +:102AF0000E94573BC12CD12C760187FF06C0C12C08 +:102B0000D12C80E8E82E8FE3F82E2DEC3CEC4CE441 +:102B10005FE360910E0170910F018091100190911F +:102B200011010E945C3BA30192010E945C3B2B01BE +:102B30003C012DEC3CEC4CE45EE360917803709139 +:102B4000790380917A0390917B030E945C3B9B0107 +:102B5000AC01C301B2010E948C392B013C014092AF +:102B600078035092790360927A0370927B032091EC +:102B70001201309113014091140150911501C701C8 +:102B8000B6010E945C3B29813A814B815C810E94A5 +:102B90005C3B6B017C012091160130911701409143 +:102BA000180150911901C501B4010E945C3B9B01C1 +:102BB000AC01C701B6010E948C39A30192010E94A9 +:102BC0008C396B017C016091A7047091A804072ED9 +:102BD000000C880B990B0E94A73AA70196010E944E +:102BE0008C390E946F3A7093A8046093A704072E53 +:102BF000000C880B990B0E94A73A6B017C0120E026 +:102C000030EE4FEF54E40E94573B87FD8DC08D811D +:102C10009E81181619060CF480C01092A804109218 +:102C2000A70410937F0300937E032D813E81309390 +:102C300081032093800326960FB6F894DEBF0FBE63 +:102C4000CDBFDF91CF911F910F91FF90EF90DF905B +:102C5000CF90BF90AF909F908F907F906F905F903C +:102C60004F900895823039F4A7019B0160E070E035 +:102C70008FEA93E4BACE833039F4A7019B0160E078 +:102C800070E882E294E4B1CE843009F0B6CEA701B8 +:102C90009B0160E070E08BE694E4A7CE20913901BF +:102CA00030913A013A832983B90190E080E00E9493 +:102CB000A53AA70196010E948B390E946F3A709342 +:102CC0007D0360937C038091B1049091B2042981CB +:102CD0003A81281B390B3093B4042093B3048DCE72 +:102CE0008D819E810596409728F480E991E0A0E0CF +:102CF000B0E091CE8D819E810B97449728F484EFAC +:102D000091E0A0E0B0E087CE80E293E0A0E0B0E008 +:102D100082CEC12CD12C760156CF8FEF97E09093C5 +:102D2000A8048093A7047DCF20E030E0A901C7016B +:102D3000B6010E94F83918160CF473CF6ECF2F31FC +:102D400031055CF7213F3F4F09F067CF6ACF8F9283 +:102D50009F92AF92BF92CF92DF92EF92FF9260E08C +:102D60008AE00E94F1090E944B140E94F5138091A1 +:102D70008104813061F4E091F605F091F70530E0CF +:102D800020E040910D016EE082EF95E0099561E051 +:102D900070E080E090E00E948B0A80E10E94C713FF +:102DA000C0906204D0906304E0906404F0906504E5 +:102DB000BC0190E080E00E94A53AA70196010E9424 +:102DC0008B3923E333E343E35FE30E945C3BA701DA +:102DD00096010E948C396B017C01C0926204D092F2 +:102DE0006304E0926404F0926504209172043091CF +:102DF000730440917404509175040E945C3BA701D8 +:102E000096010E945C3BA70196010E945C3B4B012E +:102E10005C0120916E0430916F04409170045091D8 +:102E20007104C701B6010E945C3BA70196010E9494 +:102E30005C3B9B01AC01C501B4010E948C394B0184 +:102E40005C0120916A0430916B0440916C045091B4 +:102E50006D04C701B6010E945C3B9B01AC01C5013A +:102E6000B4010E948C39209166043091670440912E +:102E70006804509169040E948C390E94763A90E06F +:102E800080E00E94A53A4B015C0160910401062E8E +:102E9000000C770B880B990B0E94A73A9B01AC01A1 +:102EA0006091B9047091BA048091BB049091BC0404 +:102EB0000E948B399B01AC01C501B4010E948C3981 +:102EC0000E94763AAB017093B6046093B50480918A +:102ED000840390918503840F951F909385038093BD +:102EE0008403209183032F5F20938303283079F498 +:102EF00023E0959587952A95E1F79093B204809306 +:102F0000B104109285031092840310928303809180 +:102F1000D904882309F497C080919404811193C047 +:102F20008091B80481118FC08091390190913A014C +:102F300003962091B1043091B204821B930B079742 +:102F4000A8F48091C704811111C081E08093C60468 +:102F500028E730E03093C5042093C4042CE231E02C +:102F60003093C3042093C2048093C70480913B0133 +:102F7000873009F062C0C701B6010E94CE14E0900C +:102F8000A704F090A804B70190E080E00E94A53A61 +:102F90004B015C0120E030EE4FEF54E40E94573BC0 +:102FA00061E087FF0BC020E030E0A901C501B4015A +:102FB0000E94F83918160CF45FC060E08AE00E94A5 +:102FC000F1096091A7047091A804072E000C880BEA +:102FD000990B0E94A73A20E030EE4FEF54E40E9494 +:102FE000FD3920E030E048EC52E40E945C3B0E9456 +:102FF000763A60938F04C0906204D0906304E090AE +:103000006404F09065048091D90420E030E04FE73B +:1030100054E4811142C0C701B6010E94573B87FDAD +:1030200066C081E08093B804FF90EF90DF90CF906E +:10303000BF90AF909F908F900895BA0190E080E08C +:103040000E94A53A9ACF1092A8041092A704109259 +:1030500081031092800310927F0310927E0382EC12 +:1030600091E0A0E0B0E08093320190933301A0930F +:103070003401B093350183CF81E28093800084E1F5 +:10308000809381008FEF97E0909389008093880070 +:10309000F0928B00E0928A0094CFC701B6010E94A3 +:1030A000573B87FD15C0809182038F5F8093820319 +:1030B000883008F4B9CF809170008E7F80937000C3 +:1030C0001092820381E08093B7041092D904ACCFB0 +:1030D00020E030E04FE754E4C701B6010E94F83920 +:1030E00087FF05C01092B704109282039DCF109203 +:1030F000B8049ACF80913B01873049F08091D50484 +:103100009091D60401969093D6048093D5040895A7 +:10311000CF92DF92EF92FF92CF93DF930E94240B26 +:10312000C0905D04D0905E04E0905F04F090600475 +:103130006C197D098E099F0964317105810591051E +:1031400008F46AC0D1E0D093C60484E690E090937E +:10315000C5048093C40486E490E09093C3048093F4 +:10316000C204C0913B01C13009F075C084E00E94E7 +:10317000C809209183042817190609F054C08091CA +:10318000390190913A010A9690933A01809339015E +:1031900080912D0190912E01CAE0D0E0BE010E94E5 +:1031A000CE3BEAE0E69F9001E79F300D112480912D +:1031B000270190912801BE010E94CE3BE69FA0010D +:1031C000E79F500D11248091390190913A01281701 +:1031D0003907C8F550933A01409339011092C7045A +:1031E0001092D8041092D7041092CA041092B70417 +:1031F0001092CE041092D6041092D5041092D004EE +:103200001092CF040E94240B60935D0470935E04BF +:1032100080935F0490936004DF91CF91FF90EF90D3 +:10322000DF90CF90089584E00E94C8092091830424 +:10323000C227C817190609F0ABCF809139019091C8 +:103240003A010A97A1CF8417950740F630933A01C7 +:1032500020933901C3CFC23081F584E00E94C809B0 +:10326000209183042817190681F480918E0481111E +:10327000C9CF80918A048111C5CFD0938E048091EB +:103280008B048F5F80938B04BDCF84E00E94C809BC +:10329000209183042D272817190609F0B3CF8091B8 +:1032A0008E048111AFCF80918A048111ABCFD0936E +:1032B0008A0480918B048150E5CFC33009F066C148 +:1032C00080918804811120C0C091890484E00E940B +:1032D000C809209183042817190659F4CF5FC093B9 +:1032E00089048091890484300CF44AC110928904C5 +:1032F00089CF84E00E94C80920918304D227D8177F +:10330000190679F7C150EBCF813009F065C084E030 +:103310000E94C809209183042817190649F4809156 +:10332000870420E030E040E85FE3882309F449C0E7 +:1033300084E00E94C8092091830431E023272817E4 +:10334000190621F4809187048823E1F084E00E942B +:10335000C809209183042817190659F184E00E94B6 +:10336000C8092091830431E023272817190609F0A2 +:10337000B8CF809187042DEC3CEC4CEC5DE38111DF +:1033800005C0AFCF20E030E040E85FE36091160178 +:103390007091170180911801909119010E948B3949 +:1033A000609316017093170180931801909319018F +:1033B00098CF80918704882389F22DEC3CEC4CEC6B +:1033C0005DE3609116017091170180911801909151 +:1033D00019010E948C39E4CF823009F066C084E084 +:1033E0000E94C809209183042817190621F48091AE +:1033F0008704882331F184E00E94C8092091830466 +:1034000031E023272817190659F184E00E94C809E2 +:103410002091830428171906F1F184E00E94C8095D +:103420002091830431E023272817190609F059CF8A +:10343000809187042DEC3CEC4CEC5DE3811118C0CD +:1034400050CF20E030E040E85FE3609112017091DE +:10345000130180911401909115010E948C3912C0C2 +:10346000809187048111D1CF20E030E040E85FE314 +:1034700060911201709113018091140190911501D6 +:103480000E948B3960931201709313018093140191 +:103490009093150126CF80918704882309F4BDCF2E +:1034A0002DEC3CEC4CEC5DE3D0CF833009F019CF30 +:1034B00084E00E94C809209183042817190621F48A +:1034C00080918704882341F184E00E94C8092091FB +:1034D000830431E0232728171906A9F184E00E940C +:1034E000C809209183042817190609F43FC084E015 +:1034F0000E94C8092091830431E023272817190668 +:1035000009F0EFCE80918704882309F4EACE2DECF0 +:103510003CEC4CEC5DE31FC020E030E040E85FE3B2 +:1035200060910E0170910F01809110019091110135 +:103530000E948C3960930E0170930F0180931001EB +:1035400090931101CECE809187048111C7CF20E0E6 +:1035500030E040E85FE360910E0170910F018091CF +:103560001001909111010E948B39E4CF8091870462 +:10357000882309F4BCCF2DEC3CEC4CEC5DE3D0CFC0 +:1035800087FF40CE83E0809389043CCEC43009F0AD +:1035900080C0C0918504C11120C0C091860484E020 +:1035A0000E94C809209183042817190659F4CF5F97 +:1035B000C09386048091860483300CF44FC010922F +:1035C000860420CE84E00E94C80920918304D2277B +:1035D000D817190679F7C150EBCFC13009F584E04F +:1035E0000E94C809209183042817190651F480917C +:1035F00037019091380101969093380180933701FB +:10360000D9CF84E00E94C80920918304C227C8173B +:10361000190681F680913701909138010197ECCF1E +:10362000C23041F684E00E94C80920918304281723 +:10363000190631F4809136018F5F80933601BACF3D +:1036400084E00E94C80920918304D227D817190664 +:1036500009F0B0CF809136018150EFCF87FF04C0D1 +:1036600082E080938604CECD80913701909138011D +:10367000883E23E0920738F08AE090E0909338018A +:1036800080933701BFCD0A9708F0BCCD87EE93E059 +:10369000F5CFC53009F08FC0C0918104C11125C09C +:1036A00084E00E94C809C0918404209183042817F3 +:1036B000190651F4CF5FC093840480918404843050 +:1036C00074F0109284049ECD84E00E94C809209179 +:1036D0008304D227D817190681F7C150ECCF87FF92 +:1036E00091CD83E0809384048DCDC13041F584E099 +:1036F0000E94C809209183042817190679F4809143 +:103700000D018B5F80930D0180910D019EEF980F4D +:10371000933088F485E080930D0174CD84E00E949D +:10372000C80920918304C227C817190669F7809138 +:103730000D018550E7CF811165CD8FEFECCFC23001 +:10374000F1F484E00E94C809209183042817190627 +:1037500039F48091820491E089278093820452CDCC +:1037600084E00E94C8092091830431E023272817B0 +:10377000190609F047CD809182048327EECFC3302C +:1037800009F040CD84E00E94C809209183042817E5 +:10379000190629F481E028272093830433CD84E09F +:1037A0000E94C8092091830431E0232728171906B5 +:1037B00009F028CDF1CFC63009F007C180917B0414 +:1037C000811125C084E00E94C809C0918004209125 +:1037D00083042817190651F4CF5FC09380048091A9 +:1037E0008004843074F0109280040CCD84E00E9438 +:1037F000C80920918304D227D817190681F7C15030 +:10380000ECCF87FFFFCC83E080938004FBCC81303A +:10381000C9F584E00E94C80920918304281719067D +:10382000B9F42AE037ED43E25CE360910501709161 +:10383000060180910701909108010E948C396093E4 +:103840000501709306018093070190930801DACC7B +:1038500084E00E94C8092091830431E023272817BF +:10386000190609F0CFCC2AE037ED43E25CE3609122 +:1038700005017091060180910701909108010E9455 +:103880008B39DDCF8230C9F584E00E94C8092091D0 +:10389000830428171906B9F42DEC3CEC4CEC5DE3DD +:1038A00060917C0470917D0480917E0490917F04EE +:1038B0000E948C3960937C0470937D0480937E0415 +:1038C00090937F049FCC84E00E94C80920918304D8 +:1038D00031E023272817190609F094CC2DEC3CEC95 +:1038E0004CEC5DE360917C0470917D0480917E04DA +:1038F00090917F040E948B39DDCF833009F082CC18 +:1039000084E00E94C8092091830428171906A9F5AC +:103910002DEC3CEC4CEC5DE36091090170910A01E7 +:1039200080910B0190910C010E948C3960930901E8 +:1039300070930A0180930B0190930C01C0900901D0 +:10394000D0900A01E0900B01F0900C0120E030E0F3 +:1039500040EF51E4C701B6010E94573B181634F5F9 +:103960008DEC9CECACE4B0E48093090190930A01E7 +:10397000A0930B01B0930C0145CC84E00E94C809D0 +:103980002091830431E0232728171906B9F62DEC7E +:103990003CEC4CEC5DE36091090170910A0180916F +:1039A0000B0190910C010E948B39C0CF2DEC3CECA7 +:1039B0004CE450E4C701B6010E94F83987FF22CCDD +:1039C00080E090E0A0EFB1E4CFCFC83009F071C043 +:1039D00080917704811126C084E00E94C809C091BB +:1039E0007A04209183042817190651F4CF5FC093FD +:1039F0007A0480917A0484307CF010927A0402CCAC +:103A000084E00E94C8092091830431E0232728170D +:103A1000190679F7C150EBCF87FFF4CB83E0809391 +:103A20007A04F0CB813021F584E00E94C80920910E +:103A300083042817190671F4809104018F5F809325 +:103A40000401809104018D59873C08F4DBCB10926E +:103A50000401D8CB84E00E94C8092091830431E09E +:103A600023272817190669F7809104018150E7CFB1 +:103A7000833009F0C7CB84E00E94C80920918304F9 +:103A80002817190639F48091790491E089278093E9 +:103A90007904B8CB84E00E94C8092091830431E006 +:103AA00023272817190609F0ADCB809179048327C5 +:103AB000EECFC73009F0A6CBC0916104C11126C07A +:103AC00084E00E94C809C0917604209183042817DD +:103AD000190651F4CF5FC093760480917604873045 +:103AE0007CF0109276048ECB84E00E94C80920916D +:103AF000830431E023272817190679F7C150EBCF4B +:103B000087FF80CB86E0809376047CCBC13011F5B3 +:103B100084E00E94C809209183042817190651F4F3 +:103B2000809127019091280101969093280180931C +:103B3000270168CB84E00E94C80920918304C22732 +:103B4000C817190609F05ECB8091270190912801D2 +:103B50000197EBCFC23019F584E00E94C80920918B +:103B600083042817190651F48091290190912A01A4 +:103B7000019690932A018093290144CB84E00E940E +:103B8000C8092091830431E023272817190609F07A +:103B900039CB8091290190912A010197EACFC33056 +:103BA00019F584E00E94C80920918304281719069A +:103BB00051F480912B0190912C01019690932C014E +:103BC00080932B011FCB84E00E94C80920918304BD +:103BD00031E023272817190609F014CB80912B0117 +:103BE00090912C010197EACFC43009F00BCB84E00F +:103BF0000E94C809209183042817190651F4809166 +:103C00002D0190912E01019690932E0180932D010C +:103C1000F9CA84E00E94C8092091830431E0232777 +:103C20002817190609F0EECA80912D0190912E01F6 +:103C30000197EACFEF92FF920F931F93CF93DF93F9 +:103C40008091C604882321F1D0E0C0E00091C20435 +:103C50001091C304C017D107C8F461E088E00E9446 +:103C6000F109E090C404F090C504C7010E945B0A0A +:103C700060E088E00E94F10901501109C017D107E6 +:103C800018F4C7010E945B0A2196E0CF1092C60487 +:103C900080919404811104C08091B704882361F15C +:103CA0000E94240B009174031091750320917603F8 +:103CB00030917703601B710B820B930B693E73404D +:103CC00081059105C8F081E08093C60488E790E003 +:103CD0009093C5048093C4048CE291E09093C30454 +:103CE0008093C2040E94240B609374037093750345 +:103CF000809376039093770380915B048823C1F0CF +:103D000081E08093C60486E990E09093C504809397 +:103D1000C40480ED92E09093C3048093C204109297 +:103D20005B04DF91CF911F910F91FF90EF90089569 +:103D300080915A048823A9F381E08093C60486E920 +:103D400090E09093C5048093C40480ED92E090933A +:103D5000C3048093C20410925A04E3CFCF92DF923F +:103D6000EF92FF920F931F93CF93DF936C01EB01C0 +:103D70007B01E40EF51E10E000E0CE15DF0561F0DA +:103D80006991D601ED91FC910190F081E02DC60181 +:103D90000995080F191FF1CFC801DF91CF911F912D +:103DA0000F91FF90EF90DF90CF900895089590E0ED +:103DB00080E00895FC0101900020E9F73197AF0100 +:103DC000481B590BBC018EEE95E00C94AE1E8F92F1 +:103DD0009F92AF92BF920F931F93CF93DF93CDB774 +:103DE000DEB7A1970FB6F894DEBF0FBECDBF19A204 +:103DF000423008F44AE08E010F5D1F4F842E912C53 +:103E0000B12CA12CA50194010E945A39E62FB901C9 +:103E1000CA01EA30F4F4E05DD801EE938D01232B62 +:103E2000242B252B79F790E080E0109719F0CD0135 +:103E30000E94DA1EA1960FB6F894DEBF0FBECDBF6A +:103E4000DF91CF911F910F91BF90AF909F908F9076 +:103E50000895E95CE1CF0C94DA1EBC0190E080E0AB +:103E60004AE00C94E71E2F923F924F925F926F921E +:103E70007F928F929F92AF92BF92CF92DF92EF92FA +:103E8000FF920F931F93CF93DF9300D000D01F9228 +:103E9000CDB7DEB78C015C0124E0A20EB11CFC01A1 +:103EA000E758FF4F0190F081E02DC50109959A83F5 +:103EB00089838E3F9F4F08F040C0F801E458FF4FC0 +:103EC000F08048016BE7860E911CF401E080BE97FC +:103ED0000190F081E02DC5010995F801EF5AFF4FDF +:103EE000E08231968F0D808337978081918147964C +:103EF00029813A812F3F310511F008F0FAC0B396BD +:103F00002136310540F469817A816134710538F0D8 +:103F1000F801E459FF4F20813181820F931F9C01EA +:103F20002F5F3F4FF9014491411121C01B82F401E1 +:103F30008081FB818F0FF401808381E090E00F90FE +:103F40000F900F900F900F90DF91CF911F910F91D5 +:103F5000FF90EF90DF90CF90BF90AF909F908F90A9 +:103F60007F906F905F904F903F902F900895FC014D +:103F7000449169817A814617170609F0B5C0029607 +:103F80000097A1F2B801615B7F4F7D836C83FB01D9 +:103F9000918380831086709660818C819D810E94C0 +:103FA0001311EC81FD818683F801E05AFF4F608197 +:103FB0008C819D810E941311782EEC81FD81878375 +:103FC0006801F7E7CF0ED11CF6019081EC81FD81ED +:103FD000928781E0911180E0EC81FD818387F80177 +:103FE000EF59FF4F6080662D8C819D810E941311D7 +:103FF000382EF801EE59FF4FF0806F2D8C819D8196 +:104000000E941311482E8FEF8F0DEE24E394F12CB4 +:10401000970102C0220F331F8A95E2F73A83298362 +:10402000F801ED59FF4F5080652D8C819D810E94D4 +:1040300013115A94970101C0220F5A94EAF7821B78 +:104040008B83EC81FD81868118160CF070CF6A9409 +:1040500001C0EE0C6A94EAF782818E19380E328222 +:104060008381F9818F0F84198719EC81FD81838306 +:10407000148215829801235A3F4F3A83298378018D +:104080003EE5E30EF11CE981FA8160818C819D811E +:104090000E941311482EF70160818C819D810E943E +:1040A0001311382EEC81FD8114816580542CEC8134 +:1040B000FD812680211A818581110FC06281438193 +:1040C0008385F6018083222D521408F4252D460D98 +:1040D000610F00E0C5010E94DF0E521408F43CC0DD +:1040E0005218639410E0E3CFF9012491820F911DDF +:1040F00016CFF801E059FF4FC080D180C80ED91EFD +:10410000760160E0C7010E943E11C80ED91E62E030 +:10411000C7010E943E11F4E0EF0EF11C29813A81A3 +:104120008217930770F3F601849190E0982F882707 +:104130003196E4918E2B009709F4F8CE29813A81CB +:104140002817390719F4C60103961ACFF6013296DB +:10415000E491CE0ED11CE7CF150DEC81FD811483C7 +:104160006582532CEC81FD812680211A6281438176 +:104170008285F6018083222D521408F4252D460DE8 +:10418000610F00E0C5010E94DF0E521420F05218AA +:10419000639410E0E7CF150DEC81FD8114836582F7 +:1041A00061E0CF010E94131181117CCFEC81FD8170 +:1041B000858187150CF467CF8285F6018083B7CEA1 +:1041C0004F925F926F927F928F929F92AF92BF9227 +:1041D000CF92DF92EF92FF92CF93DF936B017C013E +:1041E000D42FAC019B010E94C93B882391F08DED37 +:1041F00091E0DF91CF91FF90EF90DF90CF90BF9053 +:10420000AF909F908F907F906F905F904F900C94A5 +:10421000DA1E26013701E89477F82FEF3FEF4FE7DA +:104220005FE7C301B2010E94C93B81110DC02FEFAE +:104230003FEF4FE75FE7C301B2010E94F83918165C +:104240001CF481EE91E0D5CF2FEF3FEF4FE75FE415 +:10425000C701B6010E94573B18161CF485EE91E089 +:10426000C8CF2FEF3FEF4FE75FECC701B6010E94C9 +:10427000F83987FDF3CF20E030E0A901C701B6018E +:104280000E94F839912C812C87FF0AC06DE28EEED6 +:1042900095E00E94331F4C01F7FAF094F7F8F09480 +:1042A000CD2FA12C60E070E080E09FE3AD1640F4DC +:1042B00020E030E040E251E40E94FD39A394F6CFC3 +:1042C000A70196010E948C392B013C010E94763A8D +:1042D0005B016C014AE00E94E71E7C01E80CF91CBE +:1042E000DD23A9F1C601B5010E94A53A9B01AC01ED +:1042F000C301B2010E948B394B015C016EE28EEE6C +:1043000095E00E94331FE80EF91EC15000F120E035 +:1043100030E040E251E4C501B4010E945C3B2B0156 +:104320003C010E94763A4B01CB010E942D1FE80E02 +:10433000F91EB40190E080E00E94A53A9B01AC0117 +:10434000C301B2010E948B394B015C01DECFC70172 +:10435000DF91CF91FF90EF90DF90CF90BF90AF9023 +:104360009F908F907F906F905F904F900895CF9225 +:10437000DF92EF92FF92CF93DF936C01990FEE08DB +:10438000FF08F7FE19C06DE28EEE95E00E94331F24 +:10439000EC0166277727CB016C197D098E099F09EF +:1043A0004AE00E94E71E8C0F9D1FDF91CF91FF9086 +:1043B000EF90DF90CF9008954AE0C701B601DF91FA +:1043C000CF91FF90EF90DF90CF900C94E71E85ED9A +:1043D0008093BC008091DD039091DE03A091DF0308 +:1043E000B091E0030796A11DB11D23E0B695A795F6 +:1043F000979587952A95D1F72091BC0024FD03C09D +:1044000010922A0408954091DD035091DE036091DB +:10441000DF037091E003452B462B472B69F3009790 +:10442000A105B10541F025E32A95F1F700000197B8 +:10443000A109B109E1CF8091DC030C94760BFC015A +:10444000A081B18150962C9182AD38E0839FC0014C +:104450001124289FA001299F500D112470E060E0D5 +:1044600080AD91AD0C94383D1F93CF93DF93EC0159 +:104470000E9414121BAD8AAD180FE881F981818961 +:10448000181768F0EC81FD8130E020E040E060E149 +:10449000CE01099580E0DF91CF911F910895FE0133 +:1044A000EC58FF4F8081882319F0CE010E941F2213 +:1044B000612FCE010E94011281E0EDCFCF93DF93F7 +:1044C000EC01FC01EC58FF4F8081882319F0CE01EC +:1044D0000E941F2260E0CE01DF91CF910C94011267 +:1044E000FF920F931F93CF93DF93EC01F62E088179 +:1044F0001981C8010E941239F81621F06F2DC801E8 +:104500000E941A39CE01DF91CF911F910F91FF9038 +:104510000895EF92FF920F931F93CF93DF9300D0F4 +:10452000CDB7DEB78C017B019A838983FB01608163 +:10453000CE0101960E9470220F5F1F4F1A830983DC +:10454000F7016181CE0101960E947022C7010F9090 +:104550000F90DF91CF911F910F91FF90EF900895F1 +:104560000F931F93CF93DF9300D0CDB7DEB78B01AE +:104570009A838983FB016081CE0101960E9470229B +:10458000C8010F900F90DF91CF911F910F91089567 +:104590000F931F93CF93DF9300D0CDB7DEB78B017E +:1045A0009A838983FB016081CE0101960E9470226B +:1045B000C8010F900F90DF91CF911F910F91089537 +:1045C000AF92BF92CF92DF92EF92FF920F931F9321 +:1045D000CF93DF9300D0CDB7DEB78B016B0124E022 +:1045E000C20ED11C7B015C01A61AB70AC5018E0D53 +:1045F0009F1D9A838983F70161917F01CE01019606 +:104600000E947022EC14FD0489F7C8010F900F90EE +:10461000DF91CF911F910F91FF90EF90DF90CF909E +:10462000BF90AF900895CF93DF93EB010E941239B2 +:104630008883CE01DF91CF910895CF93DF93EB0173 +:104640000E9412398883CE01DF91CF9108950F9394 +:104650001F93CF93DF938C01EB010E941239888363 +:10466000C80101960E9412398983CE01DF91CF9152 +:104670001F910F910895CF92DF92EF92FF920F93C7 +:104680001F93CF93DF93EB017B0124E0E20EF11C3B +:104690008B016C01C61AD70AC601800F911F0E94B8 +:1046A0001239F80181938F01EE15FF05A9F7CE01AC +:1046B000DF91CF911F910F91FF90EF90DF90CF90FE +:1046C00008952F923F924F925F926F927F928F92B6 +:1046D0009F92AF92BF92CF92DF92EF92FF920F9391 +:1046E0001F93CF93DF93CDB7DEB7AA970FB6F89499 +:1046F000DEBF0FBECDBF88E0E6E4F1E0DE015196FB +:1047000001900D928A95E1F764E070E084E090E01A +:104710000E94F73B9EA38DA364E070E087E090E0E9 +:104720000E94F73B98A78FA364E070E084E090E0DC +:104730000E94F73B9AA789A764E070E084E090E0CC +:104740000E94F73B9CA38BA364E070E080E190E0C3 +:104750000E94F73B9E8F8D8F37E2C32E31E0D32E20 +:10476000ADA0BEA020E1A20EB11C09A51AA5EDA026 +:10477000FEA0412C512C40E8642E4FE3742ED7014B +:104780004D925D926D927D927D01F60161917191E4 +:104790006F01072E000C880B990B0E94A73AD801D5 +:1047A0006D937D938D939D938D01EA14FB0439F7EE +:1047B000EFA1F8A5FA8FE98F9F01245E3F4F3C8F50 +:1047C0002B8F8F01D8011D921D921D921D928D017C +:1047D000FE0171961F01CDA0DEA0812C912C540109 +:1047E000D6014D905D906D907D906D01A301920179 +:1047F000C501B4010E948C394B015C01F10161914A +:1048000071911F0196012450310938A32F8F072E73 +:10481000000C880B990B0E94A73AA30192010E94F9 +:104820005C3BAF8DB8A16D937D938D939C93139753 +:10483000CE14DF04A9F6F801349780829182A28217 +:10484000B382EB8DFC8D0E171F0709F0BBCF2BA198 +:104850003CA138A32F8F690130E1C30ED11C0BA1FD +:104860001CA189A59AA540969C8F8B8FD8011D927B +:104870001D921D921D928D01FE0171961F01E9A4EA +:10488000FAA4812C912C5401D7014D905D906D902C +:104890007D907D01A3019201C501B4010E948C3974 +:1048A0004B015C01F101619171911F01970124504D +:1048B00031093AA329A3072E000C880B990B0E94FB +:1048C000A73AA30192010E945C3BA9A1BAA16D93F2 +:1048D0007D938D939C931397EB8DFC8DEE15FF05C7 +:1048E00099F6F801349780829182A282B3820C15E6 +:1048F0001D0509F0BBCF4D8D5E8D405C5F4F2D8D4A +:104900003E8D90E080E0F901E80FF91FA98DBA8D86 +:10491000A80FB91FCD90DD90ED90FC90C082D182A0 +:10492000E282F38204968031910569F7898D9A8D30 +:1049300004969A8F898F205F3F4F4217530709F7DC +:104940002D8D3E8D3A8F298F1C8E1B8EB12CA12C64 +:10495000A98DBA8DCD90DD90ED90FC90E894F7F89C +:104960001501BFEF2B1A3B0AE98DFA8DFAA3E9A3D3 +:1049700085014101F3E08F16910409F1A9A1BAA1C3 +:1049800054964D905D906D907C905797E89477F891 +:10499000A7019601C301B2010E94573B18166CF0A3 +:1049A00026013701BFEF8B1A9B0AE9A1FAA1749681 +:1049B000FAA3E9A373016201DDCF8401F3CF0A15E5 +:1049C0001B0509F44AC0AD8DBE8D2B8D3C8DA20F09 +:1049D000B31F000F111F000F111FF801EE0FFF1F73 +:1049E000EE0FFF1FAD8CBE8CAE0EBF1E90E080E0C0 +:1049F0004D915D916D917D91F501C080D180E280F6 +:104A0000F3809D0124503109F901C082D182E282F4 +:104A1000F382F50141935193619371935F01019684 +:104A20008430910529F7EF8DF8A180819181A281D1 +:104A3000B3812BA13CA1020F131FF80140815181CA +:104A400062817381EF8DF8A1408351836283738308 +:104A5000F80180839183A283B3836F8C78A0F4E004 +:104A60006F0E711C80EFA82EBB24BA942B8D3C8D49 +:104A7000A21AB30A098D1A8D23014101780134E18C +:104A8000E30EF11C6101F501EE0DFF1D8B8D9C8D78 +:104A9000E80FF91FD80150962D913D914D915C91F1 +:104AA000539760817181828193810E945C3BE98D83 +:104AB000FA8D20813181428153810E94FD399B0111 +:104AC000AC01D7016D917D918D919C910E948B39A4 +:104AD000F70161937193819391937F01FFEFCF1A57 +:104AE000DF0A24E0C216D10471F6D201CD90DD9028 +:104AF000ED90FD902D01FD013497FAA3E9A3AF8D50 +:104B0000B8A12D913D914D915C91F8016089718919 +:104B1000828993890E945C3BA98DBA8D2D913D912C +:104B20004D915C910E94FD399B01AC01C701B6011A +:104B30000E948B39E9A1FAA16083718382839383F8 +:104B4000FFEF8F1A9F0A005F1F4F20E1A21AB108E2 +:104B500034E08316910409F091CFA98DBA8D549653 +:104B6000BA8FA98FEB8DFC8D7096FC8FEB8F510166 +:104B700078A26F8EF3E02F16310409F0E9CE8BA0F6 +:104B80009CA080E1880E911C8E01035F1F4FED8C6D +:104B9000FE8C9CE3E90EF11CF401B291A29192917A +:104BA00082914F01F80180839183A283B3835101E5 +:104BB000D12CC12CD8014D905D906D907C90BFEFB1 +:104BC000AB1ABB0AE4E0CE0ED11CF4E0AF16B10480 +:104BD000E9F0F801EC0DFD1D208131814281538106 +:104BE000F701EC0DFD1D60817181828193810E942E +:104BF0005C3B9B01AC01C301B2010E948B39D8011F +:104C00006D937D938D939C931397D4CFF70120815F +:104C1000318142815381C301B2010E94FD39D80123 +:104C20006D937D938D939C931397B1E02B1A31086C +:104C300004501109E4E1EE1AF108FFEF2F163F06C8 +:104C400009F0AACF8DA19EA10E94AF3C8FA198A58B +:104C50000E94AF3C89A59AA50E94AF3C8BA19CA164 +:104C60000E94AF3C8D8D9E8D0E94AF3C89819A81C0 +:104C7000AB81BC818093660490936704A093680421 +:104C8000B09369048D819E81AF81B88580936A0459 +:104C900090936B04A0936C04B0936D0489859A85FE +:104CA000AB85BC8580936E0490936F04A0937004D1 +:104CB000B09371048D859E85AF85B8898093720409 +:104CC00090937304A0937404B0937504AA960FB6DE +:104CD000F894DEBF0FBECDBFDF91CF911F910F9132 +:104CE000FF90EF90DF90CF90BF90AF909F908F900C +:104CF0007F906F905F904F903F902F9008951F92FC +:104D00000F920FB60F9211242F933F938F939F937F +:104D1000AF93BF938091510490915204A09153049A +:104D2000B09154043091500423E0230F2D3758F5EF +:104D30000196A11DB11D20935004809351049093BE +:104D40005204A0935304B09354048091550490915D +:104D50005604A0915704B09158040196A11DB11DAD +:104D60008093550490935604A0935704B09358042D +:104D7000BF91AF919F918F913F912F910F900FBE57 +:104D80000F901F90189526E8230F0296A11DB11DC4 +:104D9000D2CF1F920F920FB60F9211242F933F93F1 +:104DA0004F935F936F937F938F939F93AF93BF9333 +:104DB000EF93FF93E0910201F09103010995FF91B8 +:104DC000EF91BF91AF919F918F917F916F915F9183 +:104DD0004F913F912F910F900FBE0F901F901895FC +:104DE0001F920F920FB60F9211242F933F934F9360 +:104DF0005F936F937F938F939F93AF93BF93EF9343 +:104E0000FF93E0910001F09101010995FF91EF916D +:104E1000BF91AF919F918F917F916F915F914F91D2 +:104E20003F912F910F900FBE0F901F9018951F92DA +:104E30000F920FB60F9211242F933F934F935F93CE +:104E40006F937F938F939F93AF93BF93EF93FF9352 +:104E50008091B900887F803609F44AC0F0F5883225 +:104E600009F4A7C018F5803109F49BC0B8F4882371 +:104E700009F4F9C0883009F494C0FF91EF91BF9113 +:104E8000AF919F918F917F916F915F914F913F91E2 +:104E90002F910F900FBE0F901F901895883109F435 +:104EA00088C0803251F78093290414C0803409F4FB +:104EB0009DC040F48033B9F38833F9F68093290418 +:104EC00085ECB0C0803509F485C0883509F496C0FA +:104ED000883499F60E94E721D0CF883909F48CC034 +:104EE00038F5883729F050F4883611F0803729F6E4 +:104EF00083E080932A041092280457C0883809F46C +:104F00007BC0803919F0803809F0B7CF8091280430 +:104F1000803208F071C0E091280481E08E0F809308 +:104F200028048091BB00F0E0E85FFB4F80833DC028 +:104F3000803B39F0E0F4803A09F479C0883A09F00E +:104F40009CCF84E080932A041092050410920404FC +:104F5000E0910204F0910304099580910404811109 +:104F60000FC081E0809304041092E20309C0803CEA +:104F700009F4A6CF883C09F4A3CF883B09F07DCF84 +:104F8000E091050481E08E0F80930504F0E0EE517E +:104F9000FC4F80818093BB009091050480910404B4 +:104FA00029C080914F048093BB0085EC8093BC00A6 +:104FB00064CF90914E0480914D04981758F5E0917C +:104FC0004E0481E08E0F80934E04F0E0E35DFB4FD2 +:104FD0008081E9CFE0914E0481E08E0F80934E04F2 +:104FE0008091BB00F0E0E35DFB4F808390914E0425 +:104FF00080914D049817C8F285E8D8CFE0914E040F +:1050000081E08E0F80934E048091BB00F0E0E35D61 +:10501000FB4F808380912C0481115CCF81E08093D1 +:105020002B0484EA8093BC0010922A0426CF85ECDE +:105030008093BC0010922A0480912804803230F4BE +:10504000E0912804F0E0E85FFB4F108260912804B3 +:1050500070E0E0910604F091070488E094E009957F +:10506000109228040ACF1092290434CF1F920F9275 +:105070000FB60F9211242F933F934F935F936F932B +:105080007F938F939F93AF93BF93EF93FF93809101 +:10509000DA049091DB048093B200809191039091A7 +:1050A0009203A0919303B09194030196A11DB11DA9 +:1050B0008093910390939203A0939303B0939403EE +:1050C0008091910390919203A0919303B0919403E6 +:1050D0004091DE045091DF046091E0047091E1049E +:1050E00084179507A607B70710F1809190038111E7 +:1050F0001EC081E080939003809191039091920370 +:10510000A0919303B0919403841B950BA60BB70B4E +:105110008093910390939203A0939303B09394038D +:10512000E091DC04F091DD04099510929003FF9169 +:10513000EF91BF91AF919F918F917F916F915F910F +:105140004F913F912F910F900FBE0F901F90189588 +:105150001895CF931092E5041092E40488EE93E042 +:10516000A0E0B0E08093E6049093E704A093E80405 +:10517000B093E9048DEB91E09093E3048093E20413 +:105180001092F1051092F0058DEC98E0909368066E +:10519000809367061092690610926A0610920A06BA +:1051A0008FEC91E09093EF058093EE051092F3055C +:1051B0001092F205109207061092FE051092FF055C +:1051C00010920006109201068FEF809308068093DC +:1051D0000C06E0E1F6E086E296E0CFEFC1938E1791 +:1051E0009F07E1F78DE99CE09093F7058093F60522 +:1051F0008CE89DE09093F9058093F80580E792E1B3 +:105200009093FB058093FA058EEB9AE09093FD0551 +:105210008093FC0530E020E040E069E082EF95E01B +:105220000E949D0C10923A061092390687ED98E084 +:1052300090932706809326068EEE94E090932B069B +:1052400080932A0682E080932C0610922D061092FD +:1052500046061092640681E0809365068093660698 +:1052600087ED91E0909329068093280682EF95E0E0 +:105270000E94DB0EE0912806F09129060280F3815E +:10528000E02D82EF95E009958AE399E090933C0642 +:1052900080933B06C0931B06C0931C06C0931D065B +:1052A000CF910895CF93DF9300D0CDB7DEB7789438 +:1052B00084B5826084BD84B5816084BD85B582601B +:1052C00085BD85B5816085BD80916E0081608093CC +:1052D0006E00109281008091810082608093810035 +:1052E0008091810081608093810080918000816045 +:1052F000809380008091B10084608093B1008091A0 +:10530000B00081608093B00080917A0084608093C7 +:105310007A0080917A00826080937A0080917A008E +:10532000816080937A0080917A00806880937A000F +:105330001092C10069E574E090E080E00E941323C0 +:1053400080915904823010F01092590480915904D0 +:1053500081117AC066E171E081E090E00E94E02274 +:1053600062E171E085E090E00E94E0226EE071E091 +:1053700089E090E00E94E02267E371E08DE090E038 +:105380000E94892266E371E081E190E00E94B022F0 +:105390006DE071E082E190E00E94B02265E071E092 +:1053A00083E190E00E94E0226CE774E087E190E006 +:1053B0000E94E02268E774E08BE190E00E94C8223E +:1053C00069E071E08CE190E00E94E02264E071E02D +:1053D00080E290E00E94B02262E874E081E290E016 +:1053E0000E94C82263E874E082E290E00E94C82232 +:1053F00067E271E083E290E00E94892269E271E055 +:1054000087E290E00E9489226BE271E08BE290E0FB +:105410000E9489226DE271E08FE290E00E94892271 +:1054200069E371E083E390E00E94892281E090E0EB +:105430009A838983BE016F5F7F4F90E080E00E9476 +:10544000892281E08093590480915904813009F0C8 +:105450006CC066E171E081E090E00E943B2362E174 +:1054600071E085E090E00E943B236EE071E089E00E +:1054700090E00E943B2367E371E08DE090E00E94A2 +:10548000272366E371E081E190E00E9413236DE041 +:1054900071E082E190E00E94132365E071E083E116 +:1054A00090E00E943B236CE774E087E190E00E946B +:1054B0003B2368E774E08BE190E00E941D2369E0E4 +:1054C00071E08CE190E00E943B2364E071E080E2B7 +:1054D00090E00E94132362E874E081E290E00E9471 +:1054E0001D2363E874E082E290E00E941D2367E2DE +:1054F00071E083E290E00E94272369E271E087E295 +:1055000090E00E9427236BE271E08BE290E00E9422 +:1055100027236DE271E08FE290E00E94272369E388 +:1055200071E083E390E00E94272362E082E00E9422 +:105530001F0A62E083E00E941F0A62E084E00E948A +:105540001F0A60E080E10E941F0A62E08EE00E9474 +:105550001F0A60E084E10E941F0A60E081E10E946E +:105560001F0A61E088E00E941F0A61E08AE00E9451 +:105570001F0A60E08AE00E94F10960E088E00E9472 +:10558000F109E091F605F091F70530E020E040E008 +:105590006AE082EF95E0099582EF95E00E945E2235 +:1055A00082EF95E00E9434228111FACF60E082EF11 +:1055B00095E00E940112E091F605F091F70530E0C8 +:1055C00020E040E06BE082EF95E0099586EF9DE0FA +:1055D0009093680680936706E091F605F091F705D1 +:1055E00030E020E040910D016EE082EF95E00995FA +:1055F00080918204882309F4D0C283EB91E00E9459 +:105600003C0980917A00866080937A0080917A00CC +:10561000886080937A00789488E898E190930301F9 +:105620008093020180916900837F88608093690084 +:10563000E99A82EF95E00E945E2202E315E18EEA8C +:1056400097E00E944A110093690610936A0689EE5A +:1056500091E00E942B1F82EF95E00E94342281117D +:10566000EECF11E01093C60488E592E09093C50454 +:105670008093C40488EC90E09093C3048093C204A8 +:105680000E941A1E1093C60480E991E09093C5040D +:105690008093C4048CE291E09093C3048093C2048D +:1056A0000E941A1E1093C60482E890E09093C504ED +:1056B0008093C40488EE93E09093C3048093C20463 +:1056C0000E941A1E1AE00E944B140E94F5130E94B9 +:1056D000A7161150C1F780917804882309F460C29D +:1056E00081E08093D9040E946123B1E92B2E312CF3 +:1056F000A8950E94240B00915D0410915E042091F6 +:105700005F0430916004601B710B820B930B603A55 +:1057100071058105910508F444C082E00E94C80922 +:10572000892B71F580915C048F5F80935C0481E02C +:105730008093C60480E590E09093C5048093C404F0 +:1057400086E990E09093C3048093C20480913B016A +:10575000813011F41092B7041092CE041092D60446 +:105760001092D5041092D0041092CF040E94240B02 +:1057700060935D0470935E0480935F049093600473 +:1057800010915C04153008F417C280913B01813000 +:1057900009F009C292E090933B0180935B04109260 +:1057A0005C048091BD04811107C082EF95E00E94E6 +:1057B0005E2281E08093BD048091CE0481110C941F +:1057C000783780913B01813009F0A7C58091B704FB +:1057D00010912F019091B80491110C9458388111B7 +:1057E00099C484E495E00E944A111E5E8091B5043C +:1057F0009091B6048336910508F485C41092690629 +:1058000010936A062091D904222309F480C42091C0 +:10581000B3043091B4042C5F3F4F2930310508F0B8 +:1058200076C48091B1049091B2040E94B72180E5C2 +:1058300094E00E944A1180912701909128010AE08A +:1058400010E0B8010E94CE3BEAE0E69F6001E79FCE +:10585000D00C1124F12CE12C2091390130913A0126 +:1058600050E040E02C193D094E095F09A6E3B0E085 +:105870000E9447394B015C0180912D0190912E01CE +:10588000B8010E94CE3BE69F9001E79F300D1124A6 +:1058900050E040E02C193D094E095F09C501B401F3 +:1058A0000E942839DA01C9010396A11DB11D809318 +:1058B000B00460912F01645E2FE042E00E9441102D +:1058C00060912F01625E22E04DE380E00E94C20FF2 +:1058D0004091390150913A0190912F012091B004EB +:1058E000935E453081E0580708F03CC42C5F20935C +:1058F000690690936A06CA010E942D1F8EEA97E0FE +:105900000E944A1180912F01882371F09FEF980F18 +:1059100090932F0192E3909369068C5080936A06CE +:1059200089EE91E00E942B1F8091AF048823A1F1A2 +:105930008091AE04873008F017C48F5F8093AE0467 +:105940009091AD049F5F9093AD048730D9F410928D +:1059500026018091D904882351F08091CA048111D5 +:1059600006C069E371E083E390E00E9489228091A0 +:10597000D90491E089278093D904809170008E7FAB +:10598000809370000E94240B6093A9047093AA0472 +:105990008093AB049093AC0410912F01E3E0FE2EB2 +:1059A000F10E0EE0010F22E043E06F2D8BE40E9428 +:1059B0008C0F21E043E06F2D86E50E948C0F24E0E0 +:1059C00043E0602F8BE40E948C0F28E043E0602FBF +:1059D00086E50E948C0FF4E0FF2EF10E00E02AE035 +:1059E000412F6CE482EF95E00E94DF0E41E1410F10 +:1059F0002AE06CE482EF95E00E94DF0E4AE06F2D12 +:105A000088E40E94DE0F4AE06F2D89E50E94DE0FD8 +:105A100080912F01825F9BE49093690680936A06D0 +:105A20008091D904882309F4C0C38091CA048111EC +:105A3000B9C38CE093E00E942B1F1091AE04173085 +:105A400019F482E00E9452098091AD0421E0280FF0 +:105A5000220F41E0410F440F60912F01681B685FE6 +:105A60000091260180E5811B0E9478108091AE0490 +:105A7000873019F481E00E9452098091D90488236B +:105A800009F4DBC3E090A704F090A8040E94240B63 +:105A90000091A3041091A4042091A5043091A604C0 +:105AA0004B015C01801A910AA20AB30A9701A4ED86 +:105AB000BEEF0E94E83B2FEF37E040E050E00E944D +:105AC00028392E533E4F4F4F5F4F442755272815F7 +:105AD00039054A055B0508F047C005E914E073EA9B +:105AE000A72E74E0B72E29E030E0D7010E94F03BEA +:105AF0002FEF37E040E050E00E94283969017A0139 +:105B0000B3E0CB0ED11CE11CF11CDD24EE24FF24FC +:105B100026013701E1E04E1A51086108710881E061 +:105B200090E0A0E0B0E0F2E0CF16D104E104F1048F +:105B30005CF00E94BA38A30192010E942839DC016E +:105B4000CB010196A11DB11DF80181938F01AE1605 +:105B5000BF0629F70E94240B6093A3047093A4044A +:105B60008093A5049093A60405E914E06AE4D62E78 +:105B7000D8018D918D0190912F0150E2F52EF90EF3 +:105B8000EF2CE81AEF1410F40C946738811110C34D +:105B9000B12CCF2CFD2CED2C11C387ED91E02FCD36 +:105BA0001092D904A0CD873009F4F9CD81E080931B +:105BB0003B0180935A04F3CD0E94240BC0905D04F6 +:105BC000D0905E04E0905F04F09060046C197D0951 +:105BD0008E099F09653071408105910508F4E1CD7A +:105BE00080913B01813091F4123009F0D8CD909131 +:105BF00094049111D4CD9091B8049111D0CD80939B +:105C0000AF041092CA041092C704C9CD823009F0C3 +:105C10004EC0113009F0C3CD80918B04811104C0B6 +:105C200084E080933B01BBCD8B3F11F0813011F4B8 +:105C300083E0F7CF8F3F11F0853011F485E0F1CF8D +:105C40008E3F11F0843011F486E0EBCF8C3F11F0E1 +:105C5000823011F488E0E5CF8D3F19F0833009F0F0 +:105C60009ECD80E090E0A0E4B1E480931601909393 +:105C70001701A0931801B09319018DEC9CECACE0D6 +:105C8000B0E48093120190931301A0931401B09398 +:105C900015018AE999E9A9E9BFE380930E01909380 +:105CA0000F01A0931001B093110187E0BACF8330A8 +:105CB00009F052C0113009F072CD80918904813011 +:105CC00081F024F481116BCD82E0ABCF823031F1D1 +:105CD000833009F064CD80918804811131C083E064 +:105CE00004C090918804911103C08093880457CD1B +:105CF000913009F054CD80918704811104C081E076 +:105D0000809387044CCD66E171E081E090E00E94D1 +:105D1000E022109287041092880441CD809188047B +:105D2000811102C082E0E1CF823009F038CD80914C +:105D30008704882321F362E171E085E090E0E7CFFA +:105D4000833009F02CCD809187048823C1F26EE066 +:105D500071E089E090E0DBCF843069F5113009F023 +:105D60001ECD80918604813049F0823009F0AACF9F +:105D700080918504811115C082E004C09091850452 +:105D8000911103C0809385040ACD913009F007CDAD +:105D900067E371E08DE090E00E9489221092850413 +:105DA000FECC823009F0FBCC66E371E081E190E04B +:105DB0000E94B022F3CF853009F04FC0113009F0B6 +:105DC000EECC809184048130D9F00CF47BCF82300A +:105DD00059F1833009F0E3CC909181049923A9F023 +:105DE000933009F0DCCC63E874E082E290E00E943A +:105DF000C82263E874E082E290E00E941D2311C093 +:105E000080918104811104C081E080938104C7CC1A +:105E1000813009F0C4CC6DE071E082E190E00E9435 +:105E2000B02210928104BBCC90918104992369F334 +:105E3000923009F0B4CC62E874E081E290E00E9414 +:105E4000C82280918204882329F083EB91E00E948C +:105E50003C09E7CF87ED91E0FACF8630D1F51130DC +:105E600009F09DCC80918004813099F00CF42ACF08 +:105E7000823019F1833009F092CC90917B04992300 +:105E800069F0933009F08BCC69E071E08CE190E02F +:105E90000FC080917B04811104C081E080937B045A +:105EA0007ECC813009F07BCC65E071E083E190E04D +:105EB0000E94E02210927B0472CC90917B04992383 +:105EC00069F3923009F06BCC6CE774E087E190E005 +:105ED000EFCF883009F09BC0113009F060CC809181 +:105EE0007A04813009F46FC00CF4ECCE823009F4EE +:105EF0007DC0833009F053CC90917704992309F445 +:105F000066C0933009F04BCC80917904882309F462 +:105F10006AC0C12CD12C7601B12CA12C10E000E07C +:105F2000A89526013701AAE0759467945794479481 +:105F3000AA95D1F74201C2018A199B090597F0F091 +:105F400082EF95E00E945E2292E390936906A0E1C1 +:105F5000A0936A06C4010E942D1FBBE4B09369069A +:105F6000E0E1E0936A068FEE91E00E942B1F82EF42 +:105F700095E00E9434228111E7CF520160E0C80110 +:105F80000E941A390F5F1F4FF4E6CF0ED11CE11C9F +:105F9000F11CC11420E9D20621E0E206F10409F067 +:105FA000BFCFA89584B7877F84BF80916000886148 +:105FB0008093600080E18093600080916000886041 +:105FC0008093600010C090917704911103C080937A +:105FD0007704E5CB913009F0E2CB64E071E080E238 +:105FE00090E00E94B02210927704D9CB8091770480 +:105FF0008111D5CB8091780491E089278093780432 +:1060000068E774E08BE190E00E94C822C8CB87303B +:1060100009F0C5CB113009F0C2CBE0917604E7302E +:1060200008F0BDCB0E2E000CFF0BE75EFF4C0C946E +:10603000E23B20303830503061306F307D302030DE +:1060400082E080933B011092760466E171E081E08A +:1060500090E00E943B2362E171E085E090E00E94C5 +:106060003B236EE071E089E090E00E943B2397CBF8 +:1060700080916104811106C081E080936104809366 +:10608000D9048DCB813009F08ACB67E271E083E2DD +:1060900090E00E948922109261041092D9047FCB73 +:1060A00080916104811105C082E08093610481E0E8 +:1060B000E6CF823009F073CB69E271E087E290E0CD +:1060C000E8CF80916104811102C083E0EECF83307C +:1060D00009F065CB6BE271E08BE290E0DACF809162 +:1060E0006104811102C084E0E0CF843009F057CB15 +:1060F0006DE271E08FE290E0CCCF0E94612386E0F8 +:10610000809376044CCB2AE02093690679CB0E94D9 +:106110002D1F8DCB82EC90E00E944A118CE0809381 +:106120006906185F10936A0681EF91E00E942B1FA9 +:1061300080912F018F5E97E19093690680936A06A4 +:1061400089EF91E00E942B1F82E00E94520922E118 +:106150004DE360912F0180E00E94C20F81E00E9418 +:10616000520965CB2A51C3CB0E94240B0091A9048C +:106170001091AA042091AB043091AC04601B710B08 +:10618000820B930B6D3271408105910508F404CCAC +:106190001092AE041092AD0481E08093260110921B +:1061A000AF04FACB8BE092E046CC8FE092E043CC98 +:1061B000BB24B394CD2C8E2DEF2CF82EBFEFFB1209 +:1061C00002C04EEFF42EFE1470F5D394E8E5DE1213 +:1061D000CFCC10912F01809194048823C9F18EEACD +:1061E00097E00E944A110FE500936906135F109330 +:1061F0006A0683E192E00E942B1F80912F01835E4B +:106200000093690680936A068BE192E00E942B1F3F +:1062100082E00E94520920E248E260912F018DE560 +:106220000E94C20F3DC16C2D8E2DBB2011F06E2D32 +:106230008C2D0E94350FE394C6CF40912F01415E13 +:1062400000E02EE06AE482EF95E00E94DF0EC1CF0D +:1062500082EC90E00E944A1104E600936906195FFF +:1062600010936A066091B9047091BA048091BB04DE +:106270009091BC0441E050E00E94E02060912F0129 +:106280006F5F2FE041E089E70E948C0F80912F0122 +:10629000895F9BE79093690680936A0687EF91E098 +:1062A0000E942B1F80912F018D5E009369068093C1 +:1062B0006A0660919004709191048091920490918B +:1062C000930441E050E00E94E02080912F018D5E18 +:1062D0009AE79093690680936A0683E292E00E94AF +:1062E0002B1F80912F01805E0093690680936A06C0 +:1062F00060918F0470E090E080E04AE00E94E71E29 +:1063000080912F01805E98E79093690680936A06DA +:106310008FEE91E00E942B1F53C2823009F004C11E +:1063200080918E04882309F4BFC080918C049091E1 +:106330008D04059690938D0480938C040AE111E0FE +:1063400046E251E0F80121913191BF01625071099B +:106350002B5F3F4FDB012D933C934E175F0799F75F +:10636000D8012D913D918D012B3F310544F09D01C8 +:106370002250310943ED5FEFD9014D935C93E01753 +:10638000F10771F7C29764F010928E0410928D0499 +:1063900010928C0480918B04863014F010928B0440 +:1063A0008EEA97E00E944A1180911A0190911B0198 +:1063B0009C012E5C3F4F293C310548F480936906CF +:1063C00085E180936A0685E292E00E942B1F80910E +:1063D0001C0190911D019C012E5C3F4F293C310511 +:1063E00048F48093690685E180936A0689E292E029 +:1063F0000E942B1F80911E0190911F019C012E5C19 +:106400003F4F293C310548F48093690685E180932C +:106410006A0680E392E00E942B1F809120019091F8 +:1064200021019C012E5C3F4F293C310548F48093AB +:10643000690685E180936A0687E392E00E942B1F3C +:1064400080912201909123019C012E5C3F4F293CB9 +:10645000310548F48093690685E180936A068EE3EE +:1064600092E00E942B1F80912401909125019C01B4 +:106470002E5C3F4F293C310548F48093690685E145 +:1064800080936A0685E492E00E942B1F82E00E94BE +:10649000520901E024E148E266E08BE20E947810B4 +:1064A00081E00E9452098CC180918A04882309F4FA +:1064B00077CF80918C0490918D04059790938D04F3 +:1064C00080938C040AE111E046E251E0F801219149 +:1064D0003191BF016250710925503109DB012D93C3 +:1064E0003C934E175F0799F7D8012D913D918D018F +:1064F0002A363F4F34F4980122503109D9012D92A8 +:106500003C92E017F10781F78F3C9F4F0CF048CF8A +:1065100010928A0410928D0410928C0480918B0446 +:106520008B3F0CF43BCF3CCF833009F013C102E02A +:10653000009369061EE010936A068CE492E00E94C4 +:106540002B1F1093690610936A06609116017091D3 +:106550001701809118019091190141E050E00E94CB +:10656000E02082E58093690610936A068EE492E04B +:106570000E942B1F8EE58093690610936A06609136 +:10658000120170911301809114019091150141E065 +:1065900050E00E94E020009369060DE100936A0636 +:1065A00087E292E00E942B1F1093690600936A060F +:1065B00060910E0170910F01809110019091110175 +:1065C00041E050E00E94E02080918904823009F48B +:1065D00047C0833009F481C0813009F0F1C0809157 +:1065E000880420E140E3813009F047C282E00E9444 +:1065F000520920E140E361E080E00E94C20F8091F7 +:106600008704882309F44CCF60911601709117011B +:1066100080911801909119010E94763A11E061155C +:1066200071058105910579F010E02AE030E040E045 +:1066300050E00E945A39CA01B9011F5F6115710506 +:106640008105910591F7612F660F610F660F6E5EF0 +:1066500000E02AE04FE082EF95E00E94DF0E20CFBD +:1066600080918804823091F50E94520920E140E334 +:1066700061E080E50E94C20F80918704882309F4BD +:106680000FCF6091120170911301809114019091CC +:1066900015010E94763A11E0611571058105910599 +:1066A00079F010E02AE030E040E050E00E945A39F2 +:1066B000CA01B9011F5F611571058105910591F747 +:1066C000612F660F610F660F6E59C2CF20E140E364 +:1066D00061E080E50E94E11073C08091880420E1B0 +:1066E00040E3833009F061C182E00E94520920E159 +:1066F00040E360E180E00E94C20F8091870488231C +:1067000009F4CECE60910E0170910F0180911001BD +:10671000909111010E94763A11E061157105810591 +:10672000910579F010E02AE030E040E050E00E946E +:106730005A39CA01B9011F5F6115710581059105BB +:1067400091F7612F660F610F660F6E5E00E02AE021 +:106750004EE181CF843009F02AC112E0109369061E +:106760003EE0F32EF0926A0680E592E00E942B1F35 +:1067700009E600936906F0926A06809137019091CC +:1067800038010E942D1F109369061DE110936A06BF +:1067900080E692E00E942B1F0093690610936A0620 +:1067A0006091360170E090E080E04AE00E94E71ED0 +:1067B00080918604813009F4DEC0823009F4E8C09B +:1067C00082EF95E00E943422811102C01092BD0434 +:1067D0000E941A1E0E94240B0091BE041091BF0457 +:1067E0002091C0043091C104601B710B820B930B8C +:1067F0000091320110913301209134013091350123 +:10680000061717072807390760F40E94A7160E9489 +:10681000240B6093BE047093BF048093C0049093D4 +:10682000C1048091D904882309F4E9C380917000E0 +:1068300080FD0EC01092D8041092D7041092D60496 +:106840001092D50485E999E00E9455090E94B11380 +:106850000E94240B0091D1041091D2042091D30402 +:106860003091D404601B710B820B930B6D3B724013 +:106870008105910508F475C01091CB048EE00E944B +:10688000C8091817190651F181E018271093CB0495 +:106890001092D8041092D7049091CA049923F1F071 +:1068A0001092CA042091C8043091C90430933A016F +:1068B000209339011092C9041092C8041092C704A1 +:1068C0008093C60486E990E09093C5048093C40445 +:1068D0008CE291E09093C3048093C2048091D7042A +:1068E0009091D80420913701309138018217930795 +:1068F00009F058C32091CA04211154C369E371E01F +:1069000083E390E00E94892281E08093CA0480930F +:10691000C60486E990E09093C5048093C4048CE299 +:1069200091E09093C3048093C2048091360190E07B +:106930002091390130913A013093C9042093C80461 +:106940008217930720F490933A01809339010E94B3 +:10695000240B6093D1047093D2048093D30490935A +:10696000D40480E090E0892B11F40C94782B0E94E1 +:1069700000000C94752B80918504813009F07BC058 +:1069800082E00E94520920E140E861E080E048CCCA +:106990008091850420E140E8823039F482E00E9451 +:1069A000520920E140E860E1F1CF60E167C0853045 +:1069B00009F066C080918404833031F582E08093D1 +:1069C00069061EE010936A0682E792E00E942B1F80 +:1069D00086E58093690610936A068091830481118D +:1069E00010C08FE792E00E942B1F809184048230B8 +:1069F000D1F18330D9F1813009F0E2CE8091810468 +:106A0000BCCF88E892E0EFCF12E0109369062EE049 +:106A1000F22EF0926A0681E992E00E942B1F0AE6AC +:106A200000936906F0926A0660910D0170E090E0B3 +:106A300080E04AE00E94E71E109369061DE1109372 +:106A40006A068EE992E00E942B1F0093690610935C +:106A50006A0680918204811103C087E393E0C3CF6B +:106A60008BEA92E0C0CF8091810494CF8091810421 +:106A7000833009F485CF20E140E861E080E02ACE50 +:106A8000863009F0A4C080918004833009F03FC0B3 +:106A900082E0809369061EE010936A068FEA92E016 +:106AA0000E942B1F84E68093690610936A06C090AB +:106AB0000901D0900A01E0900B01F0900C0123E352 +:106AC00033E343E550E4C701B6010E94573B41E080 +:106AD00050E087FF73C023E333E343E550E4C7018D +:106AE000B6010E94F83987FF04C08FEB92E00E9444 +:106AF0002B1F80918004823009F463C0833009F435 +:106B000063C0813009F05CCE80917B0436CF12E007 +:106B1000109369069EE0F92EF0926A0683EC92E0EB +:106B20000E942B1F04E600936906F0926A066091AA +:106B3000050170910601809107019091080142E0E2 +:106B400050E00E94E020109369061DE110936A0650 +:106B500083ED92E00E942B1FC0907C04D0907D04B6 +:106B6000E0907E04F0907F0420E030E0A901C701AE +:106B7000B6010E94573B87FD1AC08CE580936906D9 +:106B800010936A068FE892E00E942B1F009369061B +:106B900010936A0660917C0470917D0480917E045C +:106BA00090917F0442E050E00E94E020A2CF8EE569 +:106BB0008093690610936A0642E050E0C701B6016F +:106BC000F3CF80917B04E6CE80917B0451CF883057 +:106BD00009F057C080917A04833031F582E08093C8 +:106BE00069061EE010936A0683EE92E00E942B1F56 +:106BF00089E68093690610936A0680917904882358 +:106C000081F08AEE92E00E942B1F80917A048230FC +:106C100091F1833099F1813009F0D2CD80917704E0 +:106C2000ACCE8EEE92E0EFCF12E0109369068EE0CC +:106C3000F82EF0926A0681EF92E00E942B1F80915D +:106C4000040109E600936906F0926A06082E000C1A +:106C5000990B0E94B721109369061DE110936A06F3 +:106C600083E093E00E942B1F0093690610936A064D +:106C700080917804C4CF809177048CCE8091770482 +:106C8000F7CE873009F09CCD82EC90E00E944A114B +:106C90008091760410926906863009F07CC007E086 +:106CA00000936A0680E193E00E942B1F19E1109384 +:106CB000690600936A06609166047091670480918A +:106CC0006804909169044AE050E00E94E02010922C +:106CD00069060FE000936A0684E193E00E942B1F8F +:106CE0001093690600936A0660916A0470916B04C0 +:106CF00080916C0490916D044AE050E00E94E02085 +:106D00001092690608E100936A0688E193E00E9408 +:106D10002B1F1093690600936A0660916E047091B0 +:106D20006F0480917004909171044AE050E00E94D9 +:106D3000E0201092690600E200936A068CE193E07D +:106D40000E942B1F1093690600936A0660917204DB +:106D50007091730480917404909175044AE050E03E +:106D60000E94E02080917604833009F49FC00CF0EB +:106D70007AC0813009F484C0823009F021CD80913D +:106D80006104823009F08DC00E9452092BE045E178 +:106D900069E084E345CA87E080936A0680E293E075 +:106DA0000E942B1F1092690612E110936A0689E374 +:106DB00093E00E942B1F8EE18093690610936A0670 +:106DC00080912701909128010E942D1F86E38093D6 +:106DD000690610936A068091290190912A010E9408 +:106DE0002D1F80E58093690610936A0680912B0120 +:106DF00090912C010E942D1F8AE6809369061093C2 +:106E00006A0680912D0190912E010E942D1F00E0B5 +:106E100020E846E160E082EF95E00E94DF0E1092EC +:106E200069061FE110936A068EE393E00E942B1F10 +:106E300080E38093690610936A0660916204709102 +:106E40006304809164049091650450E040E00E94E6 +:106E5000E02086E68093690610936A0687E493E053 +:106E60000E942B1F7FCF843091F1853009F0A8CC90 +:106E700082E00E94520929E04CE167E184E6D0C932 +:106E800080916104813041F482E00E9452092BE03C +:106E900045E169E08CE1C4C92BE045E169E08CE1A2 +:106EA00019CC2BE045E169E084E314CC80916104C6 +:106EB000833041F482E00E9452092BE045E169E011 +:106EC0008EE4AEC92BE045E169E08EE403CC80910D +:106ED0006104843041F482E00E9452092BE045E1D4 +:106EE00069E088E69DC92BE045E169E088E6F2CBE0 +:106EF0009091CD0480913101292F092E000C330B84 +:106F0000281B310987FD3395121613060CF03EC07D +:106F1000981719F08F5F809331019091CC04809184 +:106F20003001292F092E000C330B281B310987FD56 +:106F300033951216130684F5981719F08F5F809316 +:106F400030018EEA97E00E944A11809130019091C1 +:106F500031019093690680936A066091B90470913B +:106F6000BA048091BB049091BC0441E050E00E94BF +:106F7000E02080913001815090913101955E909395 +:106F8000690680936A068CE493E0C4C9232B29F236 +:106F9000981719F28150BFCF232B99F2981789F2D5 +:106FA0008150CDCF8930974008F4D1CC80917000CA +:106FB0008E7F809370008091C8049091C904909353 +:106FC0003A01809339011092C9041092C8041092BA +:106FD000D9041092D8041092D7041092CA0481E008 +:106FE0008093C60486E990E09093C5048093C4041E +:106FF00088EE93E09093C3048093C204A8CC809160 +:10700000700080FD0EC01092D8041092D704109228 +:10701000D6041092D5048AE798E10E9455090E948F +:10702000B1138091D5049091D604843B910508F466 +:1070300098CC2091CF043091D004AC01421B530B6B +:107040004430510530F181E080933B018093CE04C0 +:107050000E94BA382AE530E040E050E00E9428392A +:107060006093CD040E94BA3824E130E040E050E063 +:107070000E942839655F7F4F8F4F9F4F6093CC04EC +:107080008091D5049091D6049093D0048093CF043E +:1070900068CC8A3F9F4F08F464CC84EB90E09093D7 +:1070A000D6048093D5041092D0041092CF0459CC0A +:1070B000811130C88EEA97E00E944A1185E08093E2 +:1070C0006906125F10936A068EEF91E03BC8BB24FD +:1070D000B394CD2C811172C80C94C82D8F929F92BD +:1070E000AF92BF92CF92DF92EF92FF92CF93DF9356 +:1070F000EC01688179818A819B8161157105810527 +:10710000910521F464E279ED8BE597E02DE133EF11 +:1071100041E050E00E94283949015A019B01AC012D +:10712000A7EAB1E40E9447396B017C01ACEEB4EFF1 +:10713000A50194010E945539C60ED71EE81EF91EFE +:10714000F7FE06C081E0C81AD108E10880E8F80A15 +:10715000C882D982EA82FB82C701B6019F77DF919C +:10716000CF91FF90EF90DF90CF90BF90AF909F9026 +:107170008F9008958F929F92AF92BF92CF92DF929D +:10718000EF92FF9260913C0170913D0180913E0130 +:1071900090913F01611571058105910521F464E22B +:1071A00079ED8BE597E02DE133EF41E050E00E946F +:1071B000283949015A019B01AC01A7EAB1E40E94B8 +:1071C00047396B017C01ACEEB4EFA50194010E943C +:1071D0005539C60ED71EE81EF91EF7FE06C081E01F +:1071E000C81AD108E10880E8F80AC0923C01D092A0 +:1071F0003D01E0923E01F0923F01C701B6019F7749 +:10720000FF90EF90DF90CF90BF90AF909F908F90C6 +:10721000089560933C0170933D0180933E019093EB +:107220003F010895F999FECF92BD81BDF89A992743 +:1072300080B50895262FF999FECF1FBA92BD81BD62 +:1072400020BD0FB6F894FA9AF99A0FBE01960895E8 +:10725000052E97FB1EF400940E943F3957FD07D07E +:107260000E945A3907FC03D04EF40C943F395095D4 +:107270004095309521953F4F4F4F5F4F0895909522 +:107280008095709561957F4F8F4F9F4F08950E9415 +:107290007C39A59F900DB49F900DA49F800D911DEA +:1072A00011240895B7FF0C9447390E944739821B77 +:1072B000930B0895A1E21A2EAA1BBB1BFD010DC062 +:1072C000AA1FBB1FEE1FFF1FA217B307E407F50796 +:1072D00020F0A21BB30BE40BF50B661F771F881F72 +:1072E000991F1A9469F760957095809590959B0108 +:1072F000AC01BD01CF010895A29FB001B39FC001B1 +:10730000A39F700D811D1124911DB29F700D811DD1 +:107310001124911D08955058BB27AA270E94A33914 +:107320000C941D3B0E940F3B38F00E94163B20F04E +:1073300039F49F3F19F426F40C940C3B0EF4E095BD +:10734000E7FB0C94063BE92F0E942E3B58F3BA173B +:10735000620773078407950720F079F4A6F50C946B +:10736000503B0EF4E0950B2EBA2FA02D0B01B90166 +:1073700090010C01CA01A0011124FF27591B99F0AB +:10738000593F50F4503E68F11A16F040A22F232FB7 +:10739000342F4427585FF3CF469537952795A79507 +:1073A000F0405395C9F77EF41F16BA0B620B730BAE +:1073B000840BBAF09150A1F0FF0FBB1F661F771F1F +:1073C000881FC2F70EC0BA0F621F731F841F48F4D4 +:1073D000879577956795B795F7959E3F08F0B0CF5D +:1073E0009395880F08F09927EE0F97958795089544 +:1073F0000E94E23A08F481E008950E94113A0C9448 +:107400001D3B0E94163B58F00E940F3B40F029F4B0 +:107410005F3F29F00C94063B51110C94513B0C94A6 +:107420000C3B0E942E3B68F39923B1F3552391F353 +:10743000951B550BBB27AA2762177307840738F0E3 +:107440009F5F5F4F220F331F441FAA1FA9F335D040 +:107450000E2E3AF0E0E832D091505040E695001CF4 +:10746000CAF72BD0FE2F29D0660F771F881FBB1FAE +:10747000261737074807AB07B0E809F0BB0B802D8C +:10748000BF01FF2793585F4F3AF09E3F510578F0B8 +:107490000C94063B0C94513B5F3FE4F3983ED4F3CD +:1074A000869577956795B795F7959F5FC9F7880F8C +:1074B000911D9695879597F90895E1E0660F771FDE +:1074C000881FBB1F621773078407BA0720F0621B6F +:1074D000730B840BBA0BEE1F88F7E09508950E949A +:1074E000763A6894B1110C94513B08950E94363B52 +:1074F00088F09F5798F0B92F9927B751B0F0E1F075 +:10750000660F771F881F991F1AF0BA95C9F714C024 +:10751000B13091F00E94503BB1E008950C94503B83 +:10752000672F782F8827B85F39F0B93FCCF386955D +:1075300077956795B395D9F73EF4909580957095BA +:1075400061957F4F8F4F9F4F0895E89409C097FB37 +:107550003EF490958095709561957F4F8F4F9F4F2A +:107560009923A9F0F92F96E9BB279395F69587956E +:1075700077956795B795F111F8CFFAF4BB0F11F431 +:1075800060FF1BC06F5F7F4F8F4F9F4F16C08823D8 +:1075900011F096E911C0772321F09EE8872F762F0E +:1075A00005C0662371F096E8862F70E060E02AF04F +:1075B0009A95660F771F881FDAF7880F969587953B +:1075C00097F90895990F0008550FAA0BE0E8FEEF10 +:1075D00016161706E807F907C0F012161306E40797 +:1075E000F50798F0621B730B840B950B39F40A2690 +:1075F00061F0232B242B252B21F408950A2609F46E +:10760000A140A6958FEF811D811D089597F99F6771 +:1076100080E870E060E008959FEF80EC089500241A +:107620000A941616170618060906089500240A94E7 +:1076300012161306140605060895092E0394000C6D +:1076400011F4882352F0BB0F40F4BF2B11F460FFFC +:1076500004C06F5F7F4F8F4F9F4F089557FD905825 +:10766000440F551F59F05F3F71F04795880F97FB06 +:10767000991F61F09F3F79F08795089512161306C0 +:107680001406551FF2CF4695F1DF08C016161706EF +:107690001806991FF1CF8695710561050894089524 +:1076A000E894BB2766277727CB0197F908950E94B6 +:1076B000E23A08F48FEF08950E946F3B0C941D3B53 +:1076C0000E940F3B38F00E94163B20F0952311F0EA +:1076D0000C94063B0C940C3B11240C94513B0E94DF +:1076E0002E3B70F3959FC1F3950F50E0551F629F9D +:1076F000F001729FBB27F00DB11D639FAA27F00D0B +:10770000B11DAA1F649F6627B00DA11D661F829F31 +:107710002227B00DA11D621F739FB00DA11D621F16 +:10772000839FA00D611D221F749F3327A00D611D33 +:10773000231F849F600D211D822F762F6A2F112415 +:107740009F5750409AF0F1F088234AF0EE0FFF1F48 +:10775000BB1F661F771F881F91505040A9F79E3F9F +:10776000510580F00C94063B0C94513B5F3FE4F3D1 +:10777000983ED4F3869577956795B795F795E795F5 +:107780009F5FC1F7FE2B880F911D9695879597F9FE +:1077900008950E94E23A880B990B0895AA1BBB1B1F +:1077A00051E107C0AA1FBB1FA617B70710F0A61B01 +:1077B000B70B881F991F5A95A9F780959095BC0122 +:1077C000CD010895EE0FFF1F0590F491E02D09946F +:1077D0000E947C39332312F48A1B9B0B0C94F23BDE +:1077E0000E947C39B7FF0895821B930B08950F9375 +:1077F0001F93CF93DF93869F8001879F100D969FE5 +:10780000100D1124C8010E94133CEC01009729F0CF +:10781000A80170E060E00E94383DCE01DF91CF9179 +:107820001F910F9108950F931F93CF93DF93823091 +:10783000910510F482E090E0E0916D06F0916E0603 +:1078400030E020E0B0E0A0E0309799F42115310558 +:1078500009F44AC0281B390B24303105D8F58A8138 +:107860009B816115710589F1FB0193838283FE0180 +:1078700011C0408151810281138148175907E0F0FE +:107880004817590799F4109761F012960C931297C4 +:1078900013961C933296CF01DF91CF911F910F91D8 +:1078A000089500936D0610936E06F4CF21153105EF +:1078B00051F04217530738F0A901DB019A01BD01CD +:1078C000DF01F801C1CFEF01F9CF90936E068093ED +:1078D0006D06CDCFFE01E20FF31F819391932250ED +:1078E000310939832883D7CF20916B0630916C06FC +:1078F000232B41F4209142013091430130936C06D7 +:1079000020936B06209140013091410121153105F2 +:1079100041F42DB73EB74091440150914501241BDD +:10792000350BE0916B06F0916C06E217F307A0F4BB +:107930002E1B3F0B2817390778F0AC014E5F5F4FC5 +:107940002417350748F04E0F5F1F50936C06409385 +:107950006B06819391939FCFF0E0E0E09CCFCF93B3 +:10796000DF930097E9F0FC01329713821282A09115 +:107970006D06B0916E06ED0130E020E01097A1F4A5 +:1079800020813181820F931F20916B0630916C060C +:107990002817390709F061C0F0936C06E0936B0675 +:1079A000DF91CF910895EA01CE17DF07E8F54A810C +:1079B0005B819E0141155105B1F7E901FB83EA8323 +:1079C00049915991C40FD51FEC17FD0761F48081CF +:1079D00091810296840F951FE901998388838281A2 +:1079E00093819B838A83F0E0E0E012968D919C91D5 +:1079F00013970097B9F52D913C911197CD010296FF +:107A0000820F931F20916B0630916C06281739075F +:107A100039F6309751F510926E0610926D06B093BC +:107A20006C06A0936B06BCCFD383C2834081518187 +:107A3000840F951FC817D90761F44E5F5F4F888187 +:107A40009981480F591F518340838A819B81938379 +:107A500082832115310509F0B0CFF0936E06E093D3 +:107A60006D069ECFFD01DC01C0CF13821282D7CFFD +:107A7000DC0101C06D9341505040E0F70895F89447 +:107A8000FFCF300B300B1E295C9F40333353403205 +:107A90006666264033330B410000C84100003200C7 +:107AA00064009600C800FA0001310006018701E673 +:107AB00001201532C2010000C8B4004001010100DC +:107AC000000000006F0680000A005E018A02AC031D +:107AD0001815A015C019FF1815A115C819FF1815FC +:107AE000AE19FF1815AF19FF1815AE15D51680156C +:107AF000A8161F15D316001540158D16141520163F +:107B00000015A115C815DA16021581168F15D9169C +:107B1000F115DB1640152E15A415A619FF0001144A +:107B20000A6464323200127A0000042896100400BD +:107B30000080002000DD0E640E370E00000000F013 +:107B40000BC30BD71E990BBC0BA90B9A0B000000A3 +:107B500000331FAE1ED71ED61EDB0E820E580E6ED1 +:107B6000616E00696E66006F76660076312E303386 +:107B70000025005431322041444300484947480021 +:107B8000E6898BE69F84E69CAAE68EA500E4BC917C +:107B900000E5819C00E794B520E58E8B00E8BF8767 +:107BA00020E4BD8E00560050494400E4BC91E79C9F +:107BB000A000E5B18FE5B99500E794B5E6BA90006D +:107BC000E6A0A1E5878600E78399E993810050004C +:107BD0004900E4BC91E79CA0E697B6E997B4285326 +:107BE0002900E4BC91E79CA0E6B8A9E5BAA628E282 +:107BF00084832900E6978BE8BDACE696B9E59091C1 +:107C000000E9A1BA2BE980862D00E9A1BA2DE9800F +:107C1000862B00E5B18FE5B995E4BAAEE5BAA600CA +:107C2000E5B18FE5B995E696B9E590910031383028 +:107C300000E4BD8EE58E8BE68AA5E8ADA628562920 +:107C400000E585B300E59FBAE58786E794B5E58E44 +:107C50008B28562900E794B5E6BA90E794B5E58EEF +:107C60008B28562900E9878DE7BDAE0059455300A2 +:107C70004E4F00E586B7E7ABAFE8A1A5E581BF2889 +:107C8000E284832900E5BC80E69CBAE58AA0E7830C +:107C9000AD0050303A0050313A0050323A00503383 +:107CA0003A00414443202020313020202033353019 +:107CB000202036353020203934300054656D700076 +:107CC0004E6F77204144433A005361766500E28469 +:027CD00083002F +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:00000001FF diff --git "a/\347\224\250\345\210\260\347\232\204\345\272\223/MsTimer2.zip" "b/\347\224\250\345\210\260\347\232\204\345\272\223/MsTimer2.zip" new file mode 100644 index 0000000..2694644 Binary files /dev/null and "b/\347\224\250\345\210\260\347\232\204\345\272\223/MsTimer2.zip" differ diff --git "a/\347\224\250\345\210\260\347\232\204\345\272\223/U8g2-2020-11-15.7z" "b/\347\224\250\345\210\260\347\232\204\345\272\223/U8g2-2020-11-15.7z" new file mode 100644 index 0000000..5b96a5e Binary files /dev/null and "b/\347\224\250\345\210\260\347\232\204\345\272\223/U8g2-2020-11-15.7z" differ