;(function(global, undefined) {
'use strict';

if (!global.Paw) {
    throw new Error();
}
var Paw = global.Paw;
var EVENTS = {
        TAP: 'tap',
        DOUBLE_TAP: 'doubletap',
        PRESS: 'press',
        CLICK: 'click'
};
var EVENT_INIT_DICT = {
        BUBBLES: true,
        CANCELABLE: true
};

function PawTouch(setting, eventInfo) {
    var x = eventInfo.pageX;
    var y = eventInfo.pageY;

    this.id = eventInfo.identifier;
    this.setting = setting;
    this.target = eventInfo.target;
    this.startX = x;
    this.startY = y;
    this.lastX = x;
    this.lastY = y;
    if (setting.preventClickEvent) {
        this.target.addEventListener(EVENTS.CLICK, this);
    }
}

PawTouch.EVENTS = EVENTS;
PawTouch.lastTapInfo = {
    target: null,
    updatedTime: null
};
PawTouch.updateLastTapTarget = function(target) {
    var info = PawTouch.lastTapInfo;

    info.target = target;
    info.updatedTime = Date.now();
};
PawTouch.isDoubleTap = function(target, duration) {
    var info = PawTouch.lastTapInfo;

    if (info.target === target &&
        duration >= (Date.now() - info.updatedTime)) {
            return true;
    }
    return false;
};

PawTouch.prototype = {
    constructor: PawTouch,
    move: _move,
    end: _end,
    timeout: _timeout,
    cancel: _dispose,
    dispose: _dispose,
    triggerEvent: _triggerEvent,
    handleEvent: _handleEvent
};

function _move(eventInfo) {
    this.lastX = eventInfo.pageX;
    this.lastY = eventInfo.pageY;
}

function _end(eventInfo) {
    var setting = this.setting;
    var x = this.lastX = eventInfo.pageX;
    var y = this.lastY = eventInfo.pageY;
    var dx = x - this.startX;
    var dy = y - this.startY;
    var isDoubleTap;

    if (Math.sqrt(dx * dx + dy * dy) <= setting.motionThreshold) {
        isDoubleTap = PawTouch.isDoubleTap(this.target, setting.doubleTapDuration);
        this.triggerEvent(isDoubleTap && EVENTS.DOUBLE_TAP || EVENTS.TAP, {
            pageX: x,
            pageY: y
        });
        PawTouch.updateLastTapTarget(this.target);
    }
    this.dispose();
}

function _dispose() {
    global.clearTimeout(this.cancelTimer);
    if (!this.setting.preventClickEvent) {
        this.target = null;
    }
}

function _timeout() {
    var x = this.lastX;
    var y = this.lastY;
    var dx = x - this.startX;
    var dy = y - this.startY;

    if (Math.sqrt(dx * dx + dy * dy) <= this.setting.motionThreshold) {
        this.triggerEvent(EVENTS.PRESS, {
            pageX: x,
            pageY: y
        });
    }
}

function _triggerEvent(name, option) {
    var detail = {};
    var dict = {
        bubbles: EVENT_INIT_DICT.BUBBLES,
        cancelable: EVENT_INIT_DICT.CANCELABLE,
        detail: detail
    };
    var event;

    for (var key in option) {
        detail[key] = option[key];
    }
    event = new global.CustomEvent(name, dict);
    this.target.dispatchEvent(event);
}

function _handleEvent(ev) {
    ev.preventDefault();
    this.target.removeEventListener(EVENTS.CLICK, this);
    this.target = null;
    return false;
}

// export
Paw.Touch = PawTouch;

})(this.self || global, void 0);

@@ -327,21 +327,21 @@
 etting, 
-event
+touch
 Info) %7B%0A
@@ -352,21 +352,21 @@
 var x = 
-event
+touch
 Info.pag
@@ -381,21 +381,21 @@
 var y = 
-event
+touch
 Info.pag
@@ -413,21 +413,21 @@
 is.id = 
-event
+touch
 Info.ide
@@ -481,21 +481,21 @@
 arget = 
-event
+touch
 Info.tar
@@ -1395,21 +1395,21 @@
 n _move(
-event
+touch
 Info) %7B%0A
@@ -1417,37 +1417,37 @@
    this.lastX = 
-event
+touch
 Info.pageX;%0A    
@@ -1451,37 +1451,37 @@
    this.lastY = 
-event
+touch
 Info.pageY;%0A%7D%0A%0Af
@@ -1493,21 +1493,21 @@
 on _end(
-event
+touch
 Info) %7B%0A
@@ -1563,21 +1563,21 @@
 lastX = 
-event
+touch
 Info.pag
@@ -1605,21 +1605,21 @@
 lastY = 
-event
+touch
 Info.pag
@@ -1704,32 +1704,39 @@
 leTap;%0A%0A    if (
+global.
 Math.sqrt(dx * d

Fix variable name