{"version":3,"sources":["formatters/global.js","formatters/any.js","formatters/array.js","formatters/boolean.js","formatters/date.js","formatters/number.js","formatters/string.js","formatters/object.js"],"names":["pad","s","n","slice","dmx","Formatters","default","value","defaultValue","bool","Boolean","string","String","number","Number","date","obj","parseDate","console","warn","toString","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","formatDate","validDate","toBool","toDate","toJSON","JSON","stringify","toNumber","toTimestamp","Math","floor","getTime","toUTCDate","toISOString","toISODate","toISOTime","incMilliseconds","propCheck","toKeyedObject","array","key","newObj","staticKey","test","staticVal","ai","length","item","parse","DataScope","this","hasItems","contains","indexOf","join","separator","count","top","last","first","get","index","begin","end","reverse","randomize","t","r","rnd","randomizer","seed","hashCode","i","filter","expression","scope","repeatItems","map","where","prop","operator","val","substr","search","stringLen","searchLen","outer","j","char","charCodeAt","values","static","groupBy","reduce","push","unique","Object","keys","sort","a","b","min","Infinity","max","sum","avg","then","trueValue","falseValue","months","monthsShort","days","daysShort","isNumber","resetTime","setHours","setMinutes","setSeconds","setMilliseconds","getYear","str","getDay","addYears","setFullYear","addMonths","setMonth","addWeeks","setDate","addDays","addHours","addMinutes","addSeconds","addMilliseconds","yearsUntil","str1","str2","date1","date2","monthsUntil","weeksUntil","daysUntil","round","hoursUntil","minutesUntil","secondsUntil","millisecondsUntil","timeUntil","incHours","seconds","minutes","hours","format","year","month","day","weekday","replace","part","inRange","abs","ceil","pow","exponent","per","amount","perOf","total","precision","factor","temp","neg","toFixed","decimals","formatNumber","delimiter","isNaN","isFinite","x","split","x1","x2","re","formatPercentage","formatCurrency","unit","formatSize","binary","base","suffix","startsWith","endsWith","pos","lastIndexOf","notContains","matchAll","word","fuzzySearch","regexp","lowercase","toLowerCase","uppercase","toUpperCase","slugify","a2","a3","a5","a7","a9","aa","ae","b2","b3","b5","b6","b9","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f8","f9","fa","fb","fc","fd","ff","camelize","trim","c","capitalize","dasherize","humanize","underscore","titlecase","camelcase","start","substring","RegExp","escapeRegExp","trimLeft","trimRight","concat","string2","trunc","charsAllowed","useWordBoundary","append","stripTags","padStart","filler","rem","padEnd","repeat","out","wordCount","parseJSON","object","hasKey","hasValue","getValueOrKey"],"mappings":"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AAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA8H,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,M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","file":"../dmxFormatter/dmxFormatter.js","sourcesContent":["(function() {\r\n\r\n dmx.Formatters('global', {\r\n\r\n // default(value:Any, defaultValue:Any):Any\r\n default: function(value, defaultValue) {\r\n return value == null ? defaultValue : value;\r\n },\r\n\r\n // bool(value:Any):Boolean\r\n bool: function(value) {\r\n return Boolean(value);\r\n },\r\n\r\n // string(value:Any):String\r\n string: function(value) {\r\n return String(value);\r\n },\r\n\r\n // number(value:Any):String\r\n number: function(value) {\r\n return Number(value);\r\n },\r\n\r\n // date(value:Any):String\r\n date: function(value) {\r\n var date = dmx.parseDate(value);\r\n if (!validDate(date)) return undefined;\r\n return formatDate(date);\r\n },\r\n\r\n });\r\n\r\n function pad(s, n) {\r\n return ('0000' + n).slice(-s);\r\n }\r\n\r\n function formatDate(date) {\r\n return pad(4, date.getFullYear()) + '-' +\r\n pad(2, date.getMonth() + 1) + '-' +\r\n pad(2, date.getDate()) + 'T' +\r\n pad(2, date.getHours()) + ':' +\r\n pad(2, date.getMinutes()) + ':' +\r\n pad(2, date.getSeconds()) + '.' +\r\n pad(3, date.getMilliseconds());\r\n }\r\n\r\n function validDate(obj) {\r\n console.warn('Invalid date object', obj);\r\n return obj && obj.toString() != 'Invalid Date';\r\n }\r\n\r\n})();","(function() {\r\n\r\n dmx.Formatters('any', {\r\n\r\n // default(defaultValue:Any):Any\r\n default: function(obj, defaultValue) {\r\n return obj == null ? defaultValue : obj;\r\n },\r\n\r\n // toBool():Boolean\r\n toBool: function(obj) {\r\n return Boolean(obj);\r\n },\r\n\r\n // toDate():String\r\n toDate: function(obj) {\r\n var date = dmx.parseDate(obj);\r\n if (!validDate(date)) return undefined;\r\n return formatDate(date);\r\n },\r\n\r\n // toJSON():String\r\n toJSON: function(obj) {\r\n return JSON.stringify(obj);\r\n },\r\n \r\n // toNumber():Number\r\n toNumber: function(obj) {\r\n return Number(obj);\r\n },\r\n\r\n // toString():String\r\n toString: function(obj) {\r\n return String(obj);\r\n },\r\n\r\n // toTimestamp():Number\r\n toTimestamp: function(obj) {\r\n var date = dmx.parseDate(obj);\r\n if (!validDate(date)) return undefined;\r\n return Math.floor(date.getTime() / 1000);\r\n },\r\n\r\n // toUTCDate():String\r\n toUTCDate: function(obj) {\r\n var date = dmx.parseDate(obj);\r\n\r\n if (date.toString() == 'Invalid Date') {\r\n return undefined;\r\n }\r\n\r\n return date.toISOString();\r\n },\r\n\r\n // toISODate():String\r\n toISODate: function(obj) {\r\n var date = dmx.parseDate(obj);\r\n if (!validDate(date)) return undefined;\r\n return pad(4, date.getFullYear()) + '-' + pad(2, date.getMonth() + 1) + '-' + pad(2, date.getDate());\r\n },\r\n\r\n // toISOTime(incMilliseconds:Boolean):String\r\n toISOTime: function(obj, incMilliseconds) {\r\n var date = dmx.parseDate(obj);\r\n if (!validDate(date)) return undefined;\r\n return pad(2, date.getHours()) + ':' + pad(2, date.getMinutes()) + ':' + pad(2, date.getSeconds()) +\r\n (incMilliseconds ? '.' + pad(3, date.getMilliseconds()) : '');\r\n },\r\n \r\n });\r\n\r\n function pad(s, n) {\r\n return ('0000' + n).slice(-s);\r\n }\r\n\r\n function formatDate(date) {\r\n return pad(4, date.getFullYear()) + '-' +\r\n pad(2, date.getMonth() + 1) + '-' +\r\n pad(2, date.getDate()) + 'T' +\r\n pad(2, date.getHours()) + ':' +\r\n pad(2, date.getMinutes()) + ':' +\r\n pad(2, date.getSeconds()) + '.' +\r\n pad(3, date.getMilliseconds());\r\n }\r\n\r\n function validDate(obj) {\r\n return obj && obj.toString() != 'Invalid Date';\r\n }\r\n\r\n})();","dmx.propCheck = /^\\w+$/;\r\n\r\ndmx.Formatters('array', {\r\n\r\n //toKeyedObject(): object\r\n toKeyedObject: function(array, key, value) {\r\n var newObj = {}, scope = this;;\r\n var staticKey = dmx.propCheck.test(key);\r\n var staticVal = dmx.propCheck.test(value);\r\n\r\n for (var ai=0; ai < array.length; ai++) {\r\n var item = array[ai];\r\n var prop = staticKey ? item[key] : dmx.parse(key, new dmx.DataScope(item, scope));\r\n newObj[prop] = staticVal ? item[value] : dmx.parse(value, new dmx.DataScope(item, scope));\r\n }\r\n return newObj;\r\n },\r\n\r\n // hasItems():Boolean\r\n hasItems: function(array) {\r\n return !!array.length;\r\n },\r\n\r\n // contains(value:Any):Boolean\r\n contains: function(array, value) {\r\n return array.indexOf(value) > -1;\r\n },\r\n\r\n // join(separator:String):String\r\n join: function(array, separator) {\r\n return array.join(separator);\r\n },\r\n\r\n // count():Number\r\n count: function(array) {\r\n return array.length;\r\n },\r\n\r\n // top(count:Number):Array\r\n top: function(array, count) {\r\n return array.slice(0, count);\r\n },\r\n\r\n // last(count:Number):Array\r\n // last():*\r\n last: function(array, count) {\r\n if (count == null) return array[array.length - 1];\r\n return array.slice(-count);\r\n },\r\n\r\n // first():*\r\n first: function(array) {\r\n return array[0];\r\n },\r\n\r\n // get(index:Number):*\r\n get: function(array, index) {\r\n return array[index];\r\n },\r\n\r\n // slice([begin:Number], [end:Number])\r\n slice: function(array, begin, end) {\r\n return array.slice(begin, end);\r\n },\r\n\r\n // reverse():Array\r\n reverse: function(array) {\r\n return array.slice(0).reverse();\r\n },\r\n\r\n // randomize():Array\r\n randomize: function(array) {\r\n var rnd = dmx.randomizer(this.seed * dmx.hashCode(array));\r\n var i = array.length, t, r;\r\n\r\n array = array.slice(0);\r\n\r\n while (0 !== i) {\r\n r = Math.floor(rnd() * i--);\r\n t = array[i];\r\n array[i] = array[r];\r\n array[r] = t;\r\n }\r\n\r\n return array;\r\n },\r\n\r\n // Collection formatters (requires array with objects in them)\r\n\r\n // filter(expression:Expression):Array\r\n filter: function(array, expression) {\r\n var scope = this;\r\n\r\n if (expression[0] == '$') {\r\n array = dmx.repeatItems(array);\r\n }\r\n \r\n return array.filter(function(item) {\r\n return dmx.parse(expression, new dmx.DataScope(item, scope));\r\n });\r\n },\r\n\r\n // map(expression:Expression):Array\r\n map: function(array, expression) {\r\n var scope = this;\r\n\r\n if (expression[0] == '$') {\r\n array = dmx.repeatItems(array);\r\n }\r\n\r\n return array.map(function(item) {\r\n return dmx.parse(expression, new dmx.DataScope(item, scope));\r\n });\r\n },\r\n\r\n // where(prop:String, value:String, [operator:String]):Array\r\n where: function(array, prop, value, operator) {\r\n var scope = this;\r\n\r\n operator = operator || '==';\r\n\r\n if (prop[0] == '$') {\r\n array = dmx.repeatItems(array);\r\n }\r\n\r\n return array.filter(function(item) {\r\n var val = dmx.propCheck.test(prop) ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, scope));\r\n\r\n switch (operator) {\r\n case 'startsWith': return String(val).indexOf(value) === 0;\r\n case 'endsWith': return String(val).substr(-value.length) === value;\r\n case 'contains': return String(val).indexOf(value) !== -1;\r\n case 'notContains': return String(val).indexOf(value) === -1;\r\n case 'inArray': return value.indexOf(val) !== -1;\r\n case 'notInArray': return value.indexOf(val) === -1;\r\n case 'fuzzySearch': return (function(string, search) {\r\n var stringLen = string.length;\r\n var searchLen = search.length;\r\n if (searchLen > stringLen) {\r\n return false;\r\n }\r\n if (searchLen === stringLen) {\r\n return string === search;\r\n }\r\n outer: for (var i = 0, j = 0; i < searchLen; i++) {\r\n var char = search.charCodeAt(i);\r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n return false;\r\n }\r\n return true;\r\n })(String(val), value);\r\n case '==': return val == value;\r\n case '===': return val === value;\r\n case '!=': return val != value;\r\n case '!==': return val !== value;\r\n case '<': return val < value;\r\n case '<=': return val <= value;\r\n case '>': return val > value;\r\n case '>=': return val >= value;\r\n }\r\n\r\n return true;\r\n });\r\n },\r\n\r\n // values(prop:String):Array\r\n values: function(array, prop) {\r\n var scope = this;\r\n var static = dmx.propCheck.test(prop);\r\n\r\n return array.map(function(item) {\r\n return static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, scope));\r\n });\r\n },\r\n\r\n // groupBy(prop:String):Object\r\n groupBy: function(array, prop) {\r\n var scope = this;\r\n var static = dmx.propCheck.test(prop);\r\n \r\n return array.reduce(function(obj, item) {\r\n var key = static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, scope));\r\n if (!obj[key]) obj[key] = [];\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n },\r\n\r\n // unique([prop:String]):Array\r\n unique: function(array, prop) {\r\n if (prop) {\r\n var scope = this;\r\n var static = dmx.propCheck.test(prop);\r\n\r\n array = array.map(function(item) {\r\n return static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, scope));\r\n });\r\n }\r\n\r\n return Object.keys(array.reduce(function(obj, value) {\r\n obj[JSON.stringify(value)] = 1;\r\n return obj;\r\n }, {})).map(function(key) {\r\n return JSON.parse(key);\r\n });\r\n },\r\n\r\n // sortOn([prop:String]):Array\r\n sort: function(array, prop) {\r\n var scope = this;\r\n var static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.slice(0).sort(function(a, b) {\r\n if (prop) {\r\n a = static ? a[prop] : dmx.parse(prop, new dmx.DataScope(a, scope));\r\n b = static ? b[prop] : dmx.parse(prop, new dmx.DataScope(b, scope));\r\n }\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n });\r\n },\r\n\r\n // min([prop:String]):Number\r\n min: function(array, prop) {\r\n var scope = this;\r\n var static = !prop || dmx.propCheck.test(prop);\r\n \r\n return array.reduce(function(min, value) {\r\n if (prop) {\r\n value = static ? value[prop] : dmx.parse(prop, new dmx.DataScope(value, scope));\r\n }\r\n value = Number(value);\r\n return value < min ? value : min;\r\n }, Infinity);\r\n },\r\n\r\n // max([prop:String]):Number\r\n max: function(array, prop) {\r\n var scope = this;\r\n var static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.reduce(function(max, value) {\r\n if (prop) {\r\n value = static ? value[prop] : dmx.parse(prop, new dmx.DataScope(value, scope));\r\n }\r\n value = Number(value);\r\n return value > max ? value : max;\r\n }, -Infinity);\r\n },\r\n\r\n // sum([prop:String]):Number\r\n sum: function(array, prop) {\r\n var scope = this;\r\n var static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.reduce(function(sum, value) {\r\n if (prop) {\r\n value = static ? value[prop] : dmx.parse(prop, new dmx.DataScope(value, scope));\r\n }\r\n value = Number(value);\r\n return sum + value;\r\n }, 0);\r\n },\r\n\r\n // avg([prop:String]):Number\r\n avg: function(array, prop) {\r\n var scope = this;\r\n var static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.reduce(function(sum, value) {\r\n if (prop) {\r\n value = static ? value[prop] : dmx.parse(prop, new dmx.DataScope(value, scope));\r\n }\r\n value = Number(value);\r\n return sum + value;\r\n }, 0) / array.length;\r\n },\r\n\r\n});\r\n","dmx.Formatters('boolean', {\r\n\r\n // then(trueValue:Any, falseValue:Any):Any\r\n then: function(bool, trueValue, falseValue) {\r\n return bool ? trueValue : falseValue;\r\n }\r\n\r\n});\r\n","(function() {\r\n\r\n var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n var monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n var daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\n dmx.Formatters('string', {\r\n\r\n // getYear():Number\r\n getYear: function(str) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n return date.getFullYear();\r\n },\r\n\r\n // getMonth():Number\r\n getMonth: function(str) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n return date.getMonth() + 1;\r\n },\r\n\r\n // getDate():Number\r\n getDate: function(str) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n return date.getDate();\r\n },\r\n\r\n // getDay():Number\r\n getDay: function(str) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n return date.getDay();\r\n },\r\n\r\n // addYears(n:Number):String\r\n addYears: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setFullYear(date.getFullYear() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addMonths(n:Number):String\r\n addMonths: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setMonth(date.getMonth() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addWeeks(n:Number):String\r\n addWeeks: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setDate(date.getDate() + (n * 7));\r\n return formatDate(date);\r\n },\r\n\r\n // addDays(n:Number):String\r\n addDays: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setDate(date.getDate() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addHours(n:Number):String\r\n addHours: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setHours(date.getHours() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addMinutes(n:Number):String\r\n addMinutes: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setMinutes(date.getMinutes() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addSeconds(n:Number):String\r\n addSeconds: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setSeconds(date.getSeconds() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // addMilliseconds(n:Number):String\r\n addMilliseconds: function(str, n) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n if (isNumber(n)) date.setMilliseconds(date.getMilliseconds() + n);\r\n return formatDate(date);\r\n },\r\n\r\n // yearsUntil(date:String):Number\r\n yearsUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return date2.getFullYear() - date1.getFullYear();\r\n },\r\n\r\n // monthsUntil(date:String):Number\r\n monthsUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return (date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth());\r\n },\r\n\r\n // weeksUntil(date:String):String\r\n weeksUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 604800000); // 7 * 24 * 60 * 60 * 1000\r\n },\r\n\r\n // daysUntil(date:String):Number\r\n daysUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n resetTime(date1);\r\n resetTime(date2);\r\n return Math.round((date2 - date1) / 86400000); // 24 * 60 * 60 * 1000\r\n },\r\n\r\n // hoursUntil(date:String):Number\r\n hoursUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 3600000); // 60 * 60 * 1000\r\n },\r\n\r\n // minutesUntil(date:String):Number\r\n minutesUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 60000); // 60 * 1000\r\n },\r\n\r\n // secondsUntil(date:String):Number\r\n secondsUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 1000);\r\n },\r\n\r\n // millisecondsUntil(date:String):Number\r\n millisecondsUntil: function(str1, str2) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n return date2 - date1;\r\n },\r\n\r\n // timeUntil(date:String, incHours:Boolean):String\r\n timeUntil: function(str1, str2, incHours) {\r\n var date1 = dmx.parseDate(str1);\r\n var date2 = dmx.parseDate(str2);\r\n if (!validDate(date1) || !validDate(date2)) return undefined;\r\n var seconds = Math.floor((date2 - date1) / 1000);\r\n var minutes = Math.floor(seconds / 60);\r\n var hours = Math.floor(minutes / 60);\r\n seconds -= minutes * 60;\r\n if (incHours) {\r\n minutes -= hours * 60;\r\n return hours + ':' + pad(2, minutes) + ':' + pad(2, seconds);\r\n }\r\n return minutes + ':' + pad(2, seconds);\r\n },\r\n\r\n // formatDate(format:String):String\r\n formatDate: function(str, format) {\r\n var date = dmx.parseDate(str);\r\n if (!validDate(date)) return undefined;\r\n var year = date.getFullYear();\r\n var month = date.getMonth();\r\n var day = date.getDate();\r\n var weekday = date.getDay();\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var seconds = date.getSeconds();\r\n return format.replace(/([yMdHhmsaA])(\\1+)?/g, function(part) {\r\n switch (part) {\r\n case 'yyyy': return pad(4, year);\r\n case 'yy': return pad(2, year);\r\n case 'y': return year;\r\n case 'MMMM': return months[month];\r\n case 'MMM': return monthsShort[month];\r\n case 'MM': return pad(2, month + 1);\r\n case 'M': return month + 1;\r\n case 'dddd': return days[weekday];\r\n case 'ddd': return daysShort[weekday];\r\n case 'dd': return pad(2, day);\r\n case 'd': return day;\r\n case 'HH': return pad(2, hours);\r\n case 'H': return hours;\r\n case 'hh': return pad(2, (hours % 12) || 12);\r\n case 'h': return (hours % 12) || 12;\r\n case 'mm': return pad(2, minutes);\r\n case 'm': return minutes;\r\n case 'ss': return pad(2, seconds);\r\n case 's': return seconds;\r\n case 'a': return hours < 12 ? 'am' : 'pm';\r\n case 'A': return hours < 12 ? 'AM' : 'PM';\r\n }\r\n return part;\r\n });\r\n },\r\n\r\n });\r\n\r\n function pad(s, n) {\r\n return ('0000' + n).slice(-s);\r\n }\r\n\r\n function formatDate(date) {\r\n return pad(4, date.getFullYear()) + '-' +\r\n pad(2, date.getMonth() + 1) + '-' +\r\n pad(2, date.getDate()) + 'T' +\r\n pad(2, date.getHours()) + ':' +\r\n pad(2, date.getMinutes()) + ':' +\r\n pad(2, date.getSeconds()) + '.' +\r\n pad(3, date.getMilliseconds());\r\n }\r\n\r\n function isNumber(n) {\r\n return Number(n) === n;\r\n }\r\n\r\n function resetTime(date) {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n }\r\n\r\n function validDate(obj) {\r\n return obj && obj.toString() != 'Invalid Date';\r\n }\r\n\r\n})();","dmx.Formatters('number', {\r\n\r\n // inRange(min:Number, max:Number):Boolean\r\n inRange: function(number, min, max) {\r\n return number >= min && number <= max;\r\n },\r\n\r\n // abs():Number\r\n abs: function(number) {\r\n return Math.abs(number);\r\n },\r\n\r\n // ceil():Number\r\n ceil: function(number) {\r\n return Math.ceil(number);\r\n },\r\n\r\n // floor():Number\r\n floor: function(number) {\r\n return Math.floor(number);\r\n },\r\n\r\n // max(max:Number):Number\r\n max: function(number, max) {\r\n return Math.max(number, max);\r\n },\r\n\r\n // min(min:Number):Number\r\n min: function(number, min) {\r\n return Math.min(number, min);\r\n },\r\n\r\n // pow(exponent:Number):Number\r\n pow: function(number, exponent) {\r\n return Math.pow(number, exponent);\r\n },\r\n\r\n // per(amount:Number):Number\r\n per: function(number, amount) {\r\n return number * amount / 100;\r\n },\r\n\r\n // perOf(total:Number):Number\r\n perOf: function(number, total) {\r\n return number / total;\r\n },\r\n\r\n // round([precision:Number]):Number\r\n round: function(number, precision) {\r\n var factor = Math.pow(10, precision || 0);\r\n var temp = number * factor;\r\n var rounded = Math.round(temp);\r\n return rounded / factor;\r\n },\r\n\r\n // pad(length:Number):String\r\n pad: function(number, length) {\r\n var neg = number < 0 ? '-' : '';\r\n var str = String(Math.abs(number));\r\n while (str.length < length) {\r\n str = '0' + str;\r\n }\r\n return neg + str;\r\n },\r\n\r\n // toFixed([decimals:Number]):String\r\n toFixed: function(number, decimals) {\r\n return number.toFixed(decimals);\r\n },\r\n\r\n // formatNumber([decimals:Number], [separator:String], [delimiter:String]):String\r\n formatNumber: function(number, decimals, separator, delimiter) {\r\n if (isNaN(number)) return 'Invalid Number';\r\n if (!isFinite(number)) return (number < 0 ? '-' : '') + 'infinite';\r\n\r\n separator = separator || '.';\r\n delimiter = delimiter || '';\r\n\r\n var neg = number < 0;\r\n number = Math.abs(number);\r\n var x = (decimals != null && decimals >= 0 ? number.toFixed(decimals) : number.toString()).split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n var re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + x1 + x2;\r\n },\r\n\r\n // formatPercentage([decimals:Number]):String\r\n formatPercentage: function(number, decimals) {\r\n var pow = Math.pow(10, decimals);\r\n return (Math.round(number * pow * 100) / pow) + '%';\r\n },\r\n\r\n // formatCurrency([unit:String], [separator:String], [delimiter:String], [precision:Number]):String\r\n formatCurrency: function(number, unit, separator, delimiter, precision) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Amount';\r\n\r\n unit = unit || '$';\r\n separator = separator || '.';\r\n delimiter = delimiter || ',';\r\n precision = precision != null ? precision : 2;\r\n\r\n var neg = number < 0;\r\n var x = Math.abs(number).toFixed(precision).split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n var re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + unit + x1 + x2;\r\n },\r\n\r\n // formatSize([decimals:Number], [binary:Boolean]):String\r\n formatSize: function(number, decimals, binary) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Size';\r\n\r\n decimals = decimals || 2;\r\n\r\n var base = binary ? 1024 : 1000;\r\n var suffix = binary ? ['KiB', 'MiB', 'GiB', 'TiB'] : ['KB', 'MB', 'GB', 'TB'];\r\n\r\n for (var i = 3; i >= 0; i--) {\r\n var n = Math.pow(base, i + 1);\r\n if (number >= n) {\r\n number /= n;\r\n var pow = Math.pow(10, decimals);\r\n number = Math.round(number * pow) / pow;\r\n return number + suffix[i];\r\n }\r\n }\r\n\r\n return number + 'B';\r\n },\r\n\r\n // TODO: use localization, Intl from browser? (polyfill => https://github.com/andyearnshaw/Intl.js/)\r\n // format, toString, currency, toLocale, bytes\r\n\r\n});\r\n","(function() {\r\n\r\n dmx.Formatters('string', {\r\n\r\n // startWith(search:String):Boolean\r\n startsWith: function(string, search) {\r\n return string.indexOf(search) === 0;\r\n },\r\n\r\n // endsWith(search:String):Boolean\r\n endsWith: function(string, search) {\r\n var pos = string.length - search.length;\r\n var index = string.lastIndexOf(search);\r\n return index !== -1 && index === pos;\r\n },\r\n\r\n // contains(search:String):Boolean\r\n contains: function(string, search) {\r\n return string.indexOf(search) !== -1;\r\n },\r\n\r\n // notContains(search:String):Boolean\r\n notContains: function(string, search) {\r\n return string.indexOf(search) === -1;\r\n },\r\n\r\n search: function(string, search, matchAll) {\r\n return String(search).split(/\\s+/)[matchAll ? 'every' : 'some'](function(word) {\r\n return string.indexOf(word) !== -1;\r\n });\r\n },\r\n\r\n // fuzzySearch(search:String):Boolean\r\n fuzzySearch: function(string, search) {\r\n var stringLen = string.length;\r\n var searchLen = search.length;\r\n if (searchLen > stringLen) {\r\n return false;\r\n }\r\n if (searchLen === stringLen) {\r\n return string === search;\r\n }\r\n outer: for (var i = 0, j = 0; i < searchLen; i++) {\r\n var char = search.charCodeAt(i);\r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n\r\n // test(regexp:RegExp):Boolean\r\n test: function(string, regexp) {\r\n return regexp.test(string);\r\n },\r\n\r\n // lowercase():String\r\n lowercase: function(string) {\r\n return string.toLowerCase();\r\n },\r\n\r\n // uppercase():String\r\n uppercase: function(string) {\r\n return string.toUpperCase();\r\n },\r\n\r\n // slugify():String\r\n slugify: function(string) {\r\n var map = {\"2d\":\"-\",\"20\":\"-\",\"24\":\"s\",\"26\":\"and\",\"30\":\"0\",\"31\":\"1\",\"32\":\"2\",\"33\":\"3\",\"34\":\"4\",\"35\":\"5\",\"36\":\"6\",\"37\":\"7\",\"38\":\"8\",\"39\":\"9\",\"41\":\"A\",\"42\":\"B\",\"43\":\"C\",\"44\":\"D\",\"45\":\"E\",\"46\":\"F\",\"47\":\"G\",\"48\":\"H\",\"49\":\"I\",\"50\":\"P\",\"51\":\"Q\",\"52\":\"R\",\"53\":\"S\",\"54\":\"T\",\"55\":\"U\",\"56\":\"V\",\"57\":\"W\",\"58\":\"X\",\"59\":\"Y\",\"61\":\"a\",\"62\":\"b\",\"63\":\"c\",\"64\":\"d\",\"65\":\"e\",\"66\":\"f\",\"67\":\"g\",\"68\":\"h\",\"69\":\"i\",\"70\":\"p\",\"71\":\"q\",\"72\":\"r\",\"73\":\"s\",\"74\":\"t\",\"75\":\"u\",\"76\":\"v\",\"77\":\"w\",\"78\":\"x\",\"79\":\"y\",\"100\":\"A\",\"101\":\"a\",\"102\":\"A\",\"103\":\"a\",\"104\":\"A\",\"105\":\"a\",\"106\":\"C\",\"107\":\"c\",\"108\":\"C\",\"109\":\"c\",\"110\":\"D\",\"111\":\"d\",\"112\":\"E\",\"113\":\"e\",\"114\":\"E\",\"115\":\"e\",\"116\":\"E\",\"117\":\"e\",\"118\":\"E\",\"119\":\"e\",\"120\":\"G\",\"121\":\"g\",\"122\":\"G\",\"123\":\"g\",\"124\":\"H\",\"125\":\"h\",\"126\":\"H\",\"127\":\"h\",\"128\":\"I\",\"129\":\"i\",\"130\":\"I\",\"131\":\"i\",\"132\":\"IJ\",\"133\":\"ij\",\"134\":\"J\",\"135\":\"j\",\"136\":\"K\",\"137\":\"k\",\"138\":\"k\",\"139\":\"L\",\"140\":\"l\",\"141\":\"L\",\"142\":\"l\",\"143\":\"N\",\"144\":\"n\",\"145\":\"N\",\"146\":\"n\",\"147\":\"N\",\"148\":\"n\",\"149\":\"n\",\"150\":\"O\",\"151\":\"o\",\"152\":\"OE\",\"153\":\"oe\",\"154\":\"R\",\"155\":\"r\",\"156\":\"R\",\"157\":\"r\",\"158\":\"R\",\"159\":\"r\",\"160\":\"S\",\"161\":\"s\",\"162\":\"T\",\"163\":\"t\",\"164\":\"T\",\"165\":\"t\",\"166\":\"T\",\"167\":\"t\",\"168\":\"U\",\"169\":\"u\",\"170\":\"U\",\"171\":\"u\",\"172\":\"U\",\"173\":\"u\",\"174\":\"W\",\"175\":\"w\",\"176\":\"Y\",\"177\":\"y\",\"178\":\"Y\",\"179\":\"Z\",\"180\":\"b\",\"181\":\"B\",\"182\":\"b\",\"183\":\"b\",\"184\":\"b\",\"185\":\"b\",\"186\":\"C\",\"187\":\"C\",\"188\":\"c\",\"189\":\"D\",\"190\":\"E\",\"191\":\"F\",\"192\":\"f\",\"193\":\"G\",\"194\":\"Y\",\"195\":\"h\",\"196\":\"i\",\"197\":\"I\",\"198\":\"K\",\"199\":\"k\",\"200\":\"A\",\"201\":\"a\",\"202\":\"A\",\"203\":\"a\",\"204\":\"E\",\"205\":\"e\",\"206\":\"E\",\"207\":\"e\",\"208\":\"I\",\"209\":\"i\",\"210\":\"R\",\"211\":\"r\",\"212\":\"R\",\"213\":\"r\",\"214\":\"U\",\"215\":\"u\",\"216\":\"U\",\"217\":\"u\",\"218\":\"S\",\"219\":\"s\",\"220\":\"n\",\"221\":\"d\",\"222\":\"8\",\"223\":\"8\",\"224\":\"Z\",\"225\":\"z\",\"226\":\"A\",\"227\":\"a\",\"228\":\"E\",\"229\":\"e\",\"230\":\"O\",\"231\":\"o\",\"232\":\"Y\",\"233\":\"y\",\"234\":\"l\",\"235\":\"n\",\"236\":\"t\",\"237\":\"j\",\"238\":\"db\",\"239\":\"qp\",\"240\":\"<\",\"241\":\"?\",\"242\":\"?\",\"243\":\"B\",\"244\":\"U\",\"245\":\"A\",\"246\":\"E\",\"247\":\"e\",\"248\":\"J\",\"249\":\"j\",\"250\":\"a\",\"251\":\"a\",\"252\":\"a\",\"253\":\"b\",\"254\":\"c\",\"255\":\"e\",\"256\":\"d\",\"257\":\"d\",\"258\":\"e\",\"259\":\"e\",\"260\":\"g\",\"261\":\"g\",\"262\":\"g\",\"263\":\"Y\",\"264\":\"x\",\"265\":\"u\",\"266\":\"h\",\"267\":\"h\",\"268\":\"i\",\"269\":\"i\",\"270\":\"w\",\"271\":\"m\",\"272\":\"n\",\"273\":\"n\",\"274\":\"N\",\"275\":\"o\",\"276\":\"oe\",\"277\":\"m\",\"278\":\"o\",\"279\":\"r\",\"280\":\"R\",\"281\":\"R\",\"282\":\"S\",\"283\":\"f\",\"284\":\"f\",\"285\":\"f\",\"286\":\"f\",\"287\":\"t\",\"288\":\"t\",\"289\":\"u\",\"290\":\"Z\",\"291\":\"Z\",\"292\":\"3\",\"293\":\"3\",\"294\":\"?\",\"295\":\"?\",\"296\":\"5\",\"297\":\"C\",\"298\":\"O\",\"299\":\"B\",\"363\":\"a\",\"364\":\"e\",\"365\":\"i\",\"366\":\"o\",\"367\":\"u\",\"368\":\"c\",\"369\":\"d\",\"386\":\"A\",\"388\":\"E\",\"389\":\"H\",\"390\":\"i\",\"391\":\"A\",\"392\":\"B\",\"393\":\"r\",\"394\":\"A\",\"395\":\"E\",\"396\":\"Z\",\"397\":\"H\",\"398\":\"O\",\"399\":\"I\",\"400\":\"E\",\"401\":\"E\",\"402\":\"T\",\"403\":\"r\",\"404\":\"E\",\"405\":\"S\",\"406\":\"I\",\"407\":\"I\",\"408\":\"J\",\"409\":\"jb\",\"410\":\"A\",\"411\":\"B\",\"412\":\"V\",\"413\":\"G\",\"414\":\"D\",\"415\":\"E\",\"416\":\"ZH\",\"417\":\"Z\",\"418\":\"I\",\"419\":\"Y\",\"420\":\"R\",\"421\":\"S\",\"422\":\"T\",\"423\":\"U\",\"424\":\"F\",\"425\":\"H\",\"426\":\"TS\",\"427\":\"CH\",\"428\":\"SH\",\"429\":\"SCH\",\"430\":\"a\",\"431\":\"b\",\"432\":\"v\",\"433\":\"g\",\"434\":\"d\",\"435\":\"e\",\"436\":\"zh\",\"437\":\"z\",\"438\":\"i\",\"439\":\"y\",\"440\":\"r\",\"441\":\"s\",\"442\":\"t\",\"443\":\"u\",\"444\":\"f\",\"445\":\"h\",\"446\":\"ts\",\"447\":\"ch\",\"448\":\"sh\",\"449\":\"sch\",\"450\":\"e\",\"451\":\"e\",\"452\":\"h\",\"453\":\"r\",\"454\":\"e\",\"455\":\"s\",\"456\":\"i\",\"457\":\"i\",\"458\":\"j\",\"459\":\"jb\",\"460\":\"W\",\"461\":\"w\",\"462\":\"Tb\",\"463\":\"tb\",\"464\":\"IC\",\"465\":\"ic\",\"466\":\"A\",\"467\":\"a\",\"468\":\"IA\",\"469\":\"ia\",\"470\":\"Y\",\"471\":\"y\",\"472\":\"O\",\"473\":\"o\",\"474\":\"V\",\"475\":\"v\",\"476\":\"V\",\"477\":\"v\",\"478\":\"Oy\",\"479\":\"oy\",\"480\":\"C\",\"481\":\"c\",\"490\":\"R\",\"491\":\"r\",\"492\":\"F\",\"493\":\"f\",\"494\":\"H\",\"495\":\"h\",\"496\":\"X\",\"497\":\"x\",\"498\":\"3\",\"499\":\"3\",\"500\":\"d\",\"501\":\"d\",\"502\":\"d\",\"503\":\"d\",\"504\":\"R\",\"505\":\"R\",\"506\":\"R\",\"507\":\"R\",\"508\":\"JT\",\"509\":\"JT\",\"510\":\"E\",\"511\":\"e\",\"512\":\"JT\",\"513\":\"jt\",\"514\":\"JX\",\"515\":\"JX\",\"531\":\"U\",\"532\":\"D\",\"533\":\"Q\",\"534\":\"N\",\"535\":\"T\",\"536\":\"2\",\"537\":\"F\",\"538\":\"r\",\"539\":\"p\",\"540\":\"z\",\"541\":\"2\",\"542\":\"n\",\"543\":\"x\",\"544\":\"U\",\"545\":\"B\",\"546\":\"j\",\"547\":\"t\",\"548\":\"n\",\"549\":\"C\",\"550\":\"R\",\"551\":\"8\",\"552\":\"R\",\"553\":\"O\",\"554\":\"P\",\"555\":\"O\",\"556\":\"S\",\"561\":\"w\",\"562\":\"f\",\"563\":\"q\",\"564\":\"n\",\"565\":\"t\",\"566\":\"q\",\"567\":\"t\",\"568\":\"n\",\"569\":\"p\",\"570\":\"h\",\"571\":\"a\",\"572\":\"n\",\"573\":\"a\",\"574\":\"u\",\"575\":\"j\",\"576\":\"u\",\"577\":\"2\",\"578\":\"n\",\"579\":\"2\",\"580\":\"n\",\"581\":\"g\",\"582\":\"l\",\"583\":\"uh\",\"584\":\"p\",\"585\":\"o\",\"586\":\"S\",\"587\":\"u\",\"4a\":\"J\",\"4b\":\"K\",\"4c\":\"L\",\"4d\":\"M\",\"4e\":\"N\",\"4f\":\"O\",\"5a\":\"Z\",\"6a\":\"j\",\"6b\":\"k\",\"6c\":\"l\",\"6d\":\"m\",\"6e\":\"n\",\"6f\":\"o\",\"7a\":\"z\",\"a2\":\"c\",\"a3\":\"f\",\"a5\":\"Y\",\"a7\":\"s\",\"a9\":\"c\",\"aa\":\"a\",\"ae\":\"r\",\"b2\":\"2\",\"b3\":\"3\",\"b5\":\"u\",\"b6\":\"p\",\"b9\":\"1\",\"c0\":\"A\",\"c1\":\"A\",\"c2\":\"A\",\"c3\":\"A\",\"c4\":\"A\",\"c5\":\"A\",\"c6\":\"AE\",\"c7\":\"C\",\"c8\":\"E\",\"c9\":\"E\",\"ca\":\"E\",\"cb\":\"E\",\"cc\":\"I\",\"cd\":\"I\",\"ce\":\"I\",\"cf\":\"I\",\"d0\":\"D\",\"d1\":\"N\",\"d2\":\"O\",\"d3\":\"O\",\"d4\":\"O\",\"d5\":\"O\",\"d6\":\"O\",\"d7\":\"X\",\"d8\":\"O\",\"d9\":\"U\",\"da\":\"U\",\"db\":\"U\",\"dc\":\"U\",\"dd\":\"Y\",\"de\":\"p\",\"df\":\"b\",\"e0\":\"a\",\"e1\":\"a\",\"e2\":\"a\",\"e3\":\"a\",\"e4\":\"a\",\"e5\":\"a\",\"e6\":\"ae\",\"e7\":\"c\",\"e8\":\"e\",\"e9\":\"e\",\"ea\":\"e\",\"eb\":\"e\",\"ec\":\"i\",\"ed\":\"i\",\"ee\":\"i\",\"ef\":\"i\",\"f0\":\"o\",\"f1\":\"n\",\"f2\":\"o\",\"f3\":\"o\",\"f4\":\"o\",\"f5\":\"o\",\"f6\":\"o\",\"f8\":\"o\",\"f9\":\"u\",\"fa\":\"u\",\"fb\":\"u\",\"fc\":\"u\",\"fd\":\"y\",\"ff\":\"y\",\"10a\":\"C\",\"10b\":\"c\",\"10c\":\"C\",\"10d\":\"c\",\"10e\":\"D\",\"10f\":\"d\",\"11a\":\"E\",\"11b\":\"e\",\"11c\":\"G\",\"11d\":\"g\",\"11e\":\"G\",\"11f\":\"g\",\"12a\":\"I\",\"12b\":\"i\",\"12c\":\"I\",\"12d\":\"i\",\"12e\":\"I\",\"12f\":\"i\",\"13a\":\"l\",\"13b\":\"L\",\"13c\":\"l\",\"13d\":\"L\",\"13e\":\"l\",\"13f\":\"L\",\"14a\":\"n\",\"14b\":\"n\",\"14c\":\"O\",\"14d\":\"o\",\"14e\":\"O\",\"14f\":\"o\",\"15a\":\"S\",\"15b\":\"s\",\"15c\":\"S\",\"15d\":\"s\",\"15e\":\"S\",\"15f\":\"s\",\"16a\":\"U\",\"16b\":\"u\",\"16c\":\"U\",\"16d\":\"u\",\"16e\":\"U\",\"16f\":\"u\",\"17a\":\"z\",\"17b\":\"Z\",\"17c\":\"z\",\"17d\":\"Z\",\"17e\":\"z\",\"17f\":\"f\",\"18a\":\"D\",\"18b\":\"d\",\"18c\":\"d\",\"18d\":\"q\",\"18e\":\"E\",\"18f\":\"e\",\"19a\":\"l\",\"19b\":\"h\",\"19c\":\"w\",\"19d\":\"N\",\"19e\":\"n\",\"19f\":\"O\",\"1a0\":\"O\",\"1a1\":\"o\",\"1a2\":\"P\",\"1a3\":\"P\",\"1a4\":\"P\",\"1a5\":\"p\",\"1a6\":\"R\",\"1a7\":\"S\",\"1a8\":\"s\",\"1a9\":\"E\",\"1aa\":\"l\",\"1ab\":\"t\",\"1ac\":\"T\",\"1ad\":\"t\",\"1ae\":\"T\",\"1af\":\"U\",\"1b0\":\"u\",\"1b1\":\"U\",\"1b2\":\"U\",\"1b3\":\"Y\",\"1b4\":\"y\",\"1b5\":\"Z\",\"1b6\":\"z\",\"1b7\":\"3\",\"1b8\":\"3\",\"1b9\":\"3\",\"1ba\":\"3\",\"1bb\":\"2\",\"1bc\":\"5\",\"1bd\":\"5\",\"1be\":\"5\",\"1bf\":\"p\",\"1c4\":\"DZ\",\"1c5\":\"Dz\",\"1c6\":\"dz\",\"1c7\":\"Lj\",\"1c8\":\"Lj\",\"1c9\":\"lj\",\"1ca\":\"NJ\",\"1cb\":\"Nj\",\"1cc\":\"nj\",\"1cd\":\"A\",\"1ce\":\"a\",\"1cf\":\"I\",\"1d0\":\"i\",\"1d1\":\"O\",\"1d2\":\"o\",\"1d3\":\"U\",\"1d4\":\"u\",\"1d5\":\"U\",\"1d6\":\"u\",\"1d7\":\"U\",\"1d8\":\"u\",\"1d9\":\"U\",\"1da\":\"u\",\"1db\":\"U\",\"1dc\":\"u\",\"1dd\":\"e\",\"1de\":\"A\",\"1df\":\"a\",\"1e0\":\"A\",\"1e1\":\"a\",\"1e2\":\"AE\",\"1e3\":\"ae\",\"1e4\":\"G\",\"1e5\":\"g\",\"1e6\":\"G\",\"1e7\":\"g\",\"1e8\":\"K\",\"1e9\":\"k\",\"1ea\":\"Q\",\"1eb\":\"q\",\"1ec\":\"Q\",\"1ed\":\"q\",\"1ee\":\"3\",\"1ef\":\"3\",\"1f0\":\"J\",\"1f1\":\"dz\",\"1f2\":\"dZ\",\"1f3\":\"DZ\",\"1f4\":\"g\",\"1f5\":\"G\",\"1f6\":\"h\",\"1f7\":\"p\",\"1f8\":\"N\",\"1f9\":\"n\",\"1fa\":\"A\",\"1fb\":\"a\",\"1fc\":\"AE\",\"1fd\":\"ae\",\"1fe\":\"O\",\"1ff\":\"o\",\"20a\":\"I\",\"20b\":\"i\",\"20c\":\"O\",\"20d\":\"o\",\"20e\":\"O\",\"20f\":\"o\",\"21a\":\"T\",\"21b\":\"t\",\"21c\":\"3\",\"21d\":\"3\",\"21e\":\"H\",\"21f\":\"h\",\"22a\":\"O\",\"22b\":\"o\",\"22c\":\"O\",\"22d\":\"o\",\"22e\":\"O\",\"22f\":\"o\",\"23a\":\"A\",\"23b\":\"C\",\"23c\":\"c\",\"23d\":\"L\",\"23e\":\"T\",\"23f\":\"s\",\"24a\":\"Q\",\"24b\":\"q\",\"24c\":\"R\",\"24d\":\"r\",\"24e\":\"Y\",\"24f\":\"y\",\"25a\":\"e\",\"25b\":\"3\",\"25c\":\"3\",\"25d\":\"3\",\"25e\":\"3\",\"25f\":\"j\",\"26a\":\"i\",\"26b\":\"I\",\"26c\":\"I\",\"26d\":\"I\",\"26e\":\"h\",\"26f\":\"w\",\"27a\":\"R\",\"27b\":\"r\",\"27c\":\"R\",\"27d\":\"R\",\"27e\":\"r\",\"27f\":\"r\",\"28a\":\"u\",\"28b\":\"v\",\"28c\":\"A\",\"28d\":\"M\",\"28e\":\"Y\",\"28f\":\"Y\",\"29a\":\"B\",\"29b\":\"G\",\"29c\":\"H\",\"29d\":\"j\",\"29e\":\"K\",\"29f\":\"L\",\"2a0\":\"q\",\"2a1\":\"?\",\"2a2\":\"c\",\"2a3\":\"dz\",\"2a4\":\"d3\",\"2a5\":\"dz\",\"2a6\":\"ts\",\"2a7\":\"tf\",\"2a8\":\"tc\",\"2a9\":\"fn\",\"2aa\":\"ls\",\"2ab\":\"lz\",\"2ac\":\"ww\",\"2ae\":\"u\",\"2af\":\"u\",\"2b0\":\"h\",\"2b1\":\"h\",\"2b2\":\"j\",\"2b3\":\"r\",\"2b4\":\"r\",\"2b5\":\"r\",\"2b6\":\"R\",\"2b7\":\"W\",\"2b8\":\"Y\",\"2df\":\"x\",\"2e0\":\"Y\",\"2e1\":\"1\",\"2e2\":\"s\",\"2e3\":\"x\",\"2e4\":\"c\",\"36a\":\"h\",\"36b\":\"m\",\"36c\":\"r\",\"36d\":\"t\",\"36e\":\"v\",\"36f\":\"x\",\"37b\":\"c\",\"37c\":\"c\",\"37d\":\"c\",\"38a\":\"I\",\"38c\":\"O\",\"38e\":\"Y\",\"38f\":\"O\",\"39a\":\"K\",\"39b\":\"A\",\"39c\":\"M\",\"39d\":\"N\",\"39e\":\"E\",\"39f\":\"O\",\"3a0\":\"TT\",\"3a1\":\"P\",\"3a3\":\"E\",\"3a4\":\"T\",\"3a5\":\"Y\",\"3a6\":\"O\",\"3a7\":\"X\",\"3a8\":\"Y\",\"3a9\":\"O\",\"3aa\":\"I\",\"3ab\":\"Y\",\"3ac\":\"a\",\"3ad\":\"e\",\"3ae\":\"n\",\"3af\":\"i\",\"3b0\":\"v\",\"3b1\":\"a\",\"3b2\":\"b\",\"3b3\":\"y\",\"3b4\":\"d\",\"3b5\":\"e\",\"3b6\":\"c\",\"3b7\":\"n\",\"3b8\":\"0\",\"3b9\":\"1\",\"3ba\":\"k\",\"3bb\":\"j\",\"3bc\":\"u\",\"3bd\":\"v\",\"3be\":\"c\",\"3bf\":\"o\",\"3c0\":\"tt\",\"3c1\":\"p\",\"3c2\":\"s\",\"3c3\":\"o\",\"3c4\":\"t\",\"3c5\":\"u\",\"3c6\":\"q\",\"3c7\":\"X\",\"3c8\":\"Y\",\"3c9\":\"w\",\"3ca\":\"i\",\"3cb\":\"u\",\"3cc\":\"o\",\"3cd\":\"u\",\"3ce\":\"w\",\"3d0\":\"b\",\"3d1\":\"e\",\"3d2\":\"Y\",\"3d3\":\"Y\",\"3d4\":\"Y\",\"3d5\":\"O\",\"3d6\":\"w\",\"3d7\":\"x\",\"3d8\":\"Q\",\"3d9\":\"q\",\"3da\":\"C\",\"3db\":\"c\",\"3dc\":\"F\",\"3dd\":\"f\",\"3de\":\"N\",\"3df\":\"N\",\"3e2\":\"W\",\"3e3\":\"w\",\"3e4\":\"q\",\"3e5\":\"q\",\"3e6\":\"h\",\"3e7\":\"e\",\"3e8\":\"S\",\"3e9\":\"s\",\"3ea\":\"X\",\"3eb\":\"x\",\"3ec\":\"6\",\"3ed\":\"6\",\"3ee\":\"t\",\"3ef\":\"t\",\"3f0\":\"x\",\"3f1\":\"e\",\"3f2\":\"c\",\"3f3\":\"j\",\"3f4\":\"O\",\"3f5\":\"E\",\"3f6\":\"E\",\"3f7\":\"p\",\"3f8\":\"p\",\"3f9\":\"C\",\"3fa\":\"M\",\"3fb\":\"M\",\"3fc\":\"p\",\"3fd\":\"C\",\"3fe\":\"C\",\"3ff\":\"C\",\"40a\":\"Hb\",\"40b\":\"Th\",\"40c\":\"K\",\"40d\":\"N\",\"40e\":\"Y\",\"40f\":\"U\",\"41a\":\"K\",\"41b\":\"L\",\"41c\":\"M\",\"41d\":\"N\",\"41e\":\"O\",\"41f\":\"P\",\"42a\":\"\",\"42b\":\"Y\",\"42c\":\"\",\"42d\":\"E\",\"42e\":\"U\",\"42f\":\"YA\",\"43a\":\"k\",\"43b\":\"l\",\"43c\":\"m\",\"43d\":\"n\",\"43e\":\"o\",\"43f\":\"p\",\"44a\":\"\",\"44b\":\"y\",\"44c\":\"\",\"44d\":\"e\",\"44e\":\"u\",\"44f\":\"ya\",\"45a\":\"Hb\",\"45b\":\"h\",\"45c\":\"k\",\"45d\":\"n\",\"45e\":\"y\",\"45f\":\"u\",\"46a\":\"mY\",\"46b\":\"my\",\"46c\":\"Im\",\"46d\":\"Im\",\"46e\":\"3\",\"46f\":\"3\",\"47a\":\"O\",\"47b\":\"o\",\"47c\":\"W\",\"47d\":\"w\",\"47e\":\"W\",\"47f\":\"W\",\"48a\":\"H\",\"48b\":\"H\",\"48c\":\"B\",\"48d\":\"b\",\"48e\":\"P\",\"48f\":\"p\",\"49a\":\"K\",\"49b\":\"k\",\"49c\":\"K\",\"49d\":\"k\",\"49e\":\"K\",\"49f\":\"k\",\"4a0\":\"K\",\"4a1\":\"k\",\"4a2\":\"H\",\"4a3\":\"h\",\"4a4\":\"H\",\"4a5\":\"h\",\"4a6\":\"Ih\",\"4a7\":\"ih\",\"4a8\":\"O\",\"4a9\":\"o\",\"4aa\":\"C\",\"4ab\":\"c\",\"4ac\":\"T\",\"4ad\":\"t\",\"4ae\":\"Y\",\"4af\":\"y\",\"4b0\":\"Y\",\"4b1\":\"y\",\"4b2\":\"X\",\"4b3\":\"x\",\"4b4\":\"TI\",\"4b5\":\"ti\",\"4b6\":\"H\",\"4b7\":\"h\",\"4b8\":\"H\",\"4b9\":\"h\",\"4ba\":\"H\",\"4bb\":\"h\",\"4bc\":\"E\",\"4bd\":\"e\",\"4be\":\"E\",\"4bf\":\"e\",\"4c0\":\"I\",\"4c1\":\"X\",\"4c2\":\"x\",\"4c3\":\"K\",\"4c4\":\"k\",\"4c5\":\"jt\",\"4c6\":\"jt\",\"4c7\":\"H\",\"4c8\":\"h\",\"4c9\":\"H\",\"4ca\":\"h\",\"4cb\":\"H\",\"4cc\":\"h\",\"4cd\":\"M\",\"4ce\":\"m\",\"4cf\":\"l\",\"4d0\":\"A\",\"4d1\":\"a\",\"4d2\":\"A\",\"4d3\":\"a\",\"4d4\":\"AE\",\"4d5\":\"ae\",\"4d6\":\"E\",\"4d7\":\"e\",\"4d8\":\"e\",\"4d9\":\"e\",\"4da\":\"E\",\"4db\":\"e\",\"4dc\":\"X\",\"4dd\":\"X\",\"4de\":\"3\",\"4df\":\"3\",\"4e0\":\"3\",\"4e1\":\"3\",\"4e2\":\"N\",\"4e3\":\"n\",\"4e4\":\"N\",\"4e5\":\"n\",\"4e6\":\"O\",\"4e7\":\"o\",\"4e8\":\"O\",\"4e9\":\"o\",\"4ea\":\"O\",\"4eb\":\"o\",\"4ec\":\"E\",\"4ed\":\"e\",\"4ee\":\"Y\",\"4ef\":\"y\",\"4f0\":\"Y\",\"4f1\":\"y\",\"4f2\":\"Y\",\"4f3\":\"y\",\"4f4\":\"H\",\"4f5\":\"h\",\"4f6\":\"R\",\"4f7\":\"r\",\"4f8\":\"bI\",\"4f9\":\"bi\",\"4fa\":\"F\",\"4fb\":\"f\",\"4fc\":\"X\",\"4fd\":\"x\",\"4fe\":\"X\",\"4ff\":\"x\",\"50a\":\"H\",\"50b\":\"h\",\"50c\":\"G\",\"50d\":\"g\",\"50e\":\"T\",\"50f\":\"t\",\"51a\":\"Q\",\"51b\":\"q\",\"51c\":\"W\",\"51d\":\"w\",\"53a\":\"d\",\"53b\":\"r\",\"53c\":\"L\",\"53d\":\"Iu\",\"53e\":\"O\",\"53f\":\"y\",\"54a\":\"m\",\"54b\":\"o\",\"54c\":\"N\",\"54d\":\"U\",\"54e\":\"Y\",\"54f\":\"S\",\"56a\":\"d\",\"56b\":\"h\",\"56c\":\"l\",\"56d\":\"lu\",\"56e\":\"d\",\"56f\":\"y\",\"57a\":\"w\",\"57b\":\"2\",\"57c\":\"n\",\"57d\":\"u\",\"57e\":\"y\",\"57f\":\"un\"};\r\n\r\n var str = '';\r\n for (var i = 0; i < string.length; i++) {\r\n str += map[string.charCodeAt(i).toString(16)] || '';\r\n }\r\n\r\n return str.toLowerCase().replace(/-+/g, '-').replace(/^-|-$/, '');\r\n },\r\n\r\n // camelize():String\r\n camelize: function(string) {\r\n return string.trim().replace(/(\\-|_|\\s)+(.)?/g, function(a, b, c) {\r\n return (c ? c.toUpperCase() : '');\r\n });\r\n },\r\n\r\n // capitalize():String\r\n capitalize: function(string) {\r\n return string.substr(0, 1).toUpperCase() + string.substr(1).toLowerCase();\r\n },\r\n\r\n // dasherize():String\r\n dasherize: function(string) {\r\n return string.replace(/[_\\s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();\r\n },\r\n\r\n // humanize():String\r\n humanize: function(string) {\r\n var str = string.replace(/([a-z\\d])([A-Z+])/g, '$1_$2').replace(/[-\\s]+/g, '_').replace(/_+/g, ' ').trim();\r\n return str.substr(0, 1).toUpperCase() + str.substr(1).toLowerCase();\r\n },\r\n\r\n // underscore():String\r\n underscore: function(string) {\r\n return string.trim().replace(/([a-z\\d])([A-Z]+)/g, '$1_$1').replace(/[-\\s]+/g, '_').toLowerCase();\r\n },\r\n\r\n // titlecase():String\r\n titlecase: function(string) {\r\n return string.replace(/(?:^|\\s)\\S/g, function(a) {\r\n return a.toUpperCase();\r\n });\r\n },\r\n\r\n // camelcase():String\r\n camelcase: function(string) {\r\n return string.toLowerCase().replace(/\\s+(\\S)/g, function(a, b) {\r\n return b.toUpperCase();\r\n });\r\n },\r\n\r\n // substr(start:Number, [length:Number]):String\r\n substr: function(string, start, length) {\r\n return string.substr(start, length);\r\n },\r\n\r\n // substring(start:Number, [end:Number]):String\r\n substring: function(string, start, end) {\r\n return string.substring(start, end);\r\n },\r\n\r\n // replace(search:String|RegExp, replace:String):String\r\n replace: function(string, search, replace) {\r\n if (typeof search == 'string') {\r\n search = new RegExp(dmx.escapeRegExp(search), 'g');\r\n }\r\n return string.replace(search, replace);\r\n },\r\n\r\n // trim():String\r\n trim: function(string) {\r\n return string.trim();\r\n },\r\n\r\n // trimLeft():String\r\n trimLeft: function(string) {\r\n return string.replace(/^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*/, '');\r\n },\r\n\r\n // trimRight():String\r\n trimRight: function(string) {\r\n return string.replace(/[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*$/, '');\r\n },\r\n\r\n // concat(string2:String):String\r\n concat: function(string, string2) {\r\n return string.concat(string2);\r\n },\r\n\r\n // trunc(charsAllowed:Number, [useWordBoundary:Boolean], [append:String]):String\r\n trunc: function(string, charsAllowed, useWordBoundary, append) {\r\n useWordBoundary = !!useWordBoundary;\r\n append = append || '…';\r\n\r\n if (string.length > charsAllowed) {\r\n string = string.substr(0, charsAllowed);\r\n\r\n if (useWordBoundary && string.indexOf(' ') !== -1) {\r\n string = string.substr(0, string.lastIndexOf(' '));\r\n }\r\n\r\n string += append;\r\n }\r\n\r\n return string;\r\n },\r\n\r\n // stripTags():String\r\n stripTags: function(string) {\r\n return string.replace(/<[^>]+>/g, '');\r\n },\r\n\r\n // padStart(length:Number, [filler:String]):String\r\n padStart: function(string, length, filler) {\r\n filler = filler || ' ';\r\n\r\n if (length <= string.length) {\r\n return string;\r\n }\r\n\r\n var rem = length - string.length;\r\n while (filler.length < rem) {\r\n filler += filler;\r\n }\r\n\r\n return filler.substr(0, rem) + string;\r\n },\r\n\r\n // padEnd(length:Number, [filler:String]):String\r\n padEnd: function(string, length, filler) {\r\n filler = filler || ' ';\r\n\r\n if (length <= string.length) {\r\n return string;\r\n }\r\n\r\n var rem = length - string.length;\r\n while (filler.length < rem) {\r\n filler += filler;\r\n }\r\n\r\n return string + filler.substr(0, rem);\r\n },\r\n\r\n // repeat(count:Number):String\r\n repeat: function(string, count) {\r\n var out = '';\r\n for (var i = 0; i < count; i++) {\r\n out += string;\r\n }\r\n return out;\r\n },\r\n\r\n // wordCount():Number\r\n wordCount: function(string) {\r\n return string.trim().split(/\\s+/).length;\r\n },\r\n\r\n // length():Number\r\n length: function(string) {\r\n return string.length;\r\n },\r\n\r\n // split(separator:String|RegExp):Array\r\n split: function(string, separator) {\r\n return string.split(separator);\r\n },\r\n\r\n parseJSON: function(string) {\r\n return JSON.parse(string);\r\n },\r\n\r\n });\r\n\r\n})();\r\n","dmx.Formatters('object', {\r\n\r\n // keys():Array\r\n keys: function(object) {\r\n return Object.keys(object);\r\n },\r\n\r\n // values():Array\r\n values: function(object) {\r\n return Object.keys(object).map(function(key) {\r\n return object[key];\r\n });\r\n },\r\n\r\n // hasKey(key:String):Boolean\r\n hasKey: function(object, key) {\r\n return Object.keys(object).indexOf(key) !== -1;\r\n },\r\n\r\n // hasValue(value:Any):Boolean\r\n hasValue: function(object, value) {\r\n return Object.keys(object).map(function(key) {\r\n return object[key];\r\n }).indexOf(value) !== -1;\r\n },\r\n\r\n //getValueOrKey():any\r\n getValueOrKey: function(object, key) {\r\n return object[key] != null ? object[key] : key;\r\n },\r\n\r\n});\r\n"]}