document.getElementById("id_logic_version").innerHTML = "Logic version: 2018.11.26.6";
var canvas = document.getElementById("id_canvas");
canvas.addEventListener("touchstart", on_touch_start);
canvas.addEventListener("touchmove", on_touch_move);
var canvas_bounding_rect = canvas.getBoundingClientRect();

var last_pos = {x: 0, y: 0};
//------------------------------------
function on_touch_start(e)
{
	for (var i = 0; i < e.changedTouches.length; i++){
		var context = canvas.getContext("2d");
		context.beginPath();
		context.arc(e.changedTouches[i].pageX - canvas_bounding_rect.left,
					e.changedTouches[i].pageY - canvas_bounding_rect.top,
					10,
					0, 2 * Math.PI);
		context.stroke();
		last_pos.x = e.changedTouches[i].pageX;
		last_pos.y = e.changedTouches[i].pageY;
	}
}
//------------------------------------
function on_touch_move(e)
{
	e.preventDefault();
	
	for (var i = 0; i < e.changedTouches.length; i++){
		var context = canvas.getContext("2d");
		context.beginPath();
		context.lineWidth = 20;
		context.moveTo(last_pos.x - canvas_bounding_rect.left, last_pos.y - canvas_bounding_rect.top);
		context.lineTo(e.changedTouches[i].pageX - canvas_bounding_rect.left,
					e.changedTouches[i].pageY - canvas_bounding_rect.top);
		context.stroke();
		
		context.beginPath();
		context.lineWidth = 1;		
		context.arc(e.changedTouches[i].pageX - canvas_bounding_rect.left,
					e.changedTouches[i].pageY - canvas_bounding_rect.top,
					10,
					0, 2 * Math.PI);
		context.stroke();
		last_pos.x = e.changedTouches[i].pageX;
		last_pos.y = e.changedTouches[i].pageY;		
	}
	
}
@@ -76,17 +76,17 @@
 8.11.26.
-6
+7
 %22;%0Avar c
@@ -299,16 +299,17 @@
 ect();%0A%0A
+%0A
 var last
@@ -316,23 +316,19 @@
 _pos
- = %7Bx: 0, y: 0%7D
+_array = %5B%5D
 ;%0A//
@@ -686,32 +686,36 @@
 stroke();%0A%09%09
+var 
 last_pos
 .x = e.chang
@@ -694,36 +694,38 @@
 ;%0A%09%09var last_pos
-.x
  =
+ %7Bx:
  e.changedTouche
@@ -738,50 +738,123 @@
 ageX
-;%0A%09%09last_pos.y = e.changedTouches%5Bi%5D.pageY
+, %0A%09%09%09%09%09%09y: e.changedTouches%5Bi%5D.pageY, %0A%09%09%09%09%09%09id: e.changedTouches%5Bi%5D.identifier%7D;%0A%0A%09%09last_pos_array.push(last_pos)
 ;%0A%09%7D
@@ -990,32 +990,163 @@
 s.length; i++)%7B%0A
+%09%09var j = 0;%0A%09%09for (; j %3C last_pos_array.length; j++)%0A%09%09%09if (last_pos_array%5Bj%5D.id == e.changedTouches%5Bi%5D.identifier)%0A%09%09%09%09break;%0A%09%09%0A
 %09%09var context = 
@@ -1244,16 +1244,25 @@
 last_pos
+_array%5Bj%5D
 .x - can
@@ -1293,16 +1293,25 @@
 last_pos
+_array%5Bj%5D
 .y - can
@@ -1718,16 +1718,19 @@
 roke();%0A
+%09%09%0A
 %09%09last_p
@@ -1731,16 +1731,25 @@
 last_pos
+_array%5Bj%5D
 .x = e.c
@@ -1782,16 +1782,25 @@
 last_pos
+_array%5Bj%5D
 .y = e.c

Update touch.js