3161 lines
		
	
	
	
		
			96 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			3161 lines
		
	
	
	
		
			96 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- Generated by Haxe 4.3.6
 | 
						|
local _hx_hidden = {__id__=true, hx__closures=true, super=true, prototype=true, __fields__=true, __ifields__=true, __class__=true, __properties__=true, __fields__=true, __name__=true}
 | 
						|
 | 
						|
_hx_array_mt = {
 | 
						|
    __newindex = function(t,k,v)
 | 
						|
        local len = t.length
 | 
						|
        t.length =  k >= len and (k + 1) or len
 | 
						|
        rawset(t,k,v)
 | 
						|
    end
 | 
						|
}
 | 
						|
 | 
						|
function _hx_is_array(o)
 | 
						|
    return type(o) == "table"
 | 
						|
        and o.__enum__ == nil
 | 
						|
        and getmetatable(o) == _hx_array_mt
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function _hx_tab_array(tab, length)
 | 
						|
    tab.length = length
 | 
						|
    return setmetatable(tab, _hx_array_mt)
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function _hx_print_class(obj, depth)
 | 
						|
    local first = true
 | 
						|
    local result = ''
 | 
						|
    for k,v in pairs(obj) do
 | 
						|
        if _hx_hidden[k] == nil then
 | 
						|
            if first then
 | 
						|
                first = false
 | 
						|
            else
 | 
						|
                result = result .. ', '
 | 
						|
            end
 | 
						|
            if _hx_hidden[k] == nil then
 | 
						|
                result = result .. k .. ':' .. _hx_tostring(v, depth+1)
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return '{ ' .. result .. ' }'
 | 
						|
end
 | 
						|
 | 
						|
function _hx_print_enum(o, depth)
 | 
						|
    if o.length == 2 then
 | 
						|
        return o[0]
 | 
						|
    else
 | 
						|
        local str = o[0] .. "("
 | 
						|
        for i = 2, (o.length-1) do
 | 
						|
            if i ~= 2 then
 | 
						|
                str = str .. "," .. _hx_tostring(o[i], depth+1)
 | 
						|
            else
 | 
						|
                str = str .. _hx_tostring(o[i], depth+1)
 | 
						|
            end
 | 
						|
        end
 | 
						|
        return str .. ")"
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
function _hx_tostring(obj, depth)
 | 
						|
    if depth == nil then
 | 
						|
        depth = 0
 | 
						|
    elseif depth > 5 then
 | 
						|
        return "<...>"
 | 
						|
    end
 | 
						|
 | 
						|
    local tstr = _G.type(obj)
 | 
						|
    if tstr == "string" then return obj
 | 
						|
    elseif tstr == "nil" then return "null"
 | 
						|
    elseif tstr == "number" then
 | 
						|
        if obj == _G.math.POSITIVE_INFINITY then return "Infinity"
 | 
						|
        elseif obj == _G.math.NEGATIVE_INFINITY then return "-Infinity"
 | 
						|
        elseif obj == 0 then return "0"
 | 
						|
        elseif obj ~= obj then return "NaN"
 | 
						|
        else return _G.tostring(obj)
 | 
						|
        end
 | 
						|
    elseif tstr == "boolean" then return _G.tostring(obj)
 | 
						|
    elseif tstr == "userdata" then
 | 
						|
        local mt = _G.getmetatable(obj)
 | 
						|
        if mt ~= nil and mt.__tostring ~= nil then
 | 
						|
            return _G.tostring(obj)
 | 
						|
        else
 | 
						|
            return "<userdata>"
 | 
						|
        end
 | 
						|
    elseif tstr == "function" then return "<function>"
 | 
						|
    elseif tstr == "thread" then return "<thread>"
 | 
						|
    elseif tstr == "table" then
 | 
						|
        if obj.__enum__ ~= nil then
 | 
						|
            return _hx_print_enum(obj, depth)
 | 
						|
        elseif obj.toString ~= nil and not _hx_is_array(obj) then return obj:toString()
 | 
						|
        elseif _hx_is_array(obj) then
 | 
						|
            if obj.length > 5 then
 | 
						|
                return "[...]"
 | 
						|
            else
 | 
						|
                local str = ""
 | 
						|
                for i=0, (obj.length-1) do
 | 
						|
                    if i == 0 then
 | 
						|
                        str = str .. _hx_tostring(obj[i], depth+1)
 | 
						|
                    else
 | 
						|
                        str = str .. "," .. _hx_tostring(obj[i], depth+1)
 | 
						|
                    end
 | 
						|
                end
 | 
						|
                return "[" .. str .. "]"
 | 
						|
            end
 | 
						|
        elseif obj.__class__ ~= nil then
 | 
						|
            return _hx_print_class(obj, depth)
 | 
						|
        else
 | 
						|
            local buffer = {}
 | 
						|
            local ref = obj
 | 
						|
            if obj.__fields__ ~= nil then
 | 
						|
                ref = obj.__fields__
 | 
						|
            end
 | 
						|
            for k,v in pairs(ref) do
 | 
						|
                if _hx_hidden[k] == nil then
 | 
						|
                    _G.table.insert(buffer, _hx_tostring(k, depth+1) .. ' : ' .. _hx_tostring(obj[k], depth+1))
 | 
						|
                end
 | 
						|
            end
 | 
						|
 | 
						|
            return "{ " .. table.concat(buffer, ", ") .. " }"
 | 
						|
        end
 | 
						|
    else
 | 
						|
        _G.error("Unknown Lua type", 0)
 | 
						|
        return ""
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
local function _hx_obj_newindex(t,k,v)
 | 
						|
    t.__fields__[k] = true
 | 
						|
    rawset(t,k,v)
 | 
						|
end
 | 
						|
 | 
						|
local _hx_obj_mt = {__newindex=_hx_obj_newindex, __tostring=_hx_tostring}
 | 
						|
 | 
						|
local function _hx_a(...)
 | 
						|
  local __fields__ = {};
 | 
						|
  local ret = {__fields__ = __fields__};
 | 
						|
  local max = select('#',...);
 | 
						|
  local tab = {...};
 | 
						|
  local cur = 1;
 | 
						|
  while cur < max do
 | 
						|
    local v = tab[cur];
 | 
						|
    __fields__[v] = true;
 | 
						|
    ret[v] = tab[cur+1];
 | 
						|
    cur = cur + 2
 | 
						|
  end
 | 
						|
  return setmetatable(ret, _hx_obj_mt)
 | 
						|
end
 | 
						|
 | 
						|
local function _hx_e()
 | 
						|
  return setmetatable({__fields__ = {}}, _hx_obj_mt)
 | 
						|
end
 | 
						|
 | 
						|
local function _hx_o(obj)
 | 
						|
  return setmetatable(obj, _hx_obj_mt)
 | 
						|
end
 | 
						|
 | 
						|
local function _hx_new(prototype)
 | 
						|
  return setmetatable({__fields__ = {}}, {__newindex=_hx_obj_newindex, __index=prototype, __tostring=_hx_tostring})
 | 
						|
end
 | 
						|
 | 
						|
function _hx_field_arr(obj)
 | 
						|
    local res = {}
 | 
						|
    local idx = 0
 | 
						|
    if obj.__fields__ ~= nil then
 | 
						|
        obj = obj.__fields__
 | 
						|
    end
 | 
						|
    for k,v in pairs(obj) do
 | 
						|
        if _hx_hidden[k] == nil then
 | 
						|
            res[idx] = k
 | 
						|
            idx = idx + 1
 | 
						|
        end
 | 
						|
    end
 | 
						|
    return _hx_tab_array(res, idx)
 | 
						|
end
 | 
						|
 | 
						|
local _hxClasses = {}
 | 
						|
local Int = _hx_e();
 | 
						|
local Dynamic = _hx_e();
 | 
						|
local Float = _hx_e();
 | 
						|
local Bool = _hx_e();
 | 
						|
local Class = _hx_e();
 | 
						|
local Enum = _hx_e();
 | 
						|
 | 
						|
local _hx_exports = _hx_exports or {}
 | 
						|
_hx_exports["xrfragment"] = _hx_exports["xrfragment"] or _hx_e()
 | 
						|
local Array = _hx_e()
 | 
						|
__lua_lib_lrexlib_Rex = _G.require("rex_pcre2")
 | 
						|
__lua_lib_luautf8_Utf8 = _G.require("lua-utf8")
 | 
						|
local EReg = _hx_e()
 | 
						|
local Math = _hx_e()
 | 
						|
local Reflect = _hx_e()
 | 
						|
local String = _hx_e()
 | 
						|
local Std = _hx_e()
 | 
						|
local StringBuf = _hx_e()
 | 
						|
local StringTools = _hx_e()
 | 
						|
__haxe_IMap = _hx_e()
 | 
						|
__haxe_Exception = _hx_e()
 | 
						|
__haxe_Log = _hx_e()
 | 
						|
__haxe_NativeStackTrace = _hx_e()
 | 
						|
__haxe__Template_TemplateExpr = _hx_e()
 | 
						|
__haxe_iterators_ArrayIterator = _hx_e()
 | 
						|
__haxe_Template = _hx_e()
 | 
						|
__haxe_ValueException = _hx_e()
 | 
						|
__haxe_ds_List = _hx_e()
 | 
						|
__haxe_ds__List_ListNode = _hx_e()
 | 
						|
__haxe_ds_StringMap = _hx_e()
 | 
						|
__haxe_exceptions_PosException = _hx_e()
 | 
						|
__haxe_exceptions_NotImplementedException = _hx_e()
 | 
						|
__haxe_iterators_ArrayKeyValueIterator = _hx_e()
 | 
						|
__lua_Boot = _hx_e()
 | 
						|
__lua_UserData = _hx_e()
 | 
						|
__lua_Lib = _hx_e()
 | 
						|
__lua_Thread = _hx_e()
 | 
						|
__xrfragment_Filter = _hx_e()
 | 
						|
__xrfragment_Parser = _hx_e()
 | 
						|
__xrfragment_URI = _hx_e()
 | 
						|
__xrfragment_XRF = _hx_e()
 | 
						|
 | 
						|
local _hx_bind, _hx_bit, _hx_staticToInstance, _hx_funcToField, _hx_maxn, _hx_print, _hx_apply_self, _hx_box_mr, _hx_bit_clamp, _hx_table, _hx_bit_raw
 | 
						|
local _hx_pcall_default = {};
 | 
						|
local _hx_pcall_break = {};
 | 
						|
 | 
						|
Array.new = function() 
 | 
						|
  local self = _hx_new(Array.prototype)
 | 
						|
  Array.super(self)
 | 
						|
  return self
 | 
						|
end
 | 
						|
Array.super = function(self) 
 | 
						|
  _hx_tab_array(self, 0);
 | 
						|
end
 | 
						|
Array.__name__ = true
 | 
						|
Array.prototype = _hx_e();
 | 
						|
Array.prototype.concat = function(self,a) 
 | 
						|
  local _g = _hx_tab_array({}, 0);
 | 
						|
  local _g1 = 0;
 | 
						|
  local _g2 = self;
 | 
						|
  while (_g1 < _g2.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local i = _g2[_g1];
 | 
						|
    _g1 = _g1 + 1;
 | 
						|
    _g:push(i);
 | 
						|
  end;
 | 
						|
  local ret = _g;
 | 
						|
  local _g = 0;
 | 
						|
  while (_g < a.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local i = a[_g];
 | 
						|
    _g = _g + 1;
 | 
						|
    ret:push(i);
 | 
						|
  end;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
Array.prototype.join = function(self,sep) 
 | 
						|
  local tbl = ({});
 | 
						|
  local _g_current = 0;
 | 
						|
  local _g_array = self;
 | 
						|
  while (_g_current < _g_array.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g_current = _g_current + 1;
 | 
						|
    local i = _g_array[_g_current - 1];
 | 
						|
    _G.table.insert(tbl, Std.string(i));
 | 
						|
  end;
 | 
						|
  do return _G.table.concat(tbl, sep) end
 | 
						|
end
 | 
						|
Array.prototype.pop = function(self) 
 | 
						|
  if (self.length == 0) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  local ret = self[self.length - 1];
 | 
						|
  self[self.length - 1] = nil;
 | 
						|
  self.length = self.length - 1;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
Array.prototype.push = function(self,x) 
 | 
						|
  self[self.length] = x;
 | 
						|
  do return self.length end
 | 
						|
end
 | 
						|
Array.prototype.reverse = function(self) 
 | 
						|
  local tmp;
 | 
						|
  local i = 0;
 | 
						|
  while (i < Std.int(self.length / 2)) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    tmp = self[i];
 | 
						|
    self[i] = self[(self.length - i) - 1];
 | 
						|
    self[(self.length - i) - 1] = tmp;
 | 
						|
    i = i + 1;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Array.prototype.shift = function(self) 
 | 
						|
  if (self.length == 0) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  local ret = self[0];
 | 
						|
  if (self.length == 1) then 
 | 
						|
    self[0] = nil;
 | 
						|
  else
 | 
						|
    if (self.length > 1) then 
 | 
						|
      self[0] = self[1];
 | 
						|
      _G.table.remove(self, 1);
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local tmp = self;
 | 
						|
  tmp.length = tmp.length - 1;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
Array.prototype.slice = function(self,pos,_end) 
 | 
						|
  if ((_end == nil) or (_end > self.length)) then 
 | 
						|
    _end = self.length;
 | 
						|
  else
 | 
						|
    if (_end < 0) then 
 | 
						|
      _end = _G.math.fmod((self.length - (_G.math.fmod(-_end, self.length))), self.length);
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  if (pos < 0) then 
 | 
						|
    pos = _G.math.fmod((self.length - (_G.math.fmod(-pos, self.length))), self.length);
 | 
						|
  end;
 | 
						|
  if ((pos > _end) or (pos > self.length)) then 
 | 
						|
    do return _hx_tab_array({}, 0) end;
 | 
						|
  end;
 | 
						|
  local ret = _hx_tab_array({}, 0);
 | 
						|
  local _g = pos;
 | 
						|
  local _g1 = _end;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    ret:push(self[i]);
 | 
						|
  end;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
Array.prototype.sort = function(self,f) 
 | 
						|
  local i = 0;
 | 
						|
  local l = self.length;
 | 
						|
  while (i < l) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local swap = false;
 | 
						|
    local j = 0;
 | 
						|
    local max = (l - i) - 1;
 | 
						|
    while (j < max) do _hx_do_first_2 = false;
 | 
						|
      
 | 
						|
      if (f(self[j], self[j + 1]) > 0) then 
 | 
						|
        local tmp = self[j + 1];
 | 
						|
        self[j + 1] = self[j];
 | 
						|
        self[j] = tmp;
 | 
						|
        swap = true;
 | 
						|
      end;
 | 
						|
      j = j + 1;
 | 
						|
    end;
 | 
						|
    if (not swap) then 
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    i = i + 1;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Array.prototype.splice = function(self,pos,len) 
 | 
						|
  if ((len < 0) or (pos > self.length)) then 
 | 
						|
    do return _hx_tab_array({}, 0) end;
 | 
						|
  else
 | 
						|
    if (pos < 0) then 
 | 
						|
      pos = self.length - (_G.math.fmod(-pos, self.length));
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  len = Math.min(len, self.length - pos);
 | 
						|
  local ret = _hx_tab_array({}, 0);
 | 
						|
  local _g = pos;
 | 
						|
  local _g1 = pos + len;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    ret:push(self[i]);
 | 
						|
    self[i] = self[i + len];
 | 
						|
  end;
 | 
						|
  local _g = pos + len;
 | 
						|
  local _g1 = self.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    self[i] = self[i + len];
 | 
						|
  end;
 | 
						|
  local tmp = self;
 | 
						|
  tmp.length = tmp.length - len;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
Array.prototype.toString = function(self) 
 | 
						|
  local tbl = ({});
 | 
						|
  _G.table.insert(tbl, "[");
 | 
						|
  _G.table.insert(tbl, self:join(","));
 | 
						|
  _G.table.insert(tbl, "]");
 | 
						|
  do return _G.table.concat(tbl, "") end
 | 
						|
end
 | 
						|
Array.prototype.unshift = function(self,x) 
 | 
						|
  local len = self.length;
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = len;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    self[len - i] = self[(len - i) - 1];
 | 
						|
  end;
 | 
						|
  self[0] = x;
 | 
						|
end
 | 
						|
Array.prototype.insert = function(self,pos,x) 
 | 
						|
  if (pos > self.length) then 
 | 
						|
    pos = self.length;
 | 
						|
  end;
 | 
						|
  if (pos < 0) then 
 | 
						|
    pos = self.length + pos;
 | 
						|
    if (pos < 0) then 
 | 
						|
      pos = 0;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local cur_len = self.length;
 | 
						|
  while (cur_len > pos) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    self[cur_len] = self[cur_len - 1];
 | 
						|
    cur_len = cur_len - 1;
 | 
						|
  end;
 | 
						|
  self[pos] = x;
 | 
						|
end
 | 
						|
Array.prototype.remove = function(self,x) 
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = self.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    if (self[i] == x) then 
 | 
						|
      local _g = i;
 | 
						|
      local _g1 = self.length - 1;
 | 
						|
      while (_g < _g1) do _hx_do_first_2 = false;
 | 
						|
        
 | 
						|
        _g = _g + 1;
 | 
						|
        local j = _g - 1;
 | 
						|
        self[j] = self[j + 1];
 | 
						|
      end;
 | 
						|
      self[self.length - 1] = nil;
 | 
						|
      self.length = self.length - 1;
 | 
						|
      do return true end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return false end
 | 
						|
end
 | 
						|
Array.prototype.contains = function(self,x) 
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = self.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    if (self[i] == x) then 
 | 
						|
      do return true end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return false end
 | 
						|
end
 | 
						|
Array.prototype.indexOf = function(self,x,fromIndex) 
 | 
						|
  local _end = self.length;
 | 
						|
  if (fromIndex == nil) then 
 | 
						|
    fromIndex = 0;
 | 
						|
  else
 | 
						|
    if (fromIndex < 0) then 
 | 
						|
      fromIndex = self.length + fromIndex;
 | 
						|
      if (fromIndex < 0) then 
 | 
						|
        fromIndex = 0;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local _g = fromIndex;
 | 
						|
  local _g1 = _end;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    if (x == self[i]) then 
 | 
						|
      do return i end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return -1 end
 | 
						|
end
 | 
						|
Array.prototype.lastIndexOf = function(self,x,fromIndex) 
 | 
						|
  if ((fromIndex == nil) or (fromIndex >= self.length)) then 
 | 
						|
    fromIndex = self.length - 1;
 | 
						|
  else
 | 
						|
    if (fromIndex < 0) then 
 | 
						|
      fromIndex = self.length + fromIndex;
 | 
						|
      if (fromIndex < 0) then 
 | 
						|
        do return -1 end;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local i = fromIndex;
 | 
						|
  while (i >= 0) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    if (self[i] == x) then 
 | 
						|
      do return i end;
 | 
						|
    else
 | 
						|
      i = i - 1;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return -1 end
 | 
						|
end
 | 
						|
Array.prototype.copy = function(self) 
 | 
						|
  local _g = _hx_tab_array({}, 0);
 | 
						|
  local _g1 = 0;
 | 
						|
  local _g2 = self;
 | 
						|
  while (_g1 < _g2.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local i = _g2[_g1];
 | 
						|
    _g1 = _g1 + 1;
 | 
						|
    _g:push(i);
 | 
						|
  end;
 | 
						|
  do return _g end
 | 
						|
end
 | 
						|
Array.prototype.map = function(self,f) 
 | 
						|
  local _g = _hx_tab_array({}, 0);
 | 
						|
  local _g1 = 0;
 | 
						|
  local _g2 = self;
 | 
						|
  while (_g1 < _g2.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local i = _g2[_g1];
 | 
						|
    _g1 = _g1 + 1;
 | 
						|
    _g:push(f(i));
 | 
						|
  end;
 | 
						|
  do return _g end
 | 
						|
end
 | 
						|
Array.prototype.filter = function(self,f) 
 | 
						|
  local _g = _hx_tab_array({}, 0);
 | 
						|
  local _g1 = 0;
 | 
						|
  local _g2 = self;
 | 
						|
  while (_g1 < _g2.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local i = _g2[_g1];
 | 
						|
    _g1 = _g1 + 1;
 | 
						|
    if (f(i)) then 
 | 
						|
      _g:push(i);
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return _g end
 | 
						|
end
 | 
						|
Array.prototype.iterator = function(self) 
 | 
						|
  do return __haxe_iterators_ArrayIterator.new(self) end
 | 
						|
end
 | 
						|
Array.prototype.keyValueIterator = function(self) 
 | 
						|
  do return __haxe_iterators_ArrayKeyValueIterator.new(self) end
 | 
						|
end
 | 
						|
Array.prototype.resize = function(self,len) 
 | 
						|
  if (self.length < len) then 
 | 
						|
    self.length = len;
 | 
						|
  else
 | 
						|
    if (self.length > len) then 
 | 
						|
      local _g = len;
 | 
						|
      local _g1 = self.length;
 | 
						|
      while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
        
 | 
						|
        _g = _g + 1;
 | 
						|
        local i = _g - 1;
 | 
						|
        self[i] = nil;
 | 
						|
      end;
 | 
						|
      self.length = len;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
 | 
						|
Array.prototype.__class__ =  Array
 | 
						|
 | 
						|
EReg.new = function(r,opt) 
 | 
						|
  local self = _hx_new(EReg.prototype)
 | 
						|
  EReg.super(self,r,opt)
 | 
						|
  return self
 | 
						|
end
 | 
						|
EReg.super = function(self,r,opt) 
 | 
						|
  local ropt = 0;
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = __lua_lib_luautf8_Utf8.len(opt);
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    local _g = __lua_lib_luautf8_Utf8.sub(opt, i + 1, i + 1);
 | 
						|
    if (_g) == "g" then 
 | 
						|
      self.global = true;
 | 
						|
    elseif (_g) == "i" then 
 | 
						|
      ropt = _hx_bit.bor(ropt,EReg.FLAGS.CASELESS);
 | 
						|
    elseif (_g) == "m" then 
 | 
						|
      ropt = _hx_bit.bor(ropt,EReg.FLAGS.MULTILINE);
 | 
						|
    elseif (_g) == "s" then 
 | 
						|
      ropt = _hx_bit.bor(ropt,EReg.FLAGS.DOTALL);else end;
 | 
						|
  end;
 | 
						|
  ropt = _hx_bit.bor(ropt,EReg.FLAGS.UTF);
 | 
						|
  ropt = _hx_bit.bor(ropt,EReg.FLAGS.UCP);
 | 
						|
  if (self.global == nil) then 
 | 
						|
    self.global = false;
 | 
						|
  end;
 | 
						|
  self.r = __lua_lib_lrexlib_Rex.new(r, ropt);
 | 
						|
end
 | 
						|
EReg.__name__ = true
 | 
						|
EReg.prototype = _hx_e();
 | 
						|
EReg.prototype.match = function(self,s) 
 | 
						|
  if (s == nil) then 
 | 
						|
    do return false end;
 | 
						|
  else
 | 
						|
    self.m = _hx_table.pack(self.r:exec(s, 1));
 | 
						|
    self.s = s;
 | 
						|
    do return self.m[1] ~= nil end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
EReg.prototype.matched = function(self,n) 
 | 
						|
  if ((self.m[1] == nil) or (n < 0)) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("EReg::matched"),0);
 | 
						|
  else
 | 
						|
    if (n == 0) then 
 | 
						|
      local k = _G.string.sub(self.s, self.m[1], self.m[2]);
 | 
						|
      do return k end;
 | 
						|
    else
 | 
						|
      if (__lua_Boot.__instanceof(self.m[3], _G.table)) then 
 | 
						|
        local mn = 2 * (n - 1);
 | 
						|
        if (__lua_Boot.__instanceof(self.m[3][mn + 1], Bool)) then 
 | 
						|
          do return nil end;
 | 
						|
        end;
 | 
						|
        do return _G.string.sub(self.s, self.m[3][mn + 1], self.m[3][mn + 2]) end;
 | 
						|
      else
 | 
						|
        _G.error(__haxe_Exception.thrown("EReg:matched"),0);
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
EReg.prototype.matchedLeft = function(self) 
 | 
						|
  if (self.m[1] == nil) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("No string matched"),0);
 | 
						|
  end;
 | 
						|
  do return _G.string.sub(self.s, 1, self.m[1] - 1) end
 | 
						|
end
 | 
						|
EReg.prototype.matchedRight = function(self) 
 | 
						|
  if (self.m[1] == nil) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("No string matched"),0);
 | 
						|
  end;
 | 
						|
  do return _G.string.sub(self.s, self.m[2] + 1) end
 | 
						|
end
 | 
						|
EReg.prototype.matchedPos = function(self) 
 | 
						|
  local left = self:matchedLeft();
 | 
						|
  local matched = self:matched(0);
 | 
						|
  if (self.m[1] == nil) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("No string matched"),0);
 | 
						|
  end;
 | 
						|
  do return _hx_o({__fields__={pos=true,len=true},pos=__lua_lib_luautf8_Utf8.len(left),len=__lua_lib_luautf8_Utf8.len(matched)}) end
 | 
						|
end
 | 
						|
EReg.prototype.split = function(self,s) 
 | 
						|
  if (self.global) then 
 | 
						|
    do return __lua_Lib.fillArray(_hx_wrap_if_string_field(__lua_lib_lrexlib_Rex,'split')(s, self.r)) end;
 | 
						|
  else
 | 
						|
    local d = "#__delim__#";
 | 
						|
    do return __lua_Lib.fillArray(_hx_wrap_if_string_field(__lua_lib_lrexlib_Rex,'split')(self:replace(s, d), d)) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
EReg.prototype.replace = function(self,s,by) 
 | 
						|
  local chunks = String.prototype.split(by, "$$");
 | 
						|
  local _g = _hx_tab_array({}, 0);
 | 
						|
  local _g1 = 0;
 | 
						|
  while (_g1 < chunks.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local chunk = chunks[_g1];
 | 
						|
    _g1 = _g1 + 1;
 | 
						|
    _g:push(__lua_lib_lrexlib_Rex.gsub(chunk, "\\$(\\d)", "%%%1", 1));
 | 
						|
  end;
 | 
						|
  chunks = _g;
 | 
						|
  by = chunks:join("$");
 | 
						|
  do return __lua_lib_lrexlib_Rex.gsub(s, self.r, by, (function() 
 | 
						|
    local _hx_1
 | 
						|
    if (self.global) then 
 | 
						|
    _hx_1 = nil; else 
 | 
						|
    _hx_1 = 1; end
 | 
						|
    return _hx_1
 | 
						|
  end )()) end
 | 
						|
end
 | 
						|
 | 
						|
EReg.prototype.__class__ =  EReg
 | 
						|
 | 
						|
Math.new = {}
 | 
						|
Math.__name__ = true
 | 
						|
Math.isNaN = function(f) 
 | 
						|
  do return f ~= f end;
 | 
						|
end
 | 
						|
Math.isFinite = function(f) 
 | 
						|
  if (f > -_G.math.huge) then 
 | 
						|
    do return f < _G.math.huge end;
 | 
						|
  else
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Math.min = function(a,b) 
 | 
						|
  if (Math.isNaN(a) or Math.isNaN(b)) then 
 | 
						|
    do return (0/0) end;
 | 
						|
  else
 | 
						|
    do return _G.math.min(a, b) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
 | 
						|
Reflect.new = {}
 | 
						|
Reflect.__name__ = true
 | 
						|
Reflect.field = function(o,field) 
 | 
						|
  if (_G.type(o) == "string") then 
 | 
						|
    if (field == "length") then 
 | 
						|
      do return _hx_wrap_if_string_field(o,'length') end;
 | 
						|
    else
 | 
						|
      do return String.prototype[field] end;
 | 
						|
    end;
 | 
						|
  else
 | 
						|
    local _hx_status, _hx_result = pcall(function() 
 | 
						|
    
 | 
						|
        do return o[field] end;
 | 
						|
      return _hx_pcall_default
 | 
						|
    end)
 | 
						|
    if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
    elseif not _hx_status then 
 | 
						|
      local _g = _hx_result;
 | 
						|
      do return nil end;
 | 
						|
    elseif _hx_result ~= _hx_pcall_default then
 | 
						|
      return _hx_result
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Reflect.getProperty = function(o,field) 
 | 
						|
  if (o == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  else
 | 
						|
    if ((o.__properties__ ~= nil) and (Reflect.field(o, Std.string("get_") .. Std.string(field)) ~= nil)) then 
 | 
						|
      do return Reflect.callMethod(o,Reflect.field(o, Std.string("get_") .. Std.string(field)),_hx_tab_array({}, 0)) end;
 | 
						|
    else
 | 
						|
      do return Reflect.field(o, field) end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Reflect.callMethod = function(o,func,args) 
 | 
						|
  if ((args == nil) or (args.length == 0)) then 
 | 
						|
    do return func(o) end;
 | 
						|
  else
 | 
						|
    local self_arg = false;
 | 
						|
    if ((o ~= nil) and (o.__name__ == nil)) then 
 | 
						|
      self_arg = true;
 | 
						|
    end;
 | 
						|
    if (self_arg) then 
 | 
						|
      do return func(o, _hx_table.unpack(args, 0, args.length - 1)) end;
 | 
						|
    else
 | 
						|
      do return func(_hx_table.unpack(args, 0, args.length - 1)) end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Reflect.fields = function(o) 
 | 
						|
  if (_G.type(o) == "string") then 
 | 
						|
    do return Reflect.fields(String.prototype) end;
 | 
						|
  else
 | 
						|
    do return _hx_field_arr(o) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Reflect.isObject = function(v) 
 | 
						|
  if (v == nil) then 
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
  local t = _G.type(v);
 | 
						|
  if (not ((t == "string") or ((t == "table") and (v.__enum__ == nil)))) then 
 | 
						|
    if (t == "function") then 
 | 
						|
      do return ((function() 
 | 
						|
        local _hx_1
 | 
						|
        if (_G.type(v) ~= "table") then 
 | 
						|
        _hx_1 = false; else 
 | 
						|
        _hx_1 = v.__name__; end
 | 
						|
        return _hx_1
 | 
						|
      end )() or (function() 
 | 
						|
        local _hx_2
 | 
						|
        if (_G.type(v) ~= "table") then 
 | 
						|
        _hx_2 = false; else 
 | 
						|
        _hx_2 = v.__ename__; end
 | 
						|
        return _hx_2
 | 
						|
      end )()) ~= nil end;
 | 
						|
    else
 | 
						|
      do return false end;
 | 
						|
    end;
 | 
						|
  else
 | 
						|
    do return true end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Reflect.deleteField = function(o,field) 
 | 
						|
  if (not ((function() 
 | 
						|
    local _hx_1
 | 
						|
    if ((_G.type(o) == "function") and not ((function() 
 | 
						|
      local _hx_2
 | 
						|
      if (_G.type(o) ~= "table") then 
 | 
						|
      _hx_2 = false; else 
 | 
						|
      _hx_2 = o.__name__; end
 | 
						|
      return _hx_2
 | 
						|
    end )() or (function() 
 | 
						|
      local _hx_3
 | 
						|
      if (_G.type(o) ~= "table") then 
 | 
						|
      _hx_3 = false; else 
 | 
						|
      _hx_3 = o.__ename__; end
 | 
						|
      return _hx_3
 | 
						|
    end )())) then 
 | 
						|
    _hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[field] ~= nil) or (field == "length"))) then 
 | 
						|
    _hx_1 = true; elseif (o.__fields__ ~= nil) then 
 | 
						|
    _hx_1 = o.__fields__[field] ~= nil; else 
 | 
						|
    _hx_1 = o[field] ~= nil; end
 | 
						|
    return _hx_1
 | 
						|
  end )())) then 
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
  o[field] = nil;
 | 
						|
  o.__fields__[field] = nil;
 | 
						|
  do return true end;
 | 
						|
end
 | 
						|
Reflect.copy = function(o) 
 | 
						|
  if (o == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  local o2 = _hx_e();
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = Reflect.fields(o);
 | 
						|
  while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local f = _g1[_g];
 | 
						|
    _g = _g + 1;
 | 
						|
    o2[f] = Reflect.field(o, f);
 | 
						|
  end;
 | 
						|
  do return o2 end;
 | 
						|
end
 | 
						|
 | 
						|
String.new = function(string) 
 | 
						|
  local self = _hx_new(String.prototype)
 | 
						|
  String.super(self,string)
 | 
						|
  self = string
 | 
						|
  return self
 | 
						|
end
 | 
						|
String.super = function(self,string) 
 | 
						|
end
 | 
						|
String.__name__ = true
 | 
						|
String.__index = function(s,k) 
 | 
						|
  if (k == "length") then 
 | 
						|
    do return __lua_lib_luautf8_Utf8.len(s) end;
 | 
						|
  else
 | 
						|
    local o = String.prototype;
 | 
						|
    local field = k;
 | 
						|
    if ((function() 
 | 
						|
      local _hx_1
 | 
						|
      if ((_G.type(o) == "function") and not ((function() 
 | 
						|
        local _hx_2
 | 
						|
        if (_G.type(o) ~= "table") then 
 | 
						|
        _hx_2 = false; else 
 | 
						|
        _hx_2 = o.__name__; end
 | 
						|
        return _hx_2
 | 
						|
      end )() or (function() 
 | 
						|
        local _hx_3
 | 
						|
        if (_G.type(o) ~= "table") then 
 | 
						|
        _hx_3 = false; else 
 | 
						|
        _hx_3 = o.__ename__; end
 | 
						|
        return _hx_3
 | 
						|
      end )())) then 
 | 
						|
      _hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[field] ~= nil) or (field == "length"))) then 
 | 
						|
      _hx_1 = true; elseif (o.__fields__ ~= nil) then 
 | 
						|
      _hx_1 = o.__fields__[field] ~= nil; else 
 | 
						|
      _hx_1 = o[field] ~= nil; end
 | 
						|
      return _hx_1
 | 
						|
    end )()) then 
 | 
						|
      do return String.prototype[k] end;
 | 
						|
    else
 | 
						|
      if (String.__oldindex ~= nil) then 
 | 
						|
        if (_G.type(String.__oldindex) == "function") then 
 | 
						|
          do return String.__oldindex(s, k) end;
 | 
						|
        else
 | 
						|
          if (_G.type(String.__oldindex) == "table") then 
 | 
						|
            do return String.__oldindex[k] end;
 | 
						|
          end;
 | 
						|
        end;
 | 
						|
        do return nil end;
 | 
						|
      else
 | 
						|
        do return nil end;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
String.indexOfEmpty = function(s,startIndex) 
 | 
						|
  local length = __lua_lib_luautf8_Utf8.len(s);
 | 
						|
  if (startIndex < 0) then 
 | 
						|
    startIndex = length + startIndex;
 | 
						|
    if (startIndex < 0) then 
 | 
						|
      startIndex = 0;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  if (startIndex > length) then 
 | 
						|
    do return length end;
 | 
						|
  else
 | 
						|
    do return startIndex end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
String.fromCharCode = function(code) 
 | 
						|
  do return __lua_lib_luautf8_Utf8.char(code) end;
 | 
						|
end
 | 
						|
String.prototype = _hx_e();
 | 
						|
String.prototype.toUpperCase = function(self) 
 | 
						|
  do return __lua_lib_luautf8_Utf8.upper(self) end
 | 
						|
end
 | 
						|
String.prototype.toLowerCase = function(self) 
 | 
						|
  do return __lua_lib_luautf8_Utf8.lower(self) end
 | 
						|
end
 | 
						|
String.prototype.indexOf = function(self,str,startIndex) 
 | 
						|
  if (startIndex == nil) then 
 | 
						|
    startIndex = 1;
 | 
						|
  else
 | 
						|
    startIndex = startIndex + 1;
 | 
						|
  end;
 | 
						|
  if (str == "") then 
 | 
						|
    do return String.indexOfEmpty(self, startIndex - 1) end;
 | 
						|
  end;
 | 
						|
  local r = __lua_lib_luautf8_Utf8.find(self, str, startIndex, true);
 | 
						|
  if ((r ~= nil) and (r > 0)) then 
 | 
						|
    do return r - 1 end;
 | 
						|
  else
 | 
						|
    do return -1 end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
String.prototype.lastIndexOf = function(self,str,startIndex) 
 | 
						|
  local ret = -1;
 | 
						|
  if (startIndex == nil) then 
 | 
						|
    startIndex = __lua_lib_luautf8_Utf8.len(self);
 | 
						|
  end;
 | 
						|
  while (true) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local p = String.prototype.indexOf(self, str, ret + 1);
 | 
						|
    if (((p == -1) or (p > startIndex)) or (p == ret)) then 
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    ret = p;
 | 
						|
  end;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
String.prototype.split = function(self,delimiter) 
 | 
						|
  local idx = 1;
 | 
						|
  local ret = _hx_tab_array({}, 0);
 | 
						|
  while (idx ~= nil) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local newidx = 0;
 | 
						|
    if (__lua_lib_luautf8_Utf8.len(delimiter) > 0) then 
 | 
						|
      newidx = __lua_lib_luautf8_Utf8.find(self, delimiter, idx, true);
 | 
						|
    else
 | 
						|
      if (idx >= __lua_lib_luautf8_Utf8.len(self)) then 
 | 
						|
        newidx = nil;
 | 
						|
      else
 | 
						|
        newidx = idx + 1;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    if (newidx ~= nil) then 
 | 
						|
      local match = __lua_lib_luautf8_Utf8.sub(self, idx, newidx - 1);
 | 
						|
      ret:push(match);
 | 
						|
      idx = newidx + __lua_lib_luautf8_Utf8.len(delimiter);
 | 
						|
    else
 | 
						|
      ret:push(__lua_lib_luautf8_Utf8.sub(self, idx, __lua_lib_luautf8_Utf8.len(self)));
 | 
						|
      idx = nil;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return ret end
 | 
						|
end
 | 
						|
String.prototype.toString = function(self) 
 | 
						|
  do return self end
 | 
						|
end
 | 
						|
String.prototype.substring = function(self,startIndex,endIndex) 
 | 
						|
  if (endIndex == nil) then 
 | 
						|
    endIndex = __lua_lib_luautf8_Utf8.len(self);
 | 
						|
  end;
 | 
						|
  if (endIndex < 0) then 
 | 
						|
    endIndex = 0;
 | 
						|
  end;
 | 
						|
  if (startIndex < 0) then 
 | 
						|
    startIndex = 0;
 | 
						|
  end;
 | 
						|
  if (endIndex < startIndex) then 
 | 
						|
    do return __lua_lib_luautf8_Utf8.sub(self, endIndex + 1, startIndex) end;
 | 
						|
  else
 | 
						|
    do return __lua_lib_luautf8_Utf8.sub(self, startIndex + 1, endIndex) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
String.prototype.charAt = function(self,index) 
 | 
						|
  do return __lua_lib_luautf8_Utf8.sub(self, index + 1, index + 1) end
 | 
						|
end
 | 
						|
String.prototype.charCodeAt = function(self,index) 
 | 
						|
  do return __lua_lib_luautf8_Utf8.byte(self, index + 1) end
 | 
						|
end
 | 
						|
String.prototype.substr = function(self,pos,len) 
 | 
						|
  if ((len == nil) or (len > (pos + __lua_lib_luautf8_Utf8.len(self)))) then 
 | 
						|
    len = __lua_lib_luautf8_Utf8.len(self);
 | 
						|
  else
 | 
						|
    if (len < 0) then 
 | 
						|
      len = __lua_lib_luautf8_Utf8.len(self) + len;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  if (pos < 0) then 
 | 
						|
    pos = __lua_lib_luautf8_Utf8.len(self) + pos;
 | 
						|
  end;
 | 
						|
  if (pos < 0) then 
 | 
						|
    pos = 0;
 | 
						|
  end;
 | 
						|
  do return __lua_lib_luautf8_Utf8.sub(self, pos + 1, pos + len) end
 | 
						|
end
 | 
						|
 | 
						|
String.prototype.__class__ =  String
 | 
						|
 | 
						|
Std.new = {}
 | 
						|
Std.__name__ = true
 | 
						|
Std.string = function(s) 
 | 
						|
  do return _hx_tostring(s, 0) end;
 | 
						|
end
 | 
						|
Std.int = function(x) 
 | 
						|
  if (not Math.isFinite(x) or Math.isNaN(x)) then 
 | 
						|
    do return 0 end;
 | 
						|
  else
 | 
						|
    do return _hx_bit_clamp(x) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
Std.parseInt = function(x) 
 | 
						|
  if (x == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  local sign, numString = _G.string.match(x, "^%s*([%-+]?)0[xX]([%da-fA-F]*)");
 | 
						|
  if (numString ~= nil) then 
 | 
						|
    if (sign == "-") then 
 | 
						|
      do return -_G.tonumber(numString, 16) end;
 | 
						|
    else
 | 
						|
      do return _G.tonumber(numString, 16) end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local intMatch = _G.string.match(x, "^%s*[%-+]?%d*");
 | 
						|
  if (intMatch == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  do return _G.tonumber(intMatch) end;
 | 
						|
end
 | 
						|
Std.parseFloat = function(x) 
 | 
						|
  if ((x == nil) or (x == "")) then 
 | 
						|
    do return (0/0) end;
 | 
						|
  end;
 | 
						|
  local digitMatch = _G.string.match(x, "^%s*[%.%-+]?[0-9]%d*");
 | 
						|
  if (digitMatch == nil) then 
 | 
						|
    do return (0/0) end;
 | 
						|
  end;
 | 
						|
  x = String.prototype.substr(x, __lua_lib_luautf8_Utf8.len(digitMatch));
 | 
						|
  local decimalMatch = _G.string.match(x, "^%.%d*");
 | 
						|
  if (decimalMatch == nil) then 
 | 
						|
    decimalMatch = "";
 | 
						|
  end;
 | 
						|
  x = String.prototype.substr(x, __lua_lib_luautf8_Utf8.len(decimalMatch));
 | 
						|
  local eMatch = _G.string.match(x, "^[eE][+%-]?%d+");
 | 
						|
  if (eMatch == nil) then 
 | 
						|
    eMatch = "";
 | 
						|
  end;
 | 
						|
  local result = _G.tonumber(Std.string(Std.string(digitMatch) .. Std.string(decimalMatch)) .. Std.string(eMatch));
 | 
						|
  if (result ~= nil) then 
 | 
						|
    do return result end;
 | 
						|
  else
 | 
						|
    do return (0/0) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
 | 
						|
StringBuf.new = function() 
 | 
						|
  local self = _hx_new(StringBuf.prototype)
 | 
						|
  StringBuf.super(self)
 | 
						|
  return self
 | 
						|
end
 | 
						|
StringBuf.super = function(self) 
 | 
						|
  self.b = ({});
 | 
						|
  self.length = 0;
 | 
						|
end
 | 
						|
StringBuf.__name__ = true
 | 
						|
StringBuf.prototype = _hx_e();
 | 
						|
 | 
						|
StringBuf.prototype.__class__ =  StringBuf
 | 
						|
 | 
						|
StringTools.new = {}
 | 
						|
StringTools.__name__ = true
 | 
						|
StringTools.urlDecode = function(s) 
 | 
						|
  s = _G.string.gsub(s, "+", " ");
 | 
						|
  s = _G.string.gsub(s, "%%(%x%x)", function(h) 
 | 
						|
    do return _G.string.char(_G.tonumber(h, 16)) end;
 | 
						|
  end);
 | 
						|
  s = _G.string.gsub(s, "\r\n", "\n");
 | 
						|
  do return s end;
 | 
						|
end
 | 
						|
StringTools.isSpace = function(s,pos) 
 | 
						|
  if (((__lua_lib_luautf8_Utf8.len(s) == 0) or (pos < 0)) or (pos >= __lua_lib_luautf8_Utf8.len(s))) then 
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
  local c = __lua_lib_luautf8_Utf8.byte(s, pos + 1);
 | 
						|
  if (not ((c > 8) and (c < 14))) then 
 | 
						|
    do return c == 32 end;
 | 
						|
  else
 | 
						|
    do return true end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
StringTools.ltrim = function(s) 
 | 
						|
  local l = __lua_lib_luautf8_Utf8.len(s);
 | 
						|
  local r = 0;
 | 
						|
  while ((r < l) and StringTools.isSpace(s, r)) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    r = r + 1;
 | 
						|
  end;
 | 
						|
  if (r > 0) then 
 | 
						|
    do return String.prototype.substr(s, r, l - r) end;
 | 
						|
  else
 | 
						|
    do return s end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
StringTools.rtrim = function(s) 
 | 
						|
  local l = __lua_lib_luautf8_Utf8.len(s);
 | 
						|
  local r = 0;
 | 
						|
  while ((r < l) and StringTools.isSpace(s, (l - r) - 1)) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    r = r + 1;
 | 
						|
  end;
 | 
						|
  if (r > 0) then 
 | 
						|
    do return String.prototype.substr(s, 0, l - r) end;
 | 
						|
  else
 | 
						|
    do return s end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
StringTools.trim = function(s) 
 | 
						|
  do return StringTools.ltrim(StringTools.rtrim(s)) end;
 | 
						|
end
 | 
						|
StringTools.replace = function(s,sub,by) 
 | 
						|
  do return String.prototype.split(s, sub):join(by) end;
 | 
						|
end
 | 
						|
 | 
						|
__haxe_IMap.new = {}
 | 
						|
__haxe_IMap.__name__ = true
 | 
						|
 | 
						|
__haxe_Exception.new = function(message,previous,native) 
 | 
						|
  local self = _hx_new(__haxe_Exception.prototype)
 | 
						|
  __haxe_Exception.super(self,message,previous,native)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_Exception.super = function(self,message,previous,native) 
 | 
						|
  self.__skipStack = 0;
 | 
						|
  self.__exceptionMessage = message;
 | 
						|
  self.__previousException = previous;
 | 
						|
  if (native ~= nil) then 
 | 
						|
    self.__nativeException = native;
 | 
						|
    self.__nativeStack = __haxe_NativeStackTrace.exceptionStack();
 | 
						|
  else
 | 
						|
    self.__nativeException = self;
 | 
						|
    self.__nativeStack = __haxe_NativeStackTrace.callStack();
 | 
						|
    self.__skipStack = 1;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_Exception.__name__ = true
 | 
						|
__haxe_Exception.caught = function(value) 
 | 
						|
  if (__lua_Boot.__instanceof(value, __haxe_Exception)) then 
 | 
						|
    do return value end;
 | 
						|
  else
 | 
						|
    do return __haxe_ValueException.new(value, nil, value) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_Exception.thrown = function(value) 
 | 
						|
  if (__lua_Boot.__instanceof(value, __haxe_Exception)) then 
 | 
						|
    do return value:get_native() end;
 | 
						|
  else
 | 
						|
    local e = __haxe_ValueException.new(value);
 | 
						|
    e.__skipStack = e.__skipStack + 1;
 | 
						|
    do return e end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_Exception.prototype = _hx_e();
 | 
						|
__haxe_Exception.prototype.unwrap = function(self) 
 | 
						|
  do return self.__nativeException end
 | 
						|
end
 | 
						|
__haxe_Exception.prototype.toString = function(self) 
 | 
						|
  do return self:get_message() end
 | 
						|
end
 | 
						|
__haxe_Exception.prototype.get_message = function(self) 
 | 
						|
  do return self.__exceptionMessage end
 | 
						|
end
 | 
						|
__haxe_Exception.prototype.get_native = function(self) 
 | 
						|
  do return self.__nativeException end
 | 
						|
end
 | 
						|
 | 
						|
__haxe_Exception.prototype.__class__ =  __haxe_Exception
 | 
						|
 | 
						|
__haxe_Exception.prototype.__properties__ =  {get_native="get_native",get_message="get_message"}
 | 
						|
 | 
						|
__haxe_Log.new = {}
 | 
						|
__haxe_Log.__name__ = true
 | 
						|
__haxe_Log.formatOutput = function(v,infos) 
 | 
						|
  local str = Std.string(v);
 | 
						|
  if (infos == nil) then 
 | 
						|
    do return str end;
 | 
						|
  end;
 | 
						|
  local pstr = Std.string(Std.string(infos.fileName) .. Std.string(":")) .. Std.string(infos.lineNumber);
 | 
						|
  if (infos.customParams ~= nil) then 
 | 
						|
    local _g = 0;
 | 
						|
    local _g1 = infos.customParams;
 | 
						|
    while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local v = _g1[_g];
 | 
						|
      _g = _g + 1;
 | 
						|
      str = Std.string(str) .. Std.string((Std.string(", ") .. Std.string(Std.string(v))));
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return Std.string(Std.string(pstr) .. Std.string(": ")) .. Std.string(str) end;
 | 
						|
end
 | 
						|
__haxe_Log.trace = function(v,infos) 
 | 
						|
  local str = __haxe_Log.formatOutput(v, infos);
 | 
						|
  _hx_print(str);
 | 
						|
end
 | 
						|
 | 
						|
__haxe_NativeStackTrace.new = {}
 | 
						|
__haxe_NativeStackTrace.__name__ = true
 | 
						|
__haxe_NativeStackTrace.saveStack = function(exception) 
 | 
						|
end
 | 
						|
__haxe_NativeStackTrace.callStack = function() 
 | 
						|
  local _g = debug.traceback();
 | 
						|
  if (_g == nil) then 
 | 
						|
    do return _hx_tab_array({}, 0) end;
 | 
						|
  else
 | 
						|
    local s = _g;
 | 
						|
    do return String.prototype.split(s, "\n"):slice(3) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_NativeStackTrace.exceptionStack = function() 
 | 
						|
  do return _hx_tab_array({}, 0) end;
 | 
						|
end
 | 
						|
_hxClasses["haxe._Template.TemplateExpr"] = { __ename__ = true, __constructs__ = _hx_tab_array({[0]="OpVar","OpExpr","OpIf","OpStr","OpBlock","OpForeach","OpMacro"},7)}
 | 
						|
__haxe__Template_TemplateExpr = _hxClasses["haxe._Template.TemplateExpr"];
 | 
						|
__haxe__Template_TemplateExpr.OpVar = function(v) local _x = _hx_tab_array({[0]="OpVar",0,v,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpExpr = function(expr) local _x = _hx_tab_array({[0]="OpExpr",1,expr,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpIf = function(expr,eif,eelse) local _x = _hx_tab_array({[0]="OpIf",2,expr,eif,eelse,__enum__=__haxe__Template_TemplateExpr}, 5); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpStr = function(str) local _x = _hx_tab_array({[0]="OpStr",3,str,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpBlock = function(l) local _x = _hx_tab_array({[0]="OpBlock",4,l,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpForeach = function(expr,loop) local _x = _hx_tab_array({[0]="OpForeach",5,expr,loop,__enum__=__haxe__Template_TemplateExpr}, 4); return _x; end 
 | 
						|
__haxe__Template_TemplateExpr.OpMacro = function(name,params) local _x = _hx_tab_array({[0]="OpMacro",6,name,params,__enum__=__haxe__Template_TemplateExpr}, 4); return _x; end 
 | 
						|
 | 
						|
__haxe_iterators_ArrayIterator.new = function(array) 
 | 
						|
  local self = _hx_new(__haxe_iterators_ArrayIterator.prototype)
 | 
						|
  __haxe_iterators_ArrayIterator.super(self,array)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_iterators_ArrayIterator.super = function(self,array) 
 | 
						|
  self.current = 0;
 | 
						|
  self.array = array;
 | 
						|
end
 | 
						|
__haxe_iterators_ArrayIterator.__name__ = true
 | 
						|
__haxe_iterators_ArrayIterator.prototype = _hx_e();
 | 
						|
__haxe_iterators_ArrayIterator.prototype.hasNext = function(self) 
 | 
						|
  do return self.current < self.array.length end
 | 
						|
end
 | 
						|
__haxe_iterators_ArrayIterator.prototype.next = function(self) 
 | 
						|
  do return self.array[(function() 
 | 
						|
  local _hx_obj = self;
 | 
						|
  local _hx_fld = 'current';
 | 
						|
  local _ = _hx_obj[_hx_fld];
 | 
						|
  _hx_obj[_hx_fld] = _hx_obj[_hx_fld]  + 1;
 | 
						|
   return _;
 | 
						|
   end)()] end
 | 
						|
end
 | 
						|
 | 
						|
__haxe_iterators_ArrayIterator.prototype.__class__ =  __haxe_iterators_ArrayIterator
 | 
						|
 | 
						|
__haxe_Template.new = function(str) 
 | 
						|
  local self = _hx_new(__haxe_Template.prototype)
 | 
						|
  __haxe_Template.super(self,str)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_Template.super = function(self,str) 
 | 
						|
  local tokens = self:parseTokens(str);
 | 
						|
  self.expr = self:parseBlock(tokens);
 | 
						|
  if (not tokens:isEmpty()) then 
 | 
						|
    _G.error(__haxe_Exception.thrown(Std.string(Std.string("Unexpected '") .. Std.string(Std.string(tokens:first().s))) .. Std.string("'")),0);
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_Template.__name__ = true
 | 
						|
__haxe_Template.prototype = _hx_e();
 | 
						|
__haxe_Template.prototype.execute = function(self,context,macros) 
 | 
						|
  self.macros = (function() 
 | 
						|
    local _hx_1
 | 
						|
    if (macros == nil) then 
 | 
						|
    _hx_1 = _hx_e(); else 
 | 
						|
    _hx_1 = macros; end
 | 
						|
    return _hx_1
 | 
						|
  end )();
 | 
						|
  self.context = context;
 | 
						|
  self.stack = __haxe_ds_List.new();
 | 
						|
  self.buf = StringBuf.new();
 | 
						|
  self:run(self.expr);
 | 
						|
  do return _G.table.concat(self.buf.b) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.resolve = function(self,v) 
 | 
						|
  if (v == "__current__") then 
 | 
						|
    do return self.context end;
 | 
						|
  end;
 | 
						|
  if (Reflect.isObject(self.context)) then 
 | 
						|
    local value = Reflect.getProperty(self.context, v);
 | 
						|
    local tmp;
 | 
						|
    if (value == nil) then 
 | 
						|
      local o = self.context;
 | 
						|
      tmp = (function() 
 | 
						|
        local _hx_1
 | 
						|
        if ((_G.type(o) == "function") and not ((function() 
 | 
						|
          local _hx_2
 | 
						|
          if (_G.type(o) ~= "table") then 
 | 
						|
          _hx_2 = false; else 
 | 
						|
          _hx_2 = o.__name__; end
 | 
						|
          return _hx_2
 | 
						|
        end )() or (function() 
 | 
						|
          local _hx_3
 | 
						|
          if (_G.type(o) ~= "table") then 
 | 
						|
          _hx_3 = false; else 
 | 
						|
          _hx_3 = o.__ename__; end
 | 
						|
          return _hx_3
 | 
						|
        end )())) then 
 | 
						|
        _hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[v] ~= nil) or (v == "length"))) then 
 | 
						|
        _hx_1 = true; elseif (o.__fields__ ~= nil) then 
 | 
						|
        _hx_1 = o.__fields__[v] ~= nil; else 
 | 
						|
        _hx_1 = o[v] ~= nil; end
 | 
						|
        return _hx_1
 | 
						|
      end )();
 | 
						|
    else
 | 
						|
      tmp = true;
 | 
						|
    end;
 | 
						|
    if (tmp) then 
 | 
						|
      do return value end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local _g_head = self.stack.h;
 | 
						|
  while (_g_head ~= nil) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local val = _g_head.item;
 | 
						|
    _g_head = _g_head.next;
 | 
						|
    local ctx = val;
 | 
						|
    local value = Reflect.getProperty(ctx, v);
 | 
						|
    local tmp;
 | 
						|
    if (value == nil) then 
 | 
						|
      local o = ctx;
 | 
						|
      tmp = (function() 
 | 
						|
        local _hx_4
 | 
						|
        if ((_G.type(o) == "function") and not ((function() 
 | 
						|
          local _hx_5
 | 
						|
          if (_G.type(o) ~= "table") then 
 | 
						|
          _hx_5 = false; else 
 | 
						|
          _hx_5 = o.__name__; end
 | 
						|
          return _hx_5
 | 
						|
        end )() or (function() 
 | 
						|
          local _hx_6
 | 
						|
          if (_G.type(o) ~= "table") then 
 | 
						|
          _hx_6 = false; else 
 | 
						|
          _hx_6 = o.__ename__; end
 | 
						|
          return _hx_6
 | 
						|
        end )())) then 
 | 
						|
        _hx_4 = false; elseif ((_G.type(o) == "string") and ((String.prototype[v] ~= nil) or (v == "length"))) then 
 | 
						|
        _hx_4 = true; elseif (o.__fields__ ~= nil) then 
 | 
						|
        _hx_4 = o.__fields__[v] ~= nil; else 
 | 
						|
        _hx_4 = o[v] ~= nil; end
 | 
						|
        return _hx_4
 | 
						|
      end )();
 | 
						|
    else
 | 
						|
      tmp = true;
 | 
						|
    end;
 | 
						|
    if (tmp) then 
 | 
						|
      do return value end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return Reflect.field(__haxe_Template.globals, v) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.parseTokens = function(self,data) 
 | 
						|
  local tokens = __haxe_ds_List.new();
 | 
						|
  local _hx_continue_1 = false;
 | 
						|
  while (__haxe_Template.splitter:match(data)) do _hx_do_first_1 = false;
 | 
						|
    repeat 
 | 
						|
    local p = __haxe_Template.splitter:matchedPos();
 | 
						|
    if (p.pos > 0) then 
 | 
						|
      tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=String.prototype.substr(data, 0, p.pos),s=true,l=nil}));
 | 
						|
    end;
 | 
						|
    if (__lua_lib_luautf8_Utf8.byte(data, p.pos + 1) == 58) then 
 | 
						|
      tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=String.prototype.substr(data, p.pos + 2, p.len - 4),s=false,l=nil}));
 | 
						|
      data = __haxe_Template.splitter:matchedRight();
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    local parp = p.pos + p.len;
 | 
						|
    local npar = 1;
 | 
						|
    local params = _hx_tab_array({}, 0);
 | 
						|
    local part = "";
 | 
						|
    while (true) do _hx_do_first_2 = false;
 | 
						|
      
 | 
						|
      local c = __lua_lib_luautf8_Utf8.byte(data, parp + 1);
 | 
						|
      parp = parp + 1;
 | 
						|
      if (c == 40) then 
 | 
						|
        npar = npar + 1;
 | 
						|
      else
 | 
						|
        if (c == 41) then 
 | 
						|
          npar = npar - 1;
 | 
						|
          if (npar <= 0) then 
 | 
						|
            break;
 | 
						|
          end;
 | 
						|
        else
 | 
						|
          if (c == nil) then 
 | 
						|
            _G.error(__haxe_Exception.thrown("Unclosed macro parenthesis"),0);
 | 
						|
          end;
 | 
						|
        end;
 | 
						|
      end;
 | 
						|
      if ((c == 44) and (npar == 1)) then 
 | 
						|
        params:push(part);
 | 
						|
        part = "";
 | 
						|
      else
 | 
						|
        part = Std.string(part) .. Std.string(__lua_lib_luautf8_Utf8.char(c));
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    params:push(part);
 | 
						|
    tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=__haxe_Template.splitter:matched(2),s=false,l=params}));
 | 
						|
    data = String.prototype.substr(data, parp, __lua_lib_luautf8_Utf8.len(data) - parp);until true
 | 
						|
    if _hx_continue_1 then 
 | 
						|
    _hx_continue_1 = false;
 | 
						|
    break;
 | 
						|
    end;
 | 
						|
    
 | 
						|
  end;
 | 
						|
  if (__lua_lib_luautf8_Utf8.len(data) > 0) then 
 | 
						|
    tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=data,s=true,l=nil}));
 | 
						|
  end;
 | 
						|
  do return tokens end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.parseBlock = function(self,tokens) 
 | 
						|
  local l = __haxe_ds_List.new();
 | 
						|
  while (true) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local t = tokens:first();
 | 
						|
    if (t == nil) then 
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    if (not t.s and (((t.p == "end") or (t.p == "else")) or (String.prototype.substr(t.p, 0, 7) == "elseif "))) then 
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    l:add(self:parse(tokens));
 | 
						|
  end;
 | 
						|
  if (l.length == 1) then 
 | 
						|
    do return l:first() end;
 | 
						|
  end;
 | 
						|
  do return __haxe__Template_TemplateExpr.OpBlock(l) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.parse = function(self,tokens) 
 | 
						|
  local t = tokens:pop();
 | 
						|
  local p = t.p;
 | 
						|
  if (t.s) then 
 | 
						|
    do return __haxe__Template_TemplateExpr.OpStr(p) end;
 | 
						|
  end;
 | 
						|
  if (t.l ~= nil) then 
 | 
						|
    local pe = __haxe_ds_List.new();
 | 
						|
    local _g = 0;
 | 
						|
    local _g1 = t.l;
 | 
						|
    while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local p = _g1[_g];
 | 
						|
      _g = _g + 1;
 | 
						|
      pe:add(self:parseBlock(self:parseTokens(p)));
 | 
						|
    end;
 | 
						|
    do return __haxe__Template_TemplateExpr.OpMacro(p, pe) end;
 | 
						|
  end;
 | 
						|
  local kwdEnd = function(kwd) 
 | 
						|
    local pos = -1;
 | 
						|
    local length = __lua_lib_luautf8_Utf8.len(kwd);
 | 
						|
    if (String.prototype.substr(p, 0, length) == kwd) then 
 | 
						|
      pos = length;
 | 
						|
      local s = String.prototype.substr(p, length);
 | 
						|
      local _g_codes = __lua_lib_luautf8_Utf8.codes(s);
 | 
						|
      local _g_str = s;
 | 
						|
      local _hx_1_cp_position, _hx_1_cp_codepoint = _g_codes(_g_str, 0);
 | 
						|
      local _g_codepoint = _hx_1_cp_codepoint;
 | 
						|
      local _g_position = _hx_1_cp_position;
 | 
						|
      while (_g_codepoint ~= nil) do _hx_do_first_1 = false;
 | 
						|
        
 | 
						|
        local ret = _g_codepoint;
 | 
						|
        local _hx_2_cp_position, _hx_2_cp_codepoint = _g_codes(_g_str, _g_position);
 | 
						|
        _g_codepoint = _hx_2_cp_codepoint;
 | 
						|
        _g_position = _hx_2_cp_position;
 | 
						|
        local c = ret;
 | 
						|
        if (c == 32) then 
 | 
						|
          pos = pos + 1;
 | 
						|
        else
 | 
						|
          break;
 | 
						|
        end;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    do return pos end;
 | 
						|
  end;
 | 
						|
  local pos = kwdEnd("if");
 | 
						|
  if (pos > 0) then 
 | 
						|
    p = String.prototype.substr(p, pos, __lua_lib_luautf8_Utf8.len(p) - pos);
 | 
						|
    local e = self:parseExpr(p);
 | 
						|
    local eif = self:parseBlock(tokens);
 | 
						|
    local t = tokens:first();
 | 
						|
    local eelse;
 | 
						|
    if (t == nil) then 
 | 
						|
      _G.error(__haxe_Exception.thrown("Unclosed 'if'"),0);
 | 
						|
    end;
 | 
						|
    if (t.p == "end") then 
 | 
						|
      tokens:pop();
 | 
						|
      eelse = nil;
 | 
						|
    else
 | 
						|
      if (t.p == "else") then 
 | 
						|
        tokens:pop();
 | 
						|
        eelse = self:parseBlock(tokens);
 | 
						|
        t = tokens:pop();
 | 
						|
        if ((t == nil) or (t.p ~= "end")) then 
 | 
						|
          _G.error(__haxe_Exception.thrown("Unclosed 'else'"),0);
 | 
						|
        end;
 | 
						|
      else
 | 
						|
        t.p = String.prototype.substr(t.p, 4, __lua_lib_luautf8_Utf8.len(t.p) - 4);
 | 
						|
        eelse = self:parse(tokens);
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    do return __haxe__Template_TemplateExpr.OpIf(e, eif, eelse) end;
 | 
						|
  end;
 | 
						|
  local pos = kwdEnd("foreach");
 | 
						|
  if (pos >= 0) then 
 | 
						|
    p = String.prototype.substr(p, pos, __lua_lib_luautf8_Utf8.len(p) - pos);
 | 
						|
    local e = self:parseExpr(p);
 | 
						|
    local efor = self:parseBlock(tokens);
 | 
						|
    local t = tokens:pop();
 | 
						|
    if ((t == nil) or (t.p ~= "end")) then 
 | 
						|
      _G.error(__haxe_Exception.thrown("Unclosed 'foreach'"),0);
 | 
						|
    end;
 | 
						|
    do return __haxe__Template_TemplateExpr.OpForeach(e, efor) end;
 | 
						|
  end;
 | 
						|
  if (__haxe_Template.expr_splitter:match(p)) then 
 | 
						|
    do return __haxe__Template_TemplateExpr.OpExpr(self:parseExpr(p)) end;
 | 
						|
  end;
 | 
						|
  do return __haxe__Template_TemplateExpr.OpVar(p) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.parseExpr = function(self,data) 
 | 
						|
  local l = __haxe_ds_List.new();
 | 
						|
  local expr = data;
 | 
						|
  while (__haxe_Template.expr_splitter:match(data)) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local p = __haxe_Template.expr_splitter:matchedPos();
 | 
						|
    local k = p.pos + p.len;
 | 
						|
    if (p.pos ~= 0) then 
 | 
						|
      l:add(_hx_o({__fields__={p=true,s=true},p=String.prototype.substr(data, 0, p.pos),s=true}));
 | 
						|
    end;
 | 
						|
    local p = __haxe_Template.expr_splitter:matched(0);
 | 
						|
    l:add(_hx_o({__fields__={p=true,s=true},p=p,s=String.prototype.indexOf(p, "\"") >= 0}));
 | 
						|
    data = __haxe_Template.expr_splitter:matchedRight();
 | 
						|
  end;
 | 
						|
  if (__lua_lib_luautf8_Utf8.len(data) ~= 0) then 
 | 
						|
    local _g_offset = 0;
 | 
						|
    local _g_s = data;
 | 
						|
    while (_g_offset < __lua_lib_luautf8_Utf8.len(_g_s)) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local _g_key = _g_offset;
 | 
						|
      _g_offset = _g_offset + 1;
 | 
						|
      local _g_value = __lua_lib_luautf8_Utf8.byte(_g_s, (_g_offset - 1) + 1);
 | 
						|
      local i = _g_key;
 | 
						|
      local c = _g_value;
 | 
						|
      if (c ~= 32) then 
 | 
						|
        l:add(_hx_o({__fields__={p=true,s=true},p=String.prototype.substr(data, i),s=true}));
 | 
						|
        break;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local e;
 | 
						|
  local _hx_status, _hx_result = pcall(function() 
 | 
						|
  
 | 
						|
      e = self:makeExpr(l);
 | 
						|
      if (not l:isEmpty()) then 
 | 
						|
        _G.error(__haxe_Exception.thrown(l:first().p),0);
 | 
						|
      end;
 | 
						|
    return _hx_pcall_default
 | 
						|
  end)
 | 
						|
  if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
  elseif not _hx_status then 
 | 
						|
    local _g = _hx_result;
 | 
						|
    local _g1 = __haxe_Exception.caught(_g):unwrap();
 | 
						|
    if (__lua_Boot.__instanceof(_g1, String)) then 
 | 
						|
      local s = _g1;
 | 
						|
      _G.error(__haxe_Exception.thrown(Std.string(Std.string(Std.string("Unexpected '") .. Std.string(s)) .. Std.string("' in ")) .. Std.string(expr)),0);
 | 
						|
    else
 | 
						|
      _G.error(_g,0);
 | 
						|
    end;
 | 
						|
  elseif _hx_result ~= _hx_pcall_default then
 | 
						|
    return _hx_result
 | 
						|
  end;
 | 
						|
  do return function() 
 | 
						|
    local _hx_status, _hx_result = pcall(function() 
 | 
						|
    
 | 
						|
        do return e() end;
 | 
						|
      return _hx_pcall_default
 | 
						|
    end)
 | 
						|
    if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
    elseif not _hx_status then 
 | 
						|
      local _g = _hx_result;
 | 
						|
      local exc = __haxe_Exception.caught(_g):unwrap();
 | 
						|
      _G.error(__haxe_Exception.thrown(Std.string(Std.string(Std.string("Error : ") .. Std.string(Std.string(exc))) .. Std.string(" in ")) .. Std.string(expr)),0);
 | 
						|
    elseif _hx_result ~= _hx_pcall_default then
 | 
						|
      return _hx_result
 | 
						|
    end;
 | 
						|
  end end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.makeConst = function(self,v) 
 | 
						|
  __haxe_Template.expr_trim:match(v);
 | 
						|
  v = __haxe_Template.expr_trim:matched(1);
 | 
						|
  if (__lua_lib_luautf8_Utf8.byte(v, 1) == 34) then 
 | 
						|
    local str = String.prototype.substr(v, 1, __lua_lib_luautf8_Utf8.len(v) - 2);
 | 
						|
    do return function() 
 | 
						|
      do return str end;
 | 
						|
    end end;
 | 
						|
  end;
 | 
						|
  if (__haxe_Template.expr_int:match(v)) then 
 | 
						|
    local i = Std.parseInt(v);
 | 
						|
    do return function() 
 | 
						|
      do return i end;
 | 
						|
    end end;
 | 
						|
  end;
 | 
						|
  if (__haxe_Template.expr_float:match(v)) then 
 | 
						|
    local f = Std.parseFloat(v);
 | 
						|
    do return function() 
 | 
						|
      do return f end;
 | 
						|
    end end;
 | 
						|
  end;
 | 
						|
  local me = self;
 | 
						|
  do return function() 
 | 
						|
    do return me:resolve(v) end;
 | 
						|
  end end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.makePath = function(self,e,l) 
 | 
						|
  local p = l:first();
 | 
						|
  if ((p == nil) or (p.p ~= ".")) then 
 | 
						|
    do return e end;
 | 
						|
  end;
 | 
						|
  l:pop();
 | 
						|
  local field = l:pop();
 | 
						|
  if ((field == nil) or not field.s) then 
 | 
						|
    _G.error(__haxe_Exception.thrown(field.p),0);
 | 
						|
  end;
 | 
						|
  local f = field.p;
 | 
						|
  __haxe_Template.expr_trim:match(f);
 | 
						|
  f = __haxe_Template.expr_trim:matched(1);
 | 
						|
  do return self:makePath(function() 
 | 
						|
    do return Reflect.field(e(), f) end;
 | 
						|
  end, l) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.makeExpr = function(self,l) 
 | 
						|
  do return self:makePath(self:makeExpr2(l), l) end
 | 
						|
end
 | 
						|
__haxe_Template.prototype.skipSpaces = function(self,l) 
 | 
						|
  local p = l:first();
 | 
						|
  while (p ~= nil) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local s = p.p;
 | 
						|
    local _g_codes = __lua_lib_luautf8_Utf8.codes(s);
 | 
						|
    local _g_str = s;
 | 
						|
    local _hx_1_cp_position, _hx_1_cp_codepoint = _g_codes(_g_str, 0);
 | 
						|
    local _g_codepoint = _hx_1_cp_codepoint;
 | 
						|
    local _g_position = _hx_1_cp_position;
 | 
						|
    while (_g_codepoint ~= nil) do _hx_do_first_2 = false;
 | 
						|
      
 | 
						|
      local ret = _g_codepoint;
 | 
						|
      local _hx_2_cp_position, _hx_2_cp_codepoint = _g_codes(_g_str, _g_position);
 | 
						|
      _g_codepoint = _hx_2_cp_codepoint;
 | 
						|
      _g_position = _hx_2_cp_position;
 | 
						|
      local c = ret;
 | 
						|
      if (c ~= 32) then 
 | 
						|
        do return end;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    l:pop();
 | 
						|
    p = l:first();
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_Template.prototype.makeExpr2 = function(self,l) 
 | 
						|
  self:skipSpaces(l);
 | 
						|
  local p = l:pop();
 | 
						|
  self:skipSpaces(l);
 | 
						|
  if (p == nil) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("<eof>"),0);
 | 
						|
  end;
 | 
						|
  if (p.s) then 
 | 
						|
    do return self:makeConst(p.p) end;
 | 
						|
  end;
 | 
						|
  local _g = p.p;
 | 
						|
  if (_g) == "!" then 
 | 
						|
    local e = self:makeExpr(l);
 | 
						|
    do return function() 
 | 
						|
      local v = e();
 | 
						|
      if (v ~= nil) then 
 | 
						|
        do return v == false end;
 | 
						|
      else
 | 
						|
        do return true end;
 | 
						|
      end;
 | 
						|
    end end;
 | 
						|
  elseif (_g) == "(" then 
 | 
						|
    self:skipSpaces(l);
 | 
						|
    local e1 = self:makeExpr(l);
 | 
						|
    self:skipSpaces(l);
 | 
						|
    local p = l:pop();
 | 
						|
    if ((p == nil) or p.s) then 
 | 
						|
      _G.error(__haxe_Exception.thrown(p),0);
 | 
						|
    end;
 | 
						|
    if (p.p == ")") then 
 | 
						|
      do return e1 end;
 | 
						|
    end;
 | 
						|
    self:skipSpaces(l);
 | 
						|
    local e2 = self:makeExpr(l);
 | 
						|
    self:skipSpaces(l);
 | 
						|
    local p2 = l:pop();
 | 
						|
    self:skipSpaces(l);
 | 
						|
    if ((p2 == nil) or (p2.p ~= ")")) then 
 | 
						|
      _G.error(__haxe_Exception.thrown(p2),0);
 | 
						|
    end;
 | 
						|
    local _g = p.p;
 | 
						|
    if (_g) == "!=" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() ~= e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "&&" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() and e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "*" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() * e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "+" then 
 | 
						|
      do return function() 
 | 
						|
        do return _hx_dyn_add(e1(),e2()) end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "-" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() - e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "/" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() / e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "<" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() < e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "<=" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() <= e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "==" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() == e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == ">" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() > e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == ">=" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() >= e2() end;
 | 
						|
      end end;
 | 
						|
    elseif (_g) == "||" then 
 | 
						|
      do return function() 
 | 
						|
        do return e1() or e2() end;
 | 
						|
      end end;else
 | 
						|
    _G.error(__haxe_Exception.thrown(Std.string("Unknown operation ") .. Std.string(p.p)),0); end;
 | 
						|
  elseif (_g) == "-" then 
 | 
						|
    local e = self:makeExpr(l);
 | 
						|
    do return function() 
 | 
						|
      do return -e() end;
 | 
						|
    end end; end;
 | 
						|
  _G.error(__haxe_Exception.thrown(p.p),0);
 | 
						|
end
 | 
						|
__haxe_Template.prototype.run = function(self,e) 
 | 
						|
  local tmp = e[1];
 | 
						|
  if (tmp) == 0 then 
 | 
						|
    local v = e[2];
 | 
						|
    local _this = self.buf;
 | 
						|
    local str = Std.string(self:resolve(v));
 | 
						|
    _G.table.insert(_this.b, str);
 | 
						|
    local _this = _this;
 | 
						|
    _this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
  elseif (tmp) == 1 then 
 | 
						|
    local e = e[2];
 | 
						|
    local _this = self.buf;
 | 
						|
    local str = Std.string(e());
 | 
						|
    _G.table.insert(_this.b, str);
 | 
						|
    local _this = _this;
 | 
						|
    _this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
  elseif (tmp) == 2 then 
 | 
						|
    local e1 = e[2];
 | 
						|
    local eif = e[3];
 | 
						|
    local eelse = e[4];
 | 
						|
    local v = e1();
 | 
						|
    if ((v == nil) or (v == false)) then 
 | 
						|
      if (eelse ~= nil) then 
 | 
						|
        self:run(eelse);
 | 
						|
      end;
 | 
						|
    else
 | 
						|
      self:run(eif);
 | 
						|
    end;
 | 
						|
  elseif (tmp) == 3 then 
 | 
						|
    local str = e[2];
 | 
						|
    local _this = self.buf;
 | 
						|
    local str = Std.string(str);
 | 
						|
    _G.table.insert(_this.b, str);
 | 
						|
    local _this = _this;
 | 
						|
    _this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
  elseif (tmp) == 4 then 
 | 
						|
    local l = e[2];
 | 
						|
    local _g_head = l.h;
 | 
						|
    while (_g_head ~= nil) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local val = _g_head.item;
 | 
						|
      _g_head = _g_head.next;
 | 
						|
      local e = val;
 | 
						|
      self:run(e);
 | 
						|
    end;
 | 
						|
  elseif (tmp) == 5 then 
 | 
						|
    local e1 = e[2];
 | 
						|
    local loop = e[3];
 | 
						|
    local v = e1();
 | 
						|
    local _hx_status, _hx_result = pcall(function() 
 | 
						|
    
 | 
						|
        local x = v:iterator();
 | 
						|
        if (x.hasNext == nil) then 
 | 
						|
          _G.error(__haxe_Exception.thrown(nil),0);
 | 
						|
        end;
 | 
						|
        v = x;
 | 
						|
      return _hx_pcall_default
 | 
						|
    end)
 | 
						|
    if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
    elseif not _hx_status then 
 | 
						|
      local _g = _hx_result;
 | 
						|
      local _hx_status, _hx_result = pcall(function() 
 | 
						|
      
 | 
						|
          if (v.hasNext == nil) then 
 | 
						|
            _G.error(__haxe_Exception.thrown(nil),0);
 | 
						|
          end;
 | 
						|
        return _hx_pcall_default
 | 
						|
      end)
 | 
						|
      if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
      elseif not _hx_status then 
 | 
						|
        local _g = _hx_result;
 | 
						|
        _G.error(__haxe_Exception.thrown(Std.string("Cannot iter on ") .. Std.string(Std.string(v))),0);
 | 
						|
      elseif _hx_result ~= _hx_pcall_default then
 | 
						|
        return _hx_result
 | 
						|
      end;
 | 
						|
    elseif _hx_result ~= _hx_pcall_default then
 | 
						|
      return _hx_result
 | 
						|
    end;
 | 
						|
    self.stack:push(self.context);
 | 
						|
    local v = v;
 | 
						|
    local ctx = v;
 | 
						|
    while (ctx:hasNext()) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local ctx = ctx:next();
 | 
						|
      self.context = ctx;
 | 
						|
      self:run(loop);
 | 
						|
    end;
 | 
						|
    self.context = self.stack:pop();
 | 
						|
  elseif (tmp) == 6 then 
 | 
						|
    local m = e[2];
 | 
						|
    local params = e[3];
 | 
						|
    local v = Reflect.field(self.macros, m);
 | 
						|
    local pl = Array.new();
 | 
						|
    local old = self.buf;
 | 
						|
    pl:push(_hx_bind(self,self.resolve));
 | 
						|
    local _g_head = params.h;
 | 
						|
    while (_g_head ~= nil) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local val = _g_head.item;
 | 
						|
      _g_head = _g_head.next;
 | 
						|
      local p = val;
 | 
						|
      if (p[1] == 0) then 
 | 
						|
        local v = p[2];
 | 
						|
        pl:push(self:resolve(v));
 | 
						|
      else
 | 
						|
        self.buf = StringBuf.new();
 | 
						|
        self:run(p);
 | 
						|
        pl:push(_G.table.concat(self.buf.b));
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    self.buf = old;
 | 
						|
    local _hx_status, _hx_result = pcall(function() 
 | 
						|
    
 | 
						|
        local _this = self.buf;
 | 
						|
        local str = Std.string(Reflect.callMethod(self.macros,v,pl));
 | 
						|
        _G.table.insert(_this.b, str);
 | 
						|
        local _this = _this;
 | 
						|
        _this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
      return _hx_pcall_default
 | 
						|
    end)
 | 
						|
    if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
    elseif not _hx_status then 
 | 
						|
      local _g = _hx_result;
 | 
						|
      local e = __haxe_Exception.caught(_g):unwrap();
 | 
						|
      local plstr;
 | 
						|
      local _hx_status, _hx_result = pcall(function() 
 | 
						|
      
 | 
						|
          plstr = pl:join(",");
 | 
						|
        return _hx_pcall_default
 | 
						|
      end)
 | 
						|
      if not _hx_status and _hx_result == "_hx_pcall_break" then
 | 
						|
      elseif not _hx_status then 
 | 
						|
        local _g = _hx_result;
 | 
						|
        plstr = "???";
 | 
						|
      elseif _hx_result ~= _hx_pcall_default then
 | 
						|
        return _hx_result
 | 
						|
      end;
 | 
						|
      local msg = Std.string(Std.string(Std.string(Std.string(Std.string(Std.string("Macro call ") .. Std.string(m)) .. Std.string("(")) .. Std.string(plstr)) .. Std.string(") failed (")) .. Std.string(Std.string(e))) .. Std.string(")");
 | 
						|
      _G.error(__haxe_Exception.thrown(msg),0);
 | 
						|
    elseif _hx_result ~= _hx_pcall_default then
 | 
						|
      return _hx_result
 | 
						|
    end; end;
 | 
						|
end
 | 
						|
 | 
						|
__haxe_Template.prototype.__class__ =  __haxe_Template
 | 
						|
 | 
						|
__haxe_ValueException.new = function(value,previous,native) 
 | 
						|
  local self = _hx_new(__haxe_ValueException.prototype)
 | 
						|
  __haxe_ValueException.super(self,value,previous,native)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_ValueException.super = function(self,value,previous,native) 
 | 
						|
  __haxe_Exception.super(self,(function() 
 | 
						|
    local _hx_1
 | 
						|
    if (value == nil) then 
 | 
						|
    _hx_1 = "null"; else 
 | 
						|
    _hx_1 = Std.string(value); end
 | 
						|
    return _hx_1
 | 
						|
  end )(),previous,native);
 | 
						|
  self.value = value;
 | 
						|
end
 | 
						|
__haxe_ValueException.__name__ = true
 | 
						|
__haxe_ValueException.prototype = _hx_e();
 | 
						|
__haxe_ValueException.prototype.unwrap = function(self) 
 | 
						|
  do return self.value end
 | 
						|
end
 | 
						|
 | 
						|
__haxe_ValueException.prototype.__class__ =  __haxe_ValueException
 | 
						|
__haxe_ValueException.__super__ = __haxe_Exception
 | 
						|
setmetatable(__haxe_ValueException.prototype,{__index=__haxe_Exception.prototype})
 | 
						|
setmetatable(__haxe_ValueException.prototype.__properties__,{__index=__haxe_Exception.prototype.__properties__})
 | 
						|
 | 
						|
__haxe_ds_List.new = function() 
 | 
						|
  local self = _hx_new(__haxe_ds_List.prototype)
 | 
						|
  __haxe_ds_List.super(self)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_ds_List.super = function(self) 
 | 
						|
  self.length = 0;
 | 
						|
end
 | 
						|
__haxe_ds_List.__name__ = true
 | 
						|
__haxe_ds_List.prototype = _hx_e();
 | 
						|
__haxe_ds_List.prototype.add = function(self,item) 
 | 
						|
  local next = nil;
 | 
						|
  local x = __haxe_ds__List_ListNode.new(item, next);
 | 
						|
  if (self.h == nil) then 
 | 
						|
    self.h = x;
 | 
						|
  else
 | 
						|
    self.q.next = x;
 | 
						|
  end;
 | 
						|
  self.q = x;
 | 
						|
  self.length = self.length + 1;
 | 
						|
end
 | 
						|
__haxe_ds_List.prototype.push = function(self,item) 
 | 
						|
  local x = __haxe_ds__List_ListNode.new(item, self.h);
 | 
						|
  self.h = x;
 | 
						|
  if (self.q == nil) then 
 | 
						|
    self.q = x;
 | 
						|
  end;
 | 
						|
  self.length = self.length + 1;
 | 
						|
end
 | 
						|
__haxe_ds_List.prototype.first = function(self) 
 | 
						|
  if (self.h == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  else
 | 
						|
    do return self.h.item end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_ds_List.prototype.pop = function(self) 
 | 
						|
  if (self.h == nil) then 
 | 
						|
    do return nil end;
 | 
						|
  end;
 | 
						|
  local x = self.h.item;
 | 
						|
  self.h = self.h.next;
 | 
						|
  if (self.h == nil) then 
 | 
						|
    self.q = nil;
 | 
						|
  end;
 | 
						|
  self.length = self.length - 1;
 | 
						|
  do return x end
 | 
						|
end
 | 
						|
__haxe_ds_List.prototype.isEmpty = function(self) 
 | 
						|
  do return self.h == nil end
 | 
						|
end
 | 
						|
__haxe_ds_List.prototype.toString = function(self) 
 | 
						|
  local s_b = ({});
 | 
						|
  local s_length = 0;
 | 
						|
  local first = true;
 | 
						|
  local l = self.h;
 | 
						|
  local str = "{";
 | 
						|
  _G.table.insert(s_b, str);
 | 
						|
  s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
  while (l ~= nil) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    if (first) then 
 | 
						|
      first = false;
 | 
						|
    else
 | 
						|
      local str = ", ";
 | 
						|
      _G.table.insert(s_b, str);
 | 
						|
      s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
    end;
 | 
						|
    local str = Std.string(l.item);
 | 
						|
    _G.table.insert(s_b, str);
 | 
						|
    s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
    l = l.next;
 | 
						|
  end;
 | 
						|
  local str = "}";
 | 
						|
  _G.table.insert(s_b, str);
 | 
						|
  s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
 | 
						|
  do return _G.table.concat(s_b) end
 | 
						|
end
 | 
						|
 | 
						|
__haxe_ds_List.prototype.__class__ =  __haxe_ds_List
 | 
						|
 | 
						|
__haxe_ds__List_ListNode.new = function(item,next) 
 | 
						|
  local self = _hx_new(__haxe_ds__List_ListNode.prototype)
 | 
						|
  __haxe_ds__List_ListNode.super(self,item,next)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_ds__List_ListNode.super = function(self,item,next) 
 | 
						|
  self.item = item;
 | 
						|
  self.next = next;
 | 
						|
end
 | 
						|
__haxe_ds__List_ListNode.__name__ = true
 | 
						|
__haxe_ds__List_ListNode.prototype = _hx_e();
 | 
						|
 | 
						|
__haxe_ds__List_ListNode.prototype.__class__ =  __haxe_ds__List_ListNode
 | 
						|
 | 
						|
__haxe_ds_StringMap.new = {}
 | 
						|
__haxe_ds_StringMap.__name__ = true
 | 
						|
__haxe_ds_StringMap.__interfaces__ = {__haxe_IMap}
 | 
						|
 | 
						|
__haxe_exceptions_PosException.new = function(message,previous,pos) 
 | 
						|
  local self = _hx_new(__haxe_exceptions_PosException.prototype)
 | 
						|
  __haxe_exceptions_PosException.super(self,message,previous,pos)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_exceptions_PosException.super = function(self,message,previous,pos) 
 | 
						|
  __haxe_Exception.super(self,message,previous);
 | 
						|
  if (pos == nil) then 
 | 
						|
    self.posInfos = _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="(unknown)",lineNumber=0,className="(unknown)",methodName="(unknown)"});
 | 
						|
  else
 | 
						|
    self.posInfos = pos;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__haxe_exceptions_PosException.__name__ = true
 | 
						|
__haxe_exceptions_PosException.prototype = _hx_e();
 | 
						|
__haxe_exceptions_PosException.prototype.toString = function(self) 
 | 
						|
  do return Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string("") .. Std.string(__haxe_Exception.prototype.toString(self))) .. Std.string(" in ")) .. Std.string(self.posInfos.className)) .. Std.string(".")) .. Std.string(self.posInfos.methodName)) .. Std.string(" at ")) .. Std.string(self.posInfos.fileName)) .. Std.string(":")) .. Std.string(self.posInfos.lineNumber) end
 | 
						|
end
 | 
						|
 | 
						|
__haxe_exceptions_PosException.prototype.__class__ =  __haxe_exceptions_PosException
 | 
						|
__haxe_exceptions_PosException.__super__ = __haxe_Exception
 | 
						|
setmetatable(__haxe_exceptions_PosException.prototype,{__index=__haxe_Exception.prototype})
 | 
						|
setmetatable(__haxe_exceptions_PosException.prototype.__properties__,{__index=__haxe_Exception.prototype.__properties__})
 | 
						|
 | 
						|
__haxe_exceptions_NotImplementedException.new = function(message,previous,pos) 
 | 
						|
  local self = _hx_new(__haxe_exceptions_NotImplementedException.prototype)
 | 
						|
  __haxe_exceptions_NotImplementedException.super(self,message,previous,pos)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_exceptions_NotImplementedException.super = function(self,message,previous,pos) 
 | 
						|
  if (message == nil) then 
 | 
						|
    message = "Not implemented";
 | 
						|
  end;
 | 
						|
  __haxe_exceptions_PosException.super(self,message,previous,pos);
 | 
						|
end
 | 
						|
__haxe_exceptions_NotImplementedException.__name__ = true
 | 
						|
__haxe_exceptions_NotImplementedException.prototype = _hx_e();
 | 
						|
 | 
						|
__haxe_exceptions_NotImplementedException.prototype.__class__ =  __haxe_exceptions_NotImplementedException
 | 
						|
__haxe_exceptions_NotImplementedException.__super__ = __haxe_exceptions_PosException
 | 
						|
setmetatable(__haxe_exceptions_NotImplementedException.prototype,{__index=__haxe_exceptions_PosException.prototype})
 | 
						|
setmetatable(__haxe_exceptions_NotImplementedException.prototype.__properties__,{__index=__haxe_exceptions_PosException.prototype.__properties__})
 | 
						|
 | 
						|
__haxe_iterators_ArrayKeyValueIterator.new = function(array) 
 | 
						|
  local self = _hx_new(__haxe_iterators_ArrayKeyValueIterator.prototype)
 | 
						|
  __haxe_iterators_ArrayKeyValueIterator.super(self,array)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__haxe_iterators_ArrayKeyValueIterator.super = function(self,array) 
 | 
						|
  self.array = array;
 | 
						|
end
 | 
						|
__haxe_iterators_ArrayKeyValueIterator.__name__ = true
 | 
						|
__haxe_iterators_ArrayKeyValueIterator.prototype = _hx_e();
 | 
						|
 | 
						|
__haxe_iterators_ArrayKeyValueIterator.prototype.__class__ =  __haxe_iterators_ArrayKeyValueIterator
 | 
						|
 | 
						|
__lua_Boot.new = {}
 | 
						|
__lua_Boot.__name__ = true
 | 
						|
__lua_Boot.__instanceof = function(o,cl) 
 | 
						|
  if (cl == nil) then 
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
  local cl1 = cl;
 | 
						|
  if (cl1) == Array then 
 | 
						|
    do return __lua_Boot.isArray(o) end;
 | 
						|
  elseif (cl1) == Bool then 
 | 
						|
    do return _G.type(o) == "boolean" end;
 | 
						|
  elseif (cl1) == Dynamic then 
 | 
						|
    do return o ~= nil end;
 | 
						|
  elseif (cl1) == Float then 
 | 
						|
    do return _G.type(o) == "number" end;
 | 
						|
  elseif (cl1) == Int then 
 | 
						|
    if (_G.type(o) == "number") then 
 | 
						|
      do return _hx_bit_clamp(o) == o end;
 | 
						|
    else
 | 
						|
      do return false end;
 | 
						|
    end;
 | 
						|
  elseif (cl1) == String then 
 | 
						|
    do return _G.type(o) == "string" end;
 | 
						|
  elseif (cl1) == _G.table then 
 | 
						|
    do return _G.type(o) == "table" end;
 | 
						|
  elseif (cl1) == __lua_Thread then 
 | 
						|
    do return _G.type(o) == "thread" end;
 | 
						|
  elseif (cl1) == __lua_UserData then 
 | 
						|
    do return _G.type(o) == "userdata" end;else
 | 
						|
  if (((o ~= nil) and (_G.type(o) == "table")) and (_G.type(cl) == "table")) then 
 | 
						|
    local tmp;
 | 
						|
    if (__lua_Boot.__instanceof(o, Array)) then 
 | 
						|
      tmp = Array;
 | 
						|
    else
 | 
						|
      if (__lua_Boot.__instanceof(o, String)) then 
 | 
						|
        tmp = String;
 | 
						|
      else
 | 
						|
        local cl = o.__class__;
 | 
						|
        tmp = (function() 
 | 
						|
          local _hx_1
 | 
						|
          if (cl ~= nil) then 
 | 
						|
          _hx_1 = cl; else 
 | 
						|
          _hx_1 = nil; end
 | 
						|
          return _hx_1
 | 
						|
        end )();
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    if (__lua_Boot.extendsOrImplements(tmp, cl)) then 
 | 
						|
      do return true end;
 | 
						|
    end;
 | 
						|
    if ((function() 
 | 
						|
      local _hx_2
 | 
						|
      if (cl == Class) then 
 | 
						|
      _hx_2 = o.__name__ ~= nil; else 
 | 
						|
      _hx_2 = false; end
 | 
						|
      return _hx_2
 | 
						|
    end )()) then 
 | 
						|
      do return true end;
 | 
						|
    end;
 | 
						|
    if ((function() 
 | 
						|
      local _hx_3
 | 
						|
      if (cl == Enum) then 
 | 
						|
      _hx_3 = o.__ename__ ~= nil; else 
 | 
						|
      _hx_3 = false; end
 | 
						|
      return _hx_3
 | 
						|
    end )()) then 
 | 
						|
      do return true end;
 | 
						|
    end;
 | 
						|
    do return o.__enum__ == cl end;
 | 
						|
  else
 | 
						|
    do return false end;
 | 
						|
  end; end;
 | 
						|
end
 | 
						|
__lua_Boot.isArray = function(o) 
 | 
						|
  if (_G.type(o) == "table") then 
 | 
						|
    if ((o.__enum__ == nil) and (_G.getmetatable(o) ~= nil)) then 
 | 
						|
      do return _G.getmetatable(o).__index == Array.prototype end;
 | 
						|
    else
 | 
						|
      do return false end;
 | 
						|
    end;
 | 
						|
  else
 | 
						|
    do return false end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__lua_Boot.extendsOrImplements = function(cl1,cl2) 
 | 
						|
  if ((cl1 == nil) or (cl2 == nil)) then 
 | 
						|
    do return false end;
 | 
						|
  else
 | 
						|
    if (cl1 == cl2) then 
 | 
						|
      do return true end;
 | 
						|
    else
 | 
						|
      if (cl1.__interfaces__ ~= nil) then 
 | 
						|
        local intf = cl1.__interfaces__;
 | 
						|
        local _g = 1;
 | 
						|
        local _g1 = _hx_table.maxn(intf) + 1;
 | 
						|
        while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
          
 | 
						|
          _g = _g + 1;
 | 
						|
          local i = _g - 1;
 | 
						|
          if (__lua_Boot.extendsOrImplements(intf[i], cl2)) then 
 | 
						|
            do return true end;
 | 
						|
          end;
 | 
						|
        end;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return __lua_Boot.extendsOrImplements(cl1.__super__, cl2) end;
 | 
						|
end
 | 
						|
 | 
						|
__lua_UserData.new = {}
 | 
						|
__lua_UserData.__name__ = true
 | 
						|
 | 
						|
__lua_Lib.new = {}
 | 
						|
__lua_Lib.__name__ = true
 | 
						|
__lua_Lib.fillArray = function(itr) 
 | 
						|
  local i = nil;
 | 
						|
  local ret = _hx_tab_array({}, 0);
 | 
						|
  while (true) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    i = itr();
 | 
						|
    if (not (i ~= nil)) then 
 | 
						|
      break;
 | 
						|
    end;
 | 
						|
    ret:push(i);
 | 
						|
  end;
 | 
						|
  do return ret end;
 | 
						|
end
 | 
						|
 | 
						|
__lua_Thread.new = {}
 | 
						|
__lua_Thread.__name__ = true
 | 
						|
 | 
						|
__xrfragment_Filter.new = function(str) 
 | 
						|
  local self = _hx_new(__xrfragment_Filter.prototype)
 | 
						|
  __xrfragment_Filter.super(self,str)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__xrfragment_Filter.super = function(self,str) 
 | 
						|
  self.q = _hx_e();
 | 
						|
  self.str = "";
 | 
						|
  if (str ~= nil) then 
 | 
						|
    self:parse(str);
 | 
						|
  end;
 | 
						|
end
 | 
						|
_hx_exports["xrfragment"]["Filter"] = __xrfragment_Filter
 | 
						|
__xrfragment_Filter.__name__ = true
 | 
						|
__xrfragment_Filter.prototype = _hx_e();
 | 
						|
__xrfragment_Filter.prototype.toObject = function(self) 
 | 
						|
  do return Reflect.copy(self.q) end
 | 
						|
end
 | 
						|
__xrfragment_Filter.prototype.get = function(self) 
 | 
						|
  do return Reflect.copy(self.q) end
 | 
						|
end
 | 
						|
__xrfragment_Filter.prototype.parse = function(self,str) 
 | 
						|
  local token = String.prototype.split(str, " ");
 | 
						|
  local q = _hx_e();
 | 
						|
  local process = function(str,prefix) 
 | 
						|
    if (prefix == nil) then 
 | 
						|
      prefix = "";
 | 
						|
    end;
 | 
						|
    str = StringTools.trim(str);
 | 
						|
    local k = String.prototype.split(str, "=")[0];
 | 
						|
    local v = String.prototype.split(str, "=")[1];
 | 
						|
    local filter = _hx_e();
 | 
						|
    if (Reflect.field(q, Std.string(prefix) .. Std.string(k))) then 
 | 
						|
      filter = Reflect.field(q, Std.string(prefix) .. Std.string(k));
 | 
						|
    end;
 | 
						|
    if (__xrfragment_XRF.isProp:match(str)) then 
 | 
						|
      local oper = "";
 | 
						|
      if (String.prototype.indexOf(str, ">") ~= -1) then 
 | 
						|
        oper = ">";
 | 
						|
      end;
 | 
						|
      if (String.prototype.indexOf(str, "<") ~= -1) then 
 | 
						|
        oper = "<";
 | 
						|
      end;
 | 
						|
      if (__xrfragment_XRF.isExclude:match(k)) then 
 | 
						|
        k = String.prototype.substr(k, 1);
 | 
						|
      end;
 | 
						|
      v = String.prototype.substr(v, __lua_lib_luautf8_Utf8.len(oper));
 | 
						|
      if (__lua_lib_luautf8_Utf8.len(oper) == 0) then 
 | 
						|
        oper = "=";
 | 
						|
      end;
 | 
						|
      local rule = _hx_e();
 | 
						|
      if (__xrfragment_XRF.isNumber:match(v)) then 
 | 
						|
        local value = Std.parseFloat(v);
 | 
						|
        rule[oper] = value;
 | 
						|
      else
 | 
						|
        rule[oper] = v;
 | 
						|
      end;
 | 
						|
      q.expr = rule;
 | 
						|
    end;
 | 
						|
    local value = (function() 
 | 
						|
      local _hx_1
 | 
						|
      if (__xrfragment_XRF.isDeep:match(str)) then 
 | 
						|
      _hx_1 = String.prototype.split(k, "*").length - 1; else 
 | 
						|
      _hx_1 = 0; end
 | 
						|
      return _hx_1
 | 
						|
    end )();
 | 
						|
    q.deep = value;
 | 
						|
    local value = (function() 
 | 
						|
      local _hx_2
 | 
						|
      if (__xrfragment_XRF.isExclude:match(str)) then 
 | 
						|
      _hx_2 = false; else 
 | 
						|
      _hx_2 = true; end
 | 
						|
      return _hx_2
 | 
						|
    end )();
 | 
						|
    q.show = value;
 | 
						|
    local value = __xrfragment_XRF.operators:replace(k, "");
 | 
						|
    q.key = value;
 | 
						|
    q.value = v;
 | 
						|
  end;
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = token.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    process(token[i]);
 | 
						|
  end;
 | 
						|
  self.q = q do return self.q end
 | 
						|
end
 | 
						|
__xrfragment_Filter.prototype.test = function(self,obj) 
 | 
						|
  local qualify = false;
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = Reflect.fields(obj);
 | 
						|
  while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local k = _g1[_g];
 | 
						|
    _g = _g + 1;
 | 
						|
    local v = Std.string(Reflect.field(obj, k));
 | 
						|
    if (self:testProperty(k, v)) then 
 | 
						|
      qualify = true;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = Reflect.fields(obj);
 | 
						|
  while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    local k = _g1[_g];
 | 
						|
    _g = _g + 1;
 | 
						|
    local v = Std.string(Reflect.field(obj, k));
 | 
						|
    if (self:testProperty(k, v, true)) then 
 | 
						|
      qualify = false;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return qualify end
 | 
						|
end
 | 
						|
__xrfragment_Filter.prototype.testProperty = function(self,property,value,exclude) 
 | 
						|
  local conds = 0;
 | 
						|
  local fails = 0;
 | 
						|
  local qualify = 0;
 | 
						|
  local testprop = function(expr) 
 | 
						|
    conds = conds + 1;
 | 
						|
    fails = fails + (function() 
 | 
						|
      local _hx_1
 | 
						|
      if (expr) then 
 | 
						|
      _hx_1 = 0; else 
 | 
						|
      _hx_1 = 1; end
 | 
						|
      return _hx_1
 | 
						|
    end )();
 | 
						|
    do return expr end;
 | 
						|
  end;
 | 
						|
  if (Reflect.field(self.q, value) ~= nil) then 
 | 
						|
    local v = Reflect.field(self.q, value);
 | 
						|
    if (Reflect.field(v, property) ~= nil) then 
 | 
						|
      do return Reflect.field(v, property) end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  if (Reflect.field(self.q, "expr")) then 
 | 
						|
    local f = Reflect.field(self.q, "expr");
 | 
						|
    if (not Reflect.field(self.q, "show")) then 
 | 
						|
      if (((Reflect.field(f, "!=") ~= nil) and testprop(Std.string(value) == Std.string(Reflect.field(f, "!=")))) and exclude) then 
 | 
						|
        qualify = qualify + 1;
 | 
						|
      end;
 | 
						|
    else
 | 
						|
      if ((Reflect.field(f, "*") ~= nil) and testprop(Std.parseFloat(value) ~= nil)) then 
 | 
						|
        qualify = qualify + 1;
 | 
						|
      end;
 | 
						|
      if ((Reflect.field(f, ">") ~= nil) and testprop(Std.parseFloat(value) >= Std.parseFloat(Reflect.field(f, ">")))) then 
 | 
						|
        qualify = qualify + 1;
 | 
						|
      end;
 | 
						|
      if ((Reflect.field(f, "<") ~= nil) and testprop(Std.parseFloat(value) <= Std.parseFloat(Reflect.field(f, "<")))) then 
 | 
						|
        qualify = qualify + 1;
 | 
						|
      end;
 | 
						|
      if ((Reflect.field(f, "=") ~= nil) and (testprop(value == Reflect.field(f, "=")) or testprop(Std.parseFloat(value) == Std.parseFloat(Reflect.field(f, "="))))) then 
 | 
						|
        qualify = qualify + 1;
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return qualify > 0 end
 | 
						|
end
 | 
						|
 | 
						|
__xrfragment_Filter.prototype.__class__ =  __xrfragment_Filter
 | 
						|
 | 
						|
__xrfragment_Parser.new = {}
 | 
						|
_hx_exports["xrfragment"]["Parser"] = __xrfragment_Parser
 | 
						|
__xrfragment_Parser.__name__ = true
 | 
						|
__xrfragment_Parser.parse = function(key,value,store,index) 
 | 
						|
  local Frag_h = ({});
 | 
						|
  local value1 = _hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_PREDEFINED_VIEW),__xrfragment_XRF.PV_EXECUTE);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h["#"] = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h["#"] = value1;
 | 
						|
  end;
 | 
						|
  local value1 = __xrfragment_XRF.T_URL;
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.src = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.src = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.T_URL,__xrfragment_XRF.T_PREDEFINED_VIEW);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.href = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.href = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.tag = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.tag = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_VECTOR3),__xrfragment_XRF.T_STRING),__xrfragment_XRF.METADATA),__xrfragment_XRF.NAVIGATOR);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.pos = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.pos = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.QUERY_OPERATOR,__xrfragment_XRF.PV_OVERRIDE),__xrfragment_XRF.T_VECTOR3),__xrfragment_XRF.METADATA),__xrfragment_XRF.NAVIGATOR);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.rot = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.rot = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_FLOAT),__xrfragment_XRF.T_VECTOR2),__xrfragment_XRF.NAVIGATOR),__xrfragment_XRF.METADATA);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.t = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.t = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_MEDIAFRAG);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.s = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.s = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_PREDEFINED_VIEW);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.loop = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.loop = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.T_VECTOR2,__xrfragment_XRF.T_MEDIAFRAG);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.uv = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.uv = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.namespace = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.namespace = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.SPDX = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.SPDX = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.unit = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.unit = value1;
 | 
						|
  end;
 | 
						|
  local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
 | 
						|
  if (value1 == nil) then 
 | 
						|
    Frag_h.description = __haxe_ds_StringMap.tnull;
 | 
						|
  else
 | 
						|
    Frag_h.description = value1;
 | 
						|
  end;
 | 
						|
  local keyStripped = __xrfragment_XRF.operators:replace(key, "");
 | 
						|
  local isPVDynamic = (__lua_lib_luautf8_Utf8.len(key) > 0) and (Frag_h[key] == nil);
 | 
						|
  if (isPVDynamic) then 
 | 
						|
    local v = __xrfragment_XRF.new(key, _hx_bit.bor(__xrfragment_XRF.PV_EXECUTE,__xrfragment_XRF.NAVIGATOR), index);
 | 
						|
    v:validate(value);
 | 
						|
    v.flags = __xrfragment_XRF.set(__xrfragment_XRF.T_DYNAMICKEY, v.flags);
 | 
						|
    if (Frag_h[key] == nil) then 
 | 
						|
      v.flags = __xrfragment_XRF.set(__xrfragment_XRF.CUSTOMFRAG, v.flags);
 | 
						|
    end;
 | 
						|
    if (__lua_lib_luautf8_Utf8.len(value) == 0) then 
 | 
						|
      v.flags = __xrfragment_XRF.set(__xrfragment_XRF.T_DYNAMICKEYVALUE, v.flags);
 | 
						|
    end;
 | 
						|
    store[keyStripped] = v;
 | 
						|
    do return true end;
 | 
						|
  end;
 | 
						|
  local ret = Frag_h[key];
 | 
						|
  local v = __xrfragment_XRF.new(key, (function() 
 | 
						|
    local _hx_1
 | 
						|
    if (ret == __haxe_ds_StringMap.tnull) then 
 | 
						|
    _hx_1 = nil; else 
 | 
						|
    _hx_1 = ret; end
 | 
						|
    return _hx_1
 | 
						|
  end )(), index);
 | 
						|
  if (Frag_h[key] ~= nil) then 
 | 
						|
    if (not v:validate(value)) then 
 | 
						|
      __haxe_Log.trace(Std.string(Std.string(Std.string(Std.string("⚠ fragment '") .. Std.string(key)) .. Std.string("' has incompatible value (")) .. Std.string(value)) .. Std.string(")"), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=67,className="xrfragment.Parser",methodName="parse"}));
 | 
						|
      do return false end;
 | 
						|
    end;
 | 
						|
    store[keyStripped] = v;
 | 
						|
    if (__xrfragment_Parser.debug) then 
 | 
						|
      __haxe_Log.trace(Std.string(Std.string(Std.string("✔ ") .. Std.string(key)) .. Std.string(": ")) .. Std.string(v.string), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=71,className="xrfragment.Parser",methodName="parse"}));
 | 
						|
    end;
 | 
						|
  else
 | 
						|
    if (__lua_Boot.__instanceof(value, String)) then 
 | 
						|
      v:guessType(v, value);
 | 
						|
    end;
 | 
						|
    v.flags = __xrfragment_XRF.set(__xrfragment_XRF.CUSTOMFRAG, v.flags);
 | 
						|
    store[keyStripped] = v;
 | 
						|
  end;
 | 
						|
  do return true end;
 | 
						|
end
 | 
						|
__xrfragment_Parser.getMetaData = function() 
 | 
						|
  local meta = _hx_o({__fields__={title=true,description=true,author=true,publisher=true,website=true,license=true},title=_hx_tab_array({[0]="title", "og:title", "dc.title"}, 3),description=_hx_tab_array({[0]="aria-description", "og:description", "dc.description"}, 3),author=_hx_tab_array({[0]="author", "dc.creator"}, 2),publisher=_hx_tab_array({[0]="publisher", "dc.publisher"}, 2),website=_hx_tab_array({[0]="og:site_name", "og:url", "dc.publisher"}, 3),license=_hx_tab_array({[0]="SPDX", "dc.rights"}, 2)});
 | 
						|
  do return meta end;
 | 
						|
end
 | 
						|
 | 
						|
__xrfragment_URI.new = function() 
 | 
						|
  local self = _hx_new(__xrfragment_URI.prototype)
 | 
						|
  __xrfragment_URI.super(self)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__xrfragment_URI.super = function(self) 
 | 
						|
  self.XRF = _hx_e();
 | 
						|
  self.hash = _hx_e();
 | 
						|
  self.fragment = "";
 | 
						|
end
 | 
						|
_hx_exports["xrfragment"]["URI"] = __xrfragment_URI
 | 
						|
__xrfragment_URI.__name__ = true
 | 
						|
__xrfragment_URI.parseFragment = function(url,filter) 
 | 
						|
  local store = _hx_e();
 | 
						|
  if ((url == nil) or (String.prototype.indexOf(url, "#") == -1)) then 
 | 
						|
    do return store end;
 | 
						|
  end;
 | 
						|
  local fragment = String.prototype.split(url, "#");
 | 
						|
  local splitArray = String.prototype.split(fragment[1], "&");
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = splitArray.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    local splitByEqual = String.prototype.split(splitArray[i], "=");
 | 
						|
    local regexPlus = EReg.new("\\+", "g");
 | 
						|
    local key = splitByEqual[0];
 | 
						|
    local value = "";
 | 
						|
    if (splitByEqual.length > 1) then 
 | 
						|
      if (__xrfragment_XRF.isVector:match(splitByEqual[1])) then 
 | 
						|
        value = splitByEqual[1];
 | 
						|
      else
 | 
						|
        value = StringTools.urlDecode(regexPlus:split(splitByEqual[1]):join(" "));
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    local ok = __xrfragment_Parser.parse(key, value, store, i);
 | 
						|
  end;
 | 
						|
  if ((filter ~= nil) and (filter ~= 0)) then 
 | 
						|
    local _g = 0;
 | 
						|
    local _g1 = Reflect.fields(store);
 | 
						|
    while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local key = _g1[_g];
 | 
						|
      _g = _g + 1;
 | 
						|
      local xrf = Reflect.field(store, key);
 | 
						|
      if (not xrf:is(filter)) then 
 | 
						|
        Reflect.deleteField(store, key);
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  do return store end;
 | 
						|
end
 | 
						|
__xrfragment_URI.template = function(uri,vars) 
 | 
						|
  local parts = String.prototype.split(uri, "#");
 | 
						|
  if (parts.length == 1) then 
 | 
						|
    do return uri end;
 | 
						|
  end;
 | 
						|
  local frag = parts[1];
 | 
						|
  frag = StringTools.replace(frag, "{", "::");
 | 
						|
  frag = StringTools.replace(frag, "}", "::");
 | 
						|
  frag = __haxe_Template.new(frag):execute(vars);
 | 
						|
  frag = StringTools.replace(frag, "null", "");
 | 
						|
  parts[1] = frag;
 | 
						|
  do return parts:join("#") end;
 | 
						|
end
 | 
						|
__xrfragment_URI.parse = function(stringUrl,flags) 
 | 
						|
  local r = EReg.new("^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)", "");
 | 
						|
  if (((String.prototype.indexOf(stringUrl, "://") == -1) and (__lua_lib_luautf8_Utf8.sub(stringUrl, 1, 1) ~= "/")) and (__lua_lib_luautf8_Utf8.sub(stringUrl, 1, 1) ~= "#")) then 
 | 
						|
    stringUrl = Std.string("/") .. Std.string(stringUrl);
 | 
						|
  end;
 | 
						|
  r:match(stringUrl);
 | 
						|
  local url = __xrfragment_URI.new();
 | 
						|
  local _g = 0;
 | 
						|
  local _g1 = __xrfragment_URI._parts.length;
 | 
						|
  while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
    
 | 
						|
    _g = _g + 1;
 | 
						|
    local i = _g - 1;
 | 
						|
    url[__xrfragment_URI._parts[i]] = r:matched(i);
 | 
						|
  end;
 | 
						|
  if (__xrfragment_URI.isRelative(url) == true) then 
 | 
						|
    if ((url.directory == nil) and (url.host ~= nil)) then 
 | 
						|
      url.file = url.host;
 | 
						|
    end;
 | 
						|
    url.host = "";
 | 
						|
  end;
 | 
						|
  url.hash = _hx_e();
 | 
						|
  if ((url.fragment ~= nil) and (__lua_lib_luautf8_Utf8.len(url.fragment) > 0)) then 
 | 
						|
    url.XRF = __xrfragment_URI.parseFragment(Std.string("#") .. Std.string(url.fragment), flags);
 | 
						|
    local key;
 | 
						|
    local _g = 0;
 | 
						|
    local _g1 = Reflect.fields(url.XRF);
 | 
						|
    while (_g < _g1.length) do _hx_do_first_1 = false;
 | 
						|
      
 | 
						|
      local key = _g1[_g];
 | 
						|
      _g = _g + 1;
 | 
						|
      local v = Reflect.field(url.XRF, key);
 | 
						|
      local this1 = url.hash;
 | 
						|
      local value = Reflect.field(v, "string");
 | 
						|
      this1[key] = value;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  __xrfragment_URI.computeVars(url);
 | 
						|
  do return url end;
 | 
						|
end
 | 
						|
__xrfragment_URI.computeVars = function(url) 
 | 
						|
  local r = EReg.new("//", "g");
 | 
						|
  if ((url.directory ~= nil) and (String.prototype.indexOf(url.directory, "//") ~= -1)) then 
 | 
						|
    url.directory = r:replace(url.directory, "/");
 | 
						|
  end;
 | 
						|
  if ((url.path ~= nil) and (String.prototype.indexOf(url.path, "//") ~= -1)) then 
 | 
						|
    url.path = r:replace(url.path, "/");
 | 
						|
  end;
 | 
						|
  if ((url.file ~= nil) and (String.prototype.indexOf(url.file, "//") ~= -1)) then 
 | 
						|
    url.file = r:replace(url.file, "/");
 | 
						|
  end;
 | 
						|
  url.URN = Std.string(Std.string(url.scheme) .. Std.string("://")) .. Std.string(url.host);
 | 
						|
  if (url.port ~= nil) then 
 | 
						|
    local url1 = url;
 | 
						|
    url1.URN = Std.string(url1.URN) .. Std.string((Std.string(":") .. Std.string(url.port)));
 | 
						|
  end;
 | 
						|
  local url1 = url;
 | 
						|
  url1.URN = Std.string(url1.URN) .. Std.string(url.directory);
 | 
						|
  if (url.file ~= nil) then 
 | 
						|
    local parts = String.prototype.split(url.file, ".");
 | 
						|
    if (parts.length > 1) then 
 | 
						|
      url.fileExt = parts:pop();
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__xrfragment_URI.toString = function(url) 
 | 
						|
  local result = "";
 | 
						|
  if (url.scheme ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string(url.scheme) .. Std.string("://")));
 | 
						|
  end;
 | 
						|
  if (url.user ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string(url.user) .. Std.string(":")));
 | 
						|
  end;
 | 
						|
  if (url.password ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string(url.password) .. Std.string("@")));
 | 
						|
  end;
 | 
						|
  if (url.host ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string(url.host);
 | 
						|
  end;
 | 
						|
  if (url.port ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string(":") .. Std.string(url.port)));
 | 
						|
  end;
 | 
						|
  if (url.directory ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string(url.directory);
 | 
						|
  end;
 | 
						|
  if (url.file ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string(url.file);
 | 
						|
  end;
 | 
						|
  if (url.query ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string("?") .. Std.string(url.query)));
 | 
						|
  end;
 | 
						|
  if (url.fragment ~= nil) then 
 | 
						|
    result = Std.string(result) .. Std.string((Std.string("#") .. Std.string(url.fragment)));
 | 
						|
  end;
 | 
						|
  do return result end;
 | 
						|
end
 | 
						|
__xrfragment_URI.appendURI = function(url,appendedURI) 
 | 
						|
  if (__xrfragment_URI.isRelative(url) == true) then 
 | 
						|
    do return __xrfragment_URI.appendToRelativeURI(url, appendedURI) end;
 | 
						|
  else
 | 
						|
    do return __xrfragment_URI.appendToAbsoluteURI(url, appendedURI) end;
 | 
						|
  end;
 | 
						|
end
 | 
						|
__xrfragment_URI.isRelative = function(url) 
 | 
						|
  do return url.scheme == nil end;
 | 
						|
end
 | 
						|
__xrfragment_URI.appendToRelativeURI = function(url,appendedURI) 
 | 
						|
  if ((url.directory == nil) or (url.host == nil)) then 
 | 
						|
    do return __xrfragment_URI.cloneURI(appendedURI) end;
 | 
						|
  end;
 | 
						|
  local resultURI = __xrfragment_URI.new();
 | 
						|
  resultURI.host = url.host;
 | 
						|
  resultURI.directory = url.directory;
 | 
						|
  if (appendedURI.host ~= nil) then 
 | 
						|
    local resultURI = resultURI;
 | 
						|
    resultURI.directory = Std.string(resultURI.directory) .. Std.string(appendedURI.host);
 | 
						|
  end;
 | 
						|
  if (appendedURI.directory ~= nil) then 
 | 
						|
    local directory = appendedURI.directory;
 | 
						|
    if (appendedURI.host == nil) then 
 | 
						|
      local resultURI = resultURI;
 | 
						|
      resultURI.directory = Std.string(resultURI.directory) .. Std.string(String.prototype.substr(directory, 1));
 | 
						|
    else
 | 
						|
      local resultURI = resultURI;
 | 
						|
      resultURI.directory = Std.string(resultURI.directory) .. Std.string(directory);
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  if (appendedURI.file ~= nil) then 
 | 
						|
    resultURI.file = appendedURI.file;
 | 
						|
  end;
 | 
						|
  resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
 | 
						|
  if (appendedURI.query ~= nil) then 
 | 
						|
    resultURI.query = appendedURI.query;
 | 
						|
  end;
 | 
						|
  if (appendedURI.fragment ~= nil) then 
 | 
						|
    resultURI.fragment = appendedURI.fragment;
 | 
						|
  end;
 | 
						|
  do return resultURI end;
 | 
						|
end
 | 
						|
__xrfragment_URI.appendToAbsoluteURI = function(url,appendedURI) 
 | 
						|
  local resultURI = __xrfragment_URI.new();
 | 
						|
  if (url.scheme ~= nil) then 
 | 
						|
    resultURI.scheme = url.scheme;
 | 
						|
  end;
 | 
						|
  if (url.host ~= nil) then 
 | 
						|
    resultURI.host = url.host;
 | 
						|
  end;
 | 
						|
  local directory = "";
 | 
						|
  if (url.directory ~= nil) then 
 | 
						|
    directory = url.directory;
 | 
						|
  end;
 | 
						|
  if (appendedURI.host ~= nil) then 
 | 
						|
    local appendedURI1 = appendedURI;
 | 
						|
    appendedURI1.directory = Std.string(appendedURI1.directory) .. Std.string(appendedURI.host);
 | 
						|
  end;
 | 
						|
  if (appendedURI.directory ~= nil) then 
 | 
						|
    directory = Std.string(directory) .. Std.string(appendedURI.directory);
 | 
						|
  end;
 | 
						|
  resultURI.directory = directory;
 | 
						|
  if (appendedURI.file ~= nil) then 
 | 
						|
    resultURI.file = appendedURI.file;
 | 
						|
  end;
 | 
						|
  resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
 | 
						|
  if (appendedURI.query ~= nil) then 
 | 
						|
    resultURI.query = appendedURI.query;
 | 
						|
  end;
 | 
						|
  if (appendedURI.fragment ~= nil) then 
 | 
						|
    resultURI.fragment = appendedURI.fragment;
 | 
						|
  end;
 | 
						|
  do return resultURI end;
 | 
						|
end
 | 
						|
__xrfragment_URI.toAbsolute = function(url,newUrl) 
 | 
						|
  local newURI = __xrfragment_URI.parse(newUrl, 0);
 | 
						|
  local resultURI = __xrfragment_URI.new();
 | 
						|
  resultURI.port = url.port;
 | 
						|
  resultURI.source = newUrl;
 | 
						|
  if (newURI.scheme ~= nil) then 
 | 
						|
    resultURI.scheme = newURI.scheme;
 | 
						|
  else
 | 
						|
    resultURI.scheme = url.scheme;
 | 
						|
  end;
 | 
						|
  if ((newURI.host ~= nil) and (__lua_lib_luautf8_Utf8.len(newURI.host) > 0)) then 
 | 
						|
    resultURI.host = newURI.host;
 | 
						|
    resultURI.port = nil;
 | 
						|
    resultURI.fragment = nil;
 | 
						|
    resultURI.hash = _hx_e();
 | 
						|
    resultURI.XRF = _hx_e();
 | 
						|
    if (newURI.port ~= nil) then 
 | 
						|
      resultURI.port = newURI.port;
 | 
						|
    end;
 | 
						|
  else
 | 
						|
    resultURI.host = url.host;
 | 
						|
  end;
 | 
						|
  local directory = "";
 | 
						|
  if (url.directory ~= nil) then 
 | 
						|
    directory = url.directory;
 | 
						|
  end;
 | 
						|
  if (((newURI.directory ~= nil) and (__lua_lib_luautf8_Utf8.sub(newURI.source, 1, 1) ~= "#")) and (__lua_lib_luautf8_Utf8.len(newURI.directory) > 0)) then 
 | 
						|
    if ((__lua_lib_luautf8_Utf8.sub(newUrl, 1, 1) ~= "/") and (String.prototype.indexOf(newUrl, "://") == -1)) then 
 | 
						|
      local stripRelative = EReg.new("\\./.*", "");
 | 
						|
      directory = stripRelative:replace(directory, "");
 | 
						|
      directory = Std.string(directory) .. Std.string(newURI.directory);
 | 
						|
    else
 | 
						|
      directory = newURI.directory;
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
  resultURI.directory = directory;
 | 
						|
  if ((newURI.file ~= nil) and (__lua_lib_luautf8_Utf8.len(newURI.file) > 0)) then 
 | 
						|
    resultURI.file = newURI.file;
 | 
						|
  else
 | 
						|
    resultURI.file = url.file;
 | 
						|
  end;
 | 
						|
  resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
 | 
						|
  if (newURI.query ~= nil) then 
 | 
						|
    resultURI.query = newURI.query;
 | 
						|
  end;
 | 
						|
  if (newURI.fragment ~= nil) then 
 | 
						|
    resultURI.fragment = newURI.fragment;
 | 
						|
  end;
 | 
						|
  resultURI.hash = newURI.hash;
 | 
						|
  resultURI.XRF = newURI.XRF;
 | 
						|
  __xrfragment_URI.computeVars(resultURI);
 | 
						|
  do return resultURI end;
 | 
						|
end
 | 
						|
__xrfragment_URI.cloneURI = function(url) 
 | 
						|
  local clonedURI = __xrfragment_URI.new();
 | 
						|
  clonedURI.url = url.url;
 | 
						|
  clonedURI.source = url.source;
 | 
						|
  clonedURI.scheme = url.scheme;
 | 
						|
  clonedURI.authority = url.authority;
 | 
						|
  clonedURI.userInfo = url.userInfo;
 | 
						|
  clonedURI.password = url.password;
 | 
						|
  clonedURI.host = url.host;
 | 
						|
  clonedURI.port = url.port;
 | 
						|
  clonedURI.relative = url.relative;
 | 
						|
  clonedURI.path = url.path;
 | 
						|
  clonedURI.directory = url.directory;
 | 
						|
  clonedURI.file = url.file;
 | 
						|
  clonedURI.query = url.query;
 | 
						|
  clonedURI.fragment = url.fragment;
 | 
						|
  do return clonedURI end;
 | 
						|
end
 | 
						|
__xrfragment_URI.prototype = _hx_e();
 | 
						|
 | 
						|
__xrfragment_URI.prototype.__class__ =  __xrfragment_URI
 | 
						|
 | 
						|
__xrfragment_XRF.new = function(_fragment,_flags,_index) 
 | 
						|
  local self = _hx_new(__xrfragment_XRF.prototype)
 | 
						|
  __xrfragment_XRF.super(self,_fragment,_flags,_index)
 | 
						|
  return self
 | 
						|
end
 | 
						|
__xrfragment_XRF.super = function(self,_fragment,_flags,_index) 
 | 
						|
  self.floats = Array.new();
 | 
						|
  self.shift = Array.new();
 | 
						|
  self.fragment = _fragment;
 | 
						|
  self.flags = _flags;
 | 
						|
  self.index = _index;
 | 
						|
end
 | 
						|
_hx_exports["xrfragment"]["XRF"] = __xrfragment_XRF
 | 
						|
__xrfragment_XRF.__name__ = true
 | 
						|
__xrfragment_XRF.set = function(flag,flags) 
 | 
						|
  do return _hx_bit.bor(flags,flag) end;
 | 
						|
end
 | 
						|
__xrfragment_XRF.unset = function(flag,flags) 
 | 
						|
  do return _hx_bit.band(flags,_hx_bit.bnot(flag)) end;
 | 
						|
end
 | 
						|
__xrfragment_XRF.prototype = _hx_e();
 | 
						|
__xrfragment_XRF.prototype.is = function(self,flag) 
 | 
						|
  if (not __lua_Boot.__instanceof(self.flags, Int)) then 
 | 
						|
    self.flags = 0;
 | 
						|
  end;
 | 
						|
  do return (_hx_bit.band(self.flags,flag)) ~= 0 end
 | 
						|
end
 | 
						|
__xrfragment_XRF.prototype.validate = function(self,value) 
 | 
						|
  self:guessType(self, value);
 | 
						|
  local ok = true;
 | 
						|
  if ((__lua_lib_luautf8_Utf8.len(value) == 0) and not self:is(__xrfragment_XRF.T_PREDEFINED_VIEW)) then 
 | 
						|
    ok = false;
 | 
						|
  end;
 | 
						|
  if ((not self:is(__xrfragment_XRF.T_FLOAT) and self:is(__xrfragment_XRF.T_VECTOR2)) and not (__lua_Boot.__instanceof(self.x, Float) and __lua_Boot.__instanceof(self.y, Float))) then 
 | 
						|
    ok = false;
 | 
						|
  end;
 | 
						|
  if ((not (self:is(__xrfragment_XRF.T_VECTOR2) or self:is(__xrfragment_XRF.T_STRING)) and self:is(__xrfragment_XRF.T_VECTOR3)) and not ((__lua_Boot.__instanceof(self.x, Float) and __lua_Boot.__instanceof(self.y, Float)) and __lua_Boot.__instanceof(self.z, Float))) then 
 | 
						|
    ok = false;
 | 
						|
  end;
 | 
						|
  do return ok end
 | 
						|
end
 | 
						|
__xrfragment_XRF.prototype.guessType = function(self,v,str) 
 | 
						|
  v.string = str;
 | 
						|
  if (__xrfragment_XRF.isReset:match(v.fragment)) then 
 | 
						|
    v.reset = true;
 | 
						|
  end;
 | 
						|
  if (v.fragment == "loop") then 
 | 
						|
    v.loop = true;
 | 
						|
  end;
 | 
						|
  if (not __lua_Boot.__instanceof(str, String)) then 
 | 
						|
    do return end;
 | 
						|
  end;
 | 
						|
  if (__lua_lib_luautf8_Utf8.len(str) > 0) then 
 | 
						|
    if (__xrfragment_XRF.isXRFScheme:match(str)) then 
 | 
						|
      v.xrfScheme = true;
 | 
						|
      str = __xrfragment_XRF.isXRFScheme:replace(str, "");
 | 
						|
      v.string = str;
 | 
						|
    end;
 | 
						|
    if (String.prototype.split(str, ",").length > 1) then 
 | 
						|
      local xyzn = String.prototype.split(str, ",");
 | 
						|
      if (xyzn.length > 0) then 
 | 
						|
        v.x = Std.parseFloat(xyzn[0]);
 | 
						|
      end;
 | 
						|
      if (xyzn.length > 1) then 
 | 
						|
        v.y = Std.parseFloat(xyzn[1]);
 | 
						|
      end;
 | 
						|
      if (xyzn.length > 2) then 
 | 
						|
        v.z = Std.parseFloat(xyzn[2]);
 | 
						|
      end;
 | 
						|
      local _g = 0;
 | 
						|
      local _g1 = xyzn.length;
 | 
						|
      while (_g < _g1) do _hx_do_first_1 = false;
 | 
						|
        
 | 
						|
        _g = _g + 1;
 | 
						|
        local i = _g - 1;
 | 
						|
        v.shift:push(__xrfragment_XRF.isShift:match(xyzn[i]));
 | 
						|
        v.floats:push(Std.parseFloat(__xrfragment_XRF.isShift:replace(xyzn[i], "")));
 | 
						|
      end;
 | 
						|
    end;
 | 
						|
    if (__xrfragment_XRF.isColor:match(str)) then 
 | 
						|
      v.color = str;
 | 
						|
    end;
 | 
						|
    if (__xrfragment_XRF.isFloat:match(str)) then 
 | 
						|
      v.x = Std.parseFloat(str);
 | 
						|
      v.float = v.x;
 | 
						|
    end;
 | 
						|
    if (__xrfragment_XRF.isInt:match(str)) then 
 | 
						|
      v.int = Std.parseInt(str);
 | 
						|
      v.x = v.int;
 | 
						|
      v.floats:push(v.x);
 | 
						|
    end;
 | 
						|
    v.filter = __xrfragment_Filter.new(Std.string(Std.string(v.fragment) .. Std.string("=")) .. Std.string(v.string));
 | 
						|
  else
 | 
						|
    v.filter = __xrfragment_Filter.new(v.fragment);
 | 
						|
  end;
 | 
						|
end
 | 
						|
 | 
						|
__xrfragment_XRF.prototype.__class__ =  __xrfragment_XRF
 | 
						|
local hasBit32, bit32 = pcall(require, 'bit32')
 | 
						|
if hasBit32 then --if we are on Lua 5.1, bit32 will be the default.
 | 
						|
  _hx_bit_raw = bit32
 | 
						|
  _hx_bit = setmetatable({}, { __index = _hx_bit_raw })
 | 
						|
  -- lua 5.2 weirdness
 | 
						|
  _hx_bit.bnot = function(...) return _hx_bit_clamp(_hx_bit_raw.bnot(...)) end
 | 
						|
  _hx_bit.bxor = function(...) return _hx_bit_clamp(_hx_bit_raw.bxor(...)) end
 | 
						|
else
 | 
						|
  --If we do not have bit32, fallback to 'bit'
 | 
						|
  local hasBit, bit = pcall(require, 'bit')
 | 
						|
  if not hasBit then
 | 
						|
    error("Failed to load bit or bit32")
 | 
						|
  end
 | 
						|
  _hx_bit_raw = bit
 | 
						|
  _hx_bit = setmetatable({}, { __index = _hx_bit_raw })
 | 
						|
end
 | 
						|
 | 
						|
-- see https://github.com/HaxeFoundation/haxe/issues/8849
 | 
						|
_hx_bit.bor = function(...) return _hx_bit_clamp(_hx_bit_raw.bor(...)) end
 | 
						|
_hx_bit.band = function(...) return _hx_bit_clamp(_hx_bit_raw.band(...)) end
 | 
						|
_hx_bit.arshift = function(...) return _hx_bit_clamp(_hx_bit_raw.arshift(...)) end
 | 
						|
 | 
						|
if _hx_bit_raw then
 | 
						|
    _hx_bit_clamp = function(v)
 | 
						|
    if v <= 2147483647 and v >= -2147483648 then
 | 
						|
        if v > 0 then return _G.math.floor(v)
 | 
						|
        else return _G.math.ceil(v)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    if v > 2251798999999999 then v = v*2 end;
 | 
						|
    if (v ~= v or math.abs(v) == _G.math.huge) then return nil end
 | 
						|
    return _hx_bit_raw.band(v, 2147483647 ) - math.abs(_hx_bit_raw.band(v, 2147483648))
 | 
						|
    end
 | 
						|
else
 | 
						|
    _hx_bit_clamp = function(v)
 | 
						|
        if v < -2147483648 then
 | 
						|
            return -2147483648
 | 
						|
        elseif v > 2147483647 then
 | 
						|
            return 2147483647
 | 
						|
        elseif v > 0 then
 | 
						|
            return _G.math.floor(v)
 | 
						|
        else
 | 
						|
            return _G.math.ceil(v)
 | 
						|
        end
 | 
						|
    end
 | 
						|
end;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
_hx_array_mt.__index = Array.prototype
 | 
						|
 | 
						|
if package.loaded.luv then
 | 
						|
  _hx_luv = _G.require("luv");
 | 
						|
else
 | 
						|
  _hx_luv = {
 | 
						|
    run=function(mode) return false end,
 | 
						|
    loop_alive=function() return false end
 | 
						|
  }
 | 
						|
end
 | 
						|
local _hx_static_init = function()
 | 
						|
  
 | 
						|
  if (__lua_lib_lrexlib_Rex == nil) then 
 | 
						|
    _G.error(__haxe_Exception.thrown("Rex is missing.  Please install lrexlib-pcre2."),0);
 | 
						|
  end;
 | 
						|
  String.__name__ = true;
 | 
						|
  Array.__name__ = true;EReg.FLAGS = __lua_lib_lrexlib_Rex.flags();
 | 
						|
  
 | 
						|
  __haxe_Template.splitter = EReg.new("(::[A-Za-z0-9_ ()&|!+=/><*.\"-]+::|\\$\\$([A-Za-z0-9_-]+)\\()", "");
 | 
						|
  
 | 
						|
  __haxe_Template.expr_splitter = EReg.new("(\\(|\\)|[ \r\n\t]*\"[^\"]*\"[ \r\n\t]*|[!+=/><*.&|-]+)", "");
 | 
						|
  
 | 
						|
  __haxe_Template.expr_trim = EReg.new("^[ ]*([^ ]+)[ ]*$", "");
 | 
						|
  
 | 
						|
  __haxe_Template.expr_int = EReg.new("^[0-9]+$", "");
 | 
						|
  
 | 
						|
  __haxe_Template.expr_float = EReg.new("^([+-]?)(?=\\d|,\\d)\\d*(,\\d*)?([Ee]([+-]?\\d+))?$", "");
 | 
						|
  
 | 
						|
  __haxe_Template.globals = _hx_e();
 | 
						|
  
 | 
						|
  __haxe_Template.hxKeepArrayIterator = __haxe_iterators_ArrayIterator.new(_hx_tab_array({}, 0));
 | 
						|
  
 | 
						|
  __haxe_ds_StringMap.tnull = ({});
 | 
						|
  
 | 
						|
  __xrfragment_Parser.error = "";
 | 
						|
  
 | 
						|
  __xrfragment_Parser.debug = false;
 | 
						|
  
 | 
						|
  __xrfragment_URI.__meta__ = _hx_o({__fields__={statics=true},statics=_hx_o({__fields__={template=true},template=_hx_o({__fields__={keep=true},keep=nil})})});
 | 
						|
  
 | 
						|
  __xrfragment_URI._parts = _hx_tab_array({[0]="source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "fragment"}, 14);
 | 
						|
  
 | 
						|
  __xrfragment_XRF.IMMUTABLE = 1;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.PROP_BIND = 2;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.QUERY_OPERATOR = 4;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.PROMPT = 8;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.CUSTOMFRAG = 16;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.NAVIGATOR = 32;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.METADATA = 64;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.PV_OVERRIDE = 128;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.PV_EXECUTE = 256;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_COLOR = 8192;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_INT = 16384;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_FLOAT = 32768;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_VECTOR2 = 65536;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_VECTOR3 = 131072;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_URL = 262144;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_PREDEFINED_VIEW = 524288;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_STRING = 1048576;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_MEDIAFRAG = 2097152;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_DYNAMICKEY = 4194304;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.T_DYNAMICKEYVALUE = 8388608;
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isColor = EReg.new("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isInt = EReg.new("^[-0-9]+$", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isFloat = EReg.new("^[-0-9]+\\.[0-9]+$", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isVector = EReg.new("([,]+|\\w)", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isUrl = EReg.new("(://)?\\..*", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isUrlOrPretypedView = EReg.new("(^#|://)?\\..*", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isString = EReg.new(".*", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.operators = EReg.new("(^[-]|^[!]|[\\*]$)", "g");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isProp = EReg.new("^.*=[><=]?", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isExclude = EReg.new("^-", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isDeep = EReg.new("\\*", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isNumber = EReg.new("^[0-9\\.]+$", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isMediaFrag = EReg.new("^([0-9\\.,\\*+-]+)$", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isReset = EReg.new("^!", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isShift = EReg.new("^(\\+|--)", "");
 | 
						|
  
 | 
						|
  __xrfragment_XRF.isXRFScheme = EReg.new("^xrf://", "");
 | 
						|
  
 | 
						|
  
 | 
						|
end
 | 
						|
 | 
						|
_hx_bind = function(o,m)
 | 
						|
  if m == nil then return nil end;
 | 
						|
  local f;
 | 
						|
  if o._hx__closures == nil then
 | 
						|
    _G.rawset(o, '_hx__closures', {});
 | 
						|
  else
 | 
						|
    f = o._hx__closures[m];
 | 
						|
  end
 | 
						|
  if (f == nil) then
 | 
						|
    f = function(...) return m(o, ...) end;
 | 
						|
    o._hx__closures[m] = f;
 | 
						|
  end
 | 
						|
  return f;
 | 
						|
end
 | 
						|
 | 
						|
_hx_print = print or (function() end)
 | 
						|
 | 
						|
_hx_table = {}
 | 
						|
_hx_table.pack = _G.table.pack or function(...)
 | 
						|
    return {...}
 | 
						|
end
 | 
						|
_hx_table.unpack = _G.table.unpack or _G.unpack
 | 
						|
_hx_table.maxn = _G.table.maxn or function(t)
 | 
						|
  local maxn=0;
 | 
						|
  for i in pairs(t) do
 | 
						|
    maxn=type(i)=='number'and i>maxn and i or maxn
 | 
						|
  end
 | 
						|
  return maxn
 | 
						|
end;
 | 
						|
 | 
						|
_hx_wrap_if_string_field = function(o, fld)
 | 
						|
  if _G.type(o) == 'string' then
 | 
						|
    if fld == 'length' then
 | 
						|
      return _G.string.len(o)
 | 
						|
    else
 | 
						|
      return String.prototype[fld]
 | 
						|
    end
 | 
						|
  else
 | 
						|
    return o[fld]
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
_hx_dyn_add = function(a,b)
 | 
						|
  if (_G.type(a) == 'string' or _G.type(b) == 'string') then
 | 
						|
    return Std.string(a)..Std.string(b)
 | 
						|
  else
 | 
						|
    return a + b;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
function _hx_handle_error(obj)
 | 
						|
  local message = tostring(obj)
 | 
						|
  if _G.debug and _G.debug.traceback then
 | 
						|
    -- level 2 to skip _hx_handle_error
 | 
						|
    message = _G.debug.traceback(message, 2)
 | 
						|
  end
 | 
						|
  return setmetatable({}, { __tostring = function() return message end })
 | 
						|
end
 | 
						|
 | 
						|
_hx_static_init();
 | 
						|
return _hx_exports
 |