diff --git a/dist/liquid.common.js b/dist/liquid.common.js
index ef12b21c5..19f5b51f6 100644
--- a/dist/liquid.common.js
+++ b/dist/liquid.common.js
@@ -45,6 +45,36 @@ var asyncToGenerator = function (fn) {
};
};
+var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+var inherits = function (subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+};
+
+var possibleConstructorReturn = function (self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+};
+
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
@@ -771,6 +801,10 @@ function stringify(value) {
});
}
+function create(proto) {
+ return Object.create(proto);
+}
+
function isNil(value) {
return value === null || value === undefined;
}
@@ -923,10 +957,6 @@ function isLiteral(str) {
return literalLine.test(str);
}
-function isRange(str) {
- return rangeLine.test(str);
-}
-
function isVariable(str) {
return variableLine.test(str);
}
@@ -951,104 +981,117 @@ function parseLiteral(str) {
throw new TypeError('cannot parse \'' + str + '\' as literal');
}
-var lexical = /*#__PURE__*/Object.freeze({
- quoted: quoted,
- quoteBalanced: quoteBalanced,
- integer: integer,
- number: number,
- bool: bool,
- identifier: identifier,
- subscript: subscript,
- literal: literal,
- variable: variable,
- rangeLimit: rangeLimit,
- range: range$1,
- rangeCapture: rangeCapture,
- value: value,
- hash: hash,
- hashCapture: hashCapture,
- tagLine: tagLine,
- literalLine: literalLine,
- variableLine: variableLine,
- numberLine: numberLine,
- boolLine: boolLine,
- quotedLine: quotedLine,
- rangeLine: rangeLine,
- integerLine: integerLine,
- valueDeclaration: valueDeclaration,
- valueList: valueList,
- filter: filter,
- filterCapture: filterCapture,
- filterLine: filterLine,
- operators: operators,
- isInteger: isInteger,
- isLiteral: isLiteral,
- isRange: isRange,
- isVariable: isVariable,
- matchValue: matchValue,
- parseLiteral: parseLiteral
-});
+var LiquidError = function (_Error) {
+ inherits(LiquidError, _Error);
-function initError() {
- this.name = this.constructor.name;
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
+ function LiquidError(message) {
+ classCallCheck(this, LiquidError);
+
+ var _this = possibleConstructorReturn(this, (LiquidError.__proto__ || Object.getPrototypeOf(LiquidError)).call(this, message));
+
+ _this.name = _this.constructor.name;
+ if (typeof Error.captureStackTrace === 'function') {
+ Error.captureStackTrace(_this, _this.constructor);
+ } else {
+ _this.stack = new Error(message).stack;
+ }
+ return _this;
}
-}
-function initLiquidError(err, token) {
- initError.call(this);
+ return LiquidError;
+}(Error);
- this.input = token.input;
- this.line = token.line;
- this.file = token.file;
+var TemplateError = function (_LiquidError) {
+ inherits(TemplateError, _LiquidError);
- var context = mkContext(token.input, token.line);
- this.message = mkMessage(err.message, token);
- this.stack = context + '\n' + (this.stack || this.message) + (err.stack ? '\nFrom ' + err.stack : '');
-}
+ function TemplateError(err, token) {
+ classCallCheck(this, TemplateError);
-function TokenizationError(message, token) {
- initLiquidError.call(this, { message: message }, token);
-}
-TokenizationError.prototype = Object.create(Error.prototype);
-TokenizationError.prototype.constructor = TokenizationError;
+ var _this2 = possibleConstructorReturn(this, (TemplateError.__proto__ || Object.getPrototypeOf(TemplateError)).call(this));
-function ParseError(e, token) {
- assign(this, e);
- this.originalError = e;
-
- initLiquidError.call(this, e, token);
-}
-ParseError.prototype = Object.create(Error.prototype);
-ParseError.prototype.constructor = ParseError;
-
-function RenderError(e, tpl) {
- // return the original render error
- if (e instanceof RenderError) {
- return e;
+ _this2.input = token.input;
+ _this2.line = token.line;
+ _this2.file = token.file;
+ _this2.message = mkMessage(err.message, token);
+ var context = mkContext(token.input, token.line);
+ _this2.stack = context + '\n' + (_this2.stack || _this2.message) + (err.stack ? '\nFrom ' + err.stack : '');
+ return _this2;
}
- assign(this, e);
- this.originalError = e;
- initLiquidError.call(this, e, tpl.token);
-}
-RenderError.prototype = Object.create(Error.prototype);
-RenderError.prototype.constructor = RenderError;
+ return TemplateError;
+}(LiquidError);
-function RenderBreakError(message) {
- initError.call(this);
- this.message = message + '';
-}
-RenderBreakError.prototype = Object.create(Error.prototype);
-RenderBreakError.prototype.constructor = RenderBreakError;
+var TokenizationError = function (_TemplateError) {
+ inherits(TokenizationError, _TemplateError);
-function AssertionError(message) {
- initError.call(this);
- this.message = message + '';
-}
-AssertionError.prototype = Object.create(Error.prototype);
-AssertionError.prototype.constructor = AssertionError;
+ function TokenizationError(message, token) {
+ classCallCheck(this, TokenizationError);
+ return possibleConstructorReturn(this, (TokenizationError.__proto__ || Object.getPrototypeOf(TokenizationError)).call(this, { message: message }, token));
+ }
+
+ return TokenizationError;
+}(TemplateError);
+
+var ParseError = function (_TemplateError2) {
+ inherits(ParseError, _TemplateError2);
+
+ function ParseError(e, token) {
+ classCallCheck(this, ParseError);
+
+ var _this4 = possibleConstructorReturn(this, (ParseError.__proto__ || Object.getPrototypeOf(ParseError)).call(this, e, token));
+
+ assign(_this4, e);
+ _this4.originalError = e;
+ return _this4;
+ }
+
+ return ParseError;
+}(TemplateError);
+
+var RenderError = function (_TemplateError3) {
+ inherits(RenderError, _TemplateError3);
+
+ function RenderError(e, tpl) {
+ classCallCheck(this, RenderError);
+
+ // return the original render error
+ if (e instanceof RenderError) {
+ var _ret;
+
+ return _ret = e, possibleConstructorReturn(_this5, _ret);
+ }
+
+ var _this5 = possibleConstructorReturn(this, (RenderError.__proto__ || Object.getPrototypeOf(RenderError)).call(this, e, tpl.token));
+
+ assign(_this5, e);
+ _this5.originalError = e;
+ return _this5;
+ }
+
+ return RenderError;
+}(TemplateError);
+
+var RenderBreakError = function (_LiquidError2) {
+ inherits(RenderBreakError, _LiquidError2);
+
+ function RenderBreakError(message) {
+ classCallCheck(this, RenderBreakError);
+ return possibleConstructorReturn(this, (RenderBreakError.__proto__ || Object.getPrototypeOf(RenderBreakError)).call(this, message + ''));
+ }
+
+ return RenderBreakError;
+}(LiquidError);
+
+var AssertionError = function (_LiquidError3) {
+ inherits(AssertionError, _LiquidError3);
+
+ function AssertionError(message) {
+ classCallCheck(this, AssertionError);
+ return possibleConstructorReturn(this, (AssertionError.__proto__ || Object.getPrototypeOf(AssertionError)).call(this, message + ''));
+ }
+
+ return AssertionError;
+}(LiquidError);
function mkContext(input, line) {
var lines = input.split('\n');
@@ -1090,8 +1133,8 @@ function assert (predicate, message) {
var Scope = {
getAll: function getAll() {
return this.contexts.reduce(function (ctx, val) {
- return Object.assign(ctx, val);
- }, Object.create(null));
+ return assign(ctx, val);
+ }, create(null));
},
get: function get(path$$1) {
var _this = this;
@@ -1262,7 +1305,7 @@ function factory(ctx, opts) {
blocks: {},
root: []
};
- var scope = Object.create(Scope);
+ var scope = create(Scope);
scope.opts = assign(defaultOptions, opts);
scope.contexts = [ctx || {}];
return scope;
@@ -1773,7 +1816,7 @@ var render = {
};
function Render () {
- var instance = Object.create(render);
+ var instance = create(render);
return instance;
}
@@ -1834,7 +1877,7 @@ function Tag () {
var tagImpl = tagImpls[this.name];
assert(tagImpl, 'tag ' + this.name + ' not found');
- this.tagImpl = Object.create(tagImpl);
+ this.tagImpl = create(tagImpl);
if (this.tagImpl.parse) {
this.tagImpl.parse(token, tokens);
}
@@ -1846,7 +1889,7 @@ function Tag () {
}
function construct(token, tokens) {
- var instance = Object.create(_tagInstance);
+ var instance = create(_tagInstance);
instance.parse(token, tokens);
return instance;
}
@@ -1913,7 +1956,7 @@ function Filter (options) {
};
function construct(str) {
- var instance = Object.create(_filterInstance);
+ var instance = create(_filterInstance);
return instance.parse(str);
}
@@ -2022,7 +2065,7 @@ function Parser (Tag, Filter) {
}
function parseStream(tokens) {
- var s = Object.create(stream);
+ var s = create(stream);
return s.init(tokens);
}
@@ -2073,7 +2116,7 @@ function mapSeries(iterable, iteratee) {
function For (liquid, Liquid) {
var render = function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash$$1) {
var _this2 = this;
var collection, offset, limit, contexts, html, finished;
@@ -2102,8 +2145,8 @@ function For (liquid, Liquid) {
return _context2.abrupt('return', liquid.renderer.renderTemplates(this.elseTemplates, scope));
case 4:
- offset = hash.offset || 0;
- limit = hash.limit === undefined ? collection.length : hash.limit;
+ offset = hash$$1.offset || 0;
+ limit = hash$$1.limit === undefined ? collection.length : hash$$1.limit;
collection = collection.slice(offset, offset + limit);
@@ -2203,8 +2246,7 @@ function For (liquid, Liquid) {
}();
var RenderBreakError = Liquid.Types.RenderBreakError;
- var lexical = Liquid.lexical;
- var re = new RegExp('^(' + lexical.identifier.source + ')\\s+in\\s+' + ('(' + lexical.value.source + ')') + ('(?:\\s+' + lexical.hash.source + ')*') + '(?:\\s+(reversed))?' + ('(?:\\s+' + lexical.hash.source + ')*$'));
+ var re = new RegExp('^(' + identifier.source + ')\\s+in\\s+' + ('(' + value.source + ')') + ('(?:\\s+' + hash.source + ')*') + '(?:\\s+(reversed))?' + ('(?:\\s+' + hash.source + ')*$'));
liquid.registerTag('for', { parse: parse, render: render });
@@ -2238,8 +2280,7 @@ function For (liquid, Liquid) {
}
function Assign (liquid, Liquid) {
- var rIdentifier = Liquid.lexical.identifier;
- var re = new RegExp('(' + rIdentifier.source + ')\\s*=(.*)');
+ var re = new RegExp('(' + identifier.source + ')\\s*=(.*)');
var AssignScope = Liquid.Types.AssignScope;
@@ -2251,7 +2292,7 @@ function Assign (liquid, Liquid) {
this.value = match[2];
},
render: function render(scope) {
- var ctx = Object.create(AssignScope);
+ var ctx = create(AssignScope);
ctx[this.key] = liquid.evalValue(this.value, scope);
scope.push(ctx);
return Promise.resolve('');
@@ -2260,8 +2301,7 @@ function Assign (liquid, Liquid) {
}
function Capture (liquid, Liquid) {
- var rIdentifier = Liquid.lexical.identifier;
- var re = new RegExp('(' + rIdentifier.source + ')');
+ var re = new RegExp('(' + identifier.source + ')');
var CaptureScope = Liquid.Types.CaptureScope;
@@ -2286,7 +2326,7 @@ function Capture (liquid, Liquid) {
stream.start();
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var html, ctx;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2297,7 +2337,7 @@ function Capture (liquid, Liquid) {
case 2:
html = _context.sent;
- ctx = Object.create(CaptureScope);
+ ctx = create(CaptureScope);
ctx[this.variable] = html;
scope.push(ctx);
@@ -2379,8 +2419,7 @@ function Comment (liquid) {
var staticFileRE = /[^\s,]+/;
function Include (liquid, Liquid) {
- var lexical = Liquid.lexical;
- var withRE = new RegExp('with\\s+(' + lexical.value.source + ')');
+ var withRE = new RegExp('with\\s+(' + value.source + ')');
liquid.registerTag('include', {
parse: function parse(token) {
@@ -2389,7 +2428,7 @@ function Include (liquid, Liquid) {
this.staticValue = match[0];
}
- match = lexical.value.exec(token.args);
+ match = value.exec(token.args);
if (match) {
this.value = match[0];
}
@@ -2400,7 +2439,7 @@ function Include (liquid, Liquid) {
}
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var filepath, template, originBlocks, originBlockMode, templates, html;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2413,7 +2452,7 @@ function Include (liquid, Liquid) {
break;
}
- if (!lexical.quotedLine.exec(this.value)) {
+ if (!quotedLine.exec(this.value)) {
_context.next = 9;
break;
}
@@ -2447,7 +2486,7 @@ function Include (liquid, Liquid) {
scope.opts.blocks = {};
scope.opts.blockMode = 'output';
if (this.with) {
- hash[filepath] = Liquid.evalValue(this.with, scope);
+ hash$$1[filepath] = Liquid.evalValue(this.with, scope);
}
_context.next = 21;
return liquid.getTemplate(filepath, scope.opts.root);
@@ -2455,14 +2494,14 @@ function Include (liquid, Liquid) {
case 21:
templates = _context.sent;
- scope.push(hash);
+ scope.push(hash$$1);
_context.next = 25;
return liquid.renderer.renderTemplates(templates, scope);
case 25:
html = _context.sent;
- scope.pop(hash);
+ scope.pop(hash$$1);
scope.opts.blocks = originBlocks;
scope.opts.blockMode = originBlockMode;
return _context.abrupt('return', html);
@@ -2485,7 +2524,6 @@ function Include (liquid, Liquid) {
}
function Decrement (liquid, Liquid) {
- var lexical = Liquid.lexical;
var _Liquid$Types = Liquid.Types,
CaptureScope = _Liquid$Types.CaptureScope,
AssignScope = _Liquid$Types.AssignScope,
@@ -2494,16 +2532,17 @@ function Decrement (liquid, Liquid) {
liquid.registerTag('decrement', {
parse: function parse(token) {
- var match = token.args.match(lexical.identifier);
+ var match = token.args.match(identifier);
assert(match, 'illegal identifier ' + token.args);
this.variable = match[0];
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var context = scope.findContextFor(this.variable, function (ctx) {
- return Object.getPrototypeOf(ctx) !== CaptureScope && Object.getPrototypeOf(ctx) !== AssignScope;
+ var proto = Object.getPrototypeOf(ctx);
+ return proto !== CaptureScope && proto !== AssignScope;
});
if (!context) {
- context = Object.create(DecrementScope);
+ context = create(DecrementScope);
scope.unshift(context);
}
if (typeof context[this.variable] !== 'number') {
@@ -2515,9 +2554,8 @@ function Decrement (liquid, Liquid) {
}
function Cycle (liquid, Liquid) {
- var rValue = Liquid.lexical.value;
- var groupRE = new RegExp('^(?:(' + rValue.source + ')\\s*:\\s*)?(.*)$');
- var candidatesRE = new RegExp(rValue.source, 'g');
+ var groupRE = new RegExp('^(?:(' + value.source + ')\\s*:\\s*)?(.*)$');
+ var candidatesRE = new RegExp(value.source, 'g');
liquid.registerTag('cycle', {
@@ -2536,7 +2574,7 @@ function Cycle (liquid, Liquid) {
assert(this.candidates.length, 'empty candidates: ' + tagToken.raw);
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var group = Liquid.evalValue(this.group, scope);
var fingerprint = 'cycle:' + group + ':' + this.candidates.join(',');
@@ -2624,7 +2662,6 @@ function If (liquid, Liquid) {
}
function Increment (liquid, Liquid) {
- var lexical = Liquid.lexical;
var _Liquid$Types = Liquid.Types,
CaptureScope = _Liquid$Types.CaptureScope,
AssignScope = _Liquid$Types.AssignScope,
@@ -2633,16 +2670,17 @@ function Increment (liquid, Liquid) {
liquid.registerTag('increment', {
parse: function parse(token) {
- var match = token.args.match(lexical.identifier);
+ var match = token.args.match(identifier);
assert(match, 'illegal identifier ' + token.args);
this.variable = match[0];
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var context = scope.findContextFor(this.variable, function (ctx) {
- return Object.getPrototypeOf(ctx) !== CaptureScope && Object.getPrototypeOf(ctx) !== AssignScope;
+ var proto = Object.getPrototypeOf(ctx);
+ return proto !== CaptureScope && proto !== AssignScope;
});
if (!context) {
- context = Object.create(IncrementScope);
+ context = create(IncrementScope);
scope.unshift(context);
}
if (typeof context[this.variable] !== 'number') {
@@ -2662,7 +2700,6 @@ function Increment (liquid, Liquid) {
*/
function Layout (liquid, Liquid) {
- var rValue = Liquid.lexical.value;
var staticFileRE = /\S+/;
liquid.registerTag('layout', {
@@ -2672,7 +2709,7 @@ function Layout (liquid, Liquid) {
this.staticLayout = match[0];
}
- match = rValue.exec(token.args);
+ match = value.exec(token.args);
if (match) {
this.layout = match[0];
}
@@ -2680,7 +2717,7 @@ function Layout (liquid, Liquid) {
this.tpls = liquid.parser.parse(remainTokens);
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var layout, html, templates, partial;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2707,7 +2744,7 @@ function Layout (liquid, Liquid) {
case 9:
templates = _context.sent;
- scope.push(hash);
+ scope.push(hash$$1);
scope.opts.blockMode = 'output';
_context.next = 14;
return liquid.renderer.renderTemplates(templates, scope);
@@ -2715,7 +2752,7 @@ function Layout (liquid, Liquid) {
case 14:
partial = _context.sent;
- scope.pop(hash);
+ scope.pop(hash$$1);
return _context.abrupt('return', partial);
case 17:
@@ -2831,8 +2868,7 @@ function Raw (liquid) {
}
function Tablerow (liquid, Liquid) {
- var lexical = Liquid.lexical;
- var re = new RegExp('^(' + lexical.identifier.source + ')\\s+in\\s+' + ('(' + lexical.value.source + ')') + ('(?:\\s+' + lexical.hash.source + ')*$'));
+ var re = new RegExp('^(' + identifier.source + ')\\s+in\\s+' + ('(' + value.source + ')') + ('(?:\\s+' + hash.source + ')*$'));
liquid.registerTag('tablerow', {
@@ -2861,7 +2897,7 @@ function Tablerow (liquid, Liquid) {
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash$$1) {
var _this2 = this;
var collection, offset, limit, cols, contexts, row, html;
@@ -2870,12 +2906,12 @@ function Tablerow (liquid, Liquid) {
switch (_context2.prev = _context2.next) {
case 0:
collection = Liquid.evalExp(this.collection, scope) || [];
- offset = hash.offset || 0;
- limit = hash.limit === undefined ? collection.length : hash.limit;
+ offset = hash$$1.offset || 0;
+ limit = hash$$1.limit === undefined ? collection.length : hash$$1.limit;
collection = collection.slice(offset, offset + limit);
- cols = hash.cols || collection.length;
+ cols = hash$$1.cols || collection.length;
contexts = collection.map(function (item, i) {
var ctx = {};
ctx[_this2.variable] = item;
@@ -2998,17 +3034,22 @@ function tags (engine, Liquid) {
}
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
-var monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
-var dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+var monthNamesShort = monthNames.map(abbr);
+var dayNamesShort = dayNames.map(abbr);
var suffixes = {
1: 'st',
2: 'nd',
3: 'rd',
'default': 'th'
+};
- // prototype extensions
-};var _date = {
+function abbr(str) {
+ return str.slice(0, 3);
+}
+
+// prototype extensions
+var _date = {
daysInMonth: function daysInMonth(d) {
var feb = _date.isLeapYear(d) ? 29 : 28;
return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
@@ -3396,14 +3437,14 @@ function registerAll(liquid) {
registerAll.filters = filters;
var _engine = {
- init: function init(tag, filter$$1, options) {
+ init: function init(tag, filter, options) {
if (options.cache) {
this.cache = {};
}
this.options = options;
this.tag = tag;
- this.filter = filter$$1;
- this.parser = Parser(tag, filter$$1);
+ this.filter = filter;
+ this.parser = Parser(tag, filter);
this.renderer = Render();
tags(this, Liquid);
@@ -3481,8 +3522,8 @@ var _engine = {
var tpl = this.parser.parseValue(str.trim());
return this.renderer.evalValue(tpl, scope);
},
- registerFilter: function registerFilter(name, filter$$1) {
- return this.filter.register(name, filter$$1);
+ registerFilter: function registerFilter(name, filter) {
+ return this.filter.register(name, filter);
},
registerTag: function registerTag(name, tag) {
return this.tag.register(name, tag);
@@ -3638,7 +3679,7 @@ var _engine = {
}(),
respectCache: function () {
var _ref8 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(key, getter) {
- var cacheEnabled, value$$1;
+ var cacheEnabled, value;
return regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
@@ -3657,12 +3698,12 @@ var _engine = {
return getter();
case 5:
- value$$1 = _context8.sent;
+ value = _context8.sent;
if (cacheEnabled) {
- this.cache[key] = value$$1;
+ this.cache[key] = value;
}
- return _context8.abrupt('return', value$$1);
+ return _context8.abrupt('return', value);
case 8:
case 'end':
@@ -3691,9 +3732,9 @@ var _engine = {
}
};
-function normalizeStringArray(value$$1) {
- if (Array.isArray(value$$1)) return value$$1;
- if (isString(value$$1)) return [value$$1];
+function normalizeStringArray(value) {
+ if (Array.isArray(value)) return value;
+ if (isString(value)) return [value];
return [];
}
@@ -3713,7 +3754,7 @@ function Liquid(options) {
}, options);
options.root = normalizeStringArray(options.root);
- var engine = Object.create(_engine);
+ var engine = create(_engine);
engine.init(Tag(), Filter(options), options);
return engine;
}
@@ -3727,12 +3768,11 @@ Liquid.Types = {
TokenizationError: TokenizationError,
RenderBreakError: RenderBreakError,
AssertionError: AssertionError,
- AssignScope: Object.create(null),
- CaptureScope: Object.create(null),
- IncrementScope: Object.create(null),
- DecrementScope: Object.create(null)
+ AssignScope: {},
+ CaptureScope: {},
+ IncrementScope: {},
+ DecrementScope: {}
};
-Liquid.lexical = lexical;
module.exports = Liquid;
//# sourceMappingURL=liquid.common.js.map
diff --git a/dist/liquid.common.js.map b/dist/liquid.common.js.map
index 8ce102f5b..71e754a3f 100644
--- a/dist/liquid.common.js.map
+++ b/dist/liquid.common.js.map
@@ -1 +1 @@
-{"version":3,"file":"liquid.common.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = Object.prototype.toString.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = Object.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = Object.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = Object.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = Object.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = Object.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => Object.assign(ctx, val), Object.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = Object.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = Object.create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = Object.create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = Object.create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = Object.create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = Object.create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = Object.create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = Object.create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const withRE = new RegExp(`with\\\\s+(${lexical.value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = lexical.value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (lexical.quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += `
`\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst monthNamesShort = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',\n 'Nov', 'Dec'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport * as lexical from './lexical.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = Object.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: Object.create(null),\n CaptureScope: Object.create(null),\n IncrementScope: Object.create(null),\n DecrementScope: Object.create(null)\n}\nLiquid.lexical = lexical\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","uniq","u","a","l","range","start","stop","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isRange","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","_","map","align","join","n","blank","msg","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","factory","defaultOptions","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","greedy","inRaw","shouldTrimLeft","shouldTrimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","trimLeft","rLeft","replace","trimRight","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","root","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","tagImpl","impl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","strict_filters","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","anySeries","ret","item","idx","catch","mapSeries","liquid","Liquid","collection","renderer","renderTemplates","elseTemplates","offset","limit","reversed","forloop","finished","Types","registerTag","tagToken","remainTokens","p","parser","on","rIdentifier","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","DecrementScope","rValue","groupRE","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","floor","col","row","engine","monthNames","monthNamesShort","dayNames","dayNamesShort","suffixes","_date","d","feb","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","jan1","Date","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","code","getTemplateFromFile","getTemplateFromUrl","lookup","respectCache","isValidUrl","httpGet","fullUrl","getter","cacheEnabled","filePath","renderFile","normalizeStringArray"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;AAOA,CAAE,UAASA,MAAT,EAAiB;AACjB;MAEIC,KAAKC,OAAOC,SAAhB;MACIC,SAASH,GAAGI,cAAhB;MACIC,SAAJ,CALiB;MAMbC,UAAU,OAAOC,MAAP,KAAkB,UAAlB,GAA+BA,MAA/B,GAAwC,EAAtD;MACIC,iBAAiBF,QAAQG,QAAR,IAAoB,YAAzC;MACIC,sBAAsBJ,QAAQK,aAAR,IAAyB,iBAAnD;MACIC,oBAAoBN,QAAQO,WAAR,IAAuB,eAA/C;;MAEIC,WAAW,QAAOC,MAAP,yCAAOA,MAAP,OAAkB,QAAjC;MACIC,UAAUjB,OAAOkB,kBAArB;MACID,OAAJ,EAAa;QACPF,QAAJ,EAAc;;;aAGLI,OAAP,GAAiBF,OAAjB;;;;;;;;;YASMjB,OAAOkB,kBAAP,GAA4BH,WAAWC,OAAOG,OAAlB,GAA4B,EAAlE;;WAESC,IAAT,CAAcC,OAAd,EAAuBC,OAAvB,EAAgCC,IAAhC,EAAsCC,WAAtC,EAAmD;;QAE7CC,iBAAiBH,WAAWA,QAAQnB,SAAR,YAA6BuB,SAAxC,GAAoDJ,OAApD,GAA8DI,SAAnF;QACIC,YAAYzB,OAAO0B,MAAP,CAAcH,eAAetB,SAA7B,CAAhB;QACI0B,UAAU,IAAIC,OAAJ,CAAYN,eAAe,EAA3B,CAAd;;;;cAIUO,OAAV,GAAoBC,iBAAiBX,OAAjB,EAA0BE,IAA1B,EAAgCM,OAAhC,CAApB;;WAEOF,SAAP;;UAEMP,IAAR,GAAeA,IAAf;;;;;;;;;;;;WAYSa,QAAT,CAAkBC,EAAlB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgC;QAC1B;aACK,EAAEC,MAAM,QAAR,EAAkBD,KAAKF,GAAGI,IAAH,CAAQH,GAAR,EAAaC,GAAb,CAAvB,EAAP;KADF,CAEE,OAAOG,GAAP,EAAY;aACL,EAAEF,MAAM,OAAR,EAAiBD,KAAKG,GAAtB,EAAP;;;;MAIAC,yBAAyB,gBAA7B;MACIC,yBAAyB,gBAA7B;MACIC,oBAAoB,WAAxB;MACIC,oBAAoB,WAAxB;;;;MAIIC,mBAAmB,EAAvB;;;;;;WAMSlB,SAAT,GAAqB;WACZmB,iBAAT,GAA6B;WACpBC,0BAAT,GAAsC;;;;MAIlCC,oBAAoB,EAAxB;oBACkBtC,cAAlB,IAAoC,YAAY;WACvC,IAAP;GADF;;MAIIuC,WAAW9C,OAAO+C,cAAtB;MACIC,0BAA0BF,YAAYA,SAASA,SAASG,OAAO,EAAP,CAAT,CAAT,CAA1C;MACID,2BACAA,4BAA4BjD,EAD5B,IAEAG,OAAOkC,IAAP,CAAYY,uBAAZ,EAAqCzC,cAArC,CAFJ,EAE0D;;;wBAGpCyC,uBAApB;;;MAGEE,KAAKN,2BAA2B3C,SAA3B,GACPuB,UAAUvB,SAAV,GAAsBD,OAAO0B,MAAP,CAAcmB,iBAAd,CADxB;oBAEkB5C,SAAlB,GAA8BiD,GAAGC,WAAH,GAAiBP,0BAA/C;6BAC2BO,WAA3B,GAAyCR,iBAAzC;6BAC2BhC,iBAA3B,IACEgC,kBAAkBS,WAAlB,GAAgC,mBADlC;;;;WAKSC,qBAAT,CAA+BpD,SAA/B,EAA0C;KACvC,MAAD,EAAS,OAAT,EAAkB,QAAlB,EAA4BqD,OAA5B,CAAoC,UAASC,MAAT,EAAiB;gBACzCA,MAAV,IAAoB,UAASrB,GAAT,EAAc;eACzB,KAAKL,OAAL,CAAa0B,MAAb,EAAqBrB,GAArB,CAAP;OADF;KADF;;;UAOMsB,mBAAR,GAA8B,UAASC,MAAT,EAAiB;QACzCC,OAAO,OAAOD,MAAP,KAAkB,UAAlB,IAAgCA,OAAON,WAAlD;WACOO,OACHA,SAASf,iBAAT;;;KAGCe,KAAKN,WAAL,IAAoBM,KAAKC,IAA1B,MAAoC,mBAJjC,GAKH,KALJ;GAFF;;UAUQC,IAAR,GAAe,UAASH,MAAT,EAAiB;QAC1BzD,OAAO6D,cAAX,EAA2B;aAClBA,cAAP,CAAsBJ,MAAtB,EAA8Bb,0BAA9B;KADF,MAEO;aACEkB,SAAP,GAAmBlB,0BAAnB;UACI,EAAEjC,qBAAqB8C,MAAvB,CAAJ,EAAoC;eAC3B9C,iBAAP,IAA4B,mBAA5B;;;WAGGV,SAAP,GAAmBD,OAAO0B,MAAP,CAAcwB,EAAd,CAAnB;WACOO,MAAP;GAVF;;;;;;UAiBQM,KAAR,GAAgB,UAAS7B,GAAT,EAAc;WACrB,EAAE8B,SAAS9B,GAAX,EAAP;GADF;;WAIS+B,aAAT,CAAuBxC,SAAvB,EAAkC;aACvByC,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6BiC,OAA7B,EAAsCC,MAAtC,EAA8C;UACxCC,SAAStC,SAASN,UAAU8B,MAAV,CAAT,EAA4B9B,SAA5B,EAAuCS,GAAvC,CAAb;UACImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;eACpBkC,OAAOnC,GAAd;OADF,MAEO;YACDoC,SAASD,OAAOnC,GAApB;YACIqC,QAAQD,OAAOC,KAAnB;YACIA,SACA,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QADjB,IAEArE,OAAOkC,IAAP,CAAYmC,KAAZ,EAAmB,SAAnB,CAFJ,EAEmC;iBAC1BC,QAAQL,OAAR,CAAgBI,MAAMP,OAAtB,EAA+BS,IAA/B,CAAoC,UAASF,KAAT,EAAgB;mBAClD,MAAP,EAAeA,KAAf,EAAsBJ,OAAtB,EAA+BC,MAA/B;WADK,EAEJ,UAAS/B,GAAT,EAAc;mBACR,OAAP,EAAgBA,GAAhB,EAAqB8B,OAArB,EAA8BC,MAA9B;WAHK,CAAP;;;eAOKI,QAAQL,OAAR,CAAgBI,KAAhB,EAAuBE,IAAvB,CAA4B,UAASC,SAAT,EAAoB;;;;iBAI9CH,KAAP,GAAeG,SAAf;kBACQJ,MAAR;SALK,EAMJ,UAASK,KAAT,EAAgB;;;iBAGVT,OAAO,OAAP,EAAgBS,KAAhB,EAAuBR,OAAvB,EAAgCC,MAAhC,CAAP;SATK,CAAP;;;;QAcAQ,eAAJ;;aAESC,OAAT,CAAiBtB,MAAjB,EAAyBrB,GAAzB,EAA8B;eACnB4C,0BAAT,GAAsC;eAC7B,IAAIN,OAAJ,CAAY,UAASL,OAAT,EAAkBC,MAAlB,EAA0B;iBACpCb,MAAP,EAAerB,GAAf,EAAoBiC,OAApB,EAA6BC,MAA7B;SADK,CAAP;;;aAKKQ;;;;;;;;;;;;;wBAaaA,gBAAgBH,IAAhB,CAChBK,0BADgB;;;gCAAA,CAAlB,GAKIA,4BAlBN;;;;;SAuBGjD,OAAL,GAAegD,OAAf;;;wBAGoBZ,cAAchE,SAApC;gBACcA,SAAd,CAAwBQ,mBAAxB,IAA+C,YAAY;WAClD,IAAP;GADF;UAGQwD,aAAR,GAAwBA,aAAxB;;;;;UAKQc,KAAR,GAAgB,UAAS5D,OAAT,EAAkBC,OAAlB,EAA2BC,IAA3B,EAAiCC,WAAjC,EAA8C;QACxD0D,OAAO,IAAIf,aAAJ,CACT/C,KAAKC,OAAL,EAAcC,OAAd,EAAuBC,IAAvB,EAA6BC,WAA7B,CADS,CAAX;;WAIOP,QAAQyC,mBAAR,CAA4BpC,OAA5B,IACH4D,IADG;MAEHA,KAAKC,IAAL,GAAYR,IAAZ,CAAiB,UAASH,MAAT,EAAiB;aACzBA,OAAOY,IAAP,GAAcZ,OAAOC,KAArB,GAA6BS,KAAKC,IAAL,EAApC;KADF,CAFJ;GALF;;WAYSnD,gBAAT,CAA0BX,OAA1B,EAAmCE,IAAnC,EAAyCM,OAAzC,EAAkD;QAC5CwD,QAAQ7C,sBAAZ;;WAEO,SAAS4B,MAAT,CAAgBX,MAAhB,EAAwBrB,GAAxB,EAA6B;UAC9BiD,UAAU3C,iBAAd,EAAiC;cACzB,IAAI4C,KAAJ,CAAU,8BAAV,CAAN;;;UAGED,UAAU1C,iBAAd,EAAiC;YAC3Bc,WAAW,OAAf,EAAwB;gBAChBrB,GAAN;;;;;eAKKmD,YAAP;;;cAGM9B,MAAR,GAAiBA,MAAjB;cACQrB,GAAR,GAAcA,GAAd;;aAEO,IAAP,EAAa;YACPoD,WAAW3D,QAAQ2D,QAAvB;YACIA,QAAJ,EAAc;cACRC,iBAAiBC,oBAAoBF,QAApB,EAA8B3D,OAA9B,CAArB;cACI4D,cAAJ,EAAoB;gBACdA,mBAAmB7C,gBAAvB,EAAyC;mBAClC6C,cAAP;;;;YAIA5D,QAAQ4B,MAAR,KAAmB,MAAvB,EAA+B;;;kBAGrBkC,IAAR,GAAe9D,QAAQ+D,KAAR,GAAgB/D,QAAQO,GAAvC;SAHF,MAKO,IAAIP,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;cACjC4B,UAAU7C,sBAAd,EAAsC;oBAC5BG,iBAAR;kBACMd,QAAQO,GAAd;;;kBAGMyD,iBAAR,CAA0BhE,QAAQO,GAAlC;SANK,MAQA,IAAIP,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;kBAC9BqC,MAAR,CAAe,QAAf,EAAyBjE,QAAQO,GAAjC;;;gBAGMM,iBAAR;;YAEI6B,SAAStC,SAASZ,OAAT,EAAkBE,IAAlB,EAAwBM,OAAxB,CAAb;YACI0C,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;;;kBAGpBR,QAAQuD,IAAR,GACJzC,iBADI,GAEJF,sBAFJ;;cAII8B,OAAOnC,GAAP,KAAeQ,gBAAnB,EAAqC;;;;iBAI9B;mBACE2B,OAAOnC,GADT;kBAECP,QAAQuD;WAFhB;SAXF,MAgBO,IAAIb,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;kBAC1BM,iBAAR;;;kBAGQc,MAAR,GAAiB,OAAjB;kBACQrB,GAAR,GAAcmC,OAAOnC,GAArB;;;KArEN;;;;;;;WA+EOsD,mBAAT,CAA6BF,QAA7B,EAAuC3D,OAAvC,EAAgD;QAC1C4B,SAAS+B,SAAS9E,QAAT,CAAkBmB,QAAQ4B,MAA1B,CAAb;QACIA,WAAWnD,SAAf,EAA0B;;;cAGhBkF,QAAR,GAAmB,IAAnB;;UAEI3D,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;YAC1B+B,SAAS9E,QAAT,CAAkBqF,MAAtB,EAA8B;;;kBAGpBtC,MAAR,GAAiB,QAAjB;kBACQrB,GAAR,GAAc9B,SAAd;8BACoBkF,QAApB,EAA8B3D,OAA9B;;cAEIA,QAAQ4B,MAAR,KAAmB,OAAvB,EAAgC;;;mBAGvBb,gBAAP;;;;gBAIIa,MAAR,GAAiB,OAAjB;gBACQrB,GAAR,GAAc,IAAI4D,SAAJ,CACZ,gDADY,CAAd;;;aAIKpD,gBAAP;;;QAGE2B,SAAStC,SAASwB,MAAT,EAAiB+B,SAAS9E,QAA1B,EAAoCmB,QAAQO,GAA5C,CAAb;;QAEImC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;cACnBoB,MAAR,GAAiB,OAAjB;cACQrB,GAAR,GAAcmC,OAAOnC,GAArB;cACQoD,QAAR,GAAmB,IAAnB;aACO5C,gBAAP;;;QAGEqD,OAAO1B,OAAOnC,GAAlB;;QAEI,CAAE6D,IAAN,EAAY;cACFxC,MAAR,GAAiB,OAAjB;cACQrB,GAAR,GAAc,IAAI4D,SAAJ,CAAc,kCAAd,CAAd;cACQR,QAAR,GAAmB,IAAnB;aACO5C,gBAAP;;;QAGEqD,KAAKb,IAAT,EAAe;;;cAGLI,SAASU,UAAjB,IAA+BD,KAAKxB,KAApC;;;cAGQU,IAAR,GAAeK,SAASW,OAAxB;;;;;;;;UAQItE,QAAQ4B,MAAR,KAAmB,QAAvB,EAAiC;gBACvBA,MAAR,GAAiB,MAAjB;gBACQrB,GAAR,GAAc9B,SAAd;;KAhBJ,MAmBO;;aAEE2F,IAAP;;;;;YAKMT,QAAR,GAAmB,IAAnB;WACO5C,gBAAP;;;;;wBAKoBQ,EAAtB;;KAEGvC,iBAAH,IAAwB,WAAxB;;;;;;;KAOGJ,cAAH,IAAqB,YAAW;WACvB,IAAP;GADF;;KAIG2F,QAAH,GAAc,YAAW;WAChB,oBAAP;GADF;;WAISC,YAAT,CAAsBC,IAAtB,EAA4B;QACtBC,QAAQ,EAAEC,QAAQF,KAAK,CAAL,CAAV,EAAZ;;QAEI,KAAKA,IAAT,EAAe;YACPG,QAAN,GAAiBH,KAAK,CAAL,CAAjB;;;QAGE,KAAKA,IAAT,EAAe;YACPI,UAAN,GAAmBJ,KAAK,CAAL,CAAnB;YACMK,QAAN,GAAiBL,KAAK,CAAL,CAAjB;;;SAGGM,UAAL,CAAgBC,IAAhB,CAAqBN,KAArB;;;WAGOO,aAAT,CAAuBP,KAAvB,EAA8B;QACxBhC,SAASgC,MAAMQ,UAAN,IAAoB,EAAjC;WACO1E,IAAP,GAAc,QAAd;WACOkC,OAAOnC,GAAd;UACM2E,UAAN,GAAmBxC,MAAnB;;;WAGOzC,OAAT,CAAiBN,WAAjB,EAA8B;;;;SAIvBoF,UAAL,GAAkB,CAAC,EAAEJ,QAAQ,MAAV,EAAD,CAAlB;gBACYhD,OAAZ,CAAoB6C,YAApB,EAAkC,IAAlC;SACKW,KAAL,CAAW,IAAX;;;UAGMC,IAAR,GAAe,UAASC,MAAT,EAAiB;QAC1BD,OAAO,EAAX;SACK,IAAIE,GAAT,IAAgBD,MAAhB,EAAwB;WACjBL,IAAL,CAAUM,GAAV;;SAEGC,OAAL;;;;WAIO,SAASjC,IAAT,GAAgB;aACd8B,KAAKI,MAAZ,EAAoB;YACdF,MAAMF,KAAKK,GAAL,EAAV;YACIH,OAAOD,MAAX,EAAmB;eACZzC,KAAL,GAAa0C,GAAb;eACK/B,IAAL,GAAY,KAAZ;iBACOD,IAAP;;;;;;;WAOCC,IAAL,GAAY,IAAZ;aACOD,IAAP;KAdF;GATF;;WA2BShC,MAAT,CAAgBoE,QAAhB,EAA0B;QACpBA,QAAJ,EAAc;UACRC,iBAAiBD,SAAS9G,cAAT,CAArB;UACI+G,cAAJ,EAAoB;eACXA,eAAelF,IAAf,CAAoBiF,QAApB,CAAP;;;UAGE,OAAOA,SAASpC,IAAhB,KAAyB,UAA7B,EAAyC;eAChCoC,QAAP;;;UAGE,CAACE,MAAMF,SAASF,MAAf,CAAL,EAA6B;YACvBK,IAAI,CAAC,CAAT;YAAYvC,OAAO,SAASA,IAAT,GAAgB;iBAC1B,EAAEuC,CAAF,GAAMH,SAASF,MAAtB,EAA8B;gBACxBjH,OAAOkC,IAAP,CAAYiF,QAAZ,EAAsBG,CAAtB,CAAJ,EAA8B;mBACvBjD,KAAL,GAAa8C,SAASG,CAAT,CAAb;mBACKtC,IAAL,GAAY,KAAZ;qBACOD,IAAP;;;;eAICV,KAAL,GAAanE,SAAb;eACK8E,IAAL,GAAY,IAAZ;;iBAEOD,IAAP;SAZF;;eAeOA,KAAKA,IAAL,GAAYA,IAAnB;;;;;WAKG,EAAEA,MAAMI,UAAR,EAAP;;UAEMpC,MAAR,GAAiBA,MAAjB;;WAESoC,UAAT,GAAsB;WACb,EAAEd,OAAOnE,SAAT,EAAoB8E,MAAM,IAA1B,EAAP;;;UAGMjF,SAAR,GAAoB;iBACL2B,OADK;;WAGX,eAAS6F,aAAT,EAAwB;WACxBC,IAAL,GAAY,CAAZ;WACKzC,IAAL,GAAY,CAAZ;;;WAGKQ,IAAL,GAAY,KAAKC,KAAL,GAAatF,SAAzB;WACK8E,IAAL,GAAY,KAAZ;WACKI,QAAL,GAAgB,IAAhB;;WAEK/B,MAAL,GAAc,MAAd;WACKrB,GAAL,GAAW9B,SAAX;;WAEKsG,UAAL,CAAgBpD,OAAhB,CAAwBsD,aAAxB;;UAEI,CAACa,aAAL,EAAoB;aACb,IAAI9D,IAAT,IAAiB,IAAjB,EAAuB;;cAEjBA,KAAKgE,MAAL,CAAY,CAAZ,MAAmB,GAAnB,IACAzH,OAAOkC,IAAP,CAAY,IAAZ,EAAkBuB,IAAlB,CADA,IAEA,CAAC4D,MAAM,CAAC5D,KAAKiE,KAAL,CAAW,CAAX,CAAP,CAFL,EAE4B;iBACrBjE,IAAL,IAAavD,SAAb;;;;KAvBU;;UA6BZ,gBAAW;WACV8E,IAAL,GAAY,IAAZ;;UAEI2C,YAAY,KAAKnB,UAAL,CAAgB,CAAhB,CAAhB;UACIoB,aAAaD,UAAUhB,UAA3B;UACIiB,WAAW3F,IAAX,KAAoB,OAAxB,EAAiC;cACzB2F,WAAW5F,GAAjB;;;aAGK,KAAK6F,IAAZ;KAtCgB;;uBAyCC,2BAASC,SAAT,EAAoB;UACjC,KAAK9C,IAAT,EAAe;cACP8C,SAAN;;;UAGErG,UAAU,IAAd;eACSsG,MAAT,CAAgBC,GAAhB,EAAqBC,MAArB,EAA6B;eACpBhG,IAAP,GAAc,OAAd;eACOD,GAAP,GAAa8F,SAAb;gBACQ/C,IAAR,GAAeiD,GAAf;;YAEIC,MAAJ,EAAY;;;kBAGF5E,MAAR,GAAiB,MAAjB;kBACQrB,GAAR,GAAc9B,SAAd;;;eAGK,CAAC,CAAE+H,MAAV;;;WAGG,IAAIX,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInD,SAASgC,MAAMQ,UAAnB;;YAEIR,MAAMC,MAAN,KAAiB,MAArB,EAA6B;;;;iBAIpB2B,OAAO,KAAP,CAAP;;;YAGE5B,MAAMC,MAAN,IAAgB,KAAKoB,IAAzB,EAA+B;cACzBU,WAAWlI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,UAAnB,CAAf;cACIgC,aAAanI,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CAAjB;;cAEI+B,YAAYC,UAAhB,EAA4B;gBACtB,KAAKX,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;qBACvB0B,OAAO5B,MAAME,QAAb,EAAuB,IAAvB,CAAP;aADF,MAEO,IAAI,KAAKmB,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;qBAChCyB,OAAO5B,MAAMG,UAAb,CAAP;;WAJJ,MAOO,IAAI4B,QAAJ,EAAc;gBACf,KAAKV,IAAL,GAAYrB,MAAME,QAAtB,EAAgC;qBACvB0B,OAAO5B,MAAME,QAAb,EAAuB,IAAvB,CAAP;;WAFG,MAKA,IAAI8B,UAAJ,EAAgB;gBACjB,KAAKX,IAAL,GAAYrB,MAAMG,UAAtB,EAAkC;qBACzByB,OAAO5B,MAAMG,UAAb,CAAP;;WAFG,MAKA;kBACC,IAAIpB,KAAJ,CAAU,wCAAV,CAAN;;;;KA/FU;;YAqGV,gBAASjD,IAAT,EAAeD,GAAf,EAAoB;WACrB,IAAIsF,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMC,MAAN,IAAgB,KAAKoB,IAArB,IACAxH,OAAOkC,IAAP,CAAYiE,KAAZ,EAAmB,YAAnB,CADA,IAEA,KAAKqB,IAAL,GAAYrB,MAAMG,UAFtB,EAEkC;cAC5B8B,eAAejC,KAAnB;;;;;UAKAiC,iBACCnG,SAAS,OAAT,IACAA,SAAS,UAFV,KAGAmG,aAAahC,MAAb,IAAuBpE,GAHvB,IAIAA,OAAOoG,aAAa9B,UAJxB,EAIoC;;;uBAGnB,IAAf;;;UAGEnC,SAASiE,eAAeA,aAAazB,UAA5B,GAAyC,EAAtD;aACO1E,IAAP,GAAcA,IAAd;aACOD,GAAP,GAAaA,GAAb;;UAEIoG,YAAJ,EAAkB;aACX/E,MAAL,GAAc,MAAd;aACK0B,IAAL,GAAYqD,aAAa9B,UAAzB;eACO9D,gBAAP;;;aAGK,KAAK6F,QAAL,CAAclE,MAAd,CAAP;KApIgB;;cAuIR,kBAASA,MAAT,EAAiBoC,QAAjB,EAA2B;UAC/BpC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;cACrBkC,OAAOnC,GAAb;;;UAGEmC,OAAOlC,IAAP,KAAgB,OAAhB,IACAkC,OAAOlC,IAAP,KAAgB,UADpB,EACgC;aACzB8C,IAAL,GAAYZ,OAAOnC,GAAnB;OAFF,MAGO,IAAImC,OAAOlC,IAAP,KAAgB,QAApB,EAA8B;aAC9B4F,IAAL,GAAY,KAAK7F,GAAL,GAAWmC,OAAOnC,GAA9B;aACKqB,MAAL,GAAc,QAAd;aACK0B,IAAL,GAAY,KAAZ;OAHK,MAIA,IAAIZ,OAAOlC,IAAP,KAAgB,QAAhB,IAA4BsE,QAAhC,EAA0C;aAC1CxB,IAAL,GAAYwB,QAAZ;;;aAGK/D,gBAAP;KAvJgB;;YA0JV,gBAAS8D,UAAT,EAAqB;WACtB,IAAIgB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMG,UAAN,KAAqBA,UAAzB,EAAqC;eAC9B+B,QAAL,CAAclC,MAAMQ,UAApB,EAAgCR,MAAMI,QAAtC;wBACcJ,KAAd;iBACO3D,gBAAP;;;KAhKY;;aAqKT,gBAAS4D,MAAT,EAAiB;WACnB,IAAIkB,IAAI,KAAKd,UAAL,CAAgBS,MAAhB,GAAyB,CAAtC,EAAyCK,KAAK,CAA9C,EAAiD,EAAEA,CAAnD,EAAsD;YAChDnB,QAAQ,KAAKK,UAAL,CAAgBc,CAAhB,CAAZ;YACInB,MAAMC,MAAN,KAAiBA,MAArB,EAA6B;cACvBjC,SAASgC,MAAMQ,UAAnB;cACIxC,OAAOlC,IAAP,KAAgB,OAApB,EAA6B;gBACvBqG,SAASnE,OAAOnC,GAApB;0BACcmE,KAAd;;iBAEKmC,MAAP;;;;;;YAME,IAAIpD,KAAJ,CAAU,uBAAV,CAAN;KApLgB;;mBAuLH,uBAASiC,QAAT,EAAmBrB,UAAnB,EAA+BC,OAA/B,EAAwC;WAChDX,QAAL,GAAgB;kBACJrC,OAAOoE,QAAP,CADI;oBAEFrB,UAFE;iBAGLC;OAHX;;UAMI,KAAK1C,MAAL,KAAgB,MAApB,EAA4B;;;aAGrBrB,GAAL,GAAW9B,SAAX;;;aAGKsC,gBAAP;;GApMJ;CA3fD;;;;AAssBE,YAAW;SACH,QAAS,QAAOrB,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,IAA5C;CADF,MAEQoH,SAAS,aAAT,GAxsBT,CAAD;;ACPA,IAAMC,QAAQ1I,OAAOC,SAAP,CAAiBiG,QAA/B;;;;;;;AAOA,AAAO,SAASyC,QAAT,CAAmBpE,KAAnB,EAA0B;SACxBmE,MAAMtG,IAAN,CAAWmC,KAAX,MAAsB,iBAA7B;;;AAGF,AAAO,SAASqE,SAAT,CAAoBrE,KAApB,EAA2B;MAC5BsE,MAAMtE,KAAN,CAAJ,EAAkB;WACTuE,OAAOvE,KAAP,CAAP;;MAEE,OAAOA,MAAMwE,SAAb,KAA2B,UAA/B,EAA2C;WAClCH,UAAUrE,MAAMwE,SAAN,EAAV,CAAP;;MAEE,OAAOxE,MAAMyE,QAAb,KAA0B,UAA9B,EAA0C;WACjCJ,UAAUrE,MAAMyE,QAAN,EAAV,CAAP;;MAEEL,SAASpE,KAAT,CAAJ,EAAqB;WACZA,KAAP;;;MAGI0E,QAAQ,EAAd;SACOC,KAAKN,SAAL,CAAerE,KAAf,EAAsB,UAAC0C,GAAD,EAAM1C,KAAN,EAAgB;QACvC4E,SAAS5E,KAAT,CAAJ,EAAqB;UACf0E,MAAMG,OAAN,CAAc7E,KAAd,MAAyB,CAAC,CAA9B,EAAiC;;;YAG3BoC,IAAN,CAAWpC,KAAX;;WAEKA,KAAP;GAPK,CAAP;;;AAWF,AAAO,SAASsE,KAAT,CAAgBtE,KAAhB,EAAuB;SACrBA,UAAU,IAAV,IAAkBA,UAAUnE,SAAnC;;;AAGF,AAAO,SAASiJ,OAAT,CAAkB9E,KAAlB,EAAyB;;SAEvBmE,MAAMtG,IAAN,CAAWmC,KAAX,MAAsB,gBAA7B;;;;;;;;;;;AAkBF,AAAO,SAAS+E,MAAT,CAAiBtC,MAAjB,EAAyBuC,QAAzB,EAAmC;WAC/BvC,UAAU,EAAnB;OACK,IAAMwC,CAAX,IAAgBxC,MAAhB,EAAwB;QAClBA,OAAO7G,cAAP,CAAsBqJ,CAAtB,CAAJ,EAA8B;UACxBD,SAASvC,OAAOwC,CAAP,CAAT,EAAoBA,CAApB,EAAuBxC,MAAvB,MAAmC,KAAvC,EAA8C;;;SAG3CA,MAAP;;;;;;;;;;;;;;AAcF,AAAO,SAASyC,MAAT,CAAiBzC,MAAjB,EAAyB;WACrBmC,SAASnC,MAAT,IAAmBA,MAAnB,GAA4B,EAArC;MACM0C,OAAOC,MAAM1J,SAAN,CAAgB2H,KAAhB,CAAsBxF,IAAtB,CAA2BwH,SAA3B,EAAsC,CAAtC,CAAb;OACKtG,OAAL,CAAa,UAACuG,GAAD;WAAS7J,OAAOyJ,MAAP,CAAczC,MAAd,EAAsB6C,GAAtB,CAAT;GAAb;SACO7C,MAAP;;;AAGF,AAAO,SAAS8C,IAAT,CAAeC,GAAf,EAAoB;SAClBA,IAAIA,IAAI5C,MAAJ,GAAa,CAAjB,CAAP;;;AAGF,AAAO,SAAS6C,IAAT,CAAeD,GAAf,EAAoB;MACnBE,IAAI,EAAV;MACMC,IAAI,EAAV;OACK,IAAI1C,IAAI,CAAR,EAAW2C,IAAIJ,IAAI5C,MAAxB,EAAgCK,IAAI2C,CAApC,EAAuC,EAAE3C,CAAzC,EAA4C;QACtCyC,EAAE9J,cAAF,CAAiB4J,IAAIvC,CAAJ,CAAjB,CAAJ,EAA8B;;;MAG5Bb,IAAF,CAAOoD,IAAIvC,CAAJ,CAAP;MACEuC,IAAIvC,CAAJ,CAAF,IAAY,CAAZ;;SAEK0C,CAAP;;;;;;;;;AASF,AAAO,SAASf,QAAT,CAAmB5E,KAAnB,EAA0B;MACzBpC,cAAcoC,KAAd,yCAAcA,KAAd,CAAN;SACOA,SAAS,IAAT,KAAkBpC,SAAS,QAAT,IAAqBA,SAAS,UAAhD,CAAP;;;;;;;;;;;AAWF,AAAO,SAASiI,KAAT,CAAgBC,KAAhB,EAAuBC,IAAvB,EAA6BC,IAA7B,EAAmC;MACpCX,UAAUzC,MAAV,KAAqB,CAAzB,EAA4B;WACnBkD,KAAP;YACQ,CAAR;;SAEKE,QAAQ,CAAf;;MAEMR,MAAM,EAAZ;OACK,IAAIvC,IAAI6C,KAAb,EAAoB7C,IAAI8C,IAAxB,EAA8B9C,KAAK+C,IAAnC,EAAyC;QACnC5D,IAAJ,CAASa,CAAT;;SAEKuC,GAAP;;;ACxIF;AACA,IAAMS,eAAe,SAArB;AACA,IAAMC,eAAe,SAArB;AACA,AAAO,IAAMC,SAAS,IAAIC,MAAJ,CAAcH,aAAaI,MAA3B,SAAqCH,aAAaG,MAAlD,CAAf;AACP,AAAO,IAAMC,gBAAgB,IAAIF,MAAJ,SAAiBD,OAAOE,MAAxB,eAAtB;;;AAGP,AAAO,IAAME,UAAU,OAAhB;AACP,AAAO,IAAMC,SAAS,oBAAf;AACP,AAAO,IAAMC,OAAO,YAAb;;;AAGP,AAAO,IAAMC,aAAa,YAAnB;AACP,AAAO,IAAMC,YAAY,IAAIP,MAAJ,YAAoBD,OAAOE,MAA3B,qBAAlB;AACP,AAAO,IAAMO,UAAU,IAAIR,MAAJ,SAAiBD,OAAOE,MAAxB,SAAkCI,KAAKJ,MAAvC,SAAiDG,OAAOH,MAAxD,OAAhB;AACP,AAAO,IAAMQ,WAAW,IAAIT,MAAJ,CAAcM,WAAWL,MAAzB,cAAwCK,WAAWL,MAAnD,SAA6DM,UAAUN,MAAvE,QAAjB;;;AAGP,AAAO,IAAMS,aAAa,IAAIV,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCG,OAAOH,MAA3C,OAAnB;AACP,AAAO,IAAMR,UAAQ,IAAIO,MAAJ,SAAiBU,WAAWT,MAA5B,cAA2CS,WAAWT,MAAtD,SAAd;AACP,AAAO,IAAMU,eAAe,IAAIX,MAAJ,UAAkBU,WAAWT,MAA7B,gBAA8CS,WAAWT,MAAzD,UAArB;;AAEP,AAAO,IAAMrG,QAAQ,IAAIoG,MAAJ,SAAiBS,SAASR,MAA1B,SAAoCO,QAAQP,MAA5C,SAAsDR,QAAMQ,MAA5D,OAAd;;;AAGP,AAAO,IAAMW,OAAO,IAAIZ,MAAJ,SAAiBM,WAAWL,MAA5B,qBAAkDrG,MAAMqG,MAAxD,OAAb;AACP,AAAO,IAAMY,cAAc,IAAIb,MAAJ,OAAeM,WAAWL,MAA1B,mBAA8CrG,MAAMqG,MAApD,QAA+D,GAA/D,CAApB;;;AAGP,AAAO,IAAMa,UAAU,IAAId,MAAJ,YAAoBM,WAAWL,MAA/B,2BAAhB;AACP,AAAO,IAAMc,cAAc,IAAIf,MAAJ,OAAeQ,QAAQP,MAAvB,QAAkC,GAAlC,CAApB;AACP,AAAO,IAAMe,eAAe,IAAIhB,MAAJ,OAAeS,SAASR,MAAxB,OAArB;AACP,AAAO,IAAMgB,aAAa,IAAIjB,MAAJ,OAAeI,OAAOH,MAAtB,OAAnB;AACP,AAAO,IAAMiB,WAAW,IAAIlB,MAAJ,OAAeK,KAAKJ,MAApB,QAA+B,GAA/B,CAAjB;AACP,AAAO,IAAMkB,aAAa,IAAInB,MAAJ,OAAeD,OAAOE,MAAtB,OAAnB;AACP,AAAO,IAAMmB,YAAY,IAAIpB,MAAJ,OAAeW,aAAaV,MAA5B,OAAlB;AACP,AAAO,IAAMoB,cAAc,IAAIrB,MAAJ,OAAeG,QAAQF,MAAvB,OAApB;;;AAGP,AAAO,IAAMqB,mBAAmB,IAAItB,MAAJ,SAAiBM,WAAWL,MAA5B,mBAAgDrG,MAAMqG,MAAtD,CAAzB;AACP,AAAO,IAAMsB,YAAY,IAAIvB,MAAJ,CAAcsB,iBAAiBrB,MAA/B,kBAAkDqB,iBAAiBrB,MAAnE,QAAlB;AACP,AAAO,IAAMuB,SAAS,IAAIxB,MAAJ,CAAcM,WAAWL,MAAzB,oBAA8CsB,UAAUtB,MAAxD,SAAoE,GAApE,CAAf;AACP,AAAO,IAAMwB,gBAAgB,IAAIzB,MAAJ,OAAeM,WAAWL,MAA1B,sBAAiDsB,UAAUtB,MAA3D,SAAtB;AACP,AAAO,IAAMyB,aAAa,IAAI1B,MAAJ,OAAeyB,cAAcxB,MAA7B,OAAnB;;AAEP,AAAO,IAAM0B,YAAY,CACvB,UADuB,EAEvB,WAFuB,EAGvB,gCAHuB,CAAlB;;AAMP,AAAO,SAASC,SAAT,CAAoBC,GAApB,EAAyB;SACvBR,YAAYS,IAAZ,CAAiBD,GAAjB,CAAP;;;AAGF,AAAO,SAASE,SAAT,CAAoBF,GAApB,EAAyB;SACvBd,YAAYe,IAAZ,CAAiBD,GAAjB,CAAP;;;AAGF,AAAO,SAASG,OAAT,CAAkBH,GAAlB,EAAuB;SACrBT,UAAUU,IAAV,CAAeD,GAAf,CAAP;;;AAGF,AAAO,SAASI,UAAT,CAAqBJ,GAArB,EAA0B;SACxBb,aAAac,IAAb,CAAkBD,GAAlB,CAAP;;;AAGF,AAAO,SAASK,UAAT,CAAqBL,GAArB,EAA0B;SACxBjI,MAAMuI,IAAN,CAAWN,GAAX,CAAP;;;AAGF,AAAO,SAASO,YAAT,CAAuBP,GAAvB,EAA4B;MAC7BQ,MAAMR,IAAIS,KAAJ,CAAUrB,UAAV,CAAV;MACIoB,GAAJ,EAAS;WACAE,OAAOV,GAAP,CAAP;;QAEIA,IAAIS,KAAJ,CAAUpB,QAAV,CAAN;MACImB,GAAJ,EAAS;WACAR,IAAIW,WAAJ,OAAsB,MAA7B;;QAEIX,IAAIS,KAAJ,CAAUnB,UAAV,CAAN;MACIkB,GAAJ,EAAS;WACAR,IAAI5E,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAP;;QAEI,IAAI9B,SAAJ,qBAA+B0G,GAA/B,mBAAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFF,SAASY,SAAT,GAAsB;OACfzJ,IAAL,GAAY,KAAKR,WAAL,CAAiBQ,IAA7B;MACIyB,MAAMiI,iBAAV,EAA6B;UACrBA,iBAAN,CAAwB,IAAxB,EAA8B,KAAKlK,WAAnC;;;;AAIJ,SAASmK,eAAT,CAA0BjL,GAA1B,EAA+BkL,KAA/B,EAAsC;YAC1BnL,IAAV,CAAe,IAAf;;OAEKoL,KAAL,GAAaD,MAAMC,KAAnB;OACKC,IAAL,GAAYF,MAAME,IAAlB;OACKC,IAAL,GAAYH,MAAMG,IAAlB;;MAEM/L,UAAUgM,UAAUJ,MAAMC,KAAhB,EAAuBD,MAAME,IAA7B,CAAhB;OACKG,OAAL,GAAeC,UAAUxL,IAAIuL,OAAd,EAAuBL,KAAvB,CAAf;OACKO,KAAL,GAAanM,UACX,IADW,IACH,KAAKmM,KAAL,IAAc,KAAKF,OADhB,KAERvL,IAAIyL,KAAJ,GAAY,YAAYzL,IAAIyL,KAA5B,GAAoC,EAF5B,CAAb;;;AAKF,AAAO,SAASC,iBAAT,CAA4BH,OAA5B,EAAqCL,KAArC,EAA4C;kBACjCnL,IAAhB,CAAqB,IAArB,EAA2B,EAACwL,SAASA,OAAV,EAA3B,EAA+CL,KAA/C;;AAEFQ,kBAAkB9N,SAAlB,GAA8BD,OAAO0B,MAAP,CAAc0D,MAAMnF,SAApB,CAA9B;AACA8N,kBAAkB9N,SAAlB,CAA4BkD,WAA5B,GAA0C4K,iBAA1C;;AAEA,AAAO,SAASC,UAAT,CAAqBC,CAArB,EAAwBV,KAAxB,EAA+B;QACpC,CAAS,IAAT,EAAeU,CAAf;OACKC,aAAL,GAAqBD,CAArB;;kBAEgB7L,IAAhB,CAAqB,IAArB,EAA2B6L,CAA3B,EAA8BV,KAA9B;;AAEFS,WAAW/N,SAAX,GAAuBD,OAAO0B,MAAP,CAAc0D,MAAMnF,SAApB,CAAvB;AACA+N,WAAW/N,SAAX,CAAqBkD,WAArB,GAAmC6K,UAAnC;;AAEA,AAAO,SAASG,WAAT,CAAsBF,CAAtB,EAAyBG,GAAzB,EAA8B;;MAE/BH,aAAaE,WAAjB,EAA8B;WACrBF,CAAP;;QAEF,CAAS,IAAT,EAAeA,CAAf;OACKC,aAAL,GAAqBD,CAArB;;kBAEgB7L,IAAhB,CAAqB,IAArB,EAA2B6L,CAA3B,EAA8BG,IAAIb,KAAlC;;AAEFY,YAAYlO,SAAZ,GAAwBD,OAAO0B,MAAP,CAAc0D,MAAMnF,SAApB,CAAxB;AACAkO,YAAYlO,SAAZ,CAAsBkD,WAAtB,GAAoCgL,WAApC;;AAEA,AAAO,SAASE,gBAAT,CAA2BT,OAA3B,EAAoC;YAC/BxL,IAAV,CAAe,IAAf;OACKwL,OAAL,GAAeA,UAAU,EAAzB;;AAEFS,iBAAiBpO,SAAjB,GAA6BD,OAAO0B,MAAP,CAAc0D,MAAMnF,SAApB,CAA7B;AACAoO,iBAAiBpO,SAAjB,CAA2BkD,WAA3B,GAAyCkL,gBAAzC;;AAEA,AAAO,SAASC,cAAT,CAAyBV,OAAzB,EAAkC;YAC7BxL,IAAV,CAAe,IAAf;OACKwL,OAAL,GAAeA,UAAU,EAAzB;;AAEFU,eAAerO,SAAf,GAA2BD,OAAO0B,MAAP,CAAc0D,MAAMnF,SAApB,CAA3B;AACAqO,eAAerO,SAAf,CAAyBkD,WAAzB,GAAuCmL,cAAvC;;AAEA,SAASX,SAAT,CAAoBH,KAApB,EAA2BC,IAA3B,EAAiC;MACzBc,QAAQf,MAAMgB,KAAN,CAAY,IAAZ,CAAd;MACMC,QAAQC,KAAKC,GAAL,CAASlB,OAAO,CAAhB,EAAmB,CAAnB,CAAd;MACMmB,MAAMF,KAAKG,GAAL,CAASpB,OAAO,CAAhB,EAAmBc,MAAMpH,MAAzB,CAAZ;;MAEMxF,UAAUmN,KAAA,CACPL,KADO,EACAG,MAAM,CADN,EAEbG,GAFa,CAET;WAAK,CACP5E,MAAMsD,IAAP,GAAe,KAAf,GAAuB,KADf,EAERuB,MAAM7E,CAAN,EAASyE,GAAT,CAFQ,EAGR,IAHQ,EAIRL,MAAMpE,IAAI,CAAV,CAJQ,EAKR8E,IALQ,CAKH,EALG,CAAL;GAFS,EAQbA,IARa,CAQR,IARQ,CAAhB;;SAUOtN,OAAP;;;AAGF,SAASqN,KAAT,CAAgBE,CAAhB,EAAmBP,GAAnB,EAAwB;MAChBxH,SAAS,CAACwH,MAAM,EAAP,EAAWxH,MAA1B;MACMqF,MAAM0C,IAAI,EAAhB;MACMC,QAAQxF,MAAMxC,SAASqF,IAAIrF,MAAnB,EAA2B8H,IAA3B,CAAgC,GAAhC,CAAd;SACOE,QAAQ3C,GAAf;;;AAGF,SAASqB,SAAT,CAAoBuB,GAApB,EAAyB7B,KAAzB,EAAgC;QACxB6B,OAAO,EAAb;MACI7B,MAAMG,IAAV,EAAgB;WACP,YAAYH,MAAMG,IAAzB;;MAEEH,MAAME,IAAV,EAAgB;WACP,YAAYF,MAAME,IAAzB;;SAEK2B,GAAP;;;AChGa,iBAAUC,SAAV,EAAqBzB,OAArB,EAA8B;MACvC,CAACyB,SAAL,EAAgB;cACJzB,uBAAqByB,SAArB,gBAAV;UACM,IAAIf,cAAJ,CAAmBV,OAAnB,CAAN;;;;ACDJ,IAAM0B,QAAQ;UACJ,kBAAY;WACX,KAAKC,QAAL,CAAcC,MAAd,CAAqB,UAACC,GAAD,EAAMC,GAAN;aAAc1P,OAAOyJ,MAAP,CAAcgG,GAAd,EAAmBC,GAAnB,CAAd;KAArB,EAA4D1P,OAAO0B,MAAP,CAAc,IAAd,CAA5D,CAAP;GAFU;OAIP,aAAUiO,OAAV,EAAgB;;;QACbC,QAAQ,KAAKC,iBAAL,CAAuBF,OAAvB,CAAd;QACMG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiCd,IAAA,CAAO,KAAKS,QAAZ,CAA/C;WACOK,MAAMJ,MAAN,CAAa,UAACjL,QAAD,EAAQ0C,GAAR;aAAgB,MAAK+I,YAAL,CAAkBzL,QAAlB,EAAyB0C,GAAzB,CAAhB;KAAb,EAA4D6I,KAA5D,CAAP;GAPU;OASP,aAAUH,OAAV,EAAgBM,CAAhB,EAAmB;QAChBL,QAAQ,KAAKC,iBAAL,CAAuBF,OAAvB,CAAd;QACIG,QAAQ,KAAKC,cAAL,CAAoBH,MAAM,CAAN,CAApB,KAAiCd,IAAA,CAAO,KAAKS,QAAZ,CAA7C;UACMW,IAAN,CAAW,UAACjJ,GAAD,EAAMO,CAAN,EAAY;UACjB,CAACsH,QAAA,CAAWgB,KAAX,CAAL,EAAwB;eACf,IAAP;;UAEEtI,MAAMoI,MAAMzI,MAAN,GAAe,CAAzB,EAA4B;cACpBF,GAAN,IAAagJ,CAAb;eACO,IAAP;;UAEE7P,cAAc0P,MAAM7I,GAAN,CAAlB,EAA8B;cACtBA,GAAN,IAAa,EAAb;;cAEM6I,MAAM7I,GAAN,CAAR;KAXF;GAZU;WA0BH,iBAAUwI,GAAV,EAAe;WACf,KAAKF,QAAL,CAAcY,OAAd,CAAsBV,GAAtB,CAAP;GA3BU;QA6BN,cAAUA,GAAV,EAAe;WACZ,KAAKF,QAAL,CAAc5I,IAAd,CAAmB8I,GAAnB,CAAP;GA9BU;OAgCP,aAAUA,GAAV,EAAe;QACd,CAAC7F,UAAUzC,MAAf,EAAuB;aACd,KAAKoI,QAAL,CAAcnI,GAAd,EAAP;;QAEII,IAAI,KAAK+H,QAAL,CAAca,SAAd,CAAwB;aAASN,UAAUL,GAAnB;KAAxB,CAAV;QACIjI,MAAM,CAAC,CAAX,EAAc;YACN,IAAI1B,SAAJ,CAAc,6BAAd,CAAN;;WAEK,KAAKyJ,QAAL,CAAcc,MAAd,CAAqB7I,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,CAAP;GAxCU;kBA0CI,wBAAUP,GAAV,EAAekF,SAAf,EAAuB;gBAC5BA,aAAW;aAAM,IAAN;KAApB;SACK,IAAI3E,IAAI,KAAK+H,QAAL,CAAcpI,MAAd,GAAuB,CAApC,EAAuCK,KAAK,CAA5C,EAA+CA,GAA/C,EAAoD;UAC5C8I,YAAY,KAAKf,QAAL,CAAc/H,CAAd,CAAlB;UACI,CAAC2E,UAAOmE,SAAP,CAAL,EAAwB;UACpBrJ,OAAOqJ,SAAX,EAAsB;eACbA,SAAP;;;WAGG,IAAP;GAnDU;gBAqDE,sBAAUrO,GAAV,EAAegF,GAAf,EAAoB;QAC5ByI,YAAJ;QACIZ,KAAA,CAAQ7M,GAAR,CAAJ,EAAkB;YACV7B,SAAN;KADF,MAEO;UACD,OAAO6B,IAAI8G,SAAX,KAAyB,UAA7B,EAAyC;cACjC9G,IAAI8G,SAAJ,EAAN;OADF,MAEO,IAAI,OAAO9G,IAAI+G,QAAX,KAAwB,UAA5B,EAAwC;cACvC/G,IAAI+G,QAAJ,EAAN;;;UAGE/B,QAAQ,MAAR,KAAmB6H,OAAA,CAAU7M,GAAV,KAAkB6M,QAAA,CAAW7M,GAAX,CAArC,CAAJ,EAA2D;cACnDA,IAAIkF,MAAV;OADF,MAEO;cACClF,IAAIgF,GAAJ,CAAN;;;QAGA6H,KAAA,CAAQY,GAAR,KAAgB,KAAKa,IAAL,CAAUC,gBAA9B,EAAgD;YACxC,IAAI1K,SAAJ,0BAAqCmB,GAArC,CAAN;;WAEKyI,GAAP;GAzEU;;;;;;;;;;qBAoFO,2BAAUlD,GAAV,EAAe;UAC1B1D,OAAO0D,GAAP,CAAN;QACMiE,MAAM,EAAZ;QACI9M,OAAO,EAAX;QACI+M,UAAJ;QACIlJ,IAAI,CAAR;WACOA,IAAIgF,IAAIrF,MAAf,EAAuB;cACbqF,IAAIhF,CAAJ,CAAR;aACO,GAAL;;;cAGQmJ,YAAYnE,IAAIhF,IAAI,CAAR,CAAlB;cACI,OAAOiF,IAAP,CAAYkE,SAAZ,CAAJ,EAA4B;;gBACtBnE,IAAIpD,OAAJ,CAAYuH,SAAZ,EAAuBnJ,IAAI,CAA3B,CAAJ;mBACOkJ,MAAM,CAAC,CAAd,kBAA+BC,SAA/B,UAA6CnE,GAA7C;mBACOA,IAAI5E,KAAJ,CAAUJ,IAAI,CAAd,EAAiBkJ,CAAjB,CAAP;;gBAEIA,IAAI,CAAR;WALF,MAMO;;gBACDE,kBAAkBpE,GAAlB,EAAuBhF,IAAI,CAA3B,CAAJ;mBACOkJ,MAAM,CAAC,CAAd,sBAAmClE,GAAnC;mBACOA,IAAI5E,KAAJ,CAAUJ,IAAI,CAAd,EAAiBkJ,CAAjB,CAAP;gBACI,CAACG,SAAA,CAAkBlN,IAAlB,CAAL,EAA8B;;qBACrB,KAAKmN,GAAL,CAASnN,IAAT,CAAP;;;gBAGE+M,IAAI,CAAR;;;aAGC,GAAL;;;;;;;kBAKUlE,IAAIhF,CAAJ,CAAR;;;;;;QAMF,CAACiJ,IAAItJ,MAAT,EAAiB;YACT,IAAIrB,SAAJ,oBAA+B0G,GAA/B,OAAN;;WAEKiE,GAAP;;aAES9J,IAAT,GAAiB;UACXhD,KAAKwD,MAAT,EAAiBsJ,IAAI9J,IAAJ,CAAShD,IAAT;aACV,EAAP;;;CAnIN;;AAwIA,SAASiN,iBAAT,CAA4BpE,GAA5B,EAAiCiC,KAAjC,EAAwC;MAClCX,QAAQ,CAAZ,CADsC;OAEjC,IAAItG,IAAIiH,KAAb,EAAoBjH,IAAIgF,IAAIrF,MAA5B,EAAoCK,GAApC,EAAyC;QACnCgF,IAAIhF,CAAJ,MAAW,GAAf,EAAoB;;;QAGhBgF,IAAIhF,CAAJ,MAAW,GAAf,EAAoB;;UAEdsG,UAAU,CAAd,EAAiB;eACRtG,CAAP;;;;SAIC,CAAC,CAAR;;;AAGF,AAAO,SAASuJ,OAAT,CAAkBtB,GAAlB,EAAuBc,IAAvB,EAA6B;MAC5BS,iBAAiB;qBACJ,IADI;sBAEH,KAFG;oBAGL,KAHK;YAIb,EAJa;UAKf;GALR;MAOMlB,QAAQ9P,OAAO0B,MAAP,CAAc4N,KAAd,CAAd;QACMiB,IAAN,GAAazB,MAAA,CAASkC,cAAT,EAAyBT,IAAzB,CAAb;QACMhB,QAAN,GAAiB,CAACE,OAAO,EAAR,CAAjB;SACOK,KAAP;;;ACvKK,SAASgB,KAAT,CAAcG,GAAd,EAAmB;SACjB,IAAIzM,OAAJ,CAAY,UAACL,OAAD,EAAUC,MAAV,EAAqB;QAChC8M,MAAM,IAAIC,cAAJ,EAAZ;QACIC,MAAJ,GAAa,YAAM;UACbF,IAAIG,MAAJ,IAAc,GAAd,IAAqBH,IAAIG,MAAJ,GAAa,GAAtC,EAA2C;gBACjCH,IAAII,YAAZ;OADF,MAEO;eACE,IAAIlM,KAAJ,CAAU8L,IAAIK,UAAd,CAAP;;KAJJ;QAOIC,OAAJ,GAAc,YAAM;aACX,IAAIpM,KAAJ,CAAU,gDAAV,CAAP;KADF;QAGIqM,IAAJ,CAAS,KAAT,EAAgBR,GAAhB;QACIS,IAAJ;GAbK,CAAP;;;ACCa,SAASC,cAAT,CAAyBC,MAAzB,EAAiCC,OAAjC,EAA0C;YAC7CpI,OAAO,EAAEqI,QAAQ,IAAV,EAAP,EAAyBD,OAAzB,CAAV;MACIE,QAAQ,KAAZ;;SAEOzO,OAAP,CAAe,UAACiK,KAAD,EAAQ/F,CAAR,EAAc;QACvBwK,eAAezE,KAAf,EAAsBwE,KAAtB,EAA6BF,OAA7B,CAAJ,EAA2C;eAChCD,OAAOpK,IAAI,CAAX,CAAT,EAAwBqK,QAAQC,MAAhC;;;QAGEvE,MAAMpL,IAAN,KAAe,KAAf,IAAwBoL,MAAM5J,IAAN,KAAe,KAA3C,EAAkDoO,QAAQ,IAAR;QAC9CxE,MAAMpL,IAAN,KAAe,KAAf,IAAwBoL,MAAM5J,IAAN,KAAe,QAA3C,EAAqDoO,QAAQ,KAAR;;QAEjDE,gBAAgB1E,KAAhB,EAAuBwE,KAAvB,EAA8BF,OAA9B,CAAJ,EAA4C;gBAChCD,OAAOpK,IAAI,CAAX,CAAV,EAAyBqK,QAAQC,MAAjC;;GATJ;;;AAcF,SAASE,cAAT,CAAyBzE,KAAzB,EAAgCwE,KAAhC,EAAuCF,OAAvC,EAAgD;MAC1CE,KAAJ,EAAW,OAAO,KAAP;MACPxE,MAAMpL,IAAN,KAAe,KAAnB,EAA0B,OAAOoL,MAAM2E,SAAN,IAAmBL,QAAQM,aAAlC;MACtB5E,MAAMpL,IAAN,KAAe,OAAnB,EAA4B,OAAOoL,MAAM2E,SAAN,IAAmBL,QAAQO,eAAlC;;;AAG9B,SAASH,eAAT,CAA0B1E,KAA1B,EAAiCwE,KAAjC,EAAwCF,OAAxC,EAAiD;MAC3CE,KAAJ,EAAW,OAAO,KAAP;MACPxE,MAAMpL,IAAN,KAAe,KAAnB,EAA0B,OAAOoL,MAAM8E,UAAN,IAAoBR,QAAQS,cAAnC;MACtB/E,MAAMpL,IAAN,KAAe,OAAnB,EAA4B,OAAOoL,MAAM8E,UAAN,IAAoBR,QAAQU,gBAAnC;;;AAG9B,SAASC,QAAT,CAAmBjF,KAAnB,EAA0BuE,MAA1B,EAAkC;MAC5B,CAACvE,KAAD,IAAUA,MAAMpL,IAAN,KAAe,MAA7B,EAAqC;;MAE/BsQ,QAAQX,SAAS,OAAT,GAAmB,YAAjC;QACMvN,KAAN,GAAcgJ,MAAMhJ,KAAN,CAAYmO,OAAZ,CAAoBD,KAApB,EAA2B,EAA3B,CAAd;;;AAGF,SAASE,SAAT,CAAoBpF,KAApB,EAA2BuE,MAA3B,EAAmC;MAC7B,CAACvE,KAAD,IAAUA,MAAMpL,IAAN,KAAe,MAA7B,EAAqC;;MAE/ByQ,SAASd,SAAS,OAAT,GAAmB,eAAlC;QACMvN,KAAN,GAAcgJ,MAAMhJ,KAAN,CAAYmO,OAAZ,CAAoBE,MAApB,EAA4B,EAA5B,CAAd;;;ACnCK,SAASC,KAAT,CAAgBrF,KAAhB,EAAuBE,IAAvB,EAA6BmE,OAA7B,EAAsC;SACpC/C,QAAA,CAAWtB,KAAX,CAAP,EAA0B,eAA1B;;MAEMsF,UAAU,4CAAhB;MACIC,aAAa,CAAjB;MACMC,aAAaC,WAAWzF,KAAX,CAAnB;MACI0F,eAAe,CAAnB;MACMtB,SAAS,EAAf;;OAEK,IAAI3E,KAAT,EAAiBA,QAAQ6F,QAAQhG,IAAR,CAAaU,KAAb,CAAzB,EAA+C0F,eAAeJ,QAAQK,SAAtE,EAAiF;QAC3ElG,MAAMmG,KAAN,GAAcF,YAAlB,EAAgC;aACvBvM,IAAP,CAAY0M,eAAeH,YAAf,EAA6BjG,MAAMmG,KAAnC,CAAZ;;WAEKzM,IAAP,CAAYsG,MAAM,CAAN,IACRqG,cAAcrG,MAAM,CAAN,CAAd,EAAwBA,MAAM,CAAN,EAASsG,IAAT,EAAxB,EAAyCtG,MAAMmG,KAA/C,CADQ,GAERI,gBAAgBvG,MAAM,CAAN,CAAhB,EAA0BA,MAAM,CAAN,EAASsG,IAAT,EAA1B,EAA2CtG,MAAMmG,KAAjD,CAFJ;;MAIE5F,MAAMrG,MAAN,GAAe+L,YAAnB,EAAiC;WACxBvM,IAAP,CAAY0M,eAAeH,YAAf,EAA6B1F,MAAMrG,MAAnC,CAAZ;;iBAEayK,MAAf,EAAuBC,OAAvB;SACOD,MAAP;;WAES0B,aAAT,CAAwBG,GAAxB,EAA6BlP,QAA7B,EAAoCmP,GAApC,EAAyC;QACjCzG,QAAQ1I,SAAM0I,KAAN,CAAY4D,OAAZ,CAAd;QACMtD,QAAQ;YACN,KADM;cAEJwF,UAFI;YAGNC,WAAWlC,GAAX,CAAe4C,GAAf,CAHM;iBAIDD,IAAI7L,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAJnB;kBAKA6L,IAAI7L,KAAJ,CAAU,CAAC,CAAX,MAAkB,KALlB;cAAA;qBAAA;kBAAA;;KAAd;QAWI,CAACqF,KAAL,EAAY;YACJ,IAAIc,iBAAJ,uBAA4CR,KAA5C,CAAN;;UAEI5J,IAAN,GAAasJ,MAAM,CAAN,CAAb;UACM0G,IAAN,GAAa1G,MAAM,CAAN,CAAb;WACOM,KAAP;;;WAGOiG,eAAT,CAA0BC,GAA1B,EAA+BlP,QAA/B,EAAsCmP,GAAtC,EAA2C;WAClC;YACC,OADD;YAECV,WAAWlC,GAAX,CAAe4C,GAAf,CAFD;iBAGMD,IAAI7L,KAAJ,CAAU,CAAV,EAAa,CAAb,MAAoB,KAH1B;kBAIO6L,IAAI7L,KAAJ,CAAU,CAAC,CAAX,MAAkB,KAJzB;cAAA;qBAAA;kBAAA;;KAAP;;;WAYOyL,cAAT,CAAyB5E,KAAzB,EAAgCG,GAAhC,EAAqC;QAC7BgF,eAAepG,MAAM5F,KAAN,CAAY6G,KAAZ,EAAmBG,GAAnB,CAArB;iBACaE,IAAA,CAAQ8E,YAAD,CAAepF,KAAf,CAAqB,IAArB,CAAP,EAAmCrH,MAAhD;;WAEO;YACC,MADD;WAEAyM,YAFA;aAGEA;KAHT;;;;AAQJ,SAASX,UAAT,CAAqBY,IAArB,EAA2B;MACrBC,mBAAmB,CAAvB;MACIC,iBAAiB,CAAC,CAAtB;;SAEO;SACA,aAAUL,GAAV,EAAe;UACZnF,QAAQsF,KAAKjM,KAAL,CAAWmM,iBAAiB,CAA5B,EAA+BL,GAA/B,EAAoClF,KAApC,CAA0C,IAA1C,CAAd;0BACoBD,MAAMpH,MAAN,GAAe,CAAnC;uBACiBuM,GAAjB;aACOI,mBAAmB,CAA1B;;GALJ;;;AC/EK,SAASE,aAAT,CAAwBC,QAAxB,EAAkC;SAChC,IAAIzP,OAAJ,CAAY,UAAUL,OAAV,EAAmBC,MAAnB,EAA2B;OACzC8P,QAAH,CAAYD,QAAZ,EAAsB,MAAtB,EAA8B,UAAU5R,GAAV,EAAe8R,OAAf,EAAwB;YAC9C/P,OAAO/B,GAAP,CAAN,GAAoB8B,QAAQgQ,OAAR,CAApB;KADF;GADK,CAAP;;AAOF,AAAO,SAASC,aAAT,CAAwBzE,OAAxB,EAA8B;SAC5B,IAAInL,OAAJ,CAAY,UAAUL,OAAV,EAAmBC,MAAnB,EAA2B;OACzCiQ,IAAH,CAAQ1E,OAAR,EAAc,UAACtN,GAAD,EAAMgS,IAAN;aAAehS,MAAM+B,OAAO/B,GAAP,CAAN,GAAoB8B,QAAQkQ,IAAR,CAAnC;KAAd;GADK,CAAP;;;ACTF,IAAMC,cAAc,4DAApB;AACA,IAAMC,QAAQ,qDAAd;;;AAGA,AAAO,SAASC,OAAT,CAAkB7E,OAAlB,EAAwB;SACtB2E,YAAYxH,IAAZ,CAAiB6C,OAAjB,EAAuB/H,KAAvB,CAA6B,CAA7B,EAAgC,CAAhC,CAAP;;;;AAIF,AAAO,SAAS6M,KAAT,CAAgB9E,OAAhB,EAAsB;SACpB4E,MAAM9H,IAAN,CAAWkD,OAAX,CAAP;;;AAGF,AAAO,SAASxL,OAAT,CAAkBuQ,IAAlB,EAAwB/E,OAAxB,EAA8B;MAC/BtG,QAAQqL,IAAR,CAAJ,EAAmB;WACVA,KAAK,CAAL,CAAP;;MAEEA,QAAQ5K,KAAK4K,IAAL,MAAe,GAA3B,EAAgC;YACtB,GAAR;;SAEKC,WAAWD,IAAX,EAAiB/E,OAAjB,CAAP;;;AAGF,SAASgF,UAAT,CAAqBD,IAArB,EAA2B/E,OAA3B,EAAiC;MACzBiF,OAAOC,SAASC,aAAT,CAAuB,MAAvB,CAAb;OACKC,IAAL,GAAYnL,UAAU,CAAV,CAAZ;;MAEMoL,OAAOH,SAASI,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAb;OACKC,YAAL,CAAkBN,IAAlB,EAAwBI,KAAKG,UAA7B;;MAEMjL,IAAI2K,SAASC,aAAT,CAAuB,GAAvB,CAAV;IACEC,IAAF,GAASpF,OAAT;MACMyF,WAAWlL,EAAE6K,IAAnB;OACKA,IAAL,GAAYK,QAAZ;;OAEKC,WAAL,CAAiBT,IAAjB;;SAEOQ,QAAP;;;ACvCa,oBAAUE,QAAV,EAAoB;SAC1B;UACC,WAACnL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAMoL,CAAhB;KADD;UAEC,WAACpL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAMoL,CAAhB;KAFD;SAGA,WAACpL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAM,IAAN,IAAcoL,MAAM,IAApB,IAA4BpL,IAAIoL,CAA1C;KAHA;SAIA,WAACpL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAM,IAAN,IAAcoL,MAAM,IAApB,IAA4BpL,IAAIoL,CAA1C;KAJA;UAKC,WAACpL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAM,IAAN,IAAcoL,MAAM,IAApB,IAA4BpL,KAAKoL,CAA3C;KALD;UAMC,WAACpL,CAAD,EAAIoL,CAAJ;aAAUpL,MAAM,IAAN,IAAcoL,MAAM,IAApB,IAA4BpL,KAAKoL,CAA3C;KAND;gBAOO,kBAACpL,CAAD,EAAIoL,CAAJ,EAAU;UAChB,CAACpL,CAAL,EAAQ,OAAO,KAAP;UACJ,OAAOA,EAAEf,OAAT,KAAqB,UAAzB,EAAqC,OAAO,KAAP;aAC9Be,EAAEf,OAAF,CAAUmM,CAAV,IAAe,CAAC,CAAvB;KAVG;WAYE,aAACpL,CAAD,EAAIoL,CAAJ;aAAUD,SAASnL,CAAT,KAAemL,SAASC,CAAT,CAAzB;KAZF;UAaC,YAACpL,CAAD,EAAIoL,CAAJ;aAAUD,SAASnL,CAAT,KAAemL,SAASC,CAAT,CAAzB;;GAbR;;;ACGF,IAAMjJ,cAAYkJ,UAAUF,QAAV,CAAlB;;AAEA,AAAO,SAASG,OAAT,CAAkBC,GAAlB,EAAuB5F,KAAvB,EAA8B;SAC5BA,KAAP,EAAc,oCAAd;MACM6F,cAAc9E,SAApB;MACI5D,cAAJ;OACK,IAAIzF,IAAI,CAAb,EAAgBA,IAAImO,YAAYxO,MAAhC,EAAwCK,GAAxC,EAA6C;QACrCoO,aAAaD,YAAYnO,CAAZ,CAAnB;QACMqO,QAAQ,IAAIlL,MAAJ,QAAgBkG,aAAA,CAAsBjG,MAAtC,UAAiDgL,WAAWhL,MAA5D,UAAuEiG,aAAA,CAAsBjG,MAA7F,QAAd;QACKqC,QAAQyI,IAAIzI,KAAJ,CAAU4I,KAAV,CAAb,EAAgC;UACxB1L,IAAIsL,QAAQxI,MAAM,CAAN,CAAR,EAAkB6C,KAAlB,CAAV;UACMgG,KAAKxJ,YAAUW,MAAM,CAAN,EAASsG,IAAT,EAAV,CAAX;UACMgC,IAAIE,QAAQxI,MAAM,CAAN,CAAR,EAAkB6C,KAAlB,CAAV;aACOgG,GAAG3L,CAAH,EAAMoL,CAAN,CAAP;;;;MAICtI,QAAQyI,IAAIzI,KAAJ,CAAU4D,SAAV,CAAb,EAA4C;QACpCkF,MAAMC,UAAU/I,MAAM,CAAN,CAAV,EAAoB6C,KAApB,CAAZ;QACMmG,OAAOD,UAAU/I,MAAM,CAAN,CAAV,EAAoB6C,KAApB,CAAb;QACM1F,QAAQ,EAAd;SACK,IAAIsG,IAAIqF,GAAb,EAAkBrF,KAAKuF,IAAvB,EAA6BvF,GAA7B,EAAkC;YAC1B/J,IAAN,CAAW+J,CAAX;;WAEKtG,KAAP;;;SAGK4L,UAAUN,GAAV,EAAe5F,KAAf,CAAP;;;AAGF,AAAO,SAASkG,SAAT,CAAoBxJ,GAApB,EAAyBsD,KAAzB,EAAgC;QAC/BtD,OAAOA,IAAI+G,IAAJ,EAAb;MACI,CAAC/G,GAAL,EAAU,OAAOpM,SAAP;;MAENyQ,SAAA,CAAkBrE,GAAlB,CAAJ,EAA4B;WACnBqE,YAAA,CAAqBrE,GAArB,CAAP;;MAEEqE,UAAA,CAAmBrE,GAAnB,CAAJ,EAA6B;WACpBsD,MAAMgB,GAAN,CAAUtE,GAAV,CAAP;;QAEI,IAAI1G,SAAJ,oBAA8B0G,GAA9B,iBAAN;;;AAGF,AAAO,SAAS8I,QAAT,CAAmB5F,GAAnB,EAAwB;SACtB,CAACwG,QAAQxG,GAAR,CAAR;;;AAGF,AAAO,SAASwG,OAAT,CAAkBxG,GAAlB,EAAuB;SACrBA,QAAQ,KAAR,IAAiBtP,cAAcsP,GAA/B,IAAsCA,QAAQ,IAArD;;;AC/CF,IAAMyG,SAAS;;sEACI,kBAAgBC,SAAhB,EAA2BtG,KAA3B;;2EAiBf,iBAA+BuG,QAA/B;;;;;;wBACMA,SAASlU,IAAT,KAAkB,KADxB;;;;;;yBAE0B,KAAKmU,SAAL,CAAeD,QAAf,EAAyBvG,KAAzB,CAF1B;;;yBAAA;mDAGWyG,YAAYnW,SAAZ,GAAwB,EAAxB,GAA6BmW,OAHxC;;;wBAKMF,SAASlU,IAAT,KAAkB,OALxB;;;;;mDAMW,KAAKqU,WAAL,CAAiBH,QAAjB,EAA2BvG,KAA3B,CANX;;;mDAQSuG,SAAS9R,KARlB;;;;;;;;SAjBe;;wBAiBAkS,cAjBA;;;;;;;;;;;qBACR3G,KAAP,EAAc,0CAAd;;kBADe,GAGJ,EAHI;;;;;0BAIGsG,SAJH;;;;;;;;iBAAA;;;qBAMGK,eAAerU,IAAf,CAAoB,IAApB,EAA0BgM,GAA1B,CANH;;;kBAAA;;;;;;;;oBAQP,wBAAaC,gBARN;;;;;2BASPqI,YAAF,GAAiB7C,IAAjB;;;;oBAGI,IAAI1F,WAAJ,eAAmBC,GAAnB,CAZK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAeRyF,IAfQ;;;;;;;;KAAjB;;;;;;;KADa;;;uEA8BF,kBAAgBwC,QAAhB,EAA0BvG,KAA1B;;;;;oBACLuG,SAAS1S,IAAT,KAAkB,UADb;;;;;oBAED,IAAI0K,gBAAJ,CAAqB,UAArB,CAFC;;;oBAILgI,SAAS1S,IAAT,KAAkB,OAJb;;;;;oBAKD,IAAI0K,gBAAJ,CAAqB,OAArB,CALC;;;gDAOFgI,SAASF,MAAT,CAAgBrG,KAAhB,CAPE;;;;;;;;KAAX;;;;;;;KA9Ba;;;uEAwCA,kBAAgBuG,QAAhB,EAA0BvG,KAA1B;;;;;;qBAAA,GACK,KAAKkG,SAAL,CAAeK,QAAf,EAAyBvG,KAAzB,CADL;gDAEJyG,YAAYnW,SAAZ,GAAwB,EAAxB,GAA6BwI,UAAU2N,OAAV,CAFzB;;;;;;;;KAAb;;;;;;;KAxCa;;aA6CF,sBAAUF,QAAV,EAAoBvG,KAApB,EAA2B;WAC7BA,KAAP,EAAc,sCAAd;WACOuG,SAASM,OAAT,CAAiBnH,MAAjB,CACL,UAAC9H,IAAD,EAAOyE,MAAP;aAAkBA,OAAOgK,MAAP,CAAczO,IAAd,EAAoBoI,KAApB,CAAlB;KADK,EAEL2F,QAAQY,SAASO,OAAjB,EAA0B9G,KAA1B,CAFK,CAAP;;CA/CJ;;AAqDA,AAAe,mBAAY;MACnB+G,WAAW7W,OAAO0B,MAAP,CAAcyU,MAAd,CAAjB;SACOU,QAAP;;;ACxDF,SAAStL,MAAT,CAAeuL,MAAf,EAAuBhH,KAAvB,EAA8B;MACtB7N,MAAM,EAAZ;MACIgL,cAAJ;cACYkG,SAAZ,GAAwB,CAAxB;SACQlG,QAAQzB,YAAYsB,IAAZ,CAAiBgK,MAAjB,CAAhB,EAA2C;QACnCtN,IAAIyD,MAAM,CAAN,CAAV;QACMgD,IAAIhD,MAAM,CAAN,CAAV;QACIzD,CAAJ,IAASwM,UAAU/F,CAAV,EAAaH,KAAb,CAAT;;SAEK7N,GAAP;;;AAGF,AAAe,gBAAY;MACrB8U,WAAW,EAAf;;MAEMC,eAAe;;wEACX,iBAAgBlH,KAAhB;;;;;;mBAAA,GACMvE,OAAK,KAAKgC,KAAL,CAAWoG,IAAhB,EAAsB7D,KAAtB,CADN;oBAAA,GAEO,KAAKmH,OAFZ;;sBAGF,OAAOC,KAAKf,MAAZ,KAAuB,UAHrB;;;;;iDAIG,EAJH;;;iDAMCe,KAAKf,MAAL,CAAYrG,KAAZ,EAAmB7N,GAAnB,CAND;;;;;;;;OAAR;;;;;;;OADmB;WASZ,eAAUsL,KAAV,EAAiBqE,MAAjB,EAAyB;WACzBzP,IAAL,GAAY,KAAZ;WACKoL,KAAL,GAAaA,KAAb;WACK5J,IAAL,GAAY4J,MAAM5J,IAAlB;;UAEMsT,UAAUF,SAAS,KAAKpT,IAAd,CAAhB;aACOsT,OAAP,WAAuB,KAAKtT,IAA5B;WACKsT,OAAL,GAAejX,OAAO0B,MAAP,CAAcuV,OAAd,CAAf;UACI,KAAKA,OAAL,CAAapE,KAAjB,EAAwB;aACjBoE,OAAL,CAAapE,KAAb,CAAmBtF,KAAnB,EAA0BqE,MAA1B;;;GAlBN;;WAuBSuF,QAAT,CAAmBxT,IAAnB,EAAyByT,GAAzB,EAA8B;aACnBzT,IAAT,IAAiByT,GAAjB;;;WAGOC,SAAT,CAAoB9J,KAApB,EAA2BqE,MAA3B,EAAmC;QAC3BiF,WAAW7W,OAAO0B,MAAP,CAAcsV,YAAd,CAAjB;aACSnE,KAAT,CAAetF,KAAf,EAAsBqE,MAAtB;WACOiF,QAAP;;;WAGOS,KAAT,GAAkB;eACL,EAAX;;;SAGK;wBAAA;sBAAA;;GAAP;;;ACnDF,IAAMC,UAAU,IAAI5M,MAAJ,MAAckG,KAAA,CAAcjG,MAA5B,EAAsC,GAAtC,CAAhB;;AAEA,AAAe,iBAAUiH,OAAV,EAAmB;YACtBpI,OAAO,EAAP,EAAWoI,OAAX,CAAV;MACI8E,UAAU,EAAd;;MAEMa,kBAAkB;YACd,gBAAUC,MAAV,EAAkB3H,KAAlB,EAAyB;UACzB6D,OAAO,KAAKA,IAAL,CAAU5E,GAAV,CAAc;eAAOiH,UAAU9T,GAAV,EAAe4N,KAAf,CAAP;OAAd,CAAb;WACKK,OAAL,CAAasH,MAAb;aACO,KAAKtL,MAAL,CAAYuL,KAAZ,CAAkB,IAAlB,EAAwB/D,IAAxB,CAAP;KAJoB;WAMf,eAAUnH,GAAV,EAAe;UAChBS,QAAQ4D,UAAA,CAAmB/D,IAAnB,CAAwBN,GAAxB,CAAZ;aACOS,KAAP,EAAc,qBAAqBT,GAAnC;;UAEM7I,OAAOsJ,MAAM,CAAN,CAAb;UACM0K,UAAU1K,MAAM,CAAN,KAAY,EAA5B;UACMd,YAASwK,QAAQhT,IAAR,CAAf;UACI,OAAOwI,SAAP,KAAkB,UAAtB,EAAkC;YAC5B0F,QAAQ+F,cAAZ,EAA4B;gBACpB,IAAI9R,SAAJ,wBAAmCnC,IAAnC,CAAN;;aAEGA,IAAL,GAAYA,IAAZ;aACKwI,MAAL,GAAc;iBAAK0L,CAAL;SAAd;aACKlE,IAAL,GAAY,EAAZ;eACO,IAAP;;;UAGIA,OAAO,EAAb;aACQ1G,QAAQsK,QAAQzK,IAAR,CAAa6K,QAAQpE,IAAR,EAAb,CAAhB,EAA+C;YACvCtD,IAAIhD,MAAM,CAAN,CAAV;YACM6K,KAAK,IAAInN,MAAJ,CAAcsF,CAAd,YAAwB,GAAxB,CAAX;YACM8H,WAAWD,GAAGhL,IAAH,CAAQG,MAAMO,KAAd,CAAjB;YACMwK,oBAAoBD,YAAYA,SAAS3E,KAAT,KAAmBnG,MAAMmG,KAA/D;4BACoBO,KAAKhN,IAAL,QAAcsJ,CAAd,QAApB,GAA0C0D,KAAKhN,IAAL,CAAUsJ,CAAV,CAA1C;;;WAGGtM,IAAL,GAAYA,IAAZ;WACKwI,MAAL,GAAcA,SAAd;WACKwH,IAAL,GAAYA,IAAZ;;aAEO,IAAP;;GApCJ;;WAwCS0D,SAAT,CAAoB7K,GAApB,EAAyB;QACjBqK,WAAW7W,OAAO0B,MAAP,CAAc8V,eAAd,CAAjB;WACOX,SAAShE,KAAT,CAAerG,GAAf,CAAP;;;WAGO2K,QAAT,CAAmBxT,IAAnB,EAAyBwI,SAAzB,EAAiC;YACvBxI,IAAR,IAAgBwI,SAAhB;;;WAGOmL,KAAT,GAAkB;cACN,EAAV;;;SAGK;wBAAA,EACMH,kBADN,EACgBG;GADvB;;;AC5Da,iBAAUW,GAAV,EAAeC,MAAf,EAAuB;MAC9BC,SAAS;UACP,cAAUvG,MAAV,EAAkB;WACjBA,MAAL,GAAcA,MAAd;WACKwG,QAAL,GAAgB,EAAhB;aACO,IAAP;KAJW;QAMT,YAAUzU,IAAV,EAAgB0U,EAAhB,EAAoB;WACjBD,QAAL,CAAczU,IAAd,IAAsB0U,EAAtB;aACO,IAAP;KARW;aAUJ,iBAAUC,KAAV,EAAiBpW,GAAjB,EAAsB;UACvBqW,IAAI,KAAKH,QAAL,CAAcE,KAAd,CAAV;UACI,OAAOC,CAAP,KAAa,UAAjB,EAA6B;UACzBrW,GAAF;eACO,IAAP;;KAdS;WAiBN,iBAAY;WACZsW,OAAL,CAAa,OAAb;UACIjL,cAAJ;aACO,CAAC,KAAKkL,aAAN,KAAwBlL,QAAQ,KAAKqE,MAAL,CAAY8G,KAAZ,EAAhC,CAAP,EAA6D;YACvD,KAAKF,OAAL,CAAa,OAAb,EAAsBjL,KAAtB,CAAJ,EAAkC;YAC9BA,MAAMpL,IAAN,KAAe,KAAf,IACA,KAAKqW,OAAL,UAAoBjL,MAAM5J,IAA1B,EAAkC4J,KAAlC,CADJ,EAC8C;;;YAGxC8I,WAAWsC,WAAWpL,KAAX,EAAkB,KAAKqE,MAAvB,CAAjB;aACK4G,OAAL,CAAa,UAAb,EAAyBnC,QAAzB;;UAEE,CAAC,KAAKoC,aAAV,EAAyB,KAAKD,OAAL,CAAa,KAAb;aAClB,IAAP;KA9BW;UAgCP,gBAAY;WACXC,aAAL,GAAqB,IAArB;aACO,IAAP;;GAlCJ;;WAsCS5F,KAAT,CAAgBjB,MAAhB,EAAwB;QAClBrE,cAAJ;QACM6I,YAAY,EAAlB;WACQ7I,QAAQqE,OAAO8G,KAAP,EAAhB,EAAiC;gBACrB/R,IAAV,CAAegS,WAAWpL,KAAX,EAAkBqE,MAAlB,CAAf;;WAEKwE,SAAP;;;WAGOuC,UAAT,CAAqBpL,KAArB,EAA4BqE,MAA5B,EAAoC;QAC9B;UACExD,MAAM,IAAV;UACIb,MAAMpL,IAAN,KAAe,KAAnB,EAA0B;cAClByW,SAASrL,KAAT,EAAgBqE,MAAhB,CAAN;OADF,MAEO,IAAIrE,MAAMpL,IAAN,KAAe,OAAnB,EAA4B;cAC3B0W,WAAWtL,MAAMhJ,KAAjB,CAAN;OADK,MAEA;;cACCgJ,KAAN;;UAEEA,KAAJ,GAAYA,KAAZ;aACOa,GAAP;KAVF,CAWE,OAAOH,CAAP,EAAU;YACJ,IAAID,UAAJ,CAAeC,CAAf,EAAkBV,KAAlB,CAAN;;;;WAIKqL,QAAT,CAAmBrL,KAAnB,EAA0BqE,MAA1B,EAAkC;QAC5BrE,MAAM5J,IAAN,KAAe,UAAf,IAA6B4J,MAAM5J,IAAN,KAAe,OAAhD,EAAyD,OAAO4J,KAAP;WAClD0K,IAAIZ,SAAJ,CAAc9J,KAAd,EAAqBqE,MAArB,CAAP;;;WAGOiH,UAAT,CAAqBrM,GAArB,EAA0B;QACpBS,QAAQ4D,UAAA,CAAmBrE,GAAnB,CAAZ;WACOS,KAAP,6BAAuCT,GAAvC;;QAEMoK,UAAU3J,MAAM,CAAN,CAAhB;UACMT,IAAIsM,MAAJ,CAAW7L,MAAMmG,KAAN,GAAcnG,MAAM,CAAN,EAAS9F,MAAlC,CAAN;;QAEMwP,UAAU,EAAhB;WACQ1J,QAAQ4D,MAAA,CAAe/D,IAAf,CAAoBN,GAApB,CAAhB,EAA2C;cACjC7F,IAAR,CAAa,CAACsG,MAAM,CAAN,EAASsG,IAAT,EAAD,CAAb;;;WAGK;YACC,OADD;eAEIqD,OAFJ;eAGID,QAAQ5H,GAAR,CAAY;eAAOmJ,OAAOb,SAAP,CAAiB7K,GAAjB,CAAP;OAAZ;KAHX;;;WAOOuM,WAAT,CAAsBnH,MAAtB,EAA8B;QACtBoH,IAAIhZ,OAAO0B,MAAP,CAAcyW,MAAd,CAAV;WACOa,EAAEC,IAAF,CAAOrH,MAAP,CAAP;;;SAGK;gBAAA;sBAAA;4BAAA;;GAAP;;;AClGF;;;;;;AAMA,AAAO,SAASsH,SAAT,CAAoB7R,QAApB,EAA8BkC,QAA9B,EAAwC;MACzC4P,MAAM3U,QAAQJ,MAAR,CAAe,IAAIgB,KAAJ,CAAU,MAAV,CAAf,CAAV;WACS9B,OAAT,CAAiB,UAAU8V,IAAV,EAAgBC,GAAhB,EAAqB;UAC9BF,IAAIG,KAAJ,CAAU;aAAK/P,SAAS6P,IAAT,EAAeC,GAAf,EAAoBhS,QAApB,CAAL;KAAV,CAAN;GADF;SAGO8R,GAAP;;;;;;;;;AASF,AAAO,SAASI,SAAT,CAAoBlS,QAApB,EAA8BkC,QAA9B,EAAwC;MACzC4P,MAAM3U,QAAQL,OAAR,CAAgB,MAAhB,CAAV;MACMG,SAAS,EAAf;WACShB,OAAT,CAAiB,UAAU8V,IAAV,EAAgBC,GAAhB,EAAqB;UAC9BF,IACH1U,IADG,CACE;aAAM8E,SAAS6P,IAAT,EAAeC,GAAf,EAAoBhS,QAApB,CAAN;KADF,EAEH5C,IAFG,CAEE;aAAKH,OAAOqC,IAAP,CAAYkR,CAAZ,CAAL;KAFF,CAAN;GADF;SAKOsB,IAAI1U,IAAJ,CAAS;WAAMH,MAAN;GAAT,CAAP;;;ACxBa,cAAUkV,MAAV,EAAkBC,MAAlB,EAA0B;;sEAiCvC,kBAAuB3J,KAAvB,EAA8BvE,IAA9B;;;;;;;;wBAAA,GACmBkO,OAAOhE,OAAP,CAAe,KAAKiE,UAApB,EAAgC5J,KAAhC,CADnB;;;kBAGM,CAACnG,MAAMN,OAAN,CAAcqQ,UAAd,CAAL,EAAgC;oBAC1B/Q,SAAS+Q,UAAT,KAAwBA,WAAWvS,MAAX,GAAoB,CAAhD,EAAmD;+BACpC,CAACuS,UAAD,CAAb;iBADF,MAEO,IAAIvQ,SAASuQ,UAAT,CAAJ,EAA0B;+BAClB1Z,OAAO+G,IAAP,CAAY2S,UAAZ,EAAwB3K,GAAxB,CAA4B,UAAC9H,GAAD;2BAAS,CAACA,GAAD,EAAMyS,WAAWzS,GAAX,CAAN,CAAT;mBAA5B,CAAb;;;;oBAGA,CAAC0C,MAAMN,OAAN,CAAcqQ,UAAd,CAAD,IAA8B,CAACA,WAAWvS,MAVhD;;;;;gDAWWqS,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD/J,KAApD,CAXX;;;oBAAA,GAciBvE,KAAKuO,MAAL,IAAe,CAdhC;mBAAA,GAeiBvO,KAAKwO,KAAL,KAAe3Z,SAAhB,GAA6BsZ,WAAWvS,MAAxC,GAAiDoE,KAAKwO,KAftE;;;2BAiBeL,WAAW9R,KAAX,CAAiBkS,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;kBACI,KAAKC,QAAT,EAAmBN,WAAWxS,OAAX;;sBAlBrB,GAoBmBwS,WAAW3K,GAAX,CAAe,UAACqK,IAAD,EAAO5R,CAAP,EAAa;oBACrCiI,MAAM,EAAZ;oBACI,OAAKrE,QAAT,IAAqBgO,IAArB;oBACIa,OAAJ,GAAc;yBACLzS,MAAM,CADD;yBAELA,IAAI,CAFC;0BAGJA,CAHI;wBAINA,MAAMkS,WAAWvS,MAAX,GAAoB,CAJpB;0BAKJuS,WAAWvS,MALP;0BAMJuS,WAAWvS,MAAX,GAAoBK,CANhB;2BAOHkS,WAAWvS,MAAX,GAAoBK,CAApB,GAAwB;iBAPnC;uBASOiI,GAAP;eAZe,CApBnB;kBAAA,GAmCa,EAnCb;sBAAA,GAoCiB,KApCjB;;qBAqCQ8J,UAAUhK,QAAV;mFAAoB,iBAAM5N,OAAN;;;;;+BACpBuY,QADoB;;;;;;;;;gCAGlBvT,IAAN,CAAWhF,OAAX;;;iCAEgB6X,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,OAAKxD,SAArC,EAAgDtG,KAAhD,CALQ;;;8BAAA;;;;;;;;gCAOlB,uBAAazB,gBAPK;;;;;kCAQZ,YAAEqI,YAAV;8BACI,YAAE9I,OAAF,KAAc,OAAlB,EAA2B;uCACd,IAAX;;;;;;;;;gCAIAxG,GAAN,CAAUzF,OAAV;;;;;;;;iBAdI;;;;;kBArCR;;;gDAqDSkS,IArDT;;;;;;;;KAjCuC;;oBAiCxBsC,MAjCwB;;;;;MACjC9H,mBAAmBoL,OAAOU,KAAP,CAAa9L,gBAAtC;MACMwC,UAAU4I,OAAO5I,OAAvB;MACMiH,KAAK,IAAInN,MAAJ,CAAW,OAAKkG,QAAQ5F,UAAR,CAAmBL,MAAxB,0BACdiG,QAAQtM,KAAR,CAAcqG,MADA,uBAERiG,QAAQtF,IAAR,CAAaX,MAFL,gDAIRiG,QAAQtF,IAAR,CAAaX,MAJL,SAAX,CAAX;;SAMOwP,WAAP,CAAmB,KAAnB,EAA0B,EAACvH,YAAD,EAAQsD,cAAR,EAA1B;;WAEStD,KAAT,CAAgBwH,QAAhB,EAA0BC,YAA1B,EAAwC;;;QAChCrN,QAAQ6K,GAAGhL,IAAH,CAAQuN,SAAS1G,IAAjB,CAAd;WACO1G,KAAP,oBAA8BoN,SAAS5G,GAAvC;SACKrI,QAAL,GAAgB6B,MAAM,CAAN,CAAhB;SACKyM,UAAL,GAAkBzM,MAAM,CAAN,CAAlB;SACK+M,QAAL,GAAgB,CAAC,CAAC/M,MAAM,CAAN,CAAlB;;SAEKmJ,SAAL,GAAiB,EAAjB;SACKyD,aAAL,GAAqB,EAArB;;QAEIU,UAAJ;QACMpC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,OADS,EACA;aAAOF,IAAI,MAAKnE,SAAhB;KADA,EAEZqE,EAFY,CAET,UAFS,EAEG;aAAOF,IAAI,MAAKV,aAAhB;KAFH,EAGZY,EAHY,CAGT,YAHS,EAGK;aAAMtC,OAAO7N,IAAP,EAAN;KAHL,EAIZmQ,EAJY,CAIT,UAJS,EAIG;aAAOF,EAAE5T,IAAF,CAAOyH,GAAP,CAAP;KAJH,EAKZqM,EALY,CAKT,KALS,EAKF,YAAM;YACT,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;KANW,CAAf;;WASOpJ,KAAP;;;;ACjCW,iBAAUmP,MAAV,EAAkBC,MAAlB,EAA0B;MACjCiB,cAAcjB,OAAO5I,OAAP,CAAe5F,UAAnC;MACM6M,KAAK,IAAInN,MAAJ,OAAe+P,YAAY9P,MAA3B,gBAAX;MACO+P,WAHgC,GAGjBlB,OAAOU,KAHU,CAGhCQ,WAHgC;;;SAKhCP,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAU7M,KAAV,EAAiB;UAChBN,QAAQM,MAAMoG,IAAN,CAAW1G,KAAX,CAAiB6K,EAAjB,CAAd;aACO7K,KAAP,qBAA+BM,MAAMkG,GAArC;WACKxM,GAAL,GAAWgG,MAAM,CAAN,CAAX;WACK1I,KAAL,GAAa0I,MAAM,CAAN,CAAb;KALyB;YAOnB,gBAAU6C,KAAV,EAAiB;UACjBL,MAAMzP,OAAO0B,MAAP,CAAciZ,WAAd,CAAZ;UACI,KAAK1T,GAAT,IAAgBuS,OAAOxD,SAAP,CAAiB,KAAKzR,KAAtB,EAA6BuL,KAA7B,CAAhB;YACMnJ,IAAN,CAAW8I,GAAX;aACOjL,QAAQL,OAAR,CAAgB,EAAhB,CAAP;;GAXJ;;;ACLa,kBAAUqV,MAAV,EAAkBC,MAAlB,EAA0B;MACjCiB,cAAcjB,OAAO5I,OAAP,CAAe5F,UAAnC;MACM6M,KAAK,IAAInN,MAAJ,OAAe+P,YAAY9P,MAA3B,OAAX;MACOgQ,YAHgC,GAGhBnB,OAAOU,KAHS,CAGhCS,YAHgC;;;SAKhCR,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;UACjCrN,QAAQoN,SAAS1G,IAAT,CAAc1G,KAAd,CAAoB6K,EAApB,CAAd;aACO7K,KAAP,EAAiBoN,SAAS1G,IAA1B;;WAEKvI,QAAL,GAAgB6B,MAAM,CAAN,CAAhB;WACKmJ,SAAL,GAAiB,EAAjB;;UAEM+B,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;aACOG,EAAP,CAAU,gBAAV,EAA4B;eAAStC,OAAO7N,IAAP,EAAT;OAA5B,EACGmQ,EADH,CACM,UADN,EACkB;eAAO,MAAKrE,SAAL,CAAezP,IAAf,CAAoByH,GAApB,CAAP;OADlB,EAEGqM,EAFH,CAEM,KAFN,EAEa,aAAK;cACR,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OAHJ;aAKOpJ,KAAP;KAd0B;;wEAgBpB,iBAAgByF,KAAhB,EAAuBvE,IAAvB;;;;;;;uBACaiO,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKxD,SAArC,EAAgDtG,KAAhD,CADb;;;oBAAA;mBAAA,GAEM9P,OAAO0B,MAAP,CAAckZ,YAAd,CAFN;;oBAGF,KAAKxP,QAAT,IAAqByI,IAArB;sBACMlN,IAAN,CAAW8I,GAAX;;;;;;;;OAJF;;;;;;;;GAhBF;;;ACPa,eAAU+J,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,MAAnB,EAA2B;;WAElB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClCO,IAAL,GAAYR,SAAS1G,IAArB;WACKmH,KAAL,GAAa,EAAb;WACKjB,aAAL,GAAqB,EAArB;;UAEIU,IAAI,EAAR;UACMpC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,UADS,EACG,iBAAS;cAClBK,KAAL,CAAWnU,IAAX,CAAgB;eACT4G,MAAMoG,IADG;qBAEH4G,IAAI;SAFjB;OAFW,EAOZE,EAPY,CAOT,UAPS,EAOG;eAAOF,IAAI,MAAKV,aAAhB;OAPH,EAQZY,EARY,CAQT,aARS,EAQM;eAAStC,OAAO7N,IAAP,EAAT;OARN,EASZmQ,EATY,CAST,UATS,EASG;eAAOF,EAAE5T,IAAF,CAAOyH,GAAP,CAAP;OATH,EAUZqM,EAVY,CAUT,KAVS,EAUF,aAAK;cACR,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OAXW,CAAf;;aAcOpJ,KAAP;KAtBuB;;YAyBjB,gBAAUyF,KAAV,EAAiBvE,IAAjB,EAAuB;WACxB,IAAI/D,IAAI,CAAb,EAAgBA,IAAI,KAAKsT,KAAL,CAAW3T,MAA/B,EAAuCK,GAAvC,EAA4C;YACpCuT,SAAS,KAAKD,KAAL,CAAWtT,CAAX,CAAf;YACMkI,MAAM+J,OAAOhE,OAAP,CAAesF,OAAOrL,GAAtB,EAA2BI,KAA3B,CAAZ;YACM+K,OAAOpB,OAAOhE,OAAP,CAAe,KAAKoF,IAApB,EAA0B/K,KAA1B,CAAb;YACIJ,QAAQmL,IAAZ,EAAkB;iBACTrB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCmB,OAAO3E,SAAvC,EAAkDtG,KAAlD,CAAP;;;aAGG0J,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD/J,KAApD,CAAP;;GAlCJ;;;ACDa,kBAAU0J,MAAV,EAAkB;SACxBY,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;UACjCnC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;aAEGG,EADH,CACM,OADN,EACe,iBAAS;YAChBlN,MAAM5J,IAAN,KAAe,YAAnB,EAAiCwU,OAAO7N,IAAP;OAFrC,EAIGmQ,EAJH,CAIM,KAJN,EAIa,aAAK;cACR,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OALJ;aAOOpJ,KAAP;;GAVJ;;;ACCF,IAAM2Q,eAAe,SAArB;;AAEA,AAAe,kBAAUxB,MAAV,EAAkBC,MAAlB,EAA0B;MACjC5I,UAAU4I,OAAO5I,OAAvB;MACMoK,SAAS,IAAItQ,MAAJ,eAAuBkG,QAAQtM,KAAR,CAAcqG,MAArC,OAAf;;SAEOwP,WAAP,CAAmB,SAAnB,EAA8B;WACrB,eAAU7M,KAAV,EAAiB;UAClBN,QAAQ+N,aAAalO,IAAb,CAAkBS,MAAMoG,IAAxB,CAAZ;UACI1G,KAAJ,EAAW;aACJiO,WAAL,GAAmBjO,MAAM,CAAN,CAAnB;;;cAGM4D,QAAQtM,KAAR,CAAcuI,IAAd,CAAmBS,MAAMoG,IAAzB,CAAR;UACI1G,KAAJ,EAAW;aACJ1I,KAAL,GAAa0I,MAAM,CAAN,CAAb;;;cAGMgO,OAAOnO,IAAP,CAAYS,MAAMoG,IAAlB,CAAR;UACI1G,KAAJ,EAAW;aACJkO,IAAL,GAAYlO,MAAM,CAAN,CAAZ;;KAdwB;;wEAiBpB,iBAAgB6C,KAAhB,EAAuBvE,IAAvB;;;;;;wBAAA;;qBAEFuE,MAAMS,IAAN,CAAW6K,eAFT;;;;;qBAGAvK,QAAQ/E,UAAR,CAAmBgB,IAAnB,CAAwB,KAAKvI,KAA7B,CAHA;;;;;wBAAA,GAIe,KAAKA,KAAL,CAAWqD,KAAX,CAAiB,CAAjB,EAAoB,CAAC,CAArB,CAJf;;uBAKe4R,OAAO6B,cAAP,CAAsBhF,QAAtB,EAAgCvG,MAAMwL,MAAN,EAAhC,EAAgDxL,MAAMS,IAAtD,CALf;;;wBAAA;;;;;2BAOSkJ,OAAOzD,SAAP,CAAiB,KAAKzR,KAAtB,EAA6BuL,KAA7B,CAAX;;;;;;;2BAGS,KAAKoL,WAAhB;;;uBAEKjH,QAAP;;4BAZM,GAcenE,MAAMS,IAAN,CAAWgL,MAd1B;+BAAA,GAekBzL,MAAMS,IAAN,CAAWiL,SAf7B;;;sBAiBAjL,IAAN,CAAWgL,MAAX,GAAoB,EAApB;sBACMhL,IAAN,CAAWiL,SAAX,GAAuB,QAAvB;oBACI,KAAKL,IAAT,EAAe;uBACRlH,QAAL,IAAiBwF,OAAOzD,SAAP,CAAiB,KAAKmF,IAAtB,EAA4BrL,KAA5B,CAAjB;;;uBAEsB0J,OAAOiC,WAAP,CAAmBxH,QAAnB,EAA6BnE,MAAMS,IAAN,CAAWmE,IAAxC,CAtBlB;;;yBAAA;;sBAuBA/N,IAAN,CAAW4E,IAAX;;uBACmBiO,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCxD,SAAhC,EAA2CtG,KAA3C,CAxBb;;;oBAAA;;sBAyBA1I,GAAN,CAAUmE,IAAV;sBACMgF,IAAN,CAAWgL,MAAX,GAAoBG,YAApB;sBACMnL,IAAN,CAAWiL,SAAX,GAAuBG,eAAvB;iDACO9H,IA5BD;;;;;;;;OAAR;;;;;;;;GAjBF;;;ACNa,oBAAU2F,MAAV,EAAkBC,MAAlB,EAA0B;MACjC5I,UAAU4I,OAAO5I,OAAvB;sBACoD4I,OAAOU,KAFpB;MAEhCS,YAFgC,iBAEhCA,YAFgC;MAElBD,WAFkB,iBAElBA,WAFkB;MAELiB,cAFK,iBAELA,cAFK;;;SAIhCxB,WAAP,CAAmB,WAAnB,EAAgC;WACvB,eAAU7M,KAAV,EAAiB;UAChBN,QAAQM,MAAMoG,IAAN,CAAW1G,KAAX,CAAiB4D,QAAQ5F,UAAzB,CAAd;aACOgC,KAAP,0BAAoCM,MAAMoG,IAA1C;WACKvI,QAAL,GAAgB6B,MAAM,CAAN,CAAhB;KAJ4B;YAMtB,gBAAU6C,KAAV,EAAiBvE,IAAjB,EAAuB;UACzB5J,UAAUmO,MAAMC,cAAN,CACZ,KAAK3E,QADO,EAEZ,eAAO;eACEpL,OAAO+C,cAAP,CAAsB0M,GAAtB,MAA+BmL,YAA/B,IACP5a,OAAO+C,cAAP,CAAsB0M,GAAtB,MAA+BkL,WAD/B;OAHU,CAAd;UAOI,CAAChZ,OAAL,EAAc;kBACF3B,OAAO0B,MAAP,CAAcka,cAAd,CAAV;cACMzL,OAAN,CAAcxO,OAAd;;UAEE,OAAOA,QAAQ,KAAKyJ,QAAb,CAAP,KAAkC,QAAtC,EAAgD;gBACtC,KAAKA,QAAb,IAAyB,CAAzB;;aAEK,EAAEzJ,QAAQ,KAAKyJ,QAAb,CAAT;;GArBJ;;;ACJa,gBAAUoO,MAAV,EAAkBC,MAAlB,EAA0B;MACjCoC,SAASpC,OAAO5I,OAAP,CAAetM,KAA9B;MACMuX,UAAU,IAAInR,MAAJ,WAAmBkR,OAAOjR,MAA1B,uBAAhB;MACMmR,eAAe,IAAIpR,MAAJ,CAAWkR,OAAOjR,MAAlB,EAA0B,GAA1B,CAArB;;SAEOwP,WAAP,CAAmB,OAAnB,EAA4B;;WAEnB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;UACnCrN,QAAQ6O,QAAQhP,IAAR,CAAauN,SAAS1G,IAAtB,CAAZ;aACO1G,KAAP,oBAA8BoN,SAAS5G,GAAvC;;WAEKuI,KAAL,GAAa/O,MAAM,CAAN,KAAY,EAAzB;UACMgP,aAAahP,MAAM,CAAN,CAAnB;;WAEKgP,UAAL,GAAkB,EAAlB;;aAEQhP,QAAQ8O,aAAajP,IAAb,CAAkBmP,UAAlB,CAAhB,EAAgD;aACzCA,UAAL,CAAgBtV,IAAhB,CAAqBsG,MAAM,CAAN,CAArB;;aAEK,KAAKgP,UAAL,CAAgB9U,MAAvB,yBAAoDkT,SAAS5G,GAA7D;KAdwB;;YAiBlB,gBAAU3D,KAAV,EAAiBvE,IAAjB,EAAuB;UACvByQ,QAAQvC,OAAOzD,SAAP,CAAiB,KAAKgG,KAAtB,EAA6BlM,KAA7B,CAAd;UACMoM,cAAc,WAASF,KAAT,SAAoB,KAAKC,UAAL,CAAgBhN,IAAhB,CAAqB,GAArB,CAAxC;;UAEMkN,SAASrM,MAAMS,IAAN,CAAW4L,MAAX,GAAoBrM,MAAMS,IAAN,CAAW4L,MAAX,IAAqB,EAAxD;UACI9C,MAAM8C,OAAOD,WAAP,CAAV;;UAEI7C,QAAQjZ,SAAZ,EAAuB;cACf+b,OAAOD,WAAP,IAAsB,CAA5B;;;UAGI5L,YAAY,KAAK2L,UAAL,CAAgB5C,GAAhB,CAAlB;YACM,CAACA,MAAM,CAAP,IAAY,KAAK4C,UAAL,CAAgB9U,MAAlC;aACO+U,WAAP,IAAsB7C,GAAtB;;aAEOI,OAAOzD,SAAP,CAAiB1F,SAAjB,EAA4BR,KAA5B,CAAP;;GAhCJ;;;ACPa,aAAU0J,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,IAAnB,EAAyB;;WAEhB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClC8B,QAAL,GAAgB,EAAhB;WACKvC,aAAL,GAAqB,EAArB;;UAEIU,UAAJ;UACMpC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,OADS,EACA;eAAM,MAAK2B,QAAL,CAAczV,IAAd,CAAmB;gBAC9B0T,SAAS1G,IADqB;qBAExB4G,IAAI;SAFC,CAAN;OADA,EAKZE,EALY,CAKT,WALS,EAKI,iBAAS;cACnB2B,QAAL,CAAczV,IAAd,CAAmB;gBACX4G,MAAMoG,IADK;qBAEN4G,IAAI;SAFjB;OANW,EAWZE,EAXY,CAWT,UAXS,EAWG;eAAOF,IAAI,MAAKV,aAAhB;OAXH,EAYZY,EAZY,CAYT,WAZS,EAYI;eAAStC,OAAO7N,IAAP,EAAT;OAZJ,EAaZmQ,EAbY,CAaT,UAbS,EAaG;eAAOF,EAAE5T,IAAF,CAAOyH,GAAP,CAAP;OAbH,EAcZqM,EAdY,CAcT,KAdS,EAcF,aAAK;cACR,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OAfW,CAAf;;aAkBOpJ,KAAP;KAzBqB;;YA4Bf,gBAAUyF,KAAV,EAAiBvE,IAAjB,EAAuB;;;;;;6BACR,KAAK6Q,QAA1B,8HAAoC;cAAzBrB,MAAyB;;cAC5BF,OAAOpB,OAAOhE,OAAP,CAAesF,OAAOF,IAAtB,EAA4B/K,KAA5B,CAAb;cACI2J,OAAOnE,QAAP,CAAgBuF,IAAhB,CAAJ,EAA2B;mBAClBrB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCmB,OAAO3E,SAAvC,EAAkDtG,KAAlD,CAAP;;;;;;;;;;;;;;;;;;aAGG0J,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD/J,KAApD,CAAP;;GAnCJ;;;ACCa,oBAAU0J,MAAV,EAAkBC,MAAlB,EAA0B;MACjC5I,UAAU4I,OAAO5I,OAAvB;sBACoD4I,OAAOU,KAFpB;MAEhCS,YAFgC,iBAEhCA,YAFgC;MAElBD,WAFkB,iBAElBA,WAFkB;MAEL0B,cAFK,iBAELA,cAFK;;;SAIhCjC,WAAP,CAAmB,WAAnB,EAAgC;WACvB,eAAU7M,KAAV,EAAiB;UAChBN,QAAQM,MAAMoG,IAAN,CAAW1G,KAAX,CAAiB4D,QAAQ5F,UAAzB,CAAd;aACOgC,KAAP,0BAAoCM,MAAMoG,IAA1C;WACKvI,QAAL,GAAgB6B,MAAM,CAAN,CAAhB;KAJ4B;YAMtB,gBAAU6C,KAAV,EAAiBvE,IAAjB,EAAuB;UACzB5J,UAAUmO,MAAMC,cAAN,CACZ,KAAK3E,QADO,EAEZ,eAAO;eACEpL,OAAO+C,cAAP,CAAsB0M,GAAtB,MAA+BmL,YAA/B,IACP5a,OAAO+C,cAAP,CAAsB0M,GAAtB,MAA+BkL,WAD/B;OAHU,CAAd;UAOI,CAAChZ,OAAL,EAAc;kBACF3B,OAAO0B,MAAP,CAAc2a,cAAd,CAAV;cACMlM,OAAN,CAAcxO,OAAd;;UAEE,OAAOA,QAAQ,KAAKyJ,QAAb,CAAP,KAAkC,QAAtC,EAAgD;gBACtC,KAAKA,QAAb,IAAyB,CAAzB;;UAEIsE,MAAM/N,QAAQ,KAAKyJ,QAAb,CAAZ;cACQ,KAAKA,QAAb;aACOsE,GAAP;;GAvBJ;;;ACJF;;;;;;AAMA,AAAe,iBAAU8J,MAAV,EAAkBC,MAAlB,EAA0B;MACjCoC,SAASpC,OAAO5I,OAAP,CAAetM,KAA9B;MACMyW,eAAe,KAArB;;SAEOZ,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAU7M,KAAV,EAAiB+M,YAAjB,EAA+B;UAChCrN,QAAQ+N,aAAalO,IAAb,CAAkBS,MAAMoG,IAAxB,CAAZ;UACI1G,KAAJ,EAAW;aACJqP,YAAL,GAAoBrP,MAAM,CAAN,CAApB;;;cAGM4O,OAAO/O,IAAP,CAAYS,MAAMoG,IAAlB,CAAR;UACI1G,KAAJ,EAAW;aACJsP,MAAL,GAActP,MAAM,CAAN,CAAd;;;WAGGuP,IAAL,GAAYhD,OAAOgB,MAAP,CAAc3H,KAAd,CAAoByH,YAApB,CAAZ;KAZyB;;wEAcnB,iBAAgBxK,KAAhB,EAAuBvE,IAAvB;;;;;;sBAAA,GACSuE,MAAMS,IAAN,CAAW6K,eAAX,GACX3B,OAAOzD,SAAP,CAAiB,KAAKuG,MAAtB,EAA8BzM,KAA9B,CADW,GAEX,KAAKwM,YAHH;;uBAICC,MAAP;;;sBAGMhM,IAAN,CAAWiL,SAAX,GAAuB,OAAvB;;uBACmBhC,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAK4C,IAArC,EAA2C1M,KAA3C,CARb;;;oBAAA;;oBASFA,MAAMS,IAAN,CAAWgL,MAAX,CAAkB,EAAlB,MAA0Bnb,SAA9B,EAAyC;wBACjCmQ,IAAN,CAAWgL,MAAX,CAAkB,EAAlB,IAAwB1H,IAAxB;;;uBAEsB2F,OAAOiC,WAAP,CAAmBc,MAAnB,EAA2BzM,MAAMS,IAAN,CAAWmE,IAAtC,CAZlB;;;yBAAA;;sBAaA/N,IAAN,CAAW4E,IAAX;sBACMgF,IAAN,CAAWiL,SAAX,GAAuB,QAAvB;;uBACsBhC,OAAOG,QAAP,CAAgBC,eAAhB,CAAgCxD,SAAhC,EAA2CtG,KAA3C,CAfhB;;;uBAAA;;sBAgBA1I,GAAN,CAAUmE,IAAV;iDACOgL,OAjBD;;;;;;;;OAAR;;;;;;;;GAdF;;SAmCO6D,WAAP,CAAmB,OAAnB,EAA4B;WACnB,eAAU7M,KAAV,EAAiB+M,YAAjB,EAA+B;;;UAC9BrN,QAAQ,MAAMH,IAAN,CAAWS,MAAMoG,IAAjB,CAAd;WACK8I,KAAL,GAAaxP,QAAQA,MAAM,CAAN,CAAR,GAAmB,EAAhC;;WAEKuP,IAAL,GAAY,EAAZ;UACMrE,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,cADS,EACO;eAAMtC,OAAO7N,IAAP,EAAN;OADP,EAEZmQ,EAFY,CAET,UAFS,EAEG;eAAO,MAAK+B,IAAL,CAAU7V,IAAV,CAAeyH,GAAf,CAAP;OAFH,EAGZqM,EAHY,CAGT,KAHS,EAGF,YAAM;cACT,IAAIrV,KAAJ,UAAiBmI,MAAMkG,GAAvB,iBAAN;OAJW,CAAf;aAMOpJ,KAAP;KAZwB;;yEAclB,kBAAgByF,KAAhB;;;;;;4BAAA,GACeA,MAAMS,IAAN,CAAWgL,MAAX,CAAkB,KAAKkB,KAAvB,CADf;;sBAEOC,iBAAiBtc,SAFxB;;;;;+BAGFsc,YAHE;;;;;;uBAIIlD,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAK4C,IAArC,EAA2C1M,KAA3C,CAJJ;;;;;;oBAAA;;sBAMFA,MAAMS,IAAN,CAAWiL,SAAX,KAAyB,OANvB;;;;;sBAOEjL,IAAN,CAAWgL,MAAX,CAAkB,KAAKkB,KAAvB,IAAgC5I,IAAhC;kDACO,EARH;;;kDAUCA,IAVD;;;;;;;;OAAR;;;;;;;;GAdF;;;AC/Ca,cAAU2F,MAAV,EAAkB;SACxBY,WAAP,CAAmB,KAAnB,EAA0B;WACjB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClC1I,MAAL,GAAc,EAAd;;UAEMuG,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,CAAf;aAEGG,EADH,CACM,OADN,EACe,iBAAS;YAChBlN,MAAM5J,IAAN,KAAe,QAAnB,EAA6BwU,OAAO7N,IAAP,GAA7B,KACK,MAAKsH,MAAL,CAAYjL,IAAZ,CAAiB4G,KAAjB;OAHT,EAKGkN,EALH,CAKM,KALN,EAKa,YAAM;cACT,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OANJ;aAQOpJ,KAAP;KAbsB;YAehB,gBAAUyF,KAAV,EAAiBvE,IAAjB,EAAuB;aACtB,KAAKqG,MAAL,CAAY7C,GAAZ,CAAgB;eAASxB,MAAMkG,GAAf;OAAhB,EAAoCxE,IAApC,CAAyC,EAAzC,CAAP;;GAhBJ;;;ACEa,mBAAUuK,MAAV,EAAkBC,MAAlB,EAA0B;MACjC5I,UAAU4I,OAAO5I,OAAvB;MACMiH,KAAK,IAAInN,MAAJ,CAAW,OAAKkG,QAAQ5F,UAAR,CAAmBL,MAAxB,0BAChBiG,QAAQtM,KAAR,CAAcqG,MADE,uBAEViG,QAAQtF,IAAR,CAAaX,MAFH,SAAX,CAAX;;SAIOwP,WAAP,CAAmB,UAAnB,EAA+B;;WAEtB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;UACjCrN,QAAQ6K,GAAGhL,IAAH,CAAQuN,SAAS1G,IAAjB,CAAd;aACO1G,KAAP,oBAA8BoN,SAAS5G,GAAvC;;WAEKrI,QAAL,GAAgB6B,MAAM,CAAN,CAAhB;WACKyM,UAAL,GAAkBzM,MAAM,CAAN,CAAlB;WACKmJ,SAAL,GAAiB,EAAjB;;UAEImE,UAAJ;UACMpC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,OADS,EACA;eAAOF,IAAI,MAAKnE,SAAhB;OADA,EAEZqE,EAFY,CAET,iBAFS,EAEU;eAAStC,OAAO7N,IAAP,EAAT;OAFV,EAGZmQ,EAHY,CAGT,UAHS,EAGG;eAAOF,EAAE5T,IAAF,CAAOyH,GAAP,CAAP;OAHH,EAIZqM,EAJY,CAIT,KAJS,EAIF,YAAM;cACT,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OALW,CAAf;;aAQOpJ,KAAP;KAnB2B;;;wEAsBrB,kBAAgByF,KAAhB,EAAuBvE,IAAvB;;;;;;;;0BAAA,GACWkO,OAAOhE,OAAP,CAAe,KAAKiE,UAApB,EAAgC5J,KAAhC,KAA0C,EADrD;sBAAA,GAESvE,KAAKuO,MAAL,IAAe,CAFxB;qBAAA,GAGSvO,KAAKwO,KAAL,KAAe3Z,SAAhB,GAA6BsZ,WAAWvS,MAAxC,GAAiDoE,KAAKwO,KAH9D;;;6BAKOL,WAAW9R,KAAX,CAAiBkS,MAAjB,EAAyBA,SAASC,KAAlC,CAAb;oBALM,GAMOxO,KAAKoR,IAAL,IAAajD,WAAWvS,MAN/B;wBAAA,GAOWuS,WAAW3K,GAAX,CAAe,UAACqK,IAAD,EAAO5R,CAAP,EAAa;sBACrCiI,MAAM,EAAZ;sBACI,OAAKrE,QAAT,IAAqBgO,IAArB;yBACO3J,GAAP;iBAHe,CAPX;mBAAA;oBAAA,GAcK,EAdL;;uBAeA8J,UAAUhK,QAAV;qFAAoB,iBAAO5N,OAAP,EAAgB0X,GAAhB;;;;;;kCAClB3K,KAAKkO,KAAL,CAAWvD,MAAMsD,IAAjB,IAAyB,CAA/B;+BADwB,GAEXtD,MAAMsD,IAAP,GAAe,CAFH;;gCAGpBE,QAAQ,CAAZ,EAAe;kCACTC,QAAQ,CAAZ,EAAe;wCACL,OAAR;;yDAEuBA,GAAzB;;;uDAGuBD,GAAzB;kCACMlW,IAAN,CAAWhF,OAAX;;mCACc6X,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,OAAKxD,SAArC,EAAgDtG,KAAhD,CAZU;;;gCAAA;;oCAahB,OAAR;kCACM1I,GAAN,CAAUzF,OAAV;6DACOkS,IAfiB;;;;;;;;mBAApB;;;;;oBAfA;;;oBAgCFiJ,MAAM,CAAV,EAAa;0BACH,OAAR;;kDAEKjJ,IAnCD;;;;;;;;OAAR;;;;;;;;GAtBF;;;ACTa,iBAAU2F,MAAV,EAAkBC,MAAlB,EAA0B;SAChCW,WAAP,CAAmB,QAAnB,EAA6B;WACpB,eAAUC,QAAV,EAAoBC,YAApB,EAAkC;;;WAClClE,SAAL,GAAiB,EAAjB;WACKyD,aAAL,GAAqB,EAArB;UACIU,UAAJ;UACMpC,SAASqB,OAAOgB,MAAP,CAAczB,WAAd,CAA0BuB,YAA1B,EACZG,EADY,CACT,OADS,EACA,aAAK;YACZ,MAAKrE,SAAT;cACKyE,IAAL,GAAYR,SAAS1G,IAArB;OAHW,EAKZ8G,EALY,CAKT,UALS,EAKG;eAAOF,IAAI,MAAKV,aAAhB;OALH,EAMZY,EANY,CAMT,eANS,EAMQ;eAAStC,OAAO7N,IAAP,EAAT;OANR,EAOZmQ,EAPY,CAOT,UAPS,EAOG;eAAOF,EAAE5T,IAAF,CAAOyH,GAAP,CAAP;OAPH,EAQZqM,EARY,CAQT,KARS,EAQF,aAAK;cACR,IAAIrV,KAAJ,UAAiBiV,SAAS5G,GAA1B,iBAAN;OATW,CAAf;;aAYOpJ,KAAP;KAjByB;;YAoBnB,gBAAUyF,KAAV,EAAiBvE,IAAjB,EAAuB;UACvBsP,OAAOpB,OAAOhE,OAAP,CAAe,KAAKoF,IAApB,EAA0B/K,KAA1B,CAAb;aACO2J,OAAOvD,OAAP,CAAe2E,IAAf,IACHrB,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKxD,SAArC,EAAgDtG,KAAhD,CADG,GAEH0J,OAAOG,QAAP,CAAgBC,eAAhB,CAAgC,KAAKC,aAArC,EAAoD/J,KAApD,CAFJ;;GAtBJ;;;ACca,eAAUiN,MAAV,EAAkBtD,MAAlB,EAA0B;SAChCsD,MAAP,EAAetD,MAAf;UACQsD,MAAR,EAAgBtD,MAAhB;OACKsD,MAAL,EAAatD,MAAb;UACQsD,MAAR,EAAgBtD,MAAhB;QACMsD,MAAN,EAActD,MAAd;YACUsD,MAAV,EAAkBtD,MAAlB;MACIsD,MAAJ,EAAYtD,MAAZ;KACGsD,MAAH,EAAWtD,MAAX;UACQsD,MAAR,EAAgBtD,MAAhB;YACUsD,MAAV,EAAkBtD,MAAlB;SACOsD,MAAP,EAAetD,MAAf;MACIsD,MAAJ,EAAYtD,MAAZ;WACSsD,MAAT,EAAiBtD,MAAjB;SACOsD,MAAP,EAAetD,MAAf;;;AC7BF,IAAMuD,aAAa,CACjB,SADiB,EACN,UADM,EACM,OADN,EACe,OADf,EACwB,KADxB,EAC+B,MAD/B,EACuC,MADvC,EAC+C,QAD/C,EAEjB,WAFiB,EAEJ,SAFI,EAEO,UAFP,EAEmB,UAFnB,CAAnB;AAIA,IAAMC,kBAAkB,CACtB,KADsB,EACf,KADe,EACR,KADQ,EACD,KADC,EACM,KADN,EACa,KADb,EACoB,KADpB,EAC2B,KAD3B,EACkC,KADlC,EACyC,KADzC,EAEtB,KAFsB,EAEf,KAFe,CAAxB;AAIA,IAAMC,WAAW,CACf,QADe,EACL,QADK,EACK,SADL,EACgB,WADhB,EAC6B,UAD7B,EACyC,QADzC,EACmD,UADnD,CAAjB;AAGA,IAAMC,gBAAgB,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,CAAtB;AACA,IAAMC,WAAW;KACZ,IADY;KAEZ,IAFY;KAGZ,IAHY;aAIJ;;;CAJb,CAQA,IAAMC,QAAQ;eACC,qBAAUC,CAAV,EAAa;QAClBC,MAAMF,MAAMG,UAAN,CAAiBF,CAAjB,IAAsB,EAAtB,GAA2B,EAAvC;WACO,CAAC,EAAD,EAAKC,GAAL,EAAU,EAAV,EAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,EAAsC,EAAtC,EAA0C,EAA1C,EAA8C,EAA9C,CAAP;GAHU;;gBAME,sBAAUD,CAAV,EAAa;QACrBG,MAAM,CAAV;SACK,IAAIjW,IAAI,CAAb,EAAgBA,IAAI8V,EAAEI,QAAF,EAApB,EAAkC,EAAElW,CAApC,EAAuC;aAC9B6V,MAAMM,WAAN,CAAkBL,CAAlB,EAAqB9V,CAArB,CAAP;;WAEKiW,MAAMH,EAAEM,OAAF,EAAb;GAXU;;;;iBAgBG,uBAAUN,CAAV,EAAaO,QAAb,EAAuB;;QAE9BC,MAAM,KAAKC,YAAL,CAAkBT,CAAlB,KAAwBO,WAAWP,EAAEU,MAAF,EAAnC,CAAZ;;QAEMC,OAAO,IAAIC,IAAJ,CAASZ,EAAEa,WAAF,EAAT,EAA0B,CAA1B,EAA6B,CAA7B,CAAb;QACM1Z,OAAQ,IAAIwZ,KAAKD,MAAL,EAAJ,GAAoBH,QAAlC;WACOO,QAAQC,GAAR,CAAY3P,KAAKkO,KAAL,CAAW,CAACkB,MAAMrZ,IAAP,IAAe,CAA1B,IAA+B,CAA3C,EAA8C,CAA9C,CAAP;GAtBU;;cAyBA,oBAAU6Y,CAAV,EAAa;QACjBgB,OAAOhB,EAAEa,WAAF,EAAb;WACO,CAAC,EAAE,CAACG,OAAO,CAAR,MAAe,CAAf,KAAqBA,OAAO,GAAP,IAAeA,OAAO,GAAP,KAAe,CAAf,IAAoBA,IAAxD,CAAF,CAAR;GA3BU;;aA8BD,mBAAUhB,CAAV,EAAa;QAChB9Q,MAAM8Q,EAAEM,OAAF,GAAY1X,QAAZ,EAAZ;QACMkN,QAAQmL,SAAS/R,IAAI5E,KAAJ,CAAU,CAAC,CAAX,CAAT,CAAd;WACOwV,SAAShK,KAAT,KAAmBgK,SAAS,SAAT,CAA1B;GAjCU;;WAoCH,iBAAUE,CAAV,EAAa;WACbiB,SAASjB,EAAEa,WAAF,GAAgBjY,QAAhB,GAA2BsY,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAT,EAAqD,EAArD,CAAP;;CArCJ;;AAyCA,IAAMJ,UAAU;OACT,aAAU7Z,KAAV,EAAiBka,IAAjB,EAAuBC,EAAvB,EAA2B;QAC1B,CAACA,EAAL,EAASA,KAAK,GAAL;QACLpa,SAASC,MAAM2B,QAAN,EAAb;QACImY,MAAMI,OAAOna,OAAO6C,MAAxB;;WAEOkX,QAAQ,CAAf,EAAkB;eACPK,KAAKpa,MAAd;;;WAGKA,MAAP;;CAVJ;;AAcA,IAAMqa,cAAc;KACf,WAAUrB,CAAV,EAAa;WACPH,cAAcG,EAAEU,MAAF,EAAd,CAAP;GAFgB;KAIf,WAAUV,CAAV,EAAa;WACPJ,SAASI,EAAEU,MAAF,EAAT,CAAP;GALgB;KAOf,WAAUV,CAAV,EAAa;WACPL,gBAAgBK,EAAEI,QAAF,EAAhB,CAAP;GARgB;KAUf,WAAUJ,CAAV,EAAa;WACPN,WAAWM,EAAEI,QAAF,EAAX,CAAP;GAXgB;KAaf,WAAUJ,CAAV,EAAa;WACPA,EAAEsB,cAAF,EAAP;GAdgB;KAgBf,WAAUtB,CAAV,EAAa;WACPD,MAAMwB,OAAN,CAAcvB,CAAd,CAAP;GAjBgB;KAmBf,WAAUA,EAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,GAAEM,OAAF,EAAZ,EAAyB,CAAzB,CAAP;GApBgB;KAsBf,WAAUN,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEM,OAAF,EAAZ,EAAyB,CAAzB,EAA4B,GAA5B,CAAP;GAvBgB;KAyBf,WAAUN,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEwB,QAAF,EAAZ,EAA0B,CAA1B,CAAP;GA1BgB;KA4Bf,WAAUxB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEwB,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,CAAP;GA7BgB;KA+Bf,WAAUxB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYhB,MAAMU,YAAN,CAAmBT,CAAnB,CAAZ,EAAmC,CAAnC,CAAP;GAhCgB;KAkCf,WAAUA,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEwB,QAAF,EAAZ,EAA0B,CAA1B,EAA6B,GAA7B,CAAP;GAnCgB;KAqCf,WAAUxB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEwB,QAAF,KAAe,EAAf,IAAqB,EAAjC,EAAqC,CAArC,EAAwC,GAAxC,CAAP;GAtCgB;KAwCf,WAAUxB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEyB,eAAF,EAAZ,EAAiC,CAAjC,CAAP;GAzCgB;KA2Cf,WAAUzB,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAEI,QAAF,KAAe,CAA3B,EAA8B,CAA9B,CAAP;GA5CgB;KA8Cf,WAAUJ,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAE0B,UAAF,EAAZ,EAA4B,CAA5B,CAAP;GA/CgB;KAiDf,WAAU1B,CAAV,EAAa;WACNA,EAAEwB,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;GAlDgB;KAoDf,WAAUxB,CAAV,EAAa;WACNA,EAAEwB,QAAF,KAAe,EAAf,GAAoB,IAApB,GAA2B,IAAnC;GArDgB;KAuDf,WAAUxB,CAAV,EAAa;WACPD,MAAM4B,SAAN,CAAgB3B,CAAhB,CAAP;GAxDgB;KA0Df,WAAUA,CAAV,EAAa;WACP5O,KAAKwQ,KAAL,CAAW5B,EAAE6B,OAAF,KAAc,IAAzB,CAAP;GA3DgB;KA6Df,WAAU7B,CAAV,EAAa;WACPc,QAAQC,GAAR,CAAYf,EAAE8B,UAAF,EAAZ,EAA4B,CAA5B,CAAP;GA9DgB;KAgEf,WAAU9B,CAAV,EAAa;WACPA,EAAEU,MAAF,MAAc,CAArB;GAjEgB;KAmEf,WAAUV,CAAV,EAAa;WACPD,MAAMgC,aAAN,CAAoB/B,CAApB,EAAuB,CAAvB,CAAP;GApEgB;KAsEf,WAAUA,CAAV,EAAa;WACPA,EAAEU,MAAF,EAAP;GAvEgB;KAyEf,WAAUV,CAAV,EAAa;WACPD,MAAMgC,aAAN,CAAoB/B,CAApB,EAAuB,CAAvB,CAAP;GA1EgB;KA4Ef,WAAUA,CAAV,EAAa;WACPA,EAAEgC,kBAAF,EAAP;GA7EgB;KA+Ef,WAAUhC,CAAV,EAAa;WACPA,EAAEiC,kBAAF,EAAP;GAhFgB;KAkFf,WAAUjC,CAAV,EAAa;WACPA,EAAEa,WAAF,GAAgBjY,QAAhB,GAA2BsY,SAA3B,CAAqC,CAArC,EAAwC,CAAxC,CAAP;GAnFgB;KAqFf,WAAUlB,CAAV,EAAa;WACPA,EAAEa,WAAF,EAAP;GAtFgB;KAwFf,WAAUb,CAAV,EAAa;QACRkC,KAAKlC,EAAEmC,iBAAF,KAAwB,EAAxB,GAA6B,GAAxC;WACO,CAACD,KAAK,CAAL,GAAS,GAAT,GAAe,GAAhB,IAAuBpB,QAAQC,GAAR,CAAY3P,KAAKgR,GAAL,CAASF,EAAT,CAAZ,EAA0B,CAA1B,CAA9B;GA1FgB;OA4Fb,aAAY;WACR,GAAP;;CA7FJ;AAgGAb,YAAYpG,CAAZ,GAAgBoG,YAAYgB,CAA5B;AACAhB,YAAYiB,CAAZ,GAAgBjB,YAAYkB,CAA5B;;AAEA,AAAe,mBAAUvC,CAAV,EAAawC,MAAb,EAAqB;MAC9BrI,SAAS,EAAb;MACIsI,YAAYD,MAAhB;;SAEO,IAAP,EAAa;QACLvK,IAAI,KAAV;QACMyK,UAAUzK,EAAEzI,IAAF,CAAOiT,SAAP,CAAhB;;;QAGI,CAACC,OAAL,EAAc;aACLvI,SAASsI,SAAhB;;;;cAIQA,UAAUnY,KAAV,CAAgB,CAAhB,EAAmB2N,EAAEpC,SAAF,GAAc,CAAjC,CAAV;gBACY4M,UAAUnY,KAAV,CAAgB2N,EAAEpC,SAAlB,CAAZ;;;QAGMuL,KAAKsB,QAAQ,CAAR,EAAWrY,MAAX,CAAkB,CAAlB,CAAX;QACMsY,OAAOtB,YAAYD,EAAZ,CAAb;cACUuB,OAAOA,KAAK7d,IAAL,CAAU,IAAV,EAAgBkb,CAAhB,CAAP,GAA4B,MAAMoB,EAA5C;;;;AC9LJ,IAAMwB,YAAY;OACX,OADW;OAEX,MAFW;OAGX,MAHW;OAIX,OAJW;OAKX;CALP;AAOA,IAAMC,cAAc;WACT,GADS;UAEV,GAFU;UAGV,GAHU;WAIT,GAJS;WAKT;CALX;;AAQA,IAAMxJ,UAAU;SACP;WAAKjI,KAAKgR,GAAL,CAASzP,CAAT,CAAL;GADO;YAEJ,gBAACA,CAAD,EAAI/N,GAAJ;WAAY+N,IAAI/N,GAAhB;GAFI;gBAGA;WAAO0G,YAAU4D,GAAV,EAAe7E,MAAf,CAAsB,CAAtB,EAAyByY,WAAzB,KAAyC5T,IAAI5E,KAAJ,CAAU,CAAV,CAAhD;GAHA;UAIN;WAAK8G,KAAK2R,IAAL,CAAUpQ,CAAV,CAAL;GAJM;YAKJ,gBAACA,CAAD,EAAI/N,GAAJ;WAAYyH,MAAM1J,SAAN,CAAgBqgB,MAAhB,CAAuBle,IAAvB,CAA4B6N,CAA5B,EAA+B/N,GAA/B,CAAZ;GALI;UAMN,cAAC+N,CAAD,EAAI/N,GAAJ,EAAY;QACdqe,OAAOtQ,CAAX;QACIA,MAAM,KAAV,EAAiB;aACR,IAAIiO,IAAJ,EAAP;KADF,MAEO,IAAIpP,QAAA,CAAWmB,CAAX,CAAJ,EAAmB;aACjB,IAAIiO,IAAJ,CAASjO,CAAT,CAAP;;WAEKuQ,YAAYD,IAAZ,IAAoBE,SAASF,IAAT,EAAere,GAAf,CAApB,GAA0C+N,CAAjD;GAbY;aAeH,kBAACA,CAAD,EAAI/N,GAAJ;WAAYoT,SAASrF,CAAT,IAAcA,CAAd,GAAkB/N,GAA9B;GAfG;gBAgBA,oBAAC+N,CAAD,EAAI/N,GAAJ;WAAY+N,IAAI/N,GAAhB;GAhBA;cAiBF;WAAK+N,EAAE9C,WAAF,EAAL;GAjBE;YAkBJuT,MAlBI;;iBAoBC;WAAOA,OAAOC,SAASnU,GAAT,CAAP,CAAP;GApBD;WAqBL;WAAKyD,EAAE,CAAF,CAAL;GArBK;WAsBL;WAAKvB,KAAKkO,KAAL,CAAW3M,CAAX,CAAL;GAtBK;UAuBN,cAACA,CAAD,EAAI/N,GAAJ;WAAY+N,EAAEhB,IAAF,CAAO/M,GAAP,CAAZ;GAvBM;UAwBN;WAAK4M,IAAA,CAAOmB,CAAP,CAAL;GAxBM;YAyBJ;WAAKrH,YAAUqH,CAAV,EAAayC,OAAb,CAAqB,MAArB,EAA6B,EAA7B,CAAL;GAzBI;SA0BP,aAAC3I,GAAD,EAAM7H,GAAN;WAAc6H,IAAIgF,GAAJ,CAAQ;aAAKkB,EAAE/N,GAAF,CAAL;KAAR,CAAd;GA1BO;WA2BL0e,UAAU,UAAC3Q,CAAD,EAAI/N,GAAJ;WAAY+N,IAAI/N,GAAhB;GAAV,CA3BK;YA4BJ0e,UAAU,UAAC3Q,CAAD,EAAI/N,GAAJ;WAAY+N,IAAI/N,GAAhB;GAAV,CA5BI;mBA6BG;WAAK+N,EAAEyC,OAAF,CAAU,KAAV,EAAiB,QAAjB,CAAL;GA7BH;UA8BNkO,UAAU,UAAC3Q,CAAD,EAAI/N,GAAJ;WAAYgL,OAAO+C,CAAP,IAAY/C,OAAOhL,GAAP,CAAxB;GAAV,CA9BM;aA+BH,iBAAC+N,CAAD,EAAI/N,GAAJ;WAAYA,MAAM+N,CAAlB;GA/BG;YAgCJ,gBAACA,CAAD,EAAI/N,GAAJ;WAAY+N,EAAEzB,KAAF,CAAQtM,GAAR,EAAa+M,IAAb,CAAkB,EAAlB,CAAZ;GAhCI;kBAiCE,sBAACgB,CAAD,EAAI9F,CAAJ;WAAU8F,EAAEyC,OAAF,CAAUvI,CAAV,EAAa,EAAb,CAAV;GAjCF;aAkCH,iBAAC8F,CAAD,EAAI4Q,OAAJ,EAAaC,WAAb;WACTlY,YAAUqH,CAAV,EAAazB,KAAb,CAAmBqS,OAAnB,EAA4B5R,IAA5B,CAAiC6R,WAAjC,CADS;GAlCG;mBAoCG,uBAAC7Q,CAAD,EAAI8Q,IAAJ,EAAUC,IAAV;WAAmBpY,YAAUqH,CAAV,EAAayC,OAAb,CAAqBqO,IAArB,EAA2BC,IAA3B,CAAnB;GApCH;aAqCH;WAAK/Q,EAAE/I,OAAF,EAAL;GArCG;WAsCL,eAAC+I,CAAD,EAAI/N,GAAJ,EAAY;QACb+e,MAAMvS,KAAKwS,GAAL,CAAS,EAAT,EAAahf,OAAO,CAApB,CAAZ;WACOwM,KAAKwQ,KAAL,CAAWjP,IAAIgR,GAAf,EAAoB/e,GAApB,IAA2B+e,GAAlC;GAxCY;YA0CJ;WAAOrY,YAAU4D,GAAV,EAAekG,OAAf,CAAuB,MAAvB,EAA+B,EAA/B,CAAP;GA1CI;UA2CN;WAAKzC,EAAE9I,MAAP;GA3CM;WA4CL,eAAC8I,CAAD,EAAIxB,KAAJ,EAAWtH,MAAX;WACP8I,EAAE6I,MAAF,CAASrK,KAAT,EAAgBtH,WAAW/G,SAAX,GAAuB,CAAvB,GAA2B+G,MAA3C,CADO;GA5CK;UA8CN,cAAC8I,CAAD,EAAI/N,GAAJ;WAAY+N,EAAEkR,IAAF,CAAOjf,GAAP,CAAZ;GA9CM;WA+CL,eAAC+N,CAAD,EAAI/N,GAAJ;WAAY0G,YAAUqH,CAAV,EAAazB,KAAb,CAAmBtM,GAAnB,CAAZ;GA/CK;WAgDL,eAAC+N,CAAD;WAAOrH,YAAUqH,CAAV,EAAasD,IAAb,EAAP;GAhDK;gBAiDA;WAAK3K,YAAUqH,CAAV,EAAayC,OAAb,CAAqB,2DAArB,EAAkF,EAAlF,CAAL;GAjDA;oBAkDI;WAAK9J,YAAUqH,CAAV,EAAayC,OAAb,CAAqB,KAArB,EAA4B,EAA5B,CAAL;GAlDJ;WAmDL,eAACzC,CAAD,EAAI/N,GAAJ;WAAY+N,IAAI/N,GAAhB;GAnDK;cAoDF,kBAAC+N,CAAD,EAAI9F,CAAJ,EAAOiX,CAAP,EAAa;QACnBxY,YAAUqH,CAAV,CAAJ;QACKmR,MAAMhhB,SAAP,GAAoB,KAApB,GAA4BghB,CAAhC;QACIjX,KAAK,EAAT;QACI8F,EAAE9I,MAAF,IAAYgD,CAAhB,EAAmB,OAAO8F,CAAP;WACZA,EAAE6I,MAAF,CAAS,CAAT,EAAY3O,IAAIiX,EAAEja,MAAlB,IAA4Bia,CAAnC;GAzDY;mBA2DG,uBAACnR,CAAD,EAAI9F,CAAJ,EAAOiX,CAAP,EAAa;QACxBA,MAAMhhB,SAAV,EAAqBghB,IAAI,KAAJ;QACfrX,MAAMkG,EAAEzB,KAAF,CAAQ,GAAR,CAAZ;QACI2K,MAAMpP,IAAInC,KAAJ,CAAU,CAAV,EAAauC,CAAb,EAAgB8E,IAAhB,CAAqB,GAArB,CAAV;QACIlF,IAAI5C,MAAJ,GAAagD,CAAjB,EAAoBgP,OAAOiI,CAAP;WACbjI,GAAP;GAhEY;UAkEN,iBAAUpP,GAAV,EAAe;QACfE,IAAI,EAAV;WACO,CAACF,OAAO,EAAR,EAAYoC,MAAZ,CAAmB,eAAO;UAC3BlC,EAAE9J,cAAF,CAAiBuP,GAAjB,CAAJ,EAA2B;eAClB,KAAP;;QAEAA,GAAF,IAAS,IAAT;aACO,IAAP;KALK,CAAP;GApEY;YA4EJ;WAAO9G,YAAU4D,GAAV,EAAe4T,WAAf,EAAP;GA5EI;gBA6EAiB;CA7EhB;;AAgFA,SAASX,MAAT,CAAiBlU,GAAjB,EAAsB;SACb5D,YAAU4D,GAAV,EAAekG,OAAf,CAAuB,YAAvB,EAAqC;WAAKwN,UAAUoB,CAAV,CAAL;GAArC,CAAP;;;AAGF,SAASX,QAAT,CAAmBnU,GAAnB,EAAwB;SACf5D,YAAU4D,GAAV,EAAekG,OAAf,CAAuB,wBAAvB,EAAiD;WAAKyN,YAAYmB,CAAZ,CAAL;GAAjD,CAAP;;;AAGF,SAASC,QAAT,CAAmBtR,CAAnB,EAAsB;MACdsK,IAAI,CAACtK,IAAI,EAAL,EAASzB,KAAT,CAAe,GAAf,CAAV;SACQ+L,EAAEpT,MAAF,GAAW,CAAZ,GAAiBoT,EAAE,CAAF,EAAKpT,MAAtB,GAA+B,CAAtC;;;AAGF,SAASqa,WAAT,CAAsBrX,CAAtB,EAAyBoL,CAAzB,EAA4B;SACnB7G,KAAKC,GAAL,CAAS4S,SAASpX,CAAT,CAAT,EAAsBoX,SAAShM,CAAT,CAAtB,CAAP;;;AAGF,SAAS3M,WAAT,CAAoB3G,GAApB,EAAyB;SAChBA,MAAM,EAAb;;;AAGF,SAAS2e,SAAT,CAAoBvI,EAApB,EAAwB;SACf,UAAClO,CAAD,EAAIoL,CAAJ,EAAU;QACTkM,IAAID,YAAYrX,CAAZ,EAAeoL,CAAf,CAAV;WACO8C,GAAGlO,CAAH,EAAMoL,CAAN,EAASmM,OAAT,CAAiBD,CAAjB,CAAP;GAFF;;;AAMF,SAASjB,WAAT,CAAsBD,IAAtB,EAA4B;SACnBA,gBAAgBrC,IAAhB,IAAwB,CAAC3W,MAAMgZ,KAAKoB,OAAL,EAAN,CAAhC;;;AAGF,AAAe,SAASC,WAAT,CAAsBpI,MAAtB,EAA8B;SACpC1K,MAAA,CAAS6H,OAAT,EAAkB,UAACsJ,IAAD,EAAOtc,IAAP;WAAgB6V,OAAOqI,cAAP,CAAsBle,IAAtB,EAA4Bsc,IAA5B,CAAhB;GAAlB,CAAP;;;AAGF2B,YAAYjL,OAAZ,GAAsBA,OAAtB;;ACnHA,IAAMmL,UAAU;QACR,cAAU1K,GAAV,EAAejL,SAAf,EAAuB0F,OAAvB,EAAgC;QAChCA,QAAQ5I,KAAZ,EAAmB;WACZA,KAAL,GAAa,EAAb;;SAEG4I,OAAL,GAAeA,OAAf;SACKuF,GAAL,GAAWA,GAAX;SACKjL,MAAL,GAAcA,SAAd;SACKqO,MAAL,GAAcuH,OAAO3K,GAAP,EAAYjL,SAAZ,CAAd;SACKwN,QAAL,GAAgBqI,QAAhB;;SAEK,IAAL,EAAWvI,MAAX;gBACQ,IAAR,EAAcA,MAAd;;WAEO,IAAP;GAdY;SAgBP,kBAAU5F,IAAV,EAAgBI,QAAhB,EAA0B;QACzBrC,SAASqQ,KAAA,CAAgBpO,IAAhB,EAAsBI,QAAtB,EAAgC,KAAKpC,OAArC,CAAf;WACO,KAAK2I,MAAL,CAAY3H,KAAZ,CAAkBjB,MAAlB,CAAP;GAlBY;UAoBN,gBAAUxD,GAAV,EAAeqB,GAAf,EAAoBc,IAApB,EAA0B;WACzBzB,MAAA,CAAS,EAAT,EAAa,KAAK+C,OAAlB,EAA2BtB,IAA3B,CAAP;QACMT,QAAQR,OAAA,CAAcG,GAAd,EAAmBc,IAAnB,CAAd;WACO,KAAKoJ,QAAL,CAAcC,eAAd,CAA8BxL,GAA9B,EAAmC0B,KAAnC,CAAP;GAvBY;;sEAyBE,iBAAgB+D,IAAhB,EAAsBpE,GAAtB,EAA2Bc,IAA3B;;;;;;;qBACI,KAAKsC,KAAL,CAAWgB,IAAX,CADJ;;;iBAAA;+CAEP,KAAKsC,MAAL,CAAY/H,GAAZ,EAAiBqB,GAAjB,EAAsBc,IAAtB,CAFO;;;;;;;;KAAhB;;;;;;;KAzBc;;uEA6BF,kBAAgB0D,QAAhB,EAA0BxE,GAA1B,EAA+Bc,IAA/B;;;;;;qBACHzB,MAAA,CAAS,EAAT,EAAayB,IAAb,CAAP;;qBACwB,KAAKkL,WAAL,CAAiBxH,QAAjB,EAA2B1D,KAAKmE,IAAhC,CAFd;;;uBAAA;gDAGH,KAAKyB,MAAL,CAAYC,SAAZ,EAAuB3G,GAAvB,EAA4Bc,IAA5B,CAHG;;;;;;;;KAAZ;;;;;;;KA7Bc;aAkCH,sBAAU/D,GAAV,EAAesD,KAAf,EAAsB;QACzB1B,MAAM,KAAKoM,MAAL,CAAY3B,UAAZ,CAAuBrM,IAAI+G,IAAJ,EAAvB,CAAZ;WACO,KAAKoG,QAAL,CAAc3D,SAAd,CAAwB5H,GAAxB,EAA6B0B,KAA7B,CAAP;GApCY;kBAsCE,wBAAUnM,IAAV,EAAgBwI,SAAhB,EAAwB;WAC/B,KAAKA,MAAL,CAAYgL,QAAZ,CAAqBxT,IAArB,EAA2BwI,SAA3B,CAAP;GAvCY;eAyCD,qBAAUxI,IAAV,EAAgByT,GAAhB,EAAqB;WACzB,KAAKA,GAAL,CAASD,QAAT,CAAkBxT,IAAlB,EAAwByT,GAAxB,CAAP;GA1CY;UA4CN,gBAAUnD,QAAV,EAAoBS,IAApB,EAA0B;;;WACzB,KAAK7C,OAAL,CAAa6C,IAAb,CAAkB4L,MAAlB,CAAyB5L,QAAQ,EAAjC,CAAP;WACO5F,IAAA,CAAO4F,IAAP,CAAP;QACM9E,QAAQ8E,KAAK3F,GAAL,CAAS;aAAQY,KAAKxL,OAAL,CAAauQ,IAAb,EAAmBT,QAAnB,CAAR;KAAT,CAAd;WACOiF,UAAUtJ,KAAV;yEAAiB,kBAAMD,OAAN;;;;;;;uBAEdyE,cAAczE,OAAd,CAFc;;;kDAGbA,OAHa;;;;;;6BAKlB/B,OAAF,GAAe,aAAEsU,IAAjB,2BAA2CjO,QAA3C,aAA2DS,IAA3D;;;;;;;;;OALG;;;;;QAAP;GAhDY;eA0DD,qBAAUT,QAAV,EAAoBS,IAApB,EAA0B;WAC9B,OAAOvD,cAAP,KAA0B,WAA1B,GACH,KAAKgR,mBAAL,CAAyBlO,QAAzB,EAAmCS,IAAnC,CADG,GAEH,KAAK0N,kBAAL,CAAwBnO,QAAxB,EAAkCS,IAAlC,CAFJ;GA3DY;;uEA+DO,kBAAgBT,QAAhB,EAA0BS,IAA1B;;;;;;;kBACf,CAAC/E,KAAK6E,OAAL,CAAaP,QAAb,CAAL,EAA6B;4BACf,KAAKpC,OAAL,CAAa2C,OAAzB;;;qBAEe,KAAK6N,MAAL,CAAYpO,QAAZ,EAAsBS,IAAtB,CAJE;;;sBAAA;gDAKZ,KAAK4N,YAAL,CAAkBrO,QAAlB,yDAA4B;;;;;;;+BACfD,cAAcC,QAAd,CADe;;;2BAAA;0DAE1B,OAAKpB,KAAL,CAAWrG,GAAX,EAAgByH,QAAhB,CAF0B;;;;;;;;eAA5B,GALY;;;;;;;;KAArB;;;;;;;KA/Dc;;uEAyEM,kBAAgBA,QAAhB,EAA0BS,IAA1B;;;;;;;;qBAAA;;kBAEd6N,MAAWtO,QAAX,CAAJ,EAA0B;0BACdA,QAAV;eADF,MAEO;oBACD,CAACO,QAAQP,QAAR,CAAL,EAAwB;8BACV,KAAKpC,OAAL,CAAa2C,OAAzB;;0BAEQrQ,QAAQuQ,QAAQ,KAAK7C,OAAL,CAAa6C,IAA7B,EAAmCT,QAAnC,CAAV;;gDAEK,KAAKqO,YAAL,CACLrO,QADK,yDAEL;;;;;uCAAY,MAAZ;;+BAA6BuO,MAAQC,OAAR,CAA7B;;;;uEAAiB5P,KAAjB;;;;;;;;eAFK,GAVW;;;;;;;;KAApB;;;;;;;KAzEc;;uEAwFA,kBAAgB5L,GAAhB,EAAqByb,MAArB;;;;;;0BAAA,GACS,KAAK7Q,OAAL,CAAa5I,KADtB;;oBAER0Z,gBAAgB,KAAK1Z,KAAL,CAAWhC,GAAX,CAFR;;;;;gDAGH,KAAKgC,KAAL,CAAWhC,GAAX,CAHG;;;;qBAKQyb,QALR;;;sBAAA;;kBAMRC,YAAJ,EAAkB;qBACX1Z,KAAL,CAAWhC,GAAX,IAAkB1C,QAAlB;;gDAEKA,QATK;;;;;;;;KAAd;;;;;;;KAxFc;WAmGL,iBAAUgM,IAAV,EAAgB;WAChBA,QAAQ,EAAf;QACMlP,OAAO,IAAb;WACO,UAAUuhB,QAAV,EAAoBnT,GAApB,EAAyB4I,EAAzB,EAA6B;aAC3B1O,MAAMN,OAAN,CAAc,KAAKqL,IAAnB,KAA4B5F,QAAA,CAAW,KAAK4F,IAAhB,CAAnC,EACE,+CADF;WAEKA,IAAL,GAAY,KAAKA,IAAjB;WACKmO,UAAL,CAAgBD,QAAhB,EAA0BnT,GAA1B,EAA+Bc,IAA/B,EAAqC9L,IAArC,CAA0C;eAAQ4T,GAAG,IAAH,EAASxE,IAAT,CAAR;OAA1C,EAAkEwE,EAAlE;KAJF;;CAtGJ;;AA+GA,SAASyK,oBAAT,CAA+Bve,QAA/B,EAAsC;MAChCoF,MAAMN,OAAN,CAAc9E,QAAd,CAAJ,EAA0B,OAAOA,QAAP;MACtBuK,QAAA,CAAWvK,QAAX,CAAJ,EAAuB,OAAO,CAACA,QAAD,CAAP;SAChB,EAAP;;;AAGF,AAAe,SAASkV,MAAT,CAAiB5H,OAAjB,EAA0B;YAC7B/C,MAAA,CAAS;UACX,CAAC,GAAD,CADW;WAEV,KAFU;aAGR,EAHQ;qBAIA,IAJA;oBAKD,KALC;mBAMF,KANE;sBAOC,KAPD;qBAQA,KARA;YAST,IATS;oBAUD,KAVC;sBAWC;GAXV,EAYP+C,OAZO,CAAV;UAaQ6C,IAAR,GAAeoO,qBAAqBjR,QAAQ6C,IAA7B,CAAf;;MAEMqI,SAAS/c,OAAO0B,MAAP,CAAcogB,OAAd,CAAf;SACO7I,IAAP,CAAYhB,KAAZ,EAAmBC,OAAOrG,OAAP,CAAnB,EAAoCA,OAApC;SACOkL,MAAP;;;AAGFtD,OAAOnE,QAAP,GAAkBA,QAAlB;AACAmE,OAAOvD,OAAP,GAAiBA,OAAjB;AACAuD,OAAOhE,OAAP,GAAiBA,OAAjB;AACAgE,OAAOzD,SAAP,GAAmBA,SAAnB;AACAyD,OAAOU,KAAP,GAAe;wBAAA;sCAAA;oCAAA;gCAAA;eAKAna,OAAO0B,MAAP,CAAc,IAAd,CALA;gBAMC1B,OAAO0B,MAAP,CAAc,IAAd,CAND;kBAOG1B,OAAO0B,MAAP,CAAc,IAAd,CAPH;kBAQG1B,OAAO0B,MAAP,CAAc,IAAd;CARlB;AAUA+X,OAAO5I,OAAP,GAAiBA,OAAjB;;;;"}
\ No newline at end of file
+{"version":3,"file":"liquid.common.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nclass LiquidError extends Error {\n constructor (message) {\n super(message)\n this.name = this.constructor.name\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error(message)).stack\n }\n }\n}\n\nclass TemplateError extends LiquidError {\n constructor (err, token) {\n super()\n this.input = token.input\n this.line = token.line\n this.file = token.file\n this.message = mkMessage(err.message, token)\n const context = mkContext(token.input, token.line)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n }\n}\n\nexport class TokenizationError extends TemplateError {\n constructor (message, token) {\n super({message: message}, token)\n }\n}\n\nexport class ParseError extends TemplateError {\n constructor (e, token) {\n super(e, token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderError extends TemplateError {\n constructor (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n super(e, tpl.token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderBreakError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nexport class AssertionError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","uniq","u","a","l","range","start","stop","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","LiquidError","message","captureStackTrace","stack","TemplateError","token","input","line","file","mkMessage","mkContext","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","_","map","align","join","n","blank","msg","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","factory","defaultOptions","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","greedy","inRaw","shouldTrimLeft","shouldTrimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","trimLeft","rLeft","replace","trimRight","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","root","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","tagImpl","impl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","strict_filters","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","anySeries","ret","item","idx","catch","mapSeries","liquid","Liquid","collection","renderer","renderTemplates","elseTemplates","offset","limit","reversed","forloop","finished","Types","registerTag","tagToken","remainTokens","p","parser","on","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","floor","col","row","engine","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","feb","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","jan1","Date","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","code","getTemplateFromFile","getTemplateFromUrl","lookup","respectCache","isValidUrl","httpGet","fullUrl","getter","cacheEnabled","filePath","renderFile","normalizeStringArray"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/liquid.js b/dist/liquid.js
index 59331c0d6..fce73d475 100644
--- a/dist/liquid.js
+++ b/dist/liquid.js
@@ -44,6 +44,36 @@
};
};
+ var classCallCheck = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ };
+
+ var inherits = function (subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ };
+
+ var possibleConstructorReturn = function (self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ };
+
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
@@ -770,6 +800,10 @@
});
}
+ function create(proto) {
+ return Object.create(proto);
+ }
+
function isNil(value) {
return value === null || value === undefined;
}
@@ -922,10 +956,6 @@
return literalLine.test(str);
}
- function isRange(str) {
- return rangeLine.test(str);
- }
-
function isVariable(str) {
return variableLine.test(str);
}
@@ -950,104 +980,117 @@
throw new TypeError('cannot parse \'' + str + '\' as literal');
}
- var lexical = ({
- quoted: quoted,
- quoteBalanced: quoteBalanced,
- integer: integer,
- number: number,
- bool: bool,
- identifier: identifier,
- subscript: subscript,
- literal: literal,
- variable: variable,
- rangeLimit: rangeLimit,
- range: range$1,
- rangeCapture: rangeCapture,
- value: value,
- hash: hash,
- hashCapture: hashCapture,
- tagLine: tagLine,
- literalLine: literalLine,
- variableLine: variableLine,
- numberLine: numberLine,
- boolLine: boolLine,
- quotedLine: quotedLine,
- rangeLine: rangeLine,
- integerLine: integerLine,
- valueDeclaration: valueDeclaration,
- valueList: valueList,
- filter: filter,
- filterCapture: filterCapture,
- filterLine: filterLine,
- operators: operators,
- isInteger: isInteger,
- isLiteral: isLiteral,
- isRange: isRange,
- isVariable: isVariable,
- matchValue: matchValue,
- parseLiteral: parseLiteral
- });
+ var LiquidError = function (_Error) {
+ inherits(LiquidError, _Error);
- function initError() {
- this.name = this.constructor.name;
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
+ function LiquidError(message) {
+ classCallCheck(this, LiquidError);
+
+ var _this = possibleConstructorReturn(this, (LiquidError.__proto__ || Object.getPrototypeOf(LiquidError)).call(this, message));
+
+ _this.name = _this.constructor.name;
+ if (typeof Error.captureStackTrace === 'function') {
+ Error.captureStackTrace(_this, _this.constructor);
+ } else {
+ _this.stack = new Error(message).stack;
+ }
+ return _this;
}
- }
- function initLiquidError(err, token) {
- initError.call(this);
+ return LiquidError;
+ }(Error);
- this.input = token.input;
- this.line = token.line;
- this.file = token.file;
+ var TemplateError = function (_LiquidError) {
+ inherits(TemplateError, _LiquidError);
- var context = mkContext(token.input, token.line);
- this.message = mkMessage(err.message, token);
- this.stack = context + '\n' + (this.stack || this.message) + (err.stack ? '\nFrom ' + err.stack : '');
- }
+ function TemplateError(err, token) {
+ classCallCheck(this, TemplateError);
- function TokenizationError(message, token) {
- initLiquidError.call(this, { message: message }, token);
- }
- TokenizationError.prototype = Object.create(Error.prototype);
- TokenizationError.prototype.constructor = TokenizationError;
+ var _this2 = possibleConstructorReturn(this, (TemplateError.__proto__ || Object.getPrototypeOf(TemplateError)).call(this));
- function ParseError(e, token) {
- assign(this, e);
- this.originalError = e;
-
- initLiquidError.call(this, e, token);
- }
- ParseError.prototype = Object.create(Error.prototype);
- ParseError.prototype.constructor = ParseError;
-
- function RenderError(e, tpl) {
- // return the original render error
- if (e instanceof RenderError) {
- return e;
+ _this2.input = token.input;
+ _this2.line = token.line;
+ _this2.file = token.file;
+ _this2.message = mkMessage(err.message, token);
+ var context = mkContext(token.input, token.line);
+ _this2.stack = context + '\n' + (_this2.stack || _this2.message) + (err.stack ? '\nFrom ' + err.stack : '');
+ return _this2;
}
- assign(this, e);
- this.originalError = e;
- initLiquidError.call(this, e, tpl.token);
- }
- RenderError.prototype = Object.create(Error.prototype);
- RenderError.prototype.constructor = RenderError;
+ return TemplateError;
+ }(LiquidError);
- function RenderBreakError(message) {
- initError.call(this);
- this.message = message + '';
- }
- RenderBreakError.prototype = Object.create(Error.prototype);
- RenderBreakError.prototype.constructor = RenderBreakError;
+ var TokenizationError = function (_TemplateError) {
+ inherits(TokenizationError, _TemplateError);
- function AssertionError(message) {
- initError.call(this);
- this.message = message + '';
- }
- AssertionError.prototype = Object.create(Error.prototype);
- AssertionError.prototype.constructor = AssertionError;
+ function TokenizationError(message, token) {
+ classCallCheck(this, TokenizationError);
+ return possibleConstructorReturn(this, (TokenizationError.__proto__ || Object.getPrototypeOf(TokenizationError)).call(this, { message: message }, token));
+ }
+
+ return TokenizationError;
+ }(TemplateError);
+
+ var ParseError = function (_TemplateError2) {
+ inherits(ParseError, _TemplateError2);
+
+ function ParseError(e, token) {
+ classCallCheck(this, ParseError);
+
+ var _this4 = possibleConstructorReturn(this, (ParseError.__proto__ || Object.getPrototypeOf(ParseError)).call(this, e, token));
+
+ assign(_this4, e);
+ _this4.originalError = e;
+ return _this4;
+ }
+
+ return ParseError;
+ }(TemplateError);
+
+ var RenderError = function (_TemplateError3) {
+ inherits(RenderError, _TemplateError3);
+
+ function RenderError(e, tpl) {
+ classCallCheck(this, RenderError);
+
+ // return the original render error
+ if (e instanceof RenderError) {
+ var _ret;
+
+ return _ret = e, possibleConstructorReturn(_this5, _ret);
+ }
+
+ var _this5 = possibleConstructorReturn(this, (RenderError.__proto__ || Object.getPrototypeOf(RenderError)).call(this, e, tpl.token));
+
+ assign(_this5, e);
+ _this5.originalError = e;
+ return _this5;
+ }
+
+ return RenderError;
+ }(TemplateError);
+
+ var RenderBreakError = function (_LiquidError2) {
+ inherits(RenderBreakError, _LiquidError2);
+
+ function RenderBreakError(message) {
+ classCallCheck(this, RenderBreakError);
+ return possibleConstructorReturn(this, (RenderBreakError.__proto__ || Object.getPrototypeOf(RenderBreakError)).call(this, message + ''));
+ }
+
+ return RenderBreakError;
+ }(LiquidError);
+
+ var AssertionError = function (_LiquidError3) {
+ inherits(AssertionError, _LiquidError3);
+
+ function AssertionError(message) {
+ classCallCheck(this, AssertionError);
+ return possibleConstructorReturn(this, (AssertionError.__proto__ || Object.getPrototypeOf(AssertionError)).call(this, message + ''));
+ }
+
+ return AssertionError;
+ }(LiquidError);
function mkContext(input, line) {
var lines = input.split('\n');
@@ -1089,8 +1132,8 @@
var Scope = {
getAll: function getAll() {
return this.contexts.reduce(function (ctx, val) {
- return Object.assign(ctx, val);
- }, Object.create(null));
+ return assign(ctx, val);
+ }, create(null));
},
get: function get(path) {
var _this = this;
@@ -1261,7 +1304,7 @@
blocks: {},
root: []
};
- var scope = Object.create(Scope);
+ var scope = create(Scope);
scope.opts = assign(defaultOptions, opts);
scope.contexts = [ctx || {}];
return scope;
@@ -1776,7 +1819,7 @@
};
function Render () {
- var instance = Object.create(render);
+ var instance = create(render);
return instance;
}
@@ -1837,7 +1880,7 @@
var tagImpl = tagImpls[this.name];
assert(tagImpl, 'tag ' + this.name + ' not found');
- this.tagImpl = Object.create(tagImpl);
+ this.tagImpl = create(tagImpl);
if (this.tagImpl.parse) {
this.tagImpl.parse(token, tokens);
}
@@ -1849,7 +1892,7 @@
}
function construct(token, tokens) {
- var instance = Object.create(_tagInstance);
+ var instance = create(_tagInstance);
instance.parse(token, tokens);
return instance;
}
@@ -1916,7 +1959,7 @@
};
function construct(str) {
- var instance = Object.create(_filterInstance);
+ var instance = create(_filterInstance);
return instance.parse(str);
}
@@ -2025,7 +2068,7 @@
}
function parseStream(tokens) {
- var s = Object.create(stream);
+ var s = create(stream);
return s.init(tokens);
}
@@ -2076,7 +2119,7 @@
function For (liquid, Liquid) {
var render = function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash$$1) {
var _this2 = this;
var collection, offset, limit, contexts, html, finished;
@@ -2105,8 +2148,8 @@
return _context2.abrupt('return', liquid.renderer.renderTemplates(this.elseTemplates, scope));
case 4:
- offset = hash.offset || 0;
- limit = hash.limit === undefined ? collection.length : hash.limit;
+ offset = hash$$1.offset || 0;
+ limit = hash$$1.limit === undefined ? collection.length : hash$$1.limit;
collection = collection.slice(offset, offset + limit);
@@ -2206,8 +2249,7 @@
}();
var RenderBreakError = Liquid.Types.RenderBreakError;
- var lexical = Liquid.lexical;
- var re = new RegExp('^(' + lexical.identifier.source + ')\\s+in\\s+' + ('(' + lexical.value.source + ')') + ('(?:\\s+' + lexical.hash.source + ')*') + '(?:\\s+(reversed))?' + ('(?:\\s+' + lexical.hash.source + ')*$'));
+ var re = new RegExp('^(' + identifier.source + ')\\s+in\\s+' + ('(' + value.source + ')') + ('(?:\\s+' + hash.source + ')*') + '(?:\\s+(reversed))?' + ('(?:\\s+' + hash.source + ')*$'));
liquid.registerTag('for', { parse: parse, render: render });
@@ -2241,8 +2283,7 @@
}
function Assign (liquid, Liquid) {
- var rIdentifier = Liquid.lexical.identifier;
- var re = new RegExp('(' + rIdentifier.source + ')\\s*=(.*)');
+ var re = new RegExp('(' + identifier.source + ')\\s*=(.*)');
var AssignScope = Liquid.Types.AssignScope;
@@ -2254,7 +2295,7 @@
this.value = match[2];
},
render: function render(scope) {
- var ctx = Object.create(AssignScope);
+ var ctx = create(AssignScope);
ctx[this.key] = liquid.evalValue(this.value, scope);
scope.push(ctx);
return Promise.resolve('');
@@ -2263,8 +2304,7 @@
}
function Capture (liquid, Liquid) {
- var rIdentifier = Liquid.lexical.identifier;
- var re = new RegExp('(' + rIdentifier.source + ')');
+ var re = new RegExp('(' + identifier.source + ')');
var CaptureScope = Liquid.Types.CaptureScope;
@@ -2289,7 +2329,7 @@
stream.start();
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var html, ctx;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2300,7 +2340,7 @@
case 2:
html = _context.sent;
- ctx = Object.create(CaptureScope);
+ ctx = create(CaptureScope);
ctx[this.variable] = html;
scope.push(ctx);
@@ -2382,8 +2422,7 @@
var staticFileRE = /[^\s,]+/;
function Include (liquid, Liquid) {
- var lexical = Liquid.lexical;
- var withRE = new RegExp('with\\s+(' + lexical.value.source + ')');
+ var withRE = new RegExp('with\\s+(' + value.source + ')');
liquid.registerTag('include', {
parse: function parse(token) {
@@ -2392,7 +2431,7 @@
this.staticValue = match[0];
}
- match = lexical.value.exec(token.args);
+ match = value.exec(token.args);
if (match) {
this.value = match[0];
}
@@ -2403,7 +2442,7 @@
}
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var filepath, template, originBlocks, originBlockMode, templates, html;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2416,7 +2455,7 @@
break;
}
- if (!lexical.quotedLine.exec(this.value)) {
+ if (!quotedLine.exec(this.value)) {
_context.next = 9;
break;
}
@@ -2450,7 +2489,7 @@
scope.opts.blocks = {};
scope.opts.blockMode = 'output';
if (this.with) {
- hash[filepath] = Liquid.evalValue(this.with, scope);
+ hash$$1[filepath] = Liquid.evalValue(this.with, scope);
}
_context.next = 21;
return liquid.getTemplate(filepath, scope.opts.root);
@@ -2458,14 +2497,14 @@
case 21:
templates = _context.sent;
- scope.push(hash);
+ scope.push(hash$$1);
_context.next = 25;
return liquid.renderer.renderTemplates(templates, scope);
case 25:
html = _context.sent;
- scope.pop(hash);
+ scope.pop(hash$$1);
scope.opts.blocks = originBlocks;
scope.opts.blockMode = originBlockMode;
return _context.abrupt('return', html);
@@ -2488,7 +2527,6 @@
}
function Decrement (liquid, Liquid) {
- var lexical = Liquid.lexical;
var _Liquid$Types = Liquid.Types,
CaptureScope = _Liquid$Types.CaptureScope,
AssignScope = _Liquid$Types.AssignScope,
@@ -2497,16 +2535,17 @@
liquid.registerTag('decrement', {
parse: function parse(token) {
- var match = token.args.match(lexical.identifier);
+ var match = token.args.match(identifier);
assert(match, 'illegal identifier ' + token.args);
this.variable = match[0];
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var context = scope.findContextFor(this.variable, function (ctx) {
- return Object.getPrototypeOf(ctx) !== CaptureScope && Object.getPrototypeOf(ctx) !== AssignScope;
+ var proto = Object.getPrototypeOf(ctx);
+ return proto !== CaptureScope && proto !== AssignScope;
});
if (!context) {
- context = Object.create(DecrementScope);
+ context = create(DecrementScope);
scope.unshift(context);
}
if (typeof context[this.variable] !== 'number') {
@@ -2518,9 +2557,8 @@
}
function Cycle (liquid, Liquid) {
- var rValue = Liquid.lexical.value;
- var groupRE = new RegExp('^(?:(' + rValue.source + ')\\s*:\\s*)?(.*)$');
- var candidatesRE = new RegExp(rValue.source, 'g');
+ var groupRE = new RegExp('^(?:(' + value.source + ')\\s*:\\s*)?(.*)$');
+ var candidatesRE = new RegExp(value.source, 'g');
liquid.registerTag('cycle', {
@@ -2539,7 +2577,7 @@
assert(this.candidates.length, 'empty candidates: ' + tagToken.raw);
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var group = Liquid.evalValue(this.group, scope);
var fingerprint = 'cycle:' + group + ':' + this.candidates.join(',');
@@ -2627,7 +2665,6 @@
}
function Increment (liquid, Liquid) {
- var lexical = Liquid.lexical;
var _Liquid$Types = Liquid.Types,
CaptureScope = _Liquid$Types.CaptureScope,
AssignScope = _Liquid$Types.AssignScope,
@@ -2636,16 +2673,17 @@
liquid.registerTag('increment', {
parse: function parse(token) {
- var match = token.args.match(lexical.identifier);
+ var match = token.args.match(identifier);
assert(match, 'illegal identifier ' + token.args);
this.variable = match[0];
},
- render: function render(scope, hash) {
+ render: function render(scope, hash$$1) {
var context = scope.findContextFor(this.variable, function (ctx) {
- return Object.getPrototypeOf(ctx) !== CaptureScope && Object.getPrototypeOf(ctx) !== AssignScope;
+ var proto = Object.getPrototypeOf(ctx);
+ return proto !== CaptureScope && proto !== AssignScope;
});
if (!context) {
- context = Object.create(IncrementScope);
+ context = create(IncrementScope);
scope.unshift(context);
}
if (typeof context[this.variable] !== 'number') {
@@ -2665,7 +2703,6 @@
*/
function Layout (liquid, Liquid) {
- var rValue = Liquid.lexical.value;
var staticFileRE = /\S+/;
liquid.registerTag('layout', {
@@ -2675,7 +2712,7 @@
this.staticLayout = match[0];
}
- match = rValue.exec(token.args);
+ match = value.exec(token.args);
if (match) {
this.layout = match[0];
}
@@ -2683,7 +2720,7 @@
this.tpls = liquid.parser.parse(remainTokens);
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(scope, hash$$1) {
var layout, html, templates, partial;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
@@ -2710,7 +2747,7 @@
case 9:
templates = _context.sent;
- scope.push(hash);
+ scope.push(hash$$1);
scope.opts.blockMode = 'output';
_context.next = 14;
return liquid.renderer.renderTemplates(templates, scope);
@@ -2718,7 +2755,7 @@
case 14:
partial = _context.sent;
- scope.pop(hash);
+ scope.pop(hash$$1);
return _context.abrupt('return', partial);
case 17:
@@ -2834,8 +2871,7 @@
}
function Tablerow (liquid, Liquid) {
- var lexical = Liquid.lexical;
- var re = new RegExp('^(' + lexical.identifier.source + ')\\s+in\\s+' + ('(' + lexical.value.source + ')') + ('(?:\\s+' + lexical.hash.source + ')*$'));
+ var re = new RegExp('^(' + identifier.source + ')\\s+in\\s+' + ('(' + value.source + ')') + ('(?:\\s+' + hash.source + ')*$'));
liquid.registerTag('tablerow', {
@@ -2864,7 +2900,7 @@
},
render: function () {
- var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash) {
+ var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash$$1) {
var _this2 = this;
var collection, offset, limit, cols, contexts, row, html;
@@ -2873,12 +2909,12 @@
switch (_context2.prev = _context2.next) {
case 0:
collection = Liquid.evalExp(this.collection, scope) || [];
- offset = hash.offset || 0;
- limit = hash.limit === undefined ? collection.length : hash.limit;
+ offset = hash$$1.offset || 0;
+ limit = hash$$1.limit === undefined ? collection.length : hash$$1.limit;
collection = collection.slice(offset, offset + limit);
- cols = hash.cols || collection.length;
+ cols = hash$$1.cols || collection.length;
contexts = collection.map(function (item, i) {
var ctx = {};
ctx[_this2.variable] = item;
@@ -3001,17 +3037,22 @@
}
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
- var monthNamesShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
- var dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+ var monthNamesShort = monthNames.map(abbr);
+ var dayNamesShort = dayNames.map(abbr);
var suffixes = {
1: 'st',
2: 'nd',
3: 'rd',
'default': 'th'
+ };
- // prototype extensions
- };var _date = {
+ function abbr(str) {
+ return str.slice(0, 3);
+ }
+
+ // prototype extensions
+ var _date = {
daysInMonth: function daysInMonth(d) {
var feb = _date.isLeapYear(d) ? 29 : 28;
return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
@@ -3399,14 +3440,14 @@
registerAll.filters = filters;
var _engine = {
- init: function init(tag, filter$$1, options) {
+ init: function init(tag, filter, options) {
if (options.cache) {
this.cache = {};
}
this.options = options;
this.tag = tag;
- this.filter = filter$$1;
- this.parser = Parser(tag, filter$$1);
+ this.filter = filter;
+ this.parser = Parser(tag, filter);
this.renderer = Render();
tags(this, Liquid);
@@ -3484,8 +3525,8 @@
var tpl = this.parser.parseValue(str.trim());
return this.renderer.evalValue(tpl, scope);
},
- registerFilter: function registerFilter(name, filter$$1) {
- return this.filter.register(name, filter$$1);
+ registerFilter: function registerFilter(name, filter) {
+ return this.filter.register(name, filter);
},
registerTag: function registerTag(name, tag) {
return this.tag.register(name, tag);
@@ -3641,7 +3682,7 @@
}(),
respectCache: function () {
var _ref8 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(key, getter) {
- var cacheEnabled, value$$1;
+ var cacheEnabled, value;
return regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
@@ -3660,12 +3701,12 @@
return getter();
case 5:
- value$$1 = _context8.sent;
+ value = _context8.sent;
if (cacheEnabled) {
- this.cache[key] = value$$1;
+ this.cache[key] = value;
}
- return _context8.abrupt('return', value$$1);
+ return _context8.abrupt('return', value);
case 8:
case 'end':
@@ -3694,9 +3735,9 @@
}
};
- function normalizeStringArray(value$$1) {
- if (Array.isArray(value$$1)) return value$$1;
- if (isString(value$$1)) return [value$$1];
+ function normalizeStringArray(value) {
+ if (Array.isArray(value)) return value;
+ if (isString(value)) return [value];
return [];
}
@@ -3716,7 +3757,7 @@
}, options);
options.root = normalizeStringArray(options.root);
- var engine = Object.create(_engine);
+ var engine = create(_engine);
engine.init(Tag(), Filter(options), options);
return engine;
}
@@ -3730,12 +3771,11 @@
TokenizationError: TokenizationError,
RenderBreakError: RenderBreakError,
AssertionError: AssertionError,
- AssignScope: Object.create(null),
- CaptureScope: Object.create(null),
- IncrementScope: Object.create(null),
- DecrementScope: Object.create(null)
+ AssignScope: {},
+ CaptureScope: {},
+ IncrementScope: {},
+ DecrementScope: {}
};
- Liquid.lexical = lexical;
return Liquid;
diff --git a/dist/liquid.js.map b/dist/liquid.js.map
index 8c5096a42..93663e98e 100644
--- a/dist/liquid.js.map
+++ b/dist/liquid.js.map
@@ -1 +1 @@
-{"version":3,"file":"liquid.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = Object.prototype.toString.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = Object.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = Object.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = Object.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = Object.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = Object.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => Object.assign(ctx, val), Object.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = Object.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = Object.create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = Object.create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = Object.create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = Object.create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = Object.create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = Object.create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = Object.create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const withRE = new RegExp(`with\\\\s+(${lexical.value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = lexical.value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (lexical.quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst monthNamesShort = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',\n 'Nov', 'Dec'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport * as lexical from './lexical.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = Object.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: Object.create(null),\n CaptureScope: Object.create(null),\n IncrementScope: Object.create(null),\n DecrementScope: Object.create(null)\n}\nLiquid.lexical = lexical\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","uniq","u","a","l","range","start","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isRange","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","ParseError","e","_","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","align","join","n","blank","msg","predicate","Scope","getAll","contexts","reduce","ctx","val","get","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","set","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","assert","matchRightBracket","lexical","factory","defaultOptions","dynamicPartials","strict_filters","blocks","root","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","replace","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","readFileAsync","filepath","fs","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","renderTemplates","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","impl","tagImpl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","init","handlers","on","cb","trigger","event","h","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","anySeries","ret","item","idx","catch","mapSeries","liquid","Liquid","collection","renderer","elseTemplates","offset","limit","reversed","forloop","first","index0","rindex","rindex0","finished","Types","registerTag","tagToken","remainTokens","p","parser","rIdentifier","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","parseAndRender","originBlocks","originBlockMode","blockMode","getTemplate","DecrementScope","rValue","groupRE","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","row","floor","col","engine","Assign","Capture","Case","Comment","Cycle","Decrement","For","If","Include","Increment","Layout","Raw","Tablerow","Unless","monthNames","monthNamesShort","dayNames","dayNamesShort","suffixes","_date","daysInMonth","d","feb","isLeapYear","getDayOfYear","num","getMonth","getDate","getWeekOfYear","startDay","now","getDay","jan1","Date","getFullYear","_number","pad","year","getSuffix","parseInt","century","substring","size","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","U","w","W","toLocaleDateString","X","toLocaleTimeString","y","Y","z","tz","getTimezoneOffset","abs","N","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","renderFile","lookup","code","getTemplateFromFile","getTemplateFromUrl","respectCache","fullUrl","isValidUrl","httpGet","getter","cacheEnabled","express","filePath","normalizeStringArray"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"liquid.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nclass LiquidError extends Error {\n constructor (message) {\n super(message)\n this.name = this.constructor.name\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error(message)).stack\n }\n }\n}\n\nclass TemplateError extends LiquidError {\n constructor (err, token) {\n super()\n this.input = token.input\n this.line = token.line\n this.file = token.file\n this.message = mkMessage(err.message, token)\n const context = mkContext(token.input, token.line)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n }\n}\n\nexport class TokenizationError extends TemplateError {\n constructor (message, token) {\n super({message: message}, token)\n }\n}\n\nexport class ParseError extends TemplateError {\n constructor (e, token) {\n super(e, token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderError extends TemplateError {\n constructor (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n super(e, tpl.token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderBreakError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nexport class AssertionError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","uniq","u","a","l","range","start","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","LiquidError","message","captureStackTrace","stack","TemplateError","token","input","line","file","mkMessage","mkContext","TokenizationError","ParseError","e","_","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","align","join","n","blank","msg","predicate","Scope","getAll","contexts","reduce","ctx","val","get","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","set","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","assert","matchRightBracket","lexical","factory","defaultOptions","dynamicPartials","strict_filters","blocks","root","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","replace","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","readFileAsync","filepath","fs","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","renderTemplates","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","impl","tagImpl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","init","handlers","on","cb","trigger","event","h","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","anySeries","ret","item","idx","catch","mapSeries","liquid","Liquid","collection","renderer","elseTemplates","offset","limit","reversed","forloop","first","index0","rindex","rindex0","finished","Types","registerTag","tagToken","remainTokens","p","parser","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","parseAndRender","originBlocks","originBlockMode","blockMode","getTemplate","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","row","floor","col","engine","Assign","Capture","Case","Comment","Cycle","Decrement","For","If","Include","Increment","Layout","Raw","Tablerow","Unless","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","daysInMonth","d","feb","isLeapYear","getDayOfYear","num","getMonth","getDate","getWeekOfYear","startDay","now","getDay","jan1","Date","getFullYear","_number","pad","year","getSuffix","parseInt","century","substring","size","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","U","w","W","toLocaleDateString","X","toLocaleTimeString","y","Y","z","tz","getTimezoneOffset","abs","N","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","renderFile","lookup","code","getTemplateFromFile","getTemplateFromUrl","respectCache","fullUrl","isValidUrl","httpGet","getter","cacheEnabled","express","filePath","normalizeStringArray"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/liquid.min.js b/dist/liquid.min.js
index be1ba50c1..c2f6661c5 100644
--- a/dist/liquid.min.js
+++ b/dist/liquid.min.js
@@ -1,2 +1,2 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Liquid=t()}(this,function(){"use strict";var F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce=function(e){return function(){var u=e.apply(this,arguments);return new Promise(function(a,o){return function t(e,r){try{var n=u[e](r),i=n.value}catch(e){return void o(e)}if(!n.done)return Promise.resolve(i).then(function(e){t("next",e)},function(e){t("throw",e)});a(i)}("next")})}};!function(e){var s,t=Object.prototype,c=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",n=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag",o="object"===("undefined"==typeof module?"undefined":F(module)),u=e.regeneratorRuntime;if(u)o&&(module.exports=u);else{(u=e.regeneratorRuntime=o?module.exports:{}).wrap=w;var f="suspendedStart",p="suspendedYield",h="executing",g="completed",d={},l={};l[i]=function(){return this};var v=Object.getPrototypeOf,m=v&&v(v(_([])));m&&m!==t&&c.call(m,i)&&(l=m);var y=E.prototype=b.prototype=Object.create(l);k.prototype=y.constructor=E,E.constructor=k,E[a]=k.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===k||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,E):(e.__proto__=E,a in e||(e[a]="GeneratorFunction")),e.prototype=Object.create(y),e},u.awrap=function(e){return{__await:e}},T(R.prototype),R.prototype[n]=function(){return this},u.AsyncIterator=R,u.async=function(e,t,r,n){var i=new R(w(e,t,r,n));return u.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},T(y),y[a]="Generator",y[i]=function(){return this},y.toString=function(){return"[object Generator]"},u.keys=function(r){var n=[];for(var e in r)n.push(e);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},u.values=_,j.prototype={constructor:j,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=s,this.done=!1,this.delegate=null,this.method="next",this.arg=s,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&c.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=s)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return a.type="throw",a.arg=r,n.next=e,t&&(n.method="next",n.arg=s),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],a=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var o=c.call(i,"catchLoc"),u=c.call(i,"finallyLoc");if(o&&u){if(this.prev=|<|>|\s+contains\s+/];function C(e){return O.test(e)}function D(e){return k.test(e)}function I(e){return E.test(e)}function V(e){return v.exec(e)}function N(e){var t=e.match(T);if(t)return Number(e);if(t=e.match(R))return"true"===e.toLowerCase();if(t=e.match(S))return e.slice(1,-1);throw new TypeError("cannot parse '"+e+"' as literal")}var $={quoted:e,quoteBalanced:p,integer:r,number:o,bool:u,identifier:s,subscript:c,literal:l,variable:f,rangeLimit:h,range:g,rangeCapture:d,value:v,hash:w,hashCapture:x,tagLine:b,literalLine:k,variableLine:E,numberLine:T,boolLine:R,quotedLine:S,rangeLine:L,integerLine:O,valueDeclaration:j,valueList:_,filter:M,filterCapture:A,filterLine:P,operators:q,isInteger:C,isLiteral:D,isRange:function(e){return L.test(e)},isVariable:I,matchValue:V,parseLiteral:N};function Y(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function H(e,t){Y.call(this),this.input=t.input,this.line=t.line,this.file=t.file;var r,i,a,n,o,u=(r=t.input,i=t.line,a=r.split("\n"),n=Math.max(i-2,1),o=Math.min(i+3,a.length),function(e,t,r){1===arguments.length&&(t=e,e=0),r=r||1;for(var n=[],i=e;i> ":" ",(t=e,r=o,n=t+"",Array((r+"").length-n.length).join(" ")+n),"| ",a[e-1]].join("");var t,r,n}).join("\n"));this.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t),this.stack=u+"\n"+(this.stack||this.message)+(e.stack?"\nFrom "+e.stack:"")}function G(e,t){H.call(this,{message:e},t)}function J(e,t){m(this,e),this.originalError=e,H.call(this,e,t)}function z(e,t){if(e instanceof z)return e;m(this,e),this.originalError=e,H.call(this,e,t.token)}function B(e){Y.call(this),this.message=e+""}function U(e){Y.call(this),this.message=e+""}function pe(e,t){if(!e)throw new U(t=t||"expect "+e+" to be true")}(G.prototype=Object.create(Error.prototype)).constructor=G,(J.prototype=Object.create(Error.prototype)).constructor=J,(z.prototype=Object.create(Error.prototype)).constructor=z,(B.prototype=Object.create(Error.prototype)).constructor=B,(U.prototype=Object.create(Error.prototype)).constructor=U;var W={getAll:function(){return this.contexts.reduce(function(e,t){return Object.assign(e,t)},Object.create(null))},get:function(e){var r=this,t=this.propertyAccessSeq(e),n=this.findContextFor(t[0])||y(this.contexts);return t.reduce(function(e,t){return r.readProperty(e,t)},n)},set:function(e,r){var n=this.propertyAccessSeq(e),i=this.findContextFor(n[0])||y(this.contexts);n.some(function(e,t){return!fe(i)||(t===n.length-1?(i[e]=r,!0):(void 0===i[e]&&(i[e]={}),void(i=i[e])))})},unshift:function(e){return this.contexts.unshift(e)},push:function(e){return this.contexts.push(e)},pop:function(t){if(!arguments.length)return this.contexts.pop();var e=this.contexts.findIndex(function(e){return e===t});if(-1===e)throw new TypeError("scope not found, cannot pop");return this.contexts.splice(e,1)[0]},findContextFor:function(e,t){t=t||function(){return!0};for(var r=this.contexts.length-1;0<=r;r--){var n=this.contexts[r];if(t(n)&&e in n)return n}return null},readProperty:function(e,t){var r=void 0;if(n(e)?r=void 0:("function"==typeof e.to_liquid?e=e.to_liquid():"function"==typeof e.toLiquid&&(e=e.toLiquid()),r="size"===t&&(a(e)||le(e))?e.length:e[t]),n(r)&&this.opts.strict_variables)throw new TypeError("undefined variable: "+t);return r},propertyAccessSeq:function(e){e=String(e);for(var t=[],r="",n=void 0,i=0;ih&&g.push(v(h,t.index)),g.push(t[1]?d(t[1],t[2].trim(),t.index):(u=t[3],s=t[4].trim(),c=t.index,{type:"value",line:p.get(c),trim_left:"{{-"===u.slice(0,3),trim_right:"-}}"===u.slice(-3),raw:u,value:s,input:a,file:o}));return a.length>h&&g.push(v(h,a.length)),function(o,u){u=m({greedy:!0},u);var s=!1;o.forEach(function(e,t){var r,n,i,a;i=e,a=u,!s&&("tag"===i.type?i.trim_left||a.trim_tag_left:"value"===i.type?i.trim_left||a.trim_value_left:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(o[t-1],u.greedy),"tag"===e.type&&"raw"===e.name&&(s=!0),"tag"===e.type&&"endraw"===e.name&&(s=!1),r=e,n=u,!s&&("tag"===r.type?r.trim_right||n.trim_tag_right:"value"===r.type?r.trim_right||n.trim_value_right:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(o[t+1],u.greedy)})}(g,e),g;function d(e,t,r){var n=t.match(b),i={type:"tag",indent:f,line:p.get(r),trim_left:"{%-"===e.slice(0,3),trim_right:"-%}"===e.slice(-3),raw:e,value:t,input:a,file:o};if(!n)throw new G("illegal tag syntax",i);return i.name=n[1],i.args=n[2],i}function v(e,t){var r=a.slice(e,t);return f=y(r.split("\n")).length,{type:"html",raw:r,value:r}}}var Z={};function ee(e){return new Promise(function(r,n){Z.readFile(e,"utf8",function(e,t){e?n(e):r(t)})})}function te(e){return new Promise(function(r,n){Z.stat(e,function(e,t){return e?n(e):r(t)})})}var re={},ne=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,ie=/^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/;function ae(e,t){return a(e)&&(e=e[0]),e&&"/"!==y(e)&&(e+="/"),function(e,t){var r=document.createElement("base");r.href=e;var n=document.getElementsByTagName("head")[0];n.insertBefore(r,n.firstChild);var i=document.createElement("a");i.href=t;var a=i.href;return r.href=a,n.removeChild(r),a}(e,t)}var oe,ue=(oe=ge,{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&t=":function(e,t){return null!==e&&null!==t&&t<=e},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&"function"==typeof e.indexOf&&-1"),c+=''),c+='| ',i.push(t),e.next=7,re.renderer.renderTemplates(l.templates,i);case 7:return c+=e.sent,c+=" | ",i.pop(t),e.abrupt("return",c);case 11:case"end":return e.stop()}},e,l)}));return function(e,t){return r.apply(this,arguments)}}());case 10:return 0"),e.abrupt("return",c);case 12:case"end":return e.stop()}},e,this)})),function(e,t){return ie.apply(this,arguments)})}),se=t,(ue=e).registerTag("unless",{parse:function(t,e){var r=this;this.templates=[],this.elseTemplates=[];var n=void 0,i=ue.parser.parseStream(e).on("start",function(e){n=r.templates,r.cond=t.args}).on("tag:else",function(){return n=r.elseTemplates}).on("tag:endunless",function(e){return i.stop()}).on("template",function(e){return n.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(e,t){var r=se.evalExp(this.cond,e);return se.isFalsy(r)?ue.renderer.renderTemplates(this.templates,e):ue.renderer.renderTemplates(this.elseTemplates,e)}})}var Re=["January","February","March","April","May","June","July","August","September","October","November","December"],Se=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Le=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Oe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],je={1:"st",2:"nd",3:"rd",default:"th"},_e={daysInMonth:function(e){return[31,_e.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},Pe={"&":"&","<":"<",">":">",""":'"',"'":"'"},qe={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return Ie(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r,n=e;return"now"===e?n=new Date:le(e)&&(n=new Date(e)),(r=n)instanceof Date&&!isNaN(r.getTime())?function(e,t){for(var r="",n=t;;){var i=/%./g,a=i.exec(n);if(!a)return r+n;r+=n.slice(0,i.lastIndex-2),n=n.slice(i.lastIndex);var o=a[0].charAt(1),u=Fe[o];r+=u?u.call(this,e):"%"+o}}(n,t):e},default:function(e,t){return ge(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:Ce,escape_once:function(e){return Ce(Ie(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return Pe[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return y(e)},lstrip:function(e){return Ie(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:Ve(function(e,t){return e-t}),modulo:Ve(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:Ve(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return Ie(e).split(t).join(r)},replace_first:function(e,t,r){return Ie(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return Ie(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return Ie(e).split(t)},strip:function(e){return Ie(e).trim()},strip_html:function(e){return Ie(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return Ie(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return r=void 0===r?"...":r,t=t||16,(e=Ie(e)).length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),i=n.slice(0,t).join(" ");return n.length>t&&(i+=r),i},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0)})},upcase:function(e){return Ie(e).toUpperCase()},url_encode:encodeURIComponent};function Ce(e){return Ie(e).replace(/&|<|>|"|'/g,function(e){return Ae[e]})}function De(e){var t=(e+"").split(".");return 1=|<|>|\s+contains\s+/];var A=function(e){function r(e){f(this,r);var t=l(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e));return t.name=t.constructor.name,"function"==typeof Error.captureStackTrace?Error.captureStackTrace(t,t.constructor):t.stack=new Error(e).stack,t}return i(r,e),r}(Error),C=function(e){function c(e,t){f(this,c);var r=l(this,(c.__proto__||Object.getPrototypeOf(c)).call(this));r.input=t.input,r.line=t.line,r.file=t.file,r.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t);var n,i,o,a,u,s=(n=t.input,i=t.line,o=n.split("\n"),a=Math.max(i-2,1),u=Math.min(i+3,o.length),function(e,t,r){1===arguments.length&&(t=e,e=0),r=r||1;for(var n=[],i=e;i> ":" ",(t=e,r=u,n=t+"",Array((r+"").length-n.length).join(" ")+n),"| ",o[e-1]].join("");var t,r,n}).join("\n"));return r.stack=s+"\n"+(r.stack||r.message)+(e.stack?"\nFrom "+e.stack:""),r}return i(c,A),c}(),D=function(e){function r(e,t){return f(this,r),l(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,{message:e},t))}return i(r,C),r}(),I=function(e){function n(e,t){f(this,n);var r=l(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return m(r,e),r.originalError=e,r}return i(n,C),n}(),q=function(e){function n(e,t){if(f(this,n),e instanceof n)return l(r,e);var r=l(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t.token));return m(r,e),r.originalError=e,r}return i(n,C),n}(),V=function(e){function t(e){return f(this,t),l(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e+""))}return i(t,A),t}(),$=function(e){function t(e){return f(this,t),l(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e+""))}return i(t,A),t}();function ae(e,t){if(!e)throw new $(t=t||"expect "+e+" to be true")}var N={getAll:function(){return this.contexts.reduce(function(e,t){return m(e,t)},ee(null))},get:function(e){var r=this,t=this.propertyAccessSeq(e),n=this.findContextFor(t[0])||y(this.contexts);return t.reduce(function(e,t){return r.readProperty(e,t)},n)},set:function(e,r){var n=this.propertyAccessSeq(e),i=this.findContextFor(n[0])||y(this.contexts);n.some(function(e,t){return!te(i)||(t===n.length-1?(i[e]=r,!0):(void 0===i[e]&&(i[e]={}),void(i=i[e])))})},unshift:function(e){return this.contexts.unshift(e)},push:function(e){return this.contexts.push(e)},pop:function(t){if(!arguments.length)return this.contexts.pop();var e=this.contexts.findIndex(function(e){return e===t});if(-1===e)throw new TypeError("scope not found, cannot pop");return this.contexts.splice(e,1)[0]},findContextFor:function(e,t){t=t||function(){return!0};for(var r=this.contexts.length-1;0<=r;r--){var n=this.contexts[r];if(t(n)&&e in n)return n}return null},readProperty:function(e,t){var r=void 0;if(n(e)?r=void 0:("function"==typeof e.to_liquid?e=e.to_liquid():"function"==typeof e.toLiquid&&(e=e.toLiquid()),r="size"===t&&(a(e)||Z(e))?e.length:e[t]),n(r)&&this.opts.strict_variables)throw new TypeError("undefined variable: "+t);return r},propertyAccessSeq:function(e){e=String(e);for(var t,r=[],n="",i=void 0,o=0;oh&&g.push(v(h,t.index)),g.push(t[1]?d(t[1],t[2].trim(),t.index):(u=t[3],s=t[4].trim(),c=t.index,{type:"value",line:p.get(c),trim_left:"{{-"===u.slice(0,3),trim_right:"-}}"===u.slice(-3),raw:u,value:s,input:o,file:a}));return o.length>h&&g.push(v(h,o.length)),function(a,u){u=m({greedy:!0},u);var s=!1;a.forEach(function(e,t){var r,n,i,o;i=e,o=u,!s&&("tag"===i.type?i.trim_left||o.trim_tag_left:"value"===i.type?i.trim_left||o.trim_value_left:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(a[t-1],u.greedy),"tag"===e.type&&"raw"===e.name&&(s=!0),"tag"===e.type&&"endraw"===e.name&&(s=!1),r=e,n=u,!s&&("tag"===r.type?r.trim_right||n.trim_tag_right:"value"===r.type?r.trim_right||n.trim_value_right:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(a[t+1],u.greedy)})}(g,e),g;function d(e,t,r){var n=t.match(x),i={type:"tag",indent:l,line:p.get(r),trim_left:"{%-"===e.slice(0,3),trim_right:"-%}"===e.slice(-3),raw:e,value:t,input:o,file:a};if(!n)throw new D("illegal tag syntax",i);return i.name=n[1],i.args=n[2],i}function v(e,t){var r=o.slice(e,t);return l=y(r.split("\n")).length,{type:"html",raw:r,value:r}}}var z={};function U(e){return new Promise(function(r,n){z.readFile(e,"utf8",function(e,t){e?n(e):r(t)})})}function B(e){return new Promise(function(r,n){z.stat(e,function(e,t){return e?n(e):r(t)})})}var W={},J=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,X=/^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/;function K(e,t){return a(e)&&(e=e[0]),e&&"/"!==y(e)&&(e+="/"),function(e,t){var r=document.createElement("base");r.href=e;var n=document.getElementsByTagName("head")[0];n.insertBefore(r,n.firstChild);var i=document.createElement("a");i.href=t;var o=i.href;return r.href=o,n.removeChild(r),o}(e,t)}var ue,se=(ue=le,{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&t=":function(e,t){return null!==e&&null!==t&&t<=e},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&"function"==typeof e.indexOf&&-1"),c+=''),c+='| ',i.push(t),e.next=7,U.renderer.renderTemplates(f.templates,i);case 7:return c+=e.sent,c+=" | ",i.pop(t),e.abrupt("return",c);case 11:case"end":return e.stop()}},e,f)}));return function(e,t){return r.apply(this,arguments)}}());case 10:return 0"),e.abrupt("return",c);case 12:case"end":return e.stop()}},e,this)})),function(e,t){return W.apply(this,arguments)})}),K=t,(X=e).registerTag("unless",{parse:function(t,e){var r=this;this.templates=[],this.elseTemplates=[];var n=void 0,i=X.parser.parseStream(e).on("start",function(e){n=r.templates,r.cond=t.args}).on("tag:else",function(){return n=r.elseTemplates}).on("tag:endunless",function(e){return i.stop()}).on("template",function(e){return n.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(e,t){var r=K.evalExp(this.cond,e);return K.isFalsy(r)?X.renderer.renderTemplates(this.templates,e):X.renderer.renderTemplates(this.elseTemplates,e)}})}var Ee=["January","February","March","April","May","June","July","August","September","October","November","December"],Te=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_e=Ee.map(Oe),Re=Te.map(Oe),Se={1:"st",2:"nd",3:"rd",default:"th"};function Oe(e){return e.slice(0,3)}var Le={daysInMonth:function(e){return[31,Le.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},Fe={"&":"&","<":"<",">":">",""":'"',"'":"'"},Ae={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return Ie(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r,n=e;return"now"===e?n=new Date:Z(e)&&(n=new Date(e)),(r=n)instanceof Date&&!isNaN(r.getTime())?function(e,t){for(var r="",n=t;;){var i=/%./g,o=i.exec(n);if(!o)return r+n;r+=n.slice(0,i.lastIndex-2),n=n.slice(i.lastIndex);var a=o[0].charAt(1),u=Pe[a];r+=u?u.call(this,e):"%"+a}}(n,t):e},default:function(e,t){return le(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:Ce,escape_once:function(e){return Ce(Ie(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return Fe[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return y(e)},lstrip:function(e){return Ie(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:qe(function(e,t){return e-t}),modulo:qe(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:qe(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return Ie(e).split(t).join(r)},replace_first:function(e,t,r){return Ie(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return Ie(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return Ie(e).split(t)},strip:function(e){return Ie(e).trim()},strip_html:function(e){return Ie(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return Ie(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return r=void 0===r?"...":r,t=t||16,(e=Ie(e)).length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),i=n.slice(0,t).join(" ");return n.length>t&&(i+=r),i},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0)})},upcase:function(e){return Ie(e).toUpperCase()},url_encode:encodeURIComponent};function Ce(e){return Ie(e).replace(/&|<|>|"|'/g,function(e){return Me[e]})}function De(e){var t=(e+"").split(".");return 1 result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = Object.prototype.toString.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = Object.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = Object.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = Object.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = Object.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = Object.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => Object.assign(ctx, val), Object.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = Object.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = Object.create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = Object.create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = Object.create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = Object.create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import assert from '../util/assert.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const withRE = new RegExp(`with\\\\s+(${lexical.value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = lexical.value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (lexical.quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = Object.create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rIdentifier = Liquid.lexical.identifier\n const re = new RegExp(`(${rIdentifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = Object.create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(lexical.identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n return Object.getPrototypeOf(ctx) !== CaptureScope &&\n Object.getPrototypeOf(ctx) !== AssignScope\n }\n )\n if (!context) {\n context = Object.create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const rValue = Liquid.lexical.value\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\n\nexport default function (liquid, Liquid) {\n const lexical = Liquid.lexical\n const re = new RegExp(`^(${lexical.identifier.source})\\\\s+in\\\\s+` +\n `(${lexical.value.source})` +\n `(?:\\\\s+${lexical.hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += '
'\n }\n html += ``\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst monthNamesShort = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',\n 'Nov', 'Dec'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport * as lexical from './lexical.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = Object.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: Object.create(null),\n CaptureScope: Object.create(null),\n IncrementScope: Object.create(null),\n DecrementScope: Object.create(null)\n}\nLiquid.lexical = lexical\n","import * as lexical from './lexical.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = Object.create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n"],"names":["global","undefined","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","call","Gp","GeneratorFunctionPrototype","Generator","create","constructor","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","arg","__await","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","next","then","result","done","value","toString","keys","object","key","push","reverse","length","pop","Context","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","isNaN","slice","rootRecord","completion","type","rval","exception","context","handle","loc","caught","i","entry","record","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","finallyEntry","complete","afterLoc","thrown","iterable","resultName","nextLoc","state","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","dispatchException","abrupt","tryCatch","fn","obj","err","defineIteratorMethods","previousPromise","callInvokeWithMethodAndArg","Promise","resolve","reject","invoke","unwrapped","error","return","TypeError","info","pushTryEntry","locs","reset","iteratorMethod","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","isArray","assign","Array","arguments","src","last","arr","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","range","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","lines","begin","end","split","Math","max","min","start","stop","step","_","map","l","n","join","message","msg","mkMessage","stack","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","_this","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","parse","options","html","parsedLinesCount","lastMatchBegin","raw","pos","rLiquid","currIndent","lineNumber","lastMatchEnd","tokens","lastIndex","index","parseHTMLToken","parseTagToken","trim","greedy","inRaw","trim_left","trim_tag_left","trim_value_left","rLeft","replace","trim_right","trim_tag_right","trim_value_right","rRight","args","htmlFragment","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","root","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","resolveUrl","isTruthy","r","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","_context2","resolvedHTML","filters","initial","markup","k","valueRE","mapSeries","iteratee","ret","item","idx","x","staticFileRE","engine","Liquid","liquid","rIdentifier","re","AssignScope","CaptureScope","rValue","groupRE","candidatesRE","DecrementScope","withRE","IncrementScope","Types","registerTag","tagToken","remainTokens","stream","parser","parseStream","on","renderer","renderTemplates","cond","cases","elseTemplates","p","branch","group","candidates","fingerprint","groups","collection","offset","limit","reversed","_this2","forloop","finished","_context","branches","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","staticLayout","layout","tpls","block","childDefined","cols","floor","row","col","monthNames","monthNamesShort","dayNames","dayNamesShort","suffixes","_date","d","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","Date","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","h","b","N","L","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","getTime","format","output","remaining","results","func","strftime","escape","m","bindFixed","pattern","replacement","arg1","arg2","amp","pow","substr","sort","o","u","encodeURIComponent","getFixed","cb","f","toFixed","registerAll","registerFilter","_engine","tag","Tag","Filter","handlers","event","trigger","stopRequested","shift","parseToken","parseTag","parseValue","construct","init","Parser","tokenizer","register","_context3","code","catch","getTemplateFromFile","getTemplateFromUrl","extname","lookup","respectCache","_this3","httpGet","fullUrl","getter","cacheEnabled","filePath","renderFile","tagImpls","_tagInstance","tagImpl","impl","instance","_filterInstance","apply","argList","strict_filters","keyMatch","clear"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"liquid.min.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/http.js","../src/tokenizer.js","../src/whitespace-ctrl.js","../src/util/fs.js","../src/util/url.js","../src/syntax.js","../src/operators.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/include.js","../src/tags/index.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/cycle.js","../src/tags/decrement.js","../src/tags/for.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value)) {\n return value\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value != null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// peoperty access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nclass LiquidError extends Error {\n constructor (message) {\n super(message)\n this.name = this.constructor.name\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error(message)).stack\n }\n }\n}\n\nclass TemplateError extends LiquidError {\n constructor (err, token) {\n super()\n this.input = token.input\n this.line = token.line\n this.file = token.file\n this.message = mkMessage(err.message, token)\n const context = mkContext(token.input, token.line)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n }\n}\n\nexport class TokenizationError extends TemplateError {\n constructor (message, token) {\n super({message: message}, token)\n }\n}\n\nexport class ParseError extends TemplateError {\n constructor (e, token) {\n super(e, token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderError extends TemplateError {\n constructor (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n super(e, tpl.token)\n _.assign(this, e)\n this.originalError = e\n }\n}\n\nexport class RenderBreakError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nexport class AssertionError extends LiquidError {\n constructor (message) {\n super(message + '')\n }\n}\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = this.get(name)\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","export function get (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n base.href = resolved\n\n head.removeChild(base)\n\n return resolved\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=(.*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!Array.isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!Array.isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += '
'\n }\n html += ``\n }\n\n html += `| `\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ' | '\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += '
'\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) =>\n v.substr(begin, length === undefined ? 1 : length),\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_encode': encodeURIComponent\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {anySeries} from './util/promise.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n lookup: function (filepath, root) {\n root = this.options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n },\n getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","undefined","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","call","Gp","GeneratorFunctionPrototype","Generator","create","constructor","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","arg","__await","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","next","then","result","done","value","toString","keys","object","key","push","reverse","length","pop","Context","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","isNaN","slice","rootRecord","completion","type","rval","exception","context","handle","loc","caught","i","entry","record","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","finallyEntry","complete","afterLoc","thrown","iterable","resultName","nextLoc","state","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","dispatchException","abrupt","tryCatch","fn","obj","err","defineIteratorMethods","previousPromise","callInvokeWithMethodAndArg","Promise","resolve","reject","invoke","unwrapped","error","return","TypeError","info","pushTryEntry","locs","reset","iteratorMethod","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","assign","Array","arguments","src","last","arr","quoted","RegExp","source","quoteBalanced","number","bool","identifier","subscript","literal","variable","rangeLimit","range","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","LiquidError","message","_this","captureStackTrace","stack","TemplateError","token","input","line","file","msg","mkMessage","lines","begin","end","split","Math","max","min","start","stop","step","_","map","l","n","str","join","_this2","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","test","matchRightBracket","get","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","parse","options","html","parsedLinesCount","lastMatchBegin","match","raw","pos","rLiquid","currIndent","lineNumber","lastMatchEnd","tokens","exec","lastIndex","index","parseHTMLToken","parseTagToken","trim","greedy","inRaw","trim_left","trim_tag_left","trim_value_left","rLeft","replace","trim_right","trim_tag_right","trim_value_right","rRight","lexical","args","htmlFragment","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","root","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","resolveUrl","isTruthy","r","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","res","Number","toLowerCase","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","_context2","resolvedHTML","filters","initial","markup","k","valueRE","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","construct","substr","init","mapSeries","iteratee","ret","item","idx","x","staticFileRE","engine","Liquid","liquid","re","AssignScope","CaptureScope","groupRE","candidatesRE","DecrementScope","withRE","IncrementScope","Types","registerTag","tagToken","remainTokens","parser","parseStream","on","renderer","renderTemplates","cond","cases","elseTemplates","p","branch","rValue","group","candidates","fingerprint","groups","collection","offset","limit","reversed","forloop","finished","_context","branches","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","staticLayout","layout","tpls","block","childDefined","cols","floor","row","col","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","Date","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","getTime","format","output","remaining","results","func","strftime","escape","m","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","u","encodeURIComponent","getFixed","f","toFixed","registerAll","registerFilter","_engine","tag","Parser","tokenizer","register","_context3","code","catch","getTemplateFromFile","getTemplateFromUrl","extname","lookup","respectCache","_this3","httpGet","fullUrl","getter","cacheEnabled","filePath","renderFile","tagImpls","_tagInstance","tagImpl","impl","instance","_filterInstance","apply","argList","strict_filters","keyMatch","clear"],"mappings":"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"}
\ No newline at end of file
diff --git a/package.json b/package.json
index c7393675c..cb60c93f4 100644
--- a/package.json
+++ b/package.json
@@ -4,8 +4,9 @@
"description": "Liquid template engine by pure JavaScript: compatible to shopify, easy to extend.",
"main": "dist/liquid.common.js",
"module": "src/index.js",
+ "browser": "dist/liquid.js",
"scripts": {
- "lint": "eslint src/ test/",
+ "lint": "eslint src/ test/ *.js",
"test": "mocha --require babel-core/register --recursive",
"coverage": "nyc report --require babel-core/register mocha test/ --recursive ",
"coveralls": "nyc report --reporter=text-lcov --require babel-core/register mocha test/ --recursive | coveralls",
diff --git a/src/filter.js b/src/filter.js
index 5644b7cea..72d576b24 100644
--- a/src/filter.js
+++ b/src/filter.js
@@ -1,7 +1,7 @@
import * as lexical from './lexical.js'
import {evalValue} from './syntax.js'
import assert from './util/assert.js'
-import {assign} from './util/underscore.js'
+import {assign, create} from './util/underscore.js'
const valueRE = new RegExp(`${lexical.value.source}`, 'g')
@@ -50,7 +50,7 @@ export default function (options) {
}
function construct (str) {
- const instance = Object.create(_filterInstance)
+ const instance = create(_filterInstance)
return instance.parse(str)
}
diff --git a/src/index.js b/src/index.js
index 80b357260..4418f625d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -7,7 +7,6 @@ import * as tokenizer from './tokenizer.js'
import {statFileAsync, readFileAsync} from './util/fs.js'
import path from 'path'
import {valid as isValidUrl, extname, resolve} from './util/url.js'
-import * as lexical from './lexical.js'
import Render from './render.js'
import Tag from './tag.js'
import Filter from './filter.js'
@@ -151,7 +150,7 @@ export default function Liquid (options) {
}, options)
options.root = normalizeStringArray(options.root)
- const engine = Object.create(_engine)
+ const engine = _.create(_engine)
engine.init(Tag(), Filter(options), options)
return engine
}
@@ -165,9 +164,8 @@ Liquid.Types = {
TokenizationError,
RenderBreakError,
AssertionError,
- AssignScope: Object.create(null),
- CaptureScope: Object.create(null),
- IncrementScope: Object.create(null),
- DecrementScope: Object.create(null)
+ AssignScope: {},
+ CaptureScope: {},
+ IncrementScope: {},
+ DecrementScope: {}
}
-Liquid.lexical = lexical
diff --git a/src/parser.js b/src/parser.js
index 3bcab6e19..ea8dc8df3 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -1,4 +1,5 @@
import * as lexical from './lexical.js'
+import {create} from './util/underscore.js'
import {ParseError} from './util/error.js'
import assert from './util/assert.js'
@@ -92,7 +93,7 @@ export default function (Tag, Filter) {
}
function parseStream (tokens) {
- const s = Object.create(stream)
+ const s = create(stream)
return s.init(tokens)
}
diff --git a/src/render.js b/src/render.js
index 87977e62f..e741a558b 100644
--- a/src/render.js
+++ b/src/render.js
@@ -1,6 +1,6 @@
import {evalExp} from './syntax.js'
import {RenderBreakError, RenderError} from './util/error.js'
-import {stringify} from './util/underscore.js'
+import {stringify, create} from './util/underscore.js'
import assert from './util/assert.js'
const render = {
@@ -57,6 +57,6 @@ const render = {
}
export default function () {
- const instance = Object.create(render)
+ const instance = create(render)
return instance
}
diff --git a/src/scope.js b/src/scope.js
index 3e3dd1ca2..ee1dc6c38 100644
--- a/src/scope.js
+++ b/src/scope.js
@@ -4,7 +4,7 @@ import assert from './util/assert.js'
const Scope = {
getAll: function () {
- return this.contexts.reduce((ctx, val) => Object.assign(ctx, val), Object.create(null))
+ return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))
},
get: function (path) {
const paths = this.propertyAccessSeq(path)
@@ -162,7 +162,7 @@ export function factory (ctx, opts) {
blocks: {},
root: []
}
- const scope = Object.create(Scope)
+ const scope = _.create(Scope)
scope.opts = _.assign(defaultOptions, opts)
scope.contexts = [ctx || {}]
return scope
diff --git a/src/tag.js b/src/tag.js
index 40600104f..5970a3676 100644
--- a/src/tag.js
+++ b/src/tag.js
@@ -1,4 +1,5 @@
import {hashCapture} from './lexical.js'
+import {create} from './util/underscore.js'
import {evalValue} from './syntax.js'
import assert from './util/assert.js'
@@ -33,7 +34,7 @@ export default function () {
const tagImpl = tagImpls[this.name]
assert(tagImpl, `tag ${this.name} not found`)
- this.tagImpl = Object.create(tagImpl)
+ this.tagImpl = create(tagImpl)
if (this.tagImpl.parse) {
this.tagImpl.parse(token, tokens)
}
@@ -45,7 +46,7 @@ export default function () {
}
function construct (token, tokens) {
- const instance = Object.create(_tagInstance)
+ const instance = create(_tagInstance)
instance.parse(token, tokens)
return instance
}
diff --git a/src/tags/assign.js b/src/tags/assign.js
index fbd19be66..2b04c6c25 100644
--- a/src/tags/assign.js
+++ b/src/tags/assign.js
@@ -1,8 +1,9 @@
import assert from '../util/assert.js'
+import {identifier} from '../lexical.js'
+import {create} from '../util/underscore.js'
export default function (liquid, Liquid) {
- const rIdentifier = Liquid.lexical.identifier
- const re = new RegExp(`(${rIdentifier.source})\\s*=(.*)`)
+ const re = new RegExp(`(${identifier.source})\\s*=(.*)`)
const {AssignScope} = Liquid.Types
liquid.registerTag('assign', {
@@ -13,7 +14,7 @@ export default function (liquid, Liquid) {
this.value = match[2]
},
render: function (scope) {
- const ctx = Object.create(AssignScope)
+ const ctx = create(AssignScope)
ctx[this.key] = liquid.evalValue(this.value, scope)
scope.push(ctx)
return Promise.resolve('')
diff --git a/src/tags/capture.js b/src/tags/capture.js
index e5d9ee2a3..1f2667e0b 100644
--- a/src/tags/capture.js
+++ b/src/tags/capture.js
@@ -1,8 +1,9 @@
import assert from '../util/assert.js'
+import {create} from '../util/underscore.js'
+import {identifier} from '../lexical.js'
export default function (liquid, Liquid) {
- const rIdentifier = Liquid.lexical.identifier
- const re = new RegExp(`(${rIdentifier.source})`)
+ const re = new RegExp(`(${identifier.source})`)
const {CaptureScope} = Liquid.Types
liquid.registerTag('capture', {
@@ -23,7 +24,7 @@ export default function (liquid, Liquid) {
},
render: async function (scope, hash) {
const html = await liquid.renderer.renderTemplates(this.templates, scope)
- const ctx = Object.create(CaptureScope)
+ const ctx = create(CaptureScope)
ctx[this.variable] = html
scope.push(ctx)
}
diff --git a/src/tags/cycle.js b/src/tags/cycle.js
index 0918d23d4..67e9b9fc4 100644
--- a/src/tags/cycle.js
+++ b/src/tags/cycle.js
@@ -1,7 +1,7 @@
import assert from '../util/assert.js'
+import {value as rValue} from '../lexical.js'
export default function (liquid, Liquid) {
- const rValue = Liquid.lexical.value
const groupRE = new RegExp(`^(?:(${rValue.source})\\s*:\\s*)?(.*)$`)
const candidatesRE = new RegExp(rValue.source, 'g')
diff --git a/src/tags/decrement.js b/src/tags/decrement.js
index 0055d316d..4bcfaba47 100644
--- a/src/tags/decrement.js
+++ b/src/tags/decrement.js
@@ -1,12 +1,13 @@
+import {create} from '../util/underscore.js'
import assert from '../util/assert.js'
+import {identifier} from '../lexical.js'
export default function (liquid, Liquid) {
- const lexical = Liquid.lexical
const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types
liquid.registerTag('decrement', {
parse: function (token) {
- const match = token.args.match(lexical.identifier)
+ const match = token.args.match(identifier)
assert(match, `illegal identifier ${token.args}`)
this.variable = match[0]
},
@@ -14,12 +15,12 @@ export default function (liquid, Liquid) {
let context = scope.findContextFor(
this.variable,
ctx => {
- return Object.getPrototypeOf(ctx) !== CaptureScope &&
- Object.getPrototypeOf(ctx) !== AssignScope
+ const proto = Object.getPrototypeOf(ctx)
+ return proto !== CaptureScope && proto !== AssignScope
}
)
if (!context) {
- context = Object.create(DecrementScope)
+ context = create(DecrementScope)
scope.unshift(context)
}
if (typeof context[this.variable] !== 'number') {
diff --git a/src/tags/for.js b/src/tags/for.js
index ce30f408a..d8aeda716 100644
--- a/src/tags/for.js
+++ b/src/tags/for.js
@@ -1,15 +1,15 @@
import {mapSeries} from '../util/promise.js'
import {isString, isObject} from '../util/underscore.js'
import assert from '../util/assert.js'
+import {identifier, value, hash} from '../lexical.js'
export default function (liquid, Liquid) {
const RenderBreakError = Liquid.Types.RenderBreakError
- const lexical = Liquid.lexical
- const re = new RegExp(`^(${lexical.identifier.source})\\s+in\\s+` +
- `(${lexical.value.source})` +
- `(?:\\s+${lexical.hash.source})*` +
+ const re = new RegExp(`^(${identifier.source})\\s+in\\s+` +
+ `(${value.source})` +
+ `(?:\\s+${hash.source})*` +
`(?:\\s+(reversed))?` +
- `(?:\\s+${lexical.hash.source})*$`)
+ `(?:\\s+${hash.source})*$`)
liquid.registerTag('for', {parse, render})
diff --git a/src/tags/include.js b/src/tags/include.js
index d1cff7d30..0cecf179d 100644
--- a/src/tags/include.js
+++ b/src/tags/include.js
@@ -1,10 +1,10 @@
import assert from '../util/assert.js'
+import {value, quotedLine} from '../lexical.js'
const staticFileRE = /[^\s,]+/
export default function (liquid, Liquid) {
- const lexical = Liquid.lexical
- const withRE = new RegExp(`with\\s+(${lexical.value.source})`)
+ const withRE = new RegExp(`with\\s+(${value.source})`)
liquid.registerTag('include', {
parse: function (token) {
@@ -13,7 +13,7 @@ export default function (liquid, Liquid) {
this.staticValue = match[0]
}
- match = lexical.value.exec(token.args)
+ match = value.exec(token.args)
if (match) {
this.value = match[0]
}
@@ -26,7 +26,7 @@ export default function (liquid, Liquid) {
render: async function (scope, hash) {
let filepath
if (scope.opts.dynamicPartials) {
- if (lexical.quotedLine.exec(this.value)) {
+ if (quotedLine.exec(this.value)) {
const template = this.value.slice(1, -1)
filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)
} else {
diff --git a/src/tags/increment.js b/src/tags/increment.js
index 0b94b1eb6..85cd9c3bb 100644
--- a/src/tags/increment.js
+++ b/src/tags/increment.js
@@ -1,12 +1,13 @@
import assert from '../util/assert.js'
+import {create} from '../util/underscore.js'
+import {identifier} from '../lexical.js'
export default function (liquid, Liquid) {
- const lexical = Liquid.lexical
const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types
liquid.registerTag('increment', {
parse: function (token) {
- const match = token.args.match(lexical.identifier)
+ const match = token.args.match(identifier)
assert(match, `illegal identifier ${token.args}`)
this.variable = match[0]
},
@@ -14,12 +15,12 @@ export default function (liquid, Liquid) {
let context = scope.findContextFor(
this.variable,
ctx => {
- return Object.getPrototypeOf(ctx) !== CaptureScope &&
- Object.getPrototypeOf(ctx) !== AssignScope
+ const proto = Object.getPrototypeOf(ctx)
+ return proto !== CaptureScope && proto !== AssignScope
}
)
if (!context) {
- context = Object.create(IncrementScope)
+ context = create(IncrementScope)
scope.unshift(context)
}
if (typeof context[this.variable] !== 'number') {
diff --git a/src/tags/layout.js b/src/tags/layout.js
index 1731d42a4..bc375ed1f 100644
--- a/src/tags/layout.js
+++ b/src/tags/layout.js
@@ -1,4 +1,5 @@
import assert from '../util/assert.js'
+import {value as rValue} from '../lexical.js'
/*
* blockMode:
@@ -7,7 +8,6 @@ import assert from '../util/assert.js'
*/
export default function (liquid, Liquid) {
- const rValue = Liquid.lexical.value
const staticFileRE = /\S+/
liquid.registerTag('layout', {
diff --git a/src/tags/tablerow.js b/src/tags/tablerow.js
index df234f050..60f3dfedc 100644
--- a/src/tags/tablerow.js
+++ b/src/tags/tablerow.js
@@ -1,11 +1,11 @@
import {mapSeries} from '../util/promise.js'
import assert from '../util/assert.js'
+import {identifier, value, hash} from '../lexical.js'
export default function (liquid, Liquid) {
- const lexical = Liquid.lexical
- const re = new RegExp(`^(${lexical.identifier.source})\\s+in\\s+` +
- `(${lexical.value.source})` +
- `(?:\\s+${lexical.hash.source})*$`)
+ const re = new RegExp(`^(${identifier.source})\\s+in\\s+` +
+ `(${value.source})` +
+ `(?:\\s+${hash.source})*$`)
liquid.registerTag('tablerow', {
diff --git a/src/util/error.js b/src/util/error.js
index 80a616b0e..a036011a5 100644
--- a/src/util/error.js
+++ b/src/util/error.js
@@ -24,7 +24,7 @@ function initLiquidError (err, token) {
export function TokenizationError (message, token) {
initLiquidError.call(this, {message: message}, token)
}
-TokenizationError.prototype = Object.create(Error.prototype)
+TokenizationError.prototype = _.create(Error.prototype)
TokenizationError.prototype.constructor = TokenizationError
export function ParseError (e, token) {
@@ -33,7 +33,7 @@ export function ParseError (e, token) {
initLiquidError.call(this, e, token)
}
-ParseError.prototype = Object.create(Error.prototype)
+ParseError.prototype = _.create(Error.prototype)
ParseError.prototype.constructor = ParseError
export function RenderError (e, tpl) {
@@ -46,21 +46,21 @@ export function RenderError (e, tpl) {
initLiquidError.call(this, e, tpl.token)
}
-RenderError.prototype = Object.create(Error.prototype)
+RenderError.prototype = _.create(Error.prototype)
RenderError.prototype.constructor = RenderError
export function RenderBreakError (message) {
initError.call(this)
this.message = message + ''
}
-RenderBreakError.prototype = Object.create(Error.prototype)
+RenderBreakError.prototype = _.create(Error.prototype)
RenderBreakError.prototype.constructor = RenderBreakError
export function AssertionError (message) {
initError.call(this)
this.message = message + ''
}
-AssertionError.prototype = Object.create(Error.prototype)
+AssertionError.prototype = _.create(Error.prototype)
AssertionError.prototype.constructor = AssertionError
function mkContext (input, line) {
diff --git a/src/util/strftime.js b/src/util/strftime.js
index 046d7a33e..99d6b0a68 100644
--- a/src/util/strftime.js
+++ b/src/util/strftime.js
@@ -2,14 +2,11 @@ const monthNames = [
'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
'September', 'October', 'November', 'December'
]
-const monthNamesShort = [
- 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
- 'Nov', 'Dec'
-]
const dayNames = [
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
]
-const dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+const monthNamesShort = monthNames.map(abbr)
+const dayNamesShort = dayNames.map(abbr)
const suffixes = {
1: 'st',
2: 'nd',
@@ -17,6 +14,10 @@ const suffixes = {
'default': 'th'
}
+function abbr (str) {
+ return str.slice(0, 3)
+}
+
// prototype extensions
const _date = {
daysInMonth: function (d) {
diff --git a/src/util/underscore.js b/src/util/underscore.js
index b25ab45fa..e34402a1f 100644
--- a/src/util/underscore.js
+++ b/src/util/underscore.js
@@ -35,6 +35,10 @@ export function stringify (value) {
})
}
+export function create (proto) {
+ return Object.create(proto)
+}
+
export function isNil (value) {
return value === null || value === undefined
}
@@ -45,7 +49,7 @@ export function isArray (value) {
}
export function isError (value) {
- const signature = Object.prototype.toString.call(value)
+ const signature = toStr.call(value)
// [object XXXError]
return signature.substr(-6, 5) === 'Error' ||
(typeof value.message === 'string' && typeof value.name === 'string')