dist/ember-template-compiler.js in ember-source-2.9.1 vs dist/ember-template-compiler.js in ember-source-2.9.1.1
- old
+ new
@@ -4,11 +4,11 @@
* @copyright Copyright 2011-2016 Tilde Inc. and contributors
* Portions Copyright 2006-2011 Strobe Inc.
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
* @license Licensed under MIT license
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
- * @version 2.10.0-beta.2
+ * @version 2.9.1
*/
var enifed, requireModule, require, Ember;
var mainContext = this;
@@ -110,1097 +110,1050 @@
enifed = Ember.__loader.define;
require = requireModule = Ember.__loader.require;
}
})();
-var babelHelpers;
+enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'backburner/binary-search', 'backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) {
+ 'use strict';
-function classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError('Cannot call a class as a function');
- }
-}
+ exports.default = Backburner;
-function inherits(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
+ function Backburner(queueNames, options) {
+ this.queueNames = queueNames;
+ this.options = options || {};
+ if (!this.options.defaultQueue) {
+ this.options.defaultQueue = queueNames[0];
}
- });
+ this.instanceStack = [];
+ this._debouncees = [];
+ this._throttlers = [];
+ this._eventCallbacks = {
+ end: [],
+ begin: []
+ };
- if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : defaults(subClass, superClass);
-}
+ var _this = this;
+ this._boundClearItems = function () {
+ clearItems();
+ };
-function taggedTemplateLiteralLoose(strings, raw) {
- strings.raw = raw;
- return strings;
-}
+ this._timerTimeoutId = undefined;
+ this._timers = [];
-function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ('value' in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
-}
+ this._platform = this.options._platform || _backburnerPlatform.default;
-function createClass(Constructor, protoProps, staticProps) {
- if (protoProps) defineProperties(Constructor.prototype, protoProps);
- if (staticProps) defineProperties(Constructor, staticProps);
- return Constructor;
-}
-
-function interopExportWildcard(obj, defaults) {
- var newObj = defaults({}, obj);
- delete newObj['default'];
- return newObj;
-}
-
-function defaults(obj, defaults) {
- var keys = Object.getOwnPropertyNames(defaults);
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- var value = Object.getOwnPropertyDescriptor(defaults, key);
- if (value && value.configurable && obj[key] === undefined) {
- Object.defineProperty(obj, key, value);
- }
+ this._boundRunExpiredTimers = function () {
+ _this._runExpiredTimers();
+ };
}
- return obj;
-}
-babelHelpers = {
- classCallCheck: classCallCheck,
- inherits: inherits,
- taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,
- slice: Array.prototype.slice,
- createClass: createClass,
- interopExportWildcard: interopExportWildcard,
- defaults: defaults
-};
+ Backburner.prototype = {
+ begin: function () {
+ var options = this.options;
+ var onBegin = options && options.onBegin;
+ var previousInstance = this.currentInstance;
-enifed('backburner', ['exports'], function (exports) { 'use strict';
+ if (previousInstance) {
+ this.instanceStack.push(previousInstance);
+ }
-var NUMBER = /\d+/;
+ this.currentInstance = new _backburnerDeferredActionQueues.default(this.queueNames, options);
+ this._trigger('begin', this.currentInstance, previousInstance);
+ if (onBegin) {
+ onBegin(this.currentInstance, previousInstance);
+ }
+ },
-function each(collection, callback) {
- for (var i = 0; i < collection.length; i++) {
- callback(collection[i]);
- }
-}
+ end: function () {
+ var options = this.options;
+ var onEnd = options && options.onEnd;
+ var currentInstance = this.currentInstance;
+ var nextInstance = null;
-function isString(suspect) {
- return typeof suspect === 'string';
-}
+ // Prevent double-finally bug in Safari 6.0.2 and iOS 6
+ // This bug appears to be resolved in Safari 6.0.5 and iOS 7
+ var finallyAlreadyCalled = false;
+ try {
+ currentInstance.flush();
+ } finally {
+ if (!finallyAlreadyCalled) {
+ finallyAlreadyCalled = true;
-function isFunction(suspect) {
- return typeof suspect === 'function';
-}
+ this.currentInstance = null;
-function isNumber(suspect) {
- return typeof suspect === 'number';
-}
+ if (this.instanceStack.length) {
+ nextInstance = this.instanceStack.pop();
+ this.currentInstance = nextInstance;
+ }
+ this._trigger('end', currentInstance, nextInstance);
+ if (onEnd) {
+ onEnd(currentInstance, nextInstance);
+ }
+ }
+ }
+ },
-function isCoercableNumber(number) {
- return isNumber(number) || NUMBER.test(number);
-}
+ /**
+ Trigger an event. Supports up to two arguments. Designed around
+ triggering transition events from one run loop instance to the
+ next, which requires an argument for the first instance and then
+ an argument for the next instance.
+ @private
+ @method _trigger
+ @param {String} eventName
+ @param {any} arg1
+ @param {any} arg2
+ */
+ _trigger: function (eventName, arg1, arg2) {
+ var callbacks = this._eventCallbacks[eventName];
+ if (callbacks) {
+ for (var i = 0; i < callbacks.length; i++) {
+ callbacks[i](arg1, arg2);
+ }
+ }
+ },
-function binarySearch(time, timers) {
- var start = 0;
- var end = timers.length - 2;
- var middle, l;
+ on: function (eventName, callback) {
+ if (typeof callback !== 'function') {
+ throw new TypeError('Callback must be a function');
+ }
+ var callbacks = this._eventCallbacks[eventName];
+ if (callbacks) {
+ callbacks.push(callback);
+ } else {
+ throw new TypeError('Cannot on() event "' + eventName + '" because it does not exist');
+ }
+ },
- while (start < end) {
- // since timers is an array of pairs 'l' will always
- // be an integer
- l = (end - start) / 2;
+ off: function (eventName, callback) {
+ if (eventName) {
+ var callbacks = this._eventCallbacks[eventName];
+ var callbackFound = false;
+ if (!callbacks) return;
+ if (callback) {
+ for (var i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] === callback) {
+ callbackFound = true;
+ callbacks.splice(i, 1);
+ i--;
+ }
+ }
+ }
+ if (!callbackFound) {
+ throw new TypeError('Cannot off() callback that does not exist');
+ }
+ } else {
+ throw new TypeError('Cannot off() event "' + eventName + '" because it does not exist');
+ }
+ },
- // compensate for the index in case even number
- // of pairs inside timers
- middle = start + l - (l % 2);
+ run: function () /* target, method, args */{
+ var length = arguments.length;
+ var method, target, args;
- if (time >= timers[middle]) {
- start = middle + 2;
- } else {
- end = middle;
- }
- }
+ if (length === 1) {
+ method = arguments[0];
+ target = null;
+ } else {
+ target = arguments[0];
+ method = arguments[1];
+ }
- return (time >= timers[start]) ? start + 2 : start;
-}
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
-function Queue(name, options, globalOptions) {
- this.name = name;
- this.globalOptions = globalOptions || {};
- this.options = options;
- this._queue = [];
- this.targetQueues = {};
- this._queueBeingFlushed = undefined;
-}
+ if (length > 2) {
+ args = new Array(length - 2);
+ for (var i = 0, l = length - 2; i < l; i++) {
+ args[i] = arguments[i + 2];
+ }
+ } else {
+ args = [];
+ }
-Queue.prototype = {
- push: function(target, method, args, stack) {
- var queue = this._queue;
- queue.push(target, method, args, stack);
+ var onError = getOnError(this.options);
- return {
- queue: this,
- target: target,
- method: method
- };
- },
+ this.begin();
- pushUniqueWithoutGuid: function(target, method, args, stack) {
- var queue = this._queue;
+ // guard against Safari 6's double-finally bug
+ var didFinally = false;
- for (var i = 0, l = queue.length; i < l; i += 4) {
- var currentTarget = queue[i];
- var currentMethod = queue[i+1];
+ if (onError) {
+ try {
+ return method.apply(target, args);
+ } catch (error) {
+ onError(error);
+ } finally {
+ if (!didFinally) {
+ didFinally = true;
+ this.end();
+ }
+ }
+ } else {
+ try {
+ return method.apply(target, args);
+ } finally {
+ if (!didFinally) {
+ didFinally = true;
+ this.end();
+ }
+ }
+ }
+ },
- if (currentTarget === target && currentMethod === method) {
- queue[i+2] = args; // replace args
- queue[i+3] = stack; // replace stack
- return;
+ /*
+ Join the passed method with an existing queue and execute immediately,
+ if there isn't one use `Backburner#run`.
+ The join method is like the run method except that it will schedule into
+ an existing queue if one already exists. In either case, the join method will
+ immediately execute the passed in function and return its result.
+ @method join
+ @param {Object} target
+ @param {Function} method The method to be executed
+ @param {any} args The method arguments
+ @return method result
+ */
+ join: function () /* target, method, args */{
+ if (!this.currentInstance) {
+ return this.run.apply(this, arguments);
}
- }
- queue.push(target, method, args, stack);
- },
+ var length = arguments.length;
+ var method, target;
- targetQueue: function(targetQueue, target, method, args, stack) {
- var queue = this._queue;
+ if (length === 1) {
+ method = arguments[0];
+ target = null;
+ } else {
+ target = arguments[0];
+ method = arguments[1];
+ }
- for (var i = 0, l = targetQueue.length; i < l; i += 2) {
- var currentMethod = targetQueue[i];
- var currentIndex = targetQueue[i + 1];
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
- if (currentMethod === method) {
- queue[currentIndex + 2] = args; // replace args
- queue[currentIndex + 3] = stack; // replace stack
- return;
+ if (length === 1) {
+ return method();
+ } else if (length === 2) {
+ return method.call(target);
+ } else {
+ var args = new Array(length - 2);
+ for (var i = 0, l = length - 2; i < l; i++) {
+ args[i] = arguments[i + 2];
+ }
+ return method.apply(target, args);
}
- }
+ },
- targetQueue.push(
- method,
- queue.push(target, method, args, stack) - 4
- );
- },
+ /*
+ Defer the passed function to run inside the specified queue.
+ @method defer
+ @param {String} queueName
+ @param {Object} target
+ @param {Function|String} method The method or method name to be executed
+ @param {any} args The method arguments
+ @return method result
+ */
+ defer: function (queueName /* , target, method, args */) {
+ var length = arguments.length;
+ var method, target, args;
- pushUniqueWithGuid: function(guid, target, method, args, stack) {
- var hasLocalQueue = this.targetQueues[guid];
+ if (length === 2) {
+ method = arguments[1];
+ target = null;
+ } else {
+ target = arguments[1];
+ method = arguments[2];
+ }
- if (hasLocalQueue) {
- this.targetQueue(hasLocalQueue, target, method, args, stack);
- } else {
- this.targetQueues[guid] = [
- method,
- this._queue.push(target, method, args, stack) - 4
- ];
- }
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
- return {
- queue: this,
- target: target,
- method: method
- };
- },
+ var stack = this.DEBUG ? new Error() : undefined;
- pushUnique: function(target, method, args, stack) {
- var KEY = this.globalOptions.GUID_KEY;
+ if (length > 3) {
+ args = new Array(length - 3);
+ for (var i = 3; i < length; i++) {
+ args[i - 3] = arguments[i];
+ }
+ } else {
+ args = undefined;
+ }
- if (target && KEY) {
- var guid = target[KEY];
- if (guid) {
- return this.pushUniqueWithGuid(guid, target, method, args, stack);
+ if (!this.currentInstance) {
+ createAutorun(this);
}
- }
+ return this.currentInstance.schedule(queueName, target, method, args, false, stack);
+ },
- this.pushUniqueWithoutGuid(target, method, args, stack);
+ deferOnce: function (queueName /* , target, method, args */) {
+ var length = arguments.length;
+ var method, target, args;
- return {
- queue: this,
- target: target,
- method: method
- };
- },
+ if (length === 2) {
+ method = arguments[1];
+ target = null;
+ } else {
+ target = arguments[1];
+ method = arguments[2];
+ }
- invoke: function(target, method, args /*, onError, errorRecordedForStack */) {
- if (args && args.length > 0) {
- method.apply(target, args);
- } else {
- method.call(target);
- }
- },
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
- invokeWithOnError: function(target, method, args, onError, errorRecordedForStack) {
- try {
- if (args && args.length > 0) {
- method.apply(target, args);
+ var stack = this.DEBUG ? new Error() : undefined;
+
+ if (length > 3) {
+ args = new Array(length - 3);
+ for (var i = 3; i < length; i++) {
+ args[i - 3] = arguments[i];
+ }
} else {
- method.call(target);
+ args = undefined;
}
- } catch(error) {
- onError(error, errorRecordedForStack);
- }
- },
- flush: function(sync) {
- var queue = this._queue;
- var length = queue.length;
+ if (!this.currentInstance) {
+ createAutorun(this);
+ }
+ return this.currentInstance.schedule(queueName, target, method, args, true, stack);
+ },
- if (length === 0) {
- return;
- }
+ setTimeout: function () {
+ var l = arguments.length;
+ var args = new Array(l);
- var globalOptions = this.globalOptions;
- var options = this.options;
- var before = options && options.before;
- var after = options && options.after;
- var onError = globalOptions.onError || (globalOptions.onErrorTarget &&
- globalOptions.onErrorTarget[globalOptions.onErrorMethod]);
- var target, method, args, errorRecordedForStack;
- var invoke = onError ? this.invokeWithOnError : this.invoke;
+ for (var x = 0; x < l; x++) {
+ args[x] = arguments[x];
+ }
- this.targetQueues = Object.create(null);
- var queueItems = this._queueBeingFlushed = this._queue.slice();
- this._queue = [];
+ var length = args.length,
+ method,
+ wait,
+ target,
+ methodOrTarget,
+ methodOrWait,
+ methodOrArgs;
- if (before) {
- before();
- }
+ if (length === 0) {
+ return;
+ } else if (length === 1) {
+ method = args.shift();
+ wait = 0;
+ } else if (length === 2) {
+ methodOrTarget = args[0];
+ methodOrWait = args[1];
- for (var i = 0; i < length; i += 4) {
- target = queueItems[i];
- method = queueItems[i+1];
- args = queueItems[i+2];
- errorRecordedForStack = queueItems[i+3]; // Debugging assistance
+ if (_backburnerUtils.isFunction(methodOrWait) || _backburnerUtils.isFunction(methodOrTarget[methodOrWait])) {
+ target = args.shift();
+ method = args.shift();
+ wait = 0;
+ } else if (_backburnerUtils.isCoercableNumber(methodOrWait)) {
+ method = args.shift();
+ wait = args.shift();
+ } else {
+ method = args.shift();
+ wait = 0;
+ }
+ } else {
+ var last = args[args.length - 1];
- if (isString(method)) {
- method = target[method];
- }
+ if (_backburnerUtils.isCoercableNumber(last)) {
+ wait = args.pop();
+ } else {
+ wait = 0;
+ }
- // method could have been nullified / canceled during flush
- if (method) {
- //
- // ** Attention intrepid developer **
- //
- // To find out the stack of this task when it was scheduled onto
- // the run loop, add the following to your app.js:
- //
- // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
- //
- // Once that is in place, when you are at a breakpoint and navigate
- // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
- // which will be the captured stack when this job was scheduled.
- //
- // One possible long-term solution is the following Chrome issue:
- // https://bugs.chromium.org/p/chromium/issues/detail?id=332624
- //
- invoke(target, method, args, onError, errorRecordedForStack);
+ methodOrTarget = args[0];
+ methodOrArgs = args[1];
+
+ if (_backburnerUtils.isFunction(methodOrArgs) || _backburnerUtils.isString(methodOrArgs) && methodOrTarget !== null && methodOrArgs in methodOrTarget) {
+ target = args.shift();
+ method = args.shift();
+ } else {
+ method = args.shift();
+ }
}
- }
- if (after) {
- after();
- }
+ var executeAt = Date.now() + parseInt(wait !== wait ? 0 : wait, 10);
- this._queueBeingFlushed = undefined;
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
- if (sync !== false &&
- this._queue.length > 0) {
- // check if new items have been added
- this.flush(true);
- }
- },
+ var onError = getOnError(this.options);
- cancel: function(actionToCancel) {
- var queue = this._queue, currentTarget, currentMethod, i, l;
- var target = actionToCancel.target;
- var method = actionToCancel.method;
- var GUID_KEY = this.globalOptions.GUID_KEY;
-
- if (GUID_KEY && this.targetQueues && target) {
- var targetQueue = this.targetQueues[target[GUID_KEY]];
-
- if (targetQueue) {
- for (i = 0, l = targetQueue.length; i < l; i++) {
- if (targetQueue[i] === method) {
- targetQueue.splice(i, 1);
+ function fn() {
+ if (onError) {
+ try {
+ method.apply(target, args);
+ } catch (e) {
+ onError(e);
}
+ } else {
+ method.apply(target, args);
}
}
- }
- for (i = 0, l = queue.length; i < l; i += 4) {
- currentTarget = queue[i];
- currentMethod = queue[i+1];
+ return this._setTimeout(fn, executeAt);
+ },
- if (currentTarget === target &&
- currentMethod === method) {
- queue.splice(i, 4);
- return true;
+ _setTimeout: function (fn, executeAt) {
+ if (this._timers.length === 0) {
+ this._timers.push(executeAt, fn);
+ this._installTimerTimeout();
+ return fn;
}
- }
- // if not found in current queue
- // could be in the queue that is being flushed
- queue = this._queueBeingFlushed;
+ // find position to insert
+ var i = _backburnerBinarySearch.default(executeAt, this._timers);
- if (!queue) {
- return;
- }
+ this._timers.splice(i, 0, executeAt, fn);
- for (i = 0, l = queue.length; i < l; i += 4) {
- currentTarget = queue[i];
- currentMethod = queue[i+1];
-
- if (currentTarget === target &&
- currentMethod === method) {
- // don't mess with array during flush
- // just nullify the method
- queue[i+1] = null;
- return true;
+ // we should be the new earliest timer if i == 0
+ if (i === 0) {
+ this._reinstallTimerTimeout();
}
- }
- }
-};
-function DeferredActionQueues(queueNames, options) {
- var queues = this.queues = {};
- this.queueNames = queueNames = queueNames || [];
+ return fn;
+ },
- this.options = options;
+ throttle: function (target, method /* , args, wait, [immediate] */) {
+ var backburner = this;
+ var args = new Array(arguments.length);
+ for (var i = 0; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
+ var immediate = args.pop();
+ var wait, throttler, index, timer;
- each(queueNames, function(queueName) {
- queues[queueName] = new Queue(queueName, options[queueName], options);
- });
-}
+ if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) {
+ wait = immediate;
+ immediate = true;
+ } else {
+ wait = args.pop();
+ }
-function noSuchQueue(name) {
- throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist');
-}
+ wait = parseInt(wait, 10);
-function noSuchMethod(name) {
- throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist');
-}
+ index = findThrottler(target, method, this._throttlers);
+ if (index > -1) {
+ return this._throttlers[index];
+ } // throttled
-DeferredActionQueues.prototype = {
- schedule: function(name, target, method, args, onceFlag, stack) {
- var queues = this.queues;
- var queue = queues[name];
+ timer = this._platform.setTimeout(function () {
+ if (!immediate) {
+ backburner.run.apply(backburner, args);
+ }
+ var index = findThrottler(target, method, backburner._throttlers);
+ if (index > -1) {
+ backburner._throttlers.splice(index, 1);
+ }
+ }, wait);
- if (!queue) {
- noSuchQueue(name);
- }
+ if (immediate) {
+ this.run.apply(this, args);
+ }
- if (!method) {
- noSuchMethod(name);
- }
+ throttler = [target, method, timer];
- if (onceFlag) {
- return queue.pushUnique(target, method, args, stack);
- } else {
- return queue.push(target, method, args, stack);
- }
- },
+ this._throttlers.push(throttler);
- flush: function() {
- var queues = this.queues;
- var queueNames = this.queueNames;
- var queueName, queue;
- var queueNameIndex = 0;
- var numberOfQueues = queueNames.length;
+ return throttler;
+ },
- while (queueNameIndex < numberOfQueues) {
- queueName = queueNames[queueNameIndex];
- queue = queues[queueName];
+ debounce: function (target, method /* , args, wait, [immediate] */) {
+ var backburner = this;
+ var args = new Array(arguments.length);
+ for (var i = 0; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
- var numberOfQueueItems = queue._queue.length;
+ var immediate = args.pop();
+ var wait, index, debouncee, timer;
- if (numberOfQueueItems === 0) {
- queueNameIndex++;
+ if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) {
+ wait = immediate;
+ immediate = false;
} else {
- queue.flush(false /* async */);
- queueNameIndex = 0;
+ wait = args.pop();
}
- }
- }
-};
-function Backburner(queueNames, options) {
- this.queueNames = queueNames;
- this.options = options || {};
- if (!this.options.defaultQueue) {
- this.options.defaultQueue = queueNames[0];
- }
- this.instanceStack = [];
- this._debouncees = [];
- this._throttlers = [];
- this._eventCallbacks = {
- end: [],
- begin: []
- };
+ wait = parseInt(wait, 10);
+ // Remove debouncee
+ index = findDebouncee(target, method, this._debouncees);
- var _this = this;
- this._boundClearItems = function() {
- clearItems();
- };
+ if (index > -1) {
+ debouncee = this._debouncees[index];
+ this._debouncees.splice(index, 1);
+ this._platform.clearTimeout(debouncee[2]);
+ }
- this._timerTimeoutId = undefined;
- this._timers = [];
+ timer = this._platform.setTimeout(function () {
+ if (!immediate) {
+ backburner.run.apply(backburner, args);
+ }
+ var index = findDebouncee(target, method, backburner._debouncees);
+ if (index > -1) {
+ backburner._debouncees.splice(index, 1);
+ }
+ }, wait);
- this._platform = this.options._platform || {
- setTimeout: function (fn, ms) {
- return setTimeout(fn, ms);
- },
- clearTimeout: function (id) {
- clearTimeout(id);
- }
- };
+ if (immediate && index === -1) {
+ backburner.run.apply(backburner, args);
+ }
- this._boundRunExpiredTimers = function () {
- _this._runExpiredTimers();
- };
-}
+ debouncee = [target, method, timer];
-Backburner.prototype = {
- begin: function() {
- var options = this.options;
- var onBegin = options && options.onBegin;
- var previousInstance = this.currentInstance;
+ backburner._debouncees.push(debouncee);
- if (previousInstance) {
- this.instanceStack.push(previousInstance);
- }
+ return debouncee;
+ },
- this.currentInstance = new DeferredActionQueues(this.queueNames, options);
- this._trigger('begin', this.currentInstance, previousInstance);
- if (onBegin) {
- onBegin(this.currentInstance, previousInstance);
- }
- },
+ cancelTimers: function () {
+ _backburnerUtils.each(this._throttlers, this._boundClearItems);
+ this._throttlers = [];
- end: function() {
- var options = this.options;
- var onEnd = options && options.onEnd;
- var currentInstance = this.currentInstance;
- var nextInstance = null;
+ _backburnerUtils.each(this._debouncees, this._boundClearItems);
+ this._debouncees = [];
- // Prevent double-finally bug in Safari 6.0.2 and iOS 6
- // This bug appears to be resolved in Safari 6.0.5 and iOS 7
- var finallyAlreadyCalled = false;
- try {
- currentInstance.flush();
- } finally {
- if (!finallyAlreadyCalled) {
- finallyAlreadyCalled = true;
+ this._clearTimerTimeout();
+ this._timers = [];
- this.currentInstance = null;
-
- if (this.instanceStack.length) {
- nextInstance = this.instanceStack.pop();
- this.currentInstance = nextInstance;
- }
- this._trigger('end', currentInstance, nextInstance);
- if (onEnd) {
- onEnd(currentInstance, nextInstance);
- }
+ if (this._autorun) {
+ this._platform.clearTimeout(this._autorun);
+ this._autorun = null;
}
- }
- },
+ },
- /**
- Trigger an event. Supports up to two arguments. Designed around
- triggering transition events from one run loop instance to the
- next, which requires an argument for the first instance and then
- an argument for the next instance.
+ hasTimers: function () {
+ return !!this._timers.length || !!this._debouncees.length || !!this._throttlers.length || this._autorun;
+ },
- @private
- @method _trigger
- @param {String} eventName
- @param {any} arg1
- @param {any} arg2
- */
- _trigger: function(eventName, arg1, arg2) {
- var callbacks = this._eventCallbacks[eventName];
- if (callbacks) {
- for (var i = 0; i < callbacks.length; i++) {
- callbacks[i](arg1, arg2);
- }
- }
- },
+ cancel: function (timer) {
+ var timerType = typeof timer;
- on: function(eventName, callback) {
- if (typeof callback !== 'function') {
- throw new TypeError('Callback must be a function');
- }
- var callbacks = this._eventCallbacks[eventName];
- if (callbacks) {
- callbacks.push(callback);
- } else {
- throw new TypeError('Cannot on() event "' + eventName + '" because it does not exist');
- }
- },
-
- off: function(eventName, callback) {
- if (eventName) {
- var callbacks = this._eventCallbacks[eventName];
- var callbackFound = false;
- if (!callbacks) return;
- if (callback) {
- for (var i = 0; i < callbacks.length; i++) {
- if (callbacks[i] === callback) {
- callbackFound = true;
- callbacks.splice(i, 1);
- i--;
+ if (timer && timerType === 'object' && timer.queue && timer.method) {
+ // we're cancelling a deferOnce
+ return timer.queue.cancel(timer);
+ } else if (timerType === 'function') {
+ // we're cancelling a setTimeout
+ for (var i = 0, l = this._timers.length; i < l; i += 2) {
+ if (this._timers[i + 1] === timer) {
+ this._timers.splice(i, 2); // remove the two elements
+ if (i === 0) {
+ this._reinstallTimerTimeout();
+ }
+ return true;
}
}
+ } else if (Object.prototype.toString.call(timer) === '[object Array]') {
+ // we're cancelling a throttle or debounce
+ return this._cancelItem(findThrottler, this._throttlers, timer) || this._cancelItem(findDebouncee, this._debouncees, timer);
+ } else {
+ return; // timer was null or not a timer
}
- if (!callbackFound) {
- throw new TypeError('Cannot off() callback that does not exist');
+ },
+
+ _cancelItem: function (findMethod, array, timer) {
+ var item, index;
+
+ if (timer.length < 3) {
+ return false;
}
- } else {
- throw new TypeError('Cannot off() event "' + eventName + '" because it does not exist');
- }
- },
- run: function(/* target, method, args */) {
- var length = arguments.length;
- var method, target, args;
+ index = findMethod(timer[0], timer[1], array);
- if (length === 1) {
- method = arguments[0];
- target = null;
- } else {
- target = arguments[0];
- method = arguments[1];
- }
+ if (index > -1) {
- if (isString(method)) {
- method = target[method];
- }
+ item = array[index];
- if (length > 2) {
- args = new Array(length - 2);
- for (var i = 0, l = length - 2; i < l; i++) {
- args[i] = arguments[i + 2];
+ if (item[2] === timer[2]) {
+ array.splice(index, 1);
+ this._platform.clearTimeout(timer[2]);
+ return true;
+ }
}
- } else {
- args = [];
- }
- var onError = getOnError(this.options);
+ return false;
+ },
- this.begin();
+ _runExpiredTimers: function () {
+ this._timerTimeoutId = undefined;
+ this.run(this, this._scheduleExpiredTimers);
+ },
- // guard against Safari 6's double-finally bug
- var didFinally = false;
-
- if (onError) {
- try {
- return method.apply(target, args);
- } catch(error) {
- onError(error);
- } finally {
- if (!didFinally) {
- didFinally = true;
- this.end();
+ _scheduleExpiredTimers: function () {
+ var n = Date.now();
+ var timers = this._timers;
+ var i = 0;
+ var l = timers.length;
+ for (; i < l; i += 2) {
+ var executeAt = timers[i];
+ var fn = timers[i + 1];
+ if (executeAt <= n) {
+ this.schedule(this.options.defaultQueue, null, fn);
+ } else {
+ break;
}
}
- } else {
- try {
- return method.apply(target, args);
- } finally {
- if (!didFinally) {
- didFinally = true;
- this.end();
- }
+ timers.splice(0, i);
+ this._installTimerTimeout();
+ },
+
+ _reinstallTimerTimeout: function () {
+ this._clearTimerTimeout();
+ this._installTimerTimeout();
+ },
+
+ _clearTimerTimeout: function () {
+ if (!this._timerTimeoutId) {
+ return;
}
+ this._platform.clearTimeout(this._timerTimeoutId);
+ this._timerTimeoutId = undefined;
+ },
+
+ _installTimerTimeout: function () {
+ if (!this._timers.length) {
+ return;
+ }
+ var minExpiresAt = this._timers[0];
+ var n = Date.now();
+ var wait = Math.max(0, minExpiresAt - n);
+ this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
}
- },
+ };
- /*
- Join the passed method with an existing queue and execute immediately,
- if there isn't one use `Backburner#run`.
+ Backburner.prototype.schedule = Backburner.prototype.defer;
+ Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce;
+ Backburner.prototype.later = Backburner.prototype.setTimeout;
- The join method is like the run method except that it will schedule into
- an existing queue if one already exists. In either case, the join method will
- immediately execute the passed in function and return its result.
+ function getOnError(options) {
+ return options.onError || options.onErrorTarget && options.onErrorTarget[options.onErrorMethod];
+ }
- @method join
- @param {Object} target
- @param {Function} method The method to be executed
- @param {any} args The method arguments
- @return method result
- */
- join: function(/* target, method, args */) {
- if (!this.currentInstance) {
- return this.run.apply(this, arguments);
- }
+ function createAutorun(backburner) {
+ backburner.begin();
+ backburner._autorun = backburner._platform.setTimeout(function () {
+ backburner._autorun = null;
+ backburner.end();
+ });
+ }
- var length = arguments.length;
- var method, target;
+ function findDebouncee(target, method, debouncees) {
+ return findItem(target, method, debouncees);
+ }
- if (length === 1) {
- method = arguments[0];
- target = null;
- } else {
- target = arguments[0];
- method = arguments[1];
- }
+ function findThrottler(target, method, throttlers) {
+ return findItem(target, method, throttlers);
+ }
- if (isString(method)) {
- method = target[method];
- }
+ function findItem(target, method, collection) {
+ var item;
+ var index = -1;
- if (length === 1) {
- return method();
- } else if (length === 2) {
- return method.call(target);
- } else {
- var args = new Array(length - 2);
- for (var i = 0, l = length - 2; i < l; i++) {
- args[i] = arguments[i + 2];
+ for (var i = 0, l = collection.length; i < l; i++) {
+ item = collection[i];
+ if (item[0] === target && item[1] === method) {
+ index = i;
+ break;
}
- return method.apply(target, args);
}
- },
+ return index;
+ }
- /*
- Defer the passed function to run inside the specified queue.
+ function clearItems(item) {
+ this._platform.clearTimeout(item[2]);
+ }
+});
+enifed("backburner/binary-search", ["exports"], function (exports) {
+ "use strict";
- @method defer
- @param {String} queueName
- @param {Object} target
- @param {Function|String} method The method or method name to be executed
- @param {any} args The method arguments
- @return method result
- */
- defer: function(queueName /* , target, method, args */) {
- var length = arguments.length;
- var method, target, args;
+ exports.default = binarySearch;
- if (length === 2) {
- method = arguments[1];
- target = null;
- } else {
- target = arguments[1];
- method = arguments[2];
- }
+ function binarySearch(time, timers) {
+ var start = 0;
+ var end = timers.length - 2;
+ var middle, l;
- if (isString(method)) {
- method = target[method];
- }
+ while (start < end) {
+ // since timers is an array of pairs 'l' will always
+ // be an integer
+ l = (end - start) / 2;
- var stack = this.DEBUG ? new Error() : undefined;
+ // compensate for the index in case even number
+ // of pairs inside timers
+ middle = start + l - l % 2;
- if (length > 3) {
- args = new Array(length - 3);
- for (var i = 3; i < length; i++) {
- args[i-3] = arguments[i];
+ if (time >= timers[middle]) {
+ start = middle + 2;
+ } else {
+ end = middle;
}
- } else {
- args = undefined;
}
- if (!this.currentInstance) { createAutorun(this); }
- return this.currentInstance.schedule(queueName, target, method, args, false, stack);
- },
+ return time >= timers[start] ? start + 2 : start;
+ }
+});
+enifed('backburner/deferred-action-queues', ['exports', 'backburner/utils', 'backburner/queue'], function (exports, _backburnerUtils, _backburnerQueue) {
+ 'use strict';
- deferOnce: function(queueName /* , target, method, args */) {
- var length = arguments.length;
- var method, target, args;
+ exports.default = DeferredActionQueues;
- if (length === 2) {
- method = arguments[1];
- target = null;
- } else {
- target = arguments[1];
- method = arguments[2];
- }
+ function DeferredActionQueues(queueNames, options) {
+ var queues = this.queues = {};
+ this.queueNames = queueNames = queueNames || [];
- if (isString(method)) {
- method = target[method];
- }
+ this.options = options;
- var stack = this.DEBUG ? new Error() : undefined;
+ _backburnerUtils.each(queueNames, function (queueName) {
+ queues[queueName] = new _backburnerQueue.default(queueName, options[queueName], options);
+ });
+ }
- if (length > 3) {
- args = new Array(length - 3);
- for (var i = 3; i < length; i++) {
- args[i-3] = arguments[i];
- }
- } else {
- args = undefined;
- }
+ function noSuchQueue(name) {
+ throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist');
+ }
- if (!this.currentInstance) {
- createAutorun(this);
- }
- return this.currentInstance.schedule(queueName, target, method, args, true, stack);
- },
+ function noSuchMethod(name) {
+ throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist');
+ }
- setTimeout: function() {
- var l = arguments.length;
- var args = new Array(l);
+ DeferredActionQueues.prototype = {
+ schedule: function (name, target, method, args, onceFlag, stack) {
+ var queues = this.queues;
+ var queue = queues[name];
- for (var x = 0; x < l; x++) {
- args[x] = arguments[x];
- }
+ if (!queue) {
+ noSuchQueue(name);
+ }
- var length = args.length,
- method, wait, target,
- methodOrTarget, methodOrWait, methodOrArgs;
-
- if (length === 0) {
- return;
- } else if (length === 1) {
- method = args.shift();
- wait = 0;
- } else if (length === 2) {
- methodOrTarget = args[0];
- methodOrWait = args[1];
-
- if (isFunction(methodOrWait) || isFunction(methodOrTarget[methodOrWait])) {
- target = args.shift();
- method = args.shift();
- wait = 0;
- } else if (isCoercableNumber(methodOrWait)) {
- method = args.shift();
- wait = args.shift();
- } else {
- method = args.shift();
- wait = 0;
+ if (!method) {
+ noSuchMethod(name);
}
- } else {
- var last = args[args.length - 1];
- if (isCoercableNumber(last)) {
- wait = args.pop();
+ if (onceFlag) {
+ return queue.pushUnique(target, method, args, stack);
} else {
- wait = 0;
+ return queue.push(target, method, args, stack);
}
+ },
- methodOrTarget = args[0];
- methodOrArgs = args[1];
+ flush: function () {
+ var queues = this.queues;
+ var queueNames = this.queueNames;
+ var queueName, queue;
+ var queueNameIndex = 0;
+ var numberOfQueues = queueNames.length;
- if (isFunction(methodOrArgs) || (isString(methodOrArgs) &&
- methodOrTarget !== null &&
- methodOrArgs in methodOrTarget)) {
- target = args.shift();
- method = args.shift();
- } else {
- method = args.shift();
+ while (queueNameIndex < numberOfQueues) {
+ queueName = queueNames[queueNameIndex];
+ queue = queues[queueName];
+
+ var numberOfQueueItems = queue._queue.length;
+
+ if (numberOfQueueItems === 0) {
+ queueNameIndex++;
+ } else {
+ queue.flush(false /* async */);
+ queueNameIndex = 0;
+ }
}
}
+ };
+});
+enifed('backburner/platform', ['exports'], function (exports) {
+ 'use strict';
- var executeAt = Date.now() + parseInt(wait !== wait ? 0 : wait, 10);
+ var GlobalContext;
- if (isString(method)) {
- method = target[method];
- }
+ /* global self */
+ if (typeof self === 'object') {
+ GlobalContext = self;
- var onError = getOnError(this.options);
+ /* global global */
+ } else if (typeof global === 'object') {
+ GlobalContext = global;
- function fn() {
- if (onError) {
- try {
- method.apply(target, args);
- } catch (e) {
- onError(e);
- }
+ /* global window */
+ } else if (typeof window === 'object') {
+ GlobalContext = window;
} else {
- method.apply(target, args);
+ throw new Error('no global: `self`, `global` nor `window` was found');
}
- }
- return this._setTimeout(fn, executeAt);
- },
+ exports.default = GlobalContext;
+});
+enifed('backburner/queue', ['exports', 'backburner/utils'], function (exports, _backburnerUtils) {
+ 'use strict';
- _setTimeout: function (fn, executeAt) {
- if (this._timers.length === 0) {
- this._timers.push(executeAt, fn);
- this._installTimerTimeout();
- return fn;
- }
+ exports.default = Queue;
- // find position to insert
- var i = binarySearch(executeAt, this._timers);
+ function Queue(name, options, globalOptions) {
+ this.name = name;
+ this.globalOptions = globalOptions || {};
+ this.options = options;
+ this._queue = [];
+ this.targetQueues = {};
+ this._queueBeingFlushed = undefined;
+ }
- this._timers.splice(i, 0, executeAt, fn);
+ Queue.prototype = {
+ push: function (target, method, args, stack) {
+ var queue = this._queue;
+ queue.push(target, method, args, stack);
- // we should be the new earliest timer if i == 0
- if (i === 0) {
- this._reinstallTimerTimeout();
- }
+ return {
+ queue: this,
+ target: target,
+ method: method
+ };
+ },
- return fn;
- },
+ pushUniqueWithoutGuid: function (target, method, args, stack) {
+ var queue = this._queue;
- throttle: function(target, method /* , args, wait, [immediate] */) {
- var backburner = this;
- var args = new Array(arguments.length);
- for (var i = 0; i < arguments.length; i++) {
- args[i] = arguments[i];
- }
- var immediate = args.pop();
- var wait, throttler, index, timer;
+ for (var i = 0, l = queue.length; i < l; i += 4) {
+ var currentTarget = queue[i];
+ var currentMethod = queue[i + 1];
- if (isNumber(immediate) || isString(immediate)) {
- wait = immediate;
- immediate = true;
- } else {
- wait = args.pop();
- }
+ if (currentTarget === target && currentMethod === method) {
+ queue[i + 2] = args; // replace args
+ queue[i + 3] = stack; // replace stack
+ return;
+ }
+ }
- wait = parseInt(wait, 10);
+ queue.push(target, method, args, stack);
+ },
- index = findThrottler(target, method, this._throttlers);
- if (index > -1) { return this._throttlers[index]; } // throttled
+ targetQueue: function (targetQueue, target, method, args, stack) {
+ var queue = this._queue;
- timer = this._platform.setTimeout(function() {
- if (!immediate) {
- backburner.run.apply(backburner, args);
+ for (var i = 0, l = targetQueue.length; i < l; i += 2) {
+ var currentMethod = targetQueue[i];
+ var currentIndex = targetQueue[i + 1];
+
+ if (currentMethod === method) {
+ queue[currentIndex + 2] = args; // replace args
+ queue[currentIndex + 3] = stack; // replace stack
+ return;
+ }
}
- var index = findThrottler(target, method, backburner._throttlers);
- if (index > -1) {
- backburner._throttlers.splice(index, 1);
- }
- }, wait);
- if (immediate) {
- this.run.apply(this, args);
- }
+ targetQueue.push(method, queue.push(target, method, args, stack) - 4);
+ },
- throttler = [target, method, timer];
+ pushUniqueWithGuid: function (guid, target, method, args, stack) {
+ var hasLocalQueue = this.targetQueues[guid];
- this._throttlers.push(throttler);
+ if (hasLocalQueue) {
+ this.targetQueue(hasLocalQueue, target, method, args, stack);
+ } else {
+ this.targetQueues[guid] = [method, this._queue.push(target, method, args, stack) - 4];
+ }
- return throttler;
- },
+ return {
+ queue: this,
+ target: target,
+ method: method
+ };
+ },
- debounce: function(target, method /* , args, wait, [immediate] */) {
- var backburner = this;
- var args = new Array(arguments.length);
- for (var i = 0; i < arguments.length; i++) {
- args[i] = arguments[i];
- }
+ pushUnique: function (target, method, args, stack) {
+ var KEY = this.globalOptions.GUID_KEY;
- var immediate = args.pop();
- var wait, index, debouncee, timer;
+ if (target && KEY) {
+ var guid = target[KEY];
+ if (guid) {
+ return this.pushUniqueWithGuid(guid, target, method, args, stack);
+ }
+ }
- if (isNumber(immediate) || isString(immediate)) {
- wait = immediate;
- immediate = false;
- } else {
- wait = args.pop();
- }
+ this.pushUniqueWithoutGuid(target, method, args, stack);
- wait = parseInt(wait, 10);
- // Remove debouncee
- index = findDebouncee(target, method, this._debouncees);
+ return {
+ queue: this,
+ target: target,
+ method: method
+ };
+ },
- if (index > -1) {
- debouncee = this._debouncees[index];
- this._debouncees.splice(index, 1);
- this._platform.clearTimeout(debouncee[2]);
- }
+ invoke: function (target, method, args, _, _errorRecordedForStack) {
+ if (args && args.length > 0) {
+ method.apply(target, args);
+ } else {
+ method.call(target);
+ }
+ },
- timer = this._platform.setTimeout(function() {
- if (!immediate) {
- backburner.run.apply(backburner, args);
+ invokeWithOnError: function (target, method, args, onError, errorRecordedForStack) {
+ try {
+ if (args && args.length > 0) {
+ method.apply(target, args);
+ } else {
+ method.call(target);
+ }
+ } catch (error) {
+ onError(error, errorRecordedForStack);
}
- var index = findDebouncee(target, method, backburner._debouncees);
- if (index > -1) {
- backburner._debouncees.splice(index, 1);
+ },
+
+ flush: function (sync) {
+ var queue = this._queue;
+ var length = queue.length;
+
+ if (length === 0) {
+ return;
}
- }, wait);
- if (immediate && index === -1) {
- backburner.run.apply(backburner, args);
- }
+ var globalOptions = this.globalOptions;
+ var options = this.options;
+ var before = options && options.before;
+ var after = options && options.after;
+ var onError = globalOptions.onError || globalOptions.onErrorTarget && globalOptions.onErrorTarget[globalOptions.onErrorMethod];
+ var target, method, args, errorRecordedForStack;
+ var invoke = onError ? this.invokeWithOnError : this.invoke;
- debouncee = [
- target,
- method,
- timer
- ];
+ this.targetQueues = Object.create(null);
+ var queueItems = this._queueBeingFlushed = this._queue.slice();
+ this._queue = [];
- backburner._debouncees.push(debouncee);
+ if (before) {
+ before();
+ }
- return debouncee;
- },
+ for (var i = 0; i < length; i += 4) {
+ target = queueItems[i];
+ method = queueItems[i + 1];
+ args = queueItems[i + 2];
+ errorRecordedForStack = queueItems[i + 3]; // Debugging assistance
- cancelTimers: function() {
- each(this._throttlers, this._boundClearItems);
- this._throttlers = [];
+ if (_backburnerUtils.isString(method)) {
+ method = target[method];
+ }
- each(this._debouncees, this._boundClearItems);
- this._debouncees = [];
+ // method could have been nullified / canceled during flush
+ if (method) {
+ //
+ // ** Attention intrepid developer **
+ //
+ // To find out the stack of this task when it was scheduled onto
+ // the run loop, add the following to your app.js:
+ //
+ // Ember.run.backburner.DEBUG = true; // NOTE: This slows your app, don't leave it on in production.
+ //
+ // Once that is in place, when you are at a breakpoint and navigate
+ // here in the stack explorer, you can look at `errorRecordedForStack.stack`,
+ // which will be the captured stack when this job was scheduled.
+ //
+ invoke(target, method, args, onError, errorRecordedForStack);
+ }
+ }
- this._clearTimerTimeout();
- this._timers = [];
+ if (after) {
+ after();
+ }
- if (this._autorun) {
- this._platform.clearTimeout(this._autorun);
- this._autorun = null;
- }
- },
+ this._queueBeingFlushed = undefined;
- hasTimers: function() {
- return !!this._timers.length || !!this._debouncees.length || !!this._throttlers.length || this._autorun;
- },
+ if (sync !== false && this._queue.length > 0) {
+ // check if new items have been added
+ this.flush(true);
+ }
+ },
- cancel: function (timer) {
- var timerType = typeof timer;
+ cancel: function (actionToCancel) {
+ var queue = this._queue,
+ currentTarget,
+ currentMethod,
+ i,
+ l;
+ var target = actionToCancel.target;
+ var method = actionToCancel.method;
+ var GUID_KEY = this.globalOptions.GUID_KEY;
- if (timer && timerType === 'object' && timer.queue && timer.method) { // we're cancelling a deferOnce
- return timer.queue.cancel(timer);
- } else if (timerType === 'function') { // we're cancelling a setTimeout
- for (var i = 0, l = this._timers.length; i < l; i += 2) {
- if (this._timers[i + 1] === timer) {
- this._timers.splice(i, 2); // remove the two elements
- if (i === 0) {
- this._reinstallTimerTimeout();
+ if (GUID_KEY && this.targetQueues && target) {
+ var targetQueue = this.targetQueues[target[GUID_KEY]];
+
+ if (targetQueue) {
+ for (i = 0, l = targetQueue.length; i < l; i++) {
+ if (targetQueue[i] === method) {
+ targetQueue.splice(i, 1);
+ }
}
- return true;
}
}
- } else if (Object.prototype.toString.call(timer) === '[object Array]'){ // we're cancelling a throttle or debounce
- return this._cancelItem(findThrottler, this._throttlers, timer) ||
- this._cancelItem(findDebouncee, this._debouncees, timer);
- } else {
- return; // timer was null or not a timer
- }
- },
- _cancelItem: function(findMethod, array, timer){
- var item, index;
+ for (i = 0, l = queue.length; i < l; i += 4) {
+ currentTarget = queue[i];
+ currentMethod = queue[i + 1];
- if (timer.length < 3) { return false; }
+ if (currentTarget === target && currentMethod === method) {
+ queue.splice(i, 4);
+ return true;
+ }
+ }
- index = findMethod(timer[0], timer[1], array);
+ // if not found in current queue
+ // could be in the queue that is being flushed
+ queue = this._queueBeingFlushed;
- if (index > -1) {
-
- item = array[index];
-
- if (item[2] === timer[2]) {
- array.splice(index, 1);
- this._platform.clearTimeout(timer[2]);
- return true;
+ if (!queue) {
+ return;
}
- }
- return false;
- },
+ for (i = 0, l = queue.length; i < l; i += 4) {
+ currentTarget = queue[i];
+ currentMethod = queue[i + 1];
- _runExpiredTimers: function () {
- this._timerTimeoutId = undefined;
- this.run(this, this._scheduleExpiredTimers);
- },
-
- _scheduleExpiredTimers: function () {
- var n = Date.now();
- var timers = this._timers;
- var i = 0;
- var l = timers.length;
- for (; i < l; i += 2) {
- var executeAt = timers[i];
- var fn = timers[i+1];
- if (executeAt <= n) {
- this.schedule(this.options.defaultQueue, null, fn);
- } else {
- break;
+ if (currentTarget === target && currentMethod === method) {
+ // don't mess with array during flush
+ // just nullify the method
+ queue[i + 1] = null;
+ return true;
+ }
}
}
- timers.splice(0, i);
- this._installTimerTimeout();
- },
+ };
+});
+enifed('backburner/utils', ['exports'], function (exports) {
+ 'use strict';
- _reinstallTimerTimeout: function () {
- this._clearTimerTimeout();
- this._installTimerTimeout();
- },
+ exports.each = each;
+ exports.isString = isString;
+ exports.isFunction = isFunction;
+ exports.isNumber = isNumber;
+ exports.isCoercableNumber = isCoercableNumber;
+ var NUMBER = /\d+/;
- _clearTimerTimeout: function () {
- if (!this._timerTimeoutId) {
- return;
+ function each(collection, callback) {
+ for (var i = 0; i < collection.length; i++) {
+ callback(collection[i]);
}
- this._platform.clearTimeout(this._timerTimeoutId);
- this._timerTimeoutId = undefined;
- },
+ }
- _installTimerTimeout: function () {
- if (!this._timers.length) {
- return;
- }
- var minExpiresAt = this._timers[0];
- var n = Date.now();
- var wait = Math.max(0, minExpiresAt - n);
- this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
+ function isString(suspect) {
+ return typeof suspect === 'string';
}
-};
-Backburner.prototype.schedule = Backburner.prototype.defer;
-Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce;
-Backburner.prototype.later = Backburner.prototype.setTimeout;
+ function isFunction(suspect) {
+ return typeof suspect === 'function';
+ }
-function getOnError(options) {
- return options.onError || (options.onErrorTarget && options.onErrorTarget[options.onErrorMethod]);
-}
-
-function createAutorun(backburner) {
- var setTimeout = backburner._platform.setTimeout;
- backburner.begin();
- backburner._autorun = setTimeout(function() {
- backburner._autorun = null;
- backburner.end();
- }, 0);
-}
-
-function findDebouncee(target, method, debouncees) {
- return findItem(target, method, debouncees);
-}
-
-function findThrottler(target, method, throttlers) {
- return findItem(target, method, throttlers);
-}
-
-function findItem(target, method, collection) {
- var item;
- var index = -1;
-
- for (var i = 0, l = collection.length; i < l; i++) {
- item = collection[i];
- if (item[0] === target && item[1] === method) {
- index = i;
- break;
- }
+ function isNumber(suspect) {
+ return typeof suspect === 'number';
}
- return index;
-}
-
-function clearItems(item) {
- this._platform.clearTimeout(item[2]);
-}
-
-exports['default'] = Backburner;
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
+ function isCoercableNumber(number) {
+ return isNumber(number) || NUMBER.test(number);
+ }
});
enifed('ember-console/index', ['exports', 'ember-environment'], function (exports, _emberEnvironment) {
'use strict';
function K() {}
@@ -1337,15 +1290,16 @@
@public
*/
assert: consoleMethod('assert') || assertPolyfill
};
});
-enifed('ember-debug/deprecate', ['exports', 'ember-metal', 'ember-console', 'ember-environment', 'ember-debug/handlers'], function (exports, _emberMetal, _emberConsole, _emberEnvironment, _emberDebugHandlers) {
+enifed('ember-debug/deprecate', ['exports', 'ember-metal/error', 'ember-console', 'ember-environment', 'ember-debug/handlers'], function (exports, _emberMetalError, _emberConsole, _emberEnvironment, _emberDebugHandlers) {
/*global __fail__*/
'use strict';
+ var _slice = Array.prototype.slice;
exports.registerHandler = registerHandler;
exports.default = deprecate;
function registerHandler(handler) {
_emberDebugHandlers.registerHandler('deprecate', handler);
@@ -1416,11 +1370,11 @@
registerHandler(function raiseOnDeprecation(message, options, next) {
if (_emberEnvironment.ENV.RAISE_ON_DEPRECATION) {
var updatedMessage = formatMessage(message);
- throw new _emberMetal.Error(updatedMessage);
+ throw new _emberMetalError.default(updatedMessage);
} else {
next.apply(undefined, arguments);
}
});
@@ -1482,11 +1436,11 @@
until: '3.0.0',
url: 'http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options'
});
}
- _emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(babelHelpers.slice.call(arguments)));
+ _emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(_slice.call(arguments)));
}
});
enifed("ember-debug/handlers", ["exports"], function (exports) {
"use strict";
@@ -1518,11 +1472,11 @@
if (handlerForType) {
handlerForType(message, options);
}
}
});
-enifed('ember-debug/index', ['exports', 'ember-metal', 'ember-environment', 'ember-console', 'ember-debug/deprecate', 'ember-debug/warn'], function (exports, _emberMetal, _emberEnvironment, _emberConsole, _emberDebugDeprecate, _emberDebugWarn) {
+enifed('ember-debug/index', ['exports', 'ember-metal/core', 'ember-environment', 'ember-metal/testing', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/error', 'ember-console', 'ember-debug/deprecate', 'ember-debug/warn'], function (exports, _emberMetalCore, _emberEnvironment, _emberMetalTesting, _emberMetalDebug, _emberMetalFeatures, _emberMetalError, _emberConsole, _emberDebugDeprecate, _emberDebugWarn) {
'use strict';
exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags;
/**
@@ -1554,13 +1508,13 @@
the text of the Error thrown if the assertion fails.
@param {Boolean} test Must be truthy for the assertion to pass. If
falsy, an exception will be thrown.
@public
*/
- _emberMetal.setDebugFunction('assert', function assert(desc, test) {
+ _emberMetalDebug.setDebugFunction('assert', function assert(desc, test) {
if (!test) {
- throw new _emberMetal.Error('Assertion Failed: ' + desc);
+ throw new _emberMetalError.default('Assertion Failed: ' + desc);
}
});
/**
Display a debug notice.
@@ -1574,11 +1528,11 @@
@method debug
@param {String} message A debug message to display.
@public
*/
- _emberMetal.setDebugFunction('debug', function debug(message) {
+ _emberMetalDebug.setDebugFunction('debug', function debug(message) {
_emberConsole.default.debug('DEBUG: ' + message);
});
/**
Display an info notice.
@@ -1587,11 +1541,11 @@
Uses of this method in Ember itself are stripped from the ember.prod.js build.
@method info
@private
*/
- _emberMetal.setDebugFunction('info', function info() {
+ _emberMetalDebug.setDebugFunction('info', function info() {
_emberConsole.default.info.apply(undefined, arguments);
});
/**
Alias an old, deprecated method with its new counterpart.
@@ -1610,11 +1564,11 @@
@param {Object} [options] The options object for Ember.deprecate.
@param {Function} func The new function called to replace its deprecated counterpart.
@return {Function} A new function that wraps the original function with a deprecation warning
@private
*/
- _emberMetal.setDebugFunction('deprecateFunc', function deprecateFunc() {
+ _emberMetalDebug.setDebugFunction('deprecateFunc', function deprecateFunc() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (args.length === 3) {
@@ -1623,11 +1577,11 @@
var options = args[1];
var func = args[2];
return {
v: function () {
- _emberMetal.deprecate(message, false, options);
+ _emberMetalDebug.deprecate(message, false, options);
return func.apply(this, arguments);
}
};
})();
@@ -1637,11 +1591,11 @@
var message = args[0];
var func = args[1];
return {
v: function () {
- _emberMetal.deprecate(message);
+ _emberMetalDebug.deprecate(message);
return func.apply(this, arguments);
}
};
})();
@@ -1668,26 +1622,22 @@
@method runInDebug
@param {Function} func The function to be executed.
@since 1.5.0
@public
*/
- _emberMetal.setDebugFunction('runInDebug', function runInDebug(func) {
+ _emberMetalDebug.setDebugFunction('runInDebug', function runInDebug(func) {
func();
});
- _emberMetal.setDebugFunction('debugSeal', function debugSeal(obj) {
+ _emberMetalDebug.setDebugFunction('debugSeal', function debugSeal(obj) {
Object.seal(obj);
});
- _emberMetal.setDebugFunction('debugFreeze', function debugFreeze(obj) {
- Object.freeze(obj);
- });
+ _emberMetalDebug.setDebugFunction('deprecate', _emberDebugDeprecate.default);
- _emberMetal.setDebugFunction('deprecate', _emberDebugDeprecate.default);
+ _emberMetalDebug.setDebugFunction('warn', _emberDebugWarn.default);
- _emberMetal.setDebugFunction('warn', _emberDebugWarn.default);
-
/**
Will call `Ember.warn()` if ENABLE_OPTIONAL_FEATURES or
any specific FEATURES flag is truthy.
This method is called automatically in debug canary builds.
@@ -1697,36 +1647,36 @@
@return {void}
*/
function _warnIfUsingStrippedFeatureFlags(FEATURES, knownFeatures, featuresWereStripped) {
if (featuresWereStripped) {
- _emberMetal.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
+ _emberMetalDebug.warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !_emberEnvironment.ENV.ENABLE_OPTIONAL_FEATURES, { id: 'ember-debug.feature-flag-with-features-stripped' });
var keys = Object.keys(FEATURES || {});
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (key === 'isEnabled' || !(key in knownFeatures)) {
continue;
}
- _emberMetal.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key], { id: 'ember-debug.feature-flag-with-features-stripped' });
+ _emberMetalDebug.warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key], { id: 'ember-debug.feature-flag-with-features-stripped' });
}
}
}
- if (!_emberMetal.isTesting()) {
+ if (!_emberMetalTesting.isTesting()) {
(function () {
// Complain if they're using FEATURE flags in builds other than canary
- _emberMetal.FEATURES['features-stripped-test'] = true;
+ _emberMetalFeatures.FEATURES['features-stripped-test'] = true;
var featuresWereStripped = true;
if (false) {
featuresWereStripped = false;
}
- delete _emberMetal.FEATURES['features-stripped-test'];
- _warnIfUsingStrippedFeatureFlags(_emberEnvironment.ENV.FEATURES, _emberMetal.DEFAULT_FEATURES, featuresWereStripped);
+ delete _emberMetalFeatures.FEATURES['features-stripped-test'];
+ _warnIfUsingStrippedFeatureFlags(_emberEnvironment.ENV.FEATURES, _emberMetalFeatures.DEFAULT_FEATURES, featuresWereStripped);
// Inform the developer about the Ember Inspector if not installed.
var isFirefox = _emberEnvironment.environment.isFirefox;
var isChrome = _emberEnvironment.environment.isChrome;
@@ -1739,21 +1689,21 @@
downloadURL = 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';
} else if (isFirefox) {
downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';
}
- _emberMetal.debug('For more advanced debugging, install the Ember Inspector from ' + downloadURL);
+ _emberMetalDebug.debug('For more advanced debugging, install the Ember Inspector from ' + downloadURL);
}
}, false);
}
})();
}
/**
@public
@class Ember.Debug
*/
- _emberMetal.default.Debug = {};
+ _emberMetalCore.default.Debug = {};
/**
Allows for runtime registration of handler functions that override the default deprecation behavior.
Deprecations are invoked by calls to [Ember.deprecate](http://emberjs.com/api/classes/Ember.html#method_deprecate).
The following example demonstrates its usage by registering a handler that throws an error if the
@@ -1765,11 +1715,11 @@
throw new Error(`Deprecation message with should: ${message}`);
} else {
// defer to whatever handler was registered before this one
next(message, options);
}
- });
+ }
```
The handler function takes the following arguments:
<ul>
@@ -1786,11 +1736,11 @@
@static
@method registerDeprecationHandler
@param handler {Function} A function to handle deprecation calls.
@since 2.1.0
*/
- _emberMetal.default.Debug.registerDeprecationHandler = _emberDebugDeprecate.registerHandler;
+ _emberMetalCore.default.Debug.registerDeprecationHandler = _emberDebugDeprecate.registerHandler;
/**
Allows for runtime registration of handler functions that override the default warning behavior.
Warnings are invoked by calls made to [Ember.warn](http://emberjs.com/api/classes/Ember.html#method_warn).
The following example demonstrates its usage by registering a handler that does nothing overriding Ember's
default warning behavior.
@@ -1815,11 +1765,11 @@
@static
@method registerWarnHandler
@param handler {Function} A function to handle warnings.
@since 2.1.0
*/
- _emberMetal.default.Debug.registerWarnHandler = _emberDebugWarn.registerHandler;
+ _emberMetalCore.default.Debug.registerWarnHandler = _emberDebugWarn.registerHandler;
/*
We are transitioning away from `ember.js` to `ember.debug.js` to make
it much clearer that it is only for local development purposes.
@@ -1828,17 +1778,18 @@
used a nice helpful warning message will be printed out.
*/
var runningNonEmberDebugJS = false;
exports.runningNonEmberDebugJS = runningNonEmberDebugJS;
if (runningNonEmberDebugJS) {
- _emberMetal.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
+ _emberMetalDebug.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.');
}
});
// reexports
-enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-metal', 'ember-debug/handlers'], function (exports, _emberConsole, _emberMetal, _emberDebugHandlers) {
+enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-metal/debug', 'ember-debug/handlers'], function (exports, _emberConsole, _emberMetalDebug, _emberDebugHandlers) {
'use strict';
+ var _slice = Array.prototype.slice;
exports.registerHandler = registerHandler;
exports.default = warn;
function registerHandler(handler) {
_emberDebugHandlers.registerHandler('warn', handler);
@@ -1879,26 +1830,26 @@
@public
*/
function warn(message, test, options) {
if (!options) {
- _emberMetal.deprecate(missingOptionsDeprecation, false, {
+ _emberMetalDebug.deprecate(missingOptionsDeprecation, false, {
id: 'ember-debug.warn-options-missing',
until: '3.0.0',
url: 'http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options'
});
}
if (options && !options.id) {
- _emberMetal.deprecate(missingOptionsIdDeprecation, false, {
+ _emberMetalDebug.deprecate(missingOptionsIdDeprecation, false, {
id: 'ember-debug.warn-id-missing',
until: '3.0.0',
url: 'http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options'
});
}
- _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(babelHelpers.slice.call(arguments)));
+ _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(_slice.call(arguments)));
}
});
enifed('ember-environment/global', ['exports'], function (exports) {
/* globals global, window, self, mainContext */
@@ -2070,13 +2021,295 @@
Function: defaultTrue(obj.Function)
};
}
}
});
-enifed('ember-metal/alias', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/meta', 'ember-metal/dependent_keys'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalMeta, _emberMetalDependent_keys) {
+enifed('ember-htmlbars-template-compiler/index', ['exports', 'ember-htmlbars-template-compiler/system/compile', 'ember-htmlbars-template-compiler/system/precompile', 'ember-htmlbars-template-compiler/system/compile-options'], function (exports, _emberHtmlbarsTemplateCompilerSystemCompile, _emberHtmlbarsTemplateCompilerSystemPrecompile, _emberHtmlbarsTemplateCompilerSystemCompileOptions) {
'use strict';
+ exports.compile = _emberHtmlbarsTemplateCompilerSystemCompile.default;
+ exports.precompile = _emberHtmlbarsTemplateCompilerSystemPrecompile.default;
+ exports.defaultCompileOptions = _emberHtmlbarsTemplateCompilerSystemCompileOptions.default;
+ exports.registerPlugin = _emberHtmlbarsTemplateCompilerSystemCompileOptions.registerPlugin;
+});
+enifed('ember-htmlbars-template-compiler/plugins/transform-closure-component-attrs-into-mut', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.default = TransformClosureComponentAttrsIntoMut;
+
+ function TransformClosureComponentAttrsIntoMut() {
+ // set later within HTMLBars to the syntax package
+ this.syntax = null;
+ }
+
+ /**
+ @private
+ @method transform
+ @param {AST} ast The AST to be transformed.
+ */
+ TransformClosureComponentAttrsIntoMut.prototype.transform = function TransformClosureComponentAttrsIntoMut_transform(ast) {
+ var b = this.syntax.builders;
+
+ this.syntax.traverse(ast, {
+ SubExpression: function (node) {
+ if (isComponentClosure(node)) {
+ mutParameters(b, node);
+ }
+ }
+ });
+
+ return ast;
+ };
+
+ function isComponentClosure(node) {
+ return node.type === 'SubExpression' && node.path.original === 'component';
+ }
+
+ function mutParameters(builder, node) {
+ for (var i = 1; i < node.params.length; i++) {
+ if (node.params[i].type === 'PathExpression') {
+ node.params[i] = builder.sexpr(builder.path('@mut'), [node.params[i]]);
+ }
+ }
+
+ for (var i = 0; i < node.hash.pairs.length; i++) {
+ var pair = node.hash.pairs[i];
+ var value = pair.value;
+
+ if (value.type === 'PathExpression') {
+ pair.value = builder.sexpr(builder.path('@mut'), [pair.value]);
+ }
+ }
+ }
+});
+enifed('ember-htmlbars-template-compiler/plugins/transform-component-attrs-into-mut', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.default = TransformComponentAttrsIntoMut;
+
+ function TransformComponentAttrsIntoMut() {
+ // set later within HTMLBars to the syntax package
+ this.syntax = null;
+ }
+
+ /**
+ @private
+ @method transform
+ @param {AST} ast The AST to be transformed.
+ */
+ TransformComponentAttrsIntoMut.prototype.transform = function TransformComponentAttrsIntoMut_transform(ast) {
+ var b = this.syntax.builders;
+ var walker = new this.syntax.Walker();
+
+ walker.visit(ast, function (node) {
+ if (!validate(node)) {
+ return;
+ }
+
+ for (var i = 0; i < node.hash.pairs.length; i++) {
+ var pair = node.hash.pairs[i];
+ var value = pair.value;
+
+ if (value.type === 'PathExpression') {
+ pair.value = b.sexpr(b.path('@mut'), [pair.value]);
+ }
+ }
+ });
+
+ return ast;
+ };
+
+ function validate(node) {
+ return node.type === 'BlockStatement' || node.type === 'MustacheStatement';
+ }
+});
+enifed('ember-htmlbars-template-compiler/plugins/transform-component-curly-to-readonly', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.default = TransformComponentCurlyToReadonly;
+
+ function TransformComponentCurlyToReadonly() {
+ // set later within HTMLBars to the syntax package
+ this.syntax = null;
+ }
+
+ /**
+ @private
+ @method transform
+ @param {AST} ast The AST to be transformed.
+ */
+ TransformComponentCurlyToReadonly.prototype.transform = function TransformComponetnCurlyToReadonly_transform(ast) {
+ var b = this.syntax.builders;
+ var walker = new this.syntax.Walker();
+
+ walker.visit(ast, function (node) {
+ if (!validate(node)) {
+ return;
+ }
+
+ for (var i = 0; i < node.attributes.length; i++) {
+ var attr = node.attributes[i];
+
+ if (attr.value.type !== 'MustacheStatement') {
+ return;
+ }
+ if (attr.value.params.length || attr.value.hash.pairs.length) {
+ return;
+ }
+
+ attr.value = b.mustache(b.path('readonly'), [attr.value.path], null, !attr.value.escape);
+ }
+ });
+
+ return ast;
+ };
+
+ function validate(node) {
+ return node.type === 'ComponentNode';
+ }
+});
+enifed('ember-htmlbars-template-compiler/system/compile-options', ['exports', 'ember/version', 'ember-metal/assign', 'ember-template-compiler/plugins', 'ember-htmlbars-template-compiler/plugins/transform-closure-component-attrs-into-mut', 'ember-htmlbars-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-htmlbars-template-compiler/plugins/transform-component-curly-to-readonly'], function (exports, _emberVersion, _emberMetalAssign, _emberTemplateCompilerPlugins, _emberHtmlbarsTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut, _emberHtmlbarsTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberHtmlbarsTemplateCompilerPluginsTransformComponentCurlyToReadonly) {
+ /**
+ @module ember
+ @submodule ember-htmlbars
+ */
+
+ 'use strict';
+
+ exports.registerPlugin = registerPlugin;
+ exports.removePlugin = removePlugin;
+ exports.default = compileOptions;
+ var PLUGINS = [].concat(_emberTemplateCompilerPlugins.default, [
+
+ // the following are ember-htmlbars specific
+ _emberHtmlbarsTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut.default, _emberHtmlbarsTemplateCompilerPluginsTransformComponentAttrsIntoMut.default, _emberHtmlbarsTemplateCompilerPluginsTransformComponentCurlyToReadonly.default]);
+
+ exports.PLUGINS = PLUGINS;
+ var USER_PLUGINS = [];
+
+ function mergePlugins() {
+ var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ options = _emberMetalAssign.default({}, options);
+ if (!options.plugins) {
+ options.plugins = { ast: [].concat(USER_PLUGINS, PLUGINS) };
+ } else {
+ var potententialPugins = [].concat(USER_PLUGINS, PLUGINS);
+ var pluginsToAdd = potententialPugins.filter(function (plugin) {
+ return options.plugins.ast.indexOf(plugin) === -1;
+ });
+
+ options.plugins.ast = options.plugins.ast.slice().concat(pluginsToAdd);
+ }
+
+ return options;
+ }
+
+ function registerPlugin(type, PluginClass) {
+ if (type !== 'ast') {
+ throw new Error('Attempting to register ' + PluginClass + ' as "' + type + '" which is not a valid HTMLBars plugin type.');
+ }
+
+ if (USER_PLUGINS.indexOf(PluginClass) === -1) {
+ USER_PLUGINS = [PluginClass].concat(USER_PLUGINS);
+ }
+ }
+
+ function removePlugin(type, PluginClass) {
+ if (type !== 'ast') {
+ throw new Error('Attempting to unregister ' + PluginClass + ' as "' + type + '" which is not a valid Glimmer plugin type.');
+ }
+
+ USER_PLUGINS = USER_PLUGINS.filter(function (plugin) {
+ return plugin !== PluginClass;
+ });
+ }
+
+ /**
+ @private
+ @property compileOptions
+ */
+
+ function compileOptions(_options) {
+ var disableComponentGeneration = true;
+ var options = undefined;
+ // When calling `Ember.Handlebars.compile()` a second argument of `true`
+ // had a special meaning (long since lost), this just gaurds against
+ // `options` being true, and causing an error during compilation.
+ if (_options === true) {
+ options = {};
+ } else {
+ options = _options || {};
+ }
+
+ options.disableComponentGeneration = disableComponentGeneration;
+
+ options = mergePlugins(options);
+
+ options.buildMeta = function buildMeta(program) {
+ return {
+ revision: 'Ember@' + _emberVersion.default,
+ loc: program.loc,
+ moduleName: options.moduleName
+ };
+ };
+
+ return options;
+ }
+});
+enifed('ember-htmlbars-template-compiler/system/compile', ['exports', 'require', 'ember-htmlbars-template-compiler/system/compile-options'], function (exports, _require, _emberHtmlbarsTemplateCompilerSystemCompileOptions) {
+ 'use strict';
+
+ exports.default = compiler;
+
+ var compile = undefined,
+ template = undefined;
+
+ function compiler(string, options) {
+ if (!template && _require.has('ember-htmlbars')) {
+ template = _require.default('ember-htmlbars').template;
+ }
+
+ if (!compile && _require.has('htmlbars-compiler/compiler')) {
+ compile = _require.default('htmlbars-compiler/compiler').compile;
+ }
+
+ if (!compile) {
+ throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.');
+ }
+
+ if (!template) {
+ throw new Error('Cannot call `compile` with only the template compiler loaded. Please load `ember.debug.js` or `ember.prod.js` prior to calling `compile`.');
+ }
+
+ var templateSpec = compile(string, _emberHtmlbarsTemplateCompilerSystemCompileOptions.default(options));
+
+ return template(templateSpec);
+ }
+});
+enifed('ember-htmlbars-template-compiler/system/precompile', ['exports', 'ember-htmlbars-template-compiler/system/compile-options', 'require'], function (exports, _emberHtmlbarsTemplateCompilerSystemCompileOptions, _require) {
+ 'use strict';
+
+ exports.default = precompile;
+
+ var compileSpec = undefined;
+
+ function precompile(templateString, options) {
+ if (!compileSpec && _require.has('htmlbars-compiler/compiler')) {
+ compileSpec = _require.default('htmlbars-compiler/compiler').compileSpec;
+ }
+
+ if (!compileSpec) {
+ throw new Error('Cannot call `compileSpec` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compileSpec`.');
+ }
+
+ return compileSpec(templateString, _emberHtmlbarsTemplateCompilerSystemCompileOptions.default(options));
+ }
+});
+enifed('ember-metal/alias', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/dependent_keys'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalError, _emberMetalProperties, _emberMetalComputed, _emberMetalUtils, _emberMetalMeta, _emberMetalDependent_keys) {
+ 'use strict';
+
exports.default = alias;
exports.AliasedProperty = AliasedProperty;
function alias(altKey) {
return new AliasedProperty(altKey);
@@ -2088,53 +2321,48 @@
this._dependentKeys = [altKey];
}
AliasedProperty.prototype = Object.create(_emberMetalProperties.Descriptor.prototype);
- AliasedProperty.prototype.setup = function (obj, keyName) {
- _emberMetalDebug.assert('Setting alias \'' + keyName + '\' on self', this.altKey !== keyName);
- var meta = _emberMetalMeta.meta(obj);
- if (meta.peekWatching(keyName)) {
- _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
- }
+ AliasedProperty.prototype.get = function AliasedProperty_get(obj, keyName) {
+ return _emberMetalProperty_get.get(obj, this.altKey);
};
- AliasedProperty.prototype._addDependentKeyIfMissing = function (obj, keyName) {
- var meta = _emberMetalMeta.meta(obj);
- if (!meta.peekDeps(this.altKey, keyName)) {
- _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
- }
+ AliasedProperty.prototype.set = function AliasedProperty_set(obj, keyName, value) {
+ return _emberMetalProperty_set.set(obj, this.altKey, value);
};
- AliasedProperty.prototype._removeDependentKeyIfAdded = function (obj, keyName) {
- var meta = _emberMetalMeta.meta(obj);
- if (meta.peekDeps(this.altKey, keyName)) {
- _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
- }
+ AliasedProperty.prototype.willWatch = function (obj, keyName) {
+ _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
};
- AliasedProperty.prototype.willWatch = AliasedProperty.prototype._addDependentKeyIfMissing;
- AliasedProperty.prototype.didUnwatch = AliasedProperty.prototype._removeDependentKeyIfAdded;
- AliasedProperty.prototype.teardown = AliasedProperty.prototype._removeDependentKeyIfAdded;
+ AliasedProperty.prototype.didUnwatch = function (obj, keyName) {
+ _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, _emberMetalMeta.meta(obj));
+ };
- AliasedProperty.prototype.get = function AliasedProperty_get(obj, keyName) {
- this._addDependentKeyIfMissing(obj, keyName);
-
- return _emberMetalProperty_get.get(obj, this.altKey);
+ AliasedProperty.prototype.setup = function (obj, keyName) {
+ _emberMetalDebug.assert('Setting alias \'' + keyName + '\' on self', this.altKey !== keyName);
+ var m = _emberMetalMeta.meta(obj);
+ if (m.peekWatching(keyName)) {
+ _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, m);
+ }
};
- AliasedProperty.prototype.set = function AliasedProperty_set(obj, keyName, value) {
- return _emberMetalProperty_set.set(obj, this.altKey, value);
+ AliasedProperty.prototype.teardown = function (obj, keyName) {
+ var m = _emberMetalMeta.meta(obj);
+ if (m.peekWatching(keyName)) {
+ _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, m);
+ }
};
AliasedProperty.prototype.readOnly = function () {
this.set = AliasedProperty_readOnlySet;
return this;
};
function AliasedProperty_readOnlySet(obj, keyName, value) {
- throw new _emberMetalError.default('Cannot set read-only property \'' + keyName + '\' on object: ' + _emberUtils.inspect(obj));
+ throw new _emberMetalError.default('Cannot set read-only property \'' + keyName + '\' on object: ' + _emberMetalUtils.inspect(obj));
}
AliasedProperty.prototype.oneWay = function () {
this.set = AliasedProperty_oneWaySet;
return this;
@@ -2147,11 +2375,55 @@
// Backwards compatibility with Ember Data.
AliasedProperty.prototype._meta = undefined;
AliasedProperty.prototype.meta = _emberMetalComputed.ComputedProperty.prototype.meta;
});
-enifed('ember-metal/binding', ['exports', 'ember-utils', 'ember-console', 'ember-environment', 'ember-metal/run_loop', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/events', 'ember-metal/observer', 'ember-metal/path_cache'], function (exports, _emberUtils, _emberConsole, _emberEnvironment, _emberMetalRun_loop, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalEvents, _emberMetalObserver, _emberMetalPath_cache) {
+enifed("ember-metal/assign", ["exports"], function (exports) {
+ /**
+ Copy properties from a source object to a target object.
+
+ ```javascript
+ var a = { first: 'Yehuda' };
+ var b = { last: 'Katz' };
+ var c = { company: 'Tilde Inc.' };
+ Ember.assign(a, b, c); // a === { first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.' }, b === { last: 'Katz' }, c === { company: 'Tilde Inc.' }
+ ```
+
+ @method assign
+ @for Ember
+ @param {Object} original The object to assign into
+ @param {Object} ...args The objects to copy properties from
+ @return {Object}
+ @public
+ */
+ "use strict";
+
+ exports.default = assign;
+
+ function assign(original) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+ if (!arg) {
+ continue;
+ }
+
+ var updates = Object.keys(arg);
+
+ for (var _i = 0; _i < updates.length; _i++) {
+ var prop = updates[_i];
+ original[prop] = arg[prop];
+ }
+ }
+
+ return original;
+ }
+});
+enifed('ember-metal/binding', ['exports', 'ember-console', 'ember-environment', 'ember-metal/run_loop', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/events', 'ember-metal/observer', 'ember-metal/path_cache'], function (exports, _emberConsole, _emberEnvironment, _emberMetalRun_loop, _emberMetalDebug, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalUtils, _emberMetalEvents, _emberMetalObserver, _emberMetalPath_cache) {
'use strict';
exports.bind = bind;
/**
@@ -2256,11 +2528,11 @@
@return {String} string representation of binding
@public
*/
toString: function () {
var oneWay = this._oneWay ? '[oneWay]' : '';
- return 'Ember.Binding<' + _emberUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
+ return 'Ember.Binding<' + _emberMetalUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
},
// ..........................................................
// CONNECT AND SYNC
//
@@ -2623,16 +2895,18 @@
return new Binding(to, from).connect(obj);
}
exports.Binding = Binding;
});
-enifed('ember-metal/cache', ['exports', 'ember-utils', 'ember-metal/meta'], function (exports, _emberUtils, _emberMetalMeta) {
+enifed('ember-metal/cache', ['exports', 'ember-metal/empty_object'], function (exports, _emberMetalEmpty_object) {
'use strict';
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
+
var Cache = (function () {
function Cache(limit, func, key, store) {
- babelHelpers.classCallCheck(this, Cache);
+ _classCallCheck(this, Cache);
this.size = 0;
this.misses = 0;
this.hits = 0;
this.limit = limit;
@@ -2645,11 +2919,11 @@
var key = this.key === undefined ? obj : this.key(obj);
var value = this.store.get(key);
if (value === undefined) {
this.misses++;
value = this._set(key, this.func(obj));
- } else if (value === _emberMetalMeta.UNDEFINED) {
+ } else if (value === UNDEFINED) {
this.hits++;
value = undefined;
} else {
this.hits++;
// nothing to translate
@@ -2665,11 +2939,11 @@
Cache.prototype._set = function _set(key, value) {
if (this.limit > this.size) {
this.size++;
if (value === undefined) {
- this.store.set(key, _emberMetalMeta.UNDEFINED);
+ this.store.set(key, UNDEFINED);
} else {
this.store.set(key, value);
}
}
@@ -2686,15 +2960,17 @@
return Cache;
})();
exports.default = Cache;
+ function UNDEFINED() {}
+
var DefaultStore = (function () {
function DefaultStore() {
- babelHelpers.classCallCheck(this, DefaultStore);
+ _classCallCheck(this, DefaultStore);
- this.data = new _emberUtils.EmptyObject();
+ this.data = new _emberMetalEmpty_object.default();
}
DefaultStore.prototype.get = function get(key) {
return this.data[key];
};
@@ -2702,17 +2978,17 @@
DefaultStore.prototype.set = function set(key, value) {
this.data[key] = value;
};
DefaultStore.prototype.clear = function clear() {
- this.data = new _emberUtils.EmptyObject();
+ this.data = new _emberMetalEmpty_object.default();
};
return DefaultStore;
})();
});
-enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/watch_path'], function (exports, _emberUtils, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalWatch_path) {
+enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/empty_object', 'ember-metal/watch_path'], function (exports, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalEmpty_object, _emberMetalWatch_path) {
'use strict';
exports.finishChains = finishChains;
var FIRST_KEY = /^([^\.]+)/;
@@ -2720,22 +2996,22 @@
function firstKey(path) {
return path.match(FIRST_KEY)[0];
}
function isObject(obj) {
- return typeof obj === 'object' && obj;
+ return obj && typeof obj === 'object';
}
function isVolatile(obj) {
return !(isObject(obj) && obj.isDescriptor && obj._volatile === false);
}
function ChainWatchers() {
// chain nodes that reference a key in this obj by key
// we only create ChainWatchers when we are going to add them
// so create this upfront
- this.chains = new _emberUtils.EmptyObject();
+ this.chains = new _emberMetalEmpty_object.default();
}
ChainWatchers.prototype = {
add: function (key, node) {
var nodes = this.chains[key];
@@ -2817,32 +3093,36 @@
function makeChainWatcher() {
return new ChainWatchers();
}
function addChainWatcher(obj, keyName, node) {
+ if (!isObject(obj)) {
+ return;
+ }
+
var m = _emberMetalMeta.meta(obj);
m.writableChainWatchers(makeChainWatcher).add(keyName, node);
_emberMetalWatch_key.watchKey(obj, keyName, m);
}
- function removeChainWatcher(obj, keyName, node, _meta) {
+ function removeChainWatcher(obj, keyName, node) {
if (!isObject(obj)) {
return;
}
- var meta = _meta || _emberMetalMeta.peekMeta(obj);
+ var m = _emberMetalMeta.peekMeta(obj);
- if (!meta || !meta.readableChainWatchers()) {
+ if (!m || !m.readableChainWatchers()) {
return;
}
// make meta writable
- meta = _emberMetalMeta.meta(obj);
+ m = _emberMetalMeta.meta(obj);
- meta.readableChainWatchers().remove(keyName, node);
+ m.readableChainWatchers().remove(keyName, node);
- _emberMetalWatch_key.unwatchKey(obj, keyName, meta);
+ _emberMetalWatch_key.unwatchKey(obj, keyName, m);
}
// A ChainNode watches a single key on an object. If you provide a starting
// value for the key then the node won't actually watch it. For a root node
// pass null for parent and key and object for value.
@@ -2863,19 +3143,14 @@
this.count = 0;
this._value = value;
this._paths = {};
if (this._watching) {
- var obj = parent.value();
-
- if (!isObject(obj)) {
- return;
+ this._object = parent.value();
+ if (this._object) {
+ addChainWatcher(this._object, this._key, this);
}
-
- this._object = obj;
-
- addChainWatcher(this._object, this._key, this);
}
}
function lazyGet(obj, key) {
if (!obj) {
@@ -2964,11 +3239,11 @@
chain: function (key, path) {
var chains = this._chains;
var node = undefined;
if (chains === undefined) {
- chains = this._chains = new _emberUtils.EmptyObject();
+ chains = this._chains = new _emberMetalEmpty_object.default();
} else {
node = chains[key];
}
if (node === undefined) {
@@ -3004,23 +3279,15 @@
}
},
notify: function (revalidate, affected) {
if (revalidate && this._watching) {
- var parentValue = this._parent.value();
-
- if (parentValue !== this._object) {
- if (this._object) {
- removeChainWatcher(this._object, this._key, this);
- }
-
- if (isObject(parentValue)) {
- this._object = parentValue;
- addChainWatcher(parentValue, this._key, this);
- } else {
- this._object = undefined;
- }
+ var obj = this._parent.value();
+ if (obj !== this._object) {
+ removeChainWatcher(this._object, this._key, this);
+ this._object = obj;
+ addChainWatcher(obj, this._key, this);
}
this._value = undefined;
}
// then notify chains...
@@ -3075,20 +3342,22 @@
}
exports.removeChainWatcher = removeChainWatcher;
exports.ChainNode = ChainNode;
});
-enifed('ember-metal/computed', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/property_set', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/property_events', 'ember-metal/dependent_keys'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalProperty_set, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalError, _emberMetalProperties, _emberMetalProperty_events, _emberMetalDependent_keys) {
+enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/error', 'ember-metal/properties', 'ember-metal/property_events', 'ember-metal/dependent_keys'], function (exports, _emberMetalDebug, _emberMetalProperty_set, _emberMetalUtils, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalError, _emberMetalProperties, _emberMetalProperty_events, _emberMetalDependent_keys) {
'use strict';
exports.default = computed;
/**
@module ember
@submodule ember-metal
*/
+ function UNDEFINED() {}
+
var DEEP_EACH_REGEX = /\.@each\.[^.]+\./;
/**
A computed property transforms an object literal with object's accessor function(s) into a property.
@@ -3219,11 +3488,10 @@
this._dependentKeys = opts && opts.dependentKeys;
this._readOnly = false;
}
ComputedProperty.prototype = new _emberMetalProperties.Descriptor();
- ComputedProperty.prototype.constructor = ComputedProperty;
var ComputedPropertyPrototype = ComputedProperty.prototype;
/**
Call on a computed property to set it into non-cached mode. When in this
@@ -3386,19 +3654,19 @@
var meta = _emberMetalMeta.meta(obj);
var cache = meta.writableCache();
var result = cache[keyName];
- if (result === _emberMetalMeta.UNDEFINED) {
+ if (result === UNDEFINED) {
return undefined;
} else if (result !== undefined) {
return result;
}
var ret = this._getter.call(obj, keyName);
if (ret === undefined) {
- cache[keyName] = _emberMetalMeta.UNDEFINED;
+ cache[keyName] = UNDEFINED;
} else {
cache[keyName] = ret;
}
var chainWatchers = meta.readableChainWatchers();
@@ -3425,11 +3693,11 @@
return this.setWithSuspend(obj, keyName, value);
};
ComputedPropertyPrototype._throwReadOnlyError = function computedPropertyThrowReadOnlyError(obj, keyName) {
- throw new _emberMetalError.default('Cannot set read-only property "' + keyName + '" on object: ' + _emberUtils.inspect(obj));
+ throw new _emberMetalError.default('Cannot set read-only property "' + keyName + '" on object: ' + _emberMetalUtils.inspect(obj));
};
ComputedPropertyPrototype.clobberSet = function computedPropertyClobberSet(obj, keyName, value) {
var cachedValue = cacheFor(obj, keyName);
_emberMetalProperties.defineProperty(obj, keyName, null, cachedValue);
@@ -3457,11 +3725,11 @@
// either there is a writable cache or we need one to update
var cache = meta.writableCache();
var hadCachedValue = false;
var cachedValue = undefined;
if (cache[keyName] !== undefined) {
- if (cache[keyName] !== _emberMetalMeta.UNDEFINED) {
+ if (cache[keyName] !== UNDEFINED) {
cachedValue = cache[keyName];
}
hadCachedValue = true;
}
@@ -3481,11 +3749,11 @@
if (!hadCachedValue) {
_emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
}
if (ret === undefined) {
- cache[keyName] = _emberMetalMeta.UNDEFINED;
+ cache[keyName] = UNDEFINED;
} else {
cache[keyName] = ret;
}
_emberMetalProperty_events.propertyDidChange(obj, keyName);
@@ -3626,27 +3894,27 @@
function cacheFor(obj, key) {
var meta = _emberMetalMeta.peekMeta(obj);
var cache = meta && meta.source === obj && meta.readableCache();
var ret = cache && cache[key];
- if (ret === _emberMetalMeta.UNDEFINED) {
+ if (ret === UNDEFINED) {
return undefined;
}
return ret;
}
cacheFor.set = function (cache, key, value) {
if (value === undefined) {
- cache[key] = _emberMetalMeta.UNDEFINED;
+ cache[key] = UNDEFINED;
} else {
cache[key] = value;
}
};
cacheFor.get = function (cache, key) {
var ret = cache[key];
- if (ret === _emberMetalMeta.UNDEFINED) {
+ if (ret === UNDEFINED) {
return undefined;
}
return ret;
};
@@ -3683,10 +3951,11 @@
*/
var Ember = typeof _emberEnvironment.context.imports.Ember === 'object' && _emberEnvironment.context.imports.Ember || {};
// Make sure these are set whether Ember was already defined or not
Ember.isNamespace = true;
+
Ember.toString = function () {
return 'Ember';
};
// ..........................................................
@@ -3706,11 +3975,10 @@
exports.debug = debug;
exports.deprecate = deprecate;
exports.deprecateFunc = deprecateFunc;
exports.runInDebug = runInDebug;
exports.debugSeal = debugSeal;
- exports.debugFreeze = debugFreeze;
var debugFunctions = {
assert: function () {},
info: function () {},
warn: function () {},
debug: function () {},
@@ -3721,12 +3989,11 @@
}
return args[args.length - 1];
},
runInDebug: function () {},
- debugSeal: function () {},
- debugFreeze: function () {}
+ debugSeal: function () {}
};
exports.debugFunctions = debugFunctions;
function getDebugFunction(name) {
@@ -3766,14 +4033,10 @@
}
function debugSeal() {
return debugFunctions.debugSeal.apply(undefined, arguments);
}
-
- function debugFreeze() {
- return debugFunctions.debugFreeze.apply(undefined, arguments);
- }
});
enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/watching'], function (exports, _emberMetalWatching) {
'no use strict';
// Remove "use strict"; from transpiled module until
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
@@ -3865,82 +4128,89 @@
return _emberMetalProperty_get.get(this, newKey);
}
});
}
});
-enifed('ember-metal/descriptor', ['exports', 'ember-metal/properties'], function (exports, _emberMetalProperties) {
+enifed('ember-metal/dictionary', ['exports', 'ember-metal/empty_object'], function (exports, _emberMetalEmpty_object) {
'use strict';
- exports.default = descriptor;
+ exports.default = makeDictionary;
- function descriptor(desc) {
- return new Descriptor(desc);
+ // the delete is meant to hint at runtimes that this object should remain in
+ // dictionary mode. This is clearly a runtime specific hack, but currently it
+ // appears worthwhile in some usecases. Please note, these deletes do increase
+ // the cost of creation dramatically over a plain Object.create. And as this
+ // only makes sense for long-lived dictionaries that aren't instantiated often.
+
+ function makeDictionary(parent) {
+ var dict = undefined;
+ if (parent === null) {
+ dict = new _emberMetalEmpty_object.default();
+ } else {
+ dict = Object.create(parent);
+ }
+ dict['_dict'] = null;
+ delete dict['_dict'];
+ return dict;
}
+});
+enifed("ember-metal/empty_object", ["exports"], function (exports) {
+ // This exists because `Object.create(null)` is absurdly slow compared
+ // to `new EmptyObject()`. In either case, you want a null prototype
+ // when you're treating the object instances as arbitrary dictionaries
+ // and don't want your keys colliding with build-in methods on the
+ // default object prototype.
- /**
- A wrapper for a native ES5 descriptor. In an ideal world, we wouldn't need
- this at all, however, the way we currently flatten/merge our mixins require
- a special value to denote a descriptor.
-
- @class Descriptor
- @private
- */
+ "use strict";
- var Descriptor = (function (_EmberDescriptor) {
- babelHelpers.inherits(Descriptor, _EmberDescriptor);
-
- function Descriptor(desc) {
- babelHelpers.classCallCheck(this, Descriptor);
-
- _EmberDescriptor.call(this);
- this.desc = desc;
+ var proto = Object.create(null, {
+ // without this, we will always still end up with (new
+ // EmptyObject()).constructor === Object
+ constructor: {
+ value: undefined,
+ enumerable: false,
+ writable: true
}
+ });
- Descriptor.prototype.setup = function setup(obj, key) {
- Object.defineProperty(obj, key, this.desc);
- };
-
- Descriptor.prototype.teardown = function teardown(obj, key) {};
-
- return Descriptor;
- })(_emberMetalProperties.Descriptor);
+ function EmptyObject() {}
+ EmptyObject.prototype = proto;
+ exports.default = EmptyObject;
});
-enifed("ember-metal/error", ["exports"], function (exports) {
+enifed('ember-metal/error', ['exports'], function (exports) {
+ 'use strict';
+ exports.default = EmberError;
+ var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
+
/**
A subclass of the JavaScript Error object for use in Ember.
@class Error
@namespace Ember
@extends Error
@constructor
@public
*/
- "use strict";
- exports.default = EmberError;
+ function EmberError() {
+ var tmp = Error.apply(this, arguments);
- function EmberError(message) {
- if (!(this instanceof EmberError)) {
- return new EmberError(message);
- }
-
- var error = Error.call(this, message);
-
+ // Adds a `stack` property to the given error object that will yield the
+ // stack trace at the time captureStackTrace was called.
+ // When collecting the stack trace all frames above the topmost call
+ // to this function, including that call, will be left out of the
+ // stack trace.
+ // This is useful because we can hide Ember implementation details
+ // that are not very helpful for the user.
if (Error.captureStackTrace) {
Error.captureStackTrace(this, EmberError);
- } else {
- this.stack = error.stack;
}
-
- this.description = error.description;
- this.fileName = error.fileName;
- this.lineNumber = error.lineNumber;
- this.message = error.message;
- this.name = error.name;
- this.number = error.number;
- this.code = error.code;
+ // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
+ for (var idx = 0; idx < errorProps.length; idx++) {
+ this[errorProps[idx]] = tmp[errorProps[idx]];
+ }
}
EmberError.prototype = Object.create(Error.prototype);
});
enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-metal/testing'], function (exports, _emberConsole, _emberMetalTesting) {
@@ -4002,11 +4272,11 @@
} else {
_emberConsole.default.error(getStack(error));
}
}
});
-enifed('ember-metal/events', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/meta', 'ember-metal/meta_listeners'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalMeta, _emberMetalMeta_listeners) {
+enifed('ember-metal/events', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/meta_listeners'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberMetalMeta, _emberMetalMeta_listeners) {
'no use strict';
// Remove "use strict"; from transpiled module until
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
/**
@@ -4249,11 +4519,11 @@
if (!target) {
target = obj;
}
if ('string' === typeof method) {
if (params) {
- _emberUtils.applyStr(target, method, params);
+ _emberMetalUtils.applyStr(target, method, params);
} else {
target[method]();
}
} else {
if (params) {
@@ -4416,11 +4686,11 @@
});
return all;
}
});
-enifed('ember-metal/features', ['exports', 'ember-utils', 'ember-environment', 'ember/features'], function (exports, _emberUtils, _emberEnvironment, _emberFeatures) {
+enifed('ember-metal/features', ['exports', 'ember-environment', 'ember-metal/assign', 'ember/features'], function (exports, _emberEnvironment, _emberMetalAssign, _emberFeatures) {
'use strict';
exports.default = isEnabled;
/**
@@ -4434,11 +4704,11 @@
@namespace Ember
@static
@since 1.1.0
@public
*/
- var FEATURES = _emberUtils.assign(_emberFeatures.default, _emberEnvironment.ENV.FEATURES);
+ var FEATURES = _emberMetalAssign.default(_emberFeatures.default, _emberEnvironment.ENV.FEATURES);
exports.FEATURES = FEATURES;
/**
Determine whether the specified `feature` is enabled. Used by Ember's
build tools to exclude experimental features from beta/stable builds.
@@ -4512,150 +4782,331 @@
ret[propertyNames[i]] = _emberMetalProperty_get.get(obj, propertyNames[i]);
}
return ret;
}
});
-enifed('ember-metal/index', ['exports', 'require', 'ember-metal/core', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/merge', 'ember-metal/debug', 'ember-metal/instrumentation', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/meta', 'ember-metal/error', 'ember-metal/cache', 'ember-metal/features', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/weak_map', 'ember-metal/events', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'ember-metal/run_loop', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/libraries', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/expand_properties', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/path_cache', 'ember-metal/injected_property', 'ember-metal/tags', 'ember-metal/replace', 'ember-metal/transaction', 'ember-metal/is_proxy', 'ember-metal/descriptor'], function (exports, _require, _emberMetalCore, _emberMetalComputed, _emberMetalAlias, _emberMetalMerge, _emberMetalDebug, _emberMetalInstrumentation, _emberMetalTesting, _emberMetalError_handler, _emberMetalMeta, _emberMetalError, _emberMetalCache, _emberMetalFeatures, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalWeak_map, _emberMetalEvents, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _emberMetalRun_loop, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalLibraries, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalExpand_properties, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalPath_cache, _emberMetalInjected_property, _emberMetalTags, _emberMetalReplace, _emberMetalTransaction, _emberMetalIs_proxy, _emberMetalDescriptor) {
+enifed('ember-metal/index', ['exports', 'require', 'ember-environment', 'ember/version', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/assign', 'ember-metal/merge', 'ember-metal/instrumentation', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/error', 'ember-metal/cache', 'ember-console', 'ember-metal/property_get', 'ember-metal/events', 'ember-metal/observer_set', 'ember-metal/property_events', 'ember-metal/properties', 'ember-metal/property_set', 'ember-metal/weak_map', 'ember-metal/map', 'ember-metal/get_properties', 'ember-metal/set_properties', 'ember-metal/watch_key', 'ember-metal/chains', 'ember-metal/watch_path', 'ember-metal/watching', 'ember-metal/expand_properties', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/observer', 'ember-metal/mixin', 'ember-metal/binding', 'ember-metal/path_cache', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/run_loop', 'ember-metal/libraries', 'ember-metal/is_none', 'ember-metal/is_empty', 'ember-metal/is_blank', 'ember-metal/is_present', 'backburner'], function (exports, _require, _emberEnvironment, _emberVersion, _emberMetalCore, _emberMetalDebug, _emberMetalFeatures, _emberMetalAssign, _emberMetalMerge, _emberMetalInstrumentation, _emberMetalUtils, _emberMetalMeta, _emberMetalError, _emberMetalCache, _emberConsole, _emberMetalProperty_get, _emberMetalEvents, _emberMetalObserver_set, _emberMetalProperty_events, _emberMetalProperties, _emberMetalProperty_set, _emberMetalWeak_map, _emberMetalMap, _emberMetalGet_properties, _emberMetalSet_properties, _emberMetalWatch_key, _emberMetalChains, _emberMetalWatch_path, _emberMetalWatching, _emberMetalExpand_properties, _emberMetalComputed, _emberMetalAlias, _emberMetalObserver, _emberMetalMixin, _emberMetalBinding, _emberMetalPath_cache, _emberMetalTesting, _emberMetalError_handler, _emberMetalRun_loop, _emberMetalLibraries, _emberMetalIs_none, _emberMetalIs_empty, _emberMetalIs_blank, _emberMetalIs_present, _backburner) {
/**
@module ember
@submodule ember-metal
*/
+ // BEGIN IMPORTS
'use strict';
- exports.default = _emberMetalCore.default;
- // reexports
- exports.computed = _emberMetalComputed.default;
- exports.cacheFor = _emberMetalComputed.cacheFor;
- exports.ComputedProperty = _emberMetalComputed.ComputedProperty;
- exports.alias = _emberMetalAlias.default;
- exports.merge = _emberMetalMerge.default;
- exports.assert = _emberMetalDebug.assert;
- exports.info = _emberMetalDebug.info;
- exports.warn = _emberMetalDebug.warn;
- exports.debug = _emberMetalDebug.debug;
- exports.deprecate = _emberMetalDebug.deprecate;
- exports.deprecateFunc = _emberMetalDebug.deprecateFunc;
- exports.runInDebug = _emberMetalDebug.runInDebug;
- exports.setDebugFunction = _emberMetalDebug.setDebugFunction;
- exports.getDebugFunction = _emberMetalDebug.getDebugFunction;
- exports.debugSeal = _emberMetalDebug.debugSeal;
- exports.debugFreeze = _emberMetalDebug.debugFreeze;
- exports.instrument = _emberMetalInstrumentation.instrument;
- exports.flaggedInstrument = _emberMetalInstrumentation.flaggedInstrument;
- exports._instrumentStart = _emberMetalInstrumentation._instrumentStart;
- exports.instrumentationReset = _emberMetalInstrumentation.reset;
- exports.instrumentationSubscribe = _emberMetalInstrumentation.subscribe;
- exports.instrumentationUnsubscribe = _emberMetalInstrumentation.unsubscribe;
- exports.isTesting = _emberMetalTesting.isTesting;
- exports.setTesting = _emberMetalTesting.setTesting;
- exports.getOnerror = _emberMetalError_handler.getOnerror;
- exports.setOnerror = _emberMetalError_handler.setOnerror;
- exports.dispatchError = _emberMetalError_handler.dispatchError;
- exports.setDispatchOverride = _emberMetalError_handler.setDispatchOverride;
- exports.META_DESC = _emberMetalMeta.META_DESC;
- exports.meta = _emberMetalMeta.meta;
- exports.peekMeta = _emberMetalMeta.peekMeta;
- exports.Error = _emberMetalError.default;
- exports.Cache = _emberMetalCache.default;
- exports.isFeatureEnabled = _emberMetalFeatures.default;
- exports.FEATURES = _emberMetalFeatures.FEATURES;
- exports.DEFAULT_FEATURES = _emberMetalFeatures.DEFAULT_FEATURES;
- exports._getPath = _emberMetalProperty_get._getPath;
- exports.get = _emberMetalProperty_get.get;
- exports.getWithDefault = _emberMetalProperty_get.getWithDefault;
- exports.set = _emberMetalProperty_set.set;
- exports.trySet = _emberMetalProperty_set.trySet;
- exports.WeakMap = _emberMetalWeak_map.default;
- exports.accumulateListeners = _emberMetalEvents.accumulateListeners;
- exports.addListener = _emberMetalEvents.addListener;
- exports.hasListeners = _emberMetalEvents.hasListeners;
- exports.listenersFor = _emberMetalEvents.listenersFor;
- exports.on = _emberMetalEvents.on;
- exports.removeListener = _emberMetalEvents.removeListener;
- exports.sendEvent = _emberMetalEvents.sendEvent;
- exports.suspendListener = _emberMetalEvents.suspendListener;
- exports.suspendListeners = _emberMetalEvents.suspendListeners;
- exports.watchedEvents = _emberMetalEvents.watchedEvents;
- exports.isNone = _emberMetalIs_none.default;
- exports.isEmpty = _emberMetalIs_empty.default;
- exports.isBlank = _emberMetalIs_blank.default;
- exports.isPresent = _emberMetalIs_present.default;
- exports.run = _emberMetalRun_loop.default;
- exports.ObserverSet = _emberMetalObserver_set.default;
- exports.beginPropertyChanges = _emberMetalProperty_events.beginPropertyChanges;
- exports.changeProperties = _emberMetalProperty_events.changeProperties;
- exports.endPropertyChanges = _emberMetalProperty_events.endPropertyChanges;
- exports.overrideChains = _emberMetalProperty_events.overrideChains;
- exports.propertyDidChange = _emberMetalProperty_events.propertyDidChange;
- exports.propertyWillChange = _emberMetalProperty_events.propertyWillChange;
- exports.PROPERTY_DID_CHANGE = _emberMetalProperty_events.PROPERTY_DID_CHANGE;
- exports.defineProperty = _emberMetalProperties.defineProperty;
- exports.Descriptor = _emberMetalProperties.Descriptor;
- exports.watchKey = _emberMetalWatch_key.watchKey;
- exports.unwatchKey = _emberMetalWatch_key.unwatchKey;
- exports.ChainNode = _emberMetalChains.ChainNode;
- exports.finishChains = _emberMetalChains.finishChains;
- exports.removeChainWatcher = _emberMetalChains.removeChainWatcher;
- exports.watchPath = _emberMetalWatch_path.watchPath;
- exports.unwatchPath = _emberMetalWatch_path.unwatchPath;
- exports.destroy = _emberMetalWatching.destroy;
- exports.isWatching = _emberMetalWatching.isWatching;
- exports.unwatch = _emberMetalWatching.unwatch;
- exports.watch = _emberMetalWatching.watch;
- exports.watcherCount = _emberMetalWatching.watcherCount;
- exports.libraries = _emberMetalLibraries.default;
- exports.Map = _emberMetalMap.Map;
- exports.MapWithDefault = _emberMetalMap.MapWithDefault;
- exports.OrderedSet = _emberMetalMap.OrderedSet;
- exports.getProperties = _emberMetalGet_properties.default;
- exports.setProperties = _emberMetalSet_properties.default;
- exports.expandProperties = _emberMetalExpand_properties.default;
- exports._suspendObserver = _emberMetalObserver._suspendObserver;
- exports._suspendObservers = _emberMetalObserver._suspendObservers;
- exports.addObserver = _emberMetalObserver.addObserver;
- exports.observersFor = _emberMetalObserver.observersFor;
- exports.removeObserver = _emberMetalObserver.removeObserver;
- exports._addBeforeObserver = _emberMetalObserver._addBeforeObserver;
- exports._removeBeforeObserver = _emberMetalObserver._removeBeforeObserver;
- exports.NAME_KEY = _emberMetalMixin.NAME_KEY;
- exports.Mixin = _emberMetalMixin.Mixin;
- exports.aliasMethod = _emberMetalMixin.aliasMethod;
- exports._immediateObserver = _emberMetalMixin._immediateObserver;
- exports._beforeObserver = _emberMetalMixin._beforeObserver;
- exports.mixin = _emberMetalMixin.mixin;
- exports.observer = _emberMetalMixin.observer;
- exports.required = _emberMetalMixin.required;
- exports.REQUIRED = _emberMetalMixin.REQUIRED;
- exports.hasUnprocessedMixins = _emberMetalMixin.hasUnprocessedMixins;
- exports.clearUnprocessedMixins = _emberMetalMixin.clearUnprocessedMixins;
- exports.detectBinding = _emberMetalMixin.detectBinding;
- exports.Binding = _emberMetalBinding.Binding;
- exports.bind = _emberMetalBinding.bind;
- exports.isGlobalPath = _emberMetalPath_cache.isGlobalPath;
- exports.InjectedProperty = _emberMetalInjected_property.default;
- exports.setHasViews = _emberMetalTags.setHasViews;
- exports.tagForProperty = _emberMetalTags.tagForProperty;
- exports.tagFor = _emberMetalTags.tagFor;
- exports.markObjectAsDirty = _emberMetalTags.markObjectAsDirty;
- exports.replace = _emberMetalReplace.default;
- exports.runInTransaction = _emberMetalTransaction.default;
- exports.didRender = _emberMetalTransaction.didRender;
- exports.assertNotRendered = _emberMetalTransaction.assertNotRendered;
- exports.isProxy = _emberMetalIs_proxy.isProxy;
- exports.descriptor = _emberMetalDescriptor.default;
+ _emberMetalComputed.computed.alias = _emberMetalAlias.default;
- // TODO: this needs to be deleted once we refactor the build tooling
+ // END IMPORTS
+
+ // BEGIN EXPORTS
+ var EmberInstrumentation = _emberMetalCore.default.Instrumentation = {};
+ EmberInstrumentation.instrument = _emberMetalInstrumentation.instrument;
+ EmberInstrumentation.subscribe = _emberMetalInstrumentation.subscribe;
+ EmberInstrumentation.unsubscribe = _emberMetalInstrumentation.unsubscribe;
+ EmberInstrumentation.reset = _emberMetalInstrumentation.reset;
+
+ _emberMetalCore.default.instrument = _emberMetalInstrumentation.instrument;
+ _emberMetalCore.default.subscribe = _emberMetalInstrumentation.subscribe;
+
+ _emberMetalCore.default._Cache = _emberMetalCache.default;
+
+ _emberMetalCore.default.generateGuid = _emberMetalUtils.generateGuid;
+ _emberMetalCore.default.GUID_KEY = _emberMetalUtils.GUID_KEY;
+ _emberMetalCore.default.NAME_KEY = _emberMetalMixin.NAME_KEY;
+ _emberMetalCore.default.platform = {
+ defineProperty: true,
+ hasPropertyAccessors: true
+ };
+
+ _emberMetalCore.default.Error = _emberMetalError.default;
+ _emberMetalCore.default.guidFor = _emberMetalUtils.guidFor;
+ _emberMetalCore.default.META_DESC = _emberMetalMeta.META_DESC;
+ _emberMetalCore.default.meta = _emberMetalMeta.meta;
+ _emberMetalCore.default.inspect = _emberMetalUtils.inspect;
+
+ _emberMetalCore.default.tryCatchFinally = _emberMetalUtils.deprecatedTryCatchFinally;
+ _emberMetalCore.default.makeArray = _emberMetalUtils.makeArray;
+ _emberMetalCore.default.canInvoke = _emberMetalUtils.canInvoke;
+ _emberMetalCore.default.tryInvoke = _emberMetalUtils.tryInvoke;
+ _emberMetalCore.default.wrap = _emberMetalUtils.wrap;
+ _emberMetalCore.default.apply = _emberMetalUtils.apply;
+ _emberMetalCore.default.applyStr = _emberMetalUtils.applyStr;
+ _emberMetalCore.default.uuid = _emberMetalUtils.uuid;
+
+ _emberMetalCore.default.Logger = _emberConsole.default;
+
+ _emberMetalCore.default.get = _emberMetalProperty_get.get;
+ _emberMetalCore.default.getWithDefault = _emberMetalProperty_get.getWithDefault;
+ _emberMetalCore.default._getPath = _emberMetalProperty_get._getPath;
+
+ _emberMetalCore.default.on = _emberMetalEvents.on;
+ _emberMetalCore.default.addListener = _emberMetalEvents.addListener;
+ _emberMetalCore.default.removeListener = _emberMetalEvents.removeListener;
+ _emberMetalCore.default._suspendListener = _emberMetalEvents.suspendListener;
+ _emberMetalCore.default._suspendListeners = _emberMetalEvents.suspendListeners;
+ _emberMetalCore.default.sendEvent = _emberMetalEvents.sendEvent;
+ _emberMetalCore.default.hasListeners = _emberMetalEvents.hasListeners;
+ _emberMetalCore.default.watchedEvents = _emberMetalEvents.watchedEvents;
+ _emberMetalCore.default.listenersFor = _emberMetalEvents.listenersFor;
+ _emberMetalCore.default.accumulateListeners = _emberMetalEvents.accumulateListeners;
+
+ _emberMetalCore.default._ObserverSet = _emberMetalObserver_set.default;
+
+ _emberMetalCore.default.propertyWillChange = _emberMetalProperty_events.propertyWillChange;
+ _emberMetalCore.default.propertyDidChange = _emberMetalProperty_events.propertyDidChange;
+ _emberMetalCore.default.overrideChains = _emberMetalProperty_events.overrideChains;
+ _emberMetalCore.default.beginPropertyChanges = _emberMetalProperty_events.beginPropertyChanges;
+ _emberMetalCore.default.endPropertyChanges = _emberMetalProperty_events.endPropertyChanges;
+ _emberMetalCore.default.changeProperties = _emberMetalProperty_events.changeProperties;
+
+ _emberMetalCore.default.defineProperty = _emberMetalProperties.defineProperty;
+
+ _emberMetalCore.default.set = _emberMetalProperty_set.set;
+ _emberMetalCore.default.trySet = _emberMetalProperty_set.trySet;
+
+ if (false) {
+ _emberMetalCore.default.WeakMap = _emberMetalWeak_map.default;
+ }
+ _emberMetalCore.default.OrderedSet = _emberMetalMap.OrderedSet;
+ _emberMetalCore.default.Map = _emberMetalMap.Map;
+ _emberMetalCore.default.MapWithDefault = _emberMetalMap.MapWithDefault;
+
+ _emberMetalCore.default.getProperties = _emberMetalGet_properties.default;
+ _emberMetalCore.default.setProperties = _emberMetalSet_properties.default;
+
+ _emberMetalCore.default.watchKey = _emberMetalWatch_key.watchKey;
+ _emberMetalCore.default.unwatchKey = _emberMetalWatch_key.unwatchKey;
+
+ _emberMetalCore.default.removeChainWatcher = _emberMetalChains.removeChainWatcher;
+ _emberMetalCore.default._ChainNode = _emberMetalChains.ChainNode;
+ _emberMetalCore.default.finishChains = _emberMetalChains.finishChains;
+
+ _emberMetalCore.default.watchPath = _emberMetalWatch_path.watchPath;
+ _emberMetalCore.default.unwatchPath = _emberMetalWatch_path.unwatchPath;
+
+ _emberMetalCore.default.watch = _emberMetalWatching.watch;
+ _emberMetalCore.default.isWatching = _emberMetalWatching.isWatching;
+ _emberMetalCore.default.unwatch = _emberMetalWatching.unwatch;
+ _emberMetalCore.default.rewatch = _emberMetalWatching.rewatch;
+ _emberMetalCore.default.destroy = _emberMetalWatching.destroy;
+
+ _emberMetalCore.default.expandProperties = _emberMetalExpand_properties.default;
+
+ _emberMetalCore.default.ComputedProperty = _emberMetalComputed.ComputedProperty;
+ _emberMetalCore.default.computed = _emberMetalComputed.computed;
+ _emberMetalCore.default.cacheFor = _emberMetalComputed.cacheFor;
+
+ _emberMetalCore.default.addObserver = _emberMetalObserver.addObserver;
+ _emberMetalCore.default.observersFor = _emberMetalObserver.observersFor;
+ _emberMetalCore.default.removeObserver = _emberMetalObserver.removeObserver;
+ _emberMetalCore.default._suspendObserver = _emberMetalObserver._suspendObserver;
+ _emberMetalCore.default._suspendObservers = _emberMetalObserver._suspendObservers;
+
+ _emberMetalCore.default.required = _emberMetalMixin.required;
+ _emberMetalCore.default.aliasMethod = _emberMetalMixin.aliasMethod;
+ _emberMetalCore.default.observer = _emberMetalMixin.observer;
+ _emberMetalCore.default.immediateObserver = _emberMetalMixin._immediateObserver;
+ _emberMetalCore.default.mixin = _emberMetalMixin.mixin;
+ _emberMetalCore.default.Mixin = _emberMetalMixin.Mixin;
+
+ _emberMetalCore.default.bind = _emberMetalBinding.bind;
+ _emberMetalCore.default.Binding = _emberMetalBinding.Binding;
+ _emberMetalCore.default.isGlobalPath = _emberMetalPath_cache.isGlobalPath;
+
+ _emberMetalCore.default.run = _emberMetalRun_loop.default;
+
+ /**
+ @class Backburner
+ @for Ember
+ @private
+ */
+ _emberMetalCore.default.Backburner = function () {
+ _emberMetalDebug.deprecate('Usage of Ember.Backburner is deprecated.', false, {
+ id: 'ember-metal.ember-backburner',
+ until: '2.8.0',
+ url: 'http://emberjs.com/deprecations/v2.x/#toc_ember-backburner'
+ });
+
+ function BackburnerAlias(args) {
+ return _backburner.default.apply(this, args);
+ }
+
+ BackburnerAlias.prototype = _backburner.default.prototype;
+
+ return new BackburnerAlias(arguments);
+ };
+
+ _emberMetalCore.default._Backburner = _backburner.default;
+
+ /**
+ The semantic version
+ @property VERSION
+ @type String
+ @public
+ */
+ _emberMetalCore.default.VERSION = _emberVersion.default;
+
+ _emberMetalCore.default.libraries = _emberMetalLibraries.default;
+
+ _emberMetalLibraries.default.registerCoreLibrary('Ember', _emberMetalCore.default.VERSION);
+
+ _emberMetalCore.default.isNone = _emberMetalIs_none.default;
+ _emberMetalCore.default.isEmpty = _emberMetalIs_empty.default;
+ _emberMetalCore.default.isBlank = _emberMetalIs_blank.default;
+ _emberMetalCore.default.isPresent = _emberMetalIs_present.default;
+
+ _emberMetalCore.default.assign = Object.assign || _emberMetalAssign.default;
+ _emberMetalCore.default.merge = _emberMetalMerge.default;
+
+ _emberMetalCore.default.FEATURES = _emberMetalFeatures.FEATURES;
+ _emberMetalCore.default.FEATURES.isEnabled = _emberMetalFeatures.default;
+
+ _emberMetalCore.default.EXTEND_PROTOTYPES = _emberEnvironment.ENV.EXTEND_PROTOTYPES;
+
+ // BACKWARDS COMPAT ACCESSORS FOR ENV FLAGS
+ Object.defineProperty(_emberMetalCore.default, 'LOG_STACKTRACE_ON_DEPRECATION', {
+ get: function () {
+ return _emberEnvironment.ENV.LOG_STACKTRACE_ON_DEPRECATION;
+ },
+ set: function (value) {
+ _emberEnvironment.ENV.LOG_STACKTRACE_ON_DEPRECATION = !!value;
+ },
+ enumerable: false
+ });
+
+ Object.defineProperty(_emberMetalCore.default, 'LOG_VERSION', {
+ get: function () {
+ return _emberEnvironment.ENV.LOG_VERSION;
+ },
+ set: function (value) {
+ _emberEnvironment.ENV.LOG_VERSION = !!value;
+ },
+ enumerable: false
+ });
+
+ Object.defineProperty(_emberMetalCore.default, 'MODEL_FACTORY_INJECTIONS', {
+ get: function () {
+ return _emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS;
+ },
+ set: function (value) {
+ _emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS = !!value;
+ },
+ enumerable: false
+ });
+
+ Object.defineProperty(_emberMetalCore.default, 'LOG_BINDINGS', {
+ get: function () {
+ return _emberEnvironment.ENV.LOG_BINDINGS;
+ },
+ set: function (value) {
+ _emberEnvironment.ENV.LOG_BINDINGS = !!value;
+ },
+ enumerable: false
+ });
+
+ Object.defineProperty(_emberMetalCore.default, 'ENV', {
+ get: function () {
+ return _emberEnvironment.ENV;
+ },
+ enumerable: false
+ });
+
+ /**
+ The context that Ember searches for namespace instances on.
+
+ @private
+ */
+ Object.defineProperty(_emberMetalCore.default, 'lookup', {
+ get: function () {
+ return _emberEnvironment.context.lookup;
+ },
+ set: function (value) {
+ _emberEnvironment.context.lookup = value;
+ },
+ enumerable: false
+ });
+
+ Object.defineProperty(_emberMetalCore.default, 'testing', {
+ get: _emberMetalTesting.isTesting,
+ set: _emberMetalTesting.setTesting,
+ enumerable: false
+ });
+
+ /**
+ A function may be assigned to `Ember.onerror` to be called when Ember
+ internals encounter an error. This is useful for specialized error handling
+ and reporting code.
+
+ ```javascript
+ Ember.onerror = function(error) {
+ Em.$.ajax('/report-error', 'POST', {
+ stack: error.stack,
+ otherInformation: 'whatever app state you want to provide'
+ });
+ };
+ ```
+
+ Internally, `Ember.onerror` is used as Backburner's error handler.
+
+ @event onerror
+ @for Ember
+ @param {Exception} error the error object
+ @public
+ */
+ Object.defineProperty(_emberMetalCore.default, 'onerror', {
+ get: _emberMetalError_handler.getOnerror,
+ set: _emberMetalError_handler.setOnerror,
+ enumerable: false
+ });
+
+ /**
+ An empty function useful for some operations. Always returns `this`.
+
+ @method K
+ @return {Object}
+ @public
+ */
+ _emberMetalCore.default.K = function K() {
+ return this;
+ };
+
+ // The debug functions are exported to globals with `require` to
+ // prevent babel-plugin-filter-imports from removing them.
+ var debugModule = _require.default('ember-metal/debug');
+ _emberMetalCore.default.assert = debugModule.assert;
+ _emberMetalCore.default.warn = debugModule.warn;
+ _emberMetalCore.default.debug = debugModule.debug;
+ _emberMetalCore.default.deprecate = debugModule.deprecate;
+ _emberMetalCore.default.deprecateFunc = debugModule.deprecateFunc;
+ _emberMetalCore.default.runInDebug = debugModule.runInDebug;
+ // END EXPORTS
+
// do this for side-effects of updating Ember.assert, warn, etc when
// ember-debug is present
// This needs to be called before any deprecateFunc
-
if (_require.has('ember-debug')) {
_require.default('ember-debug');
+ } else {
+ _emberMetalCore.default.Debug = {};
+ _emberMetalCore.default.Debug.registerDeprecationHandler = function () {};
+ _emberMetalCore.default.Debug.registerWarnHandler = function () {};
}
+
+ _emberMetalCore.default.create = _emberMetalDebug.deprecateFunc('Ember.create is deprecated in favor of Object.create', { id: 'ember-metal.ember-create', until: '3.0.0' }, Object.create);
+ _emberMetalCore.default.keys = _emberMetalDebug.deprecateFunc('Ember.keys is deprecated in favor of Object.keys', { id: 'ember-metal.ember.keys', until: '3.0.0' }, Object.keys);
+
+ /* globals module */
+ if (typeof module === 'object' && module.exports) {
+ module.exports = _emberMetalCore.default;
+ } else {
+ _emberEnvironment.context.exports.Ember = _emberEnvironment.context.exports.Em = _emberMetalCore.default;
+ }
+
+ exports.default = _emberMetalCore.default;
});
-enifed('ember-metal/injected_property', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties) {
+// reexports
+enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties', 'container/owner'], function (exports, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties, _containerOwner) {
'use strict';
exports.default = InjectedProperty;
/**
@@ -4678,11 +5129,11 @@
AliasedPropertyPrototype.oneWay.call(this);
}
function injectedPropertyGet(keyName) {
var desc = this[keyName];
- var owner = _emberUtils.getOwner(this) || this.container; // fallback to `container` for backwards compat
+ var owner = _containerOwner.getOwner(this) || this.container; // fallback to `container` for backwards compat
_emberMetalDebug.assert('InjectedProperties should be defined with the Ember.inject computed property macros.', desc && desc.isDescriptor && desc.type);
_emberMetalDebug.assert('Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.', owner);
return owner.lookup(desc.type + ':' + (desc.name || keyName));
@@ -4839,30 +5290,24 @@
finalizer();
return result;
}
}
- function NOOP() {}
-
// private for now
- function _instrumentStart(name, _payload, _payloadParam) {
- if (subscribers.length === 0) {
- return NOOP;
- }
-
+ function _instrumentStart(name, _payload) {
var listeners = cache[name];
if (!listeners) {
listeners = populateListeners(name);
}
if (listeners.length === 0) {
- return NOOP;
+ return;
}
- var payload = _payload(_payloadParam);
+ var payload = _payload();
var STRUCTURED_PROFILE = _emberEnvironment.ENV.STRUCTURED_PROFILE;
var timeName = undefined;
if (STRUCTURED_PROFILE) {
timeName = name + ': ' + payload.object;
@@ -5139,24 +5584,10 @@
function isPresent(obj) {
return !_emberMetalIs_blank.default(obj);
}
});
-enifed('ember-metal/is_proxy', ['exports', 'ember-metal/meta'], function (exports, _emberMetalMeta) {
- 'use strict';
-
- exports.isProxy = isProxy;
-
- function isProxy(value) {
- if (typeof value === 'object' && value) {
- var meta = _emberMetalMeta.peekMeta(value);
- return meta && meta.isProxy();
- }
-
- return false;
- }
-});
enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/features'], function (exports, _emberMetalDebug, _emberMetalFeatures) {
'use strict';
exports.Libraries = Libraries;
@@ -5223,11 +5654,11 @@
};
}
exports.default = new Libraries();
});
-enifed('ember-metal/map', ['exports', 'ember-utils'], function (exports, _emberUtils) {
+enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/empty_object'], function (exports, _emberMetalUtils, _emberMetalEmpty_object) {
/**
@module ember
@submodule ember-metal
*/
@@ -5257,11 +5688,11 @@
function missingNew(name) {
throw new TypeError('Constructor ' + name + ' requires \'new\'');
}
function copyNull(obj) {
- var output = new _emberUtils.EmptyObject();
+ var output = new _emberMetalEmpty_object.default();
for (var prop in obj) {
// hasOwnPropery is not needed because obj is new EmptyObject();
output[prop] = obj[prop];
}
@@ -5316,11 +5747,11 @@
/**
@method clear
@private
*/
clear: function () {
- this.presenceSet = new _emberUtils.EmptyObject();
+ this.presenceSet = new _emberMetalEmpty_object.default();
this.list = [];
this.size = 0;
},
/**
@@ -5329,11 +5760,11 @@
@param guid (optional, and for internal use)
@return {Ember.OrderedSet}
@private
*/
add: function (obj, _guid) {
- var guid = _guid || _emberUtils.guidFor(obj);
+ var guid = _guid || _emberMetalUtils.guidFor(obj);
var presenceSet = this.presenceSet;
var list = this.list;
if (presenceSet[guid] !== true) {
presenceSet[guid] = true;
@@ -5350,11 +5781,11 @@
@param _guid (optional and for internal use only)
@return {Boolean}
@private
*/
delete: function (obj, _guid) {
- var guid = _guid || _emberUtils.guidFor(obj);
+ var guid = _guid || _emberMetalUtils.guidFor(obj);
var presenceSet = this.presenceSet;
var list = this.list;
if (presenceSet[guid] === true) {
delete presenceSet[guid];
@@ -5387,11 +5818,11 @@
has: function (obj) {
if (this.size === 0) {
return false;
}
- var guid = _emberUtils.guidFor(obj);
+ var guid = _emberMetalUtils.guidFor(obj);
var presenceSet = this.presenceSet;
return presenceSet[guid] === true;
},
@@ -5472,11 +5903,11 @@
*/
function Map() {
if (this instanceof Map) {
this._keys = OrderedSet.create();
this._keys._silenceRemoveDeprecation = true;
- this._values = new _emberUtils.EmptyObject();
+ this._values = new _emberMetalEmpty_object.default();
this.size = 0;
} else {
missingNew('Map');
}
}
@@ -5515,11 +5946,11 @@
if (this.size === 0) {
return;
}
var values = this._values;
- var guid = _emberUtils.guidFor(key);
+ var guid = _emberMetalUtils.guidFor(key);
return values[guid];
},
/**
@@ -5532,11 +5963,11 @@
@private
*/
set: function (key, value) {
var keys = this._keys;
var values = this._values;
- var guid = _emberUtils.guidFor(key);
+ var guid = _emberMetalUtils.guidFor(key);
// ensure we don't store -0
var k = key === -0 ? 0 : key;
keys.add(k, guid);
@@ -5562,11 +5993,11 @@
}
// don't use ES6 "delete" because it will be annoying
// to use in browsers that are not ES6 friendly;
var keys = this._keys;
var values = this._values;
- var guid = _emberUtils.guidFor(key);
+ var guid = _emberMetalUtils.guidFor(key);
if (keys.delete(key, guid)) {
delete values[guid];
this.size = keys.size;
return true;
@@ -5628,11 +6059,11 @@
@method clear
@private
*/
clear: function () {
this._keys.clear();
- this._values = new _emberUtils.EmptyObject();
+ this._values = new _emberMetalEmpty_object.default();
this.size = 0;
},
/**
@method copy
@@ -5753,29 +6184,19 @@
}
return original;
}
});
-enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'ember-metal/meta_listeners', 'ember-metal/debug', 'ember-metal/chains'], function (exports, _emberUtils, _emberMetalFeatures, _emberMetalMeta_listeners, _emberMetalDebug, _emberMetalChains) {
+enifed('ember-metal/meta', ['exports', 'ember-metal/features', 'ember-metal/meta_listeners', 'ember-metal/empty_object', 'ember-metal/utils', 'ember-metal/symbol'], function (exports, _emberMetalFeatures, _emberMetalMeta_listeners, _emberMetalEmpty_object, _emberMetalUtils, _emberMetalSymbol) {
'no use strict';
// Remove "use strict"; from transpiled module until
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
- exports.Meta = Meta;
- exports.deleteMeta = deleteMeta;
exports.meta = meta;
+ exports.peekMeta = peekMeta;
+ exports.deleteMeta = deleteMeta;
- var counters = {
- peekCalls: 0,
- peekParentCalls: 0,
- peekPrototypeWalks: 0,
- setCalls: 0,
- deleteCalls: 0,
- metaCalls: 0,
- metaInstantiated: 0
- };
-
/**
@module ember-metal
*/
/*
@@ -5794,61 +6215,41 @@
peekWatching, clearWatching, writeMixins,
peekMixins, clearMixins, writeBindings,
peekBindings, clearBindings, writeValues,
peekValues, clearValues, writeDeps, forEachInDeps
writableChainWatchers, readableChainWatchers, writableChains,
- readableChains, writableTag, readableTag, writableTags,
- readableTags
+ readableChains, writableTag, readableTag
+
*/
var members = {
cache: ownMap,
weak: ownMap,
watching: inheritedMap,
mixins: inheritedMap,
bindings: inheritedMap,
values: inheritedMap,
+ deps: inheritedMapOfMaps,
chainWatchers: ownCustomObject,
chains: inheritedCustomObject,
- tag: ownCustomObject,
- tags: ownMap
+ tag: ownCustomObject
};
- // FLAGS
- var SOURCE_DESTROYING = 1 << 1;
- var SOURCE_DESTROYED = 1 << 2;
- var META_DESTROYED = 1 << 3;
- var IS_PROXY = 1 << 4;
-
- if (true || false) {
- members.lastRendered = ownMap;
- members.lastRenderedFrom = ownMap; // FIXME: not used in production, remove me from prod builds
- }
-
var memberNames = Object.keys(members);
var META_FIELD = '__ember_meta__';
function Meta(obj, parentMeta) {
- _emberMetalDebug.runInDebug(function () {
- return counters.metaInstantiated++;
- });
-
this._cache = undefined;
this._weak = undefined;
this._watching = undefined;
this._mixins = undefined;
this._bindings = undefined;
this._values = undefined;
this._deps = undefined;
this._chainWatchers = undefined;
this._chains = undefined;
this._tag = undefined;
- this._tags = undefined;
- // initial value for all flags right now is false
- // see FLAGS const for detailed list of flags used
- this._flags = 0;
-
// used only internally
this.source = obj;
// when meta(obj).proto === obj, the object is intended to be only a
// prototype and doesn't need to actually be observable itself
@@ -5858,110 +6259,24 @@
// explicitly instead of using prototypical inheritance because we
// have detailed knowledge of how each property should really be
// inherited, and we can optimize it much better than JS runtimes.
this.parent = parentMeta;
- if (true || false) {
- this._lastRendered = undefined;
- this._lastRenderedFrom = undefined; // FIXME: not used in production, remove me from prod builds
- }
-
this._initializeListeners();
}
Meta.prototype.isInitialized = function (obj) {
return this.proto !== obj;
};
- var NODE_STACK = [];
-
- Meta.prototype.destroy = function () {
- if (this.isMetaDestroyed()) {
- return;
- }
-
- // remove chainWatchers to remove circular references that would prevent GC
- var node = undefined,
- nodes = undefined,
- key = undefined,
- nodeObject = undefined;
- node = this.readableChains();
- if (node) {
- NODE_STACK.push(node);
- // process tree
- while (NODE_STACK.length > 0) {
- node = NODE_STACK.pop();
- // push children
- nodes = node._chains;
- if (nodes) {
- for (key in nodes) {
- if (nodes[key] !== undefined) {
- NODE_STACK.push(nodes[key]);
- }
- }
- }
-
- // remove chainWatcher in node object
- if (node._watching) {
- nodeObject = node._object;
- if (nodeObject) {
- var foreignMeta = peekMeta(nodeObject);
- // avoid cleaning up chain watchers when both current and
- // foreign objects are being destroyed
- // if both are being destroyed manual cleanup is not needed
- // as they will be GC'ed and no non-destroyed references will
- // be remaining
- if (foreignMeta && !foreignMeta.isSourceDestroying()) {
- _emberMetalChains.removeChainWatcher(nodeObject, node._key, node, foreignMeta);
- }
- }
- }
- }
- }
-
- this.setMetaDestroyed();
- };
-
for (var _name in _emberMetalMeta_listeners.protoMethods) {
Meta.prototype[_name] = _emberMetalMeta_listeners.protoMethods[_name];
}
memberNames.forEach(function (name) {
return members[name](name, Meta);
});
- Meta.prototype.isSourceDestroying = function isSourceDestroying() {
- return (this._flags & SOURCE_DESTROYING) !== 0;
- };
-
- Meta.prototype.setSourceDestroying = function setSourceDestroying() {
- this._flags |= SOURCE_DESTROYING;
- };
-
- Meta.prototype.isSourceDestroyed = function isSourceDestroyed() {
- return (this._flags & SOURCE_DESTROYED) !== 0;
- };
-
- Meta.prototype.setSourceDestroyed = function setSourceDestroyed() {
- this._flags |= SOURCE_DESTROYED;
- };
-
- Meta.prototype.isMetaDestroyed = function isMetaDestroyed() {
- return (this._flags & META_DESTROYED) !== 0;
- };
-
- Meta.prototype.setMetaDestroyed = function setMetaDestroyed() {
- this._flags |= META_DESTROYED;
- };
-
- Meta.prototype.isProxy = function isProxy() {
- return (this._flags & IS_PROXY) !== 0;
- };
-
- Meta.prototype.setProxy = function setProxy() {
- this._flags |= IS_PROXY;
- };
-
// Implements a member that is a lazily created, non-inheritable
// POJO.
function ownMap(name, Meta) {
var key = memberProperty(name);
var capitalized = capitalize(name);
@@ -5974,11 +6289,11 @@
}
Meta.prototype._getOrCreateOwnMap = function (key) {
var ret = this[key];
if (!ret) {
- ret = this[key] = new _emberUtils.EmptyObject();
+ ret = this[key] = new _emberMetalEmpty_object.default();
}
return ret;
};
// Implements a member that is a lazily created POJO with inheritable
@@ -5986,23 +6301,21 @@
function inheritedMap(name, Meta) {
var key = memberProperty(name);
var capitalized = capitalize(name);
Meta.prototype['write' + capitalized] = function (subkey, value) {
- _emberMetalDebug.assert('Cannot call write' + capitalized + ' after the object is destroyed.', !this.isMetaDestroyed());
-
var map = this._getOrCreateOwnMap(key);
map[subkey] = value;
};
Meta.prototype['peek' + capitalized] = function (subkey) {
return this._findInherited(key, subkey);
};
Meta.prototype['forEach' + capitalized] = function (fn) {
var pointer = this;
- var seen = new _emberUtils.EmptyObject();
+ var seen = new _emberMetalEmpty_object.default();
while (pointer !== undefined) {
var map = pointer[key];
if (map) {
for (var _key in map) {
if (!seen[_key]) {
@@ -6014,12 +6327,10 @@
pointer = pointer.parent;
}
};
Meta.prototype['clear' + capitalized] = function () {
- _emberMetalDebug.assert('Cannot call clear' + capitalized + ' after the object is destroyed.', !this.isMetaDestroyed());
-
this[key] = undefined;
};
Meta.prototype['deleteFrom' + capitalized] = function (subkey) {
delete this._getOrCreateOwnMap(key)[subkey];
@@ -6052,60 +6363,63 @@
}
pointer = pointer.parent;
}
};
- var UNDEFINED = _emberUtils.symbol('undefined');
+ var UNDEFINED = _emberMetalSymbol.default('undefined');
exports.UNDEFINED = UNDEFINED;
// Implements a member that provides a lazily created map of maps,
// with inheritance at both levels.
- Meta.prototype.writeDeps = function writeDeps(subkey, itemkey, value) {
- _emberMetalDebug.assert('Cannot call writeDeps after the object is destroyed.', !this.isMetaDestroyed());
+ function inheritedMapOfMaps(name, Meta) {
+ var key = memberProperty(name);
+ var capitalized = capitalize(name);
- var outerMap = this._getOrCreateOwnMap('_deps');
- var innerMap = outerMap[subkey];
- if (!innerMap) {
- innerMap = outerMap[subkey] = new _emberUtils.EmptyObject();
- }
- innerMap[itemkey] = value;
- };
+ Meta.prototype['write' + capitalized] = function (subkey, itemkey, value) {
+ var outerMap = this._getOrCreateOwnMap(key);
+ var innerMap = outerMap[subkey];
+ if (!innerMap) {
+ innerMap = outerMap[subkey] = new _emberMetalEmpty_object.default();
+ }
+ innerMap[itemkey] = value;
+ };
- Meta.prototype.peekDeps = function peekDeps(subkey, itemkey) {
- var pointer = this;
- while (pointer !== undefined) {
- var map = pointer._deps;
- if (map) {
- var value = map[subkey];
- if (value) {
- if (value[itemkey] !== undefined) {
- return value[itemkey];
+ Meta.prototype['peek' + capitalized] = function (subkey, itemkey) {
+ var pointer = this;
+ while (pointer !== undefined) {
+ var map = pointer[key];
+ if (map) {
+ var value = map[subkey];
+ if (value) {
+ if (value[itemkey] !== undefined) {
+ return value[itemkey];
+ }
}
}
+ pointer = pointer.parent;
}
- pointer = pointer.parent;
- }
- };
+ };
- Meta.prototype.hasDeps = function hasDeps(subkey) {
- var pointer = this;
- while (pointer !== undefined) {
- if (pointer._deps && pointer._deps[subkey]) {
- return true;
+ Meta.prototype['has' + capitalized] = function (subkey) {
+ var pointer = this;
+ while (pointer !== undefined) {
+ if (pointer[key] && pointer[key][subkey]) {
+ return true;
+ }
+ pointer = pointer.parent;
}
- pointer = pointer.parent;
- }
- return false;
- };
+ return false;
+ };
- Meta.prototype.forEachInDeps = function forEachInDeps(subkey, fn) {
- return this._forEachIn('_deps', subkey, fn);
- };
+ Meta.prototype['forEachIn' + capitalized] = function (subkey, fn) {
+ return this._forEachIn(key, subkey, fn);
+ };
+ }
Meta.prototype._forEachIn = function (key, subkey, fn) {
var pointer = this;
- var seen = new _emberUtils.EmptyObject();
+ var seen = new _emberMetalEmpty_object.default();
var calls = [];
while (pointer !== undefined) {
var map = pointer[key];
if (map) {
var innerMap = map[subkey];
@@ -6133,12 +6447,10 @@
// object using the method you provide.
function ownCustomObject(name, Meta) {
var key = memberProperty(name);
var capitalized = capitalize(name);
Meta.prototype['writable' + capitalized] = function (create) {
- _emberMetalDebug.assert('Cannot call writable' + capitalized + ' after the object is destroyed.', !this.isMetaDestroyed());
-
var ret = this[key];
if (!ret) {
ret = this[key] = create(this.source);
}
return ret;
@@ -6153,12 +6465,10 @@
// their parents by calling your object's `copy()` method.
function inheritedCustomObject(name, Meta) {
var key = memberProperty(name);
var capitalized = capitalize(name);
Meta.prototype['writable' + capitalized] = function (create) {
- _emberMetalDebug.assert('Cannot call writable' + capitalized + ' after the object is destroyed.', !this.isMetaDestroyed());
-
var ret = this[key];
if (!ret) {
if (this.parent) {
ret = this[key] = this.parent['writable' + capitalized](create).copy(this.source);
} else {
@@ -6216,112 +6526,36 @@
return UNDEFINED;
};
Meta.prototype.writeValue = function (obj, key, value) {
- var descriptor = _emberUtils.lookupDescriptor(obj, key);
+ var descriptor = _emberMetalUtils.lookupDescriptor(obj, key);
var isMandatorySetter = descriptor && descriptor.set && descriptor.set.isMandatorySetter;
if (isMandatorySetter) {
this.writeValues(key, value);
} else {
obj[key] = value;
}
};
}
- var HAS_NATIVE_WEAKMAP = (function () {
- // detect if `WeakMap` is even present
- var hasWeakMap = typeof WeakMap === 'function';
- if (!hasWeakMap) {
- return false;
- }
-
- var instance = new WeakMap();
- // use `Object`'s `.toString` directly to prevent us from detecting
- // polyfills as native weakmaps
- return Object.prototype.toString.call(instance) === '[object WeakMap]';
- })();
-
- var setMeta = undefined,
- peekMeta = undefined;
-
// choose the one appropriate for given platform
- if (HAS_NATIVE_WEAKMAP) {
- (function () {
- var getPrototypeOf = Object.getPrototypeOf;
- var metaStore = new WeakMap();
-
- exports.setMeta = setMeta = function WeakMap_setMeta(obj, meta) {
- _emberMetalDebug.runInDebug(function () {
- return counters.setCalls++;
- });
- metaStore.set(obj, meta);
- };
-
- exports.peekMeta = peekMeta = function WeakMap_peekMeta(obj) {
- _emberMetalDebug.runInDebug(function () {
- return counters.peekCalls++;
- });
-
- return metaStore.get(obj);
- };
-
- exports.peekMeta = peekMeta = function WeakMap_peekParentMeta(obj) {
- var pointer = obj;
- var meta = undefined;
- while (pointer) {
- meta = metaStore.get(pointer);
- // jshint loopfunc:true
- _emberMetalDebug.runInDebug(function () {
- return counters.peekCalls++;
- });
- // stop if we find a `null` value, since
- // that means the meta was deleted
- // any other truthy value is a "real" meta
- if (meta === null || meta) {
- return meta;
- }
-
- pointer = getPrototypeOf(pointer);
- _emberMetalDebug.runInDebug(function () {
- return counters.peakPrototypeWalks++;
- });
- }
- };
- })();
- } else {
- exports.setMeta = setMeta = function Fallback_setMeta(obj, meta) {
- // if `null` already, just set it to the new value
- // otherwise define property first
- if (obj[META_FIELD] !== null) {
- if (obj.__defineNonEnumerable) {
- obj.__defineNonEnumerable(EMBER_META_PROPERTY);
- } else {
- Object.defineProperty(obj, META_FIELD, META_DESC);
- }
+ var setMeta = function (obj, meta) {
+ // if `null` already, just set it to the new value
+ // otherwise define property first
+ if (obj[META_FIELD] !== null) {
+ if (obj.__defineNonEnumerable) {
+ obj.__defineNonEnumerable(EMBER_META_PROPERTY);
+ } else {
+ Object.defineProperty(obj, META_FIELD, META_DESC);
}
-
- obj[META_FIELD] = meta;
- };
-
- exports.peekMeta = peekMeta = function Fallback_peekMeta(obj) {
- return obj[META_FIELD];
- };
- }
-
- function deleteMeta(obj) {
- _emberMetalDebug.runInDebug(function () {
- return counters.deleteCalls++;
- });
-
- var meta = peekMeta(obj);
- if (meta) {
- meta.destroy();
}
- }
+ obj[META_FIELD] = meta;
+ };
+
/**
Retrieves the meta hash for an object. If `writable` is true ensures the
hash is writable for this object as well.
The meta object contains information about computed property descriptors as
@@ -6338,14 +6572,10 @@
the meta hash, allowing the method to avoid making an unnecessary copy.
@return {Object} the meta hash for an object
*/
function meta(obj) {
- _emberMetalDebug.runInDebug(function () {
- return counters.metaCalls++;
- });
-
var maybeMeta = peekMeta(obj);
var parent = undefined;
// remove this code, in-favor of explicit parent
if (maybeMeta) {
@@ -6358,13 +6588,20 @@
var newMeta = new Meta(obj, parent);
setMeta(obj, newMeta);
return newMeta;
}
- exports.peekMeta = peekMeta;
- exports.setMeta = setMeta;
- exports.counters = counters;
+ function peekMeta(obj) {
+ return obj[META_FIELD];
+ }
+
+ function deleteMeta(obj) {
+ if (typeof obj[META_FIELD] !== 'object') {
+ return;
+ }
+ obj[META_FIELD] = null;
+ }
});
enifed('ember-metal/meta_listeners', ['exports'], function (exports) {
/*
When we render a rich template hierarchy, the set of events that
*might* happen tends to be much larger than the set of events that
@@ -6535,11 +6772,11 @@
}
}
destination.push(target, method, source[index + 3]);
}
});
-enifed('ember-metal/mixin', ['exports', 'ember-utils', 'ember-metal/error', 'ember-metal/debug', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events'], function (exports, _emberUtils, _emberMetalError, _emberMetalDebug, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalProperties, _emberMetalComputed, _emberMetalBinding, _emberMetalObserver, _emberMetalEvents) {
+enifed('ember-metal/mixin', ['exports', 'ember-metal/error', 'ember-metal/debug', 'ember-metal/assign', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events'], function (exports, _emberMetalError, _emberMetalDebug, _emberMetalAssign, _emberMetalUtils, _emberMetalMeta, _emberMetalExpand_properties, _emberMetalProperties, _emberMetalComputed, _emberMetalBinding, _emberMetalObserver, _emberMetalEvents) {
'no use strict';
// Remove "use strict"; from transpiled module until
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
/**
@@ -6570,11 +6807,11 @@
function mixinProperties(mixinsMeta, mixin) {
var guid = undefined;
if (mixin instanceof Mixin) {
- guid = _emberUtils.guidFor(mixin);
+ guid = _emberMetalUtils.guidFor(mixin);
if (mixinsMeta.peekMixins(guid)) {
return CONTINUE;
}
mixinsMeta.writeMixins(guid, mixin);
return mixin.properties;
@@ -6619,14 +6856,14 @@
// Since multiple mixins may inherit from the same parent, we need
// to clone the computed property so that other mixins do not receive
// the wrapped version.
property = Object.create(property);
- property._getter = _emberUtils.wrap(property._getter, superProperty._getter);
+ property._getter = _emberMetalUtils.wrap(property._getter, superProperty._getter);
if (superProperty._setter) {
if (property._setter) {
- property._setter = _emberUtils.wrap(property._setter, superProperty._setter);
+ property._setter = _emberMetalUtils.wrap(property._setter, superProperty._setter);
} else {
property._setter = superProperty._setter;
}
}
@@ -6649,11 +6886,11 @@
// Only wrap the new method if the original method was a function
if (superMethod === undefined || 'function' !== typeof superMethod) {
return method;
}
- return _emberUtils.wrap(method, superMethod);
+ return _emberMetalUtils.wrap(method, superMethod);
}
function applyConcatenatedProperties(obj, key, value, values) {
var baseValue = values[key] || obj[key];
@@ -6663,14 +6900,14 @@
return baseValue;
} else {
return baseValue.concat(value);
}
} else {
- return _emberUtils.makeArray(baseValue).concat(value);
+ return _emberMetalUtils.makeArray(baseValue).concat(value);
}
} else {
- return _emberUtils.makeArray(value);
+ return _emberMetalUtils.makeArray(value);
}
}
function applyMergedProperties(obj, key, value, values) {
var baseValue = values[key] || obj[key];
@@ -6684,11 +6921,11 @@
if (!baseValue) {
return value;
}
- var newBase = _emberUtils.assign({}, baseValue);
+ var newBase = _emberMetalAssign.default({}, baseValue);
var hasFunction = false;
for (var prop in value) {
if (!value.hasOwnProperty(prop)) {
continue;
@@ -6742,11 +6979,12 @@
function mergeMixins(mixins, m, descs, values, base, keys) {
var currentMixin = undefined,
props = undefined,
key = undefined,
concats = undefined,
- mergings = undefined;
+ mergings = undefined,
+ meta = undefined;
function removeKeys(keyName) {
delete descs[keyName];
delete values[keyName];
}
@@ -6759,10 +6997,11 @@
if (props === CONTINUE) {
continue;
}
if (props) {
+ meta = _emberMetalMeta.meta(base);
if (base.willMergeMixin) {
base.willMergeMixin(props);
}
concats = concatenatedMixinProperties('concatenatedProperties', props, values, base);
mergings = concatenatedMixinProperties('mergedProperties', props, values, base);
@@ -6770,11 +7009,11 @@
for (key in props) {
if (!props.hasOwnProperty(key)) {
continue;
}
keys.push(key);
- addNormalizedProperty(base, key, props[key], m, descs, values, concats, mergings);
+ addNormalizedProperty(base, key, props[key], meta, descs, values, concats, mergings);
}
// manually copy toString() because some JS engines do not enumerate it
if (props.hasOwnProperty('toString')) {
base.toString = props.toString;
@@ -6943,34 +7182,34 @@
applyMixin(obj, args, false);
return obj;
}
- var NAME_KEY = _emberUtils.GUID_KEY + '_name';
+ var NAME_KEY = _emberMetalUtils.GUID_KEY + '_name';
exports.NAME_KEY = NAME_KEY;
/**
The `Ember.Mixin` class allows you to create mixins, whose properties can be
added to other classes. For instance,
```javascript
- const EditableMixin = Ember.Mixin.create({
- edit() {
+ App.Editable = Ember.Mixin.create({
+ edit: function() {
console.log('starting to edit');
this.set('isEditing', true);
},
isEditing: false
});
// Mix mixins into classes by passing them as the first arguments to
- // `.extend.`
- const Comment = Ember.Object.extend(EditableMixin, {
- post: null
+ // .extend.
+ App.CommentView = Ember.View.extend(App.Editable, {
+ template: Ember.Handlebars.compile('{{#if view.isEditing}}...{{else}}...{{/if}}')
});
- let comment = Comment.create(post: somePost);
- comment.edit(); // outputs 'starting to edit'
+ commentView = App.CommentView.create();
+ commentView.edit(); // outputs 'starting to edit'
```
Note that Mixins are created with `Ember.Mixin.create`, not
`Ember.Mixin.extend`.
@@ -6978,25 +7217,23 @@
defined as properties will be shared amongst objects that implement the mixin.
If you want to define a property in a mixin that is not shared, you can define
it either as a computed property or have it be created on initialization of the object.
```javascript
- // filters array will be shared amongst any object implementing mixin
- const FilterableMixin = Ember.Mixin.create({
+ //filters array will be shared amongst any object implementing mixin
+ App.Filterable = Ember.Mixin.create({
filters: Ember.A()
});
- // filters will be a separate array for every object implementing the mixin
- const FilterableMixin = Ember.Mixin.create({
- filters: Ember.computed(function() {
- return Ember.A();
- })
+ //filters will be a separate array for every object implementing the mixin
+ App.Filterable = Ember.Mixin.create({
+ filters: Ember.computed(function() {return Ember.A();})
});
- // filters will be created as a separate array during the object's initialization
- const Filterable = Ember.Mixin.create({
- init() {
+ //filters will be created as a separate array during the object's initialization
+ App.Filterable = Ember.Mixin.create({
+ init: function() {
this._super(...arguments);
this.set("filters", Ember.A());
}
});
```
@@ -7027,11 +7264,11 @@
} else {
this.mixins = undefined;
}
this.ownerConstructor = undefined;
this._without = undefined;
- this[_emberUtils.GUID_KEY] = null;
+ this[_emberMetalUtils.GUID_KEY] = null;
this[NAME_KEY] = null;
_emberMetalDebug.debugSeal(this);
}
Mixin._apply = applyMixin;
@@ -7121,11 +7358,11 @@
};
MixinPrototype.toString = Object.toString;
function _detect(curMixin, targetMixin, seen) {
- var guid = _emberUtils.guidFor(curMixin);
+ var guid = _emberMetalUtils.guidFor(curMixin);
if (seen[guid]) {
return false;
}
seen[guid] = true;
@@ -7148,21 +7385,21 @@
@param obj
@return {Boolean}
@private
*/
MixinPrototype.detect = function (obj) {
- if (typeof obj !== 'object' || obj === null) {
+ if (!obj) {
return false;
}
if (obj instanceof Mixin) {
return _detect(obj, this, {});
}
var m = _emberMetalMeta.peekMeta(obj);
if (!m) {
return false;
}
- return !!m.peekMixins(_emberUtils.guidFor(this));
+ return !!m.peekMixins(_emberMetalUtils.guidFor(this));
};
MixinPrototype.without = function () {
var ret = new Mixin([this]);
@@ -7173,14 +7410,14 @@
ret._without = args;
return ret;
};
function _keys(ret, mixin, seen) {
- if (seen[_emberUtils.guidFor(mixin)]) {
+ if (seen[_emberMetalUtils.guidFor(mixin)]) {
return;
}
- seen[_emberUtils.guidFor(mixin)] = true;
+ seen[_emberMetalUtils.guidFor(mixin)] = true;
if (mixin.properties) {
var props = Object.keys(mixin.properties);
for (var i = 0; i < props.length; i++) {
var key = props[i];
@@ -7379,10 +7616,34 @@
Note, `@each.property` observer is called per each add or replace of an element
and it's not called with a specific enumeration item.
A `_beforeObserver` fires before a property changes.
+ A `_beforeObserver` is an alternative form of `.observesBefore()`.
+
+ ```javascript
+ App.PersonView = Ember.View.extend({
+ friends: [{ name: 'Tom' }, { name: 'Stefan' }, { name: 'Kris' }],
+
+ valueDidChange: Ember.observer('content.value', function(obj, keyName) {
+ // only run if updating a value already in the DOM
+ if (this.get('state') === 'inDOM') {
+ let color = obj.get(keyName) > this.changingFrom ? 'green' : 'red';
+ // logic
+ }
+ }),
+
+ friendsDidChange: Ember.observer('friends.@each.name', function(obj, keyName) {
+ // some logic
+ // obj.get(keyName) returns friends array
+ })
+ });
+ ```
+
+ Also available as `Function.prototype.observesBefore` if prototype extensions are
+ enabled.
+
@method beforeObserver
@for Ember
@param {String} propertyNames*
@param {Function} func
@return func
@@ -7416,11 +7677,11 @@
for (var i = 0; i < _paths.length; ++i) {
_emberMetalExpand_properties.default(_paths[i], addWatchedProperty);
}
if (typeof func !== 'function') {
- throw new _emberMetalError.default('_beforeObserver called without a function');
+ throw new _emberMetalError.default('Ember.beforeObserver called without a function');
}
func.__ember_observesBefore__ = paths;
return func;
}
@@ -7541,11 +7802,11 @@
_emberMetalEvents.removeListener(obj, beforeEvent(path), target, method);
return this;
}
});
-enifed('ember-metal/observer_set', ['exports', 'ember-utils', 'ember-metal/events'], function (exports, _emberUtils, _emberMetalEvents) {
+enifed('ember-metal/observer_set', ['exports', 'ember-metal/utils', 'ember-metal/events'], function (exports, _emberMetalUtils, _emberMetalEvents) {
'use strict';
exports.default = ObserverSet;
/*
@@ -7572,11 +7833,11 @@
}
ObserverSet.prototype.add = function (sender, keyName, eventName) {
var observerSet = this.observerSet;
var observers = this.observers;
- var senderGuid = _emberUtils.guidFor(sender);
+ var senderGuid = _emberMetalUtils.guidFor(sender);
var keySet = observerSet[senderGuid];
var index = undefined;
if (!keySet) {
observerSet[senderGuid] = keySet = {};
@@ -7917,14 +8178,14 @@
// https://github.com/ariya/phantomjs/issues/11856
Object.defineProperty(obj, keyName, { configurable: true, writable: true, value: 'iCry' });
Object.defineProperty(obj, keyName, desc);
}
});
-enifed('ember-metal/property_events', ['exports', 'ember-utils', 'ember-metal/meta', 'ember-metal/events', 'ember-metal/tags', 'ember-metal/observer_set', 'ember-metal/features', 'ember-metal/transaction'], function (exports, _emberUtils, _emberMetalMeta, _emberMetalEvents, _emberMetalTags, _emberMetalObserver_set, _emberMetalFeatures, _emberMetalTransaction) {
+enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-metal/meta', 'ember-metal/events', 'ember-metal/tags', 'ember-metal/observer_set', 'ember-metal/symbol'], function (exports, _emberMetalUtils, _emberMetalMeta, _emberMetalEvents, _emberMetalTags, _emberMetalObserver_set, _emberMetalSymbol) {
'use strict';
- var PROPERTY_DID_CHANGE = _emberUtils.symbol('PROPERTY_DID_CHANGE');
+ var PROPERTY_DID_CHANGE = _emberMetalSymbol.default('PROPERTY_DID_CHANGE');
exports.PROPERTY_DID_CHANGE = PROPERTY_DID_CHANGE;
var beforeObserverSet = new _emberMetalObserver_set.default();
var observerSet = new _emberMetalObserver_set.default();
var deferred = 0;
@@ -7947,29 +8208,29 @@
@param {Object} obj The object with the property that will change
@param {String} keyName The property key (or path) that will change.
@return {void}
@private
*/
- function propertyWillChange(obj, keyName, _meta) {
- var meta = _meta || _emberMetalMeta.peekMeta(obj);
+ function propertyWillChange(obj, keyName) {
+ var m = _emberMetalMeta.peekMeta(obj);
- if (meta && !meta.isInitialized(obj)) {
+ if (m && !m.isInitialized(obj)) {
return;
}
- var watching = meta && meta.peekWatching(keyName) > 0;
+ var watching = m && m.peekWatching(keyName) > 0;
var possibleDesc = obj[keyName];
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
if (desc && desc.willChange) {
desc.willChange(obj, keyName);
}
if (watching) {
- dependentKeysWillChange(obj, keyName, meta);
- chainsWillChange(obj, keyName, meta);
- notifyBeforeObservers(obj, keyName, meta);
+ dependentKeysWillChange(obj, keyName, m);
+ chainsWillChange(obj, keyName, m);
+ notifyBeforeObservers(obj, keyName);
}
}
/**
This function is called just after an object property has changed.
@@ -7982,59 +8243,50 @@
@method propertyDidChange
@for Ember
@param {Object} obj The object with the property that will change
@param {String} keyName The property key (or path) that will change.
- @param {Meta} meta The objects meta.
@return {void}
@private
*/
- function propertyDidChange(obj, keyName, _meta) {
- var meta = _meta || _emberMetalMeta.peekMeta(obj);
+ function propertyDidChange(obj, keyName) {
+ var m = _emberMetalMeta.peekMeta(obj);
- if (meta && !meta.isInitialized(obj)) {
+ if (m && !m.isInitialized(obj)) {
return;
}
- var watching = meta && meta.peekWatching(keyName) > 0;
+ var watching = m && m.peekWatching(keyName) > 0;
var possibleDesc = obj[keyName];
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
// shouldn't this mean that we're watching this key?
if (desc && desc.didChange) {
desc.didChange(obj, keyName);
}
if (watching) {
- if (meta.hasDeps(keyName)) {
- dependentKeysDidChange(obj, keyName, meta);
+ if (m.hasDeps(keyName)) {
+ dependentKeysDidChange(obj, keyName, m);
}
- chainsDidChange(obj, keyName, meta, false);
- notifyObservers(obj, keyName, meta);
+ chainsDidChange(obj, keyName, m, false);
+ notifyObservers(obj, keyName);
}
if (obj[PROPERTY_DID_CHANGE]) {
obj[PROPERTY_DID_CHANGE](keyName);
}
- if (meta && meta.isSourceDestroying()) {
- return;
- }
-
- _emberMetalTags.markObjectAsDirty(meta, keyName);
-
- if (true || false) {
- _emberMetalTransaction.assertNotRendered(obj, keyName, meta);
- }
+ _emberMetalTags.markObjectAsDirty(m);
}
var WILL_SEEN = undefined,
DID_SEEN = undefined;
// called whenever a property is about to change to clear the cache of any dependent keys (and notify those properties of changes, etc...)
function dependentKeysWillChange(obj, depKey, meta) {
- if (meta && meta.isSourceDestroying()) {
+ if (obj.isDestroying) {
return;
}
if (meta && meta.hasDeps(depKey)) {
var seen = WILL_SEEN;
@@ -8052,11 +8304,11 @@
}
}
// called whenever a property has just changed to update dependent keys
function dependentKeysDidChange(obj, depKey, meta) {
- if (meta && meta.isSourceDestroying()) {
+ if (obj.isDestroying) {
return;
}
if (meta && meta.hasDeps(depKey)) {
var seen = DID_SEEN;
@@ -8075,11 +8327,11 @@
}
function iterDeps(method, obj, depKey, seen, meta) {
var possibleDesc = undefined,
desc = undefined;
- var guid = _emberUtils.guidFor(obj);
+ var guid = _emberMetalUtils.guidFor(obj);
var current = seen[guid];
if (!current) {
current = seen[guid] = {};
}
@@ -8100,32 +8352,32 @@
if (desc && desc._suspended === obj) {
return;
}
- method(obj, key, meta);
+ method(obj, key);
});
}
- function chainsWillChange(obj, keyName, meta) {
- var chainWatchers = meta.readableChainWatchers();
- if (chainWatchers) {
- chainWatchers.notify(keyName, false, propertyWillChange);
+ function chainsWillChange(obj, keyName, m) {
+ var c = m.readableChainWatchers();
+ if (c) {
+ c.notify(keyName, false, propertyWillChange);
}
}
- function chainsDidChange(obj, keyName, meta) {
- var chainWatchers = meta.readableChainWatchers();
- if (chainWatchers) {
- chainWatchers.notify(keyName, true, propertyDidChange);
+ function chainsDidChange(obj, keyName, m) {
+ var c = m.readableChainWatchers();
+ if (c) {
+ c.notify(keyName, true, propertyDidChange);
}
}
- function overrideChains(obj, keyName, meta) {
- var chainWatchers = meta.readableChainWatchers();
- if (chainWatchers) {
- chainWatchers.revalidate(keyName);
+ function overrideChains(obj, keyName, m) {
+ var c = m.readableChainWatchers();
+ if (c) {
+ c.revalidate(keyName);
}
}
/**
@method beginPropertyChanges
@@ -8171,12 +8423,12 @@
} finally {
endPropertyChanges.call(binding);
}
}
- function notifyBeforeObservers(obj, keyName, meta) {
- if (meta && meta.isSourceDestroying()) {
+ function notifyBeforeObservers(obj, keyName) {
+ if (obj.isDestroying) {
return;
}
var eventName = keyName + ':before';
var listeners = undefined,
@@ -8188,12 +8440,12 @@
} else {
_emberMetalEvents.sendEvent(obj, eventName, [obj, keyName]);
}
}
- function notifyObservers(obj, keyName, meta) {
- if (meta && meta.isSourceDestroying()) {
+ function notifyObservers(obj, keyName) {
+ if (obj.isDestroying) {
return;
}
var eventName = keyName + ':change';
var listeners = undefined;
@@ -8239,14 +8491,10 @@
/**
Gets the value of a property on an object. If the property is computed,
the function will be invoked. If the property is not defined but the
object implements the `unknownProperty` method then that will be invoked.
- ```javascript
- Ember.get(obj, "name");
- ```
-
If you plan to run on IE8 and older browsers then you should use this
method anytime you want to retrieve a property on an object that you don't
know for sure is private. (Properties beginning with an underscore '_'
are considered private.)
@@ -8270,10 +8518,15 @@
_emberMetalDebug.assert('Get must be called with two arguments; an object and a property key', arguments.length === 2);
_emberMetalDebug.assert('Cannot call get with \'' + keyName + '\' on an undefined object.', obj !== undefined && obj !== null);
_emberMetalDebug.assert('The key provided to get must be a string, you passed ' + keyName, typeof keyName === 'string');
_emberMetalDebug.assert('\'this\' in paths is not supported', !_emberMetalPath_cache.hasThis(keyName));
+ // Helpers that operate with 'this' within an #each
+ if (keyName === '') {
+ return obj;
+ }
+
var value = obj[keyName];
var desc = value !== null && typeof value === 'object' && value.isDescriptor ? value : undefined;
var ret = undefined;
if (desc === undefined && _emberMetalPath_cache.isPath(keyName)) {
@@ -8346,11 +8599,11 @@
return value;
}
exports.default = get;
});
-enifed('ember-metal/property_set', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/property_get', 'ember-metal/property_events', 'ember-metal/error', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalFeatures, _emberMetalProperty_get, _emberMetalProperty_events, _emberMetalError, _emberMetalPath_cache, _emberMetalMeta) {
+enifed('ember-metal/property_set', ['exports', 'ember-metal/debug', 'ember-metal/features', 'ember-metal/property_get', 'ember-metal/property_events', 'ember-metal/error', 'ember-metal/path_cache', 'ember-metal/meta', 'ember-metal/utils'], function (exports, _emberMetalDebug, _emberMetalFeatures, _emberMetalProperty_get, _emberMetalProperty_events, _emberMetalError, _emberMetalPath_cache, _emberMetalMeta, _emberMetalUtils) {
'use strict';
exports.set = set;
exports.trySet = trySet;
@@ -8358,14 +8611,10 @@
Sets the value of a property on an object, respecting computed properties
and notifying observers and other listeners of the change. If the
property is not defined but the object implements the `setUnknownProperty`
method then that will be invoked as well.
- ```javascript
- Ember.set(obj, "name", value);
- ```
-
@method set
@for Ember
@param {Object} obj The object to modify.
@param {String} keyName The property key to set
@param {Object} value The value to set
@@ -8376,11 +8625,11 @@
function set(obj, keyName, value, tolerant) {
_emberMetalDebug.assert('Set must be called with three or four arguments; an object, a property key, a value and tolerant true/false', arguments.length === 3 || arguments.length === 4);
_emberMetalDebug.assert('Cannot call set with \'' + keyName + '\' on an undefined object.', obj && typeof obj === 'object' || typeof obj === 'function');
_emberMetalDebug.assert('The key provided to set must be a string, you passed ' + keyName, typeof keyName === 'string');
_emberMetalDebug.assert('\'this\' in paths is not supported', !_emberMetalPath_cache.hasThis(keyName));
- _emberMetalDebug.assert('calling set on destroyed object: ' + _emberUtils.toString(obj) + '.' + keyName + ' = ' + _emberUtils.toString(value), !obj.isDestroyed);
+ _emberMetalDebug.assert('calling set on destroyed object: ' + _emberMetalUtils.toString(obj) + '.' + keyName + ' = ' + _emberMetalUtils.toString(value), !obj.isDestroyed);
if (_emberMetalPath_cache.isPath(keyName)) {
return setPath(obj, keyName, value, tolerant);
}
@@ -8518,11 +8767,11 @@
ret = ret.concat(splice.apply(array, chunk));
}
return ret;
}
});
-enifed('ember-metal/run_loop', ['exports', 'ember-utils', 'ember-metal/debug', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/property_events', 'backburner'], function (exports, _emberUtils, _emberMetalDebug, _emberMetalTesting, _emberMetalError_handler, _emberMetalProperty_events, _backburner) {
+enifed('ember-metal/run_loop', ['exports', 'ember-metal/debug', 'ember-metal/testing', 'ember-metal/error_handler', 'ember-metal/utils', 'ember-metal/property_events', 'backburner'], function (exports, _emberMetalDebug, _emberMetalTesting, _emberMetalError_handler, _emberMetalUtils, _emberMetalProperty_events, _backburner) {
'use strict';
exports.default = run;
function onBegin(current) {
@@ -8541,11 +8790,11 @@
return _emberMetalError_handler.setOnerror(handler);
}
};
var backburner = new _backburner.default(['sync', 'actions', 'destroy'], {
- GUID_KEY: _emberUtils.GUID_KEY,
+ GUID_KEY: _emberMetalUtils.GUID_KEY,
sync: {
before: _emberMetalProperty_events.beginPropertyChanges,
after: _emberMetalProperty_events.endPropertyChanges
},
defaultQueue: 'actions',
@@ -8785,16 +9034,17 @@
@param {Object} [target] target object to use as the context when invoking a method.
@param {String|Function} method The method to invoke. If you pass a string it
will be resolved on the target object at the time the scheduled item is
invoked allowing you to change the target function.
@param {Object} [arguments*] Optional arguments to be passed to the queued method.
- @return {void}
+ @return {*} Timer information for use in cancelling, see `run.cancel`.
@public
*/
run.schedule = function () /* queue, target, method */{
_emberMetalDebug.assert('You have turned on testing mode, which disabled the run-loop\'s autorun. ' + 'You will need to wrap any code with asynchronous side-effects in a run', run.currentRunLoop || !_emberMetalTesting.isTesting());
- backburner.schedule.apply(backburner, arguments);
+
+ return backburner.schedule.apply(backburner, arguments);
};
// Used by global test teardown
run.hasScheduledTimers = function () {
return backburner.hasTimers();
@@ -9244,90 +9494,91 @@
}
});
return properties;
}
});
-enifed('ember-metal/tags', ['exports', 'glimmer-reference', 'ember-metal/meta', 'require', 'ember-metal/is_proxy'], function (exports, _glimmerReference, _emberMetalMeta, _require, _emberMetalIs_proxy) {
+enifed('ember-metal/symbol', ['exports', 'ember-metal/utils'], function (exports, _emberMetalUtils) {
'use strict';
+ exports.default = symbol;
+
+ function symbol(debugName) {
+ // TODO: Investigate using platform symbols, but we do not
+ // want to require non-enumerability for this API, which
+ // would introduce a large cost.
+
+ return _emberMetalUtils.intern(debugName + ' [id=' + _emberMetalUtils.GUID_KEY + Math.floor(Math.random() * new Date()) + ']');
+ }
+});
+enifed('ember-metal/tags', ['exports', 'ember-metal/meta', 'require'], function (exports, _emberMetalMeta, _require2) {
+ 'use strict';
+
exports.setHasViews = setHasViews;
- exports.tagForProperty = tagForProperty;
exports.tagFor = tagFor;
- exports.markObjectAsDirty = markObjectAsDirty;
+ var hasGlimmer = _require2.has('glimmer-reference');
+ var CONSTANT_TAG = undefined,
+ CURRENT_TAG = undefined,
+ DirtyableTag = undefined,
+ makeTag = undefined,
+ run = undefined;
+
var hasViews = function () {
return false;
};
function setHasViews(fn) {
hasViews = fn;
}
- function makeTag() {
- return new _glimmerReference.DirtyableTag();
- }
+ var markObjectAsDirty = undefined;
- function tagForProperty(object, propertyKey, _meta) {
- if (_emberMetalIs_proxy.isProxy(object)) {
- return tagFor(object, _meta);
- }
+ exports.markObjectAsDirty = markObjectAsDirty;
- if (typeof object === 'object' && object) {
- var meta = _meta || _emberMetalMeta.meta(object);
- var tags = meta.writableTags();
- var tag = tags[propertyKey];
- if (tag) {
- return tag;
- }
-
- return tags[propertyKey] = makeTag();
- } else {
- return _glimmerReference.CONSTANT_TAG;
+ function tagFor(object, _meta) {
+ if (!hasGlimmer) {
+ throw new Error('Cannot call tagFor without Glimmer');
}
- }
- function tagFor(object, _meta) {
- if (typeof object === 'object' && object) {
+ if (object && typeof object === 'object') {
var meta = _meta || _emberMetalMeta.meta(object);
return meta.writableTag(makeTag);
} else {
- return _glimmerReference.CONSTANT_TAG;
+ return CONSTANT_TAG;
}
}
- function markObjectAsDirty(meta, propertyKey) {
- var objectTag = meta && meta.readableTag();
-
- if (objectTag) {
- objectTag.dirty();
- }
-
- var tags = meta && meta.readableTags();
- var propertyTag = tags && tags[propertyKey];
-
- if (propertyTag) {
- propertyTag.dirty();
- }
-
- if (objectTag || propertyTag) {
- ensureRunloop();
- }
- }
-
- var run = undefined;
-
function K() {}
-
function ensureRunloop() {
if (!run) {
- run = _require.default('ember-metal/run_loop').default;
+ run = _require2.default('ember-metal/run_loop').default;
}
if (hasViews() && !run.backburner.currentInstance) {
run.schedule('actions', K);
}
}
+
+ if (hasGlimmer) {
+ var _require = _require2.default('glimmer-reference');
+
+ DirtyableTag = _require.DirtyableTag;
+ CONSTANT_TAG = _require.CONSTANT_TAG;
+ CURRENT_TAG = _require.CURRENT_TAG;
+
+ makeTag = function () {
+ return new DirtyableTag();
+ };
+
+ exports.markObjectAsDirty = markObjectAsDirty = function (meta) {
+ ensureRunloop();
+ var tag = meta && meta.readableTag() || CURRENT_TAG;
+ tag.dirty();
+ };
+ } else {
+ exports.markObjectAsDirty = markObjectAsDirty = function () {};
+ }
});
enifed("ember-metal/testing", ["exports"], function (exports) {
"use strict";
exports.isTesting = isTesting;
@@ -9340,109 +9591,548 @@
function setTesting(value) {
testing = !!value;
}
});
-enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/debug', 'ember-metal/features'], function (exports, _emberMetalMeta, _emberMetalDebug, _emberMetalFeatures) {
- 'use strict';
+enifed('ember-metal/utils', ['exports'], function (exports) {
+ 'no use strict';
+ // Remove "use strict"; from transpiled module until
+ // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
- var runInTransaction = undefined,
- didRender = undefined,
- assertNotRendered = undefined;
+ /**
+ @module ember-metal
+ */
- var raise = _emberMetalDebug.assert;
- if (false) {
- raise = function (message, test) {
- _emberMetalDebug.deprecate(message, test, { id: 'ember-views.render-double-modify', until: '3.0.0' });
- };
+ /**
+ Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from
+ jQuery master. We'll just bootstrap our own uuid now.
+
+ @private
+ @return {Number} the uuid
+ */
+ exports.uuid = uuid;
+ exports.intern = intern;
+ exports.generateGuid = generateGuid;
+ exports.guidFor = guidFor;
+ exports.wrap = wrap;
+ exports.tryInvoke = tryInvoke;
+ exports.makeArray = makeArray;
+ exports.inspect = inspect;
+ exports.applyStr = applyStr;
+ exports.lookupDescriptor = lookupDescriptor;
+ exports.toString = toString;
+ var _uuid = 0;
+
+ /**
+ Generates a universally unique identifier. This method
+ is used internally by Ember for assisting with
+ the generation of GUID's and other unique identifiers.
+
+ @public
+ @return {Number} [description]
+ */
+
+ function uuid() {
+ return ++_uuid;
}
- var implication = undefined;
- if (false) {
- implication = 'will be removed in Ember 3.0.';
- } else if (true) {
- implication = 'is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.';
+ /**
+ Prefix used for guids through out Ember.
+ @private
+ @property GUID_PREFIX
+ @for Ember
+ @type String
+ @final
+ */
+ var GUID_PREFIX = 'ember';
+
+ // Used for guid generation...
+ var numberCache = [];
+ var stringCache = {};
+
+ /**
+ Strongly hint runtimes to intern the provided string.
+
+ When do I need to use this function?
+
+ For the most part, never. Pre-mature optimization is bad, and often the
+ runtime does exactly what you need it to, and more often the trade-off isn't
+ worth it.
+
+ Why?
+
+ Runtimes store strings in at least 2 different representations:
+ Ropes and Symbols (interned strings). The Rope provides a memory efficient
+ data-structure for strings created from concatenation or some other string
+ manipulation like splitting.
+
+ Unfortunately checking equality of different ropes can be quite costly as
+ runtimes must resort to clever string comparison algorithms. These
+ algorithms typically cost in proportion to the length of the string.
+ Luckily, this is where the Symbols (interned strings) shine. As Symbols are
+ unique by their string content, equality checks can be done by pointer
+ comparison.
+
+ How do I know if my string is a rope or symbol?
+
+ Typically (warning general sweeping statement, but truthy in runtimes at
+ present) static strings created as part of the JS source are interned.
+ Strings often used for comparisons can be interned at runtime if some
+ criteria are met. One of these criteria can be the size of the entire rope.
+ For example, in chrome 38 a rope longer then 12 characters will not
+ intern, nor will segments of that rope.
+
+ Some numbers: http://jsperf.com/eval-vs-keys/8
+
+ Known Trickâ„¢
+
+ @private
+ @return {String} interned version of the provided string
+ */
+
+ function intern(str) {
+ var obj = {};
+ obj[str] = 1;
+ for (var key in obj) {
+ if (key === str) {
+ return key;
+ }
+ }
+ return str;
}
- if (true || false) {
- (function () {
- var counter = 0;
- var inTransaction = false;
- var shouldReflush = undefined;
+ /**
+ A unique key used to assign guids and other private metadata to objects.
+ If you inspect an object in your browser debugger you will often see these.
+ They can be safely ignored.
+
+ On browsers that support it, these properties are added with enumeration
+ disabled so they won't show up when you iterate over your properties.
+
+ @private
+ @property GUID_KEY
+ @for Ember
+ @type String
+ @final
+ */
+ var GUID_KEY = intern('__ember' + +new Date());
- exports.default = runInTransaction = function (context, methodName) {
- shouldReflush = false;
- inTransaction = true;
- context[methodName]();
- inTransaction = false;
- counter++;
- return shouldReflush;
- };
+ var GUID_DESC = {
+ writable: true,
+ configurable: true,
+ enumerable: false,
+ value: null
+ };
- exports.didRender = didRender = function (object, key, reference) {
- if (!inTransaction) {
- return;
+ exports.GUID_DESC = GUID_DESC;
+ var nullDescriptor = {
+ configurable: true,
+ writable: true,
+ enumerable: false,
+ value: null
+ };
+
+ var GUID_KEY_PROPERTY = {
+ name: GUID_KEY,
+ descriptor: nullDescriptor
+ };
+
+ exports.GUID_KEY_PROPERTY = GUID_KEY_PROPERTY;
+ /**
+ Generates a new guid, optionally saving the guid to the object that you
+ pass in. You will rarely need to use this method. Instead you should
+ call `Ember.guidFor(obj)`, which return an existing guid if available.
+
+ @private
+ @method generateGuid
+ @for Ember
+ @param {Object} [obj] Object the guid will be used for. If passed in, the guid will
+ be saved on the object and reused whenever you pass the same object
+ again.
+
+ If no object is passed, just generate a new guid.
+ @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to
+ separate the guid into separate namespaces.
+ @return {String} the guid
+ */
+
+ function generateGuid(obj, prefix) {
+ if (!prefix) {
+ prefix = GUID_PREFIX;
+ }
+
+ var ret = prefix + uuid();
+ if (obj) {
+ if (obj[GUID_KEY] === null) {
+ obj[GUID_KEY] = ret;
+ } else {
+ GUID_DESC.value = ret;
+ if (obj.__defineNonEnumerable) {
+ obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
+ } else {
+ Object.defineProperty(obj, GUID_KEY, GUID_DESC);
}
- var meta = _emberMetalMeta.meta(object);
- var lastRendered = meta.writableLastRendered();
- lastRendered[key] = counter;
+ }
+ }
+ return ret;
+ }
- _emberMetalDebug.runInDebug(function () {
- var lastRenderedFrom = meta.writableLastRenderedFrom();
- lastRenderedFrom[key] = reference;
- });
- };
+ /**
+ Returns a unique id for the object. If the object does not yet have a guid,
+ one will be assigned to it. You can call this on any object,
+ `Ember.Object`-based or not, but be aware that it will add a `_guid`
+ property.
+
+ You can also use this method on DOM Element objects.
+
+ @public
+ @method guidFor
+ @for Ember
+ @param {Object} obj any object, string, number, Element, or primitive
+ @return {String} the unique guid for this instance.
+ */
- exports.assertNotRendered = assertNotRendered = function (object, key, _meta) {
- var meta = _meta || _emberMetalMeta.meta(object);
- var lastRendered = meta.readableLastRendered();
+ function guidFor(obj) {
+ if (obj && obj[GUID_KEY]) {
+ return obj[GUID_KEY];
+ }
- if (lastRendered && lastRendered[key] === counter) {
- raise((function () {
- var ref = meta.readableLastRenderedFrom();
- var parts = [];
- var lastRef = ref[key];
+ // special cases where we don't want to add a key to object
+ if (obj === undefined) {
+ return '(undefined)';
+ }
- var label = undefined;
+ if (obj === null) {
+ return '(null)';
+ }
- if (lastRef) {
- while (lastRef && lastRef._propertyKey) {
- parts.unshift(lastRef._propertyKey);
- lastRef = lastRef._parentReference;
- }
+ var ret = undefined;
+ var type = typeof obj;
- label = parts.join();
- } else {
- label = 'the same value';
- }
+ // Don't allow prototype changes to String etc. to change the guidFor
+ switch (type) {
+ case 'number':
+ ret = numberCache[obj];
- return 'You modified ' + parts.join('.') + ' twice on ' + object + ' in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
- })(), false);
+ if (!ret) {
+ ret = numberCache[obj] = 'nu' + obj;
+ }
- shouldReflush = true;
+ return ret;
+
+ case 'string':
+ ret = stringCache[obj];
+
+ if (!ret) {
+ ret = stringCache[obj] = 'st' + uuid();
}
+
+ return ret;
+
+ case 'boolean':
+ return obj ? '(true)' : '(false)';
+
+ default:
+ if (obj === Object) {
+ return '(Object)';
+ }
+
+ if (obj === Array) {
+ return '(Array)';
+ }
+
+ ret = GUID_PREFIX + uuid();
+
+ if (obj[GUID_KEY] === null) {
+ obj[GUID_KEY] = ret;
+ } else {
+ GUID_DESC.value = ret;
+
+ if (obj.__defineNonEnumerable) {
+ obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
+ } else {
+ Object.defineProperty(obj, GUID_KEY, GUID_DESC);
+ }
+ }
+ return ret;
+ }
+ }
+
+ var HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;
+ var fnToString = Function.prototype.toString;
+
+ var checkHasSuper = (function () {
+ var sourceAvailable = fnToString.call(function () {
+ return this;
+ }).indexOf('return this') > -1;
+
+ if (sourceAvailable) {
+ return function checkHasSuper(func) {
+ return HAS_SUPER_PATTERN.test(fnToString.call(func));
};
- })();
- } else {
- exports.default = runInTransaction = function () {
- throw new Error('Cannot call runInTransaction without Glimmer');
- };
+ }
- exports.didRender = didRender = function () {
- throw new Error('Cannot call didRender without Glimmer');
+ return function checkHasSuper() {
+ return true;
};
+ })();
- exports.assertNotRendered = assertNotRendered = function () {
- throw new Error('Cannot call assertNotRendered without Glimmer');
- };
+ exports.checkHasSuper = checkHasSuper;
+ function ROOT() {}
+ ROOT.__hasSuper = false;
+
+ function hasSuper(func) {
+ if (func.__hasSuper === undefined) {
+ func.__hasSuper = checkHasSuper(func);
+ }
+ return func.__hasSuper;
}
- exports.default = runInTransaction;
- exports.didRender = didRender;
- exports.assertNotRendered = assertNotRendered;
+ /**
+ Wraps the passed function so that `this._super` will point to the superFunc
+ when the function is invoked. This is the primitive we use to implement
+ calls to super.
+
+ @private
+ @method wrap
+ @for Ember
+ @param {Function} func The function to call
+ @param {Function} superFunc The super function.
+ @return {Function} wrapped function.
+ */
+
+ function wrap(func, superFunc) {
+ if (!hasSuper(func)) {
+ return func;
+ }
+ // ensure an unwrapped super that calls _super is wrapped with a terminal _super
+ if (!superFunc.wrappedFunction && hasSuper(superFunc)) {
+ return _wrap(func, _wrap(superFunc, ROOT));
+ }
+ return _wrap(func, superFunc);
+ }
+
+ function _wrap(func, superFunc) {
+ function superWrapper() {
+ var orig = this._super;
+ this._super = superFunc;
+ var ret = func.apply(this, arguments);
+ this._super = orig;
+ return ret;
+ }
+
+ superWrapper.wrappedFunction = func;
+ superWrapper.__ember_observes__ = func.__ember_observes__;
+ superWrapper.__ember_observesBefore__ = func.__ember_observesBefore__;
+ superWrapper.__ember_listens__ = func.__ember_listens__;
+
+ return superWrapper;
+ }
+
+ /**
+ Checks to see if the `methodName` exists on the `obj`.
+
+ ```javascript
+ let foo = { bar: function() { return 'bar'; }, baz: null };
+
+ Ember.canInvoke(foo, 'bar'); // true
+ Ember.canInvoke(foo, 'baz'); // false
+ Ember.canInvoke(foo, 'bat'); // false
+ ```
+
+ @method canInvoke
+ @for Ember
+ @param {Object} obj The object to check for the method
+ @param {String} methodName The method name to check for
+ @return {Boolean}
+ @private
+ */
+ function canInvoke(obj, methodName) {
+ return !!(obj && typeof obj[methodName] === 'function');
+ }
+
+ /**
+ Checks to see if the `methodName` exists on the `obj`,
+ and if it does, invokes it with the arguments passed.
+
+ ```javascript
+ let d = new Date('03/15/2013');
+
+ Ember.tryInvoke(d, 'getTime'); // 1363320000000
+ Ember.tryInvoke(d, 'setFullYear', [2014]); // 1394856000000
+ Ember.tryInvoke(d, 'noSuchMethod', [2014]); // undefined
+ ```
+
+ @method tryInvoke
+ @for Ember
+ @param {Object} obj The object to check for the method
+ @param {String} methodName The method name to check for
+ @param {Array} [args] The arguments to pass to the method
+ @return {*} the return value of the invoked method or undefined if it cannot be invoked
+ @public
+ */
+
+ function tryInvoke(obj, methodName, args) {
+ if (canInvoke(obj, methodName)) {
+ return args ? applyStr(obj, methodName, args) : applyStr(obj, methodName);
+ }
+ }
+
+ // ........................................
+ // TYPING & ARRAY MESSAGING
+ //
+
+ var objectToString = Object.prototype.toString;
+
+ /**
+ Forces the passed object to be part of an array. If the object is already
+ an array, it will return the object. Otherwise, it will add the object to
+ an array. If obj is `null` or `undefined`, it will return an empty array.
+
+ ```javascript
+ Ember.makeArray(); // []
+ Ember.makeArray(null); // []
+ Ember.makeArray(undefined); // []
+ Ember.makeArray('lindsay'); // ['lindsay']
+ Ember.makeArray([1, 2, 42]); // [1, 2, 42]
+
+ let controller = Ember.ArrayProxy.create({ content: [] });
+
+ Ember.makeArray(controller) === controller; // true
+ ```
+
+ @method makeArray
+ @for Ember
+ @param {Object} obj the object
+ @return {Array}
+ @private
+ */
+
+ function makeArray(obj) {
+ if (obj === null || obj === undefined) {
+ return [];
+ }
+ return Array.isArray(obj) ? obj : [obj];
+ }
+
+ /**
+ Convenience method to inspect an object. This method will attempt to
+ convert the object into a useful string description.
+
+ It is a pretty simple implementation. If you want something more robust,
+ use something like JSDump: https://github.com/NV/jsDump
+
+ @method inspect
+ @for Ember
+ @param {Object} obj The object you want to inspect.
+ @return {String} A description of the object
+ @since 1.4.0
+ @private
+ */
+
+ function inspect(obj) {
+ if (obj === null) {
+ return 'null';
+ }
+ if (obj === undefined) {
+ return 'undefined';
+ }
+ if (Array.isArray(obj)) {
+ return '[' + obj + ']';
+ }
+ // for non objects
+ var type = typeof obj;
+ if (type !== 'object' && type !== 'symbol') {
+ return '' + obj;
+ }
+ // overridden toString
+ if (typeof obj.toString === 'function' && obj.toString !== objectToString) {
+ return obj.toString();
+ }
+
+ // Object.prototype.toString === {}.toString
+ var v = undefined;
+ var ret = [];
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ v = obj[key];
+ if (v === 'toString') {
+ continue;
+ } // ignore useless items
+ if (typeof v === 'function') {
+ v = 'function() { ... }';
+ }
+
+ if (v && typeof v.toString !== 'function') {
+ ret.push(key + ': ' + objectToString.call(v));
+ } else {
+ ret.push(key + ': ' + v);
+ }
+ }
+ }
+ return '{' + ret.join(', ') + '}';
+ }
+
+ /**
+ @param {Object} t target
+ @param {String} m method
+ @param {Array} a args
+ @private
+ */
+
+ function applyStr(t, m, a) {
+ var l = a && a.length;
+ if (!a || !l) {
+ return t[m]();
+ }
+ switch (l) {
+ case 1:
+ return t[m](a[0]);
+ case 2:
+ return t[m](a[0], a[1]);
+ case 3:
+ return t[m](a[0], a[1], a[2]);
+ case 4:
+ return t[m](a[0], a[1], a[2], a[3]);
+ case 5:
+ return t[m](a[0], a[1], a[2], a[3], a[4]);
+ default:
+ return t[m].apply(t, a);
+ }
+ }
+
+ function lookupDescriptor(obj, keyName) {
+ var current = obj;
+ while (current) {
+ var descriptor = Object.getOwnPropertyDescriptor(current, keyName);
+
+ if (descriptor) {
+ return descriptor;
+ }
+
+ current = Object.getPrototypeOf(current);
+ }
+
+ return null;
+ }
+
+ // A `toString` util function that supports objects without a `toString`
+ // method, e.g. an object created with `Object.create(null)`.
+
+ function toString(obj) {
+ if (obj && obj.toString) {
+ return obj.toString();
+ } else {
+ return objectToString.call(obj);
+ }
+ }
+
+ exports.GUID_KEY = GUID_KEY;
+ exports.makeArray = makeArray;
+ exports.canInvoke = canInvoke;
});
-enifed('ember-metal/watch_key', ['exports', 'ember-utils', 'ember-metal/features', 'ember-metal/meta', 'ember-metal/properties'], function (exports, _emberUtils, _emberMetalFeatures, _emberMetalMeta, _emberMetalProperties) {
+enifed('ember-metal/watch_key', ['exports', 'ember-metal/features', 'ember-metal/meta', 'ember-metal/properties', 'ember-metal/utils'], function (exports, _emberMetalFeatures, _emberMetalMeta, _emberMetalProperties, _emberMetalUtils) {
'use strict';
exports.watchKey = watchKey;
exports.unwatchKey = unwatchKey;
@@ -9486,11 +10176,11 @@
// Future traveler, although this code looks scary. It merely exists in
// development to aid in development asertions. Production builds of
// ember strip this entire block out
handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
- var descriptor = _emberUtils.lookupDescriptor(obj, keyName);
+ var descriptor = _emberMetalUtils.lookupDescriptor(obj, keyName);
var configurable = descriptor ? descriptor.configurable : true;
var isWritable = descriptor ? descriptor.writable : true;
var hasValue = descriptor ? 'value' in descriptor : true;
var possibleDesc = descriptor && descriptor.value;
var isDescriptor = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor;
@@ -9519,21 +10209,15 @@
}
};
})();
}
- function unwatchKey(obj, keyName, _meta) {
- var meta = _meta || _emberMetalMeta.meta(obj);
-
- // do nothing of this object has already been destroyed
- if (meta.isSourceDestroyed()) {
- return;
- }
-
- var count = meta.peekWatching(keyName);
+ function unwatchKey(obj, keyName, meta) {
+ var m = meta || _emberMetalMeta.meta(obj);
+ var count = m.peekWatching(keyName);
if (count === 1) {
- meta.writeWatching(keyName, 0);
+ m.writeWatching(keyName, 0);
var possibleDesc = obj[keyName];
var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
if (desc && desc.didUnwatch) {
@@ -9552,33 +10236,33 @@
// Some further context: Once a property is watched by ember, bypassing `set`
// for mutation, will bypass observation. This code exists to assert when
// that occurs, and attempt to provide more helpful feedback. The alternative
// is tricky to debug partially observable properties.
if (!desc && keyName in obj) {
- var maybeMandatoryDescriptor = _emberUtils.lookupDescriptor(obj, keyName);
+ var maybeMandatoryDescriptor = _emberMetalUtils.lookupDescriptor(obj, keyName);
if (maybeMandatoryDescriptor.set && maybeMandatoryDescriptor.set.isMandatorySetter) {
if (maybeMandatoryDescriptor.get && maybeMandatoryDescriptor.get.isInheritingGetter) {
- var possibleValue = meta.readInheritedValue('values', keyName);
+ var possibleValue = m.readInheritedValue('values', keyName);
if (possibleValue === _emberMetalMeta.UNDEFINED) {
delete obj[keyName];
return;
}
}
Object.defineProperty(obj, keyName, {
configurable: true,
enumerable: Object.prototype.propertyIsEnumerable.call(obj, keyName),
writable: true,
- value: meta.peekValues(keyName)
+ value: m.peekValues(keyName)
});
- meta.deleteFromValues(keyName);
+ m.deleteFromValues(keyName);
}
}
}
} else if (count > 1) {
- meta.writeWatching(keyName, count - 1);
+ m.writeWatching(keyName, count - 1);
}
}
});
enifed('ember-metal/watch_path', ['exports', 'ember-metal/meta', 'ember-metal/chains'], function (exports, _emberMetalMeta, _emberMetalChains) {
'use strict';
@@ -9620,11 +10304,11 @@
} else if (counter > 1) {
m.writeWatching(keyPath, counter - 1);
}
}
});
-enifed('ember-metal/watching', ['exports', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache, _emberMetalMeta) {
+enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/watch_key', 'ember-metal/watch_path', 'ember-metal/path_cache', 'ember-metal/meta'], function (exports, _emberMetalChains, _emberMetalWatch_key, _emberMetalWatch_path, _emberMetalPath_cache, _emberMetalMeta) {
/**
@module ember-metal
*/
'use strict';
@@ -9673,10 +10357,12 @@
} else {
_emberMetalWatch_path.unwatchPath(obj, _keyPath, m);
}
}
+ var NODE_STACK = [];
+
/**
Tears down the meta on an object so that it can be garbage collected.
Multiple calls will have no effect.
@method destroy
@@ -9685,19 +10371,53 @@
@return {void}
@private
*/
function destroy(obj) {
- _emberMetalMeta.deleteMeta(obj);
+ var meta = _emberMetalMeta.peekMeta(obj);
+ var node = undefined,
+ nodes = undefined,
+ key = undefined,
+ nodeObject = undefined;
+
+ if (meta) {
+ _emberMetalMeta.deleteMeta(obj);
+ // remove chainWatchers to remove circular references that would prevent GC
+ node = meta.readableChains();
+ if (node) {
+ NODE_STACK.push(node);
+ // process tree
+ while (NODE_STACK.length > 0) {
+ node = NODE_STACK.pop();
+ // push children
+ nodes = node._chains;
+ if (nodes) {
+ for (key in nodes) {
+ if (nodes[key] !== undefined) {
+ NODE_STACK.push(nodes[key]);
+ }
+ }
+ }
+ // remove chainWatcher in node object
+ if (node._watching) {
+ nodeObject = node._object;
+ if (nodeObject) {
+ _emberMetalChains.removeChainWatcher(nodeObject, node._key, node);
+ }
+ }
+ }
+ }
+ }
}
});
-enifed('ember-metal/weak_map', ['exports', 'ember-utils', 'ember-metal/meta'], function (exports, _emberUtils, _emberMetalMeta) {
+enifed('ember-metal/weak_map', ['exports', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalUtils, _emberMetalMeta) {
'use strict';
exports.default = WeakMap;
var id = 0;
+ function UNDEFINED() {}
// Returns whether Type(value) is Object according to the terminology in the spec
function isObject(value) {
return typeof value === 'object' && value !== null || typeof value === 'function';
}
@@ -9719,11 +10439,11 @@
function WeakMap(iterable) {
if (!(this instanceof WeakMap)) {
throw new TypeError('Constructor WeakMap requires \'new\'');
}
- this._id = _emberUtils.GUID_KEY + id++;
+ this._id = _emberMetalUtils.GUID_KEY + id++;
if (iterable === null || iterable === undefined) {
return;
} else if (Array.isArray(iterable)) {
for (var i = 0; i < iterable.length; i++) {
@@ -9750,11 +10470,11 @@
var meta = _emberMetalMeta.peekMeta(obj);
if (meta) {
var map = meta.readableWeak();
if (map) {
- if (map[this._id] === _emberMetalMeta.UNDEFINED) {
+ if (map[this._id] === UNDEFINED) {
return undefined;
}
return map[this._id];
}
@@ -9771,11 +10491,11 @@
if (!isObject(obj)) {
throw new TypeError('Invalid value used as weak map key');
}
if (value === undefined) {
- value = _emberMetalMeta.UNDEFINED;
+ value = UNDEFINED;
}
_emberMetalMeta.meta(obj).writableWeak()[this._id] = value;
return this;
@@ -9822,63 +10542,110 @@
*/
WeakMap.prototype.toString = function () {
return '[object WeakMap]';
};
});
-enifed('ember-template-compiler/compat', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/compile-options'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemCompileOptions) {
+enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-template-compiler/compiler'], function (exports, _emberMetalCore, _emberTemplateCompilerCompiler) {
'use strict';
- var EmberHandlebars = _emberMetal.default.Handlebars = _emberMetal.default.Handlebars || {};
- var EmberHTMLBars = _emberMetal.default.HTMLBars = _emberMetal.default.HTMLBars || {};
+ var EmberHandlebars = _emberMetalCore.default.Handlebars = _emberMetalCore.default.Handlebars || {};
+ var EmberHTMLBars = _emberMetalCore.default.HTMLBars = _emberMetalCore.default.HTMLBars || {};
- EmberHTMLBars.precompile = EmberHandlebars.precompile = _emberTemplateCompilerSystemPrecompile.default;
- EmberHTMLBars.compile = EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default;
- EmberHTMLBars.registerPlugin = _emberTemplateCompilerSystemCompileOptions.registerPlugin;
+ var _compiler = _emberTemplateCompilerCompiler.default();
+
+ var precompile = _compiler.precompile;
+ var compile = _compiler.compile;
+ var registerPlugin = _compiler.registerPlugin;
+
+ EmberHTMLBars.precompile = EmberHandlebars.precompile = precompile;
+ EmberHTMLBars.compile = EmberHandlebars.compile = compile;
+ EmberHTMLBars.registerPlugin = registerPlugin;
});
// reexports
-enifed('ember-template-compiler/index', ['exports', 'ember-metal', 'ember-environment', 'ember/version', 'ember-template-compiler/compat', 'ember-template-compiler/system/bootstrap', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/compile-options', 'ember-template-compiler/plugins'], function (exports, _emberMetal, _emberEnvironment, _emberVersion, _emberTemplateCompilerCompat, _emberTemplateCompilerSystemBootstrap, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemCompileOptions, _emberTemplateCompilerPlugins) {
+enifed('ember-template-compiler/compat/precompile', ['exports', 'require', 'ember-metal/features'], function (exports, _require, _emberMetalFeatures) {
+ /**
+ @module ember
+ @submodule ember-template-compiler
+ */
'use strict';
- // private API used by ember-cli-htmlbars to setup ENV and FEATURES
- if (!_emberMetal.default.ENV) {
- _emberMetal.default.ENV = _emberEnvironment.ENV;
+ var compile = undefined,
+ compileSpec = undefined,
+ compileOptions = undefined;
+
+ // Note we don't really want to expose this from main file
+ if (false) {
+ compileOptions = _require.default('ember-glimmer-template-compiler/system/compile-options').default;
+ } else {
+ compileOptions = _require.default('ember-htmlbars-template-compiler/system/compile-options').default;
}
- if (!_emberMetal.default.FEATURES) {
- _emberMetal.default.FEATURES = _emberMetal.FEATURES;
+
+ exports.default = function (string) {
+ if ((!compile || !compileSpec) && _require.has('htmlbars-compiler/compiler')) {
+ var Compiler = _require.default('htmlbars-compiler/compiler');
+
+ compile = Compiler.compile;
+ compileSpec = Compiler.compileSpec;
+ }
+
+ if (!compile || !compileSpec) {
+ throw new Error('Cannot call `precompile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `precompile`.');
+ }
+
+ var asObject = arguments[1] === undefined ? true : arguments[1];
+ var compileFunc = asObject ? compile : compileSpec;
+
+ return compileFunc(string, compileOptions());
+ };
+});
+enifed('ember-template-compiler/compiler', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
+
+ exports.default = pickCompiler;
+
+ function pickCompiler() {
+ var compiler = undefined;
+ if (false) {
+ compiler = _require.default('ember-glimmer-template-compiler');
+ } else {
+ compiler = _require.default('ember-htmlbars-template-compiler');
+ }
+
+ return compiler;
}
- if (!_emberMetal.default.VERSION) {
- _emberMetal.default.VERSION = _emberVersion.default;
- }
+});
+enifed('ember-template-compiler/index', ['exports', 'ember-template-compiler/compat', 'ember-template-compiler/system/bootstrap', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/register-plugin', 'ember-template-compiler/system/compile-options'], function (exports, _emberTemplateCompilerCompat, _emberTemplateCompilerSystemBootstrap, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemRegisterPlugin, _emberTemplateCompilerSystemCompileOptions) {
+ 'use strict';
exports._Ember = _emberMetal.default;
+ // Is this still needed
exports.precompile = _emberTemplateCompilerSystemPrecompile.default;
exports.compile = _emberTemplateCompilerSystemCompile.default;
- exports.compileOptions = _emberTemplateCompilerSystemCompileOptions.default;
- exports.registerPlugin = _emberTemplateCompilerSystemCompileOptions.registerPlugin;
- exports.defaultPlugins = _emberTemplateCompilerPlugins.default;
+ exports.registerPlugin = _emberTemplateCompilerSystemRegisterPlugin.default;
+ exports.defaultCompileOptions = _emberTemplateCompilerSystemCompileOptions.default;
// used for adding Ember.Handlebars.compile for backwards compat
});
// used to bootstrap templates
-enifed('ember-template-compiler/plugins/assert-reserved-named-arguments', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _emberTemplateCompilerSystemCalculateLocationDisplay) {
+enifed('ember-template-compiler/plugins/assert-reserved-named-arguments', ['exports', 'ember-metal/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) {
'use strict';
exports.default = AssertReservedNamedArguments;
function AssertReservedNamedArguments(options) {
this.syntax = null;
this.options = options;
}
AssertReservedNamedArguments.prototype.transform = function AssertReservedNamedArguments_transform(ast) {
- var moduleName = this.options.meta.moduleName;
+ var moduleName = this.options.moduleName;
this.syntax.traverse(ast, {
PathExpression: function (node) {
if (node.original[0] === '@') {
- _emberMetal.assert(assertMessage(moduleName, node));
+ _emberMetalDebug.assert(assertMessage(moduleName, node));
}
}
});
return ast;
@@ -9889,22 +10656,22 @@
var source = _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc);
return '\'' + path + '\' is not a valid path. ' + source;
}
});
-enifed('ember-template-compiler/plugins/deprecate-render-model', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _emberTemplateCompilerSystemCalculateLocationDisplay) {
+enifed('ember-template-compiler/plugins/deprecate-render-model', ['exports', 'ember-metal/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) {
'use strict';
exports.default = DeprecateRenderModel;
function DeprecateRenderModel(options) {
this.syntax = null;
this.options = options;
}
DeprecateRenderModel.prototype.transform = function DeprecateRenderModel_transform(ast) {
- var moduleName = this.options.meta.moduleName;
+ var moduleName = this.options.moduleName;
var walker = new this.syntax.Walker();
walker.visit(ast, function (node) {
if (!validate(node)) {
return;
@@ -9913,11 +10680,11 @@
each(node.params, function (param) {
if (param.type !== 'PathExpression') {
return;
}
- _emberMetal.deprecate(deprecationMessage(moduleName, node, param), false, {
+ _emberMetalDebug.deprecate(deprecationMessage(moduleName, node, param), false, {
id: 'ember-template-compiler.deprecate-render-model',
until: '3.0.0',
url: 'http://emberjs.com/deprecations/v2.x#toc_model-param-in-code-render-code-helper'
});
});
@@ -9944,90 +10711,15 @@
var preferred = '{{' + componentName + ' model=' + modelName + '}}';
return 'Please refactor `' + original + '` to a component and invoke via' + (' `' + preferred + '`. ' + sourceInformation);
}
});
-enifed('ember-template-compiler/plugins/index', ['exports', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-inline-link-to', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/deprecate-render-model', 'ember-template-compiler/plugins/assert-reserved-named-arguments', 'ember-template-compiler/plugins/transform-action-syntax', 'ember-template-compiler/plugins/transform-input-type-syntax', 'ember-template-compiler/plugins/transform-attrs-into-args', 'ember-template-compiler/plugins/transform-each-in-into-each', 'ember-template-compiler/plugins/transform-has-block-syntax'], function (exports, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformInlineLinkTo, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsDeprecateRenderModel, _emberTemplateCompilerPluginsAssertReservedNamedArguments, _emberTemplateCompilerPluginsTransformActionSyntax, _emberTemplateCompilerPluginsTransformInputTypeSyntax, _emberTemplateCompilerPluginsTransformAttrsIntoArgs, _emberTemplateCompilerPluginsTransformEachInIntoEach, _emberTemplateCompilerPluginsTransformHasBlockSyntax) {
+enifed('ember-template-compiler/plugins/index', ['exports', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-inline-link-to', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/deprecate-render-model', 'ember-template-compiler/plugins/assert-reserved-named-arguments'], function (exports, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformInlineLinkTo, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsDeprecateRenderModel, _emberTemplateCompilerPluginsAssertReservedNamedArguments) {
'use strict';
- exports.default = Object.freeze([_emberTemplateCompilerPluginsTransformOldBindingSyntax.default, _emberTemplateCompilerPluginsTransformItemClass.default, _emberTemplateCompilerPluginsTransformAngleBracketComponents.default, _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default, _emberTemplateCompilerPluginsTransformTopLevelComponents.default, _emberTemplateCompilerPluginsTransformInlineLinkTo.default, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default, _emberTemplateCompilerPluginsDeprecateRenderModel.default, _emberTemplateCompilerPluginsAssertReservedNamedArguments.default, _emberTemplateCompilerPluginsTransformActionSyntax.default, _emberTemplateCompilerPluginsTransformInputTypeSyntax.default, _emberTemplateCompilerPluginsTransformAttrsIntoArgs.default, _emberTemplateCompilerPluginsTransformEachInIntoEach.default, _emberTemplateCompilerPluginsTransformHasBlockSyntax.default]);
+ exports.default = Object.freeze([_emberTemplateCompilerPluginsTransformOldBindingSyntax.default, _emberTemplateCompilerPluginsTransformItemClass.default, _emberTemplateCompilerPluginsTransformAngleBracketComponents.default, _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default, _emberTemplateCompilerPluginsTransformTopLevelComponents.default, _emberTemplateCompilerPluginsTransformInlineLinkTo.default, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default, _emberTemplateCompilerPluginsDeprecateRenderModel.default, _emberTemplateCompilerPluginsAssertReservedNamedArguments.default]);
});
-enifed('ember-template-compiler/plugins/transform-action-syntax', ['exports'], function (exports) {
- /**
- @module ember
- @submodule ember-glimmer
- */
-
- /**
- A Glimmer2 AST transformation that replaces all instances of
-
- ```handlebars
- <button {{action 'foo'}}>
- <button onblur={{action 'foo'}}>
- <button onblur={{action (action 'foo') 'bar'}}>
- ```
-
- with
-
- ```handlebars
- <button {{action this 'foo'}}>
- <button onblur={{action this 'foo'}}>
- <button onblur={{action this (action this 'foo') 'bar'}}>
- ```
-
- @private
- @class TransformActionSyntax
- */
-
- 'use strict';
-
- exports.default = TransformActionSyntax;
-
- function TransformActionSyntax() {
- // set later within Glimmer2 to the syntax package
- this.syntax = null;
- }
-
- /**
- @private
- @method transform
- @param {AST} ast The AST to be transformed.
- */
- TransformActionSyntax.prototype.transform = function TransformActionSyntax_transform(ast) {
- var _syntax = this.syntax;
- var traverse = _syntax.traverse;
- var b = _syntax.builders;
-
- traverse(ast, {
- ElementModifierStatement: function (node) {
- if (isAction(node)) {
- insertThisAsFirstParam(node, b);
- }
- },
- MustacheStatement: function (node) {
- if (isAction(node)) {
- insertThisAsFirstParam(node, b);
- }
- },
- SubExpression: function (node) {
- if (isAction(node)) {
- insertThisAsFirstParam(node, b);
- }
- }
- });
-
- return ast;
- };
-
- function isAction(node) {
- return node.path.original === 'action';
- }
-
- function insertThisAsFirstParam(node, builders) {
- node.params.unshift(builders.path('this'));
- }
-});
enifed('ember-template-compiler/plugins/transform-angle-bracket-components', ['exports'], function (exports) {
'use strict';
exports.default = TransformAngleBracketComponents;
@@ -10057,205 +10749,10 @@
function validate(node) {
return node.type === 'ComponentNode';
}
});
-enifed('ember-template-compiler/plugins/transform-attrs-into-args', ['exports'], function (exports) {
- /**
- @module ember
- @submodule ember-glimmer
- */
-
- /**
- A Glimmer2 AST transformation that replaces all instances of
-
- ```handlebars
- {{attrs.foo.bar}}
- ```
-
- to
-
- ```handlebars
- {{@foo.bar}}
- ```
-
- as well as `{{#if attrs.foo}}`, `{{deeply (nested attrs.foobar.baz)}}` etc
-
- @private
- @class TransformAttrsToProps
- */
-
- 'use strict';
-
- exports.default = TransformAttrsToProps;
-
- function TransformAttrsToProps() {
- // set later within Glimmer2 to the syntax package
- this.syntax = null;
- }
-
- function isAttrs(node) {
- if (node.parts[0] === 'attrs') {
- return true;
- }
-
- var _this = node.parts[0];
- var attrs = node.parts[1];
-
- if (_this === null && attrs === 'attrs') {
- node.parts.shift();
- node.original = node.original.slice(5);
- return true;
- }
- }
-
- /**
- @private
- @method transform
- @param {AST} ast The AST to be transformed.
- */
- TransformAttrsToProps.prototype.transform = function TransformAttrsToProps_transform(ast) {
- var _syntax = this.syntax;
- var traverse = _syntax.traverse;
- var b = _syntax.builders;
-
- traverse(ast, {
- PathExpression: function (node) {
- if (isAttrs(node)) {
- var path = b.path(node.original.substr(6));
- path.original = '@' + path.original;
- path.data = true;
- return path;
- }
- }
- });
-
- return ast;
- };
-});
-enifed('ember-template-compiler/plugins/transform-each-in-into-each', ['exports'], function (exports) {
- /**
- @module ember
- @submodule ember-glimmer
- */
-
- /**
- A Glimmer2 AST transformation that replaces all instances of
-
- ```handlebars
- {{#each-in iterableThing as |key value|}}
- ```
-
- with
-
- ```handlebars
- {{#each (-each-in iterableThing) as |key value|}}
- ```
-
- @private
- @class TransformHasBlockSyntax
- */
-
- 'use strict';
-
- exports.default = TransformEachInIntoEach;
-
- function TransformEachInIntoEach() {
- // set later within Glimmer2 to the syntax package
- this.syntax = null;
- }
-
- /**
- @private
- @method transform
- @param {AST} ast The AST to be transformed.
- */
- TransformEachInIntoEach.prototype.transform = function TransformEachInIntoEach_transform(ast) {
- var _syntax = this.syntax;
- var traverse = _syntax.traverse;
- var b = _syntax.builders;
-
- traverse(ast, {
- BlockStatement: function (node) {
- if (node.path.original === 'each-in') {
- node.params[0] = b.sexpr(b.path('-each-in'), [node.params[0]]);
- return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);
- }
- }
- });
-
- return ast;
- };
-});
-enifed('ember-template-compiler/plugins/transform-has-block-syntax', ['exports'], function (exports) {
- /**
- @module ember
- @submodule ember-glimmer
- */
-
- /**
- A Glimmer2 AST transformation that replaces all instances of
-
- ```handlebars
- {{hasBlock}}
- ```
-
- with
-
- ```handlebars
- {{has-block}}
- ```
-
- @private
- @class TransformHasBlockSyntax
- */
-
- 'use strict';
-
- exports.default = TransformHasBlockSyntax;
-
- function TransformHasBlockSyntax() {
- // set later within Glimmer2 to the syntax package
- this.syntax = null;
- }
-
- var TRANSFORMATIONS = {
- hasBlock: 'has-block',
- hasBlockParams: 'has-block-params'
- };
-
- /**
- @private
- @method transform
- @param {AST} ast The AST to be transformed.
- */
- TransformHasBlockSyntax.prototype.transform = function TransformHasBlockSyntax_transform(ast) {
- var _syntax = this.syntax;
- var traverse = _syntax.traverse;
- var b = _syntax.builders;
-
- traverse(ast, {
- PathExpression: function (node) {
- if (TRANSFORMATIONS[node.original]) {
- return b.sexpr(b.path(TRANSFORMATIONS[node.original]));
- }
- },
- MustacheStatement: function (node) {
- if (TRANSFORMATIONS[node.path.original]) {
- return b.mustache(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash, null, node.loc);
- }
- },
- SubExpression: function (node) {
- if (TRANSFORMATIONS[node.path.original]) {
- return b.sexpr(b.path(TRANSFORMATIONS[node.path.original]), node.params, node.hash);
- }
- }
- });
-
- return ast;
- };
-});
enifed('ember-template-compiler/plugins/transform-inline-link-to', ['exports'], function (exports) {
'use strict';
exports.default = TransformInlineLinkTo;
@@ -10301,11 +10798,11 @@
});
return ast;
};
});
-enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _emberTemplateCompilerSystemCalculateLocationDisplay) {
+enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['exports', 'ember-metal/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) {
'use strict';
exports.default = TransformInputOnToOnEvent;
/**
@@ -10347,32 +10844,32 @@
*/
TransformInputOnToOnEvent.prototype.transform = function TransformInputOnToOnEvent_transform(ast) {
var pluginContext = this;
var b = pluginContext.syntax.builders;
var walker = new pluginContext.syntax.Walker();
- var moduleName = pluginContext.options.meta.moduleName;
+ var moduleName = pluginContext.options.moduleName;
walker.visit(ast, function (node) {
if (pluginContext.validate(node)) {
var action = hashPairForKey(node.hash, 'action');
var on = hashPairForKey(node.hash, 'on');
var onEvent = hashPairForKey(node.hash, 'onEvent');
var normalizedOn = on || onEvent;
var moduleInfo = _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc);
if (normalizedOn && normalizedOn.value.type !== 'StringLiteral') {
- _emberMetal.deprecate('Using a dynamic value for \'#{normalizedOn.key}=\' with the \'{{input}}\' helper ' + moduleInfo + 'is deprecated.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.dynamic-value', until: '3.0.0' });
+ _emberMetalDebug.deprecate('Using a dynamic value for \'#{normalizedOn.key}=\' with the \'{{input}}\' helper ' + moduleInfo + 'is deprecated.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.dynamic-value', until: '3.0.0' });
normalizedOn.key = 'onEvent';
return; // exit early, as we cannot transform further
}
removeFromHash(node.hash, normalizedOn);
removeFromHash(node.hash, action);
if (!action) {
- _emberMetal.deprecate('Using \'{{input ' + normalizedOn.key + '="' + normalizedOn.value.value + '" ...}}\' without specifying an action ' + moduleInfo + 'will do nothing.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.no-action', until: '3.0.0' });
+ _emberMetalDebug.deprecate('Using \'{{input ' + normalizedOn.key + '="' + normalizedOn.value.value + '" ...}}\' without specifying an action ' + moduleInfo + 'will do nothing.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.no-action', until: '3.0.0' });
return; // exit early, if no action was available there is nothing to do
}
var specifiedOn = normalizedOn ? normalizedOn.key + '="' + normalizedOn.value.value + '" ' : '';
@@ -10382,11 +10879,11 @@
normalizedOn.value.value = 'key-press';
}
var expected = (normalizedOn ? normalizedOn.value.value : 'enter') + '="' + action.value.original + '"';
- _emberMetal.deprecate('Using \'{{input ' + specifiedOn + 'action="' + action.value.original + '"}}\' ' + moduleInfo + 'is deprecated. Please use \'{{input ' + expected + '}}\' instead.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.normalized-on', until: '3.0.0' });
+ _emberMetalDebug.deprecate('Using \'{{input ' + specifiedOn + 'action="' + action.value.original + '"}}\' ' + moduleInfo + 'is deprecated. Please use \'{{input ' + expected + '}}\' instead.', false, { id: 'ember-template-compiler.transform-input-on-to-onEvent.normalized-on', until: '3.0.0' });
if (!normalizedOn) {
normalizedOn = b.pair('onEvent', b.string('enter'));
}
node.hash.pairs.push(b.pair(normalizedOn.value.value, action.value));
@@ -10422,85 +10919,10 @@
}
hash.pairs = newPairs;
}
});
-enifed('ember-template-compiler/plugins/transform-input-type-syntax', ['exports'], function (exports) {
- /**
- @module ember
- @submodule ember-glimmer
- */
-
- /**
- A Glimmer2 AST transformation that replaces all instances of
-
- ```handlebars
- {{input type=boundType}}
- ```
-
- with
-
- ```handlebars
- {{input (-input-type boundType) type=boundType}}
- ```
-
- Note that the type parameters is not removed as the -input-type helpers
- is only used to select the component class. The component still needs
- the type parameter to function.
-
- @private
- @class TransformInputTypeSyntax
- */
-
- 'use strict';
-
- exports.default = TransformInputTypeSyntax;
-
- function TransformInputTypeSyntax() {
- // set later within Glimmer2 to the syntax package
- this.syntax = null;
- }
-
- /**
- @private
- @method transform
- @param {AST} ast The AST to be transformed.
- */
- TransformInputTypeSyntax.prototype.transform = function TransformInputTypeSyntax_transform(ast) {
- var _syntax = this.syntax;
- var traverse = _syntax.traverse;
- var b = _syntax.builders;
-
- traverse(ast, {
- MustacheStatement: function (node) {
- if (isInput(node)) {
- insertTypeHelperParameter(node, b);
- }
- }
- });
-
- return ast;
- };
-
- function isInput(node) {
- return node.path.original === 'input';
- }
-
- function insertTypeHelperParameter(node, builders) {
- var pairs = node.hash.pairs;
- var pair = null;
- for (var i = 0; i < pairs.length; i++) {
- if (pairs[i].key === 'type') {
- pair = pairs[i];
- break;
- }
- }
- if (pair && pair.value.type !== 'StringLiteral') {
- node.params.unshift(builders.sexpr('-input-type', [builders.path(pair.value.original, pair.loc)], null, pair.loc));
- }
- }
-});
enifed('ember-template-compiler/plugins/transform-item-class', ['exports'], function (exports) {
'use strict';
exports.default = TransformItemClass;
@@ -10545,22 +10967,22 @@
function validate(node) {
return (node.type === 'BlockStatement' || node.type === 'MustacheStatement') && node.path.original === 'collection';
}
});
-enifed('ember-template-compiler/plugins/transform-old-binding-syntax', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _emberTemplateCompilerSystemCalculateLocationDisplay) {
+enifed('ember-template-compiler/plugins/transform-old-binding-syntax', ['exports', 'ember-metal/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) {
'use strict';
exports.default = TransformOldBindingSyntax;
function TransformOldBindingSyntax(options) {
this.syntax = null;
this.options = options;
}
TransformOldBindingSyntax.prototype.transform = function TransformOldBindingSyntax_transform(ast) {
- var moduleName = this.options.meta.moduleName;
+ var moduleName = this.options.moduleName;
var b = this.syntax.builders;
var walker = new this.syntax.Walker();
walker.visit(ast, function (node) {
if (!validate(node)) {
@@ -10576,16 +10998,16 @@
if (key === 'classBinding') {
return;
}
- _emberMetal.assert('Setting \'attributeBindings\' via template helpers is not allowed ' + sourceInformation, key !== 'attributeBindings');
+ _emberMetalDebug.assert('Setting \'attributeBindings\' via template helpers is not allowed ' + sourceInformation, key !== 'attributeBindings');
if (key.substr(-7) === 'Binding') {
var newKey = key.slice(0, -7);
- _emberMetal.deprecate('You\'re using legacy binding syntax: ' + key + '=' + exprToString(value) + ' ' + sourceInformation + '. Please replace with ' + newKey + '=' + value.original, false, { id: 'ember-template-compiler.transform-old-binding-syntax', until: '3.0.0' });
+ _emberMetalDebug.deprecate('You\'re using legacy binding syntax: ' + key + '=' + exprToString(value) + ' ' + sourceInformation + '. Please replace with ' + newKey + '=' + value.original, false, { id: 'ember-template-compiler.transform-old-binding-syntax', until: '3.0.0' });
pair.key = newKey;
if (value.type === 'StringLiteral') {
pair.value = b.path(value.original);
}
@@ -10712,11 +11134,11 @@
if (inactiveClass !== undefined) {
hash.pairs.push(b.pair('inactiveClass', b.string(inactiveClass)));
}
- params.push(b.sexpr(b.path('-normalize-class'), sexprParams, hash));
+ params.push(b.sexpr(b.string('-normalize-class'), sexprParams, hash));
}
if (inactiveClass || inactiveClass === '') {
params.push(b.string(inactiveClass));
}
@@ -10811,19 +11233,24 @@
if (lastComponentNode.type === 'ComponentNode') {
componentCallback(lastComponentNode);
}
}
});
-enifed('ember-template-compiler/system/bootstrap', ['exports', 'ember-metal', 'ember-template-compiler/system/compile'], function (exports, _emberMetal, _emberTemplateCompilerSystemCompile) {
+enifed('ember-template-compiler/system/bootstrap', ['exports', 'ember-metal/error', 'ember-template-compiler', 'ember-templates/template_registry'], function (exports, _emberMetalError, _emberTemplateCompiler, _emberTemplatesTemplate_registry) {
/**
@module ember
@submodule ember-templates
*/
'use strict';
/**
+ @module ember
+ @submodule ember-templates
+ */
+
+ /**
Find templates stored in the head tag as script tags and make them available
to `Ember.CoreView` in the global `Ember.TEMPLATES` object.
Script tags with `text/x-handlebars` will be compiled
with Ember's template compiler and are suitable for use as a view's template.
@@ -10832,19 +11259,13 @@
@method bootstrap
@for Ember.HTMLBars
@static
@param ctx
*/
- function bootstrap(_ref) {
- var context = _ref.context;
- var hasTemplate = _ref.hasTemplate;
- var setTemplate = _ref.setTemplate;
+ function bootstrap() {
+ var context = arguments.length <= 0 || arguments[0] === undefined ? document : arguments[0];
- if (!context) {
- context = document;
- }
-
var selector = 'script[type="text/x-handlebars"]';
var elements = context.querySelectorAll(selector);
for (var i = 0; i < elements.length; i++) {
@@ -10854,21 +11275,21 @@
// First look for data-template-name attribute, then fall back to its
// id if no name is found.
var templateName = script.getAttribute('data-template-name') || script.getAttribute('id') || 'application';
var template = undefined;
- template = _emberTemplateCompilerSystemCompile.default(script.innerHTML, {
+ template = _emberTemplateCompiler.compile(script.innerHTML, {
moduleName: templateName
});
// Check if template of same name already exists.
- if (hasTemplate(templateName)) {
- throw new _emberMetal.Error('Template named "' + templateName + '" already exists.');
+ if (_emberTemplatesTemplate_registry.has(templateName)) {
+ throw new _emberMetalError.default('Template named "' + templateName + '" already exists.');
}
// For templates which have a name, we save them and then remove them from the DOM.
- setTemplate(templateName, template);
+ _emberTemplatesTemplate_registry.set(templateName, template);
// Remove script tag from DOM.
script.parentNode.removeChild(script);
}
}
@@ -10906,72 +11327,25 @@
}
return moduleInfo;
}
});
-enifed('ember-template-compiler/system/compile-options', ['exports', 'ember-utils', 'ember-template-compiler/plugins'], function (exports, _emberUtils, _emberTemplateCompilerPlugins) {
+enifed('ember-template-compiler/system/compile-options', ['exports', 'ember-template-compiler/compiler'], function (exports, _emberTemplateCompilerCompiler) {
'use strict';
- exports.default = compileOptions;
- exports.registerPlugin = registerPlugin;
- exports.removePlugin = removePlugin;
+ var _compiler = _emberTemplateCompilerCompiler.default();
- var USER_PLUGINS = [];
-
- function compileOptions(_options) {
- var options = _emberUtils.assign({ meta: {} }, _options);
-
- // move `moduleName` into `meta` property
- if (options.moduleName) {
- var meta = options.meta;
- meta.moduleName = options.moduleName;
- }
-
- if (!options.plugins) {
- options.plugins = { ast: [].concat(USER_PLUGINS, _emberTemplateCompilerPlugins.default) };
- } else {
- var potententialPugins = [].concat(USER_PLUGINS, _emberTemplateCompilerPlugins.default);
- var pluginsToAdd = potententialPugins.filter(function (plugin) {
- return options.plugins.ast.indexOf(plugin) === -1;
- });
- options.plugins.ast = options.plugins.ast.slice().concat(pluginsToAdd);
- }
-
- return options;
- }
-
- function registerPlugin(type, PluginClass) {
- if (type !== 'ast') {
- throw new Error('Attempting to register ' + PluginClass + ' as "' + type + '" which is not a valid Glimmer plugin type.');
- }
-
- if (USER_PLUGINS.indexOf(PluginClass) === -1) {
- USER_PLUGINS = [PluginClass].concat(USER_PLUGINS);
- }
- }
-
- function removePlugin(type, PluginClass) {
- if (type !== 'ast') {
- throw new Error('Attempting to unregister ' + PluginClass + ' as "' + type + '" which is not a valid Glimmer plugin type.');
- }
-
- USER_PLUGINS = USER_PLUGINS.filter(function (plugin) {
- return plugin !== PluginClass;
- });
- }
+ var defaultCompileOptions = _compiler.defaultCompileOptions;
+ exports.default = defaultCompileOptions;
});
-enifed('ember-template-compiler/system/compile', ['exports', 'require', 'ember-template-compiler/system/precompile'], function (exports, _require, _emberTemplateCompilerSystemPrecompile) {
+enifed('ember-template-compiler/system/compile', ['exports', 'ember-template-compiler/compiler', 'ember-template-compiler/system/compile-options', 'ember-metal/assign'], function (exports, _emberTemplateCompilerCompiler, _emberTemplateCompilerSystemCompileOptions, _emberMetalAssign) {
/**
@module ember
@submodule ember-template-compiler
*/
'use strict';
- exports.default = compile;
-
- var template = undefined;
-
/**
Uses HTMLBars `compile` function to process a string into a compiled template.
This is not present in production builds.
@@ -10979,36 +11353,26 @@
@method compile
@param {String} templateString This is the string to be compiled by HTMLBars.
@param {Object} options This is an options hash to augment the compiler options.
*/
- function compile(templateString, options) {
- if (!template && _require.has('ember-glimmer')) {
- template = _require.default('ember-glimmer').template;
- }
+ exports.default = function (templateString, options) {
+ var _compiler = _emberTemplateCompilerCompiler.default();
- if (!template) {
- throw new Error('Cannot call `compile` with only the template compiler loaded. Please load `ember.debug.js` or `ember.prod.js` prior to calling `compile`.');
- }
+ var compile = _compiler.compile;
- var precompiledTemplateString = _emberTemplateCompilerSystemPrecompile.default(templateString, options);
- var templateJS = new Function('return ' + precompiledTemplateString)();
- return template(templateJS);
- }
+ return compile(templateString, _emberMetalAssign.default({}, _emberTemplateCompilerSystemCompileOptions.default(), options));
+ };
});
-enifed('ember-template-compiler/system/precompile', ['exports', 'ember-template-compiler/system/compile-options', 'require'], function (exports, _emberTemplateCompilerSystemCompileOptions, _require) {
+enifed('ember-template-compiler/system/precompile', ['exports', 'ember-metal/assign', 'ember-template-compiler/compiler', 'ember-template-compiler/system/compile-options'], function (exports, _emberMetalAssign, _emberTemplateCompilerCompiler, _emberTemplateCompilerSystemCompileOptions) {
/**
@module ember
@submodule ember-template-compiler
*/
'use strict';
- exports.default = precompile;
-
- var glimmerPrecompile = undefined;
-
/**
Uses HTMLBars `compile` function to process a string into a compiled template string.
The returned string must be passed through `Ember.HTMLBars.template`.
This is not present in production builds.
@@ -11016,13812 +11380,3925 @@
@private
@method precompile
@param {String} templateString This is the string to be compiled by HTMLBars.
*/
- function precompile(templateString, options) {
- if (!glimmerPrecompile && _require.has('glimmer-compiler')) {
- glimmerPrecompile = _require.default('glimmer-compiler').precompile;
- }
+ exports.default = function (templateString, options) {
+ var _compiler = _emberTemplateCompilerCompiler.default();
- if (!glimmerPrecompile) {
- throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.');
- }
+ var precompile = _compiler.precompile;
- return glimmerPrecompile(templateString, _emberTemplateCompilerSystemCompileOptions.default(options));
- }
+ return precompile(templateString, _emberMetalAssign.default({}, _emberTemplateCompilerSystemCompileOptions.default(), options));
+ };
});
-enifed("ember-utils/apply-str", ["exports"], function (exports) {
- /**
- @param {Object} t target
- @param {String} m method
- @param {Array} a args
- @private
- */
- "use strict";
+enifed('ember-template-compiler/system/register-plugin', ['exports', 'ember-template-compiler/compiler'], function (exports, _emberTemplateCompilerCompiler) {
+ 'use strict';
- exports.default = applyStr;
+ var _compiler = _emberTemplateCompilerCompiler.default();
- function applyStr(t, m, a) {
- var l = a && a.length;
- if (!a || !l) {
- return t[m]();
- }
- switch (l) {
- case 1:
- return t[m](a[0]);
- case 2:
- return t[m](a[0], a[1]);
- case 3:
- return t[m](a[0], a[1], a[2]);
- case 4:
- return t[m](a[0], a[1], a[2], a[3]);
- case 5:
- return t[m](a[0], a[1], a[2], a[3], a[4]);
- default:
- return t[m].apply(t, a);
- }
- }
+ var registerPlugin = _compiler.registerPlugin;
+ exports.default = registerPlugin;
});
-enifed("ember-utils/assign", ["exports"], function (exports) {
- /**
- Copy properties from a source object to a target object.
-
- ```javascript
- var a = { first: 'Yehuda' };
- var b = { last: 'Katz' };
- var c = { company: 'Tilde Inc.' };
- Ember.assign(a, b, c); // a === { first: 'Yehuda', last: 'Katz', company: 'Tilde Inc.' }, b === { last: 'Katz' }, c === { company: 'Tilde Inc.' }
- ```
-
- @method assign
- @for Ember
- @param {Object} original The object to assign into
- @param {Object} ...args The objects to copy properties from
- @return {Object}
- @public
- */
- "use strict";
+enifed('ember-templates/compat', ['exports', 'ember-metal/core', 'ember-templates/template', 'ember-templates/string', 'ember-runtime/system/string', 'ember-metal/features', 'ember-templates/make-bound-helper'], function (exports, _emberMetalCore, _emberTemplatesTemplate, _emberTemplatesString, _emberRuntimeSystemString, _emberMetalFeatures, _emberTemplatesMakeBoundHelper) {
+ 'use strict';
- exports.default = assign;
+ var EmberHandlebars = _emberMetalCore.default.Handlebars = _emberMetalCore.default.Handlebars || {};
+ exports.EmberHandlebars = EmberHandlebars;
+ var EmberHTMLBars = _emberMetalCore.default.HTMLBars = _emberMetalCore.default.HTMLBars || {};
+ exports.EmberHTMLBars = EmberHTMLBars;
+ var EmberHandleBarsUtils = EmberHandlebars.Utils = EmberHandlebars.Utils || {};
- function assign(original) {
- for (var i = 1; i < arguments.length; i++) {
- var arg = arguments[i];
- if (!arg) {
- continue;
- }
+ exports.EmberHandleBarsUtils = EmberHandleBarsUtils;
+ Object.defineProperty(EmberHandlebars, 'SafeString', {
+ get: _emberTemplatesString.getSafeString
+ });
- var updates = Object.keys(arg);
+ EmberHTMLBars.template = EmberHandlebars.template = _emberTemplatesTemplate.default;
+ EmberHandleBarsUtils.escapeExpression = _emberTemplatesString.escapeExpression;
+ _emberRuntimeSystemString.default.htmlSafe = _emberTemplatesString.htmlSafe;
- for (var _i = 0; _i < updates.length; _i++) {
- var prop = updates[_i];
- original[prop] = arg[prop];
- }
- }
-
- return original;
+ if (true) {
+ _emberRuntimeSystemString.default.isHTMLSafe = _emberTemplatesString.isHTMLSafe;
}
+ EmberHTMLBars.makeBoundHelper = _emberTemplatesMakeBoundHelper.default;
});
-enifed('ember-utils/dictionary', ['exports', 'ember-utils/empty-object'], function (exports, _emberUtilsEmptyObject) {
+// reexports
+enifed('ember-templates/component', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
'use strict';
- exports.default = makeDictionary;
-
- // the delete is meant to hint at runtimes that this object should remain in
- // dictionary mode. This is clearly a runtime specific hack, but currently it
- // appears worthwhile in some usecases. Please note, these deletes do increase
- // the cost of creation dramatically over a plain Object.create. And as this
- // only makes sense for long-lived dictionaries that aren't instantiated often.
-
- function makeDictionary(parent) {
- var dict = undefined;
- if (parent === null) {
- dict = new _emberUtilsEmptyObject.default();
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/component').default;
} else {
- dict = Object.create(parent);
+ return _require.default('ember-htmlbars/component').default;
}
- dict['_dict'] = null;
- delete dict['_dict'];
- return dict;
- }
+ })();
});
-enifed("ember-utils/empty-object", ["exports"], function (exports) {
- // This exists because `Object.create(null)` is absurdly slow compared
- // to `new EmptyObject()`. In either case, you want a null prototype
- // when you're treating the object instances as arbitrary dictionaries
- // and don't want your keys colliding with build-in methods on the
- // default object prototype.
+enifed('ember-templates/components/checkbox', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- "use strict";
-
- var proto = Object.create(null, {
- // without this, we will always still end up with (new
- // EmptyObject()).constructor === Object
- constructor: {
- value: undefined,
- enumerable: false,
- writable: true
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/components/checkbox').default;
+ } else {
+ return _require.default('ember-htmlbars/components/checkbox').default;
}
- });
-
- function EmptyObject() {}
- EmptyObject.prototype = proto;
- exports.default = EmptyObject;
+ })();
});
-enifed('ember-utils/guid', ['exports', 'ember-utils/intern'], function (exports, _emberUtilsIntern) {
+enifed('ember-templates/components/link-to', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
'use strict';
- exports.uuid = uuid;
- exports.generateGuid = generateGuid;
- exports.guidFor = guidFor;
-
- /**
- Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from
- jQuery master. We'll just bootstrap our own uuid now.
-
- @private
- @return {Number} the uuid
- */
- var _uuid = 0;
-
- /**
- Generates a universally unique identifier. This method
- is used internally by Ember for assisting with
- the generation of GUID's and other unique identifiers.
-
- @public
- @return {Number} [description]
- */
-
- function uuid() {
- return ++_uuid;
- }
-
- /**
- Prefix used for guids through out Ember.
- @private
- @property GUID_PREFIX
- @for Ember
- @type String
- @final
- */
- var GUID_PREFIX = 'ember';
-
- // Used for guid generation...
- var numberCache = [];
- var stringCache = {};
-
- /**
- A unique key used to assign guids and other private metadata to objects.
- If you inspect an object in your browser debugger you will often see these.
- They can be safely ignored.
-
- On browsers that support it, these properties are added with enumeration
- disabled so they won't show up when you iterate over your properties.
-
- @private
- @property GUID_KEY
- @for Ember
- @type String
- @final
- */
- var GUID_KEY = _emberUtilsIntern.default('__ember' + +new Date());
-
- exports.GUID_KEY = GUID_KEY;
- var GUID_DESC = {
- writable: true,
- configurable: true,
- enumerable: false,
- value: null
- };
-
- exports.GUID_DESC = GUID_DESC;
- var nullDescriptor = {
- configurable: true,
- writable: true,
- enumerable: false,
- value: null
- };
-
- var GUID_KEY_PROPERTY = {
- name: GUID_KEY,
- descriptor: nullDescriptor
- };
-
- exports.GUID_KEY_PROPERTY = GUID_KEY_PROPERTY;
- /**
- Generates a new guid, optionally saving the guid to the object that you
- pass in. You will rarely need to use this method. Instead you should
- call `Ember.guidFor(obj)`, which return an existing guid if available.
-
- @private
- @method generateGuid
- @for Ember
- @param {Object} [obj] Object the guid will be used for. If passed in, the guid will
- be saved on the object and reused whenever you pass the same object
- again.
-
- If no object is passed, just generate a new guid.
- @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to
- separate the guid into separate namespaces.
- @return {String} the guid
- */
-
- function generateGuid(obj, prefix) {
- if (!prefix) {
- prefix = GUID_PREFIX;
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/components/link-to').default;
+ } else {
+ return _require.default('ember-htmlbars/components/link-to').default;
}
+ })();
+});
+enifed('ember-templates/components/text_area', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- var ret = prefix + uuid();
- if (obj) {
- if (obj[GUID_KEY] === null) {
- obj[GUID_KEY] = ret;
- } else {
- GUID_DESC.value = ret;
- if (obj.__defineNonEnumerable) {
- obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
- } else {
- Object.defineProperty(obj, GUID_KEY, GUID_DESC);
- }
- }
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/components/text_area').default;
+ } else {
+ return _require.default('ember-htmlbars/components/text_area').default;
}
- return ret;
- }
+ })();
+});
+enifed('ember-templates/components/text_field', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- /**
- Returns a unique id for the object. If the object does not yet have a guid,
- one will be assigned to it. You can call this on any object,
- `Ember.Object`-based or not, but be aware that it will add a `_guid`
- property.
-
- You can also use this method on DOM Element objects.
-
- @public
- @method guidFor
- @for Ember
- @param {Object} obj any object, string, number, Element, or primitive
- @return {String} the unique guid for this instance.
- */
-
- function guidFor(obj) {
- var type = typeof obj;
- var isObject = type === 'object' && obj !== null;
- var isFunction = type === 'function';
-
- if ((isObject || isFunction) && obj[GUID_KEY]) {
- return obj[GUID_KEY];
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/components/text_field').default;
+ } else {
+ return _require.default('ember-htmlbars/components/text_field').default;
}
+ })();
+});
+enifed('ember-templates/helper', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- // special cases where we don't want to add a key to object
- if (obj === undefined) {
- return '(undefined)';
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/helper').default;
+ } else {
+ return _require.default('ember-htmlbars/helper').default;
}
+ })();
- if (obj === null) {
- return '(null)';
+ var helper = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/helper').helper;
+ } else {
+ return _require.default('ember-htmlbars/helper').helper;
}
-
- var ret = undefined;
-
- // Don't allow prototype changes to String etc. to change the guidFor
- switch (type) {
- case 'number':
- ret = numberCache[obj];
-
- if (!ret) {
- ret = numberCache[obj] = 'nu' + obj;
- }
-
- return ret;
-
- case 'string':
- ret = stringCache[obj];
-
- if (!ret) {
- ret = stringCache[obj] = 'st' + uuid();
- }
-
- return ret;
-
- case 'boolean':
- return obj ? '(true)' : '(false)';
-
- default:
- if (obj === Object) {
- return '(Object)';
- }
-
- if (obj === Array) {
- return '(Array)';
- }
-
- ret = GUID_PREFIX + uuid();
-
- if (obj[GUID_KEY] === null) {
- obj[GUID_KEY] = ret;
- } else {
- GUID_DESC.value = ret;
-
- if (obj.__defineNonEnumerable) {
- obj.__defineNonEnumerable(GUID_KEY_PROPERTY);
- } else {
- Object.defineProperty(obj, GUID_KEY, GUID_DESC);
- }
- }
- return ret;
- }
- }
+ })();
+ exports.helper = helper;
});
-enifed('ember-utils/index', ['exports', 'ember-utils/symbol', 'ember-utils/owner', 'ember-utils/assign', 'ember-utils/empty-object', 'ember-utils/dictionary', 'ember-utils/guid', 'ember-utils/intern', 'ember-utils/super', 'ember-utils/inspect', 'ember-utils/lookup-descriptor', 'ember-utils/invoke', 'ember-utils/make-array', 'ember-utils/apply-str', 'ember-utils/to-string'], function (exports, _emberUtilsSymbol, _emberUtilsOwner, _emberUtilsAssign, _emberUtilsEmptyObject, _emberUtilsDictionary, _emberUtilsGuid, _emberUtilsIntern, _emberUtilsSuper, _emberUtilsInspect, _emberUtilsLookupDescriptor, _emberUtilsInvoke, _emberUtilsMakeArray, _emberUtilsApplyStr, _emberUtilsToString) {
- /*
- This package will be eagerly parsed and should have no dependencies on external
- packages.
-
- It is intended to be used to share utility methods that will be needed
- by every Ember application (and is **not** a dumping ground of useful utilities).
-
- Utility methods that are needed in < 80% of cases should be placed
- elsewhere (so they can be lazily evaluated / parsed).
- */
+enifed('ember-templates/index', ['exports', 'ember-metal/core', 'ember-templates/template_registry', 'ember-templates/renderer', 'ember-templates/component', 'ember-templates/helper', 'ember-templates/components/checkbox', 'ember-templates/components/text_field', 'ember-templates/components/text_area', 'ember-templates/components/link-to', 'ember-templates/string', 'ember-environment', 'ember-templates/compat'], function (exports, _emberMetalCore, _emberTemplatesTemplate_registry, _emberTemplatesRenderer, _emberTemplatesComponent, _emberTemplatesHelper, _emberTemplatesComponentsCheckbox, _emberTemplatesComponentsText_field, _emberTemplatesComponentsText_area, _emberTemplatesComponentsLinkTo, _emberTemplatesString, _emberEnvironment, _emberTemplatesCompat) {
'use strict';
- exports.symbol = _emberUtilsSymbol.default;
- exports.getOwner = _emberUtilsOwner.getOwner;
- exports.setOwner = _emberUtilsOwner.setOwner;
- exports.OWNER = _emberUtilsOwner.OWNER;
- exports.assign = _emberUtilsAssign.default;
- exports.EmptyObject = _emberUtilsEmptyObject.default;
- exports.dictionary = _emberUtilsDictionary.default;
- exports.uuid = _emberUtilsGuid.uuid;
- exports.GUID_KEY = _emberUtilsGuid.GUID_KEY;
- exports.GUID_DESC = _emberUtilsGuid.GUID_DESC;
- exports.GUID_KEY_PROPERTY = _emberUtilsGuid.GUID_KEY_PROPERTY;
- exports.generateGuid = _emberUtilsGuid.generateGuid;
- exports.guidFor = _emberUtilsGuid.guidFor;
- exports.intern = _emberUtilsIntern.default;
- exports.checkHasSuper = _emberUtilsSuper.checkHasSuper;
- exports.ROOT = _emberUtilsSuper.ROOT;
- exports.wrap = _emberUtilsSuper.wrap;
- exports.inspect = _emberUtilsInspect.default;
- exports.lookupDescriptor = _emberUtilsLookupDescriptor.default;
- exports.canInvoke = _emberUtilsInvoke.canInvoke;
- exports.tryInvoke = _emberUtilsInvoke.tryInvoke;
- exports.makeArray = _emberUtilsMakeArray.default;
- exports.applyStr = _emberUtilsApplyStr.default;
- exports.toString = _emberUtilsToString.default;
-});
-enifed('ember-utils/inspect', ['exports'], function (exports) {
- 'use strict';
+ _emberMetalCore.default._Renderer = _emberTemplatesRenderer.Renderer;
+ _emberMetalCore.default.Component = _emberTemplatesComponent.default;
+ _emberTemplatesHelper.default.helper = _emberTemplatesHelper.helper;
+ _emberMetalCore.default.Helper = _emberTemplatesHelper.default;
+ _emberMetalCore.default.Checkbox = _emberTemplatesComponentsCheckbox.default;
+ _emberMetalCore.default.TextField = _emberTemplatesComponentsText_field.default;
+ _emberMetalCore.default.TextArea = _emberTemplatesComponentsText_area.default;
+ _emberMetalCore.default.LinkComponent = _emberTemplatesComponentsLinkTo.default;
- exports.default = inspect;
- var objectToString = Object.prototype.toString;
+ if (_emberEnvironment.ENV.EXTEND_PROTOTYPES.String) {
+ String.prototype.htmlSafe = function () {
+ return _emberTemplatesString.htmlSafe(this);
+ };
+ }
/**
- Convenience method to inspect an object. This method will attempt to
- convert the object into a useful string description.
+ Global hash of shared templates. This will automatically be populated
+ by the build tools so that you can store your Handlebars templates in
+ separate files that get loaded into JavaScript at buildtime.
- It is a pretty simple implementation. If you want something more robust,
- use something like JSDump: https://github.com/NV/jsDump
-
- @method inspect
+ @property TEMPLATES
@for Ember
- @param {Object} obj The object you want to inspect.
- @return {String} A description of the object
- @since 1.4.0
+ @type Object
@private
*/
+ Object.defineProperty(_emberMetalCore.default, 'TEMPLATES', {
+ get: _emberTemplatesTemplate_registry.getTemplates,
+ set: _emberTemplatesTemplate_registry.setTemplates,
+ configurable: false,
+ enumerable: false
+ });
- function inspect(obj) {
- if (obj === null) {
- return 'null';
- }
- if (obj === undefined) {
- return 'undefined';
- }
- if (Array.isArray(obj)) {
- return '[' + obj + ']';
- }
- // for non objects
- var type = typeof obj;
- if (type !== 'object' && type !== 'symbol') {
- return '' + obj;
- }
- // overridden toString
- if (typeof obj.toString === 'function' && obj.toString !== objectToString) {
- return obj.toString();
- }
-
- // Object.prototype.toString === {}.toString
- var v = undefined;
- var ret = [];
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- v = obj[key];
- if (v === 'toString') {
- continue;
- } // ignore useless items
- if (typeof v === 'function') {
- v = 'function() { ... }';
- }
-
- if (v && typeof v.toString !== 'function') {
- ret.push(key + ': ' + objectToString.call(v));
- } else {
- ret.push(key + ': ' + v);
- }
- }
- }
- return '{' + ret.join(', ') + '}';
- }
+ exports.default = _emberMetalCore.default;
});
-enifed("ember-utils/intern", ["exports"], function (exports) {
- /**
- Strongly hint runtimes to intern the provided string.
-
- When do I need to use this function?
-
- For the most part, never. Pre-mature optimization is bad, and often the
- runtime does exactly what you need it to, and more often the trade-off isn't
- worth it.
-
- Why?
-
- Runtimes store strings in at least 2 different representations:
- Ropes and Symbols (interned strings). The Rope provides a memory efficient
- data-structure for strings created from concatenation or some other string
- manipulation like splitting.
-
- Unfortunately checking equality of different ropes can be quite costly as
- runtimes must resort to clever string comparison algorithms. These
- algorithms typically cost in proportion to the length of the string.
- Luckily, this is where the Symbols (interned strings) shine. As Symbols are
- unique by their string content, equality checks can be done by pointer
- comparison.
-
- How do I know if my string is a rope or symbol?
-
- Typically (warning general sweeping statement, but truthy in runtimes at
- present) static strings created as part of the JS source are interned.
- Strings often used for comparisons can be interned at runtime if some
- criteria are met. One of these criteria can be the size of the entire rope.
- For example, in chrome 38 a rope longer then 12 characters will not
- intern, nor will segments of that rope.
-
- Some numbers: http://jsperf.com/eval-vs-keys/8
-
- Known Trickâ„¢
-
- @private
- @return {String} interned version of the provided string
- */
- "use strict";
+// reexports
+enifed('ember-templates/make-bound-helper', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- exports.default = intern;
-
- function intern(str) {
- var obj = {};
- obj[str] = 1;
- for (var key in obj) {
- if (key === str) {
- return key;
- }
+ exports.default = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/make-bound-helper').default;
+ } else {
+ return _require.default('ember-htmlbars/make-bound-helper').default;
}
- return str;
- }
+ })();
});
-enifed('ember-utils/invoke', ['exports', 'ember-utils/apply-str'], function (exports, _emberUtilsApplyStr) {
+enifed('ember-templates/renderer', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
'use strict';
- exports.canInvoke = canInvoke;
- exports.tryInvoke = tryInvoke;
+ var InteractiveRenderer = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/renderer').InteractiveRenderer;
+ } else {
+ return _require.default('ember-htmlbars/renderer').InteractiveRenderer;
+ }
+ })();
- /**
- Checks to see if the `methodName` exists on the `obj`.
-
- ```javascript
- let foo = { bar: function() { return 'bar'; }, baz: null };
-
- Ember.canInvoke(foo, 'bar'); // true
- Ember.canInvoke(foo, 'baz'); // false
- Ember.canInvoke(foo, 'bat'); // false
- ```
-
- @method canInvoke
- @for Ember
- @param {Object} obj The object to check for the method
- @param {String} methodName The method name to check for
- @return {Boolean}
- @private
- */
+ exports.InteractiveRenderer = InteractiveRenderer;
+ var InertRenderer = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/renderer').InertRenderer;
+ } else {
+ return _require.default('ember-htmlbars/renderer').InertRenderer;
+ }
+ })();
- function canInvoke(obj, methodName) {
- return !!(obj && typeof obj[methodName] === 'function');
- }
-
- /**
- Checks to see if the `methodName` exists on the `obj`,
- and if it does, invokes it with the arguments passed.
-
- ```javascript
- let d = new Date('03/15/2013');
-
- Ember.tryInvoke(d, 'getTime'); // 1363320000000
- Ember.tryInvoke(d, 'setFullYear', [2014]); // 1394856000000
- Ember.tryInvoke(d, 'noSuchMethod', [2014]); // undefined
- ```
-
- @method tryInvoke
- @for Ember
- @param {Object} obj The object to check for the method
- @param {String} methodName The method name to check for
- @param {Array} [args] The arguments to pass to the method
- @return {*} the return value of the invoked method or undefined if it cannot be invoked
- @public
- */
-
- function tryInvoke(obj, methodName, args) {
- if (canInvoke(obj, methodName)) {
- return args ? _emberUtilsApplyStr.default(obj, methodName, args) : _emberUtilsApplyStr.default(obj, methodName);
+ exports.InertRenderer = InertRenderer;
+ var Renderer = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/renderer').Renderer;
+ } else {
+ return _require.default('ember-htmlbars/renderer').Renderer;
}
- }
+ })();
+ exports.Renderer = Renderer;
});
-enifed("ember-utils/lookup-descriptor", ["exports"], function (exports) {
- "use strict";
+enifed('ember-templates/string', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- exports.default = lookupDescriptor;
-
- function lookupDescriptor(obj, keyName) {
- var current = obj;
- while (current) {
- var descriptor = Object.getOwnPropertyDescriptor(current, keyName);
-
- if (descriptor) {
- return descriptor;
- }
-
- current = Object.getPrototypeOf(current);
+ var strings = (function () {
+ if (false) {
+ return _require.default('ember-glimmer/utils/string');
+ } else {
+ return _require.default('ember-htmlbars/utils/string');
}
+ })();
- return null;
- }
+ var SafeString = strings.SafeString;
+ exports.SafeString = SafeString;
+ var escapeExpression = strings.escapeExpression;
+ exports.escapeExpression = escapeExpression;
+ var htmlSafe = strings.htmlSafe;
+ exports.htmlSafe = htmlSafe;
+ var isHTMLSafe = strings.isHTMLSafe;
+ exports.isHTMLSafe = isHTMLSafe;
+ var getSafeString = strings.getSafeString;
+ exports.getSafeString = getSafeString;
});
-enifed("ember-utils/make-array", ["exports"], function (exports) {
- /**
- Forces the passed object to be part of an array. If the object is already
- an array, it will return the object. Otherwise, it will add the object to
- an array. If obj is `null` or `undefined`, it will return an empty array.
-
- ```javascript
- Ember.makeArray(); // []
- Ember.makeArray(null); // []
- Ember.makeArray(undefined); // []
- Ember.makeArray('lindsay'); // ['lindsay']
- Ember.makeArray([1, 2, 42]); // [1, 2, 42]
-
- let controller = Ember.ArrayProxy.create({ content: [] });
-
- Ember.makeArray(controller) === controller; // true
- ```
-
- @method makeArray
- @for Ember
- @param {Object} obj the object
- @return {Array}
- @private
- */
- "use strict";
+enifed('ember-templates/template', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) {
+ 'use strict';
- exports.default = makeArray;
-
- function makeArray(obj) {
- if (obj === null || obj === undefined) {
- return [];
- }
- return Array.isArray(obj) ? obj : [obj];
+ var htmlbarsTemplate = undefined,
+ glimmerTemplate = undefined;
+ if (_require.has('ember-htmlbars')) {
+ htmlbarsTemplate = _require.default('ember-htmlbars').template;
}
-});
-enifed('ember-utils/owner', ['exports', 'ember-utils/symbol'], function (exports, _emberUtilsSymbol) {
- /**
- @module ember
- @submodule ember-runtime
- */
- 'use strict';
-
- exports.getOwner = getOwner;
- exports.setOwner = setOwner;
- var OWNER = _emberUtilsSymbol.default('OWNER');
-
- exports.OWNER = OWNER;
- /**
- Framework objects in an Ember application (components, services, routes, etc.)
- are created via a factory and dependency injection system. Each of these
- objects is the responsibility of an "owner", which handled its
- instantiation and manages its lifetime.
-
- `getOwner` fetches the owner object responsible for an instance. This can
- be used to lookup or resolve other class instances, or register new factories
- into the owner.
-
- For example, this component dynamically looks up a service based on the
- `audioType` passed as an attribute:
-
- ```
- // app/components/play-audio.js
- import Ember from 'ember';
-
- // Usage:
- //
- // {{play-audio audioType=model.audioType audioFile=model.file}}
- //
- export default Ember.Component.extend({
- audioService: Ember.computed('audioType', function() {
- let owner = Ember.getOwner(this);
- return owner.lookup(`service:${this.get('audioType')}`);
- }),
- click() {
- let player = this.get('audioService');
- player.play(this.get('audioFile'));
- }
- });
- ```
-
- @method getOwner
- @for Ember
- @param {Object} object An object with an owner.
- @return {Object} An owner object.
- @since 2.3.0
- @public
- */
-
- function getOwner(object) {
- return object[OWNER];
+ if (_require.has('ember-glimmer')) {
+ glimmerTemplate = _require.default('ember-glimmer').template;
}
- /**
- `setOwner` forces a new owner on a given object instance. This is primarily
- useful in some testing cases.
-
- @method setOwner
- @for Ember
- @param {Object} object An object with an owner.
- @return {Object} An owner object.
- @since 2.3.0
- @public
- */
+ var template = false ? glimmerTemplate : htmlbarsTemplate;
- function setOwner(object, owner) {
- object[OWNER] = owner;
- }
+ exports.default = template;
});
-enifed('ember-utils/super', ['exports'], function (exports) {
- 'use strict';
+enifed("ember-templates/template_registry", ["exports"], function (exports) {
+ // STATE within a module is frowned apon, this exists
+ // to support Ember.TEMPLATES but shield ember internals from this legacy
+ // global API.
+ "use strict";
- exports.wrap = wrap;
- var HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/;
- var fnToString = Function.prototype.toString;
+ exports.setTemplates = setTemplates;
+ exports.getTemplates = getTemplates;
+ exports.get = get;
+ exports.has = has;
+ exports.set = set;
+ var TEMPLATES = {};
- var checkHasSuper = (function () {
- var sourceAvailable = fnToString.call(function () {
- return this;
- }).indexOf('return this') > -1;
-
- if (sourceAvailable) {
- return function checkHasSuper(func) {
- return HAS_SUPER_PATTERN.test(fnToString.call(func));
- };
- }
-
- return function checkHasSuper() {
- return true;
- };
- })();
-
- exports.checkHasSuper = checkHasSuper;
- function ROOT() {}
- ROOT.__hasSuper = false;
-
- function hasSuper(func) {
- if (func.__hasSuper === undefined) {
- func.__hasSuper = checkHasSuper(func);
- }
- return func.__hasSuper;
+ function setTemplates(templates) {
+ TEMPLATES = templates;
}
- /**
- Wraps the passed function so that `this._super` will point to the superFunc
- when the function is invoked. This is the primitive we use to implement
- calls to super.
-
- @private
- @method wrap
- @for Ember
- @param {Function} func The function to call
- @param {Function} superFunc The super function.
- @return {Function} wrapped function.
- */
-
- function wrap(func, superFunc) {
- if (!hasSuper(func)) {
- return func;
- }
- // ensure an unwrapped super that calls _super is wrapped with a terminal _super
- if (!superFunc.wrappedFunction && hasSuper(superFunc)) {
- return _wrap(func, _wrap(superFunc, ROOT));
- }
- return _wrap(func, superFunc);
+ function getTemplates() {
+ return TEMPLATES;
}
- function _wrap(func, superFunc) {
- function superWrapper() {
- var orig = this._super;
- this._super = superFunc;
- var ret = func.apply(this, arguments);
- this._super = orig;
- return ret;
+ function get(name) {
+ if (TEMPLATES.hasOwnProperty(name)) {
+ return TEMPLATES[name];
}
-
- superWrapper.wrappedFunction = func;
- superWrapper.__ember_observes__ = func.__ember_observes__;
- superWrapper.__ember_observesBefore__ = func.__ember_observesBefore__;
- superWrapper.__ember_listens__ = func.__ember_listens__;
-
- return superWrapper;
}
-});
-enifed('ember-utils/symbol', ['exports', 'ember-utils/guid', 'ember-utils/intern'], function (exports, _emberUtilsGuid, _emberUtilsIntern) {
- 'use strict';
- exports.default = symbol;
-
- function symbol(debugName) {
- // TODO: Investigate using platform symbols, but we do not
- // want to require non-enumerability for this API, which
- // would introduce a large cost.
-
- return _emberUtilsIntern.default(debugName + ' [id=' + _emberUtilsGuid.GUID_KEY + Math.floor(Math.random() * new Date()) + ']');
+ function has(name) {
+ return TEMPLATES.hasOwnProperty(name);
}
-});
-enifed("ember-utils/to-string", ["exports"], function (exports) {
- "use strict";
- exports.default = toString;
- var objectToString = Object.prototype.toString;
-
- /*
- A `toString` util function that supports objects without a `toString`
- method, e.g. an object created with `Object.create(null)`.
- */
-
- function toString(obj) {
- if (obj && obj.toString) {
- return obj.toString();
- } else {
- return objectToString.call(obj);
- }
+ function set(name, template) {
+ return TEMPLATES[name] = template;
}
});
enifed("ember/features", ["exports"], function (exports) {
"use strict";
- exports.default = { "features-stripped-test": false, "ember-libraries-isregistered": false, "ember-runtime-computed-uniq-by": true, "ember-improved-instrumentation": false, "ember-runtime-enumerable-includes": true, "ember-string-ishtmlsafe": true, "ember-testing-check-waiters": true, "ember-metal-weakmap": false, "ember-glimmer-allow-backtracking-rerender": false, "ember-testing-resume-test": false, "mandatory-setter": true, "ember-glimmer-detect-backtracking-rerender": true };
+ exports.default = {};
});
enifed("ember/version", ["exports"], function (exports) {
"use strict";
- exports.default = "2.10.0-beta.2";
+ exports.default = "2.9.1";
});
-enifed("glimmer-compiler/index", ["exports", "glimmer-compiler/lib/compiler", "glimmer-compiler/lib/template-visitor"], function (exports, _glimmerCompilerLibCompiler, _glimmerCompilerLibTemplateVisitor) {
+enifed("htmlbars-compiler", ["exports", "htmlbars-compiler/compiler"], function (exports, _htmlbarsCompilerCompiler) {
"use strict";
- exports.precompile = _glimmerCompilerLibCompiler.precompile;
- exports.PrecompileOptions = _glimmerCompilerLibCompiler.PrecompileOptions;
-
- // exported only for tests
- exports.TemplateVisitor = _glimmerCompilerLibTemplateVisitor.default;
+ exports.compile = _htmlbarsCompilerCompiler.compile;
+ exports.compileSpec = _htmlbarsCompilerCompiler.compileSpec;
+ exports.template = _htmlbarsCompilerCompiler.template;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1VBQ0UsVUFBVSwrQkFBVixVQUFVO1VBQUUsaUJBQWlCLCtCQUFqQixpQkFBaUI7OztVQUlYLGVBQWUsc0NBQTFCLE9BQU8iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBwcmVjb21waWxlLCBQcmVjb21waWxlT3B0aW9uc1xufSBmcm9tIFwiLi9saWIvY29tcGlsZXJcIjtcblxuLy8gZXhwb3J0ZWQgb25seSBmb3IgdGVzdHNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGVtcGxhdGVWaXNpdG9yIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUtdmlzaXRvcic7XG4iXX0=
-enifed("glimmer-compiler/lib/compiler", ["exports", "glimmer-syntax", "glimmer-compiler/lib/template-compiler"], function (exports, _glimmerSyntax, _glimmerCompilerLibTemplateCompiler) {
- "use strict";
+enifed("htmlbars-compiler/compiler", ["exports", "htmlbars-syntax/parser", "htmlbars-compiler/template-compiler", "htmlbars-runtime/hooks", "htmlbars-runtime/render"], function (exports, _htmlbarsSyntaxParser, _htmlbarsCompilerTemplateCompiler, _htmlbarsRuntimeHooks, _htmlbarsRuntimeRender) {
+ /*jshint evil:true*/
+ "use strict";
- exports.precompile = precompile;
+ exports.compileSpec = compileSpec;
+ exports.template = template;
+ exports.compile = compile;
- var defaultId = (function () {
- var idFn = undefined;
- return function () {
- if (!idFn) {
- if (typeof require === 'function') {
- try {
- (function () {
- /* tslint:disable:no-require-imports */
- var crypto = require('crypto');
- /* tslint:enable:no-require-imports */
- idFn = function (src) {
- var hash = crypto.createHash('sha1');
- hash.update(src, 'utf8');
- // trim to 6 bytes of data (2^48 - 1)
- return hash.digest('base64').substring(0, 8);
- };
- idFn("test");
- })();
- } catch (e) {
- idFn = null;
- }
- }
- if (!idFn) {
- idFn = function () {
- return null;
- };
- }
- }
- return idFn;
- };
- })();
+ /*
+ * Compile a string into a template spec string. The template spec is a string
+ * representation of a template. Usually, you would use compileSpec for
+ * pre-compilation of a template on the server.
+ *
+ * Example usage:
+ *
+ * var templateSpec = compileSpec("Howdy {{name}}");
+ * // This next step is basically what plain compile does
+ * var template = new Function("return " + templateSpec)();
+ *
+ * @method compileSpec
+ * @param {String} string An HTMLBars template string
+ * @return {TemplateSpec} A template spec string
+ */
- function precompile(string, options) {
- var opts = options || {
- id: defaultId(),
- meta: {}
- };
- var ast = _glimmerSyntax.preprocess(string, opts);
+ function compileSpec(string, options) {
+ var ast = _htmlbarsSyntaxParser.preprocess(string, options);
+ var compiler = new _htmlbarsCompilerTemplateCompiler.default(options);
+ var program = compiler.compile(ast);
+ return program;
+ }
- var _TemplateCompiler$compile = _glimmerCompilerLibTemplateCompiler.default.compile(opts, ast);
+ /*
+ * @method template
+ * @param {TemplateSpec} templateSpec A precompiled template
+ * @return {Template} A template spec string
+ */
- var block = _TemplateCompiler$compile.block;
- var meta = _TemplateCompiler$compile.meta;
+ function template(templateSpec) {
+ return new Function("return " + templateSpec)();
+ }
- var idFn = opts.id || defaultId();
- var blockJSON = JSON.stringify(block.toJSON());
- var templateJSONObject = {
- id: idFn(JSON.stringify(meta) + blockJSON),
- block: blockJSON,
- meta: meta
- };
- // JSON is javascript
- return JSON.stringify(templateJSONObject);
- }
+ /*
+ * Compile a string into a template rendering function
+ *
+ * Example usage:
+ *
+ * // Template is the hydration portion of the compiled template
+ * var template = compile("Howdy {{name}}");
+ *
+ * // Template accepts three arguments:
+ * //
+ * // 1. A context object
+ * // 2. An env object
+ * // 3. A contextualElement (optional, document.body is the default)
+ * //
+ * // The env object *must* have at least these two properties:
+ * //
+ * // 1. `hooks` - Basic hooks for rendering a template
+ * // 2. `dom` - An instance of DOMHelper
+ * //
+ * import {hooks} from 'htmlbars-runtime';
+ * import {DOMHelper} from 'morph';
+ * var context = {name: 'whatever'},
+ * env = {hooks: hooks, dom: new DOMHelper()},
+ * contextualElement = document.body;
+ * var domFragment = template(context, env, contextualElement);
+ *
+ * @method compile
+ * @param {String} string An HTMLBars template string
+ * @param {Object} options A set of options to provide to the compiler
+ * @return {Template} A function for rendering the template
+ */
+
+ function compile(string, options) {
+ return _htmlbarsRuntimeHooks.wrap(template(compileSpec(string, options)), _htmlbarsRuntimeRender.default);
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBY0EsUUFBTSxTQUFTLEdBQXVCLENBQUMsWUFBQTtBQUNyQyxZQUFJLElBQWtCLFlBQUEsQ0FBQztBQUN2QixlQUFPLFlBQUE7QUFDTCxnQkFBSSxDQUFDLElBQUksRUFBRTtBQUNULG9CQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUNqQyx3QkFBSTs7O0FBRUYsZ0NBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFakMsZ0NBQUksR0FBRyxVQUFBLEdBQUcsRUFBQTtBQUNSLG9DQUFJLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLG9DQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFekIsdUNBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUM3QyxDQUFDO0FBQ0YsZ0NBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7cUJBQ2IsQ0FBQSxPQUFPLENBQUMsRUFBRTtBQUNWLDRCQUFJLEdBQUcsSUFBSSxDQUFDO3FCQUNiO2lCQUNGO0FBQ0Qsb0JBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCx3QkFBSSxHQUFHOytCQUFNLElBQUk7cUJBQUEsQ0FBQztpQkFDbkI7YUFDRjtBQUNELG1CQUFPLElBQUksQ0FBQztTQUNiLENBQUM7S0FDSCxDQUFBLEVBQUcsQ0FBQzs7QUFpQkwsYUFBQSxVQUFBLENBQTJCLE1BQWMsRUFBRSxPQUErQixFQUFBO0FBQ3hFLFlBQUksSUFBSSxHQUFHLE9BQU8sSUFBSTtBQUNwQixjQUFFLEVBQUUsU0FBUyxFQUFFO0FBQ2YsZ0JBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztBQUNGLFlBQUksR0FBRyxHQUFHLGVBOURILFVBQVUsQ0E4REksTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzt3Q0FDYiw0Q0FBaUIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7O1lBQW5ELEtBQUssNkJBQUwsS0FBSztZQUFFLElBQUksNkJBQUosSUFBSTs7QUFDakIsWUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNsQyxZQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLFlBQUksa0JBQWtCLEdBQXdDO0FBQzVELGNBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDMUMsaUJBQUssRUFBRSxTQUFTO0FBQ2hCLGdCQUFJLEVBQUosSUFBSTtTQUNMLENBQUM7O0FBR0YsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDM0MiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcImdsaW1tZXItc3ludGF4XCI7XG5pbXBvcnQgVGVtcGxhdGVDb21waWxlciwgeyBDb21waWxlT3B0aW9ucyB9IGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5pbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLCBUZW1wbGF0ZUphdmFzY3JpcHQgfSBmcm9tIFwiZ2xpbW1lci13aXJlLWZvcm1hdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlSWRGbiB7XG4gIChzcmM6IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVjb21waWxlT3B0aW9uczxUPiBleHRlbmRzIENvbXBpbGVPcHRpb25zPFQ+IHtcbiAgaWQ/OiBUZW1wbGF0ZUlkRm47XG59XG5cbmRlY2xhcmUgZnVuY3Rpb24gcmVxdWlyZShpZDogc3RyaW5nKTogYW55O1xuXG5jb25zdCBkZWZhdWx0SWQ6ICgpID0+IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGxldCBpZEZuOiBUZW1wbGF0ZUlkRm47XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCFpZEZuKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgICAgICBjb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLXJlcXVpcmUtaW1wb3J0cyAqL1xuICAgICAgICAgIGlkRm4gPSBzcmMgPT4ge1xuICAgICAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICAgICAgaGFzaC51cGRhdGUoc3JjLCAndXRmOCcpO1xuICAgICAgICAgICAgLy8gdHJpbSB0byA2IGJ5dGVzIG9mIGRhdGEgKDJeNDggLSAxKVxuICAgICAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCw4KTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlkRm4oXCJ0ZXN0XCIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWRGbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaWRGbikge1xuICAgICAgICBpZEZuID0gKCkgPT4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkRm47XG4gIH07XG59KSgpO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnZ2xpbW1lci1jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZTxUPihzdHJpbmc6IHN0cmluZywgb3B0aW9ucz86IFByZWNvbXBpbGVPcHRpb25zPFQ+KTogVGVtcGxhdGVKYXZhc2NyaXB0O1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBQcmVjb21waWxlT3B0aW9uczx7fT4pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgb3B0cyA9IG9wdGlvbnMgfHwge1xuICAgIGlkOiBkZWZhdWx0SWQoKSxcbiAgICBtZXRhOiB7fVxuICB9O1xuICBsZXQgYXN0ID0gcHJlcHJvY2VzcyhzdHJpbmcsIG9wdHMpO1xuICBsZXQgeyBibG9jaywgbWV0YSB9ID0gVGVtcGxhdGVDb21waWxlci5jb21waWxlKG9wdHMsIGFzdCk7XG4gIGxldCBpZEZuID0gb3B0cy5pZCB8fCBkZWZhdWx0SWQoKTtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvSlNPTigpKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazx7fT4gPSB7XG4gICAgaWQ6IGlkRm4oSlNPTi5zdHJpbmdpZnkobWV0YSkgKyBibG9ja0pTT04pLFxuICAgIGJsb2NrOiBibG9ja0pTT04sXG4gICAgbWV0YVxuICB9O1xuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcbn1cbiJdfQ==
-enifed("glimmer-compiler/lib/javascript-compiler", ["exports", "glimmer-util"], function (exports, _glimmerUtil) {
- "use strict";
+enifed("htmlbars-compiler/fragment-javascript-compiler", ["exports", "htmlbars-compiler/utils", "htmlbars-util/quoting"], function (exports, _htmlbarsCompilerUtils, _htmlbarsUtilQuoting) {
+ "use strict";
- var Block = (function () {
- function Block() {
- this.statements = [];
- this.positionals = [];
- }
+ var svgNamespace = "http://www.w3.org/2000/svg",
- Block.prototype.toJSON = function toJSON() {
- return {
- statements: this.statements,
- locals: this.positionals
- };
- };
+ // http://www.w3.org/html/wg/drafts/html/master/syntax.html#html-integration-point
+ svgHTMLIntegrationPoints = { 'foreignObject': true, 'desc': true, 'title': true };
- Block.prototype.push = function push(statement) {
- this.statements.push(statement);
- };
+ function FragmentJavaScriptCompiler() {
+ this.source = [];
+ this.depth = -1;
+ }
- return Block;
- })();
+ exports.default = FragmentJavaScriptCompiler;
- exports.Block = Block;
+ FragmentJavaScriptCompiler.prototype.compile = function (opcodes, options) {
+ this.source.length = 0;
+ this.depth = -1;
+ this.indent = options && options.indent || "";
+ this.namespaceFrameStack = [{ namespace: null, depth: null }];
+ this.domNamespace = null;
- var TemplateBlock = (function (_Block) {
- babelHelpers.inherits(TemplateBlock, _Block);
+ this.source.push('function buildFragment(dom) {\n');
+ _htmlbarsCompilerUtils.processOpcodes(this, opcodes);
+ this.source.push(this.indent + '}');
- function TemplateBlock() {
- _Block.apply(this, arguments);
- this.yields = new _glimmerUtil.DictSet();
- this.named = new _glimmerUtil.DictSet();
- this.blocks = [];
- this.hasPartials = false;
- }
+ return this.source.join('');
+ };
- TemplateBlock.prototype.toJSON = function toJSON() {
- return {
- statements: this.statements,
- locals: this.positionals,
- named: this.named.toArray(),
- yields: this.yields.toArray(),
- blocks: this.blocks.map(function (b) {
- return b.toJSON();
- }),
- hasPartials: this.hasPartials
- };
- };
+ FragmentJavaScriptCompiler.prototype.createFragment = function () {
+ var el = 'el' + ++this.depth;
+ this.source.push(this.indent + ' var ' + el + ' = dom.createDocumentFragment();\n');
+ };
- return TemplateBlock;
- })(Block);
+ FragmentJavaScriptCompiler.prototype.createElement = function (tagName) {
+ var el = 'el' + ++this.depth;
+ if (tagName === 'svg') {
+ this.pushNamespaceFrame({ namespace: svgNamespace, depth: this.depth });
+ }
+ this.ensureNamespace();
+ this.source.push(this.indent + ' var ' + el + ' = dom.createElement(' + _htmlbarsUtilQuoting.string(tagName) + ');\n');
+ if (svgHTMLIntegrationPoints[tagName]) {
+ this.pushNamespaceFrame({ namespace: null, depth: this.depth });
+ }
+ };
- exports.TemplateBlock = TemplateBlock;
+ FragmentJavaScriptCompiler.prototype.createText = function (str) {
+ var el = 'el' + ++this.depth;
+ this.source.push(this.indent + ' var ' + el + ' = dom.createTextNode(' + _htmlbarsUtilQuoting.string(str) + ');\n');
+ };
- var Template = (function () {
- function Template(meta) {
- this.meta = meta;
- this.block = new TemplateBlock();
- }
+ FragmentJavaScriptCompiler.prototype.createComment = function (str) {
+ var el = 'el' + ++this.depth;
+ this.source.push(this.indent + ' var ' + el + ' = dom.createComment(' + _htmlbarsUtilQuoting.string(str) + ');\n');
+ };
- Template.prototype.toJSON = function toJSON() {
- return {
- block: this.block.toJSON(),
- meta: this.meta
- };
- };
+ FragmentJavaScriptCompiler.prototype.returnNode = function () {
+ var el = 'el' + this.depth;
+ this.source.push(this.indent + ' return ' + el + ';\n');
+ };
- return Template;
- })();
+ FragmentJavaScriptCompiler.prototype.setAttribute = function (name, value, namespace) {
+ var el = 'el' + this.depth;
+ if (namespace) {
+ this.source.push(this.indent + ' dom.setAttributeNS(' + el + ',' + _htmlbarsUtilQuoting.string(namespace) + ',' + _htmlbarsUtilQuoting.string(name) + ',' + _htmlbarsUtilQuoting.string(value) + ');\n');
+ } else {
+ this.source.push(this.indent + ' dom.setAttribute(' + el + ',' + _htmlbarsUtilQuoting.string(name) + ',' + _htmlbarsUtilQuoting.string(value) + ');\n');
+ }
+ };
- exports.Template = Template;
+ FragmentJavaScriptCompiler.prototype.appendChild = function () {
+ if (this.depth === this.getCurrentNamespaceFrame().depth) {
+ this.popNamespaceFrame();
+ }
+ var child = 'el' + this.depth--;
+ var el = 'el' + this.depth;
+ this.source.push(this.indent + ' dom.appendChild(' + el + ', ' + child + ');\n');
+ };
- var JavaScriptCompiler = (function () {
- function JavaScriptCompiler(opcodes, meta) {
- this.blocks = new _glimmerUtil.Stack();
- this.values = [];
- this.opcodes = opcodes;
- this.template = new Template(meta);
- }
+ FragmentJavaScriptCompiler.prototype.getCurrentNamespaceFrame = function () {
+ return this.namespaceFrameStack[this.namespaceFrameStack.length - 1];
+ };
- JavaScriptCompiler.process = function process(opcodes, meta) {
- var compiler = new JavaScriptCompiler(opcodes, meta);
- return compiler.process();
- };
+ FragmentJavaScriptCompiler.prototype.pushNamespaceFrame = function (frame) {
+ this.namespaceFrameStack.push(frame);
+ };
- JavaScriptCompiler.prototype.process = function process() {
- var _this = this;
+ FragmentJavaScriptCompiler.prototype.popNamespaceFrame = function () {
+ return this.namespaceFrameStack.pop();
+ };
- this.opcodes.forEach(function (_ref) {
- var opcode = _ref[0];
-
- var args = _ref.slice(1);
-
- if (!_this[opcode]) {
- throw new Error("unimplemented " + opcode + " on JavaScriptCompiler");
- }
- _this[opcode].apply(_this, args);
- });
- return this.template;
- };
-
- /// Nesting
-
- JavaScriptCompiler.prototype.startBlock = function startBlock(_ref2) {
- var program = _ref2[0];
-
- var block = new Block();
- block.positionals = program.blockParams;
- this.blocks.push(block);
- };
-
- JavaScriptCompiler.prototype.endBlock = function endBlock() {
- var template = this.template;
- var blocks = this.blocks;
-
- template.block.blocks.push(blocks.pop());
- };
-
- JavaScriptCompiler.prototype.startProgram = function startProgram() {
- this.blocks.push(this.template.block);
- };
-
- JavaScriptCompiler.prototype.endProgram = function endProgram() {};
-
- /// Statements
-
- JavaScriptCompiler.prototype.text = function text(content) {
- this.push(['text', content]);
- };
-
- JavaScriptCompiler.prototype.append = function append(trusted) {
- this.push(['append', this.popValue(), trusted]);
- };
-
- JavaScriptCompiler.prototype.comment = function comment(value) {
- this.push(['comment', value]);
- };
-
- JavaScriptCompiler.prototype.modifier = function modifier(path) {
- var params = this.popValue();
- var hash = this.popValue();
- this.push(['modifier', path, params, hash]);
- };
-
- JavaScriptCompiler.prototype.block = function block(path, template, inverse) {
- var params = this.popValue();
- var hash = this.popValue();
- this.push(['block', path, params, hash, template, inverse]);
- };
-
- JavaScriptCompiler.prototype.openElement = function openElement(tag, blockParams) {
- this.push(['open-element', tag, blockParams]);
- };
-
- JavaScriptCompiler.prototype.flushElement = function flushElement() {
- this.push(['flush-element']);
- };
-
- JavaScriptCompiler.prototype.closeElement = function closeElement() {
- this.push(['close-element']);
- };
-
- JavaScriptCompiler.prototype.staticAttr = function staticAttr(name, namespace) {
- var value = this.popValue();
- this.push(['static-attr', name, value, namespace]);
- };
-
- JavaScriptCompiler.prototype.dynamicAttr = function dynamicAttr(name, namespace) {
- var value = this.popValue();
- this.push(['dynamic-attr', name, value, namespace]);
- };
-
- JavaScriptCompiler.prototype.trustingAttr = function trustingAttr(name, namespace) {
- var value = this.popValue();
- this.push(['trusting-attr', name, value, namespace]);
- };
-
- JavaScriptCompiler.prototype.staticArg = function staticArg(name) {
- var value = this.popValue();
- this.push(['static-arg', name.slice(1), value]);
- };
-
- JavaScriptCompiler.prototype.dynamicArg = function dynamicArg(name) {
- var value = this.popValue();
- this.push(['dynamic-arg', name.slice(1), value]);
- };
-
- JavaScriptCompiler.prototype.yield = function _yield(to) {
- var params = this.popValue();
- this.push(['yield', to, params]);
- this.template.block.yields.add(to);
- };
-
- JavaScriptCompiler.prototype.hasBlock = function hasBlock(name) {
- this.pushValue(['has-block', name]);
- this.template.block.yields.add(name);
- };
-
- JavaScriptCompiler.prototype.hasBlockParams = function hasBlockParams(name) {
- this.pushValue(['has-block-params', name]);
- this.template.block.yields.add(name);
- };
-
- JavaScriptCompiler.prototype.partial = function partial() {
- var params = this.popValue();
- this.push(['partial', params[0]]);
- this.template.block.hasPartials = true;
- };
-
- /// Expressions
-
- JavaScriptCompiler.prototype.literal = function literal(value) {
- if (value === undefined) {
- this.pushValue(['undefined']);
- } else {
- this.pushValue(value);
- }
- };
-
- JavaScriptCompiler.prototype.unknown = function unknown(path) {
- this.pushValue(['unknown', path]);
- };
-
- JavaScriptCompiler.prototype.arg = function arg(path) {
- this.template.block.named.add(path[0]);
- this.pushValue(['arg', path]);
- };
-
- JavaScriptCompiler.prototype.get = function get(path) {
- this.pushValue(['get', path]);
- };
-
- JavaScriptCompiler.prototype.concat = function concat() {
- this.pushValue(['concat', this.popValue()]);
- };
-
- JavaScriptCompiler.prototype.helper = function helper(path) {
- var params = this.popValue();
- var hash = this.popValue();
- this.pushValue(['helper', path, params, hash]);
- };
-
- /// Stack Management Opcodes
-
- JavaScriptCompiler.prototype.prepareArray = function prepareArray(size) {
- var values = [];
- for (var i = 0; i < size; i++) {
- values.push(this.popValue());
- }
- this.pushValue(values);
- };
-
- JavaScriptCompiler.prototype.prepareObject = function prepareObject(size) {
- _glimmerUtil.assert(this.values.length >= size, "Expected " + size + " values on the stack, found " + this.values.length);
- var keys = new Array(size);
- var values = new Array(size);
- for (var i = 0; i < size; i++) {
- keys[i] = this.popValue();
- values[i] = this.popValue();
- }
- this.pushValue([keys, values]);
- };
-
- /// Utilities
-
- JavaScriptCompiler.prototype.push = function push(args) {
- while (args[args.length - 1] === null) {
- args.pop();
- }
- this.blocks.current.push(args);
- };
-
- JavaScriptCompiler.prototype.pushValue = function pushValue(val) {
- this.values.push(val);
- };
-
- JavaScriptCompiler.prototype.popValue = function popValue() {
- _glimmerUtil.assert(this.values.length, "No expression found on stack");
- return this.values.pop();
- };
-
- return JavaScriptCompiler;
- })();
-
- exports.default = JavaScriptCompiler;
+ FragmentJavaScriptCompiler.prototype.ensureNamespace = function () {
+ var correctNamespace = this.getCurrentNamespaceFrame().namespace;
+ if (this.domNamespace !== correctNamespace) {
+ this.source.push(this.indent + ' dom.setNamespace(' + (correctNamespace ? _htmlbarsUtilQuoting.string(correctNamespace) : 'null') + ');\n');
+ this.domNamespace = correctNamespace;
+ }
+ };
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2phdmFzY3JpcHQtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBb0JBLEtBQUE7QUFBQSxpQkFBQSxLQUFBLEdBQUE7QUFDRSxnQkFBQSxDQUFBLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0FBQzdCLGdCQUFBLENBQUEsV0FBVyxHQUFhLEVBQUUsQ0FBQztTQVk1Qjs7QUFkRCxhQUFBLFdBSUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCwwQkFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDekIsQ0FBQztTQUNIOztBQVRILGFBQUEsV0FXRSxJQUFJLEdBQUEsY0FBQyxTQUFvQixFQUFBO0FBQ3ZCLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNqQzs7ZUFiSCxLQUFBOzs7OztRQWdCQSxhQUFBOzhCQUFBLGFBQUE7O0FBQUEsaUJBQUEsYUFBQSxHQUFBO0FBQW1DLCtCQUFBLFNBQUEsQ0FBQSxDQUFLO0FBQy9CLGdCQUFBLENBQUEsTUFBTSxHQUFHLGlCQXBDRixPQUFPLEVBb0NnQixDQUFDO0FBQy9CLGdCQUFBLENBQUEsS0FBSyxHQUFHLGlCQXJDRCxPQUFPLEVBcUNlLENBQUM7QUFDOUIsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO0FBQ3JCLGdCQUFBLENBQUEsV0FBVyxHQUFHLEtBQUssQ0FBQztTQVk1Qjs7QUFoQkQscUJBQUEsV0FNRSxNQUFNLEdBQUEsa0JBQUE7QUFDSixtQkFBTztBQUNMLDBCQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7QUFDM0Isc0JBQU0sRUFBRSxJQUFJLENBQUMsV0FBVztBQUN4QixxQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7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LENBQUMsUUFBUSxFQUFPLENBQUM7QUFDL0Isc0JBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFjLENBQUM7YUFDekM7QUFFRCxnQkFBSSxDQUFDLFNBQVMsQ0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3RDOzs7O0FBL0xILDBCQUFBLFdBbU1FLElBQUksR0FBQSxjQUFDLElBQWUsRUFBQTtBQUNsQixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDckMsb0JBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNaO0FBRUQsZ0JBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQzs7QUF6TUgsMEJBQUEsV0EyTUUsU0FBUyxHQUFBLG1CQUF1QyxHQUFNLEVBQUE7QUFDcEQsZ0JBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCOztBQTdNSCwwQkFBQSxXQStNRSxRQUFRLEdBQUEsb0JBQUE7QUFDTix5QkFuUkssTUFBTSxDQW1SSixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO0FBQzNELG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFPLENBQUM7U0FDL0I7O2VBbE5ILGtCQUFBOzs7c0JBQUEsa0JBQUEiLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuXG5pbXBvcnQge1xuICBUZW1wbGF0ZU1ldGEsXG4gIFNlcmlhbGl6ZWRCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZSxcbiAgQ29yZSxcbiAgU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uc1xufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUGFyYW1zID0gQ29yZS5QYXJhbXM7XG5leHBvcnQgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbmV4cG9ydCB0eXBlIFN0YWNrVmFsdWUgPSBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaCB8IHN0cjtcblxuZXhwb3J0IGNsYXNzIEJsb2NrIHtcbiAgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcbiAgcG9zaXRpb25hbHM6IHN0cmluZ1tdID0gW107XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGxvY2FsczogdGhpcy5wb3NpdGlvbmFsc1xuICAgIH07XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIHlpZWxkcyA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgYmxvY2tzOiBCbG9ja1tdID0gW107XG4gIHB1YmxpYyBoYXNQYXJ0aWFscyA9IGZhbHNlO1xuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGxvY2FsczogdGhpcy5wb3NpdGlvbmFscyxcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnRvQXJyYXkoKSxcbiAgICAgIHlpZWxkczogdGhpcy55aWVsZHMudG9BcnJheSgpLFxuICAgICAgYmxvY2tzOiB0aGlzLmJsb2Nrcy5tYXAoYiA9PiBiLnRvSlNPTigpKSxcbiAgICAgIGhhc1BhcnRpYWxzOiB0aGlzLmhhc1BhcnRpYWxzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGU8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ge1xuICBwdWJsaWMgYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jaygpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtZXRhOiBUKSB7fVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgc3RhdGljIHByb2Nlc3M8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ob3Bjb2RlcywgbWV0YSk6IFRlbXBsYXRlPFQ+IHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyPFQ+KG9wY29kZXMsIG1ldGEpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZTxUPjtcbiAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgU3RhY2s8QmxvY2s+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W107XG4gIHByaXZhdGUgdmFsdWVzOiBTdGFja1ZhbHVlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcGNvZGVzLCBtZXRhOiBUKSB7XG4gICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKG1ldGEpO1xuICB9XG5cbiAgcHJvY2VzcygpOiBUZW1wbGF0ZTxUPiB7XG4gICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkgeyB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApOyB9XG4gICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vLyBOZXN0aW5nXG5cbiAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICBsZXQgYmxvY2s6IEJsb2NrID0gbmV3IEJsb2NrKCk7XG4gICAgYmxvY2sucG9zaXRpb25hbHMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9ja3MucG9wKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFsndGV4dCcsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFsnYXBwZW5kJywgdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpLCB0cnVzdGVkXSk7XG4gIH1cblxuICBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goWydjb21tZW50JywgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKHBhdGg6IFBhdGgpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goWydtb2RpZmllcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgYmxvY2socGF0aDogUGF0aCwgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFsnYmxvY2snLCBwYXRoLCBwYXJhbXMsIGhhc2gsIHRlbXBsYXRlLCBpbnZlcnNlXSk7XG4gIH1cblxuICBvcGVuRWxlbWVudCh0YWc6IHN0ciwgYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoKFsnb3Blbi1lbGVtZW50JywgdGFnLCBibG9ja1BhcmFtc10pO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChbJ2ZsdXNoLWVsZW1lbnQnXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFsnY2xvc2UtZWxlbWVudCddKTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goWydzdGF0aWMtYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnZHluYW1pYy1hdHRyJywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgdHJ1c3RpbmdBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsndHJ1c3RpbmctYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHN0YXRpY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnc3RhdGljLWFyZycsIG5hbWUuc2xpY2UoMSksIHZhbHVlXSk7XG4gIH1cblxuICBkeW5hbWljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goWydkeW5hbWljLWFyZycsIG5hbWUuc2xpY2UoMSksIHZhbHVlXSk7XG4gIH1cblxuICB5aWVsZCh0bzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbJ3lpZWxkJywgdG8sIHBhcmFtc10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2sueWllbGRzLmFkZCh0byk7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9jaz4oWydoYXMtYmxvY2snLCBuYW1lXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKG5hbWUpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXM+KFsnaGFzLWJsb2NrLXBhcmFtcycsIG5hbWVdKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLnlpZWxkcy5hZGQobmFtZSk7XG4gIH1cblxuICBwYXJ0aWFsKCkge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goWydwYXJ0aWFsJywgcGFyYW1zWzBdXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNQYXJ0aWFscyA9IHRydWU7XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnNcblxuICBsaXRlcmFsKHZhbHVlOiBFeHByZXNzaW9ucy5WYWx1ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5VbmRlZmluZWQ+KFsndW5kZWZpbmVkJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5WYWx1ZT4odmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVua25vd24ocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Vbmtub3duPihbJ3Vua25vd24nLCBwYXRoXSk7XG4gIH1cblxuICBhcmcocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLm5hbWVkLmFkZChwYXRoWzBdKTtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Bcmc+KFsnYXJnJywgcGF0aF0pO1xuICB9XG5cbiAgZ2V0KHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuR2V0PihbJ2dldCcsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Db25jYXQ+KFsnY29uY2F0JywgdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCldKTtcbiAgfVxuXG4gIGhlbHBlcihwYXRoOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhlbHBlcj4oWydoZWxwZXInLCBwYXRoLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIC8vLyBTdGFjayBNYW5hZ2VtZW50IE9wY29kZXNcblxuICBwcmVwYXJlQXJyYXkoc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8UGFyYW1zPih2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZTxzdHI+KCk7XG4gICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8SGFzaD4oW2tleXMsIHZhbHVlc10pO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIHB1c2goYXJnczogU3RhdGVtZW50KSB7XG4gICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2Nrcy5jdXJyZW50LnB1c2goYXJncyk7XG4gIH1cblxuICBwdXNoVmFsdWU8UyBleHRlbmRzIEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoPih2YWw6IFMpIHtcbiAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gIH1cblxuICBwb3BWYWx1ZTxUIGV4dGVuZHMgU3RhY2tWYWx1ZT4oKTogVCB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCwgXCJObyBleHByZXNzaW9uIGZvdW5kIG9uIHN0YWNrXCIpO1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKSBhcyBUO1xuICB9XG59XG4iXX0=
-enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/lib/template-visitor", "glimmer-compiler/lib/javascript-compiler", "glimmer-util"], function (exports, _glimmerCompilerLibTemplateVisitor, _glimmerCompilerLibJavascriptCompiler, _glimmerUtil) {
- "use strict";
+enifed("htmlbars-compiler/fragment-opcode-compiler", ["exports", "htmlbars-compiler/template-visitor", "htmlbars-compiler/utils", "htmlbars-util", "htmlbars-util/array-utils"], function (exports, _htmlbarsCompilerTemplateVisitor, _htmlbarsCompilerUtils, _htmlbarsUtil, _htmlbarsUtilArrayUtils) {
+ "use strict";
- function isTrustedValue(value) {
- return value.escaped !== undefined && !value.escaped;
- }
+ function FragmentOpcodeCompiler() {
+ this.opcodes = [];
+ }
- var TemplateCompiler = (function () {
- function TemplateCompiler(options) {
- this.templateId = 0;
- this.templateIds = [];
- this.symbols = null;
- this.opcodes = [];
- this.includeMeta = false;
- this.options = options || {};
- }
+ exports.default = FragmentOpcodeCompiler;
- TemplateCompiler.compile = function compile(options, ast) {
- var templateVisitor = new _glimmerCompilerLibTemplateVisitor.default();
- templateVisitor.visit(ast);
- var compiler = new TemplateCompiler(options);
- var opcodes = compiler.process(templateVisitor.actions);
- return _glimmerCompilerLibJavascriptCompiler.default.process(opcodes, options.meta);
- };
+ FragmentOpcodeCompiler.prototype.compile = function (ast) {
+ var templateVisitor = new _htmlbarsCompilerTemplateVisitor.default();
+ templateVisitor.visit(ast);
- TemplateCompiler.prototype.process = function process(actions) {
- var _this = this;
+ _htmlbarsCompilerUtils.processOpcodes(this, templateVisitor.actions);
- actions.forEach(function (_ref) {
- var name = _ref[0];
+ return this.opcodes;
+ };
- var args = _ref.slice(1);
+ FragmentOpcodeCompiler.prototype.opcode = function (type, params) {
+ this.opcodes.push([type, params]);
+ };
- if (!_this[name]) {
- throw new Error("Unimplemented " + name + " on TemplateCompiler");
- }
- _this[name].apply(_this, args);
- });
- return this.opcodes;
- };
+ FragmentOpcodeCompiler.prototype.text = function (text) {
+ this.opcode('createText', [text.chars]);
+ this.opcode('appendChild');
+ };
- TemplateCompiler.prototype.startProgram = function startProgram(program) {
- this.opcode('startProgram', program, program);
- };
+ FragmentOpcodeCompiler.prototype.comment = function (comment) {
+ this.opcode('createComment', [comment.value]);
+ this.opcode('appendChild');
+ };
- TemplateCompiler.prototype.endProgram = function endProgram() {
- this.opcode('endProgram', null);
- };
+ FragmentOpcodeCompiler.prototype.openElement = function (element) {
+ this.opcode('createElement', [element.tag]);
+ _htmlbarsUtilArrayUtils.forEach(element.attributes, this.attribute, this);
+ };
- TemplateCompiler.prototype.startBlock = function startBlock(program) {
- this.symbols = program[0].symbols;
- this.templateId++;
- this.opcode('startBlock', program, program);
- };
+ FragmentOpcodeCompiler.prototype.closeElement = function () {
+ this.opcode('appendChild');
+ };
- TemplateCompiler.prototype.endBlock = function endBlock() {
- this.symbols = null;
- this.templateIds.push(this.templateId - 1);
- this.opcode('endBlock', null);
- };
+ FragmentOpcodeCompiler.prototype.startProgram = function () {
+ this.opcodes.length = 0;
+ this.opcode('createFragment');
+ };
- TemplateCompiler.prototype.text = function text(_ref2) {
- var action = _ref2[0];
+ FragmentOpcodeCompiler.prototype.endProgram = function () {
+ this.opcode('returnNode');
+ };
- this.opcode('text', action, action.chars);
- };
+ FragmentOpcodeCompiler.prototype.mustache = function () {
+ this.pushMorphPlaceholderNode();
+ };
- TemplateCompiler.prototype.comment = function comment(_ref3) {
- var action = _ref3[0];
+ FragmentOpcodeCompiler.prototype.component = function () {
+ this.pushMorphPlaceholderNode();
+ };
- this.opcode('comment', action, action.value);
- };
+ FragmentOpcodeCompiler.prototype.block = function () {
+ this.pushMorphPlaceholderNode();
+ };
- TemplateCompiler.prototype.openElement = function openElement(_ref4) {
- var action = _ref4[0];
+ FragmentOpcodeCompiler.prototype.pushMorphPlaceholderNode = function () {
+ this.opcode('createComment', [""]);
+ this.opcode('appendChild');
+ };
- this.opcode('openElement', action, action.tag, action.blockParams);
- for (var i = 0; i < action.attributes.length; i++) {
- this.attribute([action.attributes[i]]);
- }
- for (var i = 0; i < action.modifiers.length; i++) {
- this.modifier([action.modifiers[i]]);
- }
- this.opcode('flushElement', null);
- };
-
- TemplateCompiler.prototype.closeElement = function closeElement() {
- this.opcode('closeElement', null);
- };
-
- TemplateCompiler.prototype.attribute = function attribute(_ref5) {
- var action = _ref5[0];
- var name = action.name;
- var value = action.value;
-
- var namespace = _glimmerUtil.getAttrNamespace(name);
- var isStatic = this.prepareAttributeValue(value);
- if (name.charAt(0) === '@') {
- // Arguments
- if (isStatic) {
- this.opcode('staticArg', action, name);
- } else if (action.value.type === 'MustacheStatement') {
- this.opcode('dynamicArg', action, name);
- } else {
- this.opcode('dynamicArg', action, name);
- }
- } else {
- var isTrusting = isTrustedValue(value);
- if (isStatic) {
- this.opcode('staticAttr', action, name, namespace);
- } else if (isTrusting) {
- this.opcode('trustingAttr', action, name, namespace);
- } else if (action.value.type === 'MustacheStatement') {
- this.opcode('dynamicAttr', action, name);
- } else {
- this.opcode('dynamicAttr', action, name, namespace);
- }
- }
- };
-
- TemplateCompiler.prototype.modifier = function modifier(_ref6) {
- var action = _ref6[0];
- var parts = action.path.parts;
-
- this.prepareHelper(action);
- this.opcode('modifier', action, parts);
- };
-
- TemplateCompiler.prototype.mustache = function mustache(_ref7) {
- var action = _ref7[0];
-
- if (isYield(action)) {
- var to = assertValidYield(action);
- this.yield(to, action);
- } else if (isPartial(action)) {
- var params = assertValidPartial(action);
- this.partial(params, action);
- } else {
- this.mustacheExpression(action);
- this.opcode('append', action, !action.escaped);
- }
- };
-
- TemplateCompiler.prototype.block = function block(_ref8) /*, index, count*/{
- var action = _ref8[0];
-
- this.prepareHelper(action);
- var templateId = this.templateIds.pop();
- var inverseId = action.inverse === null ? null : this.templateIds.pop();
- this.opcode('block', action, action.path.parts, templateId, inverseId);
- };
-
- /// Internal actions, not found in the original processed actions
-
- TemplateCompiler.prototype.arg = function arg(_ref9) {
- var path = _ref9[0];
- var parts = path.parts;
-
- this.opcode('arg', path, parts);
- };
-
- TemplateCompiler.prototype.mustacheExpression = function mustacheExpression(expr) {
- if (isBuiltInHelper(expr)) {
- this.builtInHelper(expr);
- } else if (isLiteral(expr)) {
- this.opcode('literal', expr, expr.path.value);
- } else if (isArg(expr)) {
- this.arg([expr.path]);
- } else if (isHelperInvocation(expr)) {
- this.prepareHelper(expr);
- this.opcode('helper', expr, expr.path.parts);
- } else if (isLocalVariable(expr, this.symbols)) {
- this.opcode('get', expr, expr.path.parts);
- } else {
- this.opcode('unknown', expr, expr.path.parts);
- }
- };
-
- /// Internal Syntax
-
- TemplateCompiler.prototype.yield = function _yield(to, action) {
- this.prepareParams(action.params);
- this.opcode('yield', action, to);
- };
-
- TemplateCompiler.prototype.hasBlock = function hasBlock(name, action) {
- this.opcode('hasBlock', action, name);
- };
-
- TemplateCompiler.prototype.hasBlockParams = function hasBlockParams(name, action) {
- this.opcode('hasBlockParams', action, name);
- };
-
- TemplateCompiler.prototype.partial = function partial(params, action) {
- this.prepareParams(action.params);
- this.opcode('partial', action);
- };
-
- TemplateCompiler.prototype.builtInHelper = function builtInHelper(expr) {
- if (isHasBlock(expr)) {
- var _name = assertValidHasBlockUsage(expr.path.original, expr);
- this.hasBlock(_name, expr);
- } else if (isHasBlockParams(expr)) {
- var _name2 = assertValidHasBlockUsage(expr.path.original, expr);
- this.hasBlockParams(_name2, expr);
- }
- };
-
- /// Expressions, invoked recursively from prepareParams and prepareHash
-
- TemplateCompiler.prototype.SubExpression = function SubExpression(expr) {
- if (isBuiltInHelper(expr)) {
- this.builtInHelper(expr);
- } else {
- this.prepareHelper(expr);
- this.opcode('helper', expr, expr.path.parts);
- }
- };
-
- TemplateCompiler.prototype.PathExpression = function PathExpression(expr) {
- if (expr.data) {
- this.arg([expr]);
- } else {
- this.opcode('get', expr, expr.parts);
- }
- };
-
- TemplateCompiler.prototype.StringLiteral = function StringLiteral(action) {
- this.opcode('literal', null, action.value);
- };
-
- TemplateCompiler.prototype.BooleanLiteral = function BooleanLiteral(action) {
- this.opcode('literal', null, action.value);
- };
-
- TemplateCompiler.prototype.NumberLiteral = function NumberLiteral(action) {
- this.opcode('literal', null, action.value);
- };
-
- TemplateCompiler.prototype.NullLiteral = function NullLiteral(action) {
- this.opcode('literal', null, action.value);
- };
-
- TemplateCompiler.prototype.UndefinedLiteral = function UndefinedLiteral(action) {
- this.opcode('literal', null, action.value);
- };
-
- /// Utilities
-
- TemplateCompiler.prototype.opcode = function opcode(name, action) {
- for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
- args[_key - 2] = arguments[_key];
- }
-
- var opcode = [name].concat(args);
- if (this.includeMeta && action) {
- opcode.push(this.meta(action));
- }
- this.opcodes.push(opcode);
- };
-
- TemplateCompiler.prototype.prepareHelper = function prepareHelper(_ref10) {
- var params = _ref10.params;
- var hash = _ref10.hash;
-
- this.prepareHash(hash);
- this.prepareParams(params);
- };
-
- TemplateCompiler.prototype.preparePath = function preparePath(path) {
- this.opcode('literal', path, path.parts);
- };
-
- TemplateCompiler.prototype.prepareParams = function prepareParams(params) {
- if (!params.length) {
- this.opcode('literal', null, null);
- return;
- }
- for (var i = params.length - 1; i >= 0; i--) {
- var param = params[i];
- _glimmerUtil.assert(this[param.type], "Unimplemented " + param.type + " on TemplateCompiler");
- this[param.type](param);
- }
- this.opcode('prepareArray', null, params.length);
- };
-
- TemplateCompiler.prototype.prepareHash = function prepareHash(hash) {
- var pairs = hash.pairs;
- if (!pairs.length) {
- this.opcode('literal', null, null);
- return;
- }
- for (var i = pairs.length - 1; i >= 0; i--) {
- var _pairs$i = pairs[i];
- var key = _pairs$i.key;
- var value = _pairs$i.value;
-
- _glimmerUtil.assert(this[value.type], "Unimplemented " + value.type + " on TemplateCompiler");
- this[value.type](value);
- this.opcode('literal', null, key);
- }
- this.opcode('prepareObject', null, pairs.length);
- };
-
- TemplateCompiler.prototype.prepareAttributeValue = function prepareAttributeValue(value) {
- // returns the static value if the value is static
- switch (value.type) {
- case 'TextNode':
- this.opcode('literal', value, value.chars);
- return true;
- case 'MustacheStatement':
- this.attributeMustache([value]);
- return false;
- case 'ConcatStatement':
- this.prepareConcatParts(value.parts);
- this.opcode('concat', value);
- return false;
- }
- };
-
- TemplateCompiler.prototype.prepareConcatParts = function prepareConcatParts(parts) {
- for (var i = parts.length - 1; i >= 0; i--) {
- var part = parts[i];
- if (part.type === 'MustacheStatement') {
- this.attributeMustache([part]);
- } else if (part.type === 'TextNode') {
- this.opcode('literal', null, part.chars);
- }
- }
- this.opcode('prepareArray', null, parts.length);
- };
-
- TemplateCompiler.prototype.attributeMustache = function attributeMustache(_ref11) {
- var action = _ref11[0];
-
- this.mustacheExpression(action);
- };
-
- TemplateCompiler.prototype.meta = function meta(node) {
- var loc = node.loc;
- if (!loc) {
- return [];
- }
- var source = loc.source;
- var start = loc.start;
- var end = loc.end;
-
- return ['loc', [source || null, [start.line, start.column], [end.line, end.column]]];
- };
-
- return TemplateCompiler;
- })();
-
- exports.default = TemplateCompiler;
-
- function isHelperInvocation(mustache) {
- return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0;
+ FragmentOpcodeCompiler.prototype.attribute = function (attr) {
+ if (attr.value.type === 'TextNode') {
+ var namespace = _htmlbarsUtil.getAttrNamespace(attr.name);
+ this.opcode('setAttribute', [attr.name, attr.value.chars, namespace]);
}
- function isLocalVariable(mustache, symbols) {
- var parts = mustache.path.parts;
+ };
- return parts.length === 1 && symbols && symbols.hasLocalVariable(parts[0]);
- }
- function isYield(_ref12) {
- var path = _ref12.path;
+ FragmentOpcodeCompiler.prototype.setNamespace = function (namespace) {
+ this.opcode('setNamespace', [namespace]);
+ };
+});
+enifed("htmlbars-compiler/hydration-javascript-compiler", ["exports", "htmlbars-compiler/utils", "htmlbars-util/quoting", "htmlbars-util/template-utils"], function (exports, _htmlbarsCompilerUtils, _htmlbarsUtilQuoting, _htmlbarsUtilTemplateUtils) {
+ "use strict";
- return path.original === 'yield';
- }
- function isPartial(_ref13) {
- var path = _ref13.path;
+ function HydrationJavaScriptCompiler() {
+ this.stack = [];
+ this.source = [];
+ this.mustaches = [];
+ this.parents = [['fragment']];
+ this.parentCount = 0;
+ this.morphs = [];
+ this.fragmentProcessing = [];
+ this.hooks = undefined;
+ }
- return path.original === 'partial';
- }
- function isArg(_ref14) {
- var path = _ref14.path;
+ exports.default = HydrationJavaScriptCompiler;
- return path.data;
- }
- function isLiteral(_ref15) {
- var path = _ref15.path;
+ var prototype = HydrationJavaScriptCompiler.prototype;
- return path.type === 'StringLiteral' || path.type === 'BooleanLiteral' || path.type === 'NumberLiteral' || path.type === 'NullLiteral' || path.type === 'UndefinedLiteral';
- }
- function isHasBlock(_ref16) {
- var path = _ref16.path;
+ prototype.compile = function (opcodes, options) {
+ this.stack.length = 0;
+ this.mustaches.length = 0;
+ this.source.length = 0;
+ this.parents.length = 1;
+ this.parents[0] = ['fragment'];
+ this.morphs.length = 0;
+ this.fragmentProcessing.length = 0;
+ this.parentCount = 0;
+ this.indent = options && options.indent || "";
+ this.hooks = {};
+ this.hasOpenBoundary = false;
+ this.hasCloseBoundary = false;
+ this.statements = [];
+ this.expressionStack = [];
+ this.locals = [];
+ this.hasOpenBoundary = false;
+ this.hasCloseBoundary = false;
- return path.original === 'has-block';
- }
- function isHasBlockParams(_ref17) {
- var path = _ref17.path;
+ _htmlbarsCompilerUtils.processOpcodes(this, opcodes);
- return path.original === 'has-block-params';
+ if (this.hasOpenBoundary) {
+ this.source.unshift(this.indent + " dom.insertBoundary(fragment, 0);\n");
}
- function isBuiltInHelper(expr) {
- return isHasBlock(expr) || isHasBlockParams(expr);
- }
- function assertValidYield(_ref18) {
- var hash = _ref18.hash;
- var pairs = hash.pairs;
- if (pairs.length === 1 && pairs[0].key !== 'to' || pairs.length > 1) {
- throw new Error("yield only takes a single named argument: 'to'");
- } else if (pairs.length === 1 && pairs[0].value.type !== 'StringLiteral') {
- throw new Error("you can only yield to a literal value");
- } else if (pairs.length === 0) {
- return 'default';
- } else {
- return pairs[0].value.value;
- }
+ if (this.hasCloseBoundary) {
+ this.source.unshift(this.indent + " dom.insertBoundary(fragment, null);\n");
}
- function assertValidPartial(_ref19) {
- var params = _ref19.params;
- var hash = _ref19.hash;
- var escaped = _ref19.escaped;
- var loc = _ref19.loc;
- if (params && params.length !== 1) {
- throw new Error("Partial found with no arguments. You must specify a template name. (on line " + loc.start.line + ")");
- } else if (hash && hash.pairs.length > 0) {
- throw new Error("partial does not take any named arguments (on line " + loc.start.line + ")");
- } else if (!escaped) {
- throw new Error("{{{partial ...}}} is not supported, please use {{partial ...}} instead (on line " + loc.start.line + ")");
- }
- return params;
- }
- function assertValidHasBlockUsage(type, _ref20) {
- var params = _ref20.params;
- var hash = _ref20.hash;
- var loc = _ref20.loc;
+ var i, l;
- if (hash && hash.pairs.length > 0) {
- throw new Error(type + " does not take any named arguments");
- }
- if (params.length === 0) {
- return 'default';
- } else if (params.length === 1) {
- if (params[0].type === 'StringLiteral') {
- return params[0].value;
- } else {
- throw new Error("you can only yield to a literal value (on line " + loc.start.line + ")");
- }
- } else {
- throw new Error(type + " only takes a single positional argument (on line " + loc.start.line + ")");
- }
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLGFBQUEsY0FBQSxDQUF3QixLQUFLLEVBQUE7QUFDM0IsZUFBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7S0FDdEQ7O1FBRUQsZ0JBQUE7QUFpQkUsaUJBakJGLGdCQUFBLENBaUJjLE9BQTBCLEVBQUE7QUFOOUIsZ0JBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsZ0JBQUEsQ0FBQSxXQUFXLEdBQWEsRUFBRSxDQUFDO0FBQzNCLGdCQUFBLENBQUEsT0FBTyxHQUFnQixJQUFJLENBQUM7QUFDNUIsZ0JBQUEsQ0FBQSxPQUFPLEdBQVUsRUFBRSxDQUFDO0FBQ3BCLGdCQUFBLENBQUEsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUcxQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQzlCOztBQW5CSCx3QkFBQSxDQUNTLE9BQU8sR0FBQSxpQkFBSSxPQUEwQixFQUFFLEdBQUcsRUFBQTtBQUMvQyxnQkFBSSxlQUFlLEdBQUcsZ0RBQXFCLENBQUM7QUFDNUMsMkJBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFM0IsZ0JBQUksUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsZ0JBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELG1CQUFPLDhDQUFtQixPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDs7QUFSSCx3QkFBQSxXQXFCRSxPQUFPLEdBQUEsaUJBQUMsT0FBTyxFQUFBOzs7QUFDYixtQkFBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLElBQWUsRUFBQTtvQkFBZCxJ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RUFBRSxNQUFxQixFQUFBO1lBQW5CLE1BQU0sR0FBUixNQUFxQixDQUFuQixNQUFNO1lBQUUsSUFBSSxHQUFkLE1BQXFCLENBQVgsSUFBSTtZQUFFLEdBQUcsR0FBbkIsTUFBcUIsQ0FBTCxHQUFHOztBQUN6RCxZQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDakMsa0JBQU0sSUFBSSxLQUFLLENBQUksSUFBSSx3Q0FBcUMsQ0FBQztTQUM5RDtBQUVELFlBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDdkIsbUJBQU8sU0FBUyxDQUFDO1NBQ2xCLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM5QixnQkFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtBQUN0Qyx1QkFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ3hCLE1BQU07QUFDTCxzQkFBTSxJQUFJLEtBQUsscURBQW1ELEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFJLENBQUM7YUFDdEY7U0FDRixNQUFNO0FBQ0wsa0JBQU0sSUFBSSxLQUFLLENBQUksSUFBSSwwREFBcUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQUksQ0FBQztTQUNoRztLQUNGIiwiZmlsZSI6InRlbXBsYXRlLWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSB9IGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCBKYXZhU2NyaXB0Q29tcGlsZXIsIHsgVGVtcGxhdGUgfSBmcm9tIFwiLi9qYXZhc2NyaXB0LWNvbXBpbGVyXCI7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNZXRhIH0gZnJvbSBcImdsaW1tZXItd2lyZS1mb3JtYXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9uczxUIGV4dGVuZHMgVGVtcGxhdGVNZXRhPiB7XG4gIG1ldGE/OiBUO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuZXNjYXBlZCAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS5lc2NhcGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZUNvbXBpbGVyPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgc3RhdGljIGNvbXBpbGU8VD4ob3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD4sIGFzdCk6IFRlbXBsYXRlPFQ+IHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3M8VD4ob3Bjb2Rlcywgb3B0aW9ucy5tZXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD47XG4gIHByaXZhdGUgdGVtcGxhdGVJZCA9IDA7XG4gIHByaXZhdGUgdGVtcGxhdGVJZHM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgc3ltYm9sczogU3ltYm9sVGFibGUgPSBudWxsO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5jbHVkZU1ldGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21waWxlT3B0aW9uczxUPikge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnMpOiBhbnlbXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbbmFtZV0oLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtKSB7XG4gICAgdGhpcy5zeW1ib2xzID0gcHJvZ3JhbVswXS5zeW1ib2xzO1xuICAgIHRoaXMudGVtcGxhdGVJZCsrO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydEJsb2NrJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnN5bWJvbHMgPSBudWxsO1xuICAgIHRoaXMudGVtcGxhdGVJZHMucHVzaCh0aGlzLnRlbXBsYXRlSWQgLSAxKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kQmxvY2snLCBudWxsKTtcbiAgfVxuXG4gIHRleHQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dKSB7XG4gICAgdGhpcy5vcGNvZGUoJ29wZW5FbGVtZW50JywgYWN0aW9uLCBhY3Rpb24udGFnLCBhY3Rpb24uYmxvY2tQYXJhbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlKFthY3Rpb24uYXR0cmlidXRlc1tpXV0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLm1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5tb2RpZmllcihbYWN0aW9uLm1vZGlmaWVyc1tpXV0pO1xuICAgIH1cbiAgICB0aGlzLm9wY29kZSgnZmx1c2hFbGVtZW50JywgbnVsbCk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwpO1xuICB9XG5cbiAgYXR0cmlidXRlKFthY3Rpb25dKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXSkge1xuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXSkge1xuICAgIGlmIChpc1lpZWxkKGFjdGlvbikpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwoYWN0aW9uKSkge1xuICAgICAgbGV0IHBhcmFtcyA9IGFzc2VydFZhbGlkUGFydGlhbChhY3Rpb24pO1xuICAgICAgdGhpcy5wYXJ0aWFsKHBhcmFtcywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL10pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0cywgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXSkge1xuICAgIGxldCB7IHBhcnRzIH0gPSBwYXRoO1xuICAgIHRoaXMub3Bjb2RlKCdhcmcnLCBwYXRoLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzTGl0ZXJhbChleHByKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBleHByLnBhdGgudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcoZXhwcikpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByLnBhdGhdKTtcbiAgICB9IGVsc2UgaWYgKGlzSGVscGVySW52b2NhdGlvbihleHByKSkge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIGlmIChpc0xvY2FsVmFyaWFibGUoZXhwciwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCd1bmtub3duJywgZXhwciwgZXhwci5wYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uKSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCd5aWVsZCcsIGFjdGlvbiwgdG8pO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2snLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgcGFydGlhbChwYXJhbXMsIGFjdGlvbikge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgncGFydGlhbCcsIGFjdGlvbik7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHIpIHtcbiAgICBpZiAoaXNIYXNCbG9jayhleHByKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKGV4cHIpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChleHByLmRhdGEpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBleHByLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgb3Bjb2RlKG5hbWUsIGFjdGlvbiwgLi4uYXJncykge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoeyBwYXJhbXMsIGhhc2ggfSkge1xuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBwYXRoLCBwYXRoLnBhcnRzKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgdGhpc1twYXJhbS50eXBlXShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgICBpZiAoIXBhaXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB7IGtleSwgdmFsdWUgfSA9IHBhaXJzW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1t2YWx1ZS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHt2YWx1ZS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICB0aGlzW3ZhbHVlLnR5cGVdKHZhbHVlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIG51bGwsIHBhaXJzLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0cykge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICB9XG5cbiAgbWV0YShub2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNIZWxwZXJJbnZvY2F0aW9uKG11c3RhY2hlKSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYWxWYXJpYWJsZShtdXN0YWNoZSwgc3ltYm9scykge1xuICBsZXQgeyBwYXJ0cyB9ID0gbXVzdGFjaGUucGF0aDtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBzeW1ib2xzICYmIHN5bWJvbHMuaGFzTG9jYWxWYXJpYWJsZShwYXJ0c1swXSk7XG59XG5cbmZ1bmN0aW9uIGlzWWllbGQoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICd5aWVsZCc7XG59XG5cbmZ1bmN0aW9uIGlzUGFydGlhbCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0FyZyh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5kYXRhO1xufVxuXG5mdW5jdGlvbiBpc0xpdGVyYWwoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgudHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdCb29sZWFuTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ051bWJlckxpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdOdWxsTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ1VuZGVmaW5lZExpdGVyYWwnO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9ja1BhcmFtcyh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIoZXhwcikge1xuICByZXR1cm4gaXNIYXNCbG9jayhleHByKVxuICAgICAgfHwgaXNIYXNCbG9ja1BhcmFtcyhleHByKTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRZaWVsZCh7IGhhc2ggfSk6IHN0cmluZyB7XG4gIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWApO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhaXJzWzBdLnZhbHVlLnZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUGFydGlhbCh7IHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0pIC8qIDogZXhwciAqLyB7XG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWApO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlLCB7IHBhcmFtcywgaGFzaCwgbG9jIH0pOiBzdHJpbmcge1xuICBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHlwZX0gZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmIChwYXJhbXNbMF0udHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgICByZXR1cm4gcGFyYW1zWzBdLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWUgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHt0eXBlfSBvbmx5IHRha2VzIGEgc2luZ2xlIHBvc2l0aW9uYWwgYXJndW1lbnQgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports) {
- 'use strict';
+ var indent = this.indent;
- var push = Array.prototype.push;
+ var morphs;
- var Frame = function Frame() {
- this.parentNode = null;
- this.children = null;
- this.childIndex = null;
- this.childCount = null;
- this.childTemplateCount = 0;
- this.mustacheCount = 0;
- this.actions = [];
- this.blankChildTextNodes = null;
- this.symbols = null;
+ var result = {
+ createMorphsProgram: '',
+ hydrateMorphsProgram: '',
+ fragmentProcessingProgram: '',
+ statements: this.statements,
+ locals: this.locals,
+ hasMorphs: false
};
- var SymbolTable = (function () {
- function SymbolTable(symbols) {
- var parent = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
+ result.hydrateMorphsProgram = this.source.join('');
- this.symbols = symbols;
- this.parent = parent;
- }
+ if (this.morphs.length) {
+ result.hasMorphs = true;
+ morphs = indent + ' var morphs = new Array(' + this.morphs.length + ');\n';
- /**
- * Takes in an AST and outputs a list of actions to be consumed
- * by a compiler. For example, the template
- *
- * foo{{bar}}<div>baz</div>
- *
- * produces the actions
- *
- * [['startProgram', [programNode, 0]],
- * ['text', [textNode, 0, 3]],
- * ['mustache', [mustacheNode, 1, 3]],
- * ['openElement', [elementNode, 2, 3, 0]],
- * ['text', [textNode, 0, 1]],
- * ['closeElement', [elementNode, 2, 3],
- * ['endProgram', [programNode]]]
- *
- * This visitor walks the AST depth first and backwards. As
- * a result the bottom-most child template will appear at the
- * top of the actions list whereas the root template will appear
- * at the bottom of the list. For example,
- *
- * <div>{{#if}}foo{{else}}bar<b></b>{{/if}}</div>
- *
- * produces the actions
- *
- * [['startProgram', [programNode, 0]],
- * ['text', [textNode, 0, 2, 0]],
- * ['openElement', [elementNode, 1, 2, 0]],
- * ['closeElement', [elementNode, 1, 2]],
- * ['endProgram', [programNode]],
- * ['startProgram', [programNode, 0]],
- * ['text', [textNode, 0, 1]],
- * ['endProgram', [programNode]],
- * ['startProgram', [programNode, 2]],
- * ['openElement', [elementNode, 0, 1, 1]],
- * ['block', [blockNode, 0, 1]],
- * ['closeElement', [elementNode, 0, 1]],
- * ['endProgram', [programNode]]]
- *
- * The state of the traversal is maintained by a stack of frames.
- * Whenever a node with children is entered (either a ProgramNode
- * or an ElementNode) a frame is pushed onto the stack. The frame
- * contains information about the state of the traversal of that
- * node. For example,
- *
- * - index of the current child node being visited
- * - the number of mustaches contained within its child nodes
- * - the list of actions generated by its child nodes
- */
-
- SymbolTable.prototype.hasLocalVariable = function hasLocalVariable(name) {
- var symbols = this.symbols;
- var parent = this.parent;
-
- return symbols.indexOf(name) >= 0 || parent && parent.hasLocalVariable(name);
- };
-
- return SymbolTable;
- })();
-
- exports.SymbolTable = SymbolTable;
- function TemplateVisitor() {
- this.frameStack = [];
- this.actions = [];
- this.programDepth = -1;
+ for (i = 0, l = this.morphs.length; i < l; ++i) {
+ var morph = this.morphs[i];
+ morphs += indent + ' morphs[' + i + '] = ' + morph + ';\n';
+ }
}
- // Traversal methods
- TemplateVisitor.prototype.visit = function (node) {
- this[node.type](node);
- };
- TemplateVisitor.prototype.Program = function (program) {
- this.programDepth++;
- var parentFrame = this.getCurrentFrame();
- var programFrame = this.pushFrame();
- if (parentFrame) {
- program.symbols = new SymbolTable(program.blockParams, parentFrame.symbols);
- } else {
- program.symbols = new SymbolTable(program.blockParams);
- }
- var startType = undefined,
- endType = undefined;
- if (this.programDepth === 0) {
- startType = 'startProgram';
- endType = 'endProgram';
- } else {
- startType = 'startBlock';
- endType = 'endBlock';
- }
- programFrame.parentNode = program;
- programFrame.children = program.body;
- programFrame.childCount = program.body.length;
- programFrame.blankChildTextNodes = [];
- programFrame.actions.push([endType, [program, this.programDepth]]);
- programFrame.symbols = program.symbols;
- for (var i = program.body.length - 1; i >= 0; i--) {
- programFrame.childIndex = i;
- this.visit(program.body[i]);
- }
- programFrame.actions.push([startType, [program, programFrame.childTemplateCount, programFrame.blankChildTextNodes.reverse()]]);
- this.popFrame();
- this.programDepth--;
- // Push the completed template into the global actions list
- if (parentFrame) {
- parentFrame.childTemplateCount++;
- }
- push.apply(this.actions, programFrame.actions.reverse());
- };
- TemplateVisitor.prototype.ElementNode = function (element) {
- var parentFrame = this.getCurrentFrame();
- var elementFrame = this.pushFrame();
- elementFrame.parentNode = element;
- elementFrame.children = element.children;
- elementFrame.childCount = element.children.length;
- elementFrame.mustacheCount += element.modifiers.length;
- elementFrame.blankChildTextNodes = [];
- elementFrame.symbols = parentFrame.symbols;
- var actionArgs = [element, parentFrame.childIndex, parentFrame.childCount];
- elementFrame.actions.push(['closeElement', actionArgs]);
- for (var i = element.attributes.length - 1; i >= 0; i--) {
- this.visit(element.attributes[i]);
- }
- for (var i = element.children.length - 1; i >= 0; i--) {
- elementFrame.childIndex = i;
- this.visit(element.children[i]);
- }
- elementFrame.actions.push(['openElement', actionArgs.concat([elementFrame.mustacheCount, elementFrame.blankChildTextNodes.reverse()])]);
- this.popFrame();
- // Propagate the element's frame state to the parent frame
- if (elementFrame.mustacheCount > 0) {
- parentFrame.mustacheCount++;
- }
- parentFrame.childTemplateCount += elementFrame.childTemplateCount;
- push.apply(parentFrame.actions, elementFrame.actions);
- };
- TemplateVisitor.prototype.AttrNode = function (attr) {
- if (attr.value.type !== 'TextNode') {
- this.getCurrentFrame().mustacheCount++;
- }
- };
- TemplateVisitor.prototype.TextNode = function (text) {
- var frame = this.getCurrentFrame();
- if (text.chars === '') {
- frame.blankChildTextNodes.push(domIndexOf(frame.children, text));
- }
- frame.actions.push(['text', [text, frame.childIndex, frame.childCount]]);
- };
- TemplateVisitor.prototype.BlockStatement = function (node) {
- var frame = this.getCurrentFrame();
- frame.mustacheCount++;
- frame.actions.push(['block', [node, frame.childIndex, frame.childCount]]);
- if (node.inverse) {
- this.visit(node.inverse);
- }
- if (node.program) {
- this.visit(node.program);
- }
- };
- TemplateVisitor.prototype.PartialStatement = function (node) {
- var frame = this.getCurrentFrame();
- frame.mustacheCount++;
- frame.actions.push(['mustache', [node, frame.childIndex, frame.childCount]]);
- };
- TemplateVisitor.prototype.CommentStatement = function (text) {
- var frame = this.getCurrentFrame();
- frame.actions.push(['comment', [text, frame.childIndex, frame.childCount]]);
- };
- TemplateVisitor.prototype.MustacheStatement = function (mustache) {
- var frame = this.getCurrentFrame();
- frame.mustacheCount++;
- frame.actions.push(['mustache', [mustache, frame.childIndex, frame.childCount]]);
- };
- // Frame helpers
- TemplateVisitor.prototype.getCurrentFrame = function () {
- return this.frameStack[this.frameStack.length - 1];
- };
- TemplateVisitor.prototype.pushFrame = function () {
- var frame = new Frame();
- this.frameStack.push(frame);
- return frame;
- };
- TemplateVisitor.prototype.popFrame = function () {
- return this.frameStack.pop();
- };
- exports.default = TemplateVisitor;
- // Returns the index of `domNode` in the `nodes` array, skipping
- // over any nodes which do not represent DOM nodes.
- function domIndexOf(nodes, domNode) {
- var index = -1;
- for (var i = 0; i < nodes.length; i++) {
- var node = nodes[i];
- if (node.type !== 'TextNode' && node.type !== 'ElementNode') {
- continue;
- } else {
- index++;
- }
- if (node === domNode) {
- return index;
- }
- }
- return -1;
+ if (this.fragmentProcessing.length) {
+ var processing = "";
+ for (i = 0, l = this.fragmentProcessing.length; i < l; ++i) {
+ processing += this.indent + ' ' + this.fragmentProcessing[i] + '\n';
+ }
+ result.fragmentProcessingProgram = processing;
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLXZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7O1FBRWhDLEtBQUEsR0FBQSxTQUFBLEtBQUEsR0FBQTtBQUNTLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxRQUFRLEdBQVcsSUFBSSxDQUFDO0FBQ3hCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxrQkFBa0IsR0FBVyxDQUFDLENBQUM7QUFDL0IsWUFBQSxDQUFBLGFBQWEsR0FBVyxDQUFDLENBQUM7QUFDMUIsWUFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQUM7QUFDcEIsWUFBQSxDQUFBLG1CQUFtQixHQUFhLElBQUksQ0FBQztBQUNyQyxZQUFBLENBQUEsT0FBTyxHQUFnQixJQUFJLENBQUM7S0FDcEM7O1FBRUQsV0FBQTtBQUNFLGlCQURGLFdBQUEsQ0FFWSxPQUFpQixFQUNTO2dCQUExQixNQUFNLHlEQUFnQixJQUFJOztBQUQxQixnQkFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQVU7QUFDakIsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFvQjtTQUNoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUpOLG1CQUFBLFdBTUUsZ0JBQWdCLEdBQUEsMEJBQUMsSUFBWSxFQUFBO2dCQUNyQixPQUFPLEdBQWEsSUFBSSxDQUF4QixPQUFPO2dCQUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFDckIsbUJBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxnQkFB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RSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxnQkFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXBCLGdCQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQzNELHlCQUFTO2FBQ1YsTUFBTTtBQUNMLHFCQUFLLEVBQUUsQ0FBQzthQUNUO0FBRUQsZ0JBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNwQix1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0FBRUQsZUFBTyxDQUFDLENBQUMsQ0FBQztLQUNYIiwiZmlsZSI6InRlbXBsYXRlLXZpc2l0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoO1xuXG5jbGFzcyBGcmFtZSB7XG4gIHB1YmxpYyBwYXJlbnROb2RlOiBPYmplY3QgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IE9iamVjdCA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZEluZGV4OiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRDb3VudDogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGNoaWxkVGVtcGxhdGVDb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIG11c3RhY2hlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgYmxhbmtDaGlsZFRleHROb2RlczogbnVtYmVyW10gPSBudWxsO1xuICBwdWJsaWMgc3ltYm9sczogU3ltYm9sVGFibGUgPSBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN5bWJvbHM6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSA9IG51bGxcbiAgKSB7fVxuXG4gIGhhc0xvY2FsVmFyaWFibGUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHsgc3ltYm9scywgcGFyZW50IH0gPSB0aGlzO1xuICAgIHJldHVybiBzeW1ib2xzLmluZGV4T2YobmFtZSkgPj0gMCB8fCAocGFyZW50ICYmIHBhcmVudC5oYXNMb2NhbFZhcmlhYmxlKG5hbWUpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRha2VzIGluIGFuIEFTVCBhbmQgb3V0cHV0cyBhIGxpc3Qgb2YgYWN0aW9ucyB0byBiZSBjb25zdW1lZFxuICogYnkgYSBjb21waWxlci4gRm9yIGV4YW1wbGUsIHRoZSB0ZW1wbGF0ZVxuICpcbiAqICAgICBmb297e2Jhcn19PGRpdj5iYXo8L2Rpdj5cbiAqXG4gKiBwcm9kdWNlcyB0aGUgYWN0aW9uc1xuICpcbiAqICAgICBbWydzdGFydFByb2dyYW0nLCBbcHJvZ3JhbU5vZGUsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAzXV0sXG4gKiAgICAgIFsnbXVzdGFjaGUnLCBbbXVzdGFjaGVOb2RlLCAxLCAzXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDIsIDMsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAyLCAzXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhpcyB2aXNpdG9yIHdhbGtzIHRoZSBBU1QgZGVwdGggZmlyc3QgYW5kIGJhY2t3YXJkcy4gQXNcbiAqIGEgcmVzdWx0IHRoZSBib3R0b20tbW9zdCBjaGlsZCB0ZW1wbGF0ZSB3aWxsIGFwcGVhciBhdCB0aGVcbiAqIHRvcCBvZiB0aGUgYWN0aW9ucyBsaXN0IHdoZXJlYXMgdGhlIHJvb3QgdGVtcGxhdGUgd2lsbCBhcHBlYXJcbiAqIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuIEZvciBleGFtcGxlLFxuICpcbiAqICAgICA8ZGl2Pnt7I2lmfX1mb297e2Vsc2V9fWJhcjxiPjwvYj57ey9pZn19PC9kaXY+XG4gKlxuICogcHJvZHVjZXMgdGhlIGFjdGlvbnNcbiAqXG4gKiAgICAgW1snc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgMiwgMF1dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyLCAwXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dLFxuICogICAgICBbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMF1dLFxuICogICAgICBbJ3RleHQnLCBbdGV4dE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV0sXG4gKiAgICAgIFsnc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAyXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDEsIDFdXSxcbiAqICAgICAgWydibG9jaycsIFtibG9ja05vZGUsIDAsIDFdXSxcbiAqICAgICAgWydjbG9zZUVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgaXMgbWFpbnRhaW5lZCBieSBhIHN0YWNrIG9mIGZyYW1lcy5cbiAqIFdoZW5ldmVyIGEgbm9kZSB3aXRoIGNoaWxkcmVuIGlzIGVudGVyZWQgKGVpdGhlciBhIFByb2dyYW1Ob2RlXG4gKiBvciBhbiBFbGVtZW50Tm9kZSkgYSBmcmFtZSBpcyBwdXNoZWQgb250byB0aGUgc3RhY2suIFRoZSBmcmFtZVxuICogY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgb2YgdGhhdFxuICogbm9kZS4gRm9yIGV4YW1wbGUsXG4gKlxuICogICAtIGluZGV4IG9mIHRoZSBjdXJyZW50IGNoaWxkIG5vZGUgYmVpbmcgdmlzaXRlZFxuICogICAtIHRoZSBudW1iZXIgb2YgbXVzdGFjaGVzIGNvbnRhaW5lZCB3aXRoaW4gaXRzIGNoaWxkIG5vZGVzXG4gKiAgIC0gdGhlIGxpc3Qgb2YgYWN0aW9ucyBnZW5lcmF0ZWQgYnkgaXRzIGNoaWxkIG5vZGVzXG4gKi9cblxuZnVuY3Rpb24gVGVtcGxhdGVWaXNpdG9yKCkge1xuICB0aGlzLmZyYW1lU3RhY2sgPSBbXTtcbiAgdGhpcy5hY3Rpb25zID0gW107XG4gIHRoaXMucHJvZ3JhbURlcHRoID0gLTE7XG59XG5cbi8vIFRyYXZlcnNhbCBtZXRob2RzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbihub2RlKSB7XG4gIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgdGhpcy5wcm9ncmFtRGVwdGgrKztcblxuICBsZXQgcGFyZW50RnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBsZXQgcHJvZ3JhbUZyYW1lID0gdGhpcy5wdXNoRnJhbWUoKTtcblxuICBpZiAocGFyZW50RnJhbWUpIHtcbiAgICBwcm9ncmFtLnN5bWJvbHMgPSBuZXcgU3ltYm9sVGFibGUocHJvZ3JhbS5ibG9ja1BhcmFtcywgcGFyZW50RnJhbWUuc3ltYm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcHJvZ3JhbS5zeW1ib2xzID0gbmV3IFN5bWJvbFRhYmxlKHByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICB9XG5cbiAgbGV0IHN0YXJ0VHlwZSwgZW5kVHlwZTtcblxuICBpZiAodGhpcy5wcm9ncmFtRGVwdGggPT09IDApIHtcbiAgICBzdGFydFR5cGUgPSAnc3RhcnRQcm9ncmFtJztcbiAgICBlbmRUeXBlID0gJ2VuZFByb2dyYW0nO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0VHlwZSA9ICdzdGFydEJsb2NrJztcbiAgICBlbmRUeXBlID0gJ2VuZEJsb2NrJztcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5wYXJlbnROb2RlID0gcHJvZ3JhbTtcbiAgcHJvZ3JhbUZyYW1lLmNoaWxkcmVuID0gcHJvZ3JhbS5ib2R5O1xuICBwcm9ncmFtRnJhbWUuY2hpbGRDb3VudCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG4gIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW2VuZFR5cGUsIFtwcm9ncmFtLCB0aGlzLnByb2dyYW1EZXB0aF1dKTtcbiAgcHJvZ3JhbUZyYW1lLnN5bWJvbHMgPSBwcm9ncmFtLnN5bWJvbHM7XG5cbiAgZm9yIChsZXQgaSA9IHByb2dyYW0uYm9keS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHByb2dyYW1GcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KHByb2dyYW0uYm9keVtpXSk7XG4gIH1cblxuICBwcm9ncmFtRnJhbWUuYWN0aW9ucy5wdXNoKFtzdGFydFR5cGUsIFtcbiAgICBwcm9ncmFtLCBwcm9ncmFtRnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50LFxuICAgIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnJldmVyc2UoKVxuICBdXSk7XG4gIHRoaXMucG9wRnJhbWUoKTtcblxuICB0aGlzLnByb2dyYW1EZXB0aC0tO1xuXG4gIC8vIFB1c2ggdGhlIGNvbXBsZXRlZCB0ZW1wbGF0ZSBpbnRvIHRoZSBnbG9iYWwgYWN0aW9ucyBsaXN0XG4gIGlmIChwYXJlbnRGcmFtZSkgeyBwYXJlbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQrKzsgfVxuICBwdXNoLmFwcGx5KHRoaXMuYWN0aW9ucywgcHJvZ3JhbUZyYW1lLmFjdGlvbnMucmV2ZXJzZSgpKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuRWxlbWVudE5vZGUgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gIGxldCBwYXJlbnRGcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGxldCBlbGVtZW50RnJhbWUgPSB0aGlzLnB1c2hGcmFtZSgpO1xuXG4gIGVsZW1lbnRGcmFtZS5wYXJlbnROb2RlID0gZWxlbWVudDtcbiAgZWxlbWVudEZyYW1lLmNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbjtcbiAgZWxlbWVudEZyYW1lLmNoaWxkQ291bnQgPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgZWxlbWVudEZyYW1lLm11c3RhY2hlQ291bnQgKz0gZWxlbWVudC5tb2RpZmllcnMubGVuZ3RoO1xuICBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2RlcyA9IFtdO1xuICBlbGVtZW50RnJhbWUuc3ltYm9scyA9IHBhcmVudEZyYW1lLnN5bWJvbHM7XG5cbiAgbGV0IGFjdGlvbkFyZ3MgPSBbXG4gICAgZWxlbWVudCxcbiAgICBwYXJlbnRGcmFtZS5jaGlsZEluZGV4LFxuICAgIHBhcmVudEZyYW1lLmNoaWxkQ291bnRcbiAgXTtcblxuICBlbGVtZW50RnJhbWUuYWN0aW9ucy5wdXNoKFsnY2xvc2VFbGVtZW50JywgYWN0aW9uQXJnc10pO1xuXG4gIGZvciAobGV0IGkgPSBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuYXR0cmlidXRlc1tpXSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGVsZW1lbnRGcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuY2hpbGRyZW5baV0pO1xuICB9XG5cbiAgZWxlbWVudEZyYW1lLmFjdGlvbnMucHVzaChbJ29wZW5FbGVtZW50JywgYWN0aW9uQXJncy5jb25jYXQoW1xuICAgIGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50LCBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2Rlcy5yZXZlcnNlKCkgXSldKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgZWxlbWVudCdzIGZyYW1lIHN0YXRlIHRvIHRoZSBwYXJlbnQgZnJhbWVcbiAgaWYgKGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50ID4gMCkgeyBwYXJlbnRGcmFtZS5tdXN0YWNoZUNvdW50Kys7IH1cbiAgcGFyZW50RnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50ICs9IGVsZW1lbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQ7XG4gIHB1c2guYXBwbHkocGFyZW50RnJhbWUuYWN0aW9ucywgZWxlbWVudEZyYW1lLmFjdGlvbnMpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5BdHRyTm9kZSA9IGZ1bmN0aW9uKGF0dHIpIHtcbiAgaWYgKGF0dHIudmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgIHRoaXMuZ2V0Q3VycmVudEZyYW1lKCkubXVzdGFjaGVDb3VudCsrO1xuICB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlRleHROb2RlID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgZnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBpZiAodGV4dC5jaGFycyA9PT0gJycpIHtcbiAgICBmcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnB1c2goZG9tSW5kZXhPZihmcmFtZS5jaGlsZHJlbiwgdGV4dCkpO1xuICB9XG4gIGZyYW1lLmFjdGlvbnMucHVzaChbJ3RleHQnLCBbdGV4dCwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG5cbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydibG9jaycsIFtub2RlLCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xuXG4gIGlmIChub2RlLmludmVyc2UpIHsgdGhpcy52aXNpdChub2RlLmludmVyc2UpOyB9XG4gIGlmIChub2RlLnByb2dyYW0pIHsgdGhpcy52aXNpdChub2RlLnByb2dyYW0pOyB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbm9kZSwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnY29tbWVudCcsIFt0ZXh0LCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbXVzdGFjaGUsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG59O1xuXG4vLyBGcmFtZSBoZWxwZXJzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuZ2V0Q3VycmVudEZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZyYW1lU3RhY2tbdGhpcy5mcmFtZVN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wdXNoRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgbGV0IGZyYW1lID0gbmV3IEZyYW1lKCk7XG4gIHRoaXMuZnJhbWVTdGFjay5wdXNoKGZyYW1lKTtcbiAgcmV0dXJuIGZyYW1lO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wb3BGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVWaXNpdG9yO1xuXG4vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgZG9tTm9kZWAgaW4gdGhlIGBub2Rlc2AgYXJyYXksIHNraXBwaW5nXG4vLyBvdmVyIGFueSBub2RlcyB3aGljaCBkbyBub3QgcmVwcmVzZW50IERPTSBub2Rlcy5cbmZ1bmN0aW9uIGRvbUluZGV4T2Yobm9kZXMsIGRvbU5vZGUpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiAobm9kZS50eXBlICE9PSAnVGV4dE5vZGUnICYmIG5vZGUudHlwZSAhPT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgPT09IGRvbU5vZGUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXX0=
-enifed("glimmer-compiler/lib/utils", ["exports"], function (exports) {
- "use strict";
- exports.processOpcodes = processOpcodes;
+ var createMorphsProgram;
+ if (result.hasMorphs) {
+ createMorphsProgram = 'function buildRenderNodes(dom, fragment, contextualElement) {\n' + result.fragmentProcessingProgram + morphs;
- function processOpcodes(compiler, opcodes) {
- for (var i = 0, l = opcodes.length; i < l; i++) {
- var method = opcodes[i][0];
- var params = opcodes[i][1];
- if (params) {
- compiler[method].apply(compiler, params);
- } else {
- compiler[method].call(compiler);
- }
- }
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsYUFBQSxjQUFBLENBQStCLFFBQVEsRUFBRSxPQUFPLEVBQUE7QUFDOUMsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxnQkFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLGdCQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsZ0JBQUksTUFBTSxFQUFFO0FBQ1Ysd0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzFDLE1BQU07QUFDTCx3QkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcHJvY2Vzc09wY29kZXMoY29tcGlsZXIsIG9wY29kZXMpIHtcbiAgZm9yIChsZXQgaT0wLCBsPW9wY29kZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIGxldCBtZXRob2QgPSBvcGNvZGVzW2ldWzBdO1xuICAgIGxldCBwYXJhbXMgPSBvcGNvZGVzW2ldWzFdO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uYXBwbHkoY29tcGlsZXIsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uY2FsbChjb21waWxlcik7XG4gICAgfVxuICB9XG59Il19
-enifed('glimmer-reference/index', ['exports', 'glimmer-reference/lib/reference', 'glimmer-reference/lib/const', 'glimmer-reference/lib/validators', 'glimmer-reference/lib/utils', 'glimmer-reference/lib/iterable'], function (exports, _glimmerReferenceLibReference, _glimmerReferenceLibConst, _glimmerReferenceLibValidators, _glimmerReferenceLibUtils, _glimmerReferenceLibIterable) {
- 'use strict';
+ if (this.hasOpenBoundary) {
+ createMorphsProgram += indent + " dom.insertBoundary(fragment, 0);\n";
+ }
- exports.BasicReference = _glimmerReferenceLibReference.Reference;
- exports.BasicPathReference = _glimmerReferenceLibReference.PathReference;
- exports.ConstReference = _glimmerReferenceLibConst.ConstReference;
- exports.isConst = _glimmerReferenceLibConst.isConst;
- babelHelpers.defaults(exports, babelHelpers.interopExportWildcard(_glimmerReferenceLibValidators, babelHelpers.defaults));
- exports.Reference = _glimmerReferenceLibValidators.VersionedReference;
- exports.PathReference = _glimmerReferenceLibValidators.VersionedPathReference;
- exports.referenceFromParts = _glimmerReferenceLibUtils.referenceFromParts;
- exports.IterationItem = _glimmerReferenceLibIterable.IterationItem;
- exports.Iterator = _glimmerReferenceLibIterable.Iterator;
- exports.Iterable = _glimmerReferenceLibIterable.Iterable;
- exports.OpaqueIterator = _glimmerReferenceLibIterable.OpaqueIterator;
- exports.OpaqueIterable = _glimmerReferenceLibIterable.OpaqueIterable;
- exports.AbstractIterator = _glimmerReferenceLibIterable.AbstractIterator;
- exports.AbstractIterable = _glimmerReferenceLibIterable.AbstractIterable;
- exports.IterationArtifacts = _glimmerReferenceLibIterable.IterationArtifacts;
- exports.ReferenceIterator = _glimmerReferenceLibIterable.ReferenceIterator;
- exports.IteratorSynchronizer = _glimmerReferenceLibIterable.IteratorSynchronizer;
- exports.IteratorSynchronizerDelegate = _glimmerReferenceLibIterable.IteratorSynchronizerDelegate;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztVQUNlLGNBQWMsaUNBQTNCLFNBQVM7VUFDUSxrQkFBa0IsaUNBQW5DLGFBQWE7VUFJYixjQUFjLDZCQUFkLGNBQWM7VUFDZCxPQUFPLDZCQUFQLE9BQU87O1VBTWUsU0FBUyxrQ0FBL0Isa0JBQWtCO1VBQ1EsYUFBYSxrQ0FBdkMsc0JBQXNCO1VBSXRCLGtCQUFrQiw2QkFBbEIsa0JBQWtCO1VBSWxCLGFBQWEsZ0NBQWIsYUFBYTtVQUNiLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGtCQUFrQixnQ0FBbEIsa0JBQWtCO1VBQ2xCLGlCQUFpQixnQ0FBakIsaUJBQWlCO1VBQ2pCLG9CQUFvQixnQ0FBcEIsb0JBQW9CO1VBQ3BCLDRCQUE0QixnQ0FBNUIsNEJBQTRCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVmZXJlbmNlIGFzIEJhc2ljUmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlIGFzIEJhc2ljUGF0aFJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9yZWZlcmVuY2UnO1xuXG5leHBvcnQge1xuICBDb25zdFJlZmVyZW5jZSxcbiAgaXNDb25zdFxufSBmcm9tICcuL2xpYi9jb25zdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQge1xuICBWZXJzaW9uZWRSZWZlcmVuY2UgYXMgUmVmZXJlbmNlLFxuICBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIGFzIFBhdGhSZWZlcmVuY2Vcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7XG4gIHJlZmVyZW5jZUZyb21QYXJ0c1xufSBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIEl0ZXJhdGlvbkl0ZW0sXG4gIEl0ZXJhdG9yLFxuICBJdGVyYWJsZSxcbiAgT3BhcXVlSXRlcmF0b3IsXG4gIE9wYXF1ZUl0ZXJhYmxlLFxuICBBYnN0cmFjdEl0ZXJhdG9yLFxuICBBYnN0cmFjdEl0ZXJhYmxlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIFJlZmVyZW5jZUl0ZXJhdG9yLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZVxufSBmcm9tICcuL2xpYi9pdGVyYWJsZSc7XG4iXX0=
-enifed('glimmer-reference/lib/const', ['exports', 'glimmer-reference/lib/validators'], function (exports, _glimmerReferenceLibValidators) {
- 'use strict';
+ if (this.hasCloseBoundary) {
+ createMorphsProgram += indent + " dom.insertBoundary(fragment, null);\n";
+ }
- exports.isConst = isConst;
+ createMorphsProgram += indent + ' return morphs;\n' + indent + '}';
+ } else {
+ createMorphsProgram = 'function buildRenderNodes() { return []; }';
+ }
- var ConstReference = (function () {
- function ConstReference(inner) {
- this.inner = inner;
- this.tag = _glimmerReferenceLibValidators.CONSTANT_TAG;
- }
+ result.createMorphsProgram = createMorphsProgram;
- ConstReference.prototype.value = function value() {
- return this.inner;
- };
+ return result;
+ };
- return ConstReference;
- })();
+ prototype.prepareArray = function (length) {
+ var values = [];
- exports.ConstReference = ConstReference;
-
- function isConst(reference) {
- return reference.tag === _glimmerReferenceLibValidators.CONSTANT_TAG;
+ for (var i = 0; i < length; i++) {
+ values.push(this.expressionStack.pop());
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQUdBLGNBQUE7QUFHRSxpQkFIRixjQUFBLENBR3dCLEtBQVEsRUFBQTtBQUFSLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBRztBQUZ2QixnQkFBQSxDQUFBLEdBQUcsa0NBSkgsWUFBWSxBQUltQixDQUFDO1NBRUo7O0FBSHJDLHNCQUFBLFdBS0UsS0FBSyxHQUFBLGlCQUFBO0FBQVEsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFFOztlQUxuQyxjQUFBOzs7OztBQVFBLGFBQUEsT0FBQSxDQUF3QixTQUFxQyxFQUFBO0FBQzNELGVBQU8sU0FBUyxDQUFDLEdBQUcsb0NBWmIsWUFBWSxBQVlrQixDQUFDO0tBQ3ZDIiwiZmlsZSI6ImNvbnN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBWZXJzaW9uZWRSZWZlcmVuY2UsIFJldmlzaW9uVGFnIH0gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBDb25zdFJlZmVyZW5jZTxUPiBpbXBsZW1lbnRzIFZlcnNpb25lZFJlZmVyZW5jZTxUPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbm5lcjogVCkgeyB9XG5cbiAgdmFsdWUoKTogVCB7IHJldHVybiB0aGlzLmlubmVyOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0KHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPE9wYXF1ZT4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZmVyZW5jZS50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cbiJdfQ==
-enifed("glimmer-reference/lib/iterable", ["exports", "glimmer-util"], function (exports, _glimmerUtil) {
- "use strict";
- var ListItem = (function (_ListNode) {
- babelHelpers.inherits(ListItem, _ListNode);
+ this.expressionStack.push(values);
+ };
- function ListItem(iterable, result) {
- _ListNode.call(this, iterable.valueReferenceFor(result));
- this.retained = false;
- this.seen = false;
- this.key = result.key;
- this.iterable = iterable;
- this.memo = iterable.memoReferenceFor(result);
- }
+ prototype.prepareObject = function (size) {
+ var pairs = [];
- ListItem.prototype.update = function update(item) {
- this.retained = true;
- this.iterable.updateValueReference(this.value, item);
- this.iterable.updateMemoReference(this.memo, item);
- };
+ for (var i = 0; i < size; i++) {
+ pairs.push(this.expressionStack.pop(), this.expressionStack.pop());
+ }
- ListItem.prototype.shouldRemove = function shouldRemove() {
- return !this.retained;
- };
+ this.expressionStack.push(pairs);
+ };
- ListItem.prototype.reset = function reset() {
- this.retained = false;
- this.seen = false;
- };
+ prototype.openBoundary = function () {
+ this.hasOpenBoundary = true;
+ };
- return ListItem;
- })(_glimmerUtil.ListNode);
+ prototype.closeBoundary = function () {
+ this.hasCloseBoundary = true;
+ };
- exports.ListItem = ListItem;
+ prototype.pushLiteral = function (value) {
+ this.expressionStack.push(value);
+ };
- var IterationArtifacts = (function () {
- function IterationArtifacts(iterable) {
- this.map = _glimmerUtil.dict();
- this.list = new _glimmerUtil.LinkedList();
- this.tag = iterable.tag;
- this.iterable = iterable;
- }
+ prototype.pushGetHook = function (path, meta) {
+ this.expressionStack.push(_htmlbarsUtilTemplateUtils.buildStatement('get', path, meta));
+ };
- IterationArtifacts.prototype.isEmpty = function isEmpty() {
- var iterator = this.iterator = this.iterable.iterate();
- return iterator.isEmpty();
- };
+ prototype.pushSexprHook = function (meta) {
+ var statement = _htmlbarsUtilTemplateUtils.buildStatement('subexpr', this.expressionStack.pop(), this.expressionStack.pop(), this.expressionStack.pop(), meta);
- IterationArtifacts.prototype.iterate = function iterate() {
- var iterator = this.iterator || this.iterable.iterate();
- this.iterator = null;
- return iterator;
- };
+ this.expressionStack.push(statement);
+ };
- IterationArtifacts.prototype.has = function has(key) {
- return !!this.map[key];
- };
+ prototype.pushConcatHook = function () {
+ this.expressionStack.push(_htmlbarsUtilTemplateUtils.buildStatement('concat', this.expressionStack.pop()));
+ };
- IterationArtifacts.prototype.get = function get(key) {
- return this.map[key];
- };
+ prototype.printSetHook = function (name) {
+ this.locals.push(name);
+ };
- IterationArtifacts.prototype.wasSeen = function wasSeen(key) {
- var node = this.map[key];
- return node && node.seen;
- };
+ prototype.printBlockHook = function (templateId, inverseId, meta) {
+ this.pushStatement('block', this.expressionStack.pop(), // path
+ this.expressionStack.pop(), // params
+ this.expressionStack.pop(), // hash
+ templateId, inverseId, meta);
+ };
- IterationArtifacts.prototype.append = function append(item) {
- var map = this.map;
- var list = this.list;
- var iterable = this.iterable;
+ prototype.printInlineHook = function (meta) {
+ var path = this.expressionStack.pop();
+ var params = this.expressionStack.pop();
+ var hash = this.expressionStack.pop();
- var node = map[item.key] = new ListItem(iterable, item);
- list.append(node);
- return node;
- };
+ this.pushStatement('inline', path, params, hash, meta);
+ };
- IterationArtifacts.prototype.insertBefore = function insertBefore(item, reference) {
- var map = this.map;
- var list = this.list;
- var iterable = this.iterable;
+ prototype.printContentHook = function (meta) {
+ this.pushStatement('content', this.expressionStack.pop(), meta);
+ };
- var node = map[item.key] = new ListItem(iterable, item);
- node.retained = true;
- list.insertBefore(node, reference);
- return node;
- };
+ prototype.printComponentHook = function (templateId) {
+ this.pushStatement('component', this.expressionStack.pop(), // path
+ this.expressionStack.pop(), // attrs
+ templateId);
+ };
- IterationArtifacts.prototype.move = function move(item, reference) {
- var list = this.list;
+ prototype.printAttributeHook = function () {
+ this.pushStatement('attribute', this.expressionStack.pop(), // name
+ this.expressionStack.pop() // value;
+ );
+ };
- item.retained = true;
- list.remove(item);
- list.insertBefore(item, reference);
- };
+ prototype.printElementHook = function (meta) {
+ this.pushStatement('element', this.expressionStack.pop(), // path
+ this.expressionStack.pop(), // params
+ this.expressionStack.pop(), // hash
+ meta);
+ };
- IterationArtifacts.prototype.remove = function remove(item) {
- var list = this.list;
+ prototype.createMorph = function (morphNum, parentPath, startIndex, endIndex, escaped) {
+ var isRoot = parentPath.length === 0;
+ var parent = this.getParent();
- list.remove(item);
- delete this.map[item.key];
- };
+ var morphMethod = escaped ? 'createMorphAt' : 'createUnsafeMorphAt';
+ var morph = "dom." + morphMethod + "(" + parent + "," + (startIndex === null ? "-1" : startIndex) + "," + (endIndex === null ? "-1" : endIndex) + (isRoot ? ",contextualElement)" : ")");
- IterationArtifacts.prototype.nextNode = function nextNode(item) {
- return this.list.nextNode(item);
- };
+ this.morphs[morphNum] = morph;
+ };
- IterationArtifacts.prototype.head = function head() {
- return this.list.head();
- };
+ prototype.createAttrMorph = function (attrMorphNum, elementNum, name, escaped, namespace) {
+ var morphMethod = escaped ? 'createAttrMorph' : 'createUnsafeAttrMorph';
+ var morph = "dom." + morphMethod + "(element" + elementNum + ", '" + name + (namespace ? "', '" + namespace : '') + "')";
+ this.morphs[attrMorphNum] = morph;
+ };
- return IterationArtifacts;
- })();
+ prototype.createElementMorph = function (morphNum, elementNum) {
+ var morphMethod = 'createElementMorph';
+ var morph = "dom." + morphMethod + "(element" + elementNum + ")";
+ this.morphs[morphNum] = morph;
+ };
- exports.IterationArtifacts = IterationArtifacts;
+ prototype.repairClonedNode = function (blankChildTextNodes, isElementChecked) {
+ var parent = this.getParent(),
+ processing = 'if (this.cachedFragment) { dom.repairClonedNode(' + parent + ',' + _htmlbarsUtilQuoting.array(blankChildTextNodes) + (isElementChecked ? ',true' : '') + '); }';
+ this.fragmentProcessing.push(processing);
+ };
- var ReferenceIterator = (function () {
- // if anyone needs to construct this object with something other than
- // an iterable, let @wycats know.
+ prototype.shareElement = function (elementNum) {
+ var elementNodesName = "element" + elementNum;
+ this.fragmentProcessing.push('var ' + elementNodesName + ' = ' + this.getParent() + ';');
+ this.parents[this.parents.length - 1] = [elementNodesName];
+ };
- function ReferenceIterator(iterable) {
- this.iterator = null;
- var artifacts = new IterationArtifacts(iterable);
- this.artifacts = artifacts;
- }
+ prototype.consumeParent = function (i) {
+ var newParent = this.lastParent().slice();
+ newParent.push(i);
- ReferenceIterator.prototype.next = function next() {
- var artifacts = this.artifacts;
+ this.parents.push(newParent);
+ };
- var iterator = this.iterator = this.iterator || artifacts.iterate();
- var item = iterator.next();
- if (!item) return null;
- return artifacts.append(item);
- };
+ prototype.popParent = function () {
+ this.parents.pop();
+ };
- return ReferenceIterator;
- })();
+ prototype.getParent = function () {
+ var last = this.lastParent().slice();
+ var frag = last.shift();
- exports.ReferenceIterator = ReferenceIterator;
+ if (!last.length) {
+ return frag;
+ }
- var Phase;
- (function (Phase) {
- Phase[Phase["Append"] = 0] = "Append";
- Phase[Phase["Prune"] = 1] = "Prune";
- Phase[Phase["Done"] = 2] = "Done";
- })(Phase || (Phase = {}));
+ return 'dom.childAt(' + frag + ', [' + last.join(', ') + '])';
+ };
- var IteratorSynchronizer = (function () {
- function IteratorSynchronizer(_ref) {
- var target = _ref.target;
- var artifacts = _ref.artifacts;
+ prototype.lastParent = function () {
+ return this.parents[this.parents.length - 1];
+ };
- this.target = target;
- this.artifacts = artifacts;
- this.iterator = artifacts.iterate();
- this.current = artifacts.head();
- }
-
- IteratorSynchronizer.prototype.sync = function sync() {
- var phase = Phase.Append;
- while (true) {
- switch (phase) {
- case Phase.Append:
- phase = this.nextAppend();
- break;
- case Phase.Prune:
- phase = this.nextPrune();
- break;
- case Phase.Done:
- this.nextDone();
- return;
- }
- }
- };
-
- IteratorSynchronizer.prototype.advanceToKey = function advanceToKey(key) {
- var current = this.current;
- var artifacts = this.artifacts;
-
- var seek = current;
- while (seek && seek.key !== key) {
- seek.seen = true;
- seek = artifacts.nextNode(seek);
- }
- this.current = seek && artifacts.nextNode(seek);
- };
-
- IteratorSynchronizer.prototype.nextAppend = function nextAppend() {
- var iterator = this.iterator;
- var current = this.current;
- var artifacts = this.artifacts;
-
- var item = iterator.next();
- if (item === null) {
- return this.startPrune();
- }
- var key = item.key;
-
- if (current && current.key === key) {
- this.nextRetain(item);
- } else if (artifacts.has(key)) {
- this.nextMove(item);
- } else {
- this.nextInsert(item);
- }
- return Phase.Append;
- };
-
- IteratorSynchronizer.prototype.nextRetain = function nextRetain(item) {
- var artifacts = this.artifacts;
- var current = this.current;
-
- current.update(item);
- this.current = artifacts.nextNode(current);
- this.target.retain(item.key, current.value, current.memo);
- };
-
- IteratorSynchronizer.prototype.nextMove = function nextMove(item) {
- var current = this.current;
- var artifacts = this.artifacts;
- var target = this.target;
- var key = item.key;
-
- var found = artifacts.get(item.key);
- found.update(item);
- if (artifacts.wasSeen(item.key)) {
- artifacts.move(found, current);
- target.move(found.key, found.value, found.memo, current ? current.key : null);
- } else {
- this.advanceToKey(key);
- }
- };
-
- IteratorSynchronizer.prototype.nextInsert = function nextInsert(item) {
- var artifacts = this.artifacts;
- var target = this.target;
- var current = this.current;
-
- var node = artifacts.insertBefore(item, current);
- target.insert(node.key, node.value, node.memo, current ? current.key : null);
- };
-
- IteratorSynchronizer.prototype.startPrune = function startPrune() {
- this.current = this.artifacts.head();
- return Phase.Prune;
- };
-
- IteratorSynchronizer.prototype.nextPrune = function nextPrune() {
- var artifacts = this.artifacts;
- var target = this.target;
- var current = this.current;
-
- if (current === null) {
- return Phase.Done;
- }
- var node = current;
- this.current = artifacts.nextNode(node);
- if (node.shouldRemove()) {
- artifacts.remove(node);
- target.delete(node.key);
- } else {
- node.reset();
- }
- return Phase.Prune;
- };
-
- IteratorSynchronizer.prototype.nextDone = function nextDone() {
- this.target.done();
- };
-
- return IteratorSynchronizer;
- })();
-
- exports.IteratorSynchronizer = IteratorSynchronizer;
+ prototype.pushStatement = function () {
+ this.statements.push(_htmlbarsUtilTemplateUtils.buildStatement.apply(undefined, arguments));
+ };
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9pdGVyYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFrQ0EsUUFBQTs4QkFBQSxRQUFBOztBQU9FLGlCQVBGLFFBQUEsQ0FPYyxRQUF3QixFQUFFLE1BQTJCLEVBQUE7QUFDL0QsaUNBQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFMckMsZ0JBQUEsQ0FBQSxRQUFRLEdBQVksS0FBSyxDQUFDO0FBQzFCLGdCQUFBLENBQUEsSUFBSSxHQUFZLEtBQUssQ0FBQztBQUszQixnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3RCLGdCQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6QixnQkFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0M7O0FBWkgsZ0JBQUEsV0FjRSxNQUFNLEdBQUEsZ0JBQUMsSUFBeUIsRUFBQTtBQUM5QixnQkFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDckIsZ0JBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxnQkFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BEOztBQWxCSCxnQkFBQSxXQW9CRSxZQUFZLEdBQUEsd0JBQUE7QUFDVixtQkFBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkI7O0FBdEJILGdCQUFBLFdBd0JFLEtBQUssR0FBQSxpQkFBQTtBQUNILGdCQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN0QixnQkFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7O2VBM0JILFFBQUE7b0JBbENxQixRQUFROzs7O1FBZ0U3QixrQkFB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QyxnQkFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7QUFDdkIseUJBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsc0JBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCLE1BQU07QUFDTCxvQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7QUFFRCxtQkFBTyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3BCOztBQWpISCw0QkFBQSxXQW1IVSxRQUFRLEdBQUEsb0JBQUE7QUFDZCxnQkFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjs7ZUFySEgsb0JBQUEiLCJmaWxlIjoiaXRlcmFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rZWRMaXN0LCBMaXN0Tm9kZSwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgYXMgUGF0aFJlZmVyZW5jZSwgUmV2aXNpb25UYWcgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkl0ZW08VCwgVT4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IFQ7XG4gIG1lbW86IFU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RJdGVyYXRvcjxULCBVLCBWIGV4dGVuZHMgSXRlcmF0aW9uSXRlbTxULCBVPj4ge1xuICBpc0VtcHR5KCk6IGJvb2xlYW47XG4gIG5leHQoKTogVjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEl0ZXJhYmxlPFQsIFUsIEl0ZW1UeXBlIGV4dGVuZHMgSXRlcmF0aW9uSXRlbTxULCBVPiwgVmFsdWVSZWZlcmVuY2VUeXBlIGV4dGVuZHMgUGF0aFJlZmVyZW5jZTxUPiwgTWVtb1JlZmVyZW5jZVR5cGUgZXh0ZW5kcyBQYXRoUmVmZXJlbmNlPFU+PiB7XG4gIHRhZzogUmV2aXNpb25UYWc7XG4gIGl0ZXJhdGUoKTogQWJzdHJhY3RJdGVyYXRvcjxULCBVLCBJdGVtVHlwZT47XG5cbiAgdmFsdWVSZWZlcmVuY2VGb3IoaXRlbTogSXRlbVR5cGUpOiBWYWx1ZVJlZmVyZW5jZVR5cGU7XG4gIHVwZGF0ZVZhbHVlUmVmZXJlbmNlKHJlZmVyZW5jZTogVmFsdWVSZWZlcmVuY2VUeXBlLCBpdGVtOiBJdGVtVHlwZSk7XG5cbiAgbWVtb1JlZmVyZW5jZUZvcihpdGVtOiBJdGVtVHlwZSk6IE1lbW9SZWZlcmVuY2VUeXBlO1xuICB1cGRhdGVNZW1vUmVmZXJlbmNlKHJlZmVyZW5jZTogTWVtb1JlZmVyZW5jZVR5cGUsIGl0ZW06IEl0ZW1UeXBlKTtcbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3I8VCwgVT4gPSBBYnN0cmFjdEl0ZXJhdG9yPFQsIFUsIEl0ZXJhdGlvbkl0ZW08VCwgVT4+O1xuZXhwb3J0IHR5cGUgSXRlcmFibGU8VCwgVT4gPSBBYnN0cmFjdEl0ZXJhYmxlPFQsIFUsIEl0ZXJhdGlvbkl0ZW08VCwgVT4sIFBhdGhSZWZlcmVuY2U8VD4sIFBhdGhSZWZlcmVuY2U8VT4+O1xuXG5leHBvcnQgdHlwZSBPcGFxdWVJdGVyYXRpb25JdGVtID0gSXRlcmF0aW9uSXRlbTxPcGFxdWUsIE9wYXF1ZT47XG5leHBvcnQgdHlwZSBPcGFxdWVJdGVyYXRvciA9IEFic3RyYWN0SXRlcmF0b3I8T3BhcXVlLCBPcGFxdWUsIE9wYXF1ZUl0ZXJhdGlvbkl0ZW0+O1xuZXhwb3J0IHR5cGUgT3BhcXVlUGF0aFJlZmVyZW5jZSA9IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbmV4cG9ydCB0eXBlIE9wYXF1ZUl0ZXJhYmxlID0gQWJzdHJhY3RJdGVyYWJsZTxPcGFxdWUsIE9wYXF1ZSwgT3BhcXVlSXRlcmF0aW9uSXRlbSwgT3BhcXVlUGF0aFJlZmVyZW5jZSwgT3BhcXVlUGF0aFJlZmVyZW5jZT47XG5leHBvcnQgdHlwZSBPcGFxdWVQYXRoUmVmZXJlbmNlSXRlcmF0aW9uSXRlbSA9IEl0ZXJhdGlvbkl0ZW08T3BhcXVlUGF0aFJlZmVyZW5jZSwgT3BhcXVlUGF0aFJlZmVyZW5jZT47XG5cbmV4cG9ydCBjbGFzcyBMaXN0SXRlbSBleHRlbmRzIExpc3ROb2RlPE9wYXF1ZVBhdGhSZWZlcmVuY2U+IGltcGxlbWVudHMgT3BhcXVlSXRlcmF0aW9uSXRlbSB7XG4gIHB1YmxpYyBrZXk6IHN0cmluZztcbiAgcHVibGljIG1lbW86IE9wYXF1ZVBhdGhSZWZlcmVuY2U7XG4gIHB1YmxpYyByZXRhaW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGl0ZXJhYmxlOiBPcGFxdWVJdGVyYWJsZTtcblxuICBjb25zdHJ1Y3RvcihpdGVyYWJsZTogT3BhcXVlSXRlcmFibGUsIHJlc3VsdDogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIHN1cGVyKGl0ZXJhYmxlLnZhbHVlUmVmZXJlbmNlRm9yKHJlc3VsdCkpO1xuICAgIHRoaXMua2V5ID0gcmVzdWx0LmtleTtcbiAgICB0aGlzLml0ZXJhYmxlID0gaXRlcmFibGU7XG4gICAgdGhpcy5tZW1vID0gaXRlcmFibGUubWVtb1JlZmVyZW5jZUZvcihyZXN1bHQpO1xuICB9XG5cbiAgdXBkYXRlKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pIHtcbiAgICB0aGlzLnJldGFpbmVkID0gdHJ1ZTtcbiAgICB0aGlzLml0ZXJhYmxlLnVwZGF0ZVZhbHVlUmVmZXJlbmNlKHRoaXMudmFsdWUsIGl0ZW0pO1xuICAgIHRoaXMuaXRlcmFibGUudXBkYXRlTWVtb1JlZmVyZW5jZSh0aGlzLm1lbW8sIGl0ZW0pO1xuICB9XG5cbiAgc2hvdWxkUmVtb3ZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yZXRhaW5lZDtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmV0YWluZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlZW4gPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXRlcmF0aW9uQXJ0aWZhY3RzIHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgcHJpdmF0ZSBpdGVyYWJsZTogT3BhcXVlSXRlcmFibGU7XG4gIHByaXZhdGUgaXRlcmF0b3I6IE9wYXF1ZUl0ZXJhdG9yO1xuICBwcml2YXRlIG1hcCA9IGRpY3Q8TGlzdEl0ZW0+KCk7XG4gIHByaXZhdGUgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PExpc3RJdGVtPigpO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZXJhYmxlOiBPcGFxdWVJdGVyYWJsZSkge1xuICAgIHRoaXMudGFnID0gaXRlcmFibGUudGFnO1xuICAgIHRoaXMuaXRlcmFibGUgPSBpdGVyYWJsZTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgbGV0IGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvciA9IHRoaXMuaXRlcmFibGUuaXRlcmF0ZSgpO1xuICAgIHJldHVybiBpdGVyYXRvci5pc0VtcHR5KCk7XG4gIH1cblxuICBpdGVyYXRlKCk6IE9wYXF1ZUl0ZXJhdG9yIHtcbiAgICBsZXQgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yIHx8IHRoaXMuaXRlcmFibGUuaXRlcmF0ZSgpO1xuICAgIHRoaXMuaXRlcmF0b3IgPSBudWxsO1xuXG4gICAgcmV0dXJuIGl0ZXJhdG9yO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tYXBba2V5XTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IExpc3RJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5tYXBba2V5XTtcbiAgfVxuXG4gIHdhc1NlZW4oa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMubWFwW2tleV07XG4gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5zZWVuO1xuICB9XG5cbiAgYXBwZW5kKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pOiBMaXN0SXRlbSB7XG4gICAgbGV0IHsgbWFwLCBsaXN0LCBpdGVyYWJsZSB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IG1hcFtpdGVtLmtleV0gPSBuZXcgTGlzdEl0ZW0oaXRlcmFibGUsIGl0ZW0pO1xuXG4gICAgbGlzdC5hcHBlbmQobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpbnNlcnRCZWZvcmUoaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSwgcmVmZXJlbmNlOiBMaXN0SXRlbSk6IExpc3RJdGVtIHtcbiAgICBsZXQgeyBtYXAsIGxpc3QsIGl0ZXJhYmxlIH0gPSB0aGlzO1xuXG4gICAgbGV0IG5vZGUgPSBtYXBbaXRlbS5rZXldID0gbmV3IExpc3RJdGVtKGl0ZXJhYmxlLCBpdGVtKTtcbiAgICBub2RlLnJldGFpbmVkID0gdHJ1ZTtcbiAgICBsaXN0Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgbW92ZShpdGVtOiBMaXN0SXRlbSwgcmVmZXJlbmNlOiBMaXN0SXRlbSk6IHZvaWQge1xuICAgIGxldCB7IGxpc3QgfSA9IHRoaXM7XG5cbiAgICBpdGVtLnJldGFpbmVkID0gdHJ1ZTtcbiAgICBsaXN0LnJlbW92ZShpdGVtKTtcbiAgICBsaXN0Lmluc2VydEJlZm9yZShpdGVtLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcmVtb3ZlKGl0ZW06IExpc3RJdGVtKTogdm9pZCB7XG4gICAgbGV0IHsgbGlzdCB9ID0gdGhpcztcblxuICAgIGxpc3QucmVtb3ZlKGl0ZW0pO1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtpdGVtLmtleV07XG4gIH1cblxuICBuZXh0Tm9kZShpdGVtOiBMaXN0SXRlbSk6IExpc3RJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lm5leHROb2RlKGl0ZW0pO1xuICB9XG5cbiAgaGVhZCgpOiBMaXN0SXRlbSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oZWFkKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUl0ZXJhdG9yIHtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuICBwcml2YXRlIGl0ZXJhdG9yOiBPcGFxdWVJdGVyYXRvciA9IG51bGw7XG5cbiAgLy8gaWYgYW55b25lIG5lZWRzIHRvIGNvbnN0cnVjdCB0aGlzIG9iamVjdCB3aXRoIHNvbWV0aGluZyBvdGhlciB0aGFuXG4gIC8vIGFuIGl0ZXJhYmxlLCBsZXQgQHd5Y2F0cyBrbm93LlxuICBjb25zdHJ1Y3RvcihpdGVyYWJsZTogT3BhcXVlSXRlcmFibGUpIHtcbiAgICBsZXQgYXJ0aWZhY3RzID0gbmV3IEl0ZXJhdGlvbkFydGlmYWN0cyhpdGVyYWJsZSk7XG4gICAgdGhpcy5hcnRpZmFjdHMgPSBhcnRpZmFjdHM7XG4gIH1cblxuICBuZXh0KCk6IExpc3RJdGVtIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMgfSA9IHRoaXM7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSAodGhpcy5pdGVyYXRvciA9IHRoaXMuaXRlcmF0b3IgfHwgYXJ0aWZhY3RzLml0ZXJhdGUoKSk7XG5cbiAgICBsZXQgaXRlbSA9IGl0ZXJhdG9yLm5leHQoKTtcblxuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gYXJ0aWZhY3RzLmFwcGVuZChpdGVtKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICByZXRhaW4oa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTtcbiAgaW5zZXJ0KGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpO1xuICBtb3ZlKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpO1xuICBkZWxldGUoa2V5OiBzdHJpbmcpO1xuICBkb25lKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zIHtcbiAgdGFyZ2V0OiBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlO1xuICBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcbn1cblxuZW51bSBQaGFzZSB7XG4gIEFwcGVuZCxcbiAgUHJ1bmUsXG4gIERvbmVcbn1cblxuZXhwb3J0IGNsYXNzIEl0ZXJhdG9yU3luY2hyb25pemVyIHtcbiAgcHJpdmF0ZSB0YXJnZXQ6IEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGU7XG4gIHByaXZhdGUgaXRlcmF0b3I6IE9wYXF1ZUl0ZXJhdG9yO1xuICBwcml2YXRlIGN1cnJlbnQ6IExpc3RJdGVtO1xuICBwcml2YXRlIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGFyZ2V0LCBhcnRpZmFjdHMgfTogSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zKSB7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgdGhpcy5hcnRpZmFjdHMgPSBhcnRpZmFjdHM7XG4gICAgdGhpcy5pdGVyYXRvciA9IGFydGlmYWN0cy5pdGVyYXRlKCk7XG4gICAgdGhpcy5jdXJyZW50ID0gYXJ0aWZhY3RzLmhlYWQoKTtcbiAgfVxuXG4gIHN5bmMoKSB7XG4gICAgbGV0IHBoYXNlOiBQaGFzZSA9IFBoYXNlLkFwcGVuZDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgICAgIGNhc2UgUGhhc2UuQXBwZW5kOiBwaGFzZSA9IHRoaXMubmV4dEFwcGVuZCgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5QcnVuZTogcGhhc2UgPSB0aGlzLm5leHRQcnVuZSgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5Eb25lOiB0aGlzLm5leHREb25lKCk7IHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkdmFuY2VUb0tleShrZXk6IHN0cmluZykge1xuICAgIGxldCB7IGN1cnJlbnQsIGFydGlmYWN0cyB9ID0gdGhpcztcblxuICAgIGxldCBzZWVrID0gY3VycmVudDtcblxuICAgIHdoaWxlIChzZWVrICYmIHNlZWsua2V5ICE9PSBrZXkpIHtcbiAgICAgIHNlZWsuc2VlbiA9IHRydWU7XG4gICAgICBzZWVrID0gYXJ0aWZhY3RzLm5leHROb2RlKHNlZWspO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudCA9IHNlZWsgJiYgYXJ0aWZhY3RzLm5leHROb2RlKHNlZWspO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0QXBwZW5kKCk6IFBoYXNlIHtcbiAgICBsZXQgeyBpdGVyYXRvciwgY3VycmVudCwgYXJ0aWZhY3RzIH0gPSB0aGlzO1xuXG4gICAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQcnVuZSgpO1xuICAgIH1cblxuICAgIGxldCB7IGtleSB9ID0gaXRlbTtcblxuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQua2V5ID09PSBrZXkpIHtcbiAgICAgIHRoaXMubmV4dFJldGFpbihpdGVtKTtcbiAgICB9IGVsc2UgaWYgKGFydGlmYWN0cy5oYXMoa2V5KSkge1xuICAgICAgdGhpcy5uZXh0TW92ZShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZXh0SW5zZXJ0KGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiBQaGFzZS5BcHBlbmQ7XG4gIH1cblxuICBwcml2YXRlIG5leHRSZXRhaW4oaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIGxldCB7IGFydGlmYWN0cywgY3VycmVudCB9ID0gdGhpcztcblxuICAgIGN1cnJlbnQudXBkYXRlKGl0ZW0pO1xuICAgIHRoaXMuY3VycmVudCA9IGFydGlmYWN0cy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICB0aGlzLnRhcmdldC5yZXRhaW4oaXRlbS5rZXksIGN1cnJlbnQudmFsdWUsIGN1cnJlbnQubWVtbyk7XG4gIH1cblxuICBwcml2YXRlIG5leHRNb3ZlKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pIHtcbiAgICBsZXQgeyBjdXJyZW50LCBhcnRpZmFjdHMsIHRhcmdldCB9ID0gdGhpcztcbiAgICBsZXQgeyBrZXkgfSA9IGl0ZW07XG5cbiAgICBsZXQgZm91bmQgPSBhcnRpZmFjdHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICBmb3VuZC51cGRhdGUoaXRlbSk7XG5cbiAgICBpZiAoYXJ0aWZhY3RzLndhc1NlZW4oaXRlbS5rZXkpKSB7XG4gICAgICBhcnRpZmFjdHMubW92ZShmb3VuZCwgY3VycmVudCk7XG4gICAgICB0YXJnZXQubW92ZShmb3VuZC5rZXksIGZvdW5kLnZhbHVlLCBmb3VuZC5tZW1vLCBjdXJyZW50ID8gY3VycmVudC5rZXkgOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZHZhbmNlVG9LZXkoa2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRJbnNlcnQoaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIGxldCB7IGFydGlmYWN0cywgdGFyZ2V0LCBjdXJyZW50IH0gPSB0aGlzO1xuXG4gICAgbGV0IG5vZGUgPSBhcnRpZmFjdHMuaW5zZXJ0QmVmb3JlKGl0ZW0sIGN1cnJlbnQpO1xuICAgIHRhcmdldC5pbnNlcnQobm9kZS5rZXksIG5vZGUudmFsdWUsIG5vZGUubWVtbywgY3VycmVudCA/IGN1cnJlbnQua2V5IDogbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UHJ1bmUoKTogUGhhc2Uge1xuICAgIHRoaXMuY3VycmVudCA9IHRoaXMuYXJ0aWZhY3RzLmhlYWQoKTtcbiAgICByZXR1cm4gUGhhc2UuUHJ1bmU7XG4gIH1cblxuICBwcml2YXRlIG5leHRQcnVuZSgpOiBQaGFzZSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCB0YXJnZXQsIGN1cnJlbnQgfSA9IHRoaXM7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFBoYXNlLkRvbmU7XG4gICAgfVxuXG4gICAgbGV0IG5vZGUgPSBjdXJyZW50O1xuICAgIHRoaXMuY3VycmVudCA9IGFydGlmYWN0cy5uZXh0Tm9kZShub2RlKTtcblxuICAgIGlmIChub2RlLnNob3VsZFJlbW92ZSgpKSB7XG4gICAgICBhcnRpZmFjdHMucmVtb3ZlKG5vZGUpO1xuICAgICAgdGFyZ2V0LmRlbGV0ZShub2RlLmtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUucmVzZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUGhhc2UuUHJ1bmU7XG4gIH1cblxuICBwcml2YXRlIG5leHREb25lKCkge1xuICAgIHRoaXMudGFyZ2V0LmRvbmUoKTtcbiAgfVxufVxuIl19
-enifed("glimmer-reference/lib/reference", ["exports"], function (exports) {
+enifed("htmlbars-compiler/hydration-opcode-compiler", ["exports", "htmlbars-compiler/template-visitor", "htmlbars-compiler/utils", "htmlbars-util", "htmlbars-util/array-utils", "htmlbars-syntax/utils"], function (exports, _htmlbarsCompilerTemplateVisitor, _htmlbarsCompilerUtils, _htmlbarsUtil, _htmlbarsUtilArrayUtils, _htmlbarsSyntaxUtils) {
"use strict";
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9yZWZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJyZWZlcmVuY2UuanMiLCJzb3VyY2VzQ29udGVudCI6W119
-enifed("glimmer-reference/lib/utils", ["exports"], function (exports) {
- "use strict";
- exports.referenceFromParts = referenceFromParts;
-
- function referenceFromParts(root, parts) {
- var reference = root;
- for (var i = 0; i < parts.length; i++) {
- reference = reference.get(parts[i]);
- }
- return reference;
+ function detectIsElementChecked(element) {
+ for (var i = 0, len = element.attributes.length; i < len; i++) {
+ if (element.attributes[i].name === 'checked') {
+ return true;
+ }
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGFBQUEsa0JBQUEsQ0FBbUMsSUFBb0MsRUFBRSxLQUFlLEVBQUE7QUFDdEYsWUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBRXJCLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLHFCQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQztBQUVELGVBQU8sU0FBUyxDQUFDO0tBQ2xCIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlRnJvbVBhcnRzKHJvb3Q6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgcGFydHM6IHN0cmluZ1tdKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaT0wOyBpPHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLmdldChwYXJ0c1tpXSk7XG4gIH1cblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuIl19
-enifed("glimmer-reference/lib/validators", ["exports"], function (exports) {
- "use strict";
+ return false;
+ }
- exports.combineTagged = combineTagged;
- exports.combineSlice = combineSlice;
- exports.combine = combine;
- exports.map = map;
- exports.isModified = isModified;
- var CONSTANT = 0;
- exports.CONSTANT = CONSTANT;
- var INITIAL = 1;
- exports.INITIAL = INITIAL;
- var VOLATILE = NaN;
- exports.VOLATILE = VOLATILE;
+ function HydrationOpcodeCompiler() {
+ this.opcodes = [];
+ this.paths = [];
+ this.templateId = 0;
+ this.currentDOMChildIndex = 0;
+ this.morphs = [];
+ this.morphNum = 0;
+ this.element = null;
+ this.elementNum = -1;
+ }
- var RevisionTag = (function () {
- function RevisionTag() {}
+ exports.default = HydrationOpcodeCompiler;
- RevisionTag.prototype.validate = function validate(snapshot) {
- return this.value() === snapshot;
- };
+ HydrationOpcodeCompiler.prototype.compile = function (ast) {
+ var templateVisitor = new _htmlbarsCompilerTemplateVisitor.default();
+ templateVisitor.visit(ast);
- return RevisionTag;
- })();
+ _htmlbarsCompilerUtils.processOpcodes(this, templateVisitor.actions);
- exports.RevisionTag = RevisionTag;
+ return this.opcodes;
+ };
- var $REVISION = INITIAL;
+ HydrationOpcodeCompiler.prototype.accept = function (node) {
+ this[node.type](node);
+ };
- var DirtyableTag = (function (_RevisionTag) {
- babelHelpers.inherits(DirtyableTag, _RevisionTag);
+ HydrationOpcodeCompiler.prototype.opcode = function (type) {
+ var params = [].slice.call(arguments, 1);
+ this.opcodes.push([type, params]);
+ };
- function DirtyableTag() {
- var revision = arguments.length <= 0 || arguments[0] === undefined ? $REVISION : arguments[0];
+ HydrationOpcodeCompiler.prototype.startProgram = function (program, c, blankChildTextNodes) {
+ this.opcodes.length = 0;
+ this.paths.length = 0;
+ this.morphs.length = 0;
+ this.templateId = 0;
+ this.currentDOMChildIndex = -1;
+ this.morphNum = 0;
- _RevisionTag.call(this);
- this.revision = revision;
- }
+ var blockParams = program.blockParams || [];
- DirtyableTag.prototype.value = function value() {
- return this.revision;
- };
-
- DirtyableTag.prototype.dirty = function dirty() {
- this.revision = ++$REVISION;
- };
-
- return DirtyableTag;
- })(RevisionTag);
-
- exports.DirtyableTag = DirtyableTag;
-
- function combineTagged(tagged) {
- var optimized = [];
- for (var i = 0, l = tagged.length; i < l; i++) {
- var tag = tagged[i].tag;
- if (tag === VOLATILE_TAG) return VOLATILE_TAG;
- if (tag === CONSTANT_TAG) continue;
- optimized.push(tag);
- }
- return _combine(optimized);
+ for (var i = 0; i < blockParams.length; i++) {
+ this.opcode('printSetHook', blockParams[i], i);
}
- function combineSlice(slice) {
- var optimized = [];
- var node = slice.head();
- while (node !== null) {
- var tag = node.tag;
- if (tag === VOLATILE_TAG) return VOLATILE_TAG;
- if (tag !== CONSTANT_TAG) optimized.push(tag);
- node = slice.nextNode(node);
- }
- return _combine(optimized);
+ if (blankChildTextNodes.length > 0) {
+ this.opcode('repairClonedNode', blankChildTextNodes);
}
+ };
- function combine(tags) {
- var optimized = [];
- for (var i = 0, l = tags.length; i < l; i++) {
- var tag = tags[i];
- if (tag === VOLATILE_TAG) return VOLATILE_TAG;
- if (tag === CONSTANT_TAG) continue;
- optimized.push(tag);
- }
- return _combine(optimized);
- }
+ HydrationOpcodeCompiler.prototype.insertBoundary = function (first) {
+ this.opcode(first ? 'openBoundary' : 'closeBoundary');
+ };
- function _combine(tags) {
- switch (tags.length) {
- case 0:
- return CONSTANT_TAG;
- case 1:
- return tags[0];
- case 2:
- return new TagsPair(tags[0], tags[1]);
- default:
- return new TagsCombinator(tags);
- }
- ;
- }
+ HydrationOpcodeCompiler.prototype.endProgram = function () {
+ distributeMorphs(this.morphs, this.opcodes);
+ };
- var CachedTag = (function (_RevisionTag2) {
- babelHelpers.inherits(CachedTag, _RevisionTag2);
+ HydrationOpcodeCompiler.prototype.text = function () {
+ ++this.currentDOMChildIndex;
+ };
- function CachedTag() {
- _RevisionTag2.apply(this, arguments);
- this.lastChecked = null;
- this.lastValue = null;
- }
+ HydrationOpcodeCompiler.prototype.comment = function () {
+ ++this.currentDOMChildIndex;
+ };
- CachedTag.prototype.value = function value() {
- var lastChecked = this.lastChecked;
- var lastValue = this.lastValue;
+ HydrationOpcodeCompiler.prototype.openElement = function (element, pos, len, mustacheCount, blankChildTextNodes) {
+ distributeMorphs(this.morphs, this.opcodes);
+ ++this.currentDOMChildIndex;
- if (lastChecked !== $REVISION) {
- this.lastChecked = $REVISION;
- this.lastValue = lastValue = this.compute();
- }
- return this.lastValue;
- };
+ this.element = this.currentDOMChildIndex;
- CachedTag.prototype.invalidate = function invalidate() {
- this.lastChecked = null;
- };
+ this.opcode('consumeParent', this.currentDOMChildIndex);
- return CachedTag;
- })(RevisionTag);
+ // If our parent reference will be used more than once, cache its reference.
+ if (mustacheCount > 1) {
+ shareElement(this);
+ }
- exports.CachedTag = CachedTag;
+ var isElementChecked = detectIsElementChecked(element);
+ if (blankChildTextNodes.length > 0 || isElementChecked) {
+ this.opcode('repairClonedNode', blankChildTextNodes, isElementChecked);
+ }
- var TagsPair = (function (_CachedTag) {
- babelHelpers.inherits(TagsPair, _CachedTag);
+ this.paths.push(this.currentDOMChildIndex);
+ this.currentDOMChildIndex = -1;
- function TagsPair(first, second) {
- _CachedTag.call(this);
- this.first = first;
- this.second = second;
- }
+ _htmlbarsUtilArrayUtils.forEach(element.attributes, this.attribute, this);
+ _htmlbarsUtilArrayUtils.forEach(element.modifiers, this.elementModifier, this);
+ };
- TagsPair.prototype.compute = function compute() {
- return Math.max(this.first.value(), this.second.value());
- };
+ HydrationOpcodeCompiler.prototype.closeElement = function () {
+ distributeMorphs(this.morphs, this.opcodes);
+ this.opcode('popParent');
+ this.currentDOMChildIndex = this.paths.pop();
+ };
- return TagsPair;
- })(CachedTag);
+ HydrationOpcodeCompiler.prototype.mustache = function (mustache, childIndex, childCount) {
+ this.pushMorphPlaceholderNode(childIndex, childCount);
- var TagsCombinator = (function (_CachedTag2) {
- babelHelpers.inherits(TagsCombinator, _CachedTag2);
+ var opcode;
- function TagsCombinator(tags) {
- _CachedTag2.call(this);
- this.tags = tags;
- }
+ if (_htmlbarsSyntaxUtils.isHelper(mustache)) {
+ prepareHash(this, mustache.hash);
+ prepareParams(this, mustache.params);
+ preparePath(this, mustache.path);
+ opcode = 'printInlineHook';
+ } else {
+ preparePath(this, mustache.path);
+ opcode = 'printContentHook';
+ }
- TagsCombinator.prototype.compute = function compute() {
- var tags = this.tags;
+ var morphNum = this.morphNum++;
+ var start = this.currentDOMChildIndex;
+ var end = this.currentDOMChildIndex;
+ this.morphs.push([morphNum, this.paths.slice(), start, end, mustache.escaped]);
- var max = -1;
- for (var i = 0; i < tags.length; i++) {
- var value = tags[i].value();
- max = Math.max(value, max);
- }
- return max;
- };
+ this.opcode(opcode, meta(mustache));
+ };
- return TagsCombinator;
- })(CachedTag);
+ function meta(node) {
+ var loc = node.loc;
+ if (!loc) {
+ return [];
+ }
- var UpdatableTag = (function (_CachedTag3) {
- babelHelpers.inherits(UpdatableTag, _CachedTag3);
+ var source = loc.source;
+ var start = loc.start;
+ var end = loc.end;
- function UpdatableTag(tag) {
- _CachedTag3.call(this);
- this.tag = tag;
- this.lastUpdated = INITIAL;
- }
+ return ['loc', [source || null, [start.line, start.column], [end.line, end.column]]];
+ }
- //////////
+ HydrationOpcodeCompiler.prototype.block = function (block, childIndex, childCount) {
+ this.pushMorphPlaceholderNode(childIndex, childCount);
- UpdatableTag.prototype.compute = function compute() {
- return Math.max(this.lastUpdated, this.tag.value());
- };
+ prepareHash(this, block.hash);
+ prepareParams(this, block.params);
+ preparePath(this, block.path);
- UpdatableTag.prototype.update = function update(tag) {
- if (tag !== this.tag) {
- this.tag = tag;
- this.lastUpdated = $REVISION;
- this.invalidate();
- }
- };
+ var morphNum = this.morphNum++;
+ var start = this.currentDOMChildIndex;
+ var end = this.currentDOMChildIndex;
+ this.morphs.push([morphNum, this.paths.slice(), start, end, true]);
- return UpdatableTag;
- })(CachedTag);
+ var templateId = this.templateId++;
+ var inverseId = block.inverse === null ? null : this.templateId++;
- exports.UpdatableTag = UpdatableTag;
- var CONSTANT_TAG = new ((function (_RevisionTag3) {
- babelHelpers.inherits(ConstantTag, _RevisionTag3);
+ this.opcode('printBlockHook', templateId, inverseId, meta(block));
+ };
- function ConstantTag() {
- _RevisionTag3.apply(this, arguments);
- }
+ HydrationOpcodeCompiler.prototype.component = function (component, childIndex, childCount) {
+ this.pushMorphPlaceholderNode(childIndex, childCount, component.isStatic);
- ConstantTag.prototype.value = function value() {
- return CONSTANT;
- };
+ var program = component.program || {};
+ var blockParams = program.blockParams || [];
- return ConstantTag;
- })(RevisionTag))();
- exports.CONSTANT_TAG = CONSTANT_TAG;
- var VOLATILE_TAG = new ((function (_RevisionTag4) {
- babelHelpers.inherits(VolatileTag, _RevisionTag4);
+ var attrs = component.attributes;
+ for (var i = attrs.length - 1; i >= 0; i--) {
+ var name = attrs[i].name;
+ var value = attrs[i].value;
- function VolatileTag() {
- _RevisionTag4.apply(this, arguments);
- }
+ // TODO: Introduce context specific AST nodes to avoid switching here.
+ if (value.type === 'TextNode') {
+ this.opcode('pushLiteral', value.chars);
+ } else if (value.type === 'MustacheStatement') {
+ this.accept(_htmlbarsSyntaxUtils.unwrapMustache(value));
+ } else if (value.type === 'ConcatStatement') {
+ prepareParams(this, value.parts);
+ this.opcode('pushConcatHook', this.morphNum);
+ }
- VolatileTag.prototype.value = function value() {
- return VOLATILE;
- };
+ this.opcode('pushLiteral', name);
+ }
- return VolatileTag;
- })(RevisionTag))();
- exports.VOLATILE_TAG = VOLATILE_TAG;
- var CURRENT_TAG = new ((function (_DirtyableTag) {
- babelHelpers.inherits(CurrentTag, _DirtyableTag);
+ var morphNum = this.morphNum++;
+ var start = this.currentDOMChildIndex;
+ var end = this.currentDOMChildIndex;
+ this.morphs.push([morphNum, this.paths.slice(), start, end, true]);
- function CurrentTag() {
- _DirtyableTag.apply(this, arguments);
- }
+ this.opcode('prepareObject', attrs.length);
+ this.opcode('pushLiteral', component.tag);
+ this.opcode('printComponentHook', this.templateId++, blockParams.length, meta(component));
+ };
- CurrentTag.prototype.value = function value() {
- return $REVISION;
- };
+ HydrationOpcodeCompiler.prototype.attribute = function (attr) {
+ var value = attr.value;
+ var escaped = true;
+ var namespace = _htmlbarsUtil.getAttrNamespace(attr.name);
- return CurrentTag;
- })(DirtyableTag))();
- exports.CURRENT_TAG = CURRENT_TAG;
-
- var CachedReference = (function () {
- function CachedReference() {
- this.lastRevision = null;
- this.lastValue = null;
- }
-
- CachedReference.prototype.value = function value() {
- var tag = this.tag;
- var lastRevision = this.lastRevision;
- var lastValue = this.lastValue;
-
- if (!lastRevision || !tag.validate(lastRevision)) {
- lastValue = this.lastValue = this.compute();
- this.lastRevision = tag.value();
- }
- return lastValue;
- };
-
- CachedReference.prototype.invalidate = function invalidate() {
- this.lastRevision = null;
- };
-
- return CachedReference;
- })();
-
- exports.CachedReference = CachedReference;
-
- var MapperReference = (function (_CachedReference) {
- babelHelpers.inherits(MapperReference, _CachedReference);
-
- function MapperReference(reference, mapper) {
- _CachedReference.call(this);
- this.tag = reference.tag;
- this.reference = reference;
- this.mapper = mapper;
- }
-
- MapperReference.prototype.compute = function compute() {
- var reference = this.reference;
- var mapper = this.mapper;
-
- return mapper(reference.value());
- };
-
- return MapperReference;
- })(CachedReference);
-
- function map(reference, mapper) {
- return new MapperReference(reference, mapper);
+ // TODO: Introduce context specific AST nodes to avoid switching here.
+ if (value.type === 'TextNode') {
+ return;
+ } else if (value.type === 'MustacheStatement') {
+ escaped = value.escaped;
+ this.accept(_htmlbarsSyntaxUtils.unwrapMustache(value));
+ } else if (value.type === 'ConcatStatement') {
+ prepareParams(this, value.parts);
+ this.opcode('pushConcatHook', this.morphNum);
}
- //////////
+ this.opcode('pushLiteral', attr.name);
- var ReferenceCache = (function () {
- function ReferenceCache(reference) {
- this.lastValue = null;
- this.lastRevision = null;
- this.initialized = false;
- this.tag = reference.tag;
- this.reference = reference;
- }
+ var attrMorphNum = this.morphNum++;
- ReferenceCache.prototype.peek = function peek() {
- if (!this.initialized) {
- return this.initialize();
- }
- return this.lastValue;
- };
-
- ReferenceCache.prototype.revalidate = function revalidate() {
- if (!this.initialized) {
- return this.initialize();
- }
- var reference = this.reference;
- var lastRevision = this.lastRevision;
-
- var tag = reference.tag;
- if (tag.validate(lastRevision)) return NOT_MODIFIED;
- this.lastRevision = tag.value();
- var lastValue = this.lastValue;
-
- var value = reference.value();
- if (value === lastValue) return NOT_MODIFIED;
- this.lastValue = value;
- return value;
- };
-
- ReferenceCache.prototype.initialize = function initialize() {
- var reference = this.reference;
-
- var value = this.lastValue = reference.value();
- this.lastRevision = reference.tag.value();
- this.initialized = true;
- return value;
- };
-
- return ReferenceCache;
- })();
-
- exports.ReferenceCache = ReferenceCache;
-
- var NOT_MODIFIED = "adb3b78e-3d22-4e4b-877a-6317c2c5c145";
-
- function isModified(value) {
- return value !== NOT_MODIFIED;
+ if (this.element !== null) {
+ shareElement(this);
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBa0JPLFFBQU0sUUFBUSxHQUFhLENBQUMsQ0FBQzs7QUFDN0IsUUFBTSxPQUFPLEdBQWMsQ0FBQyxDQUFDOztBQUM3QixRQUFNLFFBQVEsR0FBYSxHQUFHLENBQUM7OztRQUV0QyxXQUFBO2lCQUFBLFdBQUE7O0FBQUEsbUJBQUEsV0FHRSxRQUFRLEdBQUEsa0JBQUMsUUFBa0IsRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssUUFBUSxDQUFDO1NBQ2xDOztlQUxILFdBQUE7Ozs7O0FBUUEsUUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDOztRQUV4QixZQUFBOzhCQUFBLFlBQUE7O0FBR0UsaUJBSEYsWUFBQSxHQUdrQztnQkFBcEIsUUFBUSx5REFBRyxTQUFTOztBQUM5QixtQ0FBTyxDQUFDO0FBQ1IsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzFCOztBQU5ILG9CQUFBLFdBUUUsS0FBSyxHQUFBLGlCQUFBO0FBQ0gsbUJBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0Qjs7QUFWSCxvQkFBQSxXQVlFLEtBQUssR0FBQSxpQkFBQTtBQUNILGdCQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsU0FBUyxDQUFDO1NBQzdCOztlQWRILFlBQUE7T0FBa0MsV0FBVzs7OztBQWlCN0MsYUFBQSxhQUFBLENBQThCLE1BQTBCLEVBQUE7QUFDdEQsWUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBRW5CLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdkMsZ0JBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDeEIsZ0JBQUksR0FBRyxL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QixnQkFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLE9BQU8sWUFBWSxDQUFDO0FBQzdDLGdCQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUV2QixtQkFBTyxLQUFLLENBQUM7U0FDZDs7QUF0Q0gsc0JBQUEsV0F3Q1UsVUFBVSxHQUFBLHNCQUFBO2dCQUNWLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRWYsZ0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9DLGdCQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUMsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXhCLG1CQUFPLEtBQUssQ0FBQztTQUNkOztlQWhESCxjQUFBOzs7OztBQXVEQSxRQUFNLFlBQVksR0FBZ0Isc0NBQXNDLENBQUM7O0FBRXpFLGFBQUEsVUFBQSxDQUE4QixLQUFvQixFQUFBO0FBQ2hELGVBQU8sS0FBSyxLQUFLLFlBQVksQ0FBQztLQUMvQiIsImZpbGUiOiJ2YWxpZGF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlZmVyZW5jZSwgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlLCBTbGljZSwgTGlua2VkTGlzdE5vZGUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnPFQ+IGV4dGVuZHMgUmVmZXJlbmNlPFQ+IHtcbiAgdmFsdWUoKTogVDtcbiAgdmFsaWRhdGUoc25hcHNob3Q6IFQpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ2dlZDxUPiB7XG4gIHRhZzogRW50aXR5VGFnPFQ+O1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJldmlzaW9uID0gbnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlQ6IFJldmlzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBJTklUSUFMOiAgUmV2aXNpb24gPSAxO1xuZXhwb3J0IGNvbnN0IFZPTEFUSUxFOiBSZXZpc2lvbiA9IE5hTjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJldmlzaW9uVGFnIGltcGxlbWVudHMgUmV2aXNpb25UYWcge1xuICBhYnN0cmFjdCB2YWx1ZSgpOiBSZXZpc2lvbjtcblxuICB2YWxpZGF0ZShzbmFwc2hvdDogUmV2aXNpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSgpID09PSBzbmFwc2hvdDtcbiAgfVxufVxuXG5sZXQgJFJFVklTSU9OID0gSU5JVElBTDtcblxuZXhwb3J0IGNsYXNzIERpcnR5YWJsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgcHJpdmF0ZSByZXZpc2lvbjogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IocmV2aXNpb24gPSAkUkVWSVNJT04pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmV2aXNpb24gPSByZXZpc2lvbjtcbiAgfVxuXG4gIHZhbHVlKCk6IFJldmlzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5yZXZpc2lvbjtcbiAgfVxuXG4gIGRpcnR5KCkge1xuICAgIHRoaXMucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVRhZ2dlZCh0YWdnZWQ6IFRhZ2dlZDxSZXZpc2lvbj5bXSk6IFJldmlzaW9uVGFnIHtcbiAgbGV0IG9wdGltaXplZCA9IFtdO1xuXG4gIGZvciAobGV0IGk9MCwgbD10YWdnZWQubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIGxldCB0YWcgPSB0YWdnZWRbaV0udGFnO1xuICAgIGlmICh0YWcgPT09IFZPTEFUSUxFX1RBRykgcmV0dXJuIFZPTEFUSUxFX1RBRztcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gX2NvbWJpbmUob3B0aW1pemVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVTbGljZShzbGljZTogU2xpY2U8VGFnZ2VkPFJldmlzaW9uPiAmIExpbmtlZExpc3ROb2RlPik6IFJldmlzaW9uVGFnIHtcbiAgbGV0IG9wdGltaXplZCA9IFtdO1xuXG4gIGxldCBub2RlID0gc2xpY2UuaGVhZCgpO1xuXG4gIHdoaWxlKG5vZGUgIT09IG51bGwpIHtcbiAgICBsZXQgdGFnID0gbm9kZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBWT0xBVElMRV9UQUcpIHJldHVybiBWT0xBVElMRV9UQUc7XG4gICAgaWYgKHRhZyAhPT0gQ09OU1RBTlRfVEFHKSBvcHRpbWl6ZWQucHVzaCh0YWcpO1xuXG4gICAgbm9kZSA9IHNsaWNlLm5leHROb2RlKG5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIF9jb21iaW5lKG9wdGltaXplZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKHRhZ3M6IFJldmlzaW9uVGFnW10pOiBSZXZpc2lvblRhZyB7XG4gIGxldCBvcHRpbWl6ZWQgPSBbXTtcblxuICBmb3IgKGxldCBpPTAsIGw9dGFncy5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgbGV0IHRhZyA9IHRhZ3NbaV07XG4gICAgaWYgKHRhZyA9PT0gVk9MQVRJTEVfVEFHKSByZXR1cm4gVk9MQVRJTEVfVEFHO1xuICAgIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykgY29udGludWU7XG4gICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgfVxuXG4gIHJldHVybiBfY29tYmluZShvcHRpbWl6ZWQpO1xufVxuXG5mdW5jdGlvbiBfY29tYmluZSh0YWdzOiBSZXZpc2lvblRhZ1tdKTogUmV2aXNpb25UYWcge1xuICBzd2l0Y2ggKHRhZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIENPTlNUQU5UX1RBRztcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gdGFnc1swXTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IFRhZ3NQYWlyKHRhZ3NbMF0sIHRhZ3NbMV0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbmV3IFRhZ3NDb21iaW5hdG9yKHRhZ3MpO1xuICB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FjaGVkVGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICBwcml2YXRlIGxhc3RDaGVja2VkOiBSZXZpc2lvbiA9IG51bGw7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBSZXZpc2lvbiA9IG51bGw7XG5cbiAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgIGxldCB7IGxhc3RDaGVja2VkLCBsYXN0VmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAobGFzdENoZWNrZWQgIT09ICRSRVZJU0lPTikge1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICRSRVZJU0lPTjtcbiAgICAgIHRoaXMubGFzdFZhbHVlID0gbGFzdFZhbHVlID0gdGhpcy5jb21wdXRlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludmFsaWRhdGUoKSB7XG4gICAgdGhpcy5sYXN0Q2hlY2tlZCA9IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZSgpOiBSZXZpc2lvbjtcbn1cblxuY2xhc3MgVGFnc1BhaXIgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICBwcml2YXRlIGZpcnN0OiBSZXZpc2lvblRhZztcbiAgcHJpdmF0ZSBzZWNvbmQ6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKGZpcnN0OiBSZXZpc2lvblRhZywgc2Vjb25kOiBSZXZpc2lvblRhZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5maXJzdCA9IGZpcnN0O1xuICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogUmV2aXNpb24ge1xuICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmZpcnN0LnZhbHVlKCksIHRoaXMuc2Vjb25kLnZhbHVlKCkpO1xuICB9XG59XG5cbmNsYXNzIFRhZ3NDb21iaW5hdG9yIGV4dGVuZHMgQ2FjaGVkVGFnIHtcbiAgcHJpdmF0ZSB0YWdzOiBSZXZpc2lvblRhZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHRhZ3M6IFJldmlzaW9uVGFnW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFncyA9IHRhZ3M7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBSZXZpc2lvbiB7XG4gICAgbGV0IHsgdGFncyB9ID0gdGhpcztcblxuICAgIGxldCBtYXggPSAtMTtcblxuICAgIGZvciAobGV0IGk9MDsgaTx0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdmFsdWUgPSB0YWdzW2ldLnZhbHVlKCk7XG4gICAgICBtYXggPSBNYXRoLm1heCh2YWx1ZSwgbWF4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF4O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVUYWcgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICBwcml2YXRlIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhZzogUmV2aXNpb25UYWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSBJTklUSUFMO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogUmV2aXNpb24ge1xuICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmxhc3RVcGRhdGVkLCB0aGlzLnRhZy52YWx1ZSgpKTtcbiAgfVxuXG4gIHVwZGF0ZSh0YWc6IFJldmlzaW9uVGFnKSB7XG4gICAgaWYgKHRhZyAhPT0gdGhpcy50YWcpIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9ICRSRVZJU0lPTjtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUc6IFJldmlzaW9uVGFnID0gbmV3IChcbiAgY2xhc3MgQ29uc3RhbnRUYWcgZXh0ZW5kcyBSZXZpc2lvblRhZyB7XG4gICAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgICAgcmV0dXJuIENPTlNUQU5UO1xuICAgIH1cbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRzogUmV2aXNpb25UYWcgPSBuZXcgKFxuICBjbGFzcyBWb2xhdGlsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgICB2YWx1ZSgpOiBSZXZpc2lvbiB7XG4gICAgICByZXR1cm4gVk9MQVRJTEU7XG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgQ1VSUkVOVF9UQUc6IERpcnR5YWJsZVRhZyA9IG5ldyAoXG4gIGNsYXNzIEN1cnJlbnRUYWcgZXh0ZW5kcyBEaXJ0eWFibGVUYWcge1xuICAgIHZhbHVlKCk6IFJldmlzaW9uIHtcbiAgICAgIHJldHVybiAkUkVWSVNJT047XG4gICAgfVxuICB9XG4pO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmVkUmVmZXJlbmNlPFQ+IGV4dGVuZHMgUmVmZXJlbmNlPFQ+LCBUYWdnZWQ8UmV2aXNpb24+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPiBleHRlbmRzIFBhdGhSZWZlcmVuY2U8VD4sIFRhZ2dlZDxSZXZpc2lvbj4ge1xuICBnZXQocHJvcGVydHk6IHN0cmluZyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlZFJlZmVyZW5jZTxUPiBpbXBsZW1lbnRzIFZlcnNpb25lZFJlZmVyZW5jZTxUPiB7XG4gIHB1YmxpYyBhYnN0cmFjdCB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IG51bGw7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBUID0gbnVsbDtcblxuICB2YWx1ZSgpOiBUIHtcbiAgICBsZXQgeyB0YWcsIGxhc3RSZXZpc2lvbiwgbGFzdFZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsYXN0UmV2aXNpb24gfHwgIXRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICBsYXN0VmFsdWUgPSB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuY29tcHV0ZSgpO1xuICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbXB1dGUoKTogVDtcblxuICBwcm90ZWN0ZWQgaW52YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IG51bGw7XG4gIH1cbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBNYXBwZXI8VCwgVT4gPSAodmFsdWU6IFQpID0+IFU7XG5cbmNsYXNzIE1hcHBlclJlZmVyZW5jZTxULCBVPiBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxVPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD47XG4gIHByaXZhdGUgbWFwcGVyOiBNYXBwZXI8VCwgVT47XG5cbiAgY29uc3RydWN0b3IocmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD4sIG1hcHBlcjogTWFwcGVyPFQsIFU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5tYXBwZXIgPSBtYXBwZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBVIHtcbiAgICBsZXQgeyByZWZlcmVuY2UsIG1hcHBlciB9ID0gdGhpcztcbiAgICByZXR1cm4gbWFwcGVyKHJlZmVyZW5jZS52YWx1ZSgpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwPFQsIFU+KHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPFQ+LCBtYXBwZXI6IE1hcHBlcjxULCBVPik6IFZlcnNpb25lZFJlZmVyZW5jZTxVPiB7XG4gIHJldHVybiBuZXcgTWFwcGVyUmVmZXJlbmNlPFQsIFU+KHJlZmVyZW5jZSwgbWFwcGVyKTtcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlQ2FjaGU8VD4gaW1wbGVtZW50cyBUYWdnZWQ8UmV2aXNpb24+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgcHJpdmF0ZSByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxUPjtcbiAgcHJpdmF0ZSBsYXN0VmFsdWU6IFQgPSBudWxsO1xuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb24gPSBudWxsO1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD4pIHtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gIH1cblxuICBwZWVrKCk6IFQge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIHJldmFsaWRhdGUoKTogVmFsaWRhdGlvbjxUPiB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgbGV0IHsgcmVmZXJlbmNlLCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG4gICAgbGV0IHRhZyA9IHJlZmVyZW5jZS50YWc7XG5cbiAgICBpZiAodGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHJldHVybiBOT1RfTU9ESUZJRUQ7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcblxuICAgIGxldCB7IGxhc3RWYWx1ZSB9ID0gdGhpcztcbiAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBpZiAodmFsdWUgPT09IGxhc3RWYWx1ZSkgcmV0dXJuIE5PVF9NT0RJRklFRDtcbiAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IFQge1xuICAgIGxldCB7IHJlZmVyZW5jZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IHRoaXMubGFzdFZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSByZWZlcmVuY2UudGFnLnZhbHVlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbjxUPiA9IFQgfCBOb3RNb2RpZmllZDtcblxuZXhwb3J0IHR5cGUgTm90TW9kaWZpZWQgPSBcImFkYjNiNzhlLTNkMjItNGU0Yi04NzdhLTYzMTdjMmM1YzE0NVwiO1xuXG5jb25zdCBOT1RfTU9ESUZJRUQ6IE5vdE1vZGlmaWVkID0gXCJhZGIzYjc4ZS0zZDIyLTRlNGItODc3YS02MzE3YzJjNWMxNDVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kaWZpZWQ8VD4odmFsdWU6IFZhbGlkYXRpb248VD4pOiB2YWx1ZSBpcyBUIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBOT1RfTU9ESUZJRUQ7XG59XG4iXX0=
-enifed('glimmer-runtime/index', ['exports', 'glimmer-runtime/lib/dom/interfaces', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/template', 'glimmer-runtime/lib/symbol-table', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/syntax/core', 'glimmer-runtime/lib/compiled/opcodes/builder', 'glimmer-runtime/lib/compiler', 'glimmer-runtime/lib/opcode-builder', 'glimmer-runtime/lib/compiled/blocks', 'glimmer-runtime/lib/dom/attribute-managers', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-runtime/lib/compiled/expressions/function', 'glimmer-runtime/lib/helpers/get-dynamic-var', 'glimmer-runtime/lib/syntax/builtins/with-dynamic-vars', 'glimmer-runtime/lib/syntax/builtins/in-element', 'glimmer-runtime/lib/vm', 'glimmer-runtime/lib/upsert', 'glimmer-runtime/lib/environment', 'glimmer-runtime/lib/partial', 'glimmer-runtime/lib/component/interfaces', 'glimmer-runtime/lib/modifier/interfaces', 'glimmer-runtime/lib/dom/helper', 'glimmer-runtime/lib/builder', 'glimmer-runtime/lib/bounds'], function (exports, _glimmerRuntimeLibDomInterfaces, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibTemplate, _glimmerRuntimeLibSymbolTable, _glimmerRuntimeLibReferences, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibCompiledOpcodesBuilder, _glimmerRuntimeLibCompiler, _glimmerRuntimeLibOpcodeBuilder, _glimmerRuntimeLibCompiledBlocks, _glimmerRuntimeLibDomAttributeManagers, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsFunction, _glimmerRuntimeLibHelpersGetDynamicVar, _glimmerRuntimeLibSyntaxBuiltinsWithDynamicVars, _glimmerRuntimeLibSyntaxBuiltinsInElement, _glimmerRuntimeLibVm, _glimmerRuntimeLibUpsert, _glimmerRuntimeLibEnvironment, _glimmerRuntimeLibPartial, _glimmerRuntimeLibComponentInterfaces, _glimmerRuntimeLibModifierInterfaces, _glimmerRuntimeLibDomHelper, _glimmerRuntimeLibBuilder, _glimmerRuntimeLibBounds) {
- 'use strict';
- exports.ATTRIBUTE_SYNTAX = _glimmerRuntimeLibSyntax.ATTRIBUTE;
- exports.StatementSyntax = _glimmerRuntimeLibSyntax.Statement;
- exports.ExpressionSyntax = _glimmerRuntimeLibSyntax.Expression;
- exports.AttributeSyntax = _glimmerRuntimeLibSyntax.Attribute;
- exports.StatementCompilationBuffer = _glimmerRuntimeLibSyntax.StatementCompilationBuffer;
- exports.SymbolLookup = _glimmerRuntimeLibSyntax.SymbolLookup;
- exports.CompileInto = _glimmerRuntimeLibSyntax.CompileInto;
- exports.isAttribute = _glimmerRuntimeLibSyntax.isAttribute;
- exports.templateFactory = _glimmerRuntimeLibTemplate.default;
- exports.TemplateFactory = _glimmerRuntimeLibTemplate.TemplateFactory;
- exports.Template = _glimmerRuntimeLibTemplate.Template;
- exports.SymbolTable = _glimmerRuntimeLibSymbolTable.default;
- exports.ConditionalReference = _glimmerRuntimeLibReferences.ConditionalReference;
- exports.NULL_REFERENCE = _glimmerRuntimeLibReferences.NULL_REFERENCE;
- exports.UNDEFINED_REFERENCE = _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE;
- exports.Templates = _glimmerRuntimeLibSyntaxCore.Templates;
- exports.OptimizedAppend = _glimmerRuntimeLibSyntaxCore.OptimizedAppend;
- exports.UnoptimizedAppend = _glimmerRuntimeLibSyntaxCore.UnoptimizedAppend;
- exports.Unknown = _glimmerRuntimeLibSyntaxCore.Unknown;
- exports.StaticAttr = _glimmerRuntimeLibSyntaxCore.StaticAttr;
- exports.DynamicAttr = _glimmerRuntimeLibSyntaxCore.DynamicAttr;
- exports.ArgsSyntax = _glimmerRuntimeLibSyntaxCore.Args;
- exports.NamedArgsSyntax = _glimmerRuntimeLibSyntaxCore.NamedArgs;
- exports.PositionalArgsSyntax = _glimmerRuntimeLibSyntaxCore.PositionalArgs;
- exports.RefSyntax = _glimmerRuntimeLibSyntaxCore.Ref;
- exports.GetNamedParameterSyntax = _glimmerRuntimeLibSyntaxCore.GetArgument;
- exports.GetSyntax = _glimmerRuntimeLibSyntaxCore.Get;
- exports.ValueSyntax = _glimmerRuntimeLibSyntaxCore.Value;
- exports.OpenElement = _glimmerRuntimeLibSyntaxCore.OpenElement;
- exports.HelperSyntax = _glimmerRuntimeLibSyntaxCore.Helper;
- exports.BlockSyntax = _glimmerRuntimeLibSyntaxCore.Block;
- exports.OpenPrimitiveElementSyntax = _glimmerRuntimeLibSyntaxCore.OpenPrimitiveElement;
- exports.CloseElementSyntax = _glimmerRuntimeLibSyntaxCore.CloseElement;
- exports.OpcodeBuilderDSL = _glimmerRuntimeLibCompiledOpcodesBuilder.default;
- exports.Compiler = _glimmerRuntimeLibCompiler.default;
- exports.Compilable = _glimmerRuntimeLibCompiler.Compilable;
- exports.CompileIntoList = _glimmerRuntimeLibCompiler.CompileIntoList;
- exports.compileLayout = _glimmerRuntimeLibCompiler.compileLayout;
- exports.ComponentBuilder = _glimmerRuntimeLibOpcodeBuilder.ComponentBuilder;
- exports.StaticDefinition = _glimmerRuntimeLibOpcodeBuilder.StaticDefinition;
- exports.DynamicDefinition = _glimmerRuntimeLibOpcodeBuilder.DynamicDefinition;
- exports.Block = _glimmerRuntimeLibCompiledBlocks.Block;
- exports.CompiledBlock = _glimmerRuntimeLibCompiledBlocks.CompiledBlock;
- exports.Layout = _glimmerRuntimeLibCompiledBlocks.Layout;
- exports.InlineBlock = _glimmerRuntimeLibCompiledBlocks.InlineBlock;
- exports.EntryPoint = _glimmerRuntimeLibCompiledBlocks.EntryPoint;
- exports.IAttributeManager = _glimmerRuntimeLibDomAttributeManagers.AttributeManager;
- exports.AttributeManager = _glimmerRuntimeLibDomAttributeManagers.AttributeManager;
- exports.PropertyManager = _glimmerRuntimeLibDomAttributeManagers.PropertyManager;
- exports.INPUT_VALUE_PROPERTY_MANAGER = _glimmerRuntimeLibDomAttributeManagers.INPUT_VALUE_PROPERTY_MANAGER;
- exports.defaultManagers = _glimmerRuntimeLibDomAttributeManagers.defaultManagers;
- exports.defaultAttributeManagers = _glimmerRuntimeLibDomAttributeManagers.defaultAttributeManagers;
- exports.defaultPropertyManagers = _glimmerRuntimeLibDomAttributeManagers.defaultPropertyManagers;
- exports.readDOMAttr = _glimmerRuntimeLibDomAttributeManagers.readDOMAttr;
- exports.normalizeTextValue = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue;
- exports.CompiledExpression = _glimmerRuntimeLibCompiledExpressions.CompiledExpression;
- exports.CompiledArgs = _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs;
- exports.CompiledNamedArgs = _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs;
- exports.CompiledPositionalArgs = _glimmerRuntimeLibCompiledExpressionsArgs.CompiledPositionalArgs;
- exports.EvaluatedArgs = _glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedArgs;
- exports.EvaluatedNamedArgs = _glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedNamedArgs;
- exports.EvaluatedPositionalArgs = _glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedPositionalArgs;
- exports.ValueReference = _glimmerRuntimeLibCompiledExpressionsValue.ValueReference;
- exports.FunctionExpression = _glimmerRuntimeLibCompiledExpressionsFunction.FunctionExpression;
- exports.getDynamicVar = _glimmerRuntimeLibHelpersGetDynamicVar.default;
- exports.WithDynamicVarsSyntax = _glimmerRuntimeLibSyntaxBuiltinsWithDynamicVars.default;
- exports.InElementSyntax = _glimmerRuntimeLibSyntaxBuiltinsInElement.default;
- exports.VM = _glimmerRuntimeLibVm.PublicVM;
- exports.UpdatingVM = _glimmerRuntimeLibVm.UpdatingVM;
- exports.RenderResult = _glimmerRuntimeLibVm.RenderResult;
- exports.SafeString = _glimmerRuntimeLibUpsert.SafeString;
- exports.isSafeString = _glimmerRuntimeLibUpsert.isSafeString;
- exports.Scope = _glimmerRuntimeLibEnvironment.Scope;
- exports.Environment = _glimmerRuntimeLibEnvironment.default;
- exports.Helper = _glimmerRuntimeLibEnvironment.Helper;
- exports.ParsedStatement = _glimmerRuntimeLibEnvironment.ParsedStatement;
- exports.DynamicScope = _glimmerRuntimeLibEnvironment.DynamicScope;
- exports.PartialDefinition = _glimmerRuntimeLibPartial.PartialDefinition;
- exports.Component = _glimmerRuntimeLibComponentInterfaces.Component;
- exports.ComponentClass = _glimmerRuntimeLibComponentInterfaces.ComponentClass;
- exports.ComponentManager = _glimmerRuntimeLibComponentInterfaces.ComponentManager;
- exports.ComponentDefinition = _glimmerRuntimeLibComponentInterfaces.ComponentDefinition;
- exports.ComponentLayoutBuilder = _glimmerRuntimeLibComponentInterfaces.ComponentLayoutBuilder;
- exports.ComponentAttrsBuilder = _glimmerRuntimeLibComponentInterfaces.ComponentAttrsBuilder;
- exports.isComponentDefinition = _glimmerRuntimeLibComponentInterfaces.isComponentDefinition;
- exports.ModifierManager = _glimmerRuntimeLibModifierInterfaces.ModifierManager;
- exports.DOMChanges = _glimmerRuntimeLibDomHelper.default;
- exports.IDOMChanges = _glimmerRuntimeLibDomHelper.DOMChanges;
- exports.DOMTreeConstruction = _glimmerRuntimeLibDomHelper.DOMTreeConstruction;
- exports.isWhitespace = _glimmerRuntimeLibDomHelper.isWhitespace;
- exports.insertHTMLBefore = _glimmerRuntimeLibDomHelper.insertHTMLBefore;
- exports.Simple = _glimmerRuntimeLibDomInterfaces;
- exports.ElementStack = _glimmerRuntimeLibBuilder.ElementStack;
- exports.ElementOperations = _glimmerRuntimeLibBuilder.ElementOperations;
- exports.Bounds = _glimmerRuntimeLibBounds.default;
- exports.ConcreteBounds = _glimmerRuntimeLibBounds.ConcreteBounds;
-});
-//# sourceMappingURL=data:application/json;base64,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aUNBQU4sTUFBTTtVQUNOLGVBQWUsaUNBQWYsZUFBZTtVQUNmLFlBQVksaUNBQVosWUFBWTtVQUlaLGlCQUFpQiw2QkFBakIsaUJBQWlCO1VBSWpCLFNBQVMseUNBQVQsU0FBUztVQUNULGNBQWMseUNBQWQsY0FBYztVQUNkLGdCQUFnQix5Q0FBaEIsZ0JBQWdCO1VBQ2hCLG1CQUFtQix5Q0FBbkIsbUJBQW1CO1VBQ25CLHNCQUFzQix5Q0FBdEIsc0JBQXNCO1VBQ3RCLHFCQUFxQix5Q0FBckIscUJBQXFCO1VBQ3JCLHFCQUFxQix5Q0FBckIscUJBQXFCO1VBSXJCLGVBQWUsd0NBQWYsZUFBZTtVQUdHLFVBQVUsK0JBQXJCLE9BQU87VUFBOEIsV0FBVywrQkFBekIsVUFBVTtVQUFpQixtQkFBbUIsK0JBQW5CLG1CQUFtQjtVQUFFLFlBQVksK0JBQVosWUFBWTtVQUFFLGdCQUFnQiwrQkFBaEIsZ0JBQWdCO1VBRXJHLE1BQU07VUFDTixZQUFZLDZCQUFaLFlBQVk7VUFBRSxpQkFBaUIsNkJBQWpCLGlCQUFpQjtVQUNwQixNQUFNLDRCQUFqQixPQUFPO1VBQVksY0FBYyw0QkFBZCxjQUFjIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgQVRUUklCVVRFIGFzIEFUVFJJQlVURV9TWU5UQVgsXG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEV4cHJlc3Npb24gYXMgRXhwcmVzc2lvblN5bnRheCxcbiAgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCxcbiAgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsXG4gIFN5bWJvbExvb2t1cCxcbiAgQ29tcGlsZUludG8sXG4gIGlzQXR0cmlidXRlXG59IGZyb20gJy4vbGliL3N5bnRheCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bWJvbFRhYmxlIH0gZnJvbSAnLi9saWIvc3ltYm9sLXRhYmxlJztcblxuZXhwb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UsIE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi9saWIvcmVmZXJlbmNlcyc7XG5cbmV4cG9ydCB7XG4gIFRlbXBsYXRlcyxcbiAgT3B0aW1pemVkQXBwZW5kLFxuICBVbm9wdGltaXplZEFwcGVuZCxcbiAgVW5rbm93bixcbiAgU3RhdGljQXR0cixcbiAgRHluYW1pY0F0dHIsXG4gIEFyZ3MgYXMgQXJnc1N5bnRheCxcbiAgTmFtZWRBcmdzIGFzIE5hbWVkQXJnc1N5bnRheCxcbiAgUG9zaXRpb25hbEFyZ3MgYXMgUG9zaXRpb25hbEFyZ3NTeW50YXgsXG4gIFJlZiBhcyBSZWZTeW50YXgsXG4gIEdldEFyZ3VtZW50IGFzIEdldE5hbWVkUGFyYW1ldGVyU3ludGF4LFxuICBHZXQgYXMgR2V0U3ludGF4LFxuICBWYWx1ZSBhcyBWYWx1ZVN5bnRheCxcbiAgT3BlbkVsZW1lbnQsXG4gIEhlbHBlciBhcyBIZWxwZXJTeW50YXgsXG4gIEJsb2NrIGFzIEJsb2NrU3ludGF4LFxuICBPcGVuUHJpbWl0aXZlRWxlbWVudCBhcyBPcGVuUHJpbWl0aXZlRWxlbWVudFN5bnRheCxcbiAgQ2xvc2VFbGVtZW50IGFzIENsb3NlRWxlbWVudFN5bnRheFxufSBmcm9tICcuL2xpYi9zeW50YXgvY29yZSc7XG5cbmV4cG9ydCB7XG4gICBkZWZhdWx0IGFzIE9wY29kZUJ1aWxkZXJEU0xcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBDb21waWxlcixcbiAgQ29tcGlsYWJsZSxcbiAgQ29tcGlsZUludG9MaXN0LFxuICBjb21waWxlTGF5b3V0XG59IGZyb20gJy4vbGliL2NvbXBpbGVyJztcblxuZXhwb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlcixcbiAgU3RhdGljRGVmaW5pdGlvbixcbiAgRHluYW1pY0RlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvb3Bjb2RlLWJ1aWxkZXInO1xuXG5leHBvcnQge1xuICBCbG9jayxcbiAgQ29tcGlsZWRCbG9jayxcbiAgTGF5b3V0LFxuICBJbmxpbmVCbG9jayxcbiAgRW50cnlQb2ludFxufSBmcm9tICcuL2xpYi9jb21waWxlZC9ibG9ja3MnO1xuXG5leHBvcnQge1xuICBBdHRyaWJ1dGVNYW5hZ2VyIGFzIElBdHRyaWJ1dGVNYW5hZ2VyLFxuICBBdHRyaWJ1dGVNYW5hZ2VyLFxuICBQcm9wZXJ0eU1hbmFnZXIsXG4gIElOUFVUX1ZBTFVFX1BST1BFUlRZX01BTkFHRVIsXG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgZGVmYXVsdEF0dHJpYnV0ZU1hbmFnZXJzLFxuICBkZWZhdWx0UHJvcGVydHlNYW5hZ2VycyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycyc7XG5cbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVRleHRWYWx1ZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEFyZ3MsXG4gIENvbXBpbGVkTmFtZWRBcmdzLFxuICBDb21waWxlZFBvc2l0aW9uYWxBcmdzLFxuICBFdmFsdWF0ZWRBcmdzLFxuICBFdmFsdWF0ZWROYW1lZEFyZ3MsXG4gIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuXG5leHBvcnQge1xuICBWYWx1ZVJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5cbmV4cG9ydCB7XG4gIEZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy9mdW5jdGlvbic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgZ2V0RHluYW1pY1ZhclxufSBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1keW5hbWljLXZhcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgV2l0aER5bmFtaWNWYXJzU3ludGF4XG59IGZyb20gJy4vbGliL3N5bnRheC9idWlsdGlucy93aXRoLWR5bmFtaWMtdmFycyc7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgSW5FbGVtZW50U3ludGF4XG59IGZyb20gJy4vbGliL3N5bnRheC9idWlsdGlucy9pbi1lbGVtZW50JztcblxuZXhwb3J0IHsgUHVibGljVk0gYXMgVk0sIFVwZGF0aW5nVk0sIFJlbmRlclJlc3VsdCB9IGZyb20gJy4vbGliL3ZtJztcblxuZXhwb3J0IHsgU2FmZVN0cmluZywgaXNTYWZlU3RyaW5nIH0gZnJvbSAnLi9saWIvdXBzZXJ0JztcblxuZXhwb3J0IHtcbiAgU2NvcGUsXG4gIGRlZmF1bHQgYXMgRW52aXJvbm1lbnQsXG4gIEhlbHBlcixcbiAgUGFyc2VkU3RhdGVtZW50LFxuICBEeW5hbWljU2NvcGUsXG59IGZyb20gJy4vbGliL2Vudmlyb25tZW50JztcblxuZXhwb3J0IHtcbiAgUGFydGlhbERlZmluaXRpb25cbn0gZnJvbSAnLi9saWIvcGFydGlhbCc7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50Q2xhc3MsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb24sXG4gIENvbXBvbmVudExheW91dEJ1aWxkZXIsXG4gIENvbXBvbmVudEF0dHJzQnVpbGRlcixcbiAgaXNDb21wb25lbnREZWZpbml0aW9uXG59IGZyb20gJy4vbGliL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbGliL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIERPTUNoYW5nZXMsIERPTUNoYW5nZXMgYXMgSURPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24sIGlzV2hpdGVzcGFjZSwgaW5zZXJ0SFRNTEJlZm9yZSB9IGZyb20gJy4vbGliL2RvbS9oZWxwZXInO1xuaW1wb3J0ICAqIGFzIFNpbXBsZSBmcm9tICcuL2xpYi9kb20vaW50ZXJmYWNlcyc7XG5leHBvcnQgeyBTaW1wbGUgfTtcbmV4cG9ydCB7IEVsZW1lbnRTdGFjaywgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2xpYi9idWlsZGVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4vbGliL2JvdW5kcyc7XG4iXX0=
-enifed("glimmer-runtime/lib/bounds", ["exports"], function (exports) {
- "use strict";
+ this.opcode('createAttrMorph', attrMorphNum, this.elementNum, attr.name, escaped, namespace);
+ this.opcode('printAttributeHook');
+ };
- exports.bounds = bounds;
- exports.single = single;
- exports.move = move;
- exports.clear = clear;
+ HydrationOpcodeCompiler.prototype.elementModifier = function (modifier) {
+ prepareHash(this, modifier.hash);
+ prepareParams(this, modifier.params);
+ preparePath(this, modifier.path);
- var Cursor = function Cursor(element, nextSibling) {
- this.element = element;
- this.nextSibling = nextSibling;
- };
-
- exports.Cursor = Cursor;
-
- var RealDOMBounds = (function () {
- function RealDOMBounds(bounds) {
- this.bounds = bounds;
- }
-
- RealDOMBounds.prototype.parentElement = function parentElement() {
- return this.bounds.parentElement();
- };
-
- RealDOMBounds.prototype.firstNode = function firstNode() {
- return this.bounds.firstNode();
- };
-
- RealDOMBounds.prototype.lastNode = function lastNode() {
- return this.bounds.lastNode();
- };
-
- return RealDOMBounds;
- })();
-
- exports.RealDOMBounds = RealDOMBounds;
-
- var ConcreteBounds = (function () {
- function ConcreteBounds(parentNode, first, last) {
- this.parentNode = parentNode;
- this.first = first;
- this.last = last;
- }
-
- ConcreteBounds.prototype.parentElement = function parentElement() {
- return this.parentNode;
- };
-
- ConcreteBounds.prototype.firstNode = function firstNode() {
- return this.first;
- };
-
- ConcreteBounds.prototype.lastNode = function lastNode() {
- return this.last;
- };
-
- return ConcreteBounds;
- })();
-
- exports.ConcreteBounds = ConcreteBounds;
-
- var SingleNodeBounds = (function () {
- function SingleNodeBounds(parentNode, node) {
- this.parentNode = parentNode;
- this.node = node;
- }
-
- SingleNodeBounds.prototype.parentElement = function parentElement() {
- return this.parentNode;
- };
-
- SingleNodeBounds.prototype.firstNode = function firstNode() {
- return this.node;
- };
-
- SingleNodeBounds.prototype.lastNode = function lastNode() {
- return this.node;
- };
-
- return SingleNodeBounds;
- })();
-
- exports.SingleNodeBounds = SingleNodeBounds;
-
- function bounds(parent, first, last) {
- return new ConcreteBounds(parent, first, last);
+ // If we have a helper in a node, and this element has not been cached, cache it
+ if (this.element !== null) {
+ shareElement(this);
}
- function single(parent, node) {
- return new SingleNodeBounds(parent, node);
- }
+ publishElementMorph(this);
+ this.opcode('printElementHook', meta(modifier));
+ };
- function move(bounds, reference) {
- var parent = bounds.parentElement();
- var first = bounds.firstNode();
- var last = bounds.lastNode();
- var node = first;
- while (node) {
- var next = node.nextSibling;
- parent.insertBefore(node, reference);
- if (node === last) return next;
- node = next;
+ HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function (childIndex, childCount, skipBoundaryNodes) {
+ if (!skipBoundaryNodes) {
+ if (this.paths.length === 0) {
+ if (childIndex === 0) {
+ this.opcode('openBoundary');
}
- return null;
- }
-
- function clear(bounds) {
- var parent = bounds.parentElement();
- var first = bounds.firstNode();
- var last = bounds.lastNode();
- var node = first;
- while (node) {
- var next = node.nextSibling;
- parent.removeChild(node);
- if (node === last) return next;
- node = next;
+ if (childIndex === childCount - 1) {
+ this.opcode('closeBoundary');
}
- return null;
+ }
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYm91bmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O1FBVUEsTUFBQSxHQUNFLFNBREYsTUFBQSxDQUNxQixPQUF1QixFQUFTLFdBQXdCLEVBQUE7QUFBeEQsWUFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQWdCO0FBQVMsWUFBQSxDQUFBLFdBQVcsR0FBWCxXQUFXLENBQWE7S0FBSTs7OztRQU9qRixhQUFBO0FBQ0UsaUJBREYsYUFBQSxDQUNzQixNQUFjLEVBQUE7QUFBZCxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVE7U0FBSTs7QUFEeEMscUJBQUEsV0FHRSxhQUFhLEdBQUEseUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBYSxDQUFDO1NBQUU7O0FBSHBFLHFCQUFBLFdBSUUsU0FBUyxHQUFBLHFCQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQVUsQ0FBQztTQUFFOztBQUp6RCxxQkFBQSxXQUtFLFFBQVEsR0FBQSxvQkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFVLENBQUM7U0FBRTs7ZUFMdkQsYUFBQTs7Ozs7UUFRQSxjQUFBO0FBQ0UsaUJBREYsY0FBQSxDQUNxQixVQUEwQixFQUFVLEtBQWtCLEVBQVUsSUFBaUIsRUFBQTtBQUFqRixnQkFBQSxDQUFBLFVBQVUsR0FBVixVQUFVLENBQWdCO0FBQVUsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFhO0FBQVUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFhO1NBQUk7O0FBRDFHLHNCQUFBLFdBR0UsYUFBYSxHQUFBLHlCQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFFOztBQUg3QyxzQkFBQSxXQUlFLFNBQVMsR0FBQSxxQkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBRTs7QUFKcEMsc0JBQUEsV0FLRSxRQUFRLEdBQUEsb0JBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUU7O2VBTGxDLGNBQUE7Ozs7O1FBUUEsZ0JBQUE7QUFJRSxpQkFKRixnQkFBQSxDQUljLFVBQTBCLEVBQUUsSUFBaUIsRUFBQTtBQUN2RCxnQkFBSSxDQUFDLFVBQVUsR0FBRyxVQUFxQixDQUFDO0FBQ3hDLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQVksQ0FBQztTQUMxQjs7QUFQSCx3QkFBQSxXQVNFLGFBQWEsR0FBQSx5QkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBRTs7QUFUN0Msd0JBQUEsV0FVRSxTQUFTLEdBQUEscUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUU7O0FBVm5DLHdCQUFBLFdBV0UsUUFBUSxHQUFBLG9CQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUFFOztlQVhsQyxnQkFBQTs7Ozs7QUFjQSxhQUFBLE1BQUEsQ0FBdUIsTUFBc0IsRUFBRSxLQUFrQixFQUFFLElBQWlCLEVBQUE7QUFDbEYsZUFBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hEOztBQUVELGFBQUEsTUFBQSxDQUF1QixNQUFzQixFQUFFLElBQWlCLEVBQUE7QUFDOUQsZUFBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMzQzs7QUFFRCxhQUFBLElBQUEsQ0FBcUIsTUFBYyxFQUFFLFNBQXNCLEVBQUE7QUFDekQsWUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3BDLFlBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUMvQixZQUFJLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFN0IsWUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBRWpCLGVBQU8sSUFBSSxFQUFFO0FBQ1gsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDNUIsa0JBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLGdCQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDL0IsZ0JBQUksR0FBRyxJQUFJLENBQUM7U0FDYjtBQUVELGVBQU8sSUFBSSxDQUFDO0tBQ2I7O0FBRUQsYUFBQSxLQUFBLENBQXNCLE1BQWMsRUFBQTtBQUNsQyxZQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDcEMsWUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQy9CLFlBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUU3QixZQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsZUFBTyxJQUFJLEVBQUU7QUFDWCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUM1QixrQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixnQkFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQy9CLGdCQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2I7QUFFRCxlQUFPLElBQUksQ0FBQztLQUNiIiwiZmlsZSI6ImJvdW5kcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBCb3VuZHMge1xuICAvLyBhIG1ldGhvZCB0byBmdXR1cmUtcHJvb2YgZm9yIHdvcm1ob2xpbmc7IG1heSBub3QgYmUgbmVlZGVkIHVsdGltYXRlbHlcbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGUuRWxlbWVudDtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZS5Ob2RlO1xuICBsYXN0Tm9kZSgpOiBTaW1wbGUuTm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEN1cnNvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgcHVibGljIG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgQm91bmRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlQm91bmRzIGV4dGVuZHMgQm91bmRzLCBEZXN0cm95YWJsZSB7fVxuXG5leHBvcnQgY2xhc3MgUmVhbERPTUJvdW5kcyBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKSBhcyBFbGVtZW50OyB9XG4gIGZpcnN0Tm9kZSgpIHsgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpIGFzIE5vZGU7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpIGFzIE5vZGU7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmNyZXRlQm91bmRzIGltcGxlbWVudHMgQm91bmRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBwcml2YXRlIGZpcnN0OiBTaW1wbGUuTm9kZSwgcHJpdmF0ZSBsYXN0OiBTaW1wbGUuTm9kZSkge31cblxuICBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5wYXJlbnROb2RlOyB9XG4gIGZpcnN0Tm9kZSgpIHsgcmV0dXJuIHRoaXMuZmlyc3Q7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLmxhc3Q7IH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbmdsZU5vZGVCb3VuZHMgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIHBhcmVudE5vZGU6IEVsZW1lbnQ7XG4gIHByaXZhdGUgbm9kZTogTm9kZTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbm9kZTogU2ltcGxlLk5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlIGFzIEVsZW1lbnQ7XG4gICAgdGhpcy5ub2RlID0gbm9kZSBhcyBOb2RlO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsgfVxuICBmaXJzdE5vZGUoKSB7IHJldHVybiB0aGlzLm5vZGU7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLm5vZGU7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5kcyhwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBmaXJzdDogU2ltcGxlLk5vZGUsIGxhc3Q6IFNpbXBsZS5Ob2RlKTogQm91bmRzIHtcbiAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpbmdsZShwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBub2RlOiBTaW1wbGUuTm9kZSk6IEJvdW5kcyB7XG4gIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZShib3VuZHM6IEJvdW5kcywgcmVmZXJlbmNlOiBTaW1wbGUuTm9kZSkge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBub2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBsZXQgbmV4dCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIGlmIChub2RlID09PSBsYXN0KSByZXR1cm4gbmV4dDtcbiAgICBub2RlID0gbmV4dDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYm91bmRzOiBCb3VuZHMpOiBTaW1wbGUuTm9kZSB7XG4gIGxldCBwYXJlbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICBsZXQgZmlyc3QgPSBib3VuZHMuZmlyc3ROb2RlKCk7XG4gIGxldCBsYXN0ID0gYm91bmRzLmxhc3ROb2RlKCk7XG5cbiAgbGV0IG5vZGUgPSBmaXJzdDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGxldCBuZXh0ID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgaWYgKG5vZGUgPT09IGxhc3QpIHJldHVybiBuZXh0O1xuICAgIG5vZGUgPSBuZXh0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
-enifed('glimmer-runtime/lib/builder', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-util', 'glimmer-runtime/lib/compiled/opcodes/dom'], function (exports, _glimmerRuntimeLibBounds, _glimmerUtil, _glimmerRuntimeLibCompiledOpcodesDom) {
- 'use strict';
- var First = (function () {
- function First(node) {
- this.node = node;
- }
+ this.comment();
+ };
- First.prototype.firstNode = function firstNode() {
- return this.node;
- };
+ HydrationOpcodeCompiler.prototype.MustacheStatement = function (mustache) {
+ prepareHash(this, mustache.hash);
+ prepareParams(this, mustache.params);
+ preparePath(this, mustache.path);
+ this.opcode('pushSexprHook', meta(mustache));
+ };
- return First;
- })();
+ HydrationOpcodeCompiler.prototype.SubExpression = function (sexpr) {
+ prepareHash(this, sexpr.hash);
+ prepareParams(this, sexpr.params);
+ preparePath(this, sexpr.path);
+ this.opcode('pushSexprHook', meta(sexpr));
+ };
- var Last = (function () {
- function Last(node) {
- this.node = node;
- }
+ HydrationOpcodeCompiler.prototype.PathExpression = function (path) {
+ this.opcode('pushGetHook', path.original, meta(path));
+ };
- Last.prototype.lastNode = function lastNode() {
- return this.node;
- };
+ HydrationOpcodeCompiler.prototype.StringLiteral = function (node) {
+ this.opcode('pushLiteral', node.value);
+ };
- return Last;
- })();
+ HydrationOpcodeCompiler.prototype.BooleanLiteral = function (node) {
+ this.opcode('pushLiteral', node.value);
+ };
- var Fragment = (function () {
- function Fragment(bounds) {
- this.bounds = bounds;
- }
+ HydrationOpcodeCompiler.prototype.NumberLiteral = function (node) {
+ this.opcode('pushLiteral', node.value);
+ };
- Fragment.prototype.parentElement = function parentElement() {
- return this.bounds.parentElement();
- };
+ HydrationOpcodeCompiler.prototype.UndefinedLiteral = function (node) {
+ this.opcode('pushLiteral', node.value);
+ };
- Fragment.prototype.firstNode = function firstNode() {
- return this.bounds.firstNode();
- };
+ HydrationOpcodeCompiler.prototype.NullLiteral = function (node) {
+ this.opcode('pushLiteral', node.value);
+ };
- Fragment.prototype.lastNode = function lastNode() {
- return this.bounds.lastNode();
- };
+ function preparePath(compiler, path) {
+ compiler.opcode('pushLiteral', path.original);
+ }
- Fragment.prototype.update = function update(bounds) {
- this.bounds = bounds;
- };
+ function prepareParams(compiler, params) {
+ for (var i = params.length - 1; i >= 0; i--) {
+ var param = params[i];
+ compiler[param.type](param);
+ }
- return Fragment;
- })();
+ compiler.opcode('prepareArray', params.length);
+ }
- exports.Fragment = Fragment;
+ function prepareHash(compiler, hash) {
+ var pairs = hash.pairs;
- var ElementStack = (function () {
- function ElementStack(env, parentNode, nextSibling) {
- this.constructing = null;
- this.operations = null;
- this.elementStack = new _glimmerUtil.Stack();
- this.nextSiblingStack = new _glimmerUtil.Stack();
- this.blockStack = new _glimmerUtil.Stack();
- this.env = env;
- this.dom = env.getAppendOperations();
- this.updateOperations = env.getDOM();
- this.element = parentNode;
- this.nextSibling = nextSibling;
- this.defaultOperations = new _glimmerRuntimeLibCompiledOpcodesDom.SimpleElementOperations(env);
- this.elementStack.push(this.element);
- this.nextSiblingStack.push(this.nextSibling);
- }
+ for (var i = pairs.length - 1; i >= 0; i--) {
+ var key = pairs[i].key;
+ var value = pairs[i].value;
- ElementStack.forInitialRender = function forInitialRender(env, parentNode, nextSibling) {
- return new ElementStack(env, parentNode, nextSibling);
- };
+ compiler[value.type](value);
+ compiler.opcode('pushLiteral', key);
+ }
- ElementStack.resume = function resume(env, tracker, nextSibling) {
- var parentNode = tracker.parentElement();
- var stack = new ElementStack(env, parentNode, nextSibling);
- stack.pushBlockTracker(tracker);
- return stack;
- };
+ compiler.opcode('prepareObject', pairs.length);
+ }
- ElementStack.prototype.block = function block() {
- return this.blockStack.current;
- };
+ function shareElement(compiler) {
+ compiler.opcode('shareElement', ++compiler.elementNum);
+ compiler.element = null; // Set element to null so we don't cache it twice
+ }
- ElementStack.prototype.popElement = function popElement() {
- var elementStack = this.elementStack;
- var nextSiblingStack = this.nextSiblingStack;
+ function publishElementMorph(compiler) {
+ var morphNum = compiler.morphNum++;
+ compiler.opcode('createElementMorph', morphNum, compiler.elementNum);
+ }
- var topElement = elementStack.pop();
- nextSiblingStack.pop();
- this.element = elementStack.current;
- this.nextSibling = nextSiblingStack.current;
- return topElement;
- };
-
- ElementStack.prototype.pushSimpleBlock = function pushSimpleBlock() {
- var tracker = new SimpleBlockTracker(this.element);
- this.pushBlockTracker(tracker);
- return tracker;
- };
-
- ElementStack.prototype.pushUpdatableBlock = function pushUpdatableBlock() {
- var tracker = new UpdatableBlockTracker(this.element);
- this.pushBlockTracker(tracker);
- return tracker;
- };
-
- ElementStack.prototype.pushBlockTracker = function pushBlockTracker(tracker) {
- var isRemote = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
-
- var current = this.blockStack.current;
- if (current !== null) {
- current.newDestroyable(tracker);
- if (!isRemote) {
- current.newBounds(tracker);
- }
- }
- this.blockStack.push(tracker);
- return tracker;
- };
-
- ElementStack.prototype.pushBlockList = function pushBlockList(list) {
- var tracker = new BlockListTracker(this.element, list);
- var current = this.blockStack.current;
- if (current !== null) {
- current.newDestroyable(tracker);
- current.newBounds(tracker);
- }
- this.blockStack.push(tracker);
- return tracker;
- };
-
- ElementStack.prototype.popBlock = function popBlock() {
- this.blockStack.current.finalize(this);
- return this.blockStack.pop();
- };
-
- ElementStack.prototype.openElement = function openElement(tag) {
- var operations = arguments.length <= 1 || arguments[1] === undefined ? this.defaultOperations : arguments[1];
-
- var element = this.dom.createElement(tag, this.element);
- this.constructing = element;
- this.operations = operations;
- return element;
- };
-
- ElementStack.prototype.flushElement = function flushElement() {
- var parent = this.element;
- var element = this.constructing;
- this.dom.insertBefore(parent, element, this.nextSibling);
- this.constructing = null;
- this.operations = null;
- this.pushElement(element);
- this.blockStack.current.openElement(element);
- };
-
- ElementStack.prototype.pushRemoteElement = function pushRemoteElement(element) {
- this.pushElement(element);
- var tracker = new RemoteBlockTracker(element);
- this.pushBlockTracker(tracker, true);
- };
-
- ElementStack.prototype.popRemoteElement = function popRemoteElement() {
- this.popBlock();
- this.popElement();
- };
-
- ElementStack.prototype.pushElement = function pushElement(element) {
- this.element = element;
- this.elementStack.push(element);
- this.nextSibling = null;
- this.nextSiblingStack.push(null);
- };
-
- ElementStack.prototype.newDestroyable = function newDestroyable(d) {
- this.blockStack.current.newDestroyable(d);
- };
-
- ElementStack.prototype.newBounds = function newBounds(bounds) {
- this.blockStack.current.newBounds(bounds);
- };
-
- ElementStack.prototype.appendText = function appendText(string) {
- var dom = this.dom;
-
- var text = dom.createTextNode(string);
- dom.insertBefore(this.element, text, this.nextSibling);
- this.blockStack.current.newNode(text);
- return text;
- };
-
- ElementStack.prototype.appendComment = function appendComment(string) {
- var dom = this.dom;
-
- var comment = dom.createComment(string);
- dom.insertBefore(this.element, comment, this.nextSibling);
- this.blockStack.current.newNode(comment);
- return comment;
- };
-
- ElementStack.prototype.setStaticAttribute = function setStaticAttribute(name, value) {
- this.operations.addStaticAttribute(this.constructing, name, value);
- };
-
- ElementStack.prototype.setStaticAttributeNS = function setStaticAttributeNS(namespace, name, value) {
- this.operations.addStaticAttributeNS(this.constructing, namespace, name, value);
- };
-
- ElementStack.prototype.setDynamicAttribute = function setDynamicAttribute(name, reference, isTrusting) {
- this.operations.addDynamicAttribute(this.constructing, name, reference, isTrusting);
- };
-
- ElementStack.prototype.setDynamicAttributeNS = function setDynamicAttributeNS(namespace, name, reference, isTrusting) {
- this.operations.addDynamicAttributeNS(this.constructing, namespace, name, reference, isTrusting);
- };
-
- ElementStack.prototype.closeElement = function closeElement() {
- this.blockStack.current.closeElement();
- this.popElement();
- };
-
- return ElementStack;
- })();
-
- exports.ElementStack = ElementStack;
-
- var SimpleBlockTracker = (function () {
- function SimpleBlockTracker(parent) {
- this.parent = parent;
- this.first = null;
- this.last = null;
- this.destroyables = null;
- this.nesting = 0;
- }
-
- SimpleBlockTracker.prototype.destroy = function destroy() {
- var destroyables = this.destroyables;
-
- if (destroyables && destroyables.length) {
- for (var i = 0; i < destroyables.length; i++) {
- destroyables[i].destroy();
- }
- }
- };
-
- SimpleBlockTracker.prototype.parentElement = function parentElement() {
- return this.parent;
- };
-
- SimpleBlockTracker.prototype.firstNode = function firstNode() {
- return this.first && this.first.firstNode();
- };
-
- SimpleBlockTracker.prototype.lastNode = function lastNode() {
- return this.last && this.last.lastNode();
- };
-
- SimpleBlockTracker.prototype.openElement = function openElement(element) {
- this.newNode(element);
- this.nesting++;
- };
-
- SimpleBlockTracker.prototype.closeElement = function closeElement() {
- this.nesting--;
- };
-
- SimpleBlockTracker.prototype.newNode = function newNode(node) {
- if (this.nesting !== 0) return;
- if (!this.first) {
- this.first = new First(node);
- }
- this.last = new Last(node);
- };
-
- SimpleBlockTracker.prototype.newBounds = function newBounds(bounds) {
- if (this.nesting !== 0) return;
- if (!this.first) {
- this.first = bounds;
- }
- this.last = bounds;
- };
-
- SimpleBlockTracker.prototype.newDestroyable = function newDestroyable(d) {
- this.destroyables = this.destroyables || [];
- this.destroyables.push(d);
- };
-
- SimpleBlockTracker.prototype.finalize = function finalize(stack) {
- if (!this.first) {
- stack.appendComment('');
- }
- };
-
- return SimpleBlockTracker;
- })();
-
- exports.SimpleBlockTracker = SimpleBlockTracker;
-
- var RemoteBlockTracker = (function (_SimpleBlockTracker) {
- babelHelpers.inherits(RemoteBlockTracker, _SimpleBlockTracker);
-
- function RemoteBlockTracker() {
- _SimpleBlockTracker.apply(this, arguments);
- }
-
- RemoteBlockTracker.prototype.destroy = function destroy() {
- _SimpleBlockTracker.prototype.destroy.call(this);
- _glimmerRuntimeLibBounds.clear(this);
- };
-
- return RemoteBlockTracker;
- })(SimpleBlockTracker);
-
- var UpdatableBlockTracker = (function (_SimpleBlockTracker2) {
- babelHelpers.inherits(UpdatableBlockTracker, _SimpleBlockTracker2);
-
- function UpdatableBlockTracker() {
- _SimpleBlockTracker2.apply(this, arguments);
- }
-
- UpdatableBlockTracker.prototype.reset = function reset(env) {
- var destroyables = this.destroyables;
-
- if (destroyables && destroyables.length) {
- for (var i = 0; i < destroyables.length; i++) {
- env.didDestroy(destroyables[i]);
- }
- }
- var nextSibling = _glimmerRuntimeLibBounds.clear(this);
- this.destroyables = null;
- this.first = null;
- this.last = null;
- return nextSibling;
- };
-
- return UpdatableBlockTracker;
- })(SimpleBlockTracker);
-
- exports.UpdatableBlockTracker = UpdatableBlockTracker;
-
- var BlockListTracker = (function () {
- function BlockListTracker(parent, boundList) {
- this.parent = parent;
- this.boundList = boundList;
- this.parent = parent;
- this.boundList = boundList;
- }
-
- BlockListTracker.prototype.destroy = function destroy() {
- this.boundList.forEachNode(function (node) {
- return node.destroy();
- });
- };
-
- BlockListTracker.prototype.parentElement = function parentElement() {
- return this.parent;
- };
-
- BlockListTracker.prototype.firstNode = function firstNode() {
- return this.boundList.head().firstNode();
- };
-
- BlockListTracker.prototype.lastNode = function lastNode() {
- return this.boundList.tail().lastNode();
- };
-
- BlockListTracker.prototype.openElement = function openElement(element) {
- _glimmerUtil.assert(false, 'Cannot openElement directly inside a block list');
- };
-
- BlockListTracker.prototype.closeElement = function closeElement() {
- _glimmerUtil.assert(false, 'Cannot closeElement directly inside a block list');
- };
-
- BlockListTracker.prototype.newNode = function newNode(node) {
- _glimmerUtil.assert(false, 'Cannot create a new node directly inside a block list');
- };
-
- BlockListTracker.prototype.newBounds = function newBounds(bounds) {};
-
- BlockListTracker.prototype.newDestroyable = function newDestroyable(d) {};
-
- BlockListTracker.prototype.finalize = function finalize(stack) {};
-
- return BlockListTracker;
- })();
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUE0QkEsS0FBQTtBQUNFLGlCQURGLEtBQUEsQ0FDc0IsSUFBVSxFQUFBO0FBQVYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFNO1NBQUs7O0FBRHJDLGFBQUEsV0FHRSxTQUFTLEdBQUEscUJBQUE7QUFDUCxtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCOztlQUxILEtBQUE7OztRQVFBLElBQUE7QUFDRSxpQkFERixJQUFBLENBQ3NCLElBQVUsRUFBQTtBQUFWLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBTTtTQUFLOztBQURyQyxZQUFBLFdBR0UsUUFBUSxHQUFBLG9CQUFBO0FBQ04sbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjs7ZUFMSCxJQUFBOzs7UUFnQkEsUUFBQTtBQUdFLGlCQUhGLFFBQUEsQ0FHYyxNQUFjLEVBQUE7QUFDeEIsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCOztBQUxILGdCQUFBLFdBT0UsYUFBYSxHQUFBLHlCQUFBO0FBQ1gsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUNwQzs7QUFUSCxnQkFBQSxXQVdFLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDaEM7O0FBYkgsZ0JBQUEsV0FlRSxRQUFRLEdBQUEsb0JBQUE7QUFDTixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQy9COztBQWpCSCxnQkFBQSxXQW1CRSxNQUFNLEdBQUEsZ0JBQUMsTUFBYyxFQUFBO0FBQ25CLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7ZUFyQkgsUUFBQTs7Ozs7UUF3QkEsWUFBQTtBQTRCRSxpQkE1QkYsWUFBQSxDQTRCYyxHQUFn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RUFBQSxFQUM1Qjs7QUF0Q0gsd0JBQUEsV0F3Q0UsUUFBUSxHQUFBLGtCQUFDLEtBQW1CLEVBQUEsRUFDM0I7O2VBekNILGdCQUFBIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm91bmRzLCB7IEN1cnNvciwgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5pbXBvcnQgeyBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi9kb20vaGVscGVyJztcblxuaW1wb3J0IHsgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgYXNzZXJ0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcblxuaW1wb3J0IHtcbiAgUGF0aFJlZmVyZW5jZVxufSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5cbmltcG9ydCB7XG4gIFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zXG59IGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuXG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZS5Ob2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhc3ROb2RlIHtcbiAgbGFzdE5vZGUoKTogU2ltcGxlLk5vZGU7XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiBOb2RlKSB7IH1cblxuICBsYXN0Tm9kZSgpOiBOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk7XG4gIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTtcbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKTtcbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSk7XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudCBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIHByaXZhdGUgYm91bmRzOiBCb3VuZHM7XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlLk5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZS5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIHVwZGF0ZShib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50U3RhY2sgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBwdWJsaWMgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlO1xuICBwdWJsaWMgZG9tOiBET01UcmVlQ29uc3RydWN0aW9uO1xuICBwdWJsaWMgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHVibGljIGNvbnN0cnVjdGluZzogU2ltcGxlLkVsZW1lbnQgPSBudWxsO1xuICBwdWJsaWMgb3BlcmF0aW9uczogRWxlbWVudE9wZXJhdGlvbnMgPSBudWxsO1xuICBwdWJsaWMgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQ7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIHByaXZhdGUgZWxlbWVudFN0YWNrID0gbmV3IFN0YWNrPFNpbXBsZS5FbGVtZW50PigpO1xuICBwcml2YXRlIG5leHRTaWJsaW5nU3RhY2sgPSBuZXcgU3RhY2s8U2ltcGxlLk5vZGU+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxUcmFja2VyPigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdE9wZXJhdGlvbnM6IEVsZW1lbnRPcGVyYXRpb25zO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogU2ltcGxlLk5vZGUpIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyByZXN1bWUoZW52OiBFbnZpcm9ubWVudCwgdHJhY2tlcjogVHJhY2tlciwgbmV4dFNpYmxpbmc6IE5vZGUpIHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRyYWNrZXIucGFyZW50RWxlbWVudCgpO1xuXG4gICAgbGV0IHN0YWNrID0gbmV3IEVsZW1lbnRTdGFjayhlbnYsIHBhcmVudE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICBzdGFjay5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIpO1xuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgcGFyZW50Tm9kZTogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZU9wZXJhdGlvbnMgPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5lbGVtZW50ID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG5cbiAgICB0aGlzLmRlZmF1bHRPcGVyYXRpb25zID0gbmV3IFNpbXBsZUVsZW1lbnRPcGVyYXRpb25zKGVudik7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2godGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBibG9jaygpOiBUcmFja2VyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwb3BFbGVtZW50KCkge1xuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgbmV4dFNpYmxpbmdTdGFjayB9ICA9IHRoaXM7XG5cbiAgICBsZXQgdG9wRWxlbWVudCA9IGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBuZXh0U2libGluZ1N0YWNrLnBvcCgpO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudFN0YWNrLmN1cnJlbnQ7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nU3RhY2suY3VycmVudDtcblxuICAgIHJldHVybiB0b3BFbGVtZW50O1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFNpbXBsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hVcGRhdGFibGVCbG9jaygpOiBVcGRhdGFibGVUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBVcGRhdGFibGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwcml2YXRlIHB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcjogVHJhY2tlciwgaXNSZW1vdGUgPSBmYWxzZSkge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcblxuICAgICAgaWYgKCFpc1JlbW90ZSkge1xuICAgICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hCbG9ja0xpc3QobGlzdDogTGlua2VkTGlzdDxMaW5rZWRMaXN0Tm9kZSAmIEJvdW5kcyAmIERlc3Ryb3lhYmxlPik6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IEJsb2NrTGlzdFRyYWNrZXIodGhpcy5lbGVtZW50LCBsaXN0KTtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGN1cnJlbnQubmV3RGVzdHJveWFibGUodHJhY2tlcik7XG4gICAgICBjdXJyZW50Lm5ld0JvdW5kcyh0cmFja2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrU3RhY2sucHVzaCh0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHBvcEJsb2NrKCk6IFRyYWNrZXIge1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LmZpbmFsaXplKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KHRhZzogc3RyaW5nLCBvcGVyYXRpb25zID0gdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5jb25zdHJ1Y3RpbmcgPSBlbGVtZW50O1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IG9wZXJhdGlvbnM7XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICBsZXQgcGFyZW50ICA9IHRoaXMuZWxlbWVudDtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuY29uc3RydWN0aW5nO1xuXG4gICAgdGhpcy5kb20uaW5zZXJ0QmVmb3JlKHBhcmVudCwgZWxlbWVudCwgdGhpcy5uZXh0U2libGluZyk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IG51bGw7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gbnVsbDtcblxuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQub3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBwdXNoUmVtb3RlRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCkge1xuICAgIHRoaXMucHVzaEVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBsZXQgdHJhY2tlciA9IG5ldyBSZW1vdGVCbG9ja1RyYWNrZXIoZWxlbWVudCk7XG4gICAgdGhpcy5wdXNoQmxvY2tUcmFja2VyKHRyYWNrZXIsIHRydWUpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLnBvcEJsb2NrKCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2gobnVsbCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQubmV3Qm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IGNvbW1lbnQgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBjb21tZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdOb2RlKGNvbW1lbnQpO1xuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMub3BlcmF0aW9ucy5hZGRTdGF0aWNBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wZXJhdGlvbnMuYWRkU3RhdGljQXR0cmlidXRlTlModGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcGVyYXRpb25zLmFkZER5bmFtaWNBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZXJhdGlvbnMuYWRkRHluYW1pY0F0dHJpYnV0ZU5TKHRoaXMuY29uc3RydWN0aW5nLCBuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQuY2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIGV4dGVuZHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk7XG4gIGNsb3NlRWxlbWVudCgpO1xuICBuZXdOb2RlKG5vZGU6IFNpbXBsZS5Ob2RlKTtcbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKTtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpO1xuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IEZpcnN0Tm9kZSA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBMYXN0Tm9kZSA9IG51bGw7XG4gIHByb3RlY3RlZCBkZXN0cm95YWJsZXM6IERlc3Ryb3lhYmxlW10gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50KXt9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZGVzdHJveWFibGVzW2ldLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXJzdCAmJiB0aGlzLmZpcnN0LmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdCAmJiB0aGlzLmxhc3QubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICB0aGlzLm5ld05vZGUoZWxlbWVudCk7XG4gICAgdGhpcy5uZXN0aW5nKys7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5uZXN0aW5nLS07XG4gIH1cblxuICBuZXdOb2RlKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBuZXcgRmlyc3Qobm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gbmV3IExhc3Qobm9kZSk7XG4gIH1cblxuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpIHtcbiAgICBpZiAodGhpcy5uZXN0aW5nICE9PSAwKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBib3VuZHM7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0ID0gYm91bmRzO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IHRoaXMuZGVzdHJveWFibGVzIHx8IFtdO1xuICAgIHRoaXMuZGVzdHJveWFibGVzLnB1c2goZCk7XG4gIH1cblxuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKSB7XG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICBzdGFjay5hcHBlbmRDb21tZW50KCcnKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUmVtb3RlQmxvY2tUcmFja2VyIGV4dGVuZHMgU2ltcGxlQmxvY2tUcmFja2VyIHtcbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBjbGVhcih0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0YWJsZVRyYWNrZXIgZXh0ZW5kcyBUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCk7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgZXh0ZW5kcyBTaW1wbGVCbG9ja1RyYWNrZXIgaW1wbGVtZW50cyBVcGRhdGFibGVUcmFja2VyIHtcbiAgcmVzZXQoZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBlbnYuZGlkRGVzdHJveShkZXN0cm95YWJsZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKHRoaXMpO1xuXG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSBudWxsO1xuICAgIHRoaXMuZmlyc3QgPSBudWxsO1xuICAgIHRoaXMubGFzdCA9IG51bGw7XG5cbiAgICByZXR1cm4gbmV4dFNpYmxpbmc7XG4gIH1cbn1cblxuY2xhc3MgQmxvY2tMaXN0VHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU2ltcGxlLkVsZW1lbnQsIHByaXZhdGUgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRMaXN0LmZvckVhY2hOb2RlKG5vZGUgPT4gbm9kZS5kZXN0cm95KCkpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRMaXN0LmhlYWQoKS5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kTGlzdC50YWlsKCkubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3Qgb3BlbkVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjbG9zZUVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Tm9kZShub2RlOiBOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compat/inner-html-fix', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/dom/helper'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibDomHelper) {
- 'use strict';
-
- exports.domChanges = domChanges;
- exports.treeConstruction = treeConstruction;
-
- var innerHTMLWrapper = {
- colgroup: { depth: 2, before: '<table><colgroup>', after: '</colgroup></table>' },
- table: { depth: 1, before: '<table>', after: '</table>' },
- tbody: { depth: 2, before: '<table><tbody>', after: '</tbody></table>' },
- tfoot: { depth: 2, before: '<table><tfoot>', after: '</tfoot></table>' },
- thead: { depth: 2, before: '<table><thead>', after: '</thead></table>' },
- tr: { depth: 3, before: '<table><tbody><tr>', after: '</tr></tbody></table>' }
- };
- // Patch: innerHTML Fix
- // Browsers: IE9
- // Reason: IE9 don't allow us to set innerHTML on col, colgroup, frameset,
- // html, style, table, tbody, tfoot, thead, title, tr.
- // Fix: Wrap the innerHTML we are about to set in its parents, apply the
- // wrapped innerHTML on a div, then move the unwrapped nodes into the
- // target position.
-
- function domChanges(document, DOMChangesClass) {
- if (!document) return DOMChangesClass;
- if (!shouldApplyFix(document)) {
- return DOMChangesClass;
- }
- var div = document.createElement('div');
- return (function (_DOMChangesClass) {
- babelHelpers.inherits(DOMChangesWithInnerHTMLFix, _DOMChangesClass);
-
- function DOMChangesWithInnerHTMLFix() {
- _DOMChangesClass.apply(this, arguments);
- }
-
- DOMChangesWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) {
- if (html === null || html === '') {
- return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- }
- var parentTag = parent.tagName.toLowerCase();
- var wrapper = innerHTMLWrapper[parentTag];
- if (wrapper === undefined) {
- return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- }
- return fixInnerHTML(parent, wrapper, div, html, nextSibling);
- };
-
- return DOMChangesWithInnerHTMLFix;
- })(DOMChangesClass);
+ function distributeMorphs(morphs, opcodes) {
+ if (morphs.length === 0) {
+ return;
}
- function treeConstruction(document, DOMTreeConstructionClass) {
- if (!document) return DOMTreeConstructionClass;
- if (!shouldApplyFix(document)) {
- return DOMTreeConstructionClass;
- }
- var div = document.createElement('div');
- return (function (_DOMTreeConstructionClass) {
- babelHelpers.inherits(DOMTreeConstructionWithInnerHTMLFix, _DOMTreeConstructionClass);
-
- function DOMTreeConstructionWithInnerHTMLFix() {
- _DOMTreeConstructionClass.apply(this, arguments);
- }
-
- DOMTreeConstructionWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
- if (html === null || html === '') {
- return _DOMTreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- }
- var parentTag = parent.tagName.toLowerCase();
- var wrapper = innerHTMLWrapper[parentTag];
- if (wrapper === undefined) {
- return _DOMTreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- }
- return fixInnerHTML(parent, wrapper, div, html, reference);
- };
-
- return DOMTreeConstructionWithInnerHTMLFix;
- })(DOMTreeConstructionClass);
+ // Splice morphs after the most recent shareParent/consumeParent.
+ var o;
+ for (o = opcodes.length - 1; o >= 0; --o) {
+ var opcode = opcodes[o][0];
+ if (opcode === 'shareElement' || opcode === 'consumeParent' || opcode === 'popParent') {
+ break;
+ }
}
- function fixInnerHTML(parent, wrapper, div, html, reference) {
- var wrappedHtml = wrapper.before + html + wrapper.after;
- div.innerHTML = wrappedHtml;
- var parentNode = div;
- for (var i = 0; i < wrapper.depth; i++) {
- parentNode = parentNode.childNodes[0];
- }
-
- var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(parentNode, parent, reference);
-
- var first = _moveNodesBefore[0];
- var last = _moveNodesBefore[1];
-
- return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last);
+ var spliceArgs = [o + 1, 0];
+ for (var i = 0; i < morphs.length; ++i) {
+ spliceArgs.push(['createMorph', morphs[i].slice()]);
}
- function shouldApplyFix(document) {
- var table = document.createElement('table');
- try {
- table.innerHTML = '<tbody></tbody>';
- } catch (e) {} finally {
- if (table.childNodes.length !== 0) {
- // It worked as expected, no fix required
- return false;
- }
- }
- return true;
- }
+ opcodes.splice.apply(opcodes, spliceArgs);
+ morphs.length = 0;
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L2lubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLFFBQUksZ0JBQWdCLEdBQUc7QUFDckIsZ0JBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtBQUNqRixhQUFLLEVBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtBQUM1RCxhQUFLLEVBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7QUFDM0UsYUFBSyxFQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO0FBQzNFLGFBQUssRUFBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtBQUMzRSxVQUFFLEVBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7S0FDckYsQ0FBQzs7Ozs7Ozs7O0FBU0YsYUFBQSxVQUFBLENBQTJCLFFBQWtCLEVBQUUsZUFBa0MsRUFBQTtBQUMvRSxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sZUFBZSxDQUFDO0FBRXRDLFlBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDN0IsbUJBQU8sZUFBZSxDQUFDO1NBQ3hCO0FBRUQsWUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV4QztrQ0FBTywwQkFBQTs7cUJBQUEsMEJBQUE7Ozs7QUFBQSxzQ0FB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QUFBLGNBQUEsQ0FBd0IsUUFBUSxFQUFBO0FBQzlCLFlBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUMsWUFBSTtBQUNGLGlCQUFLLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1NBQ3BDLENBQUEsT0FBTyxDQUFDLEVBQUUsRUFDWCxTQUFTO0FBQ1IsZ0JBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOztBQUVqQyx1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYiIsImZpbGUiOiJpbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5cbmludGVyZmFjZSBXcmFwcGVyIHtcbiAgZGVwdGg6IG51bWJlcjtcbiAgYmVmb3JlOiBzdHJpbmc7XG4gIGFmdGVyOiBzdHJpbmc7XG59XG5cbmxldCBpbm5lckhUTUxXcmFwcGVyID0ge1xuICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gIHRhYmxlOiAgICB7IGRlcHRoOiAxLCBiZWZvcmU6ICc8dGFibGU+JywgYWZ0ZXI6ICc8L3RhYmxlPicgfSxcbiAgdGJvZHk6ICAgIHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+JywgYWZ0ZXI6ICc8L3Rib2R5PjwvdGFibGU+JyB9LFxuICB0Zm9vdDogICAgeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gIHRoZWFkOiAgICB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRoZWFkPicsIGFmdGVyOiAnPC90aGVhZD48L3RhYmxlPicgfSxcbiAgdHI6ICAgICAgIHsgZGVwdGg6IDMsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+PHRyPicsIGFmdGVyOiAnPC90cj48L3Rib2R5PjwvdGFibGU+JyB9XG59O1xuXG4vLyBQYXRjaDogICAgaW5uZXJIVE1MIEZpeFxuLy8gQnJvd3NlcnM6IElFOVxuLy8gUmVhc29uOiAgIElFOSBkb24ndCBhbGxvdyB1cyB0byBzZXQgaW5uZXJIVE1MIG9uIGNvbCwgY29sZ3JvdXAsIGZyYW1lc2V0LFxuLy8gICAgICAgICAgIGh0bWwsIHN0eWxlLCB0YWJsZSwgdGJvZHksIHRmb290LCB0aGVhZCwgdGl0bGUsIHRyLlxuLy8gRml4OiAgICAgIFdyYXAgdGhlIGlubmVySFRNTCB3ZSBhcmUgYWJvdXQgdG8gc2V0IGluIGl0cyBwYXJlbnRzLCBhcHBseSB0aGVcbi8vICAgICAgICAgICB3cmFwcGVkIGlubmVySFRNTCBvbiBhIGRpdiwgdGhlbiBtb3ZlIHRoZSB1bndyYXBwZWQgbm9kZXMgaW50byB0aGVcbi8vICAgICAgICAgICB0YXJnZXQgcG9zaXRpb24uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogRG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzczogdHlwZW9mIERPTUNoYW5nZXMpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuXG4gICAgICBpZih3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhJbm5lckhUTUwocGFyZW50LCB3cmFwcGVyLCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBEb2N1bWVudCwgRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbik6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSkge1xuICAgIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gIH1cblxuICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgcmV0dXJuIGNsYXNzIERPTVRyZWVDb25zdHJ1Y3Rpb25XaXRoSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcblxuICAgICAgaWYod3JhcHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeElubmVySFRNTChwYXJlbnQ6IEhUTUxFbGVtZW50LCB3cmFwcGVyOiBXcmFwcGVyLCBkaXY6IEhUTUxFbGVtZW50LCBodG1sOiBzdHJpbmcsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gIGxldCB3cmFwcGVkSHRtbCA9IHdyYXBwZXIuYmVmb3JlICsgaHRtbCArIHdyYXBwZXIuYWZ0ZXI7XG5cbiAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuXG4gIGxldCBwYXJlbnROb2RlOiBOb2RlID0gZGl2O1xuXG4gIGZvciAobGV0IGk9MDsgaTx3cmFwcGVyLmRlcHRoOyBpKyspIHtcbiAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzWzBdO1xuICB9XG5cbiAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUocGFyZW50Tm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICBsZXQgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuICB0cnkge1xuICAgIHRhYmxlLmlubmVySFRNTCA9ICc8dGJvZHk+PC90Ym9keT4nO1xuICB9IGNhdGNoIChlKSB7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19
-enifed('glimmer-runtime/lib/compat/svg-inner-html-fix', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/dom/helper'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibDomHelper) {
- 'use strict';
+enifed('htmlbars-compiler/template-compiler', ['exports', 'htmlbars-compiler/fragment-opcode-compiler', 'htmlbars-compiler/fragment-javascript-compiler', 'htmlbars-compiler/hydration-opcode-compiler', 'htmlbars-compiler/hydration-javascript-compiler', 'htmlbars-compiler/template-visitor', 'htmlbars-compiler/utils', 'htmlbars-util/quoting', 'htmlbars-util/array-utils'], function (exports, _htmlbarsCompilerFragmentOpcodeCompiler, _htmlbarsCompilerFragmentJavascriptCompiler, _htmlbarsCompilerHydrationOpcodeCompiler, _htmlbarsCompilerHydrationJavascriptCompiler, _htmlbarsCompilerTemplateVisitor, _htmlbarsCompilerUtils, _htmlbarsUtilQuoting, _htmlbarsUtilArrayUtils) {
+ 'use strict';
- exports.domChanges = domChanges;
- exports.treeConstruction = treeConstruction;
+ function TemplateCompiler(options) {
+ this.options = options || {};
+ this.consumerBuildMeta = this.options.buildMeta || function () {};
+ this.fragmentOpcodeCompiler = new _htmlbarsCompilerFragmentOpcodeCompiler.default();
+ this.fragmentCompiler = new _htmlbarsCompilerFragmentJavascriptCompiler.default();
+ this.hydrationOpcodeCompiler = new _htmlbarsCompilerHydrationOpcodeCompiler.default();
+ this.hydrationCompiler = new _htmlbarsCompilerHydrationJavascriptCompiler.default();
+ this.templates = [];
+ this.childTemplates = [];
+ }
- var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
- // Patch: insertAdjacentHTML on SVG Fix
- // Browsers: Safari, IE, Edge, Firefox ~33-34
- // Reason: insertAdjacentHTML does not exist on SVG elements in Safari. It is
- // present but throws an exception on IE and Edge. Old versions of
- // Firefox create nodes in the incorrect namespace.
- // Fix: Since IE and Edge silently fail to create SVG nodes using
- // innerHTML, and because Firefox may create nodes in the incorrect
- // namespace using innerHTML on SVG elements, an HTML-string wrapping
- // approach is used. A pre/post SVG tag is added to the string, then
- // that whole string is added to a div. The created nodes are plucked
- // out and applied to the target location on DOM.
+ exports.default = TemplateCompiler;
- function domChanges(document, DOMChangesClass, svgNamespace) {
- if (!document) return DOMChangesClass;
- if (!shouldApplyFix(document, svgNamespace)) {
- return DOMChangesClass;
- }
- var div = document.createElement('div');
- return (function (_DOMChangesClass) {
- babelHelpers.inherits(DOMChangesWithSVGInnerHTMLFix, _DOMChangesClass);
+ TemplateCompiler.prototype.compile = function (ast) {
+ var templateVisitor = new _htmlbarsCompilerTemplateVisitor.default();
+ templateVisitor.visit(ast);
- function DOMChangesWithSVGInnerHTMLFix() {
- _DOMChangesClass.apply(this, arguments);
- }
+ _htmlbarsCompilerUtils.processOpcodes(this, templateVisitor.actions);
- DOMChangesWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) {
- if (html === null || html === '') {
- return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- }
- if (parent.namespaceURI !== svgNamespace) {
- return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- }
- return fixSVG(parent, div, html, nextSibling);
- };
+ return this.templates.pop();
+ };
- return DOMChangesWithSVGInnerHTMLFix;
- })(DOMChangesClass);
- }
+ TemplateCompiler.prototype.startProgram = function (program, childTemplateCount, blankChildTextNodes) {
+ this.fragmentOpcodeCompiler.startProgram(program, childTemplateCount, blankChildTextNodes);
+ this.hydrationOpcodeCompiler.startProgram(program, childTemplateCount, blankChildTextNodes);
- function treeConstruction(document, TreeConstructionClass, svgNamespace) {
- if (!document) return TreeConstructionClass;
- if (!shouldApplyFix(document, svgNamespace)) {
- return TreeConstructionClass;
- }
- var div = document.createElement('div');
- return (function (_TreeConstructionClass) {
- babelHelpers.inherits(TreeConstructionWithSVGInnerHTMLFix, _TreeConstructionClass);
-
- function TreeConstructionWithSVGInnerHTMLFix() {
- _TreeConstructionClass.apply(this, arguments);
- }
-
- TreeConstructionWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
- if (html === null || html === '') {
- return _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- }
- if (parent.namespaceURI !== svgNamespace) {
- return _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- }
- return fixSVG(parent, div, html, reference);
- };
-
- return TreeConstructionWithSVGInnerHTMLFix;
- })(TreeConstructionClass);
+ this.childTemplates.length = 0;
+ while (childTemplateCount--) {
+ this.childTemplates.push(this.templates.pop());
}
+ };
- function fixSVG(parent, div, html, reference) {
- // IE, Edge: also do not correctly support using `innerHTML` on SVG
- // namespaced elements. So here a wrapper is used.
- var wrappedHtml = '<svg>' + html + '</svg>';
- div.innerHTML = wrappedHtml;
+ TemplateCompiler.prototype.insertBoundary = function (first) {
+ this.hydrationOpcodeCompiler.insertBoundary(first);
+ };
- var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(div.firstChild, parent, reference);
-
- var first = _moveNodesBefore[0];
- var last = _moveNodesBefore[1];
-
- return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last);
+ TemplateCompiler.prototype.getChildTemplateVars = function (indent) {
+ var vars = '';
+ if (this.childTemplates) {
+ for (var i = 0; i < this.childTemplates.length; i++) {
+ vars += indent + 'var child' + i + ' = ' + this.childTemplates[i] + ';\n';
+ }
}
- function shouldApplyFix(document, svgNamespace) {
- var svg = document.createElementNS(svgNamespace, 'svg');
- try {
- svg['insertAdjacentHTML']('beforeEnd', '<circle></circle>');
- } catch (e) {} finally {
- // FF: Old versions will create a node in the wrong namespace
- if (svg.childNodes.length === 1 && svg.firstChild.namespaceURI === SVG_NAMESPACE) {
- // The test worked as expected, no fix required
- return false;
- }
- svg = null;
- return true;
- }
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxRQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWFuRCxhQUFBLFVBQUEsQ0FBMkIsUUFBa0IsRUFBRSxlQUFrQyxFQUFFLFlBQW9CLEVBQUE7QUFDckcsWUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLGVBQWUsQ0FBQztBQUV0QyxZQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRTtBQUMzQyxtQkFBTyxlQUFlLENBQUM7U0FDeEI7QUFFRCxZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXhDO2tDQUFPLDZCQUFBOztxQkFBQSw2QkFBQTs7OztBQUFBLHlDQUFBLFdBQ0wsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxXQUFpQixFQUFFLElBQVksRUFBQTtBQUNuRSxvQkFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7QUFDaEMsMkJBQU8sMkJBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUMxRDtBQUVELG9CQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFO0FBQ3hDLDJCQUFPLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7QUFFRCx1QkFBTyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDL0M7O21CQVhJLDZCQUFBO1dBQTRDLGVBQWUsRUFZaEU7S0FDSDs7QUFFRCxhQUFBLGdCQUFBLENBQWlDLFFBQWtCLEVBQUUscUJBQWlELEVBQUUsWUFBb0IsRUFBQTtBQUMxSCxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8scUJBQXFCLENBQUM7QUFFNUMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEVBQUU7QUFDM0MsbUJBQU8scUJBQXFCLENBQUM7U0FDOUI7QUFFRCxZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXhDO2tDQUFPLG1DQUFBOztxQkFBQSxtQ0FBQTs7OztBQUFBLCtDQUFBLFdBQ0wsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxJQUFZLEVBQUcsU0FBZSxFQUFBO0FBQ2xFLG9CQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUNoQywyQkFBTyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3hEO0FBRUQsb0JBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUU7QUFDeEMsMkJBQU8saUNBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUN4RDtBQUVELHVCQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzthQUM3Qzs7bUJBWEksbUNBQUE7V0FBa0QscUJBQXFCLEVBWTVFO0tBQ0g7O0FBRUQsYUFBQSxNQUFBLENBQWdCLE1BQWUsRUFBRSxHQUFnQixFQUFFLElBQVksRUFBRSxTQUFlLEVBQUE7OztBQUc5RSxZQUFJLFdBQVcsR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUU1QyxXQUFHLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQzs7K0JBRVIsNEJBdEViLGVBQWUsQ0FzRWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDOztZQUFqRSxLQUFLO1lBQUUsSUFBSTs7QUFDaEIsZUFBTyw2QkF4RVEsY0FBYyxDQXdFSCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hEO0FBRUQsYUFBQSxjQUFBLENBQXdCLFFBQVEsRUFBRSxZQUFZLEVBQUE7QUFDNUMsWUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFeEQsWUFBSTtBQUNGLGVBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQzVELENBQUEsT0FBTyxDQUFDLEVBQUUsRUFHWCxTQUFTOztBQUVSLGdCQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7O0FBRWhGLHVCQUFPLEtBQUssQ0FBQzthQUNkO0FBQ0QsZUFBRyxHQUFHLElBQUksQ0FBQztBQUVYLG1CQUFPLElBQUksQ0FBQztTQUNiO0tBQ0YiLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUsIERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbi8vIFBhdGNoOiAgICBpbnNlcnRBZGphY2VudEhUTUwgb24gU1ZHIEZpeFxuLy8gQnJvd3NlcnM6IFNhZmFyaSwgSUUsIEVkZ2UsIEZpcmVmb3ggfjMzLTM0XG4vLyBSZWFzb246ICAgaW5zZXJ0QWRqYWNlbnRIVE1MIGRvZXMgbm90IGV4aXN0IG9uIFNWRyBlbGVtZW50cyBpbiBTYWZhcmkuIEl0IGlzXG4vLyAgICAgICAgICAgcHJlc2VudCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBJRSBhbmQgRWRnZS4gT2xkIHZlcnNpb25zIG9mXG4vLyAgICAgICAgICAgRmlyZWZveCBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdCBuYW1lc3BhY2UuXG4vLyBGaXg6ICAgICAgU2luY2UgSUUgYW5kIEVkZ2Ugc2lsZW50bHkgZmFpbCB0byBjcmVhdGUgU1ZHIG5vZGVzIHVzaW5nXG4vLyAgICAgICAgICAgaW5uZXJIVE1MLCBhbmQgYmVjYXVzZSBGaXJlZm94IG1heSBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdFxuLy8gICAgICAgICAgIG5hbWVzcGFjZSB1c2luZyBpbm5lckhUTUwgb24gU1ZHIGVsZW1lbnRzLCBhbiBIVE1MLXN0cmluZyB3cmFwcGluZ1xuLy8gICAgICAgICAgIGFwcHJvYWNoIGlzIHVzZWQuIEEgcHJlL3Bvc3QgU1ZHIHRhZyBpcyBhZGRlZCB0byB0aGUgc3RyaW5nLCB0aGVuXG4vLyAgICAgICAgICAgdGhhdCB3aG9sZSBzdHJpbmcgaXMgYWRkZWQgdG8gYSBkaXYuIFRoZSBjcmVhdGVkIG5vZGVzIGFyZSBwbHVja2VkXG4vLyAgICAgICAgICAgb3V0IGFuZCBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24gb24gRE9NLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQ6IERvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IHN0cmluZyk6IHR5cGVvZiBET01DaGFuZ2VzIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgbmV4dFNpYmxpbmc6IE5vZGUsIGh0bWw6IHN0cmluZyk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQ6IERvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IHN0cmluZyk6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgVHJlZUNvbnN0cnVjdGlvbldpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBUcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCAgcmVmZXJlbmNlOiBOb2RlLCk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudDogRWxlbWVudCwgZGl2OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gIC8vIG5hbWVzcGFjZWQgZWxlbWVudHMuIFNvIGhlcmUgYSB3cmFwcGVyIGlzIHVzZWQuXG4gIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5cbiAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuXG4gIGxldCBbZmlyc3QsIGxhc3RdID0gbW92ZU5vZGVzQmVmb3JlKGRpdi5maXJzdENoaWxkLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpIHtcbiAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcblxuICB0cnkge1xuICAgIHN2Z1snaW5zZXJ0QWRqYWNlbnRIVE1MJ10oJ2JlZm9yZUVuZCcsICc8Y2lyY2xlPjwvY2lyY2xlPicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSUUsIEVkZ2U6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyB1bnN1cHBvcnRlZCBvbiBTVkdcbiAgICAvLyBTYWZhcmk6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyBub3QgcHJlc2VudCBvbiBTVkdcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBGRjogT2xkIHZlcnNpb25zIHdpbGwgY3JlYXRlIGEgbm9kZSBpbiB0aGUgd3JvbmcgbmFtZXNwYWNlXG4gICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBzdmcuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgIC8vIFRoZSB0ZXN0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHN2ZyA9IG51bGw7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compat/text-node-merging-fix', ['exports'], function (exports) {
- // Patch: Adjacent text node merging fix
- // Browsers: IE, Edge, Firefox w/o inspector open
- // Reason: These browsers will merge adjacent text nodes. For exmaple given
- // <div>Hello</div> with div.insertAdjacentHTML(' world') browsers
- // with proper behavior will populate div.childNodes with two items.
- // These browsers will populate it with one merged node instead.
- // Fix: Add these nodes to a wrapper element, then iterate the childNodes
- // of that wrapper and move the nodes to their target location. Note
- // that potential SVG bugs will have been handled before this fix.
- // Note that this fix must only apply to the previous text node, as
- // the base implementation of `insertHTMLBefore` already handles
- // following text nodes correctly.
- 'use strict';
+ return vars;
+ };
- exports.domChanges = domChanges;
- exports.treeConstruction = treeConstruction;
-
- function domChanges(document, DOMChangesClass) {
- if (!document) return DOMChangesClass;
- if (!shouldApplyFix(document)) {
- return DOMChangesClass;
- }
- return (function (_DOMChangesClass) {
- babelHelpers.inherits(DOMChangesWithTextNodeMergingFix, _DOMChangesClass);
-
- function DOMChangesWithTextNodeMergingFix(document) {
- _DOMChangesClass.call(this, document);
- this.uselessComment = document.createComment('');
- }
-
- DOMChangesWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) {
- if (html === null) {
- return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- }
- var didSetUselessComment = false;
- var nextPrevious = nextSibling ? nextSibling.previousSibling : parent.lastChild;
- if (nextPrevious && nextPrevious instanceof Text) {
- didSetUselessComment = true;
- parent.insertBefore(this.uselessComment, nextSibling);
- }
- var bounds = _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
- if (didSetUselessComment) {
- parent.removeChild(this.uselessComment);
- }
- return bounds;
- };
-
- return DOMChangesWithTextNodeMergingFix;
- })(DOMChangesClass);
+ TemplateCompiler.prototype.getHydrationHooks = function (indent, hooks) {
+ var hookVars = [];
+ for (var hook in hooks) {
+ hookVars.push(hook + ' = hooks.' + hook);
}
- function treeConstruction(document, TreeConstructionClass) {
- if (!document) return TreeConstructionClass;
- if (!shouldApplyFix(document)) {
- return TreeConstructionClass;
- }
- return (function (_TreeConstructionClass) {
- babelHelpers.inherits(TreeConstructionWithTextNodeMergingFix, _TreeConstructionClass);
-
- function TreeConstructionWithTextNodeMergingFix(document) {
- _TreeConstructionClass.call(this, document);
- this.uselessComment = this.createComment('');
- }
-
- TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
- if (html === null) {
- return _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- }
- var didSetUselessComment = false;
- var nextPrevious = reference ? reference.previousSibling : parent.lastChild;
- if (nextPrevious && nextPrevious instanceof Text) {
- didSetUselessComment = true;
- parent.insertBefore(this.uselessComment, reference);
- }
- var bounds = _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference);
- if (didSetUselessComment) {
- parent.removeChild(this.uselessComment);
- }
- return bounds;
- };
-
- return TreeConstructionWithTextNodeMergingFix;
- })(TreeConstructionClass);
+ if (hookVars.length > 0) {
+ return indent + 'var hooks = env.hooks, ' + hookVars.join(', ') + ';\n';
+ } else {
+ return '';
}
+ };
- function shouldApplyFix(document) {
- var mergingTextDiv = document.createElement('div');
- mergingTextDiv.innerHTML = 'first';
- mergingTextDiv.insertAdjacentHTML('beforeEnd', 'second');
- if (mergingTextDiv.childNodes.length === 2) {
- mergingTextDiv = null;
- // It worked as expected, no fix required
- return false;
- }
- mergingTextDiv = null;
- return true;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxhQUFBLFVBQUEsQ0FBMkIsUUFBa0IsRUFBRSxlQUFrQyxFQUFBO0FBQy9FLFlBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxlQUFlLENBQUM7QUFFdEMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM3QixtQkFBTyxlQUFlLENBQUM7U0FDeEI7QUFFRDtrQ0FBTyxnQ0FBQTs7QUFHTCxxQkFISyxnQ0FBQSxDQUdPLFFBQVEsRUFBQTtBQUNsQiw0Q0FBTSxRQUFRLENBQUMsQ0FBQztBQUNoQixvQkFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xEOztBQU5JLDRDQUFBLFdBUUwsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxXQUFpQixFQUFFLElBQVksRUFBQTtBQUNuRSxvQkFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ2pCLDJCQUFPLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7QUFFRCxvQkFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFFakMsb0JBQUksWUFBWSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDaEYsb0JBQUksWUFBWSxJQUFJLFlBQVksWUFBWSxJQUFJLEVBQUU7QUFDaEQsd0NBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQzVCLDBCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQ3ZEO0FBRUQsb0JBQUksTUFBTSxHQUFHLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUUvRCxvQkFBSSxvQkFBb0IsRUFBRTtBQUN4QiwwQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pDO0FBRUQsdUJBQU8sTUFBTSxDQUFDO2FBQ2Y7O21CQTVCSSxnQ0FBQTtXQUErQyxlQUFlLEVBNkJuRTtLQUNIOztBQUVELGFBQUEsZ0JBQUEsQ0FBaUMsUUFBa0IsRUFBRSxxQkFBaUQsRUFBQTtBQUNwRyxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8scUJBQXFCLENBQUM7QUFFNUMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM3QixtQkFBTyxxQkFBcUIsQ0FBQztTQUM5QjtBQUVEO2tDQUFPLHNDQUFBOztBQUdMLHFCQUhLLHNDQUFBLENBR08sUUFBUSxFQUFBO0FBQ2xCLGtEQUFNLFFBQVEsQ0FBQyxDQUFDO0FBQ2hCLG9CQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFZLENBQUM7YUFDekQ7O0FBTkksa0RBQUEsV0FRTCxnQkFBZ0IsR0FBQSwwQkFBQyxNQUFtQixFQUFFLElBQVksRUFBRSxTQUFlLEVBQUE7QUFDakUsb0JBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNqQiwyQkFBTyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3hEO0FBRUQsb0JBQUksb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBRWpDLG9CQUFJLFlBQVksR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBQzVFLG9CQUFJLFlBQVksSUFBSSxZQUFZLFlBQVksSUFBSSxFQUFFO0FBQ2hELHdDQUFvQixHQUFHLElBQUksQ0FBQztBQUM1QiwwQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUNyRDtBQUVELG9CQUFJLE1BQU0sR0FBRyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFN0Qsb0JBQUksb0JBQW9CLEVBQUU7QUFDeEIsMEJBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUN6QztBQUVELHVCQUFPLE1BQU0sQ0FBQzthQUNmOzttQkE1Qkksc0NBQUE7V0FBcUQscUJBQXFCLEVBNkIvRTtLQUNIOztBQUVELGFBQUEsY0FBQSxDQUF3QixRQUFRLEVBQUE7QUFDOUIsWUFBSSxjQUFjLEdBQWlCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFakUsc0JBQWMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQ25DLHNCQUFjLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXpELFlBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzFDLDBCQUFjLEdBQUcsSUFBSSxDQUFDOztBQUV0QixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUVELHNCQUFjLEdBQUcsSUFBSSxDQUFDO0FBRXRCLGVBQU8sSUFBSSxDQUFDO0tBQ2IiLCJmaWxlIjoidGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuLy8gUGF0Y2g6ICAgIEFkamFjZW50IHRleHQgbm9kZSBtZXJnaW5nIGZpeFxuLy8gQnJvd3NlcnM6IElFLCBFZGdlLCBGaXJlZm94IHcvbyBpbnNwZWN0b3Igb3BlblxuLy8gUmVhc29uOiAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlcy4gRm9yIGV4bWFwbGUgZ2l2ZW5cbi8vICAgICAgICAgICA8ZGl2PkhlbGxvPC9kaXY+IHdpdGggZGl2Lmluc2VydEFkamFjZW50SFRNTCgnIHdvcmxkJykgYnJvd3NlcnNcbi8vICAgICAgICAgICB3aXRoIHByb3BlciBiZWhhdmlvciB3aWxsIHBvcHVsYXRlIGRpdi5jaGlsZE5vZGVzIHdpdGggdHdvIGl0ZW1zLlxuLy8gICAgICAgICAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgcG9wdWxhdGUgaXQgd2l0aCBvbmUgbWVyZ2VkIG5vZGUgaW5zdGVhZC5cbi8vIEZpeDogICAgICBBZGQgdGhlc2Ugbm9kZXMgdG8gYSB3cmFwcGVyIGVsZW1lbnQsIHRoZW4gaXRlcmF0ZSB0aGUgY2hpbGROb2Rlc1xuLy8gICAgICAgICAgIG9mIHRoYXQgd3JhcHBlciBhbmQgbW92ZSB0aGUgbm9kZXMgdG8gdGhlaXIgdGFyZ2V0IGxvY2F0aW9uLiBOb3RlXG4vLyAgICAgICAgICAgdGhhdCBwb3RlbnRpYWwgU1ZHIGJ1Z3Mgd2lsbCBoYXZlIGJlZW4gaGFuZGxlZCBiZWZvcmUgdGhpcyBmaXguXG4vLyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZml4IG11c3Qgb25seSBhcHBseSB0byB0aGUgcHJldmlvdXMgdGV4dCBub2RlLCBhc1xuLy8gICAgICAgICAgIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBpbnNlcnRIVE1MQmVmb3JlYCBhbHJlYWR5IGhhbmRsZXNcbi8vICAgICAgICAgICBmb2xsb3dpbmcgdGV4dCBub2RlcyBjb3JyZWN0bHkuXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogRG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzczogdHlwZW9mIERPTUNoYW5nZXMpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoVGV4dE5vZGVNZXJnaW5nRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBwcml2YXRlIHVzZWxlc3NDb21tZW50OiBDb21tZW50O1xuXG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgIHN1cGVyKGRvY3VtZW50KTtcbiAgICAgIHRoaXMudXNlbGVzc0NvbW1lbnQgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKTtcbiAgICB9XG5cbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuXG4gICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLnVzZWxlc3NDb21tZW50LCBuZXh0U2libGluZyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuXG4gICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudXNlbGVzc0NvbW1lbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYm91bmRzO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQ6IERvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uKTogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24ge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgcHJpdmF0ZSB1c2VsZXNzQ29tbWVudDogQ29tbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKSBhcyBDb21tZW50O1xuICAgIH1cblxuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSBmYWxzZTtcblxuICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLnVzZWxlc3NDb21tZW50LCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYm91bmRzID0gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBib3VuZHM7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICBsZXQgbWVyZ2luZ1RleHREaXYgPSA8SFRNTEVsZW1lbnQ+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIG1lcmdpbmdUZXh0RGl2LmlubmVySFRNTCA9ICdmaXJzdCc7XG4gIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuXG4gIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgIG1lcmdpbmdUZXh0RGl2ID0gbnVsbDtcbiAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG1lcmdpbmdUZXh0RGl2ID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/compiled/blocks', ['exports', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/compiler'], function (exports, _glimmerRuntimeLibUtils, _glimmerRuntimeLibCompiler) {
- 'use strict';
+ TemplateCompiler.prototype.endProgram = function (program, programDepth) {
+ this.fragmentOpcodeCompiler.endProgram(program);
+ this.hydrationOpcodeCompiler.endProgram(program);
- var CompiledBlock = function CompiledBlock(ops, symbols) {
- this.ops = ops;
- this.symbols = symbols;
+ var indent = _htmlbarsUtilQuoting.repeat(" ", programDepth);
+ var options = {
+ indent: indent + " "
};
- exports.CompiledBlock = CompiledBlock;
+ // function build(dom) { return fragment; }
+ var fragmentProgram = this.fragmentCompiler.compile(this.fragmentOpcodeCompiler.opcodes, options);
- var Block = function Block(program, symbolTable) {
- this.program = program;
- this.symbolTable = symbolTable;
- this.compiled = null;
- };
+ // function hydrate(fragment) { return mustaches; }
+ var hydrationPrograms = this.hydrationCompiler.compile(this.hydrationOpcodeCompiler.opcodes, options);
- exports.Block = Block;
+ var blockParams = program.blockParams || [];
- var InlineBlock = (function (_Block) {
- babelHelpers.inherits(InlineBlock, _Block);
+ var templateSignature = 'context, rootNode, env, options';
+ if (blockParams.length > 0) {
+ templateSignature += ', blockArguments';
+ }
- function InlineBlock(program, symbolTable) {
- var locals = arguments.length <= 2 || arguments[2] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[2];
+ var statements = _htmlbarsUtilArrayUtils.map(hydrationPrograms.statements, function (s) {
+ return indent + ' ' + JSON.stringify(s);
+ }).join(",\n");
- _Block.call(this, program, symbolTable);
- this.locals = locals;
- }
+ var locals = JSON.stringify(hydrationPrograms.locals);
- InlineBlock.prototype.hasPositionalParameters = function hasPositionalParameters() {
- return !!this.locals.length;
- };
+ var templates = _htmlbarsUtilArrayUtils.map(this.childTemplates, function (_, index) {
+ return 'child' + index;
+ }).join(', ');
- InlineBlock.prototype.compile = function compile(env) {
- var compiled = this.compiled;
- if (compiled) return compiled;
- var ops = new _glimmerRuntimeLibCompiler.InlineBlockCompiler(this, env).compile();
- return this.compiled = new CompiledBlock(ops, this.symbolTable.size);
- };
+ var template = '(function() {\n' + this.getChildTemplateVars(indent + ' ') + indent + ' return {\n' + this.buildMeta(indent + ' ', program) + indent + ' isEmpty: ' + (program.body.length ? 'false' : 'true') + ',\n' + indent + ' arity: ' + blockParams.length + ',\n' + indent + ' cachedFragment: null,\n' + indent + ' hasRendered: false,\n' + indent + ' buildFragment: ' + fragmentProgram + ',\n' + indent + ' buildRenderNodes: ' + hydrationPrograms.createMorphsProgram + ',\n' + indent + ' statements: [\n' + statements + '\n' + indent + ' ],\n' + indent + ' locals: ' + locals + ',\n' + indent + ' templates: [' + templates + ']\n' + indent + ' };\n' + indent + '}())';
- return InlineBlock;
- })(Block);
+ this.templates.push(template);
+ };
- exports.InlineBlock = InlineBlock;
+ TemplateCompiler.prototype.buildMeta = function (indent, program) {
+ var meta = this.consumerBuildMeta(program) || {};
- var PartialBlock = (function (_InlineBlock) {
- babelHelpers.inherits(PartialBlock, _InlineBlock);
+ var head = indent + 'meta: ';
+ var stringMeta = JSON.stringify(meta, null, 2).replace(/\n/g, '\n' + indent);
+ var tail = ',\n';
- function PartialBlock() {
- _InlineBlock.apply(this, arguments);
- }
+ return head + stringMeta + tail;
+ };
- return PartialBlock;
- })(InlineBlock);
+ TemplateCompiler.prototype.openElement = function (element, i, l, r, c, b) {
+ this.fragmentOpcodeCompiler.openElement(element, i, l, r, c, b);
+ this.hydrationOpcodeCompiler.openElement(element, i, l, r, c, b);
+ };
- exports.PartialBlock = PartialBlock;
+ TemplateCompiler.prototype.closeElement = function (element, i, l, r) {
+ this.fragmentOpcodeCompiler.closeElement(element, i, l, r);
+ this.hydrationOpcodeCompiler.closeElement(element, i, l, r);
+ };
- var TopLevelTemplate = (function (_Block2) {
- babelHelpers.inherits(TopLevelTemplate, _Block2);
+ TemplateCompiler.prototype.component = function (component, i, l, s) {
+ this.fragmentOpcodeCompiler.component(component, i, l, s);
+ this.hydrationOpcodeCompiler.component(component, i, l, s);
+ };
- function TopLevelTemplate() {
- _Block2.apply(this, arguments);
- }
+ TemplateCompiler.prototype.block = function (block, i, l, s) {
+ this.fragmentOpcodeCompiler.block(block, i, l, s);
+ this.hydrationOpcodeCompiler.block(block, i, l, s);
+ };
- return TopLevelTemplate;
- })(Block);
+ TemplateCompiler.prototype.text = function (string, i, l, r) {
+ this.fragmentOpcodeCompiler.text(string, i, l, r);
+ this.hydrationOpcodeCompiler.text(string, i, l, r);
+ };
- exports.TopLevelTemplate = TopLevelTemplate;
+ TemplateCompiler.prototype.comment = function (string, i, l, r) {
+ this.fragmentOpcodeCompiler.comment(string, i, l, r);
+ this.hydrationOpcodeCompiler.comment(string, i, l, r);
+ };
- var EntryPoint = (function (_TopLevelTemplate) {
- babelHelpers.inherits(EntryPoint, _TopLevelTemplate);
+ TemplateCompiler.prototype.mustache = function (mustache, i, l, s) {
+ this.fragmentOpcodeCompiler.mustache(mustache, i, l, s);
+ this.hydrationOpcodeCompiler.mustache(mustache, i, l, s);
+ };
- function EntryPoint() {
- _TopLevelTemplate.apply(this, arguments);
- }
-
- EntryPoint.prototype.compile = function compile(env) {
- var compiled = this.compiled;
- if (compiled) return compiled;
- var ops = new _glimmerRuntimeLibCompiler.EntryPointCompiler(this, env).compile();
- return this.compiled = new CompiledBlock(ops, this.symbolTable.size);
- };
-
- return EntryPoint;
- })(TopLevelTemplate);
-
- exports.EntryPoint = EntryPoint;
-
- var Layout = (function (_TopLevelTemplate2) {
- babelHelpers.inherits(Layout, _TopLevelTemplate2);
-
- function Layout(program, symbolTable, named, yields, hasPartials) {
- _TopLevelTemplate2.call(this, program, symbolTable);
- this.named = named;
- this.yields = yields;
- this.hasPartials = hasPartials;
- this.hasNamedParameters = !!this.named.length;
- this.hasYields = !!this.yields.length;
- ;
- }
-
- return Layout;
- })(TopLevelTemplate);
-
- exports.Layout = Layout;
+ TemplateCompiler.prototype.setNamespace = function (namespace) {
+ this.fragmentOpcodeCompiler.setNamespace(namespace);
+ };
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvYmxvY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVdBLGFBQUEsR0FJRSxTQUpGLGFBQUEsQ0FJYyxHQUFVLEVBQUUsT0FBZSxFQUFBO0FBQ3JDLFlBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsWUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7S0FDeEI7Ozs7UUFHSCxLQUFBLEdBR0UsU0FIRixLQUFBLENBR3FCLE9BQWdCLEVBQVMsV0FBd0IsRUFBQTtBQUFqRCxZQUFBLENBQUEsT0FBTyxHQUFQLE9BQU8sQ0FBUztBQUFTLFlBQUEsQ0FBQSxXQUFXLEdBQVgsV0FBVyxDQUFhO0FBRjFELFlBQUEsQ0FBQSxRQUFRLEdBQWtCLElBQUksQ0FBQztLQUUrQjs7OztRQUcxRSxXQUFBOzhCQUFBLFdBQUE7O0FBQ0UsaUJBREYsV0FBQSxDQUNjLE9BQWdCLEVBQUUsV0FBd0IsRUFBdUM7Z0JBQTlCLE1BQU0saUZBeEI5RCxXQUFXOztBQXlCaEIsOEJBQU0sT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRGlDLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBd0I7U0FFNUY7O0FBSEgsbUJBQUEsV0FLRSx1QkFBdUIsR0FBQSxtQ0FBQTtBQUNyQixtQkFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7O0FBUEgsbUJBQUEsV0FTRSxPQUFPLEdBQUEsaUJBQUMsR0FBZ0IsRUFBQTtBQUN0QixnQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixnQkFBSSxRQUFRLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFFOUIsZ0JBQUksR0FBRyxHQUFHLCtCQWhDWixtQkFBbUIsQ0FnQ2lCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2RCxtQkFBTyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RFOztlQWZILFdBQUE7T0FBaUMsS0FBSzs7OztRQWtCdEMsWUFBQTs4QkFBQSxZQUFBOztpQkFBQSxZQUFBOzs7O2VBQUEsWUFBQTtPQUFrQyxXQUFXOzs7O1FBRzdDLGdCQUFBOzhCQUFBLGdCQUFBOztpQkFBQSxnQkFBQTs7OztlQUFBLGdCQUFBO09BQStDLEtBQUs7Ozs7UUFHcEQsVUFBQTs4QkFBQSxVQUFBOztpQkFBQSxVQUFBOzs7O0FBQUEsa0JBQUEsV0FDRSxPQUFPLEdBQUEsaUJBQUMsR0FBZ0IsRUFBQTtBQUN0QixnQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixnQkFBSSxRQUFRLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFFOUIsZ0JBQUksR0FBRyxHQUFHLCtCQWpEWixrQkFBa0IsQ0FpRGlCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0RCxtQkFBTyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RFOztlQVBILFVBQUE7T0FBZ0MsZ0JBQWdCOzs7O1FBVWhELE1BQUE7OEJBQUEsTUFBQTs7QUFHRSxpQkFIRixNQUFBLENBR2MsT0FBZ0IsRUFBRSxXQUF3QixFQUFTLEtBQWUsRUFBUyxNQUFnQixFQUFTLFdBQW9CLEVBQUE7QUFDbEksMENBQU0sT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRGlDLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBVTtBQUFTLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBVTtBQUFTLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBUztBQUVsSSxnQkFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUM5QyxnQkFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFBQSxhQUFDO1NBQ3hDOztlQVBILE1BQUE7T0FBNEIsZ0JBQWdCIiwiZmlsZSI6ImJsb2Nrcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBQcm9ncmFtIH0gZnJvbSAnLi4vc3ludGF4JztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRW50cnlQb2ludENvbXBpbGVyLFxuICBJbmxpbmVCbG9ja0NvbXBpbGVyXG59IGZyb20gJy4uL2NvbXBpbGVyJztcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVkQmxvY2sge1xuICBwdWJsaWMgb3BzOiBPcFNlcTtcbiAgcHVibGljIHN5bWJvbHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzeW1ib2xzOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLnN5bWJvbHMgPSBzeW1ib2xzO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9jayB7XG4gIHByb3RlY3RlZCBjb21waWxlZDogQ29tcGlsZWRCbG9jayA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb2dyYW06IFByb2dyYW0sIHB1YmxpYyBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgY29uc3RydWN0b3IocHJvZ3JhbTogUHJvZ3JhbSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgbG9jYWxzOiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgc3VwZXIocHJvZ3JhbSwgc3ltYm9sVGFibGUpO1xuICB9XG5cbiAgaGFzUG9zaXRpb25hbFBhcmFtZXRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sb2NhbHMubGVuZ3RoO1xuICB9XG5cbiAgY29tcGlsZShlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRCbG9jayB7XG4gICAgbGV0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlZDtcbiAgICBpZiAoY29tcGlsZWQpIHJldHVybiBjb21waWxlZDtcblxuICAgIGxldCBvcHMgPSBuZXcgSW5saW5lQmxvY2tDb21waWxlcih0aGlzLCBlbnYpLmNvbXBpbGUoKTtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlZCA9IG5ldyBDb21waWxlZEJsb2NrKG9wcywgdGhpcy5zeW1ib2xUYWJsZS5zaXplKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydGlhbEJsb2NrIGV4dGVuZHMgSW5saW5lQmxvY2sge1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9wTGV2ZWxUZW1wbGF0ZSBleHRlbmRzIEJsb2NrIHtcbn1cblxuZXhwb3J0IGNsYXNzIEVudHJ5UG9pbnQgZXh0ZW5kcyBUb3BMZXZlbFRlbXBsYXRlIHtcbiAgY29tcGlsZShlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlZDtcbiAgICBpZiAoY29tcGlsZWQpIHJldHVybiBjb21waWxlZDtcblxuICAgIGxldCBvcHMgPSBuZXcgRW50cnlQb2ludENvbXBpbGVyKHRoaXMsIGVudikuY29tcGlsZSgpO1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVkID0gbmV3IENvbXBpbGVkQmxvY2sob3BzLCB0aGlzLnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXlvdXQgZXh0ZW5kcyBUb3BMZXZlbFRlbXBsYXRlIHtcbiAgcHVibGljIGhhc05hbWVkUGFyYW1ldGVyczogYm9vbGVhbjtcbiAgcHVibGljIGhhc1lpZWxkczogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IocHJvZ3JhbTogUHJvZ3JhbSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgbmFtZWQ6IHN0cmluZ1tdLCBwdWJsaWMgeWllbGRzOiBzdHJpbmdbXSwgcHVibGljIGhhc1BhcnRpYWxzOiBib29sZWFuKSB7XG4gICAgc3VwZXIocHJvZ3JhbSwgc3ltYm9sVGFibGUpO1xuICAgIHRoaXMuaGFzTmFtZWRQYXJhbWV0ZXJzID0gISF0aGlzLm5hbWVkLmxlbmd0aDtcbiAgICB0aGlzLmhhc1lpZWxkcyA9ICEhdGhpcy55aWVsZHMubGVuZ3RoOztcbiAgfVxufVxuIl19
-enifed("glimmer-runtime/lib/compiled/expressions", ["exports"], function (exports) {
- "use strict";
+enifed('htmlbars-compiler/template-visitor', ['exports'], function (exports) {
+ 'use strict';
- var CompiledExpression = (function () {
- function CompiledExpression() {}
+ var push = Array.prototype.push;
- CompiledExpression.prototype.toJSON = function toJSON() {
- return "UNIMPL: " + this.type.toUpperCase();
- };
+ function Frame() {
+ this.parentNode = null;
+ this.children = null;
+ this.childIndex = null;
+ this.childCount = null;
+ this.childTemplateCount = 0;
+ this.mustacheCount = 0;
+ this.actions = [];
+ }
- return CompiledExpression;
- })();
+ /**
+ * Takes in an AST and outputs a list of actions to be consumed
+ * by a compiler. For example, the template
+ *
+ * foo{{bar}}<div>baz</div>
+ *
+ * produces the actions
+ *
+ * [['startProgram', [programNode, 0]],
+ * ['text', [textNode, 0, 3]],
+ * ['mustache', [mustacheNode, 1, 3]],
+ * ['openElement', [elementNode, 2, 3, 0]],
+ * ['text', [textNode, 0, 1]],
+ * ['closeElement', [elementNode, 2, 3],
+ * ['endProgram', [programNode]]]
+ *
+ * This visitor walks the AST depth first and backwards. As
+ * a result the bottom-most child template will appear at the
+ * top of the actions list whereas the root template will appear
+ * at the bottom of the list. For example,
+ *
+ * <div>{{#if}}foo{{else}}bar<b></b>{{/if}}</div>
+ *
+ * produces the actions
+ *
+ * [['startProgram', [programNode, 0]],
+ * ['text', [textNode, 0, 2, 0]],
+ * ['openElement', [elementNode, 1, 2, 0]],
+ * ['closeElement', [elementNode, 1, 2]],
+ * ['endProgram', [programNode]],
+ * ['startProgram', [programNode, 0]],
+ * ['text', [textNode, 0, 1]],
+ * ['endProgram', [programNode]],
+ * ['startProgram', [programNode, 2]],
+ * ['openElement', [elementNode, 0, 1, 1]],
+ * ['block', [blockNode, 0, 1]],
+ * ['closeElement', [elementNode, 0, 1]],
+ * ['endProgram', [programNode]]]
+ *
+ * The state of the traversal is maintained by a stack of frames.
+ * Whenever a node with children is entered (either a ProgramNode
+ * or an ElementNode) a frame is pushed onto the stack. The frame
+ * contains information about the state of the traversal of that
+ * node. For example,
+ *
+ * - index of the current child node being visited
+ * - the number of mustaches contained within its child nodes
+ * - the list of actions generated by its child nodes
+ */
- exports.CompiledExpression = CompiledExpression;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBR0Esa0JBQUE7aUJBQUEsa0JBQUE7O0FBQUEsMEJBQUEsV0FJRSxNQUFNLEdBQUEsa0JBQUE7QUFDSixnQ0FBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBRztTQUM3Qzs7ZUFOSCxrQkFBQSIsImZpbGUiOiJleHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gIHR5cGU6IHN0cmluZztcbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxUPjtcblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFVOSU1QTDogJHt0aGlzLnR5cGUudG9VcHBlckNhc2UoKX1gO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/expressions/args', ['exports', 'glimmer-runtime/lib/compiled/expressions/positional-args', 'glimmer-runtime/lib/compiled/expressions/named-args', 'glimmer-reference'], function (exports, _glimmerRuntimeLibCompiledExpressionsPositionalArgs, _glimmerRuntimeLibCompiledExpressionsNamedArgs, _glimmerReference) {
- 'use strict';
+ function TemplateVisitor() {
+ this.frameStack = [];
+ this.actions = [];
+ this.programDepth = -1;
+ }
- var CompiledArgs = (function () {
- function CompiledArgs(positional, named) {
- this.positional = positional;
- this.named = named;
- }
+ // Traversal methods
- CompiledArgs.create = function create(positional, named) {
- if (positional === _glimmerRuntimeLibCompiledExpressionsPositionalArgs.COMPILED_EMPTY_POSITIONAL_ARGS && named === _glimmerRuntimeLibCompiledExpressionsNamedArgs.COMPILED_EMPTY_NAMED_ARGS) {
- return this.empty();
- } else {
- return new this(positional, named);
- }
- };
+ TemplateVisitor.prototype.visit = function (node) {
+ this[node.type](node);
+ };
- CompiledArgs.empty = function empty() {
- return COMPILED_EMPTY_ARGS;
- };
+ TemplateVisitor.prototype.Program = function (program) {
+ this.programDepth++;
- CompiledArgs.prototype.evaluate = function evaluate(vm) {
- return EvaluatedArgs.create(this.positional.evaluate(vm), this.named.evaluate(vm));
- };
+ var parentFrame = this.getCurrentFrame();
+ var programFrame = this.pushFrame();
- return CompiledArgs;
- })();
+ programFrame.parentNode = program;
+ programFrame.children = program.body;
+ programFrame.childCount = program.body.length;
+ programFrame.blankChildTextNodes = [];
+ programFrame.actions.push(['endProgram', [program, this.programDepth]]);
- exports.CompiledArgs = CompiledArgs;
+ for (var i = program.body.length - 1; i >= 0; i--) {
+ programFrame.childIndex = i;
+ this.visit(program.body[i]);
+ }
- var COMPILED_EMPTY_ARGS = new ((function (_CompiledArgs) {
- babelHelpers.inherits(_class, _CompiledArgs);
+ programFrame.actions.push(['startProgram', [program, programFrame.childTemplateCount, programFrame.blankChildTextNodes.reverse()]]);
+ this.popFrame();
- function _class() {
- _CompiledArgs.call(this, _glimmerRuntimeLibCompiledExpressionsPositionalArgs.COMPILED_EMPTY_POSITIONAL_ARGS, _glimmerRuntimeLibCompiledExpressionsNamedArgs.COMPILED_EMPTY_NAMED_ARGS);
- }
+ this.programDepth--;
- _class.prototype.evaluate = function evaluate(vm) {
- return EMPTY_EVALUATED_ARGS;
- };
+ // Push the completed template into the global actions list
+ if (parentFrame) {
+ parentFrame.childTemplateCount++;
+ }
+ push.apply(this.actions, programFrame.actions.reverse());
+ };
- return _class;
- })(CompiledArgs))();
+ TemplateVisitor.prototype.ElementNode = function (element) {
+ var parentFrame = this.getCurrentFrame();
+ var elementFrame = this.pushFrame();
- var EvaluatedArgs = (function () {
- function EvaluatedArgs(positional, named) {
- this.positional = positional;
- this.named = named;
- this.tag = _glimmerReference.combineTagged([positional, named]);
- }
+ elementFrame.parentNode = element;
+ elementFrame.children = element.children;
+ elementFrame.childCount = element.children.length;
+ elementFrame.mustacheCount += element.modifiers.length;
+ elementFrame.blankChildTextNodes = [];
- EvaluatedArgs.empty = function empty() {
- return EMPTY_EVALUATED_ARGS;
- };
+ var actionArgs = [element, parentFrame.childIndex, parentFrame.childCount];
- EvaluatedArgs.create = function create(positional, named) {
- return new this(positional, named);
- };
+ elementFrame.actions.push(['closeElement', actionArgs]);
- EvaluatedArgs.positional = function positional(values) {
- return new this(_glimmerRuntimeLibCompiledExpressionsPositionalArgs.EvaluatedPositionalArgs.create(values), _glimmerRuntimeLibCompiledExpressionsNamedArgs.EVALUATED_EMPTY_NAMED_ARGS);
- };
+ for (var i = element.attributes.length - 1; i >= 0; i--) {
+ this.visit(element.attributes[i]);
+ }
- EvaluatedArgs.named = function named(map) {
- return new this(_glimmerRuntimeLibCompiledExpressionsPositionalArgs.EVALUATED_EMPTY_POSITIONAL_ARGS, _glimmerRuntimeLibCompiledExpressionsNamedArgs.EvaluatedNamedArgs.create(map));
- };
+ for (i = element.children.length - 1; i >= 0; i--) {
+ elementFrame.childIndex = i;
+ this.visit(element.children[i]);
+ }
- return EvaluatedArgs;
- })();
+ elementFrame.actions.push(['openElement', actionArgs.concat([elementFrame.mustacheCount, elementFrame.blankChildTextNodes.reverse()])]);
+ this.popFrame();
- exports.EvaluatedArgs = EvaluatedArgs;
+ // Propagate the element's frame state to the parent frame
+ if (elementFrame.mustacheCount > 0) {
+ parentFrame.mustacheCount++;
+ }
+ parentFrame.childTemplateCount += elementFrame.childTemplateCount;
+ push.apply(parentFrame.actions, elementFrame.actions);
+ };
- var EMPTY_EVALUATED_ARGS = new EvaluatedArgs(_glimmerRuntimeLibCompiledExpressionsPositionalArgs.EVALUATED_EMPTY_POSITIONAL_ARGS, _glimmerRuntimeLibCompiledExpressionsNamedArgs.EVALUATED_EMPTY_NAMED_ARGS);
- exports.CompiledPositionalArgs = _glimmerRuntimeLibCompiledExpressionsPositionalArgs.CompiledPositionalArgs;
- exports.EvaluatedPositionalArgs = _glimmerRuntimeLibCompiledExpressionsPositionalArgs.EvaluatedPositionalArgs;
- exports.CompiledNamedArgs = _glimmerRuntimeLibCompiledExpressionsNamedArgs.CompiledNamedArgs;
- exports.EvaluatedNamedArgs = _glimmerRuntimeLibCompiledExpressionsNamedArgs.EvaluatedNamedArgs;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFNQSxZQUFBO0FBYUUsaUJBYkYsWUFBQSxDQWNXLFVBQWtDLEVBQ2xDLEtBQXdCLEVBQUE7QUFEeEIsZ0JBQUEsQ0FBQSxVQUFVLEdBQVYsVUFBVSxDQUF3QjtBQUNsQyxnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQW1CO1NBRWhDOztBQWpCSCxvQkFBQSxDQUNTLE1BQU0sR0FBQSxnQkFBQyxVQUFrQyxFQUFFLEtBQXdCLEVBQUE7QUFDeEUsZ0JBQUksVUFBVSx5REFQVCw4QkFBOEIsQUFPYyxJQUFJLEtBQUssb0RBTnJELHlCQUF5QixBQU0yRCxFQUFFO0FBQ3pGLHVCQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyQixNQUFNO0FBQ0wsdUJBQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7O0FBUEgsb0JBQUEsQ0FTUyxLQUFLLEdBQUEsaUJBQUE7QUFDVixtQkFBTyxtQkFBbUIsQ0FBQztTQUM1Qjs7QUFYSCxvQkFBQSxXQW1CRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BGOztlQXJCSCxZQUFBOzs7OztBQXdCQSxRQUFNLG1CQUFtQixHQUFpQjs7O0FBQ3hDLDBCQUFBO0FBQ0UseUZBL0JLLDhCQUE4QixpREFDOUIseUJBQXlCLENBOEJrQyxDQUFDO1NBQ2xFOzt5QkFFRCxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sb0JBQW9CLENBQUM7U0FDN0I7OztPQVAwRCxZQUFZLElBUXZFLENBQUM7O1FBRUgsYUFBQTtBQW1CRSxpQkFuQkYsYUFBQSxDQW9CVyxVQUFtQyxFQUNuQyxLQUF5QixFQUFBO0FBRHpCLGdCQUFBLENBQUEsVUFBVSxHQUFWLFVBQVUsQ0FBeUI7QUFDbkMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFvQjtBQUVoQyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxrQkE1RHNCLGFBQWEsQ0E0RHJCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0M7O0FBeEJILHFCQUFBLENBQ1MsS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8sb0JBQW9CLENBQUM7U0FDN0I7O0FBSEgscUJBQUEsQ0FLUyxNQUFNLEdBQUEsZ0JBQUMsVUFBbUMsRUFBRSxLQUF5QixFQUFBO0FBQzFFLG1CQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNwQzs7QUFQSCxxQkFBQSxDQVNTLFVBQVUsR0FBQSxvQkFBQyxNQUErQixFQUFBO0FBQy9DLG1CQUFPLElBQUksSUFBSSxDQUFDLG9EQWpEOEUsdUJBQXVCLENBaUQ3RSxNQUFNLENBQUMsTUFBTSxDQUFDLGlEQWhEdEIsMEJBQTBCLENBZ0R5QixDQUFDO1NBQ3JGOztBQVhILHFCQUFBLENBYVMsS0FBSyxHQUFBLGVBQUMsR0FBZ0MsRUFBQTtBQUMzQyxtQkFBTyxJQUFJLElBQUkscURBckRzQiwrQkFBK0IsRUFxRG5CLCtDQXBEOEIsa0JBQWtCLENBb0Q3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsRjs7ZUFmSCxhQUFBOzs7OztBQTJCQSxRQUFNLG9CQUFvQixHQUFHLElBQUksYUFBYSxxREFsRUwsK0JBQStCLGlEQUNwQywwQkFBMEIsQ0FpRTZDLENBQUM7WUFFbkcsc0JBQXNCLHVEQXBFMkMsc0JBQXNCO1lBb0UvRCx1QkFBdUIsdURBcEUwQyx1QkFBdUI7WUFvRS9ELGlCQUFpQixrREFuRVgsaUJBQWlCO1lBbUVKLGtCQUFrQixrREFuRVosa0JBQWtCIiwiZmlsZSI6ImFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IENPTVBJTEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgQ29tcGlsZWRQb3NpdGlvbmFsQXJncywgRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MgfSBmcm9tICcuL3Bvc2l0aW9uYWwtYXJncyc7XG5pbXBvcnQgeyBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTLCBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUywgQ29tcGlsZWROYW1lZEFyZ3MsIEV2YWx1YXRlZE5hbWVkQXJncyB9IGZyb20gJy4vbmFtZWQtYXJncyc7XG5pbXBvcnQgeyBSZXZpc2lvblRhZywgUGF0aFJlZmVyZW5jZSwgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSwgRGljdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZEFyZ3Mge1xuICBzdGF0aWMgY3JlYXRlKHBvc2l0aW9uYWw6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBDb21waWxlZE5hbWVkQXJncyk6IENvbXBpbGVkQXJncyB7XG4gICAgaWYgKHBvc2l0aW9uYWwgPT09IENPTVBJTEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUyAmJiBuYW1lZCA9PT0gIENPTVBJTEVEX0VNUFRZX05BTUVEX0FSR1MpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhwb3NpdGlvbmFsLCBuYW1lZCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGVtcHR5KCk6IENvbXBpbGVkQXJncyB7XG4gICAgcmV0dXJuIENPTVBJTEVEX0VNUFRZX0FSR1M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogQ29tcGlsZWRQb3NpdGlvbmFsQXJncyxcbiAgICBwdWJsaWMgbmFtZWQ6IENvbXBpbGVkTmFtZWRBcmdzXG4gICkge1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIEV2YWx1YXRlZEFyZ3MuY3JlYXRlKHRoaXMucG9zaXRpb25hbC5ldmFsdWF0ZSh2bSksIHRoaXMubmFtZWQuZXZhbHVhdGUodm0pKTtcbiAgfVxufVxuXG5jb25zdCBDT01QSUxFRF9FTVBUWV9BUkdTOiBDb21waWxlZEFyZ3MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgQ29tcGlsZWRBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTLCBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9FVkFMVUFURURfQVJHUztcbiAgfVxufSk7XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZWRBcmdzIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9FVkFMVUFURURfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUocG9zaXRpb25hbDogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICByZXR1cm4gbmV3IHRoaXMocG9zaXRpb25hbCwgbmFtZWQpO1xuICB9XG5cbiAgc3RhdGljIHBvc2l0aW9uYWwodmFsdWVzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBuZXcgdGhpcyhFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncy5jcmVhdGUodmFsdWVzKSwgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MpO1xuICB9XG5cbiAgc3RhdGljIG5hbWVkKG1hcDogRGljdDxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1MsIEV2YWx1YXRlZE5hbWVkQXJncy5jcmVhdGUobWFwKSk7XG4gIH1cblxuICBwdWJsaWMgdGFnOiBSZXZpc2lvblRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MsXG4gICAgcHVibGljIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3NcbiAgKSB7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKFtwb3NpdGlvbmFsLCBuYW1lZF0pO1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX0VWQUxVQVRFRF9BUkdTID0gbmV3IEV2YWx1YXRlZEFyZ3MoRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MpO1xuXG5leHBvcnQgeyBDb21waWxlZFBvc2l0aW9uYWxBcmdzLCBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncywgQ29tcGlsZWROYW1lZEFyZ3MsIEV2YWx1YXRlZE5hbWVkQXJncyB9O1xuIl19
-enifed("glimmer-runtime/lib/compiled/expressions/concat", ["exports", "glimmer-reference"], function (exports, _glimmerReference) {
- "use strict";
+ TemplateVisitor.prototype.AttrNode = function (attr) {
+ if (attr.value.type !== 'TextNode') {
+ this.getCurrentFrame().mustacheCount++;
+ }
+ };
- var CompiledConcat = (function () {
- function CompiledConcat(parts) {
- this.parts = parts;
- this.type = "concat";
- }
+ TemplateVisitor.prototype.TextNode = function (text) {
+ var frame = this.getCurrentFrame();
+ if (text.chars === '') {
+ frame.blankChildTextNodes.push(domIndexOf(frame.children, text));
+ }
+ frame.actions.push(['text', [text, frame.childIndex, frame.childCount]]);
+ };
- CompiledConcat.prototype.evaluate = function evaluate(vm) {
- var parts = new Array(this.parts.length);
- for (var i = 0; i < this.parts.length; i++) {
- parts[i] = this.parts[i].evaluate(vm);
- }
- return new ConcatReference(parts);
- };
+ TemplateVisitor.prototype.BlockStatement = function (node) {
+ var frame = this.getCurrentFrame();
- CompiledConcat.prototype.toJSON = function toJSON() {
- return "concat(" + this.parts.map(function (expr) {
- return expr.toJSON();
- }).join(", ") + ")";
- };
+ frame.mustacheCount++;
+ frame.actions.push(['block', [node, frame.childIndex, frame.childCount]]);
- return CompiledConcat;
- })();
-
- exports.default = CompiledConcat;
-
- var ConcatReference = (function (_CachedReference) {
- babelHelpers.inherits(ConcatReference, _CachedReference);
-
- function ConcatReference(parts) {
- _CachedReference.call(this);
- this.parts = parts;
- this.tag = _glimmerReference.combineTagged(parts);
- }
-
- ConcatReference.prototype.compute = function compute() {
- var parts = new Array();
- for (var i = 0; i < this.parts.length; i++) {
- var value = this.parts[i].value();
- if (value !== null && value !== undefined) {
- parts[i] = castToString(this.parts[i].value());
- }
- }
- if (parts.length > 0) {
- return parts.join('');
- }
- return null;
- };
-
- return ConcatReference;
- })(_glimmerReference.CachedReference);
-
- function castToString(value) {
- if (typeof value['toString'] !== 'function') {
- return '';
- }
- return String(value);
+ if (node.inverse) {
+ this.visit(node.inverse);
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQU1BLGNBQUE7QUFHRSxpQkFIRixjQUFBLENBR3NCLEtBQW1DLEVBQUE7QUFBbkMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUE4QjtBQUZoRCxnQkFBQSxDQUFBLElBQUksR0FBRyxRQUFRLENBQUM7U0FFb0M7O0FBSDdELHNCQUFBLFdBS0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLEtBQUssR0FBNEIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRSxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLHFCQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkM7QUFDRCxtQkFBTyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQzs7QUFYSCxzQkFBQSxXQWFFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLCtCQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUk7dUJBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTthQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQUk7U0FDdEU7O2VBZkgsY0FBQTs7O3NCQUFBLGNBQUE7O1FBa0JBLGVBQUE7OEJBQUEsZUFBQTs7QUFHRSxpQkFIRixlQUFBLENBR3NCLEtBQThCLEVBQUE7QUFDaEQsdUNBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBeUI7QUFFaEQsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsa0JBMUJ1QyxhQUFhLENBMEJ0QyxLQUFLLENBQUMsQ0FBQztTQUNqQzs7QUFOSCx1QkFBQSxXQVFZLE9BQU8sR0FBQSxtQkFBQTtBQUNmLGdCQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0FBRWhDLGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMsb0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFbEMsb0JBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ3pDLHlCQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQW9ELENBQUM7aUJBQ25HO2FBQ0Y7QUFFRCxnQkFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNwQix1QkFBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZCO0FBRUQsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O2VBeEJILGVBQUE7eUJBckJ3QixlQUFlOztBQWdEdkMsYUFBQSxZQUFBLENBQXNCLEtBQUssRUFBQTtBQUN6QixZQUFJLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUMzQyxtQkFBTyxFQUFFLENBQUM7U0FDWDtBQUVELGVBQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCIiwiZmlsZSI6ImNvbmNhdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IEZJWE1FIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgQ2FjaGVkUmVmZXJlbmNlLCBSZXZpc2lvblRhZywgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGVkQ29uY2F0IHtcbiAgcHVibGljIHR5cGUgPSBcImNvbmNhdFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFydHM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W10pIHt9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogQ2FjaGVkUmVmZXJlbmNlPHN0cmluZz4ge1xuICAgIGxldCBwYXJ0czogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkodGhpcy5wYXJ0cy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFydHNbaV0gPSB0aGlzLnBhcnRzW2ldLmV2YWx1YXRlKHZtKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb25jYXRSZWZlcmVuY2UocGFydHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjb25jYXQoJHt0aGlzLnBhcnRzLm1hcChleHByID0+IGV4cHIudG9KU09OKCkpLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxufVxuXG5jbGFzcyBDb25jYXRSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2U8c3RyaW5nPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFydHM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQocGFydHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogc3RyaW5nIHtcbiAgICBsZXQgcGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnRzW2ldLnZhbHVlKCk7XG5cbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBhcnRzW2ldID0gY2FzdFRvU3RyaW5nKHRoaXMucGFydHNbaV0udmFsdWUoKSkgYXMgRklYTUU8c3RyaW5nLCAnQ29lcmNlIGZhbHN5IHZhbHVlcyB0byBzdHJpbmdzJz47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYXN0VG9TdHJpbmcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZVsndG9TdHJpbmcnXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIl19
-enifed('glimmer-runtime/lib/compiled/expressions/function', ['exports', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/compiled/expressions'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibCompiledExpressions) {
- 'use strict';
-
- exports.default = make;
-
- function make(func) {
- return new FunctionExpressionSyntax(func);
+ if (node.program) {
+ this.visit(node.program);
}
+ };
- var FunctionExpressionSyntax = (function (_ExpressionSyntax) {
- babelHelpers.inherits(FunctionExpressionSyntax, _ExpressionSyntax);
+ TemplateVisitor.prototype.ComponentNode = function (node) {
+ var frame = this.getCurrentFrame();
- function FunctionExpressionSyntax(func) {
- _ExpressionSyntax.call(this);
- this.type = "function-expression";
- this.func = func;
- }
+ frame.mustacheCount++;
+ frame.actions.push(['component', [node, frame.childIndex, frame.childCount]]);
- FunctionExpressionSyntax.prototype.compile = function compile(lookup, env, symbolTable) {
- return new CompiledFunctionExpression(this.func, symbolTable);
- };
+ if (node.program) {
+ this.visit(node.program);
+ }
+ };
- return FunctionExpressionSyntax;
- })(_glimmerRuntimeLibSyntax.Expression);
+ TemplateVisitor.prototype.PartialStatement = function (node) {
+ var frame = this.getCurrentFrame();
+ frame.mustacheCount++;
+ frame.actions.push(['mustache', [node, frame.childIndex, frame.childCount]]);
+ };
- var CompiledFunctionExpression = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledFunctionExpression, _CompiledExpression);
+ TemplateVisitor.prototype.CommentStatement = function (text) {
+ var frame = this.getCurrentFrame();
+ frame.actions.push(['comment', [text, frame.childIndex, frame.childCount]]);
+ };
- function CompiledFunctionExpression(func, symbolTable) {
- _CompiledExpression.call(this);
- this.func = func;
- this.symbolTable = symbolTable;
- this.type = "function";
- this.func = func;
- }
+ TemplateVisitor.prototype.MustacheStatement = function (mustache) {
+ var frame = this.getCurrentFrame();
+ frame.mustacheCount++;
+ frame.actions.push(['mustache', [mustache, frame.childIndex, frame.childCount]]);
+ };
- CompiledFunctionExpression.prototype.evaluate = function evaluate(vm) {
- var func = this.func;
- var symbolTable = this.symbolTable;
+ // Frame helpers
- return func(vm, symbolTable);
- };
+ TemplateVisitor.prototype.getCurrentFrame = function () {
+ return this.frameStack[this.frameStack.length - 1];
+ };
- CompiledFunctionExpression.prototype.toJSON = function toJSON() {
- var func = this.func;
+ TemplateVisitor.prototype.pushFrame = function () {
+ var frame = new Frame();
+ this.frameStack.push(frame);
+ return frame;
+ };
- if (func.name) {
- return '`' + func.name + '(...)`';
- } else {
- return "`func(...)`";
- }
- };
+ TemplateVisitor.prototype.popFrame = function () {
+ return this.frameStack.pop();
+ };
- return CompiledFunctionExpression;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQVFBLElBQUE7O0FBQUEsYUFBQSxJQUFBLENBQWdDLElBQTJCLEVBQUE7QUFDekQsZUFBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzNDOztRQUVELHdCQUFBOzhCQUFBLHdCQUFBOztBQUlFLGlCQUpGLHdCQUFBLENBSWMsSUFBMkIsRUFBQTtBQUNyQyx3Q0FBTyxDQUFDO0FBSkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcscUJBQXFCLENBQUM7QUFLbEMsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVBILGdDQUFBLFdBU0UsT0FBTyxHQUFBLGlCQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBd0IsRUFBQTtBQUMzQyxtQkFBTyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDL0Q7O2VBWEgsd0JBQUE7Z0NBWFMsVUFBVTs7UUF5Qm5CLDBCQUFBOzhCQUFBLDBCQUFBOztBQUdFLGlCQUhGLDBCQUFBLENBR3NCLElBQTJCLEVBQVUsV0FBd0IsRUFBQTtBQUMvRSwwQ0FBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUF1QjtBQUFVLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBYTtBQUYxRSxnQkFBQSxDQUFBLElBQUksR0FBRyxVQUFVLENBQUM7QUFJdkIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQU5ILGtDQUFBLFdBUUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxJQUFJLEdBQWtCLElBQUksQ0FBMUIsSUFBSTtnQkFBRSxXQUFXLEdBQUssSUFBSSxDQUFwQixXQUFXOztBQUN2QixtQkFBTyxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzlCOztBQVhILGtDQUFBLFdBYUUsTUFBTSxHQUFBLGtCQUFBO2dCQUNFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFVixnQkFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2IsNkJBQVksSUFBSSxDQUFDLElBQUksWUFBVTthQUNoQyxNQUFNO0FBQ0wsdUJBQU8sYUFBYSxDQUFDO2FBQ3RCO1NBQ0Y7O2VBckJILDBCQUFBOzZDQXhCUyxrQkFBa0IiLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4IH0gZnJvbSAnLi4vLi4vc3ludGF4JztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IFB1YmxpY1ZNIGFzIFZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiA9IChWTTogVk0sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkgPT4gUGF0aFJlZmVyZW5jZTxUPjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZTxUPihmdW5jOiBGdW5jdGlvbkV4cHJlc3Npb248VD4pOiBFeHByZXNzaW9uU3ludGF4PFQ+IHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbkV4cHJlc3Npb25TeW50YXgoZnVuYyk7XG59XG5cbmNsYXNzIEZ1bmN0aW9uRXhwcmVzc2lvblN5bnRheDxUPiBleHRlbmRzIEV4cHJlc3Npb25TeW50YXg8VD4ge1xuICBwdWJsaWMgdHlwZSA9IFwiZnVuY3Rpb24tZXhwcmVzc2lvblwiO1xuICBwcml2YXRlIGZ1bmM6IEZ1bmN0aW9uRXhwcmVzc2lvbjxUPjtcblxuICBjb25zdHJ1Y3RvcihmdW5jOiBGdW5jdGlvbkV4cHJlc3Npb248VD4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZnVuYyA9IGZ1bmM7XG4gIH1cblxuICBjb21waWxlKGxvb2t1cCwgZW52LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZEV4cHJlc3Npb248VD4ge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRGdW5jdGlvbkV4cHJlc3Npb24odGhpcy5mdW5jLCBzeW1ib2xUYWJsZSk7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZWRGdW5jdGlvbkV4cHJlc3Npb248VD4gZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248VD4ge1xuICBwdWJsaWMgdHlwZSA9IFwiZnVuY3Rpb25cIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZ1bmM6IEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiwgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZnVuYyA9IGZ1bmM7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICBsZXQgeyBmdW5jLCBzeW1ib2xUYWJsZSB9ID0gdGhpcztcbiAgICByZXR1cm4gZnVuYyh2bSwgc3ltYm9sVGFibGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHsgZnVuYyB9ID0gdGhpcztcblxuICAgIGlmIChmdW5jLm5hbWUpIHtcbiAgICAgIHJldHVybiBgXFxgJHtmdW5jLm5hbWV9KC4uLilcXGBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJgZnVuYyguLi4pYFwiO1xuICAgIH1cbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compiled/expressions/has-block-params', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-runtime/lib/compiled/expressions/value'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerRuntimeLibCompiledExpressionsValue) {
- 'use strict';
+ exports.default = TemplateVisitor;
- var CompiledHasBlockParams = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledHasBlockParams, _CompiledExpression);
+ // Returns the index of `domNode` in the `nodes` array, skipping
+ // over any nodes which do not represent DOM nodes.
+ function domIndexOf(nodes, domNode) {
+ var index = -1;
- function CompiledHasBlockParams(blockName, blockSymbol) {
- _CompiledExpression.call(this);
- this.blockName = blockName;
- this.blockSymbol = blockSymbol;
- this.type = "has-block-params";
- }
+ for (var i = 0; i < nodes.length; i++) {
+ var node = nodes[i];
- CompiledHasBlockParams.prototype.evaluate = function evaluate(vm) {
- var blockRef = vm.scope().getBlock(this.blockSymbol);
- return new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(!!(blockRef && blockRef.locals.length > 0));
- };
+ if (node.type !== 'TextNode' && node.type !== 'ElementNode') {
+ continue;
+ } else {
+ index++;
+ }
- CompiledHasBlockParams.prototype.toJSON = function toJSON() {
- return 'has-block-params(' + this.blockName + ')';
- };
+ if (node === domNode) {
+ return index;
+ }
+ }
- return CompiledHasBlockParams;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
-
- exports.default = CompiledHasBlockParams;
+ return -1;
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFJQSxzQkFBQTs4QkFBQSxzQkFBQTs7QUFHRSxpQkFIRixzQkFBQSxDQUdxQixTQUFpQixFQUFTLFdBQW1CLEVBQUE7QUFDOUQsMENBQU8sQ0FBQztBQURTLGdCQUFBLENBQUEsU0FBUyxHQUFULFNBQVMsQ0FBUTtBQUFTLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBUTtBQUZ6RCxnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztTQUloQzs7QUFMSCw4QkFBQSxXQU9FLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQsbUJBQU8sK0NBWEYsY0FBYyxDQVdPLENBQUMsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxDQUFDO1NBQ3ZFOztBQVZILDhCQUFBLFdBWUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0oseUNBQTJCLElBQUksQ0FBQyxTQUFTLE9BQUk7U0FDOUM7O2VBZEgsc0JBQUE7NkNBSFMsa0JBQWtCOztzQkFHM0Isc0JBQUEiLCJmaWxlIjoiaGFzLWJsb2NrLXBhcmFtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2stcGFyYW1zXCI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJsb2NrTmFtZTogc3RyaW5nLCBwdWJsaWMgYmxvY2tTeW1ib2w6IG51bWJlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBWYWx1ZVJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgbGV0IGJsb2NrUmVmID0gdm0uc2NvcGUoKS5nZXRCbG9jayh0aGlzLmJsb2NrU3ltYm9sKTtcbiAgICByZXR1cm4gbmV3IFZhbHVlUmVmZXJlbmNlKCEhKGJsb2NrUmVmICYmIGJsb2NrUmVmLmxvY2Fscy5sZW5ndGggPiAwKSk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGhhcy1ibG9jay1wYXJhbXMoJHt0aGlzLmJsb2NrTmFtZX0pYDtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compiled/expressions/has-block', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-runtime/lib/compiled/expressions/value'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerRuntimeLibCompiledExpressionsValue) {
- 'use strict';
+enifed("htmlbars-compiler/utils", ["exports"], function (exports) {
+ "use strict";
- var CompiledHasBlock = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledHasBlock, _CompiledExpression);
+ exports.processOpcodes = processOpcodes;
- function CompiledHasBlock(blockName, blockSymbol) {
- _CompiledExpression.call(this);
- this.blockName = blockName;
- this.blockSymbol = blockSymbol;
- this.type = "has-block";
- }
-
- CompiledHasBlock.prototype.evaluate = function evaluate(vm) {
- var blockRef = vm.scope().getBlock(this.blockSymbol);
- return new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(!!blockRef);
- };
-
- CompiledHasBlock.prototype.toJSON = function toJSON() {
- return 'has-block(' + this.blockName + ')';
- };
-
- return CompiledHasBlock;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
-
- exports.default = CompiledHasBlock;
+ function processOpcodes(compiler, opcodes) {
+ for (var i = 0, l = opcodes.length; i < l; i++) {
+ var method = opcodes[i][0];
+ var params = opcodes[i][1];
+ if (params) {
+ compiler[method].apply(compiler, params);
+ } else {
+ compiler[method].call(compiler);
+ }
+ }
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQUlBLGdCQUFBOzhCQUFBLGdCQUFBOztBQUdFLGlCQUhGLGdCQUFBLENBR3FCLFNBQWlCLEVBQVMsV0FBbUIsRUFBQTtBQUM5RCwwQ0FBTyxDQUFDO0FBRFMsZ0JBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFRO0FBQVMsZ0JBQUEsQ0FBQSxXQUFXLEdBQVgsV0FBVyxDQUFRO0FBRnpELGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQUl6Qjs7QUFMSCx3QkFBQSxXQU9FLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQsbUJBQU8sK0NBWEYsY0FBYyxDQVdPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2Qzs7QUFWSCx3QkFBQSxXQVlFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGtDQUFvQixJQUFJLENBQUMsU0FBUyxPQUFJO1NBQ3ZDOztlQWRILGdCQUFBOzZDQUhTLGtCQUFrQjs7c0JBRzNCLGdCQUFBIiwiZmlsZSI6Imhhcy1ibG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9jayBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2tcIjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmxvY2tOYW1lOiBzdHJpbmcsIHB1YmxpYyBibG9ja1N5bWJvbDogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IFZhbHVlUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICBsZXQgYmxvY2tSZWYgPSB2bS5zY29wZSgpLmdldEJsb2NrKHRoaXMuYmxvY2tTeW1ib2wpO1xuICAgIHJldHVybiBuZXcgVmFsdWVSZWZlcmVuY2UoISFibG9ja1JlZik7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGhhcy1ibG9jaygke3RoaXMuYmxvY2tOYW1lfSlgO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/expressions/helper', ['exports', 'glimmer-runtime/lib/compiled/expressions'], function (exports, _glimmerRuntimeLibCompiledExpressions) {
- 'use strict';
+enifed('htmlbars-runtime', ['exports', 'htmlbars-runtime/hooks', 'htmlbars-runtime/render', 'htmlbars-util/morph-utils', 'htmlbars-util/template-utils'], function (exports, _htmlbarsRuntimeHooks, _htmlbarsRuntimeRender, _htmlbarsUtilMorphUtils, _htmlbarsUtilTemplateUtils) {
+ 'use strict';
- var CompiledHelper = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledHelper, _CompiledExpression);
+ var internal = {
+ blockFor: _htmlbarsUtilTemplateUtils.blockFor,
+ manualElement: _htmlbarsRuntimeRender.manualElement,
+ hostBlock: _htmlbarsRuntimeHooks.hostBlock,
+ continueBlock: _htmlbarsRuntimeHooks.continueBlock,
+ hostYieldWithShadowTemplate: _htmlbarsRuntimeHooks.hostYieldWithShadowTemplate,
+ visitChildren: _htmlbarsUtilMorphUtils.visitChildren,
+ validateChildMorphs: _htmlbarsUtilMorphUtils.validateChildMorphs,
+ clearMorph: _htmlbarsUtilTemplateUtils.clearMorph
+ };
- function CompiledHelper(name, helper, args, symbolTable) {
- _CompiledExpression.call(this);
- this.name = name;
- this.helper = helper;
- this.args = args;
- this.symbolTable = symbolTable;
- this.type = "helper";
- }
-
- CompiledHelper.prototype.evaluate = function evaluate(vm) {
- var helper = this.helper;
-
- return helper(vm, this.args.evaluate(vm), this.symbolTable);
- };
-
- CompiledHelper.prototype.toJSON = function toJSON() {
- return '`' + this.name.join('.') + '($ARGS)`';
- };
-
- return CompiledHelper;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
-
- exports.default = CompiledHelper;
+ exports.hooks = _htmlbarsRuntimeHooks.default;
+ exports.render = _htmlbarsRuntimeRender.default;
+ exports.internal = internal;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFBLGNBQUE7OEJBQUEsY0FBQTs7QUFHRSxpQkFIRixjQUFBLENBR3FCLElBQWMsRUFBUyxNQUFjLEVBQVMsSUFBa0IsRUFBUyxXQUF3QixFQUFBO0FBQ2xILDBDQUFPLENBQUM7QUFEUyxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQVU7QUFBUyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVE7QUFBUyxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQWM7QUFBUyxnQkFBQSxDQUFBLFdBQVcsR0FBWCxXQUFXLENBQWE7QUFGN0csZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBSXRCOztBQUxILHNCQUFBLFdBT0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ1osbUJBQU8sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0Q7O0FBVkgsc0JBQUEsV0FZRSxNQUFNLEdBQUEsa0JBQUE7QUFDSix5QkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBWTtTQUM1Qzs7ZUFkSCxjQUFBOzZDQVJTLGtCQUFrQjs7c0JBUTNCLGNBQUEiLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzIH0gZnJvbSAnLi9hcmdzJztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIZWxwZXIgZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoZWxwZXJcIjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nW10sIHB1YmxpYyBoZWxwZXI6IEhlbHBlciwgcHVibGljIGFyZ3M6IENvbXBpbGVkQXJncywgcHVibGljIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIGxldCB7IGhlbHBlciB9ID0gdGhpcztcbiAgICByZXR1cm4gaGVscGVyKHZtLCB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pLCB0aGlzLnN5bWJvbFRhYmxlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFxgJHt0aGlzLm5hbWUuam9pbignLicpfSgkQVJHUylcXGBgO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/expressions/lookups', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-reference'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerReference) {
- 'use strict';
+enifed('htmlbars-runtime/expression-visitor', ['exports'], function (exports) {
+ /**
+ # Expression Nodes:
+
+ These nodes are not directly responsible for any part of the DOM, but are
+ eventually passed to a Statement Node.
+
+ * get
+ * subexpr
+ * concat
+ */
- var CompiledLocalLookup = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledLocalLookup, _CompiledExpression);
+ 'use strict';
- function CompiledLocalLookup(symbol, path, debug) {
- _CompiledExpression.call(this);
- this.symbol = symbol;
- this.path = path;
- this.debug = debug;
- this.type = "local-lookup";
- }
+ exports.acceptParams = acceptParams;
+ exports.acceptHash = acceptHash;
- CompiledLocalLookup.prototype.evaluate = function evaluate(vm) {
- var base = vm.referenceForSymbol(this.symbol);
- return _glimmerReference.referenceFromParts(base, this.path);
- };
+ function acceptParams(nodes, env, scope) {
+ var array = [];
- CompiledLocalLookup.prototype.toJSON = function toJSON() {
- var debug = this.debug;
- var symbol = this.symbol;
- var path = this.path;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ array.push(acceptExpression(nodes[i], env, scope).value);
+ }
- if (path.length) {
- return '$' + symbol + '(' + debug + ').' + path.join('.');
- } else {
- return '$' + symbol + '(' + debug + ')';
- }
- };
+ return array;
+ }
- return CompiledLocalLookup;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
+ function acceptHash(pairs, env, scope) {
+ var object = {};
- exports.CompiledLocalLookup = CompiledLocalLookup;
+ for (var i = 0, l = pairs.length; i < l; i += 2) {
+ var key = pairs[i];
+ var value = pairs[i + 1];
+ object[key] = acceptExpression(value, env, scope).value;
+ }
- var CompiledSelfLookup = (function (_CompiledExpression2) {
- babelHelpers.inherits(CompiledSelfLookup, _CompiledExpression2);
+ return object;
+ }
- function CompiledSelfLookup(parts) {
- _CompiledExpression2.call(this);
- this.parts = parts;
- this.type = "self-lookup";
- }
+ function acceptExpression(node, env, scope) {
+ var ret = { value: null };
- CompiledSelfLookup.prototype.evaluate = function evaluate(vm) {
- return _glimmerReference.referenceFromParts(vm.getSelf(), this.parts);
- };
+ // Primitive literals are unambiguously non-array representations of
+ // themselves.
+ if (Array.isArray(node)) {
+ // if (node.length !== 7) { throw new Error('FIXME: Invalid statement length!'); }
- CompiledSelfLookup.prototype.toJSON = function toJSON() {
- var path = ['self'];
- path.push.apply(path, this.parts);
- return path.join('.');
- };
+ ret.value = evaluateNode(node, env, scope);
+ } else {
+ ret.value = node;
+ }
- return CompiledSelfLookup;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
+ return ret;
+ }
- exports.CompiledSelfLookup = CompiledSelfLookup;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvbG9va3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFLQSxtQkFBQTs4QkFBQSxtQkFBQTs7QUFHRSxpQkFIRixtQkFBQSxDQUlZLE1BQWMsRUFDZCxJQUFjLEVBQ2QsS0FBYSxFQUFBO0FBRXJCLDBDQUFPLENBQUM7QUFKQSxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVE7QUFDZCxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQVU7QUFDZCxnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQVE7QUFMaEIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO1NBUTVCOztBQVRILDJCQUFBLFdBV0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLElBQUksR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLG1CQUFPLGtCQWZGLGtCQUFrQixDQWVHLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUM7O0FBZEgsMkJBQUEsV0FnQkUsTUFBTSxHQUFBLGtCQUFBO2dCQUNFLEtBQUssR0FBbUIsSUFBSSxDQUE1QixLQUFLO2dCQUFFLE1BQU0sR0FBVyxJQUFJLENBQXJCLE1BQU07Z0JBQUUsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUV6QixnQkFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2YsNkJBQVcsTUFBTSxTQUFJLEtBQUssVUFBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFHO2FBQ2pELE1BQU07QUFDTCw2QkFBVyxNQUFNLFNBQUksS0FBSyxPQUFJO2FBQy9CO1NBQ0Y7O2VBeEJILG1CQUFBOzZDQUxTLGtCQUFrQjs7OztRQWdDM0Isa0JBQUE7OEJBQUEsa0JBQUE7O0FBR0UsaUJBSEYsa0JBQUEsQ0FHc0IsS0FBZSxFQUFBO0FBQ2pDLDJDQUFPLENBQUM7QUFEVSxnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQVU7QUFGNUIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsYUFBYSxDQUFDO1NBSTNCOztBQUxILDBCQUFBLFdBT0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLG1CQUFPLGtCQXJDRixrQkFBa0IsQ0FxQ0csRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDs7QUFUSCwwQkFBQSxXQVdFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGdCQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLGdCQUFJLENBQUMsSUFBSSxNQUFBLENBQVQsSUFBSSxFQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCOztlQWZILGtCQUFBOzZDQWhDUyxrQkFBa0IiLCJmaWxlIjoibG9va3Vwcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlZmVyZW5jZUZyb21QYXJ0cyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVkTG9jYWxMb29rdXAgZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248YW55PiB7XG4gIHB1YmxpYyB0eXBlID0gXCJsb2NhbC1sb29rdXBcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN5bWJvbDogbnVtYmVyLFxuICAgIHByaXZhdGUgcGF0aDogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSBkZWJ1Zzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIGxldCBiYXNlID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHRoaXMuc3ltYm9sKTtcbiAgICByZXR1cm4gcmVmZXJlbmNlRnJvbVBhcnRzKGJhc2UsIHRoaXMucGF0aCk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICBsZXQgeyBkZWJ1Zywgc3ltYm9sLCBwYXRoIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBhdGgubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCQke3N5bWJvbH0oJHtkZWJ1Z30pLiR7cGF0aC5qb2luKCcuJyl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAkJHtzeW1ib2x9KCR7ZGVidWd9KWA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZFNlbGZMb29rdXAgZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248YW55PiB7XG4gIHB1YmxpYyB0eXBlID0gXCJzZWxmLWxvb2t1cFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFydHM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZUZyb21QYXJ0cyh2bS5nZXRTZWxmKCksIHRoaXMucGFydHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHBhdGggPSBbJ3NlbGYnXTtcbiAgICBwYXRoLnB1c2goLi4udGhpcy5wYXJ0cyk7XG4gICAgcmV0dXJuIHBhdGguam9pbignLicpO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/expressions/named-args', ['exports', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/utils', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibReferences, _glimmerRuntimeLibUtils, _glimmerReference, _glimmerUtil) {
- 'use strict';
+ function evaluateNode(node, env, scope) {
+ switch (node[0]) {
+ // can be used by manualElement
+ case 'value':
+ return node[1];
+ case 'get':
+ return evaluateGet(node, env, scope);
+ case 'subexpr':
+ return evaluateSubexpr(node, env, scope);
+ case 'concat':
+ return evaluateConcat(node, env, scope);
+ }
+ }
- var CompiledNamedArgs = (function () {
- function CompiledNamedArgs(keys, values) {
- this.keys = keys;
- this.values = values;
- this.length = keys.length;
- _glimmerUtil.assert(keys.length === values.length, 'Keys and values do not have the same length');
- }
+ function evaluateGet(node, env, scope) {
+ var path = node[1];
- CompiledNamedArgs.empty = function empty() {
- return COMPILED_EMPTY_NAMED_ARGS;
- };
+ return env.hooks.get(env, scope, path);
+ }
- CompiledNamedArgs.create = function create(map) {
- var keys = Object.keys(map);
- var length = keys.length;
- if (length > 0) {
- var values = [];
- for (var i = 0; i < length; i++) {
- values[i] = map[keys[i]];
- }
- return new this(keys, values);
- } else {
- return COMPILED_EMPTY_NAMED_ARGS;
- }
- };
+ function evaluateSubexpr(node, env, scope) {
+ var path = node[1];
+ var rawParams = node[2];
+ var rawHash = node[3];
- CompiledNamedArgs.prototype.evaluate = function evaluate(vm) {
- var keys = this.keys;
- var values = this.values;
- var length = this.length;
+ var params = acceptParams(rawParams, env, scope);
+ var hash = acceptHash(rawHash, env, scope);
- var evaluated = new Array(length);
- for (var i = 0; i < length; i++) {
- evaluated[i] = values[i].evaluate(vm);
- }
- return new EvaluatedNamedArgs(keys, evaluated);
- };
+ return env.hooks.subexpr(env, scope, path, params, hash);
+ }
- CompiledNamedArgs.prototype.toJSON = function toJSON() {
- var keys = this.keys;
- var values = this.values;
+ function evaluateConcat(node, env, scope) {
+ var rawParts = node[1];
- var inner = keys.map(function (key, i) {
- return key + ': ' + values[i].toJSON();
- }).join(", ");
- return '{' + inner + '}';
- };
+ var parts = acceptParams(rawParts, env, scope);
- return CompiledNamedArgs;
- })();
-
- exports.CompiledNamedArgs = CompiledNamedArgs;
- var COMPILED_EMPTY_NAMED_ARGS = new ((function (_CompiledNamedArgs) {
- babelHelpers.inherits(_class, _CompiledNamedArgs);
-
- function _class() {
- _CompiledNamedArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_ARRAY);
- }
-
- _class.prototype.evaluate = function evaluate(vm) {
- return EVALUATED_EMPTY_NAMED_ARGS;
- };
-
- _class.prototype.toJSON = function toJSON() {
- return '<EMPTY>';
- };
-
- return _class;
- })(CompiledNamedArgs))();
- exports.COMPILED_EMPTY_NAMED_ARGS = COMPILED_EMPTY_NAMED_ARGS;
-
- var EvaluatedNamedArgs = (function () {
- function EvaluatedNamedArgs(keys, values) {
- var _map = arguments.length <= 2 || arguments[2] === undefined ? undefined : arguments[2];
-
- this.keys = keys;
- this.values = values;
- this._map = _map;
- this.tag = _glimmerReference.combineTagged(values);
- this.length = keys.length;
- _glimmerUtil.assert(keys.length === values.length, 'Keys and values do not have the same length');
- }
-
- EvaluatedNamedArgs.create = function create(map) {
- var keys = Object.keys(map);
- var length = keys.length;
- if (length > 0) {
- var values = new Array(length);
- for (var i = 0; i < length; i++) {
- values[i] = map[keys[i]];
- }
- return new this(keys, values, map);
- } else {
- return EVALUATED_EMPTY_NAMED_ARGS;
- }
- };
-
- EvaluatedNamedArgs.empty = function empty() {
- return EVALUATED_EMPTY_NAMED_ARGS;
- };
-
- EvaluatedNamedArgs.prototype.get = function get(key) {
- var keys = this.keys;
- var values = this.values;
-
- var index = keys.indexOf(key);
- return index === -1 ? _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE : values[index];
- };
-
- EvaluatedNamedArgs.prototype.has = function has(key) {
- return this.keys.indexOf(key) !== -1;
- };
-
- EvaluatedNamedArgs.prototype.value = function value() {
- var keys = this.keys;
- var values = this.values;
-
- var out = _glimmerUtil.dict();
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- var ref = values[i];
- out[key] = ref.value();
- }
- return out;
- };
-
- babelHelpers.createClass(EvaluatedNamedArgs, [{
- key: 'map',
- get: function () {
- var map = this._map;
-
- if (map) {
- return map;
- }
- map = this._map = _glimmerUtil.dict();
- var keys = this.keys;
- var values = this.values;
- var length = this.length;
-
- for (var i = 0; i < length; i++) {
- map[keys[i]] = values[i];
- }
- return map;
- }
- }]);
- return EvaluatedNamedArgs;
- })();
-
- exports.EvaluatedNamedArgs = EvaluatedNamedArgs;
- var EVALUATED_EMPTY_NAMED_ARGS = new ((function (_EvaluatedNamedArgs) {
- babelHelpers.inherits(_class2, _EvaluatedNamedArgs);
-
- function _class2() {
- _EvaluatedNamedArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_DICT);
- }
-
- _class2.prototype.get = function get() {
- return _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE;
- };
-
- _class2.prototype.has = function has(key) {
- return false;
- };
-
- _class2.prototype.value = function value() {
- return _glimmerRuntimeLibUtils.EMPTY_DICT;
- };
-
- return _class2;
- })(EvaluatedNamedArgs))();
- exports.EVALUATED_EMPTY_NAMED_ARGS = EVALUATED_EMPTY_NAMED_ARGS;
+ return env.hooks.concat(env, parts);
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvbmFtZWQtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFPQSxpQkFBQTtBQXdCRSxpQkF4QkYsaUJBQUEsQ0F5QlcsSUFBYyxFQUNkLE1BQW9DLEVBQUE7QUFEcEMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFVO0FBQ2QsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUE4QjtBQUUzQyxnQkFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzFCLHlCQS9CbUIsTUFBTSxDQStCbEIsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLDZDQUE2QyxDQUFDLENBQUM7U0FDdEY7O0FBOUJILHlCQUFBLENBQ1MsS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8seUJBQXlCLENBQUM7U0FDbEM7O0FBSEgseUJBQUEsQ0FLUyxNQUFNLEdBQUEsZ0JBQUMsR0FBcUMsRUFBQTtBQUNqRCxnQkFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixnQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUV6QixnQkFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2Qsb0JBQUksTUFBTSxHQUFpQyxFQUFFLENBQUM7QUFFOUMscUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0IsMEJBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCO0FBRUQsdUJBQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQy9CLE1BQU07QUFDTCx1QkFBTyx5QkFBeUIsQ0FBQzthQUNsQztTQUNGOztBQXBCSCx5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O0FBRVYsb0JBQUksR0FBRyxFQUFFO0FBQ1AsMkJBQU8sR0FBRyxDQUFDO2lCQUNaO0FBRUQsbUJBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLGFBNUdTLElBQUksRUE0R2dCLENBQUM7b0JBRTFDLElBQUksR0FBcUIsSUFBSSxDQUE3QixJQUFJO29CQUFFLE1BQU0sR0FBYSxJQUFJLENBQXZCLE1BQU07b0JBQUUsTUFBTSxHQUFLLElBQUksQ0FBZixNQUFNOztBQUUxQixxQkFBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQix1QkFBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDMUI7QUFFRCx1QkFBTyxHQUFHLENBQUM7YUFDWjs7ZUFuREgsa0JBQUE7Ozs7QUE4RU8sUUFBTSwwQkFBMEIsR0FBdUI7OztBQUM1RCwyQkFBQTtBQUNFLG1FQXBKSyxXQUFXLDBCQUFYLFdBQVcsMEJBQUUsVUFBVSxDQW9KZSxDQUFDO1NBQzdDOzswQkFFRCxHQUFHLEdBQUEsZUFBQTtBQUNELGdEQTNKSyxtQkFBbUIsQ0EySkc7U0FDNUI7OzBCQUVELEdBQUcsR0FBQSxhQUFDLEdBQVcsRUFBQTtBQUNiLG1CQUFPLEtBQUssQ0FBQztTQUNkOzswQkFFRCxLQUFLLEdBQUEsaUJBQUE7QUFDSCwyQ0FoS2tCLFVBQVUsQ0FnS1Y7U0FDbkI7OztPQWY4RSxrQkFBa0IsSUFnQmpHLENBQUMiLCJmaWxlIjoibmFtZWQtYXJncy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVksIEVNUFRZX0RJQ1QgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZywgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIE9wYXF1ZSwgYXNzZXJ0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgc3RhdGljIGVtcHR5KCk6IENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfTkFNRURfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUobWFwOiBEaWN0PENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+Pik6IENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG4gICAgbGV0IGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgIGxldCB2YWx1ZXM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZXNbaV0gPSBtYXBba2V5c1tpXV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgdGhpcyhrZXlzLCB2YWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfTkFNRURfQVJHUztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtleXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyB2YWx1ZXM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W11cbiAgKSB7XG4gICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBhc3NlcnQoa2V5cy5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGgsICdLZXlzIGFuZCB2YWx1ZXMgZG8gbm90IGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWROYW1lZEFyZ3Mge1xuICAgIGxldCB7IGtleXMsIHZhbHVlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgIGxldCBldmFsdWF0ZWQ6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuZ3RoOyBpKyspIHtcbiAgICAgIGV2YWx1YXRlZFtpXSA9IHZhbHVlc1tpXS5ldmFsdWF0ZSh2bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFdmFsdWF0ZWROYW1lZEFyZ3Moa2V5cywgZXZhbHVhdGVkKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIGxldCB7IGtleXMsIHZhbHVlcyB9ID0gdGhpcztcbiAgICBsZXQgaW5uZXIgPSBrZXlzLm1hcCgoa2V5LCBpKSA9PiBgJHtrZXl9OiAke3ZhbHVlc1tpXS50b0pTT04oKX1gKS5qb2luKFwiLCBcIik7XG4gICAgcmV0dXJuIGB7JHtpbm5lcn19YDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ09NUElMRURfRU1QVFlfTkFNRURfQVJHUzogQ29tcGlsZWROYW1lZEFyZ3MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgQ29tcGlsZWROYW1lZEFyZ3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFTVBUWV9BUlJBWSwgRU1QVFlfQVJSQVkpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgICByZXR1cm4gRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1M7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYDxFTVBUWT5gO1xuICB9XG59KTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRlZE5hbWVkQXJncyB7XG4gIHN0YXRpYyBjcmVhdGUobWFwOiBEaWN0PFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4pIHtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG4gICAgbGV0IGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgIGxldCB2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZXNbaV0gPSBtYXBba2V5c1tpXV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgdGhpcyhrZXlzLCB2YWx1ZXMsIG1hcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgICByZXR1cm4gRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1M7XG4gIH1cblxuICBwdWJsaWMgdGFnOiBSZXZpc2lvblRhZztcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBrZXlzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgdmFsdWVzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSxcbiAgICBwcml2YXRlIF9tYXA6IERpY3Q8UGF0aFJlZmVyZW5jZTxPcGFxdWU+PiA9IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQodmFsdWVzKTtcbiAgICB0aGlzLmxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGFzc2VydChrZXlzLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aCwgJ0tleXMgYW5kIHZhbHVlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgfVxuXG4gIGdldCBtYXAoKTogRGljdDxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+IHtcbiAgICBsZXQgeyBfbWFwOiBtYXAgfSA9IHRoaXM7XG5cbiAgICBpZiAobWFwKSB7XG4gICAgICByZXR1cm4gbWFwO1xuICAgIH1cblxuICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3Q8UGF0aFJlZmVyZW5jZTxPcGFxdWU+PigpO1xuXG4gICAgbGV0IHsga2V5cywgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG5cbiAgICBmb3IobGV0IGk9MDsgaTxsZW5ndGg7IGkrKykge1xuICAgICAgbWFwW2tleXNbaV1dID0gdmFsdWVzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIGxldCB7IGtleXMsIHZhbHVlcyB9ID0gdGhpcztcbiAgICBsZXQgaW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcbiAgICByZXR1cm4gKGluZGV4ID09PSAtMSkgPyBVTkRFRklORURfUkVGRVJFTkNFIDogdmFsdWVzW2luZGV4XTtcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtleXMuaW5kZXhPZihrZXkpICE9PSAtMTtcbiAgfVxuXG4gIHZhbHVlKCk6IERpY3Q8T3BhcXVlPiB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuXG4gICAgbGV0IG91dCA9IGRpY3Q8T3BhcXVlPigpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQga2V5ID0ga2V5c1tpXTtcbiAgICAgIGxldCByZWYgPSB2YWx1ZXNbaV07XG4gICAgICBvdXRba2V5XSA9IHJlZi52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVWQUxVQVRFRF9FTVBUWV9OQU1FRF9BUkdTOiBFdmFsdWF0ZWROYW1lZEFyZ3MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZLCBFTVBUWV9ESUNUKTtcbiAgfVxuXG4gIGdldCgpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFsdWUoKTogRGljdDxPcGFxdWU+IHtcbiAgICByZXR1cm4gRU1QVFlfRElDVDtcbiAgfVxufSk7XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/expressions/positional-args', ['exports', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/utils', 'glimmer-reference'], function (exports, _glimmerRuntimeLibReferences, _glimmerRuntimeLibUtils, _glimmerReference) {
- 'use strict';
+enifed("htmlbars-runtime/hooks", ["exports", "htmlbars-runtime/render", "morph-range/morph-list", "htmlbars-util/object-utils", "htmlbars-util/morph-utils", "htmlbars-util/template-utils"], function (exports, _htmlbarsRuntimeRender, _morphRangeMorphList, _htmlbarsUtilObjectUtils, _htmlbarsUtilMorphUtils, _htmlbarsUtilTemplateUtils) {
+ "use strict";
- var CompiledPositionalArgs = (function () {
- function CompiledPositionalArgs(values) {
- this.values = values;
- this.length = values.length;
- }
+ exports.wrap = wrap;
+ exports.wrapForHelper = wrapForHelper;
+ exports.createScope = createScope;
+ exports.createFreshScope = createFreshScope;
+ exports.bindShadowScope = bindShadowScope;
+ exports.createChildScope = createChildScope;
+ exports.bindSelf = bindSelf;
+ exports.updateSelf = updateSelf;
+ exports.bindLocal = bindLocal;
+ exports.updateLocal = updateLocal;
+ exports.bindBlock = bindBlock;
+ exports.block = block;
+ exports.continueBlock = continueBlock;
+ exports.hostBlock = hostBlock;
+ exports.handleRedirect = handleRedirect;
+ exports.handleKeyword = handleKeyword;
+ exports.linkRenderNode = linkRenderNode;
+ exports.inline = inline;
+ exports.keyword = keyword;
+ exports.invokeHelper = invokeHelper;
+ exports.classify = classify;
+ exports.partial = partial;
+ exports.range = range;
+ exports.element = element;
+ exports.attribute = attribute;
+ exports.subexpr = subexpr;
+ exports.get = get;
+ exports.getRoot = getRoot;
+ exports.getBlock = getBlock;
+ exports.getChild = getChild;
+ exports.getValue = getValue;
+ exports.getCellOrValue = getCellOrValue;
+ exports.component = component;
+ exports.concat = concat;
+ exports.hasHelper = hasHelper;
+ exports.lookupHelper = lookupHelper;
+ exports.bindScope = bindScope;
+ exports.updateScope = updateScope;
- CompiledPositionalArgs.create = function create(values) {
- if (values.length) {
- return new this(values);
- } else {
- return COMPILED_EMPTY_POSITIONAL_ARGS;
- }
- };
+ /**
+ HTMLBars delegates the runtime behavior of a template to
+ hooks provided by the host environment. These hooks explain
+ the lexical environment of a Handlebars template, the internal
+ representation of references, and the interaction between an
+ HTMLBars template and the DOM it is managing.
+
+ While HTMLBars host hooks have access to all of this internal
+ machinery, templates and helpers have access to the abstraction
+ provided by the host hooks.
+
+ ## The Lexical Environment
+
+ The default lexical environment of an HTMLBars template includes:
+
+ * Any local variables, provided by *block arguments*
+ * The current value of `self`
+
+ ## Simple Nesting
+
+ Let's look at a simple template with a nested block:
+
+ ```hbs
+ <h1>{{title}}</h1>
+
+ {{#if author}}
+ <p class="byline">{{author}}</p>
+ {{/if}}
+ ```
+
+ In this case, the lexical environment at the top-level of the
+ template does not change inside of the `if` block. This is
+ achieved via an implementation of `if` that looks like this:
+
+ ```js
+ registerHelper('if', function(params) {
+ if (!!params[0]) {
+ return this.yield();
+ }
+ });
+ ```
+
+ A call to `this.yield` invokes the child template using the
+ current lexical environment.
+
+ ## Block Arguments
+
+ It is possible for nested blocks to introduce new local
+ variables:
+
+ ```hbs
+ {{#count-calls as |i|}}
+ <h1>{{title}}</h1>
+ <p>Called {{i}} times</p>
+ {{/count}}
+ ```
+
+ In this example, the child block inherits its surrounding
+ lexical environment, but augments it with a single new
+ variable binding.
+
+ The implementation of `count-calls` supplies the value of
+ `i`, but does not otherwise alter the environment:
+
+ ```js
+ var count = 0;
+ registerHelper('count-calls', function() {
+ return this.yield([ ++count ]);
+ });
+ ```
+ */
- CompiledPositionalArgs.empty = function empty() {
- return COMPILED_EMPTY_POSITIONAL_ARGS;
- };
+ function wrap(template) {
+ if (template === null) {
+ return null;
+ }
- CompiledPositionalArgs.prototype.evaluate = function evaluate(vm) {
- var values = this.values;
- var length = this.length;
+ return {
+ meta: template.meta,
+ arity: template.arity,
+ raw: template,
+ render: function (self, env, options, blockArguments) {
+ var scope = env.hooks.createFreshScope();
- var references = new Array(length);
- for (var i = 0; i < length; i++) {
- references[i] = values[i].evaluate(vm);
- }
- return EvaluatedPositionalArgs.create(references);
- };
+ var contextualElement = options && options.contextualElement;
+ var renderOptions = new _htmlbarsRuntimeRender.RenderOptions(null, self, blockArguments, contextualElement);
- CompiledPositionalArgs.prototype.toJSON = function toJSON() {
- return '[' + this.values.map(function (value) {
- return value.toJSON();
- }).join(", ") + ']';
- };
+ return _htmlbarsRuntimeRender.default(template, env, scope, renderOptions);
+ }
+ };
+ }
- return CompiledPositionalArgs;
- })();
+ function wrapForHelper(template, env, scope, morph, renderState, visitor) {
+ if (!template) {
+ return {};
+ }
- exports.CompiledPositionalArgs = CompiledPositionalArgs;
- var COMPILED_EMPTY_POSITIONAL_ARGS = new ((function (_CompiledPositionalArgs) {
- babelHelpers.inherits(_class, _CompiledPositionalArgs);
+ var yieldArgs = yieldTemplate(template, env, scope, morph, renderState, visitor);
- function _class() {
- _CompiledPositionalArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY);
- }
+ return {
+ meta: template.meta,
+ arity: template.arity,
+ 'yield': yieldArgs, // quoted since it's a reserved word, see issue #420
+ yieldItem: yieldItem(template, env, scope, morph, renderState, visitor),
+ raw: template,
- _class.prototype.evaluate = function evaluate(vm) {
- return EVALUATED_EMPTY_POSITIONAL_ARGS;
- };
+ render: function (self, blockArguments) {
+ yieldArgs(blockArguments, self);
+ }
+ };
+ }
- _class.prototype.toJSON = function toJSON() {
- return '<EMPTY>';
- };
+ // Called by a user-land helper to render a template.
+ function yieldTemplate(template, env, parentScope, morph, renderState, visitor) {
+ return function (blockArguments, self) {
+ // Render state is used to track the progress of the helper (since it
+ // may call into us multiple times). As the user-land helper calls
+ // into library code, we track what needs to be cleaned up after the
+ // helper has returned.
+ //
+ // Here, we remember that a template has been yielded and so we do not
+ // need to remove the previous template. (If no template is yielded
+ // this render by the helper, we assume nothing should be shown and
+ // remove any previous rendered templates.)
+ renderState.morphToClear = null;
- return _class;
- })(CompiledPositionalArgs))();
- exports.COMPILED_EMPTY_POSITIONAL_ARGS = COMPILED_EMPTY_POSITIONAL_ARGS;
+ // In this conditional is true, it means that on the previous rendering pass
+ // the helper yielded multiple items via `yieldItem()`, but this time they
+ // are yielding a single template. In that case, we mark the morph list for
+ // cleanup so it is removed from the DOM.
+ if (morph.morphList) {
+ _htmlbarsUtilTemplateUtils.clearMorphList(morph.morphList, morph, env);
+ renderState.morphListToClear = null;
+ }
- var EvaluatedPositionalArgs = (function () {
- function EvaluatedPositionalArgs(values) {
- this.values = values;
- this.tag = _glimmerReference.combineTagged(values);
- this.length = values.length;
- }
+ var scope = parentScope;
- EvaluatedPositionalArgs.create = function create(values) {
- return new this(values);
- };
+ if (morph.lastYielded && isStableTemplate(template, morph.lastYielded)) {
+ return morph.lastResult.revalidateWith(env, undefined, self, blockArguments, visitor);
+ }
- EvaluatedPositionalArgs.empty = function empty() {
- return EVALUATED_EMPTY_POSITIONAL_ARGS;
- };
+ // Check to make sure that we actually **need** a new scope, and can't
+ // share the parent scope. Note that we need to move this check into
+ // a host hook, because the host's notion of scope may require a new
+ // scope in more cases than the ones we can determine statically.
+ if (self !== undefined || parentScope === null || template.arity) {
+ scope = env.hooks.createChildScope(parentScope);
+ }
- EvaluatedPositionalArgs.prototype.at = function at(index) {
- var values = this.values;
- var length = this.length;
+ morph.lastYielded = { self: self, template: template, shadowTemplate: null };
- return index < length ? values[index] : _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE;
- };
+ // Render the template that was selected by the helper
+ var renderOptions = new _htmlbarsRuntimeRender.RenderOptions(morph, self, blockArguments);
+ _htmlbarsRuntimeRender.default(template, env, scope, renderOptions);
+ };
+ }
- EvaluatedPositionalArgs.prototype.value = function value() {
- var values = this.values;
- var length = this.length;
+ function yieldItem(template, env, parentScope, morph, renderState, visitor) {
+ // Initialize state that tracks multiple items being
+ // yielded in.
+ var currentMorph = null;
- var ret = new Array(length);
- for (var i = 0; i < length; i++) {
- ret[i] = values[i].value();
- }
- return ret;
- };
+ // Candidate morphs for deletion.
+ var candidates = {};
- return EvaluatedPositionalArgs;
- })();
+ // Reuse existing MorphList if this is not a first-time
+ // render.
+ var morphList = morph.morphList;
+ if (morphList) {
+ currentMorph = morphList.firstChildMorph;
+ }
- exports.EvaluatedPositionalArgs = EvaluatedPositionalArgs;
- var EVALUATED_EMPTY_POSITIONAL_ARGS = new ((function (_EvaluatedPositionalArgs) {
- babelHelpers.inherits(_class2, _EvaluatedPositionalArgs);
+ // Advances the currentMorph pointer to the morph in the previously-rendered
+ // list that matches the yielded key. While doing so, it marks any morphs
+ // that it advances past as candidates for deletion. Assuming those morphs
+ // are not yielded in later, they will be removed in the prune step during
+ // cleanup.
+ // Note that this helper function assumes that the morph being seeked to is
+ // guaranteed to exist in the previous MorphList; if this is called and the
+ // morph does not exist, it will result in an infinite loop
+ function advanceToKey(key) {
+ var seek = currentMorph;
- function _class2() {
- _EvaluatedPositionalArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY);
- }
+ while (seek.key !== key) {
+ candidates[seek.key] = seek;
+ seek = seek.nextMorph;
+ }
- _class2.prototype.at = function at() {
- return _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE;
- };
+ currentMorph = seek.nextMorph;
+ return seek;
+ }
- _class2.prototype.value = function value() {
- return this.values;
- };
+ return function (_key, blockArguments, self) {
+ if (typeof _key !== 'string') {
+ throw new Error("You must provide a string key when calling `yieldItem`; you provided " + _key);
+ }
- return _class2;
- })(EvaluatedPositionalArgs))();
- exports.EVALUATED_EMPTY_POSITIONAL_ARGS = EVALUATED_EMPTY_POSITIONAL_ARGS;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvcG9zaXRpb25hbC1hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQU9BLHNCQUFBO0FBZUUsaUJBZkYsc0JBQUEsQ0FlcUIsTUFBb0MsRUFBQTtBQUFwQyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQThCO0FBQ3JELGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7O0FBakJILDhCQUFBLENBQ1MsTUFBTSxHQUFBLGdCQUFDLE1BQW9DLEVBQUE7QUFDaEQsZ0JBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUNqQix1QkFBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6QixNQUFNO0FBQ0wsdUJBQU8sOEJBQThCLENBQUM7YUFDdkM7U0FDRjs7QUFQSCw4QkFBQSxDQVNTLEtBQUssR0FBQSxpQkFBQTtBQUNWLG1CQUFPLDhCQUE4QixDQUFDO1NBQ3ZDOztBQVhILDhCQUFBLFdBbUJFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7Z0JBQ1AsTUFBTSxHQUFhLElBQUksQ0FBdkIsTUFBTTtnQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ3BCLGdCQUFJLFVBQVUsR0FBNEIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFNUQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0IsMEJBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hDO0FBRUQsbUJBQU8sdUJBQXVCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25EOztBQTVCSCw4QkFBQSxXQThCRSxNQUFNLEdBQUEsa0JBQUE7QUFDSix5QkFBVyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUs7dUJBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTthQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQUk7U0FDbkU7O2VBaENILHNCQUFBOzs7O0FBbUNPLFFBQU0sOEJBQThCLEdBQTJCOzs7QUFDcEUsMEJBQUE7QUFDRSx1RUF6Q0ssV0FBVyxDQXlDRSxDQUFDO1NBQ3BCOzt5QkFFRCxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sK0JBQStCLENBQUM7U0FDeEM7O3lCQUVELE1BQU0sR0FBQSxrQkFBQTtBQUNKLDZCQUFpQjtTQUNsQjs7O09BWHNGLHNCQUFzQixJQVk3RyxDQUFDOzs7UUFFSCx1QkFBQTtBQVlFLGlCQVpGLHVCQUFBLENBWXFCLE1BQStCLEVBQUE7QUFBL0IsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUF5QjtBQUNoRCxnQkFBSSxDQUFDLEdBQUcsR0FBRyxrQkFqRXNCLGFBQWEsQ0FpRXJCLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7O0FBZkgsK0JBQUEsQ0FDUyxNQUFNLEdBQUEsZ0JBQUMsTUFBK0IsRUFBQTtBQUMzQyxtQkFBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6Qjs7QUFISCwrQkFBQSxDQUtTLEtBQUssR0FBQSxpQkFBQTtBQUNWLG1CQUFPLCtCQUErQixDQUFDO1NBQ3hDOztBQVBILCtCQUFBLFdBaUJFLEVBQUUsR0FBQSxZQUFDLEtBQWEsRUFBQTtnQkFDUixNQUFNLEdBQWEsSUFBSSxDQUF2QixNQUFNO2dCQUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFDcEIsbUJBQU8sQUFBQyxLQUFLLEdBQUcsTUFBTSxHQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBM0VsQyxtQkFBbUIsQUEyRXFDLENBQUM7U0FDL0Q7O0FBcEJILCtCQUFBLFdBc0JFLEtBQUssR0FBQSxpQkFBQTtnQkFDRyxNQUFNLEdBQWEsSUFBSSxDQUF2QixNQUFNO2dCQUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFDcEIsZ0JBQUksR0FBRyxHQUFhLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXRDLGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9CLG1CQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzVCO0FBRUQsbUJBQU8sR0FBRyxDQUFDO1NBQ1o7O2VBL0JILHVCQUFBOzs7O0FBa0NPLFFBQU0sK0JBQStCLEdBQTRCOzs7QUFDdEUsMkJBQUE7QUFDRSx3RUF6RkssV0FBVyxDQXlGRSxDQUFDO1NBQ3BCOzswQkFFRCxFQUFFLEdBQUEsY0FBQTtBQUNBLGdEQWhHSyxtQkFBbUIsQ0FnR0c7U0FDNUI7OzBCQUVELEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDcEI7OztPQVh3Rix1QkFBdUIsSUFZaEgsQ0FBQyIsImZpbGUiOiJwb3NpdGlvbmFsLWFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgUmV2aXNpb25UYWcsIGNvbWJpbmVUYWdnZWQgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gIHN0YXRpYyBjcmVhdGUodmFsdWVzOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPltdKTogQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh2YWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBlbXB0eSgpIHtcbiAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICB9XG5cbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZXM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W10pIHtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgbGV0IHsgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgbGV0IHJlZmVyZW5jZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZWZlcmVuY2VzW2ldID0gdmFsdWVzW2ldLmV2YWx1YXRlKHZtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MuY3JlYXRlKHJlZmVyZW5jZXMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudG9KU09OKCkpLmpvaW4oXCIsIFwiKX1dYDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTOiBDb21waWxlZFBvc2l0aW9uYWxBcmdzID0gbmV3IChjbGFzcyBleHRlbmRzIENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFTVBUWV9BUlJBWSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1M7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYDxFTVBUWT5gO1xuICB9XG59KTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgc3RhdGljIGNyZWF0ZSh2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHZhbHVlcyk7XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICB9XG5cbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSkge1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZCh2YWx1ZXMpO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIGxldCB7IHZhbHVlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgIHJldHVybiAoaW5kZXggPCBsZW5ndGgpID8gdmFsdWVzW2luZGV4XSA6IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gIH1cblxuICB2YWx1ZSgpOiBPcGFxdWVbXSB7XG4gICAgbGV0IHsgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgbGV0IHJldDogT3BhcXVlW10gPSBuZXcgQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHZhbHVlc1tpXS52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1M6IEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzID0gbmV3IChjbGFzcyBleHRlbmRzIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRU1QVFlfQVJSQVkpO1xuICB9XG5cbiAgYXQoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgfVxuXG4gIHZhbHVlKCk6IE9wYXF1ZVtdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cbn0pO1xuIl19
-enifed('glimmer-runtime/lib/compiled/expressions/value', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerReference, _glimmerUtil) {
- 'use strict';
+ // At least one item has been yielded, so we do not wholesale
+ // clear the last MorphList but instead apply a prune operation.
+ renderState.morphListToClear = null;
+ morph.lastYielded = null;
- var CompiledValue = (function (_CompiledExpression) {
- babelHelpers.inherits(CompiledValue, _CompiledExpression);
+ var morphList, morphMap;
- function CompiledValue(value) {
- _CompiledExpression.call(this);
- this.type = "value";
- this.reference = new ValueReference(value);
- }
+ if (!morph.morphList) {
+ morph.morphList = new _morphRangeMorphList.default();
+ morph.morphMap = {};
+ morph.setMorphList(morph.morphList);
+ }
- CompiledValue.prototype.evaluate = function evaluate(vm) {
- return this.reference;
- };
+ morphList = morph.morphList;
+ morphMap = morph.morphMap;
- CompiledValue.prototype.toJSON = function toJSON() {
- return JSON.stringify(this.reference.value());
- };
+ // A map of morphs that have been yielded in on this
+ // rendering pass. Any morphs that do not make it into
+ // this list will be pruned from the MorphList during the cleanup
+ // process.
+ var handledMorphs = renderState.handledMorphs;
+ var key = undefined;
- return CompiledValue;
- })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression);
-
- exports.default = CompiledValue;
-
- var ValueReference = (function (_ConstReference) {
- babelHelpers.inherits(ValueReference, _ConstReference);
-
- function ValueReference() {
- _ConstReference.apply(this, arguments);
- this.children = _glimmerUtil.dict();
+ if (_key in handledMorphs) {
+ // In this branch we are dealing with a duplicate key. The strategy
+ // is to take the original key and append a counter to it that is
+ // incremented every time the key is reused. In order to greatly
+ // reduce the chance of colliding with another valid key we also add
+ // an extra string "--z8mS2hvDW0A--" to the new key.
+ var collisions = renderState.collisions;
+ if (collisions === undefined) {
+ collisions = renderState.collisions = {};
}
+ var count = collisions[_key] | 0;
+ collisions[_key] = ++count;
- ValueReference.prototype.get = function get(key) {
- var children = this.children;
+ key = _key + '--z8mS2hvDW0A--' + count;
+ } else {
+ key = _key;
+ }
- var child = children[key];
- if (!child) {
- child = children[key] = new ValueReference(this.inner[key]);
- }
- return child;
- };
+ if (currentMorph && currentMorph.key === key) {
+ yieldTemplate(template, env, parentScope, currentMorph, renderState, visitor)(blockArguments, self);
+ currentMorph = currentMorph.nextMorph;
+ handledMorphs[key] = currentMorph;
+ } else if (morphMap[key] !== undefined) {
+ var foundMorph = morphMap[key];
- ValueReference.prototype.value = function value() {
- return this.inner;
- };
-
- return ValueReference;
- })(_glimmerReference.ConstReference);
-
- exports.ValueReference = ValueReference;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBS0EsYUFBQTs4QkFBQSxhQUFBOztBQUlFLGlCQUpGLGFBQUEsQ0FJYyxLQUFVLEVBQUE7QUFDcEIsMENBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUtwQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1Qzs7QUFQSCxxQkFBQSxXQVNFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixtQkFBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCOztBQVhILHFCQUFBLFdBYUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDL0M7O2VBZkgsYUFBQTs2Q0FKUyxrQkFBa0I7O3NCQUkzQixhQUFBOztRQWtCQSxjQUFBOzhCQUFBLGNBQUE7O0FBQUEsaUJBQUEsY0FBQSxHQUFBO0FBQXVDLHdDQUFBLFNBQUEsQ0FBQSxDQUFpQjtBQUU1QyxnQkFBQSxDQUFBLFFBQVEsR0FBOEIsYUF0Qm5DLElBQUksRUFzQjBELENBQUM7U0FjN0U7O0FBaEJELHNCQUFBLFdBSUUsR0FBRyxHQUFBLGFBQUMsR0FBVyxFQUFBO2dCQUNQLFFBQVEsR0FBSyxJQUFJLENBQWpCLFFBQVE7O0FBQ2QsZ0JBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUxQixnQkFBSSxDQUFDLEtBQUssRUFBRTtBQUNWLHFCQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM3RDtBQUVELG1CQUFPLEtBQUssQ0FBQztTQUNkOztBQWJILHNCQUFBLFdBZUUsS0FBSyxHQUFBLGlCQUFBO0FBQVUsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFFOztlQWZyQyxjQUFBO3lCQXJCUyxjQUFjIiwiZmlsZSI6InZhbHVlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlZFZhbHVlPFQ+IGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgcHVibGljIHR5cGUgPSBcInZhbHVlXCI7XG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWYWx1ZVJlZmVyZW5jZTxUPjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5yZWZlcmVuY2UudmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlUmVmZXJlbmNlPFQ+IGV4dGVuZHMgQ29uc3RSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgcHJvdGVjdGVkIGlubmVyOiBUO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW46IERpY3Q8VmFsdWVSZWZlcmVuY2U8YW55Pj4gPSBkaWN0PFZhbHVlUmVmZXJlbmNlPGFueT4+KCk7XG5cbiAgZ2V0KGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgY2hpbGRyZW4gfSA9IHRoaXM7XG4gICAgbGV0IGNoaWxkID0gY2hpbGRyZW5ba2V5XTtcblxuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5ba2V5XSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh0aGlzLmlubmVyW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLmlubmVyOyB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runtime/lib/compiled/opcodes/component', 'glimmer-runtime/lib/compiled/opcodes/partial', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-runtime/lib/compiled/opcodes/dom', 'glimmer-runtime/lib/compiled/opcodes/lists', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-util', 'glimmer-runtime/lib/utils'], function (exports, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesPartial, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerUtil, _glimmerRuntimeLibUtils) {
- 'use strict';
-
- var StatementCompilationBufferProxy = (function () {
- function StatementCompilationBufferProxy(inner) {
- this.inner = inner;
+ if (key in candidates) {
+ // If we already saw this morph, move it forward to this position
+ morphList.insertBeforeMorph(foundMorph, currentMorph);
+ } else {
+ // Otherwise, move the pointer forward to the existing morph for this key
+ advanceToKey(key);
}
- StatementCompilationBufferProxy.prototype.toOpSeq = function toOpSeq() {
- return this.inner.toOpSeq();
- };
+ handledMorphs[foundMorph.key] = foundMorph;
+ yieldTemplate(template, env, parentScope, foundMorph, renderState, visitor)(blockArguments, self);
+ } else {
+ var childMorph = _htmlbarsRuntimeRender.createChildMorph(env.dom, morph);
+ childMorph.key = key;
+ morphMap[key] = handledMorphs[key] = childMorph;
+ morphList.insertBeforeMorph(childMorph, currentMorph);
+ yieldTemplate(template, env, parentScope, childMorph, renderState, visitor)(blockArguments, self);
+ }
- StatementCompilationBufferProxy.prototype.append = function append(opcode) {
- this.inner.append(opcode);
- };
+ renderState.morphListToPrune = morphList;
+ morph.childNodes = null;
+ };
+ }
- StatementCompilationBufferProxy.prototype.getLocalSymbol = function getLocalSymbol(name) {
- return this.inner.getLocalSymbol(name);
- };
+ function isStableTemplate(template, lastYielded) {
+ return !lastYielded.shadowTemplate && template === lastYielded.template;
+ }
+ function optionsFor(template, inverse, env, scope, morph, visitor) {
+ // If there was a template yielded last time, set morphToClear so it will be cleared
+ // if no template is yielded on this render.
+ var morphToClear = morph.lastResult ? morph : null;
+ var renderState = new _htmlbarsUtilTemplateUtils.RenderState(morphToClear, morph.morphList || null);
- StatementCompilationBufferProxy.prototype.hasLocalSymbol = function hasLocalSymbol(name) {
- return this.inner.hasLocalSymbol(name);
- };
+ return {
+ templates: {
+ template: wrapForHelper(template, env, scope, morph, renderState, visitor),
+ inverse: wrapForHelper(inverse, env, scope, morph, renderState, visitor)
+ },
+ renderState: renderState
+ };
+ }
- StatementCompilationBufferProxy.prototype.getNamedSymbol = function getNamedSymbol(name) {
- return this.inner.getNamedSymbol(name);
- };
+ function thisFor(options) {
+ return {
+ arity: options.template.arity,
+ 'yield': options.template.yield, // quoted since it's a reserved word, see issue #420
+ yieldItem: options.template.yieldItem,
+ yieldIn: options.template.yieldIn
+ };
+ }
- StatementCompilationBufferProxy.prototype.hasNamedSymbol = function hasNamedSymbol(name) {
- return this.inner.hasNamedSymbol(name);
- };
+ /**
+ Host Hook: createScope
+
+ @param {Scope?} parentScope
+ @return Scope
+
+ Corresponds to entering a new HTMLBars block.
+
+ This hook is invoked when a block is entered with
+ a new `self` or additional local variables.
+
+ When invoked for a top-level template, the
+ `parentScope` is `null`, and this hook should return
+ a fresh Scope.
+
+ When invoked for a child template, the `parentScope`
+ is the scope for the parent environment.
+
+ Note that the `Scope` is an opaque value that is
+ passed to other host hooks. For example, the `get`
+ hook uses the scope to retrieve a value for a given
+ scope and variable name.
+ */
- StatementCompilationBufferProxy.prototype.getBlockSymbol = function getBlockSymbol(name) {
- return this.inner.getBlockSymbol(name);
- };
+ function createScope(env, parentScope) {
+ if (parentScope) {
+ return env.hooks.createChildScope(parentScope);
+ } else {
+ return env.hooks.createFreshScope();
+ }
+ }
- StatementCompilationBufferProxy.prototype.hasBlockSymbol = function hasBlockSymbol(name) {
- return this.inner.hasBlockSymbol(name);
- };
+ function createFreshScope() {
+ // because `in` checks have unpredictable performance, keep a
+ // separate dictionary to track whether a local was bound.
+ // See `bindLocal` for more information.
+ return { self: null, blocks: {}, locals: {}, localPresent: {} };
+ }
- StatementCompilationBufferProxy.prototype.getPartialArgsSymbol = function getPartialArgsSymbol() {
- return this.inner.getPartialArgsSymbol();
- };
+ /**
+ Host Hook: bindShadowScope
+
+ @param {Scope?} parentScope
+ @return Scope
+
+ Corresponds to rendering a new template into an existing
+ render tree, but with a new top-level lexical scope. This
+ template is called the "shadow root".
+
+ If a shadow template invokes `{{yield}}`, it will render
+ the block provided to the shadow root in the original
+ lexical scope.
+
+ ```hbs
+ {{!-- post template --}}
+ <p>{{props.title}}</p>
+ {{yield}}
+
+ {{!-- blog template --}}
+ {{#post title="Hello world"}}
+ <p>by {{byline}}</p>
+ <article>This is my first post</article>
+ {{/post}}
+
+ {{#post title="Goodbye world"}}
+ <p>by {{byline}}</p>
+ <article>This is my last post</article>
+ {{/post}}
+ ```
+
+ ```js
+ helpers.post = function(params, hash, options) {
+ options.template.yieldIn(postTemplate, { props: hash });
+ };
+
+ blog.render({ byline: "Yehuda Katz" });
+ ```
+
+ Produces:
+
+ ```html
+ <p>Hello world</p>
+ <p>by Yehuda Katz</p>
+ <article>This is my first post</article>
+
+ <p>Goodbye world</p>
+ <p>by Yehuda Katz</p>
+ <article>This is my last post</article>
+ ```
+
+ In short, `yieldIn` creates a new top-level scope for the
+ provided template and renders it, making the original block
+ available to `{{yield}}` in that template.
+ */
- StatementCompilationBufferProxy.prototype.hasPartialArgsSymbol = function hasPartialArgsSymbol() {
- return this.inner.hasPartialArgsSymbol();
- };
+ function bindShadowScope(env /*, parentScope, shadowScope */) {
+ return env.hooks.createFreshScope();
+ }
- babelHelpers.createClass(StatementCompilationBufferProxy, [{
- key: 'component',
- get: function () {
- return this.inner.component;
- }
- }]);
- return StatementCompilationBufferProxy;
- })();
+ function createChildScope(parent) {
+ var scope = Object.create(parent);
+ scope.locals = Object.create(parent.locals);
+ scope.localPresent = Object.create(parent.localPresent);
+ scope.blocks = Object.create(parent.blocks);
+ return scope;
+ }
- exports.StatementCompilationBufferProxy = StatementCompilationBufferProxy;
+ /**
+ Host Hook: bindSelf
+
+ @param {Scope} scope
+ @param {any} self
+
+ Corresponds to entering a template.
+
+ This hook is invoked when the `self` value for a scope is ready to be bound.
+
+ The host must ensure that child scopes reflect the change to the `self` in
+ future calls to the `get` hook.
+ */
- var BasicOpcodeBuilder = (function (_StatementCompilationBufferProxy) {
- babelHelpers.inherits(BasicOpcodeBuilder, _StatementCompilationBufferProxy);
+ function bindSelf(env, scope, self) {
+ scope.self = self;
+ }
- function BasicOpcodeBuilder(inner, symbolTable, env) {
- _StatementCompilationBufferProxy.call(this, inner);
- this.symbolTable = symbolTable;
- this.env = env;
- this.labelsStack = new _glimmerUtil.Stack();
- this.templatesStack = new _glimmerUtil.Stack();
- }
+ function updateSelf(env, scope, self) {
+ env.hooks.bindSelf(env, scope, self);
+ }
- // helpers
+ /**
+ Host Hook: bindLocal
+
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} name
+ @param {any} value
+
+ Corresponds to entering a template with block arguments.
+
+ This hook is invoked when a local variable for a scope has been provided.
+
+ The host must ensure that child scopes reflect the change in future calls
+ to the `get` hook.
+ */
- BasicOpcodeBuilder.prototype.startBlock = function startBlock(templates) {
- this.templatesStack.push(templates);
- };
+ function bindLocal(env, scope, name, value) {
+ scope.localPresent[name] = true;
+ scope.locals[name] = value;
+ }
- BasicOpcodeBuilder.prototype.endBlock = function endBlock() {
- this.templatesStack.pop();
- };
+ function updateLocal(env, scope, name, value) {
+ env.hooks.bindLocal(env, scope, name, value);
+ }
- BasicOpcodeBuilder.prototype.startLabels = function startLabels() {
- this.labelsStack.push(_glimmerUtil.dict());
- };
+ /**
+ Host Hook: bindBlock
+
+ @param {Environment} env
+ @param {Scope} scope
+ @param {Function} block
+
+ Corresponds to entering a shadow template that was invoked by a block helper with
+ `yieldIn`.
+
+ This hook is invoked with an opaque block that will be passed along
+ to the shadow template, and inserted into the shadow template when
+ `{{yield}}` is used. Optionally provide a non-default block name
+ that can be targeted by `{{yield to=blockName}}`.
+ */
- BasicOpcodeBuilder.prototype.stopLabels = function stopLabels() {
- this.labelsStack.pop();
- };
+ function bindBlock(env, scope, block) {
+ var name = arguments.length <= 3 || arguments[3] === undefined ? 'default' : arguments[3];
- BasicOpcodeBuilder.prototype.labelFor = function labelFor(name) {
- var labels = this.labels;
- var label = labels[name];
- if (!label) {
- label = labels[name] = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode(name);
- }
- return label;
- };
+ scope.blocks[name] = block;
+ }
- // partials
+ /**
+ Host Hook: block
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} path
+ @param {Array} params
+ @param {Object} hash
+ @param {Block} block
+ @param {Block} elseBlock
+
+ Corresponds to:
+
+ ```hbs
+ {{#helper param1 param2 key1=val1 key2=val2}}
+ {{!-- child template --}}
+ {{/helper}}
+ ```
+
+ This host hook is a workhorse of the system. It is invoked
+ whenever a block is encountered, and is responsible for
+ resolving the helper to call, and then invoke it.
+
+ The helper should be invoked with:
+
+ - `{Array} params`: the parameters passed to the helper
+ in the template.
+ - `{Object} hash`: an object containing the keys and values passed
+ in the hash position in the template.
+
+ The values in `params` and `hash` will already be resolved
+ through a previous call to the `get` host hook.
+
+ The helper should be invoked with a `this` value that is
+ an object with one field:
+
+ `{Function} yield`: when invoked, this function executes the
+ block with the current scope. It takes an optional array of
+ block parameters. If block parameters are supplied, HTMLBars
+ will invoke the `bindLocal` host hook to bind the supplied
+ values to the block arguments provided by the template.
+
+ In general, the default implementation of `block` should work
+ for most host environments. It delegates to other host hooks
+ where appropriate, and properly invokes the helper with the
+ appropriate arguments.
+ */
- BasicOpcodeBuilder.prototype.putPartialDefinition = function putPartialDefinition(definition) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutPartialDefinitionOpcode(definition));
- };
-
- BasicOpcodeBuilder.prototype.putDynamicPartialDefinition = function putDynamicPartialDefinition() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutDynamicPartialDefinitionOpcode(this.symbolTable));
- };
-
- BasicOpcodeBuilder.prototype.evaluatePartial = function evaluatePartial() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.EvaluatePartialOpcode(this.symbolTable));
- };
-
- // components
-
- BasicOpcodeBuilder.prototype.putComponentDefinition = function putComponentDefinition(definition) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutComponentDefinitionOpcode(definition));
- };
-
- BasicOpcodeBuilder.prototype.putDynamicComponentDefinition = function putDynamicComponentDefinition() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutDynamicComponentDefinitionOpcode());
- };
-
- BasicOpcodeBuilder.prototype.openComponent = function openComponent(args) {
- var shadow = arguments.length <= 1 || arguments[1] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[1];
-
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOpcode(this.compile(args), shadow, this.templates));
- };
-
- BasicOpcodeBuilder.prototype.didCreateElement = function didCreateElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.DidCreateElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.shadowAttributes = function shadowAttributes() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.ShadowAttributesOpcode());
- };
-
- BasicOpcodeBuilder.prototype.didRenderLayout = function didRenderLayout() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.DidRenderLayoutOpcode());
- };
-
- BasicOpcodeBuilder.prototype.closeComponent = function closeComponent() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.CloseComponentOpcode());
- };
-
- // content
-
- BasicOpcodeBuilder.prototype.cautiousAppend = function cautiousAppend() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedCautiousAppendOpcode());
- };
-
- BasicOpcodeBuilder.prototype.trustingAppend = function trustingAppend() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedTrustingAppendOpcode());
- };
-
- // dom
-
- BasicOpcodeBuilder.prototype.text = function text(_text) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.TextOpcode(_text));
- };
-
- BasicOpcodeBuilder.prototype.openPrimitiveElement = function openPrimitiveElement(tag) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(tag));
- };
-
- BasicOpcodeBuilder.prototype.openComponentElement = function openComponentElement(tag) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenComponentElementOpcode(tag));
- };
-
- BasicOpcodeBuilder.prototype.openDynamicPrimitiveElement = function openDynamicPrimitiveElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenDynamicPrimitiveElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.flushElement = function flushElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.FlushElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.closeElement = function closeElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.CloseElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.staticAttr = function staticAttr(name, namespace, value) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.StaticAttrOpcode(name, namespace, value));
- };
-
- BasicOpcodeBuilder.prototype.dynamicAttrNS = function dynamicAttrNS(name, namespace, isTrusting) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrNSOpcode(name, namespace, isTrusting));
- };
-
- BasicOpcodeBuilder.prototype.dynamicAttr = function dynamicAttr(name, isTrusting) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrOpcode(name, isTrusting));
- };
-
- BasicOpcodeBuilder.prototype.comment = function comment(_comment) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.CommentOpcode(_comment));
- };
-
- // lists
-
- BasicOpcodeBuilder.prototype.putIterator = function putIterator() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesLists.PutIteratorOpcode());
- };
-
- BasicOpcodeBuilder.prototype.enterList = function enterList(start, end) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesLists.EnterListOpcode(this.labelFor(start), this.labelFor(end)));
- };
-
- BasicOpcodeBuilder.prototype.exitList = function exitList() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesLists.ExitListOpcode());
- };
-
- BasicOpcodeBuilder.prototype.enterWithKey = function enterWithKey(start, end) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesLists.EnterWithKeyOpcode(this.labelFor(start), this.labelFor(end)));
- };
-
- BasicOpcodeBuilder.prototype.nextIter = function nextIter(end) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesLists.NextIterOpcode(this.labelFor(end)));
- };
-
- // vm
-
- BasicOpcodeBuilder.prototype.pushRemoteElement = function pushRemoteElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.PushRemoteElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.popRemoteElement = function popRemoteElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.PopRemoteElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.popElement = function popElement() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesDom.PopElementOpcode());
- };
-
- BasicOpcodeBuilder.prototype.label = function label(name) {
- this.append(this.labelFor(name));
- };
-
- BasicOpcodeBuilder.prototype.pushChildScope = function pushChildScope() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PushChildScopeOpcode());
- };
-
- BasicOpcodeBuilder.prototype.popScope = function popScope() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PopScopeOpcode());
- };
-
- BasicOpcodeBuilder.prototype.pushDynamicScope = function pushDynamicScope() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PushDynamicScopeOpcode());
- };
-
- BasicOpcodeBuilder.prototype.popDynamicScope = function popDynamicScope() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PopDynamicScopeOpcode());
- };
-
- BasicOpcodeBuilder.prototype.putNull = function putNull() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutNullOpcode());
- };
-
- BasicOpcodeBuilder.prototype.putValue = function putValue(expression) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode(this.compile(expression)));
- };
-
- BasicOpcodeBuilder.prototype.putArgs = function putArgs(args) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutArgsOpcode(this.compile(args)));
- };
-
- BasicOpcodeBuilder.prototype.bindDynamicScope = function bindDynamicScope(names) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindDynamicScopeOpcode(names));
- };
-
- BasicOpcodeBuilder.prototype.bindPositionalArgs = function bindPositionalArgs(names, symbols) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindPositionalArgsOpcode(names, symbols));
- };
-
- BasicOpcodeBuilder.prototype.bindNamedArgs = function bindNamedArgs(names, symbols) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindNamedArgsOpcode(names, symbols));
- };
-
- BasicOpcodeBuilder.prototype.bindBlocks = function bindBlocks(names, symbols) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindBlocksOpcode(names, symbols));
- };
-
- BasicOpcodeBuilder.prototype.enter = function enter(_enter, exit) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.EnterOpcode(this.labelFor(_enter), this.labelFor(exit)));
- };
-
- BasicOpcodeBuilder.prototype.exit = function exit() {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.ExitOpcode());
- };
-
- BasicOpcodeBuilder.prototype.evaluate = function evaluate(name) {
- var block = arguments.length <= 1 || arguments[1] === undefined ? this.templates[name] : arguments[1];
- return (function () {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.EvaluateOpcode(name, block));
- }).apply(this, arguments);
- };
-
- BasicOpcodeBuilder.prototype.test = function test(testFunc) {
- if (testFunc === 'const') {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(_glimmerRuntimeLibCompiledOpcodesVm.ConstTest));
- } else if (testFunc === 'simple') {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(_glimmerRuntimeLibCompiledOpcodesVm.SimpleTest));
- } else if (testFunc === 'environment') {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(_glimmerRuntimeLibCompiledOpcodesVm.EnvironmentTest));
- } else if (typeof testFunc === 'function') {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(testFunc));
- } else {
- throw new Error('unreachable');
- }
- };
-
- BasicOpcodeBuilder.prototype.jump = function jump(target) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpOpcode(this.labelFor(target)));
- };
-
- BasicOpcodeBuilder.prototype.jumpIf = function jumpIf(target) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpIfOpcode(this.labelFor(target)));
- };
-
- BasicOpcodeBuilder.prototype.jumpUnless = function jumpUnless(target) {
- this.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpUnlessOpcode(this.labelFor(target)));
- };
-
- babelHelpers.createClass(BasicOpcodeBuilder, [{
- key: 'labels',
- get: function () {
- return this.labelsStack.current;
- }
- }, {
- key: 'templates',
- get: function () {
- return this.templatesStack.current;
- }
- }]);
- return BasicOpcodeBuilder;
- })(StatementCompilationBufferProxy);
-
- exports.BasicOpcodeBuilder = BasicOpcodeBuilder;
-
- function isCompilableExpression(expr) {
- return expr && typeof expr['compile'] === 'function';
+ function block(morph, env, scope, path, params, hash, template, inverse, visitor) {
+ if (handleRedirect(morph, env, scope, path, params, hash, template, inverse, visitor)) {
+ return;
}
- var SIMPLE_BLOCK = { templates: null };
- var OpcodeBuilder = (function (_BasicOpcodeBuilder) {
- babelHelpers.inherits(OpcodeBuilder, _BasicOpcodeBuilder);
+ continueBlock(morph, env, scope, path, params, hash, template, inverse, visitor);
+ }
- function OpcodeBuilder() {
- _BasicOpcodeBuilder.apply(this, arguments);
- }
+ function continueBlock(morph, env, scope, path, params, hash, template, inverse, visitor) {
+ hostBlock(morph, env, scope, template, inverse, null, visitor, function (options) {
+ var helper = env.hooks.lookupHelper(env, scope, path);
+ return env.hooks.invokeHelper(morph, env, scope, visitor, params, hash, helper, options.templates, thisFor(options.templates));
+ });
+ }
- OpcodeBuilder.prototype.compile = function compile(expr) {
- if (isCompilableExpression(expr)) {
- return expr.compile(this, this.env, this.symbolTable);
- } else {
- return expr;
- }
- };
+ function hostBlock(morph, env, scope, template, inverse, shadowOptions, visitor, callback) {
+ var options = optionsFor(template, inverse, env, scope, morph, visitor);
+ _htmlbarsUtilTemplateUtils.renderAndCleanup(morph, env, options, shadowOptions, callback);
+ }
- OpcodeBuilder.prototype.bindPositionalArgsForBlock = function bindPositionalArgsForBlock(block) {
- this.append(_glimmerRuntimeLibCompiledOpcodesVm.BindPositionalArgsOpcode.create(block));
- };
-
- OpcodeBuilder.prototype.bindNamedArgsForLayout = function bindNamedArgsForLayout(layout) {
- this.append(_glimmerRuntimeLibCompiledOpcodesVm.BindNamedArgsOpcode.create(layout));
- };
-
- OpcodeBuilder.prototype.bindBlocksForLayout = function bindBlocksForLayout(layout) {
- this.append(_glimmerRuntimeLibCompiledOpcodesVm.BindBlocksOpcode.create(layout));
- };
-
- OpcodeBuilder.prototype.bindPartialArgsForLayout = function bindPartialArgsForLayout(layout) {
- this.append(_glimmerRuntimeLibCompiledOpcodesVm.BindPartialArgsOpcode.create(layout));
- };
-
- OpcodeBuilder.prototype.simpleBlock = function simpleBlock(callback) {
- this.block(SIMPLE_BLOCK, callback);
- };
-
- // TODO
- // come back to this
-
- OpcodeBuilder.prototype.block = function block(_ref, callback) {
- var templates = _ref.templates;
- var args = _ref.args;
-
- if (args) this.putArgs(args);
- this.startLabels();
- this.startBlock(templates);
- this.enter('BEGIN', 'END');
- this.label('BEGIN');
- callback(this, 'BEGIN', 'END');
- this.label('END');
- this.exit();
- this.endBlock();
- this.stopLabels();
- };
-
- // TODO
- // come back to this
-
- OpcodeBuilder.prototype.iter = function iter(_ref2, callback) {
- var templates = _ref2.templates;
-
- this.startLabels();
- this.startBlock(templates);
- this.enterList('BEGIN', 'END');
- this.label('ITER');
- this.nextIter('BREAK');
- this.enterWithKey('BEGIN', 'END');
- this.label('BEGIN');
- callback(this, 'BEGIN', 'END');
- this.label('END');
- this.exit();
- this.jump('ITER');
- this.label('BREAK');
- this.exitList();
- this.endBlock();
- this.stopLabels();
- };
-
- // TODO
- // come back to this
-
- OpcodeBuilder.prototype.unit = function unit(_ref3, callback) {
- var templates = _ref3.templates;
-
- this.startLabels();
- this.startBlock(templates);
- callback(this);
- this.endBlock();
- this.stopLabels();
- };
-
- return OpcodeBuilder;
- })(BasicOpcodeBuilder);
-
- exports.default = OpcodeBuilder;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXlCQSwrQkFBQTtBQUVFLGlCQUZGLCtCQUFBLENBRXdCLEtBQWlDLEVBQUE7QUFBakMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUE0QjtTQUFJOztBQUY3RCx1Q0FBQSxXQVFFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7O0FBVkgsdUNBQUEsV0FZRSxNQUFNLEdBQUEsZ0JBQW1CLE1BQVMsRUFBQTtBQUNoQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7O0FBZEgsdUNBQUEsV0FnQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUFsQkgsdUNBQUEsV0FvQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUF0QkgsdUNBQUEsV0F3QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUExQkgsdUNBQUEsV0E0QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUE5QkgsdUNBQUEsV0FnQ0UsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJ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QyxDQUFDO0FBQ25CLGdCQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLGdCQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVwQixvQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFL0IsZ0JBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsZ0JBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNaLGdCQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLGdCQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLGdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoQixnQkFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25COzs7OztBQW5FSCxxQkFBQSxXQXVFRSxJQUFJLEdBQUEsY0FBQyxLQUE4QyxFQUFFLFFBQTBDLEVBQUE7Z0JBQXhGLFNBQVMsR0FBWCxLQUE4QyxDQUE1QyxTQUFTOztBQUNkLGdCQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0Isb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNmLGdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjs7ZUE3RUgsYUFBQTtPQUEyQyxrQkFBa0I7O3NCQUE3RCxhQUFBIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgcGFydGlhbCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwnO1xuaW1wb3J0ICogYXMgY29udGVudCBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0ICogYXMgZG9tIGZyb20gJy4vZG9tJztcbmltcG9ydCAqIGFzIGxpc3RzIGZyb20gJy4vbGlzdHMnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdGFjaywgRGljdCwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBDb21waWxlc0ludG8gfSBmcm9tICcuLi8uLi9zeW50YXgnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGFydGlhbERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9wYXJ0aWFsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi4vYmxvY2tzJztcbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuXG5leHBvcnQgdHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlclByb3h5IGltcGxlbWVudHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbm5lcjogU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIpIHt9XG5cbiAgZ2V0IGNvbXBvbmVudCgpOiBDb21wb25lbnRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5jb21wb25lbnQ7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQ8VCBleHRlbmRzIE9wY29kZT4ob3Bjb2RlOiBUKSB7XG4gICAgdGhpcy5pbm5lci5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGdldExvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0TG9jYWxTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNMb2NhbFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0TmFtZWRTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNOYW1lZFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldEJsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0QmxvY2tTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNCbG9ja1N5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNCbG9ja1N5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldFBhcnRpYWxBcmdzU3ltYm9sKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0UGFydGlhbEFyZ3NTeW1ib2woKTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxBcmdzU3ltYm9sKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc1BhcnRpYWxBcmdzU3ltYm9sKCk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciBleHRlbmRzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyUHJveHkge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPERpY3Q8dm0uTGFiZWxPcGNvZGU+PigpO1xuICBwcml2YXRlIHRlbXBsYXRlc1N0YWNrID0gbmV3IFN0YWNrPFN5bnRheC5UZW1wbGF0ZXM+KCk7XG5cbiAgY29uc3RydWN0b3IoaW5uZXI6IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBwcm90ZWN0ZWQgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHN1cGVyKGlubmVyKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEU7XG5cbiAgLy8gaGVscGVyc1xuXG4gIGdldCBsYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGdldCB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHN0YXJ0QmxvY2sodGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXNTdGFjay5wdXNoKHRlbXBsYXRlcyk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnRlbXBsYXRlc1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgc3RhcnRMYWJlbHMoKSB7XG4gICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKGRpY3Q8dm0uTGFiZWxPcGNvZGU+KCkpO1xuICB9XG5cbiAgc3RvcExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgbGFiZWxGb3IobmFtZTogc3RyaW5nKTogdm0uTGFiZWxPcGNvZGUge1xuICAgIGxldCBsYWJlbHMgPSB0aGlzLmxhYmVscztcbiAgICBsZXQgbGFiZWwgPSBsYWJlbHNbbmFtZV07XG5cbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICBsYWJlbCA9IGxhYmVsc1tuYW1lXSA9IG5ldyB2bS5MYWJlbE9wY29kZShuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICAvLyBwYXJ0aWFsc1xuXG4gIHB1dFBhcnRpYWxEZWZpbml0aW9uKGRlZmluaXRpb246IFBhcnRpYWxEZWZpbml0aW9uPE9wYXF1ZT4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgcGFydGlhbC5QdXRQYXJ0aWFsRGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXREeW5hbWljUGFydGlhbERlZmluaXRpb24oKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHBhcnRpYWwuUHV0RHluYW1pY1BhcnRpYWxEZWZpbml0aW9uT3Bjb2RlKHRoaXMuc3ltYm9sVGFibGUpKTtcbiAgfVxuXG4gIGV2YWx1YXRlUGFydGlhbCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgcGFydGlhbC5FdmFsdWF0ZVBhcnRpYWxPcGNvZGUodGhpcy5zeW1ib2xUYWJsZSkpO1xuICB9XG5cbiAgLy8gY29tcG9uZW50c1xuXG4gIHB1dENvbXBvbmVudERlZmluaXRpb24oZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5QdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGUoKSk7XG4gIH1cblxuICBvcGVuQ29tcG9uZW50KGFyZ3M6IFJlcHJlc2VudHM8Q29tcGlsZWRBcmdzPiwgc2hhZG93OiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5PcGVuQ29tcG9uZW50T3Bjb2RlKHRoaXMuY29tcGlsZShhcmdzKSwgc2hhZG93LCB0aGlzLnRlbXBsYXRlcykpO1xuICB9XG5cbiAgZGlkQ3JlYXRlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkRpZENyZWF0ZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBzaGFkb3dBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuU2hhZG93QXR0cmlidXRlc09wY29kZSgpKTtcbiAgfVxuXG4gIGRpZFJlbmRlckxheW91dCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkRpZFJlbmRlckxheW91dE9wY29kZSgpKTtcbiAgfVxuXG4gIGNsb3NlQ29tcG9uZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuQ2xvc2VDb21wb25lbnRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBjb250ZW50XG5cbiAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICB0cnVzdGluZ0FwcGVuZCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29udGVudC5PcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGRvbVxuXG4gIHRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5UZXh0T3Bjb2RlKHRleHQpKTtcbiAgfVxuXG4gIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5PcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZSh0YWcpKTtcbiAgfVxuXG4gIG9wZW5Db21wb25lbnRFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5PcGVuQ29tcG9uZW50RWxlbWVudE9wY29kZSh0YWcpKTtcbiAgfVxuXG4gIG9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLk9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkZsdXNoRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkNsb3NlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uU3RhdGljQXR0ck9wY29kZShuYW1lLCBuYW1lc3BhY2UsIHZhbHVlKSk7XG4gIH1cblxuICBkeW5hbWljQXR0ck5TKG5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyTlNPcGNvZGUobmFtZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nKSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyT3Bjb2RlKG5hbWUsIGlzVHJ1c3RpbmcpKTtcbiAgfVxuXG4gIGNvbW1lbnQoY29tbWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5Db21tZW50T3Bjb2RlKGNvbW1lbnQpKTtcbiAgfVxuXG4gIC8vIGxpc3RzXG5cbiAgcHV0SXRlcmF0b3IoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLlB1dEl0ZXJhdG9yT3Bjb2RlKCkpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkVudGVyTGlzdE9wY29kZSh0aGlzLmxhYmVsRm9yKHN0YXJ0KSwgdGhpcy5sYWJlbEZvcihlbmQpKSk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuRXhpdExpc3RPcGNvZGUoKSk7XG4gIH1cblxuICBlbnRlcldpdGhLZXkoc3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuRW50ZXJXaXRoS2V5T3Bjb2RlKHRoaXMubGFiZWxGb3Ioc3RhcnQpLCB0aGlzLmxhYmVsRm9yKGVuZCkpKTtcbiAgfVxuXG4gIG5leHRJdGVyKGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLk5leHRJdGVyT3Bjb2RlKHRoaXMubGFiZWxGb3IoZW5kKSkpO1xuICB9XG5cbiAgLy8gdm1cblxuICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlB1c2hSZW1vdGVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlBvcFJlbW90ZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBwb3BFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uUG9wRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKHRoaXMubGFiZWxGb3IobmFtZSkpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1c2hDaGlsZFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlBvcFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHVzaER5bmFtaWNTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUG9wRHluYW1pY1Njb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHV0TnVsbCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0TnVsbE9wY29kZSgpKTtcbiAgfVxuXG4gIHB1dFZhbHVlKGV4cHJlc3Npb246IFJlcHJlc2VudHM8Q29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dFZhbHVlT3Bjb2RlKHRoaXMuY29tcGlsZShleHByZXNzaW9uKSkpO1xuICB9XG5cbiAgcHV0QXJncyhhcmdzOiBSZXByZXNlbnRzPENvbXBpbGVkQXJncz4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0QXJnc09wY29kZSh0aGlzLmNvbXBpbGUoYXJncykpKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmREeW5hbWljU2NvcGVPcGNvZGUobmFtZXMpKTtcbiAgfVxuXG4gIGJpbmRQb3NpdGlvbmFsQXJncyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmRQb3NpdGlvbmFsQXJnc09wY29kZShuYW1lcywgc3ltYm9scykpO1xuICB9XG5cbiAgYmluZE5hbWVkQXJncyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmROYW1lZEFyZ3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpKTtcbiAgfVxuXG4gIGJpbmRCbG9ja3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kQmxvY2tzT3Bjb2RlKG5hbWVzLCBzeW1ib2xzKSk7XG4gIH1cblxuICBlbnRlcihlbnRlcjogTGFiZWwsIGV4aXQ6IExhYmVsKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkVudGVyT3Bjb2RlKHRoaXMubGFiZWxGb3IoZW50ZXIpLCB0aGlzLmxhYmVsRm9yKGV4aXQpKSk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FeGl0T3Bjb2RlKCkpO1xuICB9XG5cbiAgZXZhbHVhdGUobmFtZTogc3RyaW5nLCBibG9jayA9IHRoaXMudGVtcGxhdGVzW25hbWVdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkV2YWx1YXRlT3Bjb2RlKG5hbWUsIGJsb2NrKSk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh2bS5Db25zdFRlc3QpKTtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodm0uU2ltcGxlVGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHZtLkVudmlyb25tZW50VGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh0ZXN0RnVuYykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5KdW1wT3Bjb2RlKHRoaXMubGFiZWxGb3IodGFyZ2V0KSkpO1xuICB9XG5cbiAganVtcElmKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkp1bXBJZk9wY29kZSh0aGlzLmxhYmVsRm9yKHRhcmdldCkpKTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uSnVtcFVubGVzc09wY29kZSh0aGlzLmxhYmVsRm9yKHRhcmdldCkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrQXJncyA9IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzLCBhcmdzPzogU3ludGF4LkFyZ3MgfTtcblxuY29uc3QgU0lNUExFX0JMT0NLOiBCbG9ja0FyZ3MgPSB7IHRlbXBsYXRlczogbnVsbCB9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRSB7XG4gICAgaWYgKGlzQ29tcGlsYWJsZUV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgIHJldHVybiBleHByLmNvbXBpbGUodGhpcywgdGhpcy5lbnYsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jazogSW5saW5lQmxvY2spIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kUG9zaXRpb25hbEFyZ3NPcGNvZGUuY3JlYXRlKGJsb2NrKSk7XG4gIH1cblxuICBiaW5kTmFtZWRBcmdzRm9yTGF5b3V0KGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZE5hbWVkQXJnc09wY29kZS5jcmVhdGUobGF5b3V0KSk7XG4gIH1cblxuICBiaW5kQmxvY2tzRm9yTGF5b3V0KGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZEJsb2Nrc09wY29kZS5jcmVhdGUobGF5b3V0KSk7XG4gIH1cblxuICBiaW5kUGFydGlhbEFyZ3NGb3JMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kUGFydGlhbEFyZ3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgc2ltcGxlQmxvY2soY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLmJsb2NrKFNJTVBMRV9CTE9DSywgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gVE9ET1xuICAvLyBjb21lIGJhY2sgdG8gdGhpc1xuICBibG9jayh7IHRlbXBsYXRlcywgYXJncyB9OiBCbG9ja0FyZ3MsIGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgaWYgKGFyZ3MpIHRoaXMucHV0QXJncyhhcmdzKTtcblxuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2sodGVtcGxhdGVzKTtcbiAgICB0aGlzLmVudGVyKCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgICAvLyBUT0RPXG4gIC8vIGNvbWUgYmFjayB0byB0aGlzXG4gIGl0ZXIoeyB0ZW1wbGF0ZXMgfTogeyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSwgY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgdGhpcy5zdGFydEJsb2NrKHRlbXBsYXRlcyk7XG4gICAgdGhpcy5lbnRlckxpc3QoJ0JFR0lOJywgJ0VORCcpO1xuICAgIHRoaXMubGFiZWwoJ0lURVInKTtcbiAgICB0aGlzLm5leHRJdGVyKCdCUkVBSycpO1xuICAgIHRoaXMuZW50ZXJXaXRoS2V5KCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5qdW1wKCdJVEVSJyk7XG4gICAgdGhpcy5sYWJlbCgnQlJFQUsnKTtcbiAgICB0aGlzLmV4aXRMaXN0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgICAvLyBUT0RPXG4gIC8vIGNvbWUgYmFjayB0byB0aGlzXG4gIHVuaXQoeyB0ZW1wbGF0ZXMgfTogeyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSwgY2FsbGJhY2s6IChidWlsZGVyOiBPcGNvZGVCdWlsZGVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgIHRoaXMuc3RhcnRCbG9jayh0ZW1wbGF0ZXMpO1xuICAgIGNhbGxiYWNrKHRoaXMpO1xuICAgIHRoaXMuZW5kQmxvY2soKTtcbiAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuaXRPcHRpb25zIHtcbiAgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrT3B0aW9ucyBleHRlbmRzIFVuaXRPcHRpb25zIHtcbiAgYXJnczogU3ludGF4LkFyZ3M7XG59XG5leHBvcnQgdHlwZSBCbG9ja0NhbGxiYWNrID0gKGRzbDogT3Bjb2RlQnVpbGRlciwgQkVHSU46IExhYmVsLCBFTkQ6IExhYmVsKSA9PiB2b2lkO1xuIl19
-enifed('glimmer-runtime/lib/compiled/opcodes/component', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-reference'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerReference) {
- 'use strict';
-
- var PutDynamicComponentDefinitionOpcode = (function (_Opcode) {
- babelHelpers.inherits(PutDynamicComponentDefinitionOpcode, _Opcode);
-
- function PutDynamicComponentDefinitionOpcode() {
- _Opcode.apply(this, arguments);
- this.type = "put-dynamic-component-definition";
- }
-
- PutDynamicComponentDefinitionOpcode.prototype.evaluate = function evaluate(vm) {
- var reference = vm.frame.getOperand();
- var cache = _glimmerReference.isConst(reference) ? undefined : new _glimmerReference.ReferenceCache(reference);
- var definition = cache ? cache.peek() : reference.value();
- vm.frame.setImmediate(definition);
- if (cache) {
- vm.updateWith(new _glimmerRuntimeLibCompiledOpcodesVm.Assert(cache));
- }
- };
-
- PutDynamicComponentDefinitionOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return PutDynamicComponentDefinitionOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutDynamicComponentDefinitionOpcode = PutDynamicComponentDefinitionOpcode;
-
- var PutComponentDefinitionOpcode = (function (_Opcode2) {
- babelHelpers.inherits(PutComponentDefinitionOpcode, _Opcode2);
-
- function PutComponentDefinitionOpcode(definition) {
- _Opcode2.call(this);
- this.definition = definition;
- this.type = "put-component-definition";
- }
-
- PutComponentDefinitionOpcode.prototype.evaluate = function evaluate(vm) {
- vm.frame.setImmediate(this.definition);
- };
-
- PutComponentDefinitionOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.definition.name)]
- };
- };
-
- return PutComponentDefinitionOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutComponentDefinitionOpcode = PutComponentDefinitionOpcode;
-
- var OpenComponentOpcode = (function (_Opcode3) {
- babelHelpers.inherits(OpenComponentOpcode, _Opcode3);
-
- function OpenComponentOpcode(args, shadow, templates) {
- _Opcode3.call(this);
- this.args = args;
- this.shadow = shadow;
- this.templates = templates;
- this.type = "open-component";
- }
-
- OpenComponentOpcode.prototype.evaluate = function evaluate(vm) {
- var rawArgs = this.args;
- var shadow = this.shadow;
- var templates = this.templates;
-
- var definition = vm.frame.getImmediate();
- var dynamicScope = vm.pushDynamicScope();
- var callerScope = vm.scope();
- var manager = definition.manager;
- var hasDefaultBlock = templates && !!templates.default; // TODO Cleanup?
- var args = manager.prepareArgs(definition, rawArgs.evaluate(vm), dynamicScope);
- var component = manager.create(vm.env, definition, args, dynamicScope, vm.getSelf(), hasDefaultBlock);
- var destructor = manager.getDestructor(component);
- if (destructor) vm.newDestroyable(destructor);
- var layout = manager.layoutFor(definition, component, vm.env);
- var selfRef = manager.getSelf(component);
- vm.beginCacheGroup();
- vm.stack().pushSimpleBlock();
- vm.pushRootScope(selfRef, layout.symbols);
- vm.invokeLayout(args, layout, templates, callerScope, component, manager, shadow);
- vm.updateWith(new UpdateComponentOpcode(definition.name, component, manager, args, dynamicScope));
- };
-
- OpenComponentOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return OpenComponentOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.OpenComponentOpcode = OpenComponentOpcode;
-
- var UpdateComponentOpcode = (function (_UpdatingOpcode) {
- babelHelpers.inherits(UpdateComponentOpcode, _UpdatingOpcode);
-
- function UpdateComponentOpcode(name, component, manager, args, dynamicScope) {
- _UpdatingOpcode.call(this);
- this.name = name;
- this.component = component;
- this.manager = manager;
- this.args = args;
- this.dynamicScope = dynamicScope;
- this.type = "update-component";
- var componentTag = manager.getTag(component);
- if (componentTag) {
- this.tag = _glimmerReference.combine([args.tag, componentTag]);
- } else {
- this.tag = args.tag;
- }
- }
-
- UpdateComponentOpcode.prototype.evaluate = function evaluate(vm) {
- var component = this.component;
- var manager = this.manager;
- var args = this.args;
- var dynamicScope = this.dynamicScope;
-
- manager.update(component, args, dynamicScope);
- };
-
- UpdateComponentOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.name)]
- };
- };
-
- return UpdateComponentOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.UpdateComponentOpcode = UpdateComponentOpcode;
-
- var DidCreateElementOpcode = (function (_Opcode4) {
- babelHelpers.inherits(DidCreateElementOpcode, _Opcode4);
-
- function DidCreateElementOpcode() {
- _Opcode4.apply(this, arguments);
- this.type = "did-create-element";
- }
-
- // Slow path for non-specialized component invocations. Uses an internal
- // named lookup on the args.
-
- DidCreateElementOpcode.prototype.evaluate = function evaluate(vm) {
- var manager = vm.frame.getManager();
- var component = vm.frame.getComponent();
- manager.didCreateElement(component, vm.stack().constructing, vm.stack().operations);
- };
-
- DidCreateElementOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$ARGS"]
- };
- };
-
- return DidCreateElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.DidCreateElementOpcode = DidCreateElementOpcode;
-
- var ShadowAttributesOpcode = (function (_Opcode5) {
- babelHelpers.inherits(ShadowAttributesOpcode, _Opcode5);
-
- function ShadowAttributesOpcode() {
- _Opcode5.apply(this, arguments);
- this.type = "shadow-attributes";
- }
-
- ShadowAttributesOpcode.prototype.evaluate = function evaluate(vm) {
- var shadow = vm.frame.getShadow();
- if (!shadow) return;
-
- var _vm$frame$getArgs = vm.frame.getArgs();
-
- var named = _vm$frame$getArgs.named;
-
- shadow.forEach(function (name) {
- vm.stack().setDynamicAttribute(name, named.get(name), false);
- });
- };
-
- ShadowAttributesOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$ARGS"]
- };
- };
-
- return ShadowAttributesOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.ShadowAttributesOpcode = ShadowAttributesOpcode;
-
- var DidRenderLayoutOpcode = (function (_Opcode6) {
- babelHelpers.inherits(DidRenderLayoutOpcode, _Opcode6);
-
- function DidRenderLayoutOpcode() {
- _Opcode6.apply(this, arguments);
- this.type = "did-render-layout";
- }
-
- DidRenderLayoutOpcode.prototype.evaluate = function evaluate(vm) {
- var manager = vm.frame.getManager();
- var component = vm.frame.getComponent();
- var bounds = vm.stack().popBlock();
- manager.didRenderLayout(component, bounds);
- vm.env.didCreate(component, manager);
- vm.updateWith(new DidUpdateLayoutOpcode(manager, component, bounds));
- };
-
- return DidRenderLayoutOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.DidRenderLayoutOpcode = DidRenderLayoutOpcode;
-
- var DidUpdateLayoutOpcode = (function (_UpdatingOpcode2) {
- babelHelpers.inherits(DidUpdateLayoutOpcode, _UpdatingOpcode2);
-
- function DidUpdateLayoutOpcode(manager, component, bounds) {
- _UpdatingOpcode2.call(this);
- this.manager = manager;
- this.component = component;
- this.bounds = bounds;
- this.type = "did-update-layout";
- this.tag = _glimmerReference.CONSTANT_TAG;
- }
-
- DidUpdateLayoutOpcode.prototype.evaluate = function evaluate(vm) {
- var manager = this.manager;
- var component = this.component;
- var bounds = this.bounds;
-
- manager.didUpdateLayout(component, bounds);
- vm.env.didUpdate(component, manager);
- };
-
- return DidUpdateLayoutOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.DidUpdateLayoutOpcode = DidUpdateLayoutOpcode;
-
- var CloseComponentOpcode = (function (_Opcode7) {
- babelHelpers.inherits(CloseComponentOpcode, _Opcode7);
-
- function CloseComponentOpcode() {
- _Opcode7.apply(this, arguments);
- this.type = "close-component";
- }
-
- CloseComponentOpcode.prototype.evaluate = function evaluate(vm) {
- vm.popScope();
- vm.popDynamicScope();
- vm.commitCacheGroup();
- };
-
- return CloseComponentOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.CloseComponentOpcode = CloseComponentOpcode;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBV0EsbUNBQUE7OEJBQUEsbUNBQUE7O0FBQUEsaUJBQUEsbUNBQUEsR0FBQTtBQUF5RCxnQ0FBQSxTQUFBLENBQUEsQ0FBTTtBQUN0RCxnQkFBQSxDQUFBLElBQUksR0FBRyxrQ0FBa0MsQ0FBQztTQXFCbEQ7O0FBdEJELDJDQUFBLFdBR0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLFNBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBa0MsQ0FBQztBQUN0RSxnQkFBSSxLQUFLLEdBQUcsa0JBUitDLE9BQU8sQ0FROUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxHQUFHLHNCQVJYLGNBQWMsQ0FRZ0IsU0FBUyxDQUFDLENBQUM7QUFDM0UsZ0JBQUksVUFBVSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRTFELGNBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRWxDLGdCQUFJLEtBQUssRUFBRTtBQUNULGtCQUFFLENBQUMsVUFBVSxDQUFDLHdDQXJCWCxNQUFNLENBcUJnQixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7O0FBYkgsMkNBQUEsV0FlRSxNQUFNLEdBQUEsa0JBQUE7QUFDSixtQkFBTztBQUNMLG9CQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDaEIsb0JBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNmLG9CQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDbkIsQ0FBQztTQUNIOztlQXJCSCxtQ0FBQTtpQ0FYUyxNQUFNOzs7O1FBbUNmLDRCQUFBOzhCQUFBLDRCQUFBOztBQUdFLGlCQUhGLDRCQUFBLENBR3NCLFVBQTBDLEVBQUE7QUFDNUQsK0JB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QUksQ0FBZixNQUFNOztBQUVoQyxtQkFBTyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFM0MsY0FBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3RDOztlQWxCSCxxQkFBQTtpQ0FyTTZCLGNBQWM7Ozs7UUEwTjNDLG9CQUFBOzhCQUFBLG9CQUFBOztBQUFBLGlCQUFBLG9CQUFBLEdBQUE7QUFBMEMsaUNBQUEsU0FBQSxDQUFBLENBQU07QUFDdkMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7U0FPakM7O0FBUkQsNEJBQUEsV0FHRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsY0FBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2QsY0FBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3JCLGNBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3ZCOztlQVBILG9CQUFBO2lDQTFOUyxNQUFNIiwiZmlsZSI6ImNvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi8uLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IFRlbXBsYXRlcyB9IGZyb20gJy4uLy4uL3N5bnRheC9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNTY29wZSB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCBCb3VuZHMgZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIGNvbWJpbmUsIGlzQ29uc3QsIFJldmlzaW9uVGFnIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRklYTUUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LWR5bmFtaWMtY29tcG9uZW50LWRlZmluaXRpb25cIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZDxDb21wb25lbnREZWZpbml0aW9uPENvbXBvbmVudD4+KCk7XG4gICAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gICAgdm0uZnJhbWUuc2V0SW1tZWRpYXRlKGRlZmluaXRpb24pO1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dENvbXBvbmVudERlZmluaXRpb25PcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LWNvbXBvbmVudC1kZWZpbml0aW9uXCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPENvbXBvbmVudD4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZnJhbWUuc2V0SW1tZWRpYXRlKHRoaXMuZGVmaW5pdGlvbik7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZpbml0aW9uLm5hbWUpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5Db21wb25lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwib3Blbi1jb21wb25lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFyZ3M6IENvbXBpbGVkQXJncyxcbiAgICBwcml2YXRlIHNoYWRvdzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IFRlbXBsYXRlc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHsgYXJnczogcmF3QXJncywgc2hhZG93LCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmZyYW1lLmdldEltbWVkaWF0ZTxDb21wb25lbnREZWZpbml0aW9uPENvbXBvbmVudD4+KCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB2bS5zY29wZSgpO1xuXG4gICAgbGV0IG1hbmFnZXIgPSBkZWZpbml0aW9uLm1hbmFnZXI7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IHRlbXBsYXRlcyAmJiAhIXRlbXBsYXRlcy5kZWZhdWx0OyAvLyBUT0RPIENsZWFudXA/XG4gICAgbGV0IGFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIHJhd0FyZ3MuZXZhbHVhdGUodm0pLCBkeW5hbWljU2NvcGUpO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCBoYXNEZWZhdWx0QmxvY2spO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xuXG4gICAgbGV0IGxheW91dCA9IG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KTtcbiAgICBsZXQgc2VsZlJlZiA9IG1hbmFnZXIuZ2V0U2VsZihjb21wb25lbnQpO1xuXG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uc3RhY2soKS5wdXNoU2ltcGxlQmxvY2soKTtcbiAgICB2bS5wdXNoUm9vdFNjb3BlKHNlbGZSZWYsIGxheW91dC5zeW1ib2xzKTtcbiAgICB2bS5pbnZva2VMYXlvdXQoYXJncywgbGF5b3V0LCB0ZW1wbGF0ZXMsIGNhbGxlclNjb3BlLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGFyZ3MsIGR5bmFtaWNTY29wZSkpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW1wiJE9QRVJBTkRcIl1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsXG4gICAgcHJpdmF0ZSBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuXG4gICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFthcmdzLnRhZywgY29tcG9uZW50VGFnXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFnID0gYXJncy50YWc7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGFyZ3MsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgYXJncywgZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZENyZWF0ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLWNyZWF0ZS1lbGVtZW50XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IG1hbmFnZXIgPSB2bS5mcmFtZS5nZXRNYW5hZ2VyKCk7XG4gICAgbGV0IGNvbXBvbmVudCA9IHZtLmZyYW1lLmdldENvbXBvbmVudCgpO1xuXG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uc3RhY2soKS5jb25zdHJ1Y3RpbmcsIHZtLnN0YWNrKCkub3BlcmF0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkQVJHU1wiXVxuICAgIH07XG4gIH1cbn1cblxuLy8gU2xvdyBwYXRoIGZvciBub24tc3BlY2lhbGl6ZWQgY29tcG9uZW50IGludm9jYXRpb25zLiBVc2VzIGFuIGludGVybmFsXG4vLyBuYW1lZCBsb29rdXAgb24gdGhlIGFyZ3MuXG5leHBvcnQgY2xhc3MgU2hhZG93QXR0cmlidXRlc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJzaGFkb3ctYXR0cmlidXRlc1wiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBzaGFkb3cgPSB2bS5mcmFtZS5nZXRTaGFkb3coKTtcblxuICAgIGlmICghc2hhZG93KSByZXR1cm47XG5cbiAgICBsZXQgeyBuYW1lZCB9ID0gdm0uZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgc2hhZG93LmZvckVhY2gobmFtZSA9PiB7XG4gICAgICB2bS5zdGFjaygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgbmFtZWQuZ2V0KG5hbWUpIGFzIEZJWE1FPFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgJ3NldER5bmFtaWNBdHRyaWJ1dGUgc2hvdWxkIHRha2UgYW4gUmVmPE9wYXF1ZT4gaW5zdGVhZCc+LCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkQVJHU1wiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZFJlbmRlckxheW91dE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtcmVuZGVyLWxheW91dFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBtYW5hZ2VyID0gdm0uZnJhbWUuZ2V0TWFuYWdlcigpO1xuICAgIGxldCBjb21wb25lbnQgPSB2bS5mcmFtZS5nZXRDb21wb25lbnQoKTtcbiAgICBsZXQgYm91bmRzID0gdm0uc3RhY2soKS5wb3BCbG9jaygpO1xuXG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuXG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC11cGRhdGUtbGF5b3V0XCI7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcblxuICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcblxuICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvc2VDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiY2xvc2UtY29tcG9uZW50XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucG9wU2NvcGUoKTtcbiAgICB2bS5wb3BEeW5hbWljU2NvcGUoKTtcbiAgICB2bS5jb21taXRDYWNoZUdyb3VwKCk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/compiled/opcodes/content', ['exports', 'glimmer-runtime/lib/upsert', 'glimmer-runtime/lib/component/interfaces', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/vm/update', 'glimmer-reference', 'glimmer-util', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/builder', 'glimmer-runtime/lib/compiler', 'glimmer-runtime/lib/compiled/opcodes/builder', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/syntax/core'], function (exports, _glimmerRuntimeLibUpsert, _glimmerRuntimeLibComponentInterfaces, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibVmUpdate, _glimmerReference, _glimmerUtil, _glimmerRuntimeLibBounds, _glimmerRuntimeLibBuilder, _glimmerRuntimeLibCompiler, _glimmerRuntimeLibCompiledOpcodesBuilder, _glimmerRuntimeLibReferences, _glimmerRuntimeLibSyntaxCore) {
- 'use strict';
-
- exports.normalizeTextValue = normalizeTextValue;
-
- function isEmpty(value) {
- return value === null || value === undefined || typeof value['toString'] !== 'function';
+ function handleRedirect(morph, env, scope, path, params, hash, template, inverse, visitor) {
+ if (!path) {
+ return false;
}
- function normalizeTextValue(value) {
- if (isEmpty(value)) {
- return '';
- }
- return String(value);
+ var redirect = env.hooks.classify(env, scope, path);
+ if (redirect) {
+ switch (redirect) {
+ case 'component':
+ env.hooks.component(morph, env, scope, path, params, hash, { default: template, inverse: inverse }, visitor);break;
+ case 'inline':
+ env.hooks.inline(morph, env, scope, path, params, hash, visitor);break;
+ case 'block':
+ env.hooks.block(morph, env, scope, path, params, hash, template, inverse, visitor);break;
+ default:
+ throw new Error("Internal HTMLBars redirection to " + redirect + " not supported");
+ }
+ return true;
}
- function normalizeTrustedValue(value) {
- if (isEmpty(value)) {
- return '';
- }
- if (_glimmerRuntimeLibUpsert.isString(value)) {
- return value;
- }
- if (_glimmerRuntimeLibUpsert.isSafeString(value)) {
- return value.toHTML();
- }
- if (_glimmerRuntimeLibUpsert.isNode(value)) {
- return value;
- }
- return String(value);
+ if (handleKeyword(path, morph, env, scope, params, hash, template, inverse, visitor)) {
+ return true;
}
- function normalizeValue(value) {
- if (isEmpty(value)) {
- return '';
- }
- if (_glimmerRuntimeLibUpsert.isString(value)) {
- return value;
- }
- if (_glimmerRuntimeLibUpsert.isSafeString(value) || _glimmerRuntimeLibUpsert.isNode(value)) {
- return value;
- }
- return String(value);
- }
- var AppendOpcode = (function (_Opcode) {
- babelHelpers.inherits(AppendOpcode, _Opcode);
+ return false;
+ }
- function AppendOpcode() {
- _Opcode.apply(this, arguments);
- }
-
- AppendOpcode.prototype.evaluate = function evaluate(vm) {
- var reference = vm.frame.getOperand();
- var normalized = this.normalize(reference);
- var value = undefined,
- cache = undefined;
- if (_glimmerReference.isConst(reference)) {
- value = normalized.value();
- } else {
- cache = new _glimmerReference.ReferenceCache(normalized);
- value = cache.peek();
- }
- var stack = vm.stack();
- var upsert = this.insert(vm.env.getAppendOperations(), stack, value);
- var bounds = new _glimmerRuntimeLibBuilder.Fragment(upsert.bounds);
- stack.newBounds(bounds);
- if (cache /* i.e. !isConst(reference) */) {
- vm.updateWith(this.updateWith(vm, reference, cache, bounds, upsert));
- }
- };
-
- AppendOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return AppendOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.AppendOpcode = AppendOpcode;
-
- var GuardedAppendOpcode = (function (_AppendOpcode) {
- babelHelpers.inherits(GuardedAppendOpcode, _AppendOpcode);
-
- function GuardedAppendOpcode(expression, symbolTable) {
- _AppendOpcode.call(this);
- this.expression = expression;
- this.symbolTable = symbolTable;
- this.deopted = null;
- }
-
- GuardedAppendOpcode.prototype.evaluate = function evaluate(vm) {
- if (this.deopted) {
- vm.pushEvalFrame(this.deopted);
- } else {
- vm.evaluateOperand(this.expression);
- var value = vm.frame.getOperand().value();
- if (_glimmerRuntimeLibComponentInterfaces.isComponentDefinition(value)) {
- vm.pushEvalFrame(this.deopt(vm.env));
- } else {
- _AppendOpcode.prototype.evaluate.call(this, vm);
- }
- }
- };
-
- GuardedAppendOpcode.prototype.deopt = function deopt(env) {
- var _this = this;
-
- // At compile time, we determined that this append callsite might refer
- // to a local variable/property lookup that resolves to a component
- // definition at runtime.
- //
- // We could have eagerly compiled this callsite into something like this:
- //
- // {{#if (is-component-definition foo)}}
- // {{component foo}}
- // {{else}}
- // {{foo}}
- // {{/if}}
- //
- // However, in practice, there might be a large amout of these callsites
- // and most of them would resolve to a simple value lookup. Therefore, we
- // tried to be optimistic and assumed that the callsite will resolve to
- // appending a simple value.
- //
- // However, we have reached here because at runtime, the guard conditional
- // have detected that this callsite is indeed referring to a component
- // definition object. Since this is likely going to be true for other
- // instances of the same callsite, it is now appropiate to deopt into the
- // expanded version that handles both cases. The compilation would look
- // like this:
- //
- // PutValue(expression)
- // Test(is-component-definition)
- // Enter(BEGIN, END)
- // BEGIN: Noop
- // JumpUnless(VALUE)
- // PutDynamicComponentDefinitionOpcode
- // OpenComponent
- // CloseComponent
- // Jump(END)
- // VALUE: Noop
- // OptimizedAppend
- // END: Noop
- // Exit
- //
- // Keep in mind that even if we *don't* reach here at initial render time,
- // it is still possible (although quite rare) that the simple value we
- // encounter during initial render could later change into a component
- // definition object at update time. That is handled by the "lazy deopt"
- // code on the update side (scroll down for the next big block of comment).
- var buffer = new _glimmerRuntimeLibCompiler.CompileIntoList(env, null);
- var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, this.symbolTable, env);
- dsl.putValue(this.expression);
- dsl.test(IsComponentDefinitionReference.create);
- dsl.simpleBlock(function (dsl, BEGIN, END) {
- dsl.jumpUnless('VALUE');
- dsl.putDynamicComponentDefinition();
- dsl.openComponent(_glimmerRuntimeLibSyntaxCore.Args.empty());
- dsl.closeComponent();
- dsl.jump(END);
- dsl.label('VALUE');
- dsl.append(new _this.AppendOpcode());
- });
- var deopted = this.deopted = dsl.toOpSeq();
- // From this point on, we have essentially replaced ourselve with a new set
- // of opcodes. Since we will always be executing the new/deopted code, it's
- // a good idea (as a pattern) to null out any unneeded fields here to avoid
- // holding on to unneeded/stale objects:
- this.expression = null;
- return deopted;
- };
-
- GuardedAppendOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var deopted = this.deopted;
-
- if (deopted) {
- return {
- guid: guid,
- type: type,
- deopted: true,
- children: deopted.toArray().map(function (op) {
- return op.toJSON();
- })
- };
- } else {
- return {
- guid: guid,
- type: type,
- args: [this.expression.toJSON()]
- };
- }
- };
-
- return GuardedAppendOpcode;
- })(AppendOpcode);
-
- exports.GuardedAppendOpcode = GuardedAppendOpcode;
-
- var IsComponentDefinitionReference = (function (_ConditionalReference) {
- babelHelpers.inherits(IsComponentDefinitionReference, _ConditionalReference);
-
- function IsComponentDefinitionReference() {
- _ConditionalReference.apply(this, arguments);
- }
-
- IsComponentDefinitionReference.create = function create(inner) {
- return new IsComponentDefinitionReference(inner);
- };
-
- IsComponentDefinitionReference.prototype.toBool = function toBool(value) {
- return _glimmerRuntimeLibComponentInterfaces.isComponentDefinition(value);
- };
-
- return IsComponentDefinitionReference;
- })(_glimmerRuntimeLibReferences.ConditionalReference);
-
- var UpdateOpcode = (function (_UpdatingOpcode) {
- babelHelpers.inherits(UpdateOpcode, _UpdatingOpcode);
-
- function UpdateOpcode(cache, bounds, upsert) {
- _UpdatingOpcode.call(this);
- this.cache = cache;
- this.bounds = bounds;
- this.upsert = upsert;
- this.tag = cache.tag;
- }
-
- UpdateOpcode.prototype.evaluate = function evaluate(vm) {
- var value = this.cache.revalidate();
- if (_glimmerReference.isModified(value)) {
- var bounds = this.bounds;
- var upsert = this.upsert;
- var dom = vm.dom;
-
- if (!this.upsert.update(dom, value)) {
- var cursor = new _glimmerRuntimeLibBounds.Cursor(bounds.parentElement(), _glimmerRuntimeLibBounds.clear(bounds));
- upsert = this.upsert = this.insert(vm.env.getAppendOperations(), cursor, value);
- }
- bounds.update(upsert.bounds);
- }
- };
-
- UpdateOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var cache = this.cache;
-
- return {
- guid: guid,
- type: type,
- details: { lastValue: JSON.stringify(cache.peek()) }
- };
- };
-
- return UpdateOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- var GuardedUpdateOpcode = (function (_UpdateOpcode) {
- babelHelpers.inherits(GuardedUpdateOpcode, _UpdateOpcode);
-
- function GuardedUpdateOpcode(reference, cache, bounds, upsert, appendOpcode, state) {
- _UpdateOpcode.call(this, cache, bounds, upsert);
- this.reference = reference;
- this.appendOpcode = appendOpcode;
- this.state = state;
- this.deopted = null;
- this.tag = this._tag = new _glimmerReference.UpdatableTag(this.tag);
- }
-
- GuardedUpdateOpcode.prototype.evaluate = function evaluate(vm) {
- if (this.deopted) {
- vm.evaluateOpcode(this.deopted);
- } else {
- if (_glimmerRuntimeLibComponentInterfaces.isComponentDefinition(this.reference.value())) {
- this.lazyDeopt(vm);
- } else {
- _UpdateOpcode.prototype.evaluate.call(this, vm);
- }
- }
- };
-
- GuardedUpdateOpcode.prototype.lazyDeopt = function lazyDeopt(vm) {
- // Durign initial render, we know that the reference does not contain a
- // component definition, so we optimistically assumed that this append
- // is just a normal append. However, at update time, we discovered that
- // the reference has switched into containing a component definition, so
- // we need to do a "lazy deopt", simulating what would have happened if
- // we had decided to perform the deopt in the first place during initial
- // render.
- //
- // More concretely, we would have expanded the curly into a if/else, and
- // based on whether the value is a component definition or not, we would
- // have entered either the dynamic component branch or the simple value
- // branch.
- //
- // Since we rendered a simple value during initial render (and all the
- // updates up until this point), we need to pretend that the result is
- // produced by the "VALUE" branch of the deopted append opcode:
- //
- // Try(BEGIN, END)
- // Assert(IsComponentDefinition, expected=false)
- // OptimizedUpdate
- //
- // In this case, because the reference has switched from being a simple
- // value into a component definition, what would have happened is that
- // the assert would throw, causing the Try opcode to teardown the bounds
- // and rerun the original append opcode.
- //
- // Since the Try opcode would have nuked the updating opcodes anyway, we
- // wouldn't have to worry about simulating those. All we have to do is to
- // execute the Try opcode and immediately throw.
- var bounds = this.bounds;
- var appendOpcode = this.appendOpcode;
- var state = this.state;
-
- var appendOps = appendOpcode.deopt(vm.env);
- var enter = appendOps.head().next.next;
- var ops = enter.slice;
- var tracker = new _glimmerRuntimeLibBuilder.UpdatableBlockTracker(bounds.parentElement());
- tracker.newBounds(this.bounds);
- var children = new _glimmerUtil.LinkedList();
- state.frame['condition'] = IsComponentDefinitionReference.create(state.frame['operand']);
- var deopted = this.deopted = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, children);
- this._tag.update(deopted.tag);
- vm.evaluateOpcode(deopted);
- vm.throw();
- // From this point on, we have essentially replaced ourselve with a new
- // opcode. Since we will always be executing the new/deopted code, it's a
- // good idea (as a pattern) to null out any unneeded fields here to avoid
- // holding on to unneeded/stale objects:
- this._tag = null;
- this.reference = null;
- this.cache = null;
- this.bounds = null;
- this.upsert = null;
- this.appendOpcode = null;
- this.state = null;
- };
-
- GuardedUpdateOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var deopted = this.deopted;
-
- if (deopted) {
- return {
- guid: guid,
- type: type,
- deopted: true,
- children: [deopted.toJSON()]
- };
- } else {
- return _UpdateOpcode.prototype.toJSON.call(this);
- }
- };
-
- return GuardedUpdateOpcode;
- })(UpdateOpcode);
-
- var OptimizedCautiousAppendOpcode = (function (_AppendOpcode2) {
- babelHelpers.inherits(OptimizedCautiousAppendOpcode, _AppendOpcode2);
-
- function OptimizedCautiousAppendOpcode() {
- _AppendOpcode2.apply(this, arguments);
- this.type = 'optimized-cautious-append';
- }
-
- OptimizedCautiousAppendOpcode.prototype.normalize = function normalize(reference) {
- return _glimmerReference.map(reference, normalizeValue);
- };
-
- OptimizedCautiousAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value);
- };
-
- OptimizedCautiousAppendOpcode.prototype.updateWith = function updateWith(vm, reference, cache, bounds, upsert) {
- return new OptimizedCautiousUpdateOpcode(cache, bounds, upsert);
- };
-
- return OptimizedCautiousAppendOpcode;
- })(AppendOpcode);
-
- exports.OptimizedCautiousAppendOpcode = OptimizedCautiousAppendOpcode;
-
- var OptimizedCautiousUpdateOpcode = (function (_UpdateOpcode2) {
- babelHelpers.inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode2);
-
- function OptimizedCautiousUpdateOpcode() {
- _UpdateOpcode2.apply(this, arguments);
- this.type = 'optimized-cautious-update';
- }
-
- OptimizedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value);
- };
-
- return OptimizedCautiousUpdateOpcode;
- })(UpdateOpcode);
-
- var GuardedCautiousAppendOpcode = (function (_GuardedAppendOpcode) {
- babelHelpers.inherits(GuardedCautiousAppendOpcode, _GuardedAppendOpcode);
-
- function GuardedCautiousAppendOpcode() {
- _GuardedAppendOpcode.apply(this, arguments);
- this.type = 'guarded-cautious-append';
- this.AppendOpcode = OptimizedCautiousAppendOpcode;
- }
-
- GuardedCautiousAppendOpcode.prototype.normalize = function normalize(reference) {
- return _glimmerReference.map(reference, normalizeValue);
- };
-
- GuardedCautiousAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value);
- };
-
- GuardedCautiousAppendOpcode.prototype.updateWith = function updateWith(vm, reference, cache, bounds, upsert) {
- return new GuardedCautiousUpdateOpcode(reference, cache, bounds, upsert, this, vm.capture());
- };
-
- return GuardedCautiousAppendOpcode;
- })(GuardedAppendOpcode);
-
- exports.GuardedCautiousAppendOpcode = GuardedCautiousAppendOpcode;
-
- var GuardedCautiousUpdateOpcode = (function (_GuardedUpdateOpcode) {
- babelHelpers.inherits(GuardedCautiousUpdateOpcode, _GuardedUpdateOpcode);
-
- function GuardedCautiousUpdateOpcode() {
- _GuardedUpdateOpcode.apply(this, arguments);
- this.type = 'guarded-cautious-update';
- }
-
- GuardedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value);
- };
-
- return GuardedCautiousUpdateOpcode;
- })(GuardedUpdateOpcode);
-
- var OptimizedTrustingAppendOpcode = (function (_AppendOpcode3) {
- babelHelpers.inherits(OptimizedTrustingAppendOpcode, _AppendOpcode3);
-
- function OptimizedTrustingAppendOpcode() {
- _AppendOpcode3.apply(this, arguments);
- this.type = 'optimized-trusting-append';
- }
-
- OptimizedTrustingAppendOpcode.prototype.normalize = function normalize(reference) {
- return _glimmerReference.map(reference, normalizeTrustedValue);
- };
-
- OptimizedTrustingAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.trustingInsert(dom, cursor, value);
- };
-
- OptimizedTrustingAppendOpcode.prototype.updateWith = function updateWith(vm, reference, cache, bounds, upsert) {
- return new OptimizedTrustingUpdateOpcode(cache, bounds, upsert);
- };
-
- return OptimizedTrustingAppendOpcode;
- })(AppendOpcode);
-
- exports.OptimizedTrustingAppendOpcode = OptimizedTrustingAppendOpcode;
-
- var OptimizedTrustingUpdateOpcode = (function (_UpdateOpcode3) {
- babelHelpers.inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode3);
-
- function OptimizedTrustingUpdateOpcode() {
- _UpdateOpcode3.apply(this, arguments);
- this.type = 'optimized-trusting-update';
- }
-
- OptimizedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.trustingInsert(dom, cursor, value);
- };
-
- return OptimizedTrustingUpdateOpcode;
- })(UpdateOpcode);
-
- var GuardedTrustingAppendOpcode = (function (_GuardedAppendOpcode2) {
- babelHelpers.inherits(GuardedTrustingAppendOpcode, _GuardedAppendOpcode2);
-
- function GuardedTrustingAppendOpcode() {
- _GuardedAppendOpcode2.apply(this, arguments);
- this.type = 'guarded-trusting-append';
- this.AppendOpcode = OptimizedTrustingAppendOpcode;
- }
-
- GuardedTrustingAppendOpcode.prototype.normalize = function normalize(reference) {
- return _glimmerReference.map(reference, normalizeTrustedValue);
- };
-
- GuardedTrustingAppendOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.trustingInsert(dom, cursor, value);
- };
-
- GuardedTrustingAppendOpcode.prototype.updateWith = function updateWith(vm, reference, cache, bounds, upsert) {
- return new GuardedTrustingUpdateOpcode(reference, cache, bounds, upsert, this, vm.capture());
- };
-
- return GuardedTrustingAppendOpcode;
- })(GuardedAppendOpcode);
-
- exports.GuardedTrustingAppendOpcode = GuardedTrustingAppendOpcode;
-
- var GuardedTrustingUpdateOpcode = (function (_GuardedUpdateOpcode2) {
- babelHelpers.inherits(GuardedTrustingUpdateOpcode, _GuardedUpdateOpcode2);
-
- function GuardedTrustingUpdateOpcode() {
- _GuardedUpdateOpcode2.apply(this, arguments);
- this.type = 'trusting-update';
- }
-
- GuardedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) {
- return _glimmerRuntimeLibUpsert.trustingInsert(dom, cursor, value);
- };
-
- return GuardedTrustingUpdateOpcode;
- })(GuardedUpdateOpcode);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0JBLGFBQUEsT0FBQSxDQUFpQixLQUFhLEVBQUE7QUFDNUIsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3pGOztBQUVELGFBQUEsa0JBQUEsQ0FBbUMsS0FBYSxFQUFBO0FBQzlDLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7O0FBRUQsYUFBQSxxQkFBQSxDQUErQixLQUFhLEVBQUE7QUFDMUMsWUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsbUJBQU8sRUFBRSxDQUFDO1NBQ1g7QUFDRCxZQUFJLHlCQXZDSixRQUFRLENBdUNLLEtBQUssQ0FBQyxFQUFFO0FBQ25CLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsWUFBSSx5QkE1Q0osWUFBWSxDQTRDSyxLQUFLLENBQUMsRUFBRTtBQUN2QixtQkFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7QUFDRCxZQUFJLHlCQTlDSixNQUFNLENBOENLLEtBQUssQ0FBQyxFQUFFO0FBQ2pCLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7QUFFRCxhQUFBLGNBQUEsQ0FBd0IsS0FBYSxFQUFBO0FBQ25DLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBSSx5QkF2REosUUFBUSxDQXVESyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNE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LE1BQWMsRUFBQTtBQUNuSSxtQkFBTyxJQUFJLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUY7O2VBZkgsMkJBQUE7T0FBaUQsbUJBQW1COzs7O1FBa0JwRSwyQkFBQTs4QkFBQSwyQkFBQTs7QUFBQSxpQkFBQSwyQkFBQSxHQUFBO0FBQTBDLDhDQUFBLFNBQUEsQ0FBQSxDQUFzQztBQUM5RSxnQkFBQSxDQUFBLElBQUksR0FBRyxpQkFBaUIsQ0FBQztTQUsxQjs7QUFORCxtQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQXRkVCxjQUFjLENBc2RVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsMkJBQUE7T0FBMEMsbUJBQW1CIiwiZmlsZSI6ImNvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXBzZXJ0LCB7XG4gIEluc2VydGlvbixcbiAgQ2F1dGlvdXNJbnNlcnRpb24sXG4gIFRydXN0aW5nSW5zZXJ0aW9uLFxuXG4gIGlzU2FmZVN0cmluZyxcbiAgaXNOb2RlLFxuICBpc1N0cmluZyxcblxuICBjYXV0aW91c0luc2VydCxcbiAgdHJ1c3RpbmdJbnNlcnRcbn0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFRyeU9wY29kZSwgVk1TdGF0ZSB9IGZyb20gJy4uLy4uL3ZtL3VwZGF0ZSc7XG5pbXBvcnQgeyBFbnRlck9wY29kZSB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUsIExpbmtlZExpc3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcGlsZUludG9MaXN0IH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBcmdzIH0gZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBzdHJpbmcge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWU6IE9wYXF1ZSk6IENhdXRpb3VzSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGVuZE9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIE9wY29kZSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGU7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2soKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgZGVvcHRlZDogT3BTZXEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4sIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uZXZhbHVhdGVPcGVyYW5kKHRoaXMuZXhwcmVzc2lvbik7XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKS52YWx1ZSgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdCh2bS5lbnYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVvcHQoZW52OiBFbnZpcm9ubWVudCk6IE9wU2VxIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIFB1dFZhbHVlKGV4cHJlc3Npb24pXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgLy8gICAgICAgICAgICAgICBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZVxuICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgQ2xvc2VDb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgT3B0aW1pemVkQXBwZW5kXG4gICAgLy8gICBFTkQ6ICAgICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBldmVuIGlmIHdlICpkb24ndCogcmVhY2ggaGVyZSBhdCBpbml0aWFsIHJlbmRlciB0aW1lLFxuICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAvLyBlbmNvdW50ZXIgZHVyaW5nIGluaXRpYWwgcmVuZGVyIGNvdWxkIGxhdGVyIGNoYW5nZSBpbnRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QgYXQgdXBkYXRlIHRpbWUuIFRoYXQgaXMgaGFuZGxlZCBieSB0aGUgXCJsYXp5IGRlb3B0XCJcbiAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbnVsbCk7XG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgdGhpcy5zeW1ib2xUYWJsZSwgZW52KTtcblxuICAgIGRzbC5wdXRWYWx1ZSh0aGlzLmV4cHJlc3Npb24pO1xuICAgIGRzbC50ZXN0KElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZS5jcmVhdGUpO1xuXG4gICAgZHNsLnNpbXBsZUJsb2NrKChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdWQUxVRScpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChBcmdzLmVtcHR5KCkpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgZHNsLmxhYmVsKCdWQUxVRScpO1xuICAgICAgZHNsLmFwcGVuZChuZXcgdGhpcy5BcHBlbmRPcGNvZGUoKSk7XG4gICAgfSk7XG5cbiAgICBsZXQgZGVvcHRlZCA9IHRoaXMuZGVvcHRlZCA9IGRzbC50b09wU2VxKCk7XG5cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHdlIGhhdmUgZXNzZW50aWFsbHkgcmVwbGFjZWQgb3Vyc2VsdmUgd2l0aCBhIG5ldyBzZXRcbiAgICAvLyBvZiBvcGNvZGVzLiBTaW5jZSB3ZSB3aWxsIGFsd2F5cyBiZSBleGVjdXRpbmcgdGhlIG5ldy9kZW9wdGVkIGNvZGUsIGl0J3NcbiAgICAvLyBhIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAvLyBob2xkaW5nIG9uIHRvIHVubmVlZGVkL3N0YWxlIG9iamVjdHM6XG5cbiAgICB0aGlzLmV4cHJlc3Npb24gPSBudWxsO1xuXG4gICAgcmV0dXJuIGRlb3B0ZWQ7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IGRlb3B0ZWQudG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGFyZ3M6IFt0aGlzLmV4cHJlc3Npb24udG9KU09OKCldXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gIHN0YXRpYyBjcmVhdGUoaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KTogSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gIH1cblxuICB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBwcm90ZWN0ZWQgYm91bmRzOiBGcmFnbWVudCxcbiAgICBwcm90ZWN0ZWQgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUgYXMgVCk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH1cbiAgICB9O1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VD4ge1xuICBwcml2YXRlIF90YWc6IFVwZGF0YWJsZVRhZztcbiAgcHJpdmF0ZSBkZW9wdGVkOiBUcnlPcGNvZGUgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgYm91bmRzOiBGcmFnbWVudCxcbiAgICB1cHNlcnQ6IFVwc2VydCxcbiAgICBwcml2YXRlIGFwcGVuZE9wY29kZTogR3VhcmRlZEFwcGVuZE9wY29kZTxUPixcbiAgICBwcml2YXRlIHN0YXRlOiBWTVN0YXRlXG4gICkge1xuICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBuZXcgVXBkYXRhYmxlVGFnKHRoaXMudGFnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZXZhbHVhdGVPcGNvZGUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICB0aGlzLmxhenlEZW9wdCh2bSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXp5RGVvcHQodm06IFVwZGF0aW5nVk0pIHtcbiAgICAvLyBEdXJpZ24gaW5pdGlhbCByZW5kZXIsIHdlIGtub3cgdGhhdCB0aGUgcmVmZXJlbmNlIGRvZXMgbm90IGNvbnRhaW4gYVxuICAgIC8vIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzbyB3ZSBvcHRpbWlzdGljYWxseSBhc3N1bWVkIHRoYXQgdGhpcyBhcHBlbmRcbiAgICAvLyBpcyBqdXN0IGEgbm9ybWFsIGFwcGVuZC4gSG93ZXZlciwgYXQgdXBkYXRlIHRpbWUsIHdlIGRpc2NvdmVyZWQgdGhhdFxuICAgIC8vIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGludG8gY29udGFpbmluZyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzb1xuICAgIC8vIHdlIG5lZWQgdG8gZG8gYSBcImxhenkgZGVvcHRcIiwgc2ltdWxhdGluZyB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaWZcbiAgICAvLyB3ZSBoYWQgZGVjaWRlZCB0byBwZXJmb3JtIHRoZSBkZW9wdCBpbiB0aGUgZmlyc3QgcGxhY2UgZHVyaW5nIGluaXRpYWxcbiAgICAvLyByZW5kZXIuXG4gICAgLy9cbiAgICAvLyBNb3JlIGNvbmNyZXRlbHksIHdlIHdvdWxkIGhhdmUgZXhwYW5kZWQgdGhlIGN1cmx5IGludG8gYSBpZi9lbHNlLCBhbmRcbiAgICAvLyBiYXNlZCBvbiB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBkZWZpbml0aW9uIG9yIG5vdCwgd2Ugd291bGRcbiAgICAvLyBoYXZlIGVudGVyZWQgZWl0aGVyIHRoZSBkeW5hbWljIGNvbXBvbmVudCBicmFuY2ggb3IgdGhlIHNpbXBsZSB2YWx1ZVxuICAgIC8vIGJyYW5jaC5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHdlIHJlbmRlcmVkIGEgc2ltcGxlIHZhbHVlIGR1cmluZyBpbml0aWFsIHJlbmRlciAoYW5kIGFsbCB0aGVcbiAgICAvLyB1cGRhdGVzIHVwIHVudGlsIHRoaXMgcG9pbnQpLCB3ZSBuZWVkIHRvIHByZXRlbmQgdGhhdCB0aGUgcmVzdWx0IGlzXG4gICAgLy8gcHJvZHVjZWQgYnkgdGhlIFwiVkFMVUVcIiBicmFuY2ggb2YgdGhlIGRlb3B0ZWQgYXBwZW5kIG9wY29kZTpcbiAgICAvL1xuICAgIC8vICAgVHJ5KEJFR0lOLCBFTkQpXG4gICAgLy8gICAgIEFzc2VydChJc0NvbXBvbmVudERlZmluaXRpb24sIGV4cGVjdGVkPWZhbHNlKVxuICAgIC8vICAgICBPcHRpbWl6ZWRVcGRhdGVcbiAgICAvL1xuICAgIC8vIEluIHRoaXMgY2FzZSwgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBmcm9tIGJlaW5nIGEgc2ltcGxlXG4gICAgLy8gdmFsdWUgaW50byBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaXMgdGhhdFxuICAgIC8vIHRoZSBhc3NlcnQgd291bGQgdGhyb3csIGNhdXNpbmcgdGhlIFRyeSBvcGNvZGUgdG8gdGVhcmRvd24gdGhlIGJvdW5kc1xuICAgIC8vIGFuZCByZXJ1biB0aGUgb3JpZ2luYWwgYXBwZW5kIG9wY29kZS5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHRoZSBUcnkgb3Bjb2RlIHdvdWxkIGhhdmUgbnVrZWQgdGhlIHVwZGF0aW5nIG9wY29kZXMgYW55d2F5LCB3ZVxuICAgIC8vIHdvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc2ltdWxhdGluZyB0aG9zZS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMgdG9cbiAgICAvLyBleGVjdXRlIHRoZSBUcnkgb3Bjb2RlIGFuZCBpbW1lZGlhdGVseSB0aHJvdy5cblxuICAgIGxldCB7IGJvdW5kcywgYXBwZW5kT3Bjb2RlLCBzdGF0ZSB9ID0gdGhpcztcblxuICAgIGxldCBhcHBlbmRPcHMgPSBhcHBlbmRPcGNvZGUuZGVvcHQodm0uZW52KTtcbiAgICBsZXQgZW50ZXIgICAgID0gYXBwZW5kT3BzLmhlYWQoKS5uZXh0Lm5leHQgYXMgRW50ZXJPcGNvZGU7XG4gICAgbGV0IG9wcyAgICAgICA9IGVudGVyLnNsaWNlO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCkpO1xuICAgIHRyYWNrZXIubmV3Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuICAgIGxldCBjaGlsZHJlbiA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgc3RhdGUuZnJhbWVbJ2NvbmRpdGlvbiddID0gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShzdGF0ZS5mcmFtZVsnb3BlcmFuZCddKTtcblxuICAgIGxldCBkZW9wdGVkID0gdGhpcy5kZW9wdGVkID0gbmV3IFRyeU9wY29kZShvcHMsIHN0YXRlLCB0cmFja2VyLCBjaGlsZHJlbik7XG5cbiAgICB0aGlzLl90YWcudXBkYXRlKGRlb3B0ZWQudGFnKTtcblxuICAgIHZtLmV2YWx1YXRlT3Bjb2RlKGRlb3B0ZWQpO1xuICAgIHZtLnRocm93KCk7XG5cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHdlIGhhdmUgZXNzZW50aWFsbHkgcmVwbGFjZWQgb3Vyc2VsdmUgd2l0aCBhIG5ld1xuICAgIC8vIG9wY29kZS4gU2luY2Ugd2Ugd2lsbCBhbHdheXMgYmUgZXhlY3V0aW5nIHRoZSBuZXcvZGVvcHRlZCBjb2RlLCBpdCdzIGFcbiAgICAvLyBnb29kIGlkZWEgKGFzIGEgcGF0dGVybikgdG8gbnVsbCBvdXQgYW55IHVubmVlZGVkIGZpZWxkcyBoZXJlIHRvIGF2b2lkXG4gICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuXG4gICAgdGhpcy5fdGFnICAgICAgICAgPSBudWxsO1xuICAgIHRoaXMucmVmZXJlbmNlICAgID0gbnVsbDtcbiAgICB0aGlzLmNhY2hlICAgICAgICA9IG51bGw7XG4gICAgdGhpcy5ib3VuZHMgICAgICAgPSBudWxsO1xuICAgIHRoaXMudXBzZXJ0ICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmFwcGVuZE9wY29kZSA9IG51bGw7XG4gICAgdGhpcy5zdGF0ZSAgICAgICAgPSBudWxsO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBbZGVvcHRlZC50b0pTT04oKV1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCwgdGhpcywgdm0uY2FwdHVyZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQsIHRoaXMsIHZtLmNhcHR1cmUoKSk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ3RydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/compiled/opcodes/dom', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-util', 'glimmer-reference', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-runtime/lib/compiled/opcodes/vm'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibReferences, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledOpcodesVm) {
- 'use strict';
-
- var TextOpcode = (function (_Opcode) {
- babelHelpers.inherits(TextOpcode, _Opcode);
-
- function TextOpcode(text) {
- _Opcode.call(this);
- this.text = text;
- this.type = "text";
- }
-
- TextOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().appendText(this.text);
- };
-
- TextOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.text)]
- };
- };
-
- return TextOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.TextOpcode = TextOpcode;
-
- var OpenPrimitiveElementOpcode = (function (_Opcode2) {
- babelHelpers.inherits(OpenPrimitiveElementOpcode, _Opcode2);
-
- function OpenPrimitiveElementOpcode(tag) {
- _Opcode2.call(this);
- this.tag = tag;
- this.type = "open-primitive-element";
- }
-
- OpenPrimitiveElementOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().openElement(this.tag);
- };
-
- OpenPrimitiveElementOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.tag)]
- };
- };
-
- return OpenPrimitiveElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.OpenPrimitiveElementOpcode = OpenPrimitiveElementOpcode;
-
- var PushRemoteElementOpcode = (function (_Opcode3) {
- babelHelpers.inherits(PushRemoteElementOpcode, _Opcode3);
-
- function PushRemoteElementOpcode() {
- _Opcode3.apply(this, arguments);
- this.type = "push-remote-element";
- }
-
- PushRemoteElementOpcode.prototype.evaluate = function evaluate(vm) {
- var reference = vm.frame.getOperand();
- var cache = _glimmerReference.isConst(reference) ? undefined : new _glimmerReference.ReferenceCache(reference);
- var element = cache ? cache.peek() : reference.value();
- vm.stack().pushRemoteElement(element);
- if (cache) {
- vm.updateWith(new _glimmerRuntimeLibCompiledOpcodesVm.Assert(cache));
- }
- };
-
- PushRemoteElementOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ['$OPERAND']
- };
- };
-
- return PushRemoteElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PushRemoteElementOpcode = PushRemoteElementOpcode;
-
- var PopRemoteElementOpcode = (function (_Opcode4) {
- babelHelpers.inherits(PopRemoteElementOpcode, _Opcode4);
-
- function PopRemoteElementOpcode() {
- _Opcode4.apply(this, arguments);
- this.type = "pop-remote-element";
- }
-
- PopRemoteElementOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().popRemoteElement();
- };
-
- return PopRemoteElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PopRemoteElementOpcode = PopRemoteElementOpcode;
-
- var OpenComponentElementOpcode = (function (_Opcode5) {
- babelHelpers.inherits(OpenComponentElementOpcode, _Opcode5);
-
- function OpenComponentElementOpcode(tag) {
- _Opcode5.call(this);
- this.tag = tag;
- this.type = "open-component-element";
- }
-
- OpenComponentElementOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().openElement(this.tag, new ComponentElementOperations(vm.env));
- };
-
- OpenComponentElementOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.tag)]
- };
- };
-
- return OpenComponentElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.OpenComponentElementOpcode = OpenComponentElementOpcode;
-
- var OpenDynamicPrimitiveElementOpcode = (function (_Opcode6) {
- babelHelpers.inherits(OpenDynamicPrimitiveElementOpcode, _Opcode6);
-
- function OpenDynamicPrimitiveElementOpcode() {
- _Opcode6.apply(this, arguments);
- this.type = "open-dynamic-primitive-element";
- }
-
- OpenDynamicPrimitiveElementOpcode.prototype.evaluate = function evaluate(vm) {
- var tagName = vm.frame.getOperand().value();
- vm.stack().openElement(tagName);
- };
-
- OpenDynamicPrimitiveElementOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return OpenDynamicPrimitiveElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.OpenDynamicPrimitiveElementOpcode = OpenDynamicPrimitiveElementOpcode;
-
- var ClassList = (function () {
- function ClassList() {
- this.list = null;
- this.isConst = true;
- }
-
- ClassList.prototype.append = function append(reference) {
- var list = this.list;
- var isConst = this.isConst;
-
- if (list === null) list = this.list = [];
- list.push(reference);
- this.isConst = isConst && _glimmerReference.isConst(reference);
- };
-
- ClassList.prototype.toReference = function toReference() {
- var list = this.list;
- var isConst = this.isConst;
-
- if (!list) return _glimmerRuntimeLibReferences.NULL_REFERENCE;
- if (isConst) return new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(toClassName(list));
- return new ClassListReference(list);
- };
-
- return ClassList;
- })();
-
- var ClassListReference = (function (_CachedReference) {
- babelHelpers.inherits(ClassListReference, _CachedReference);
-
- function ClassListReference(list) {
- _CachedReference.call(this);
- this.list = [];
- this.tag = _glimmerReference.combineTagged(list);
- this.list = list;
- }
-
- ClassListReference.prototype.compute = function compute() {
- return toClassName(this.list);
- };
-
- return ClassListReference;
- })(_glimmerReference.CachedReference);
-
- function toClassName(list) {
- var ret = [];
- for (var i = 0; i < list.length; i++) {
- var value = list[i].value();
- if (value !== false && value !== null && value !== undefined) ret.push(value);
- }
- return ret.length === 0 ? null : ret.join(' ');
+ function handleKeyword(path, morph, env, scope, params, hash, template, inverse, visitor) {
+ var keyword = env.hooks.keywords[path];
+ if (!keyword) {
+ return false;
}
- var SimpleElementOperations = (function () {
- function SimpleElementOperations(env) {
- this.env = env;
- this.opcodes = null;
- this.classList = null;
- }
-
- SimpleElementOperations.prototype.addStaticAttribute = function addStaticAttribute(element, name, value) {
- if (name === 'class') {
- this.addClass(new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(value));
- } else {
- this.env.getAppendOperations().setAttribute(element, name, value);
- }
- };
-
- SimpleElementOperations.prototype.addStaticAttributeNS = function addStaticAttributeNS(element, namespace, name, value) {
- this.env.getAppendOperations().setAttribute(element, name, value, namespace);
- };
-
- SimpleElementOperations.prototype.addDynamicAttribute = function addDynamicAttribute(element, name, reference, isTrusting) {
- if (name === 'class') {
- this.addClass(reference);
- } else {
- var attributeManager = this.env.attributeFor(element, name, isTrusting);
- var attribute = new DynamicAttribute(element, attributeManager, name, reference);
- this.addAttribute(attribute);
- }
- };
-
- SimpleElementOperations.prototype.addDynamicAttributeNS = function addDynamicAttributeNS(element, namespace, name, reference, isTrusting) {
- var attributeManager = this.env.attributeFor(element, name, isTrusting, namespace);
- var nsAttribute = new DynamicAttribute(element, attributeManager, name, reference, namespace);
- this.addAttribute(nsAttribute);
- };
-
- SimpleElementOperations.prototype.flush = function flush(element, vm) {
- var env = vm.env;
- var opcodes = this.opcodes;
- var classList = this.classList;
-
- for (var i = 0; opcodes && i < opcodes.length; i++) {
- vm.updateWith(opcodes[i]);
- }
- if (classList) {
- var attributeManager = env.attributeFor(element, 'class', false);
- var attribute = new DynamicAttribute(element, attributeManager, 'class', classList.toReference());
- var opcode = attribute.flush(env);
- if (opcode) {
- vm.updateWith(opcode);
- }
- }
- this.opcodes = null;
- this.classList = null;
- };
-
- SimpleElementOperations.prototype.addClass = function addClass(reference) {
- var classList = this.classList;
-
- if (!classList) {
- classList = this.classList = new ClassList();
- }
- classList.append(reference);
- };
-
- SimpleElementOperations.prototype.addAttribute = function addAttribute(attribute) {
- var opcode = attribute.flush(this.env);
- if (opcode) {
- var opcodes = this.opcodes;
-
- if (!opcodes) {
- opcodes = this.opcodes = [];
- }
- opcodes.push(opcode);
- }
- };
-
- return SimpleElementOperations;
- })();
-
- exports.SimpleElementOperations = SimpleElementOperations;
-
- var ComponentElementOperations = (function () {
- function ComponentElementOperations(env) {
- this.env = env;
- this.attributeNames = null;
- this.attributes = null;
- this.classList = null;
- }
-
- ComponentElementOperations.prototype.addStaticAttribute = function addStaticAttribute(element, name, value) {
- if (name === 'class') {
- this.addClass(new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(value));
- } else if (this.shouldAddAttribute(name)) {
- this.addAttribute(name, new StaticAttribute(element, name, value));
- }
- };
-
- ComponentElementOperations.prototype.addStaticAttributeNS = function addStaticAttributeNS(element, namespace, name, value) {
- if (this.shouldAddAttribute(name)) {
- this.addAttribute(name, new StaticAttribute(element, name, value, namespace));
- }
- };
-
- ComponentElementOperations.prototype.addDynamicAttribute = function addDynamicAttribute(element, name, reference, isTrusting) {
- if (name === 'class') {
- this.addClass(reference);
- } else if (this.shouldAddAttribute(name)) {
- var attributeManager = this.env.attributeFor(element, name, isTrusting);
- var attribute = new DynamicAttribute(element, attributeManager, name, reference);
- this.addAttribute(name, attribute);
- }
- };
-
- ComponentElementOperations.prototype.addDynamicAttributeNS = function addDynamicAttributeNS(element, namespace, name, reference, isTrusting) {
- if (this.shouldAddAttribute(name)) {
- var attributeManager = this.env.attributeFor(element, name, isTrusting, namespace);
- var nsAttribute = new DynamicAttribute(element, attributeManager, name, reference, namespace);
- this.addAttribute(name, nsAttribute);
- }
- };
-
- ComponentElementOperations.prototype.flush = function flush(element, vm) {
- var env = this.env;
- var attributes = this.attributes;
- var classList = this.classList;
-
- for (var i = 0; attributes && i < attributes.length; i++) {
- var opcode = attributes[i].flush(env);
- if (opcode) {
- vm.updateWith(opcode);
- }
- }
- if (classList) {
- var attributeManager = env.attributeFor(element, 'class', false);
- var attribute = new DynamicAttribute(element, attributeManager, 'class', classList.toReference());
- var opcode = attribute.flush(env);
- if (opcode) {
- vm.updateWith(opcode);
- }
- }
- };
-
- ComponentElementOperations.prototype.shouldAddAttribute = function shouldAddAttribute(name) {
- return !this.attributeNames || this.attributeNames.indexOf(name) === -1;
- };
-
- ComponentElementOperations.prototype.addClass = function addClass(reference) {
- var classList = this.classList;
-
- if (!classList) {
- classList = this.classList = new ClassList();
- }
- classList.append(reference);
- };
-
- ComponentElementOperations.prototype.addAttribute = function addAttribute(name, attribute) {
- var attributeNames = this.attributeNames;
- var attributes = this.attributes;
-
- if (!attributeNames) {
- attributeNames = this.attributeNames = [];
- attributes = this.attributes = [];
- }
- attributeNames.push(name);
- attributes.push(attribute);
- };
-
- return ComponentElementOperations;
- })();
-
- exports.ComponentElementOperations = ComponentElementOperations;
-
- var FlushElementOpcode = (function (_Opcode7) {
- babelHelpers.inherits(FlushElementOpcode, _Opcode7);
-
- function FlushElementOpcode() {
- _Opcode7.apply(this, arguments);
- this.type = "flush-element";
- }
-
- FlushElementOpcode.prototype.evaluate = function evaluate(vm) {
- var stack = vm.stack();
- stack.operations.flush(stack.constructing, vm);
- stack.flushElement();
- };
-
- return FlushElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.FlushElementOpcode = FlushElementOpcode;
-
- var CloseElementOpcode = (function (_Opcode8) {
- babelHelpers.inherits(CloseElementOpcode, _Opcode8);
-
- function CloseElementOpcode() {
- _Opcode8.apply(this, arguments);
- this.type = "close-element";
- }
-
- CloseElementOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().closeElement();
- };
-
- return CloseElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.CloseElementOpcode = CloseElementOpcode;
-
- var PopElementOpcode = (function (_Opcode9) {
- babelHelpers.inherits(PopElementOpcode, _Opcode9);
-
- function PopElementOpcode() {
- _Opcode9.apply(this, arguments);
- this.type = "pop-element";
- }
-
- PopElementOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().popElement();
- };
-
- return PopElementOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PopElementOpcode = PopElementOpcode;
-
- var StaticAttrOpcode = (function (_Opcode10) {
- babelHelpers.inherits(StaticAttrOpcode, _Opcode10);
-
- function StaticAttrOpcode(namespace, name, value) {
- _Opcode10.call(this);
- this.namespace = namespace;
- this.name = name;
- this.value = value;
- this.type = "static-attr";
- }
-
- StaticAttrOpcode.prototype.evaluate = function evaluate(vm) {
- var name = this.name;
- var value = this.value;
- var namespace = this.namespace;
-
- if (namespace) {
- vm.stack().setStaticAttributeNS(namespace, name, value);
- } else {
- vm.stack().setStaticAttribute(name, value);
- }
- };
-
- StaticAttrOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var namespace = this.namespace;
- var name = this.name;
- var value = this.value;
-
- var details = _glimmerUtil.dict();
- if (namespace) {
- details["namespace"] = JSON.stringify(namespace);
- }
- details["name"] = JSON.stringify(name);
- details["value"] = JSON.stringify(value);
- return { guid: guid, type: type, details: details };
- };
-
- return StaticAttrOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.StaticAttrOpcode = StaticAttrOpcode;
-
- var ModifierOpcode = (function (_Opcode11) {
- babelHelpers.inherits(ModifierOpcode, _Opcode11);
-
- function ModifierOpcode(name, manager, args) {
- _Opcode11.call(this);
- this.name = name;
- this.manager = manager;
- this.args = args;
- this.type = "modifier";
- }
-
- ModifierOpcode.prototype.evaluate = function evaluate(vm) {
- var manager = this.manager;
-
- var stack = vm.stack();
- var element = stack.constructing;
- var updateOperations = stack.updateOperations;
-
- var args = this.args.evaluate(vm);
- var dynamicScope = vm.dynamicScope();
- var modifier = manager.create(element, args, dynamicScope, updateOperations);
- vm.env.scheduleInstallModifier(modifier, manager);
- var destructor = manager.getDestructor(modifier);
- if (destructor) {
- vm.newDestroyable(destructor);
- }
- vm.updateWith(new UpdateModifierOpcode(manager, modifier, args));
- };
-
- ModifierOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var name = this.name;
- var args = this.args;
-
- var details = _glimmerUtil.dict();
- details["type"] = JSON.stringify(type);
- details["name"] = JSON.stringify(name);
- details["args"] = JSON.stringify(args);
- return { guid: guid, type: type, details: details };
- };
-
- return ModifierOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.ModifierOpcode = ModifierOpcode;
-
- var UpdateModifierOpcode = (function (_UpdatingOpcode) {
- babelHelpers.inherits(UpdateModifierOpcode, _UpdatingOpcode);
-
- function UpdateModifierOpcode(manager, modifier, args) {
- _UpdatingOpcode.call(this);
- this.manager = manager;
- this.modifier = modifier;
- this.args = args;
- this.type = "update-modifier";
- this.tag = args.tag;
- this.lastUpdated = args.tag.value();
- }
-
- UpdateModifierOpcode.prototype.evaluate = function evaluate(vm) {
- var manager = this.manager;
- var modifier = this.modifier;
- var tag = this.tag;
- var lastUpdated = this.lastUpdated;
-
- if (!tag.validate(lastUpdated)) {
- vm.env.scheduleUpdateModifier(modifier, manager);
- this.lastUpdated = tag.value();
- }
- };
-
- UpdateModifierOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.args)]
- };
- };
-
- return UpdateModifierOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.UpdateModifierOpcode = UpdateModifierOpcode;
-
- var StaticAttribute = (function () {
- function StaticAttribute(element, name, value, namespace) {
- this.element = element;
- this.name = name;
- this.value = value;
- this.namespace = namespace;
- }
-
- StaticAttribute.prototype.flush = function flush(env) {
- env.getAppendOperations().setAttribute(this.element, this.name, this.value, this.namespace);
- return null;
- };
-
- return StaticAttribute;
- })();
-
- exports.StaticAttribute = StaticAttribute;
-
- var DynamicAttribute = (function () {
- function DynamicAttribute(element, attributeManager, name, reference, namespace) {
- this.element = element;
- this.attributeManager = attributeManager;
- this.name = name;
- this.reference = reference;
- this.namespace = namespace;
- this.tag = reference.tag;
- this.cache = null;
- }
-
- DynamicAttribute.prototype.patch = function patch(env) {
- var element = this.element;
- var cache = this.cache;
-
- var value = cache.revalidate();
- if (_glimmerReference.isModified(value)) {
- this.attributeManager.updateAttribute(env, element, value, this.namespace);
- }
- };
-
- DynamicAttribute.prototype.flush = function flush(env) {
- var reference = this.reference;
- var element = this.element;
-
- if (_glimmerReference.isConst(reference)) {
- var value = reference.value();
- this.attributeManager.setAttribute(env, element, value, this.namespace);
- return null;
- } else {
- var cache = this.cache = new _glimmerReference.ReferenceCache(reference);
- var value = cache.peek();
- this.attributeManager.setAttribute(env, element, value, this.namespace);
- return new PatchElementOpcode(this);
- }
- };
-
- DynamicAttribute.prototype.toJSON = function toJSON() {
- var element = this.element;
- var namespace = this.namespace;
- var name = this.name;
- var cache = this.cache;
-
- var formattedElement = formatElement(element);
- var lastValue = cache.peek();
- if (namespace) {
- return {
- element: formattedElement,
- type: 'attribute',
- namespace: namespace,
- name: name,
- lastValue: lastValue
- };
- }
- return {
- element: formattedElement,
- type: 'attribute',
- namespace: namespace,
- name: name,
- lastValue: lastValue
- };
- };
-
- return DynamicAttribute;
- })();
-
- exports.DynamicAttribute = DynamicAttribute;
-
- function formatElement(element) {
- return JSON.stringify('<' + element.tagName.toLowerCase() + ' />');
+ if (typeof keyword === 'function') {
+ return keyword(morph, env, scope, params, hash, template, inverse, visitor);
}
- var DynamicAttrNSOpcode = (function (_Opcode12) {
- babelHelpers.inherits(DynamicAttrNSOpcode, _Opcode12);
-
- function DynamicAttrNSOpcode(name, namespace, isTrusting) {
- _Opcode12.call(this);
- this.name = name;
- this.namespace = namespace;
- this.isTrusting = isTrusting;
- this.type = "dynamic-attr";
- }
-
- DynamicAttrNSOpcode.prototype.evaluate = function evaluate(vm) {
- var name = this.name;
- var namespace = this.namespace;
- var isTrusting = this.isTrusting;
-
- var reference = vm.frame.getOperand();
- vm.stack().setDynamicAttributeNS(namespace, name, reference, isTrusting);
- };
-
- DynamicAttrNSOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var name = this.name;
- var namespace = this.namespace;
-
- var details = _glimmerUtil.dict();
- details["name"] = JSON.stringify(name);
- details["value"] = "$OPERAND";
- if (namespace) {
- details["namespace"] = JSON.stringify(namespace);
- }
- return { guid: guid, type: type, details: details };
- };
-
- return DynamicAttrNSOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.DynamicAttrNSOpcode = DynamicAttrNSOpcode;
-
- var DynamicAttrOpcode = (function (_Opcode13) {
- babelHelpers.inherits(DynamicAttrOpcode, _Opcode13);
-
- function DynamicAttrOpcode(name, isTrusting) {
- _Opcode13.call(this);
- this.name = name;
- this.isTrusting = isTrusting;
- this.type = "dynamic-attr";
- }
-
- DynamicAttrOpcode.prototype.evaluate = function evaluate(vm) {
- var name = this.name;
- var isTrusting = this.isTrusting;
-
- var reference = vm.frame.getOperand();
- vm.stack().setDynamicAttribute(name, reference, isTrusting);
- };
-
- DynamicAttrOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var name = this.name;
-
- var details = _glimmerUtil.dict();
- details["name"] = JSON.stringify(name);
- details["value"] = "$OPERAND";
- return { guid: guid, type: type, details: details };
- };
-
- return DynamicAttrOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.DynamicAttrOpcode = DynamicAttrOpcode;
-
- var PatchElementOpcode = (function (_UpdatingOpcode2) {
- babelHelpers.inherits(PatchElementOpcode, _UpdatingOpcode2);
-
- function PatchElementOpcode(operation) {
- _UpdatingOpcode2.call(this);
- this.type = "patch-element";
- this.tag = operation.tag;
- this.operation = operation;
- }
-
- PatchElementOpcode.prototype.evaluate = function evaluate(vm) {
- this.operation.patch(vm.env);
- };
-
- PatchElementOpcode.prototype.toJSON = function toJSON() {
- var _guid = this._guid;
- var type = this.type;
- var operation = this.operation;
-
- return {
- guid: _guid,
- type: type,
- details: operation.toJSON()
- };
- };
-
- return PatchElementOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.PatchElementOpcode = PatchElementOpcode;
-
- var CommentOpcode = (function (_Opcode14) {
- babelHelpers.inherits(CommentOpcode, _Opcode14);
-
- function CommentOpcode(comment) {
- _Opcode14.call(this);
- this.comment = comment;
- this.type = "comment";
- }
-
- CommentOpcode.prototype.evaluate = function evaluate(vm) {
- vm.stack().appendComment(this.comment);
- };
-
- CommentOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.comment)]
- };
- };
-
- return CommentOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.CommentOpcode = CommentOpcode;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBeUJBLFVBQUE7OEJBQUEsVUFBQTs7QUFHRSxpQkFIRixVQUFBLENBR3NCLElBQVksRUFBQTtBQUM5Qiw4QkFBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFRO0FBRnpCLGdCQUFBLENBQUEsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUlwQjs7QUFMSCxrQkFBQSxXQU9FLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQzs7QUFUSCxrQkFBQSxXQVdFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2Ysb0JBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDLENBQUM7U0FDSDs7ZUFqQkgsVUFBQTtpQ0F6QlMsTUFBTTs7OztRQTZDZiwwQkFBQTs4QkFBQSwwQkFBQTs7QUFHRSxpQkFIRiwwQkFBQSxDQUdzQixHQUFXLEVBQUE7QUFDN0IsK0JBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBUTtBQUZ4QixnQkFBQSxDQUFBLElBQUksR0FBRyx3QkFBd0IsQ0FBQztTQUl0Qzs7QUFMSCxrQ0FBQSxXQU9FLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQzs7QUFUSCxrQ0FBQSxXQVdFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JB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QUMsSUFBSTtBQUNmLG9CQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQyxDQUFDO1NBQ0g7O2VBakJILGFBQUE7aUNBN3FCUyxNQUFNIiwiZmlsZSI6ImRvbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZJWF9SRUlGSUNBVElPTiB9IGZyb20gJy4uLy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRklYTUUsIE9wdGlvbiwgT3BhcXVlLCBEaWN0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7XG4gIENhY2hlZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgUmV2aXNpb25UYWcsXG4gIFJldmlzaW9uLFxuICBQYXRoUmVmZXJlbmNlLFxuICBjb21iaW5lVGFnZ2VkLFxuICBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsXG4gIGlzTW9kaWZpZWRcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi8uLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9kb20vYXR0cmlidXRlLW1hbmFnZXJzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcblxuZXhwb3J0IGNsYXNzIFRleHRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidGV4dFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGV4dDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuYXBwZW5kVGV4dCh0aGlzLnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGV4dCldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwib3Blbi1wcmltaXRpdmUtZWxlbWVudFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFnOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uc3RhY2soKS5vcGVuRWxlbWVudCh0aGlzLnRhZyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YWcpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1c2hSZW1vdGVFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1c2gtcmVtb3RlLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZDxTaW1wbGUuRWxlbWVudD4oKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZWxlbWVudCA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG5cbiAgICB2bS5zdGFjaygpLnB1c2hSZW1vdGVFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbJyRPUEVSQU5EJ11cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3BSZW1vdGVFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInBvcC1yZW1vdGUtZWxlbWVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkucG9wUmVtb3RlRWxlbWVudCgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuQ29tcG9uZW50RWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJvcGVuLWNvbXBvbmVudC1lbGVtZW50XCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWc6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5zdGFjaygpLm9wZW5FbGVtZW50KHRoaXMudGFnLCBuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YWcpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJvcGVuLWR5bmFtaWMtcHJpbWl0aXZlLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgdGFnTmFtZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQ8c3RyaW5nPigpLnZhbHVlKCk7XG4gICAgdm0uc3RhY2soKS5vcGVuRWxlbWVudCh0YWdOYW1lKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10gPSBudWxsO1xuICBwcml2YXRlIGlzQ29uc3QgPSB0cnVlO1xuXG4gIGFwcGVuZChyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG5cbiAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHRvUmVmZXJlbmNlKCk6IFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gTlVMTF9SRUZFUkVOQ0U7XG5cbiAgICBpZiAoaXNDb25zdCkgcmV0dXJuIG5ldyBWYWx1ZVJlZmVyZW5jZSh0b0NsYXNzTmFtZShsaXN0KSk7XG5cbiAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgfVxuXG59XG5cbmNsYXNzIENsYXNzTGlzdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgbGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdG9DbGFzc05hbWUodGhpcy5saXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKSB7XG4gIGxldCByZXQgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogVXBkYXRpbmdPcGNvZGVbXSA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBDbGFzc0xpc3QgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhuZXcgVmFsdWVSZWZlcmVuY2UodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IFNpbXBsZS5OYW1lc3BhY2UsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgIHRoaXMuYWRkQXR0cmlidXRlKG5zQXR0cmlidXRlKTtcbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHZtO1xuICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGkgPSAwOyBvcGNvZGVzICYmIGkgPCBvcGNvZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG9wY29kZXNbaV0pO1xuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZXMgPSBudWxsO1xuICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlOiBBdHRyaWJ1dGUpIHtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcblxuICAgIGlmIChvcGNvZGUpIHtcbiAgICAgIGxldCB7IG9wY29kZXMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICBvcGNvZGVzID0gdGhpcy5vcGNvZGVzID0gW107XG4gICAgICB9XG5cbiAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICBwcml2YXRlIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdID0gbnVsbDtcbiAgcHJpdmF0ZSBjbGFzc0xpc3Q6IENsYXNzTGlzdCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnY6IEVudmlyb25tZW50KSB7XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZyk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cblxuICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogU2ltcGxlLk5hbWVzcGFjZSwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgIGxldCBuc0F0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbnNBdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pIHtcbiAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG4gICAgbGV0IHsgYXR0cmlidXRlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGF0dHJpYnV0ZXMgJiYgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGVzW2ldLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGFzc0xpc3QpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICBsZXQgYXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgJ2NsYXNzJywgY2xhc3NMaXN0LnRvUmVmZXJlbmNlKCkpO1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaChlbnYpO1xuXG4gICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gIXRoaXMuYXR0cmlidXRlTmFtZXMgfHwgdGhpcy5hdHRyaWJ1dGVOYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xhc3MocmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4pIHtcbiAgICBsZXQgeyBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgfVxuXG4gICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IEF0dHJpYnV0ZSkge1xuICAgIGxldCB7IGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgYXR0cmlidXRlTmFtZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzID0gW107XG4gICAgICBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICAgYXR0cmlidXRlTmFtZXMucHVzaChuYW1lKTtcbiAgICBhdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmx1c2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImZsdXNoLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaygpO1xuXG4gICAgc3RhY2sub3BlcmF0aW9ucy5mbHVzaChzdGFjay5jb25zdHJ1Y3RpbmcsIHZtKTtcbiAgICBzdGFjay5mbHVzaEVsZW1lbnQoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvc2VFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImNsb3NlLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5zdGFjaygpLmNsb3NlRWxlbWVudCgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3BFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInBvcC1lbGVtZW50XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uc3RhY2soKS5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNBdHRyT3B0aW9ucyB7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWVzcGFjZTogc3RyaW5nLFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgfSA9IHRoaXM7XG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgdm0uc3RhY2soKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uc3RhY2soKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJ2YWx1ZVwiXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibW9kaWZpZXJcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LFxuICAgIHByaXZhdGUgYXJnczogQ29tcGlsZWRBcmdzXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyIH0gPSB0aGlzO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrKCk7XG4gICAgbGV0IHsgY29uc3RydWN0aW5nOiBlbGVtZW50LCB1cGRhdGVPcGVyYXRpb25zIH0gPSBzdGFjaztcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJncy5ldmFsdWF0ZSh2bSk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBtb2RpZmllciA9IG1hbmFnZXIuY3JlYXRlKGVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBhcmdzLCBkeW5hbWljU2NvcGUsIHVwZGF0ZU9wZXJhdGlvbnMpO1xuXG4gICAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihtb2RpZmllcik7XG5cbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUoXG4gICAgICBtYW5hZ2VyLFxuICAgICAgbW9kaWZpZXIsXG4gICAgICBhcmdzXG4gICAgKSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIG5hbWUsIGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcInR5cGVcIl0gPSBKU09OLnN0cmluZ2lmeSh0eXBlKTtcbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJhcmdzXCJdID0gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG5cbiAgICByZXR1cm4geyBndWlkLCB0eXBlLCBkZXRhaWxzIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidXBkYXRlLW1vZGlmaWVyXCI7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBtb2RpZmllcjogT3BhcXVlLFxuICAgIHByaXZhdGUgYXJnczogRXZhbHVhdGVkQXJnc1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gYXJncy50YWc7XG4gICAgdGhpcy5sYXN0VXBkYXRlZCA9IGFyZ3MudGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IG1hbmFnZXIsIG1vZGlmaWVyLCB0YWcsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICB2bS5lbnYuc2NoZWR1bGVVcGRhdGVNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuYXJncyldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT47XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB2YWx1ZTogc3RyaW5nLFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogc3RyaW5nXG4gICkge31cblxuICBmbHVzaChlbnY6IEVudmlyb25tZW50KTogT3B0aW9uPFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJpYnV0ZSBpbXBsZW1lbnRzIEF0dHJpYnV0ZSAge1xuICBwcml2YXRlIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+O1xuXG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsXG4gICAgcHJpdmF0ZSBhdHRyaWJ1dGVNYW5hZ2VyOiBBdHRyaWJ1dGVNYW5hZ2VyLFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIHByaXZhdGUgbmFtZXNwYWNlPzogU2ltcGxlLk5hbWVzcGFjZVxuICApIHtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gIH1cblxuICBwYXRjaChlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHsgZWxlbWVudCwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgdmFsdWUgPSBjYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlTWFuYWdlci51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50IGFzIEZJWE1FPEVsZW1lbnQsICduZWVkcyB0byBiZSByZWlmaWVkIHByb3Blcmx5Jz4sIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcblxuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gdGhpcy5jYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgbGV0IHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVNYW5hZ2VyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbmV3IFBhdGNoRWxlbWVudE9wY29kZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogRGljdDxzdHJpbmc+IHtcbiAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGxldCBsYXN0VmFsdWUgPSBjYWNoZS5wZWVrKCkgYXMgc3RyaW5nO1xuXG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbGFzdFZhbHVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBuYW1lLFxuICAgICAgbGFzdFZhbHVlXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGA8JHtlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gLz5gKTtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyTlNPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZHluYW1pYy1hdHRyXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICAgcHVibGljIGlzVHJ1c3Rpbmc6IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9ID0gdGhpcztcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZDxzdHJpbmc+KCk7XG4gICAgdm0uc3RhY2soKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lLCBuYW1lc3BhY2UgfSA9IHRoaXM7XG5cbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcIm5hbWVcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lKTtcbiAgICBkZXRhaWxzW1widmFsdWVcIl0gPSBcIiRPUEVSQU5EXCI7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBndWlkLCB0eXBlLCBkZXRhaWxzIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGlzVHJ1c3Rpbmc6IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIGlzVHJ1c3RpbmcgfSA9IHRoaXM7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQ8c3RyaW5nPigpO1xuICAgIHZtLnN0YWNrKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lIH0gPSB0aGlzO1xuXG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJuYW1lXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZSk7XG4gICAgZGV0YWlsc1tcInZhbHVlXCJdID0gXCIkT1BFUkFORFwiO1xuXG4gICAgcmV0dXJuIHsgZ3VpZCwgdHlwZSwgZGV0YWlscyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXRjaEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG5cbiAgcHJpdmF0ZSBvcGVyYXRpb246IER5bmFtaWNBdHRyaWJ1dGU7XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wZXJhdGlvbi50YWc7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHRoaXMub3BlcmF0aW9uLnBhdGNoKHZtLmVudik7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQsIHR5cGUsIG9wZXJhdGlvbiB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBkZXRhaWxzOiBvcGVyYXRpb24udG9KU09OKClcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImNvbW1lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tbWVudDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuYXBwZW5kQ29tbWVudCh0aGlzLmNvbW1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuY29tbWVudCldXG4gICAgfTtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compiled/opcodes/lists', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-util', 'glimmer-reference'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerUtil, _glimmerReference) {
- 'use strict';
-
- var IterablePresenceReference = (function () {
- function IterablePresenceReference(artifacts) {
- this.tag = artifacts.tag;
- this.artifacts = artifacts;
- }
-
- IterablePresenceReference.prototype.value = function value() {
- return !this.artifacts.isEmpty();
- };
-
- return IterablePresenceReference;
- })();
-
- var PutIteratorOpcode = (function (_Opcode) {
- babelHelpers.inherits(PutIteratorOpcode, _Opcode);
-
- function PutIteratorOpcode() {
- _Opcode.apply(this, arguments);
- this.type = "put-iterator";
- }
-
- PutIteratorOpcode.prototype.evaluate = function evaluate(vm) {
- var listRef = vm.frame.getOperand();
- var args = vm.frame.getArgs();
- var iterable = vm.env.iterableFor(listRef, args);
- var iterator = new _glimmerReference.ReferenceIterator(iterable);
- vm.frame.setIterator(iterator);
- vm.frame.setCondition(new IterablePresenceReference(iterator.artifacts));
- };
-
- return PutIteratorOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutIteratorOpcode = PutIteratorOpcode;
-
- var EnterListOpcode = (function (_Opcode2) {
- babelHelpers.inherits(EnterListOpcode, _Opcode2);
-
- function EnterListOpcode(start, end) {
- _Opcode2.call(this);
- this.type = "enter-list";
- this.slice = new _glimmerUtil.ListSlice(start, end);
- }
-
- EnterListOpcode.prototype.evaluate = function evaluate(vm) {
- vm.enterList(this.slice);
- };
-
- EnterListOpcode.prototype.toJSON = function toJSON() {
- var slice = this.slice;
- var type = this.type;
- var _guid = this._guid;
-
- var begin = slice.head();
- var end = slice.tail();
- return {
- guid: _guid,
- type: type,
- args: [JSON.stringify(begin.inspect()), JSON.stringify(end.inspect())]
- };
- };
-
- return EnterListOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.EnterListOpcode = EnterListOpcode;
-
- var ExitListOpcode = (function (_Opcode3) {
- babelHelpers.inherits(ExitListOpcode, _Opcode3);
-
- function ExitListOpcode() {
- _Opcode3.apply(this, arguments);
- this.type = "exit-list";
- }
-
- ExitListOpcode.prototype.evaluate = function evaluate(vm) {
- vm.exitList();
- };
-
- return ExitListOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.ExitListOpcode = ExitListOpcode;
-
- var EnterWithKeyOpcode = (function (_Opcode4) {
- babelHelpers.inherits(EnterWithKeyOpcode, _Opcode4);
-
- function EnterWithKeyOpcode(start, end) {
- _Opcode4.call(this);
- this.type = "enter-with-key";
- this.slice = new _glimmerUtil.ListSlice(start, end);
- }
-
- EnterWithKeyOpcode.prototype.evaluate = function evaluate(vm) {
- vm.enterWithKey(vm.frame.getKey(), this.slice);
- };
-
- EnterWithKeyOpcode.prototype.toJSON = function toJSON() {
- var slice = this.slice;
- var _guid = this._guid;
- var type = this.type;
-
- var begin = slice.head();
- var end = slice.tail();
- return {
- guid: _guid,
- type: type,
- args: [JSON.stringify(begin.inspect()), JSON.stringify(end.inspect())]
- };
- };
-
- return EnterWithKeyOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.EnterWithKeyOpcode = EnterWithKeyOpcode;
-
- var TRUE_REF = new _glimmerReference.ConstReference(true);
- var FALSE_REF = new _glimmerReference.ConstReference(false);
-
- var NextIterOpcode = (function (_Opcode5) {
- babelHelpers.inherits(NextIterOpcode, _Opcode5);
-
- function NextIterOpcode(end) {
- _Opcode5.call(this);
- this.type = "next-iter";
- this.end = end;
- }
-
- NextIterOpcode.prototype.evaluate = function evaluate(vm) {
- var item = vm.frame.getIterator().next();
- if (item) {
- vm.frame.setCondition(TRUE_REF);
- vm.frame.setKey(item.key);
- vm.frame.setOperand(item.value);
- vm.frame.setArgs(_glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedArgs.positional([item.value, item.memo]));
- } else {
- vm.frame.setCondition(FALSE_REF);
- vm.goto(this.end);
- }
- };
-
- return NextIterOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.NextIterOpcode = NextIterOpcode;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9saXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFPQSx5QkFBQTtBQUlFLGlCQUpGLHlCQUFBLENBSWMsU0FBNkIsRUFBQTtBQUN2QyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFQSCxpQ0FBQSxXQVNFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQzs7ZUFYSCx5QkFBQTs7O1FBY0EsaUJBQUE7OEJBQUEsaUJBQUE7O0FBQUEsaUJBQUEsaUJBQUEsR0FBQTtBQUF1QyxnQ0FBQSxTQUFBLENBQUEsQ0FBTTtBQUNwQyxnQkFBQSxDQUFBLElBQUksR0FBRyxjQUFjLENBQUM7U0FXOUI7O0FBWkQseUJBQUEsV0FHRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDcEMsZ0JBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUIsZ0JBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxnQkFBSSxRQUFRLEdBQUcsc0JBdkI4QixpQkFBaUIsQ0F1QnpCLFFBQVEsQ0FBQyxDQUFDO0FBRS9DLGNBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLGNBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDMUU7O2VBWEgsaUJBQUE7aUNB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QUFDO0FBQzFDLFFBQU0sU0FBUyxHQUFHLHNCQXJHZSxjQUFjLENBcUdWLEtBQUssQ0FBQyxDQUFDOztRQUU1QyxjQUFBOzhCQUFBLGNBQUE7O0FBS0UsaUJBTEYsY0FBQSxDQUtjLEdBQWdCLEVBQUE7QUFDMUIsK0JBQU8sQ0FBQztBQUxILGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQU14QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDaEI7O0FBUkgsc0JBQUEsV0FVRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFekMsZ0JBQUksSUFBSSxFQUFFO0FBQ1Isa0JBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLGtCQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsa0JBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxrQkFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsMENBMUhkLGFBQWEsQ0EwSGUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JFLE1BQU07QUFDTCxrQkFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakMsa0JBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7O2VBdEJILGNBQUE7aUNBNUdTLE1BQU0iLCJmaWxlIjoibGlzdHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGNvZGUsIE9wY29kZUpTT04gfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IFZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IExpc3RTbGljZSwgU2xpY2UgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUmV2aXNpb25UYWcsIFJlZmVyZW5jZSwgQ29uc3RSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yLCBJdGVyYXRpb25BcnRpZmFjdHMgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5cbmNsYXNzIEl0ZXJhYmxlUHJlc2VuY2VSZWZlcmVuY2UgaW1wbGVtZW50cyBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICBwdWJsaWMgdGFnOiBSZXZpc2lvblRhZztcbiAgcHJpdmF0ZSBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcblxuICBjb25zdHJ1Y3RvcihhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cykge1xuICAgIHRoaXMudGFnID0gYXJ0aWZhY3RzLnRhZztcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgfVxuXG4gIHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5hcnRpZmFjdHMuaXNFbXB0eSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXRJdGVyYXRvck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXQtaXRlcmF0b3JcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgbGlzdFJlZiA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICBsZXQgYXJncyA9IHZtLmZyYW1lLmdldEFyZ3MoKTtcbiAgICBsZXQgaXRlcmFibGUgPSB2bS5lbnYuaXRlcmFibGVGb3IobGlzdFJlZiwgYXJncyk7XG4gICAgbGV0IGl0ZXJhdG9yID0gbmV3IFJlZmVyZW5jZUl0ZXJhdG9yKGl0ZXJhYmxlKTtcblxuICAgIHZtLmZyYW1lLnNldEl0ZXJhdG9yKGl0ZXJhdG9yKTtcbiAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24obmV3IEl0ZXJhYmxlUHJlc2VuY2VSZWZlcmVuY2UoaXRlcmF0b3IuYXJ0aWZhY3RzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudGVyTGlzdE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJlbnRlci1saXN0XCI7XG5cbiAgcHVibGljIHNsaWNlOiBTbGljZTxPcGNvZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHN0YXJ0OiBMYWJlbE9wY29kZSwgZW5kOiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zbGljZSA9IG5ldyBMaXN0U2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5lbnRlckxpc3QodGhpcy5zbGljZSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgc2xpY2UsIHR5cGUsIF9ndWlkIH0gPSB0aGlzO1xuXG4gICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSBzbGljZS50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW1xuICAgICAgICBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShlbmQuaW5zcGVjdCgpKVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4aXRMaXN0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImV4aXQtbGlzdFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmV4aXRMaXN0KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudGVyV2l0aEtleU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJlbnRlci13aXRoLWtleVwiO1xuXG4gIHByaXZhdGUgc2xpY2U6IFNsaWNlPE9wY29kZT47XG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ6IExhYmVsT3Bjb2RlLCBlbmQ6IExhYmVsT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNsaWNlID0gbmV3IExpc3RTbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmVudGVyV2l0aEtleSh2bS5mcmFtZS5nZXRLZXkoKSwgdGhpcy5zbGljZSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgc2xpY2UsIF9ndWlkLCB0eXBlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSBzbGljZS50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW1xuICAgICAgICBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShlbmQuaW5zcGVjdCgpKVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgVFJVRV9SRUYgPSBuZXcgQ29uc3RSZWZlcmVuY2UodHJ1ZSk7XG5jb25zdCBGQUxTRV9SRUYgPSBuZXcgQ29uc3RSZWZlcmVuY2UoZmFsc2UpO1xuXG5leHBvcnQgY2xhc3MgTmV4dEl0ZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibmV4dC1pdGVyXCI7XG5cbiAgcHJpdmF0ZSBlbmQ6IExhYmVsT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKGVuZDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGl0ZW0gPSB2bS5mcmFtZS5nZXRJdGVyYXRvcigpLm5leHQoKTtcblxuICAgIGlmIChpdGVtKSB7XG4gICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24oVFJVRV9SRUYpO1xuICAgICAgdm0uZnJhbWUuc2V0S2V5KGl0ZW0ua2V5KTtcbiAgICAgIHZtLmZyYW1lLnNldE9wZXJhbmQoaXRlbS52YWx1ZSk7XG4gICAgICB2bS5mcmFtZS5zZXRBcmdzKEV2YWx1YXRlZEFyZ3MucG9zaXRpb25hbChbaXRlbS52YWx1ZSwgaXRlbS5tZW1vXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24oRkFMU0VfUkVGKTtcbiAgICAgIHZtLmdvdG8odGhpcy5lbmQpO1xuICAgIH1cbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compiled/opcodes/partial', ['exports', 'glimmer-util', 'glimmer-reference', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/opcodes/vm'], function (exports, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm) {
- 'use strict';
-
- var PutDynamicPartialDefinitionOpcode = (function (_Opcode) {
- babelHelpers.inherits(PutDynamicPartialDefinitionOpcode, _Opcode);
-
- function PutDynamicPartialDefinitionOpcode(symbolTable) {
- _Opcode.call(this);
- this.symbolTable = symbolTable;
- this.type = "put-dynamic-partial-definition";
- }
-
- PutDynamicPartialDefinitionOpcode.prototype.evaluate = function evaluate(vm) {
- var env = vm.env;
- var symbolTable = this.symbolTable;
-
- function lookupPartial(name) {
- var normalized = String(name);
- if (!env.hasPartial(normalized, symbolTable)) {
- throw new Error('Could not find a partial named "' + normalized + '"');
- }
- return env.lookupPartial(normalized, symbolTable);
- }
- var reference = _glimmerReference.map(vm.frame.getOperand(), lookupPartial);
- var cache = _glimmerReference.isConst(reference) ? undefined : new _glimmerReference.ReferenceCache(reference);
- var definition = cache ? cache.peek() : reference.value();
- vm.frame.setImmediate(definition);
- if (cache) {
- vm.updateWith(new _glimmerRuntimeLibCompiledOpcodesVm.Assert(cache));
- }
- };
-
- PutDynamicPartialDefinitionOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return PutDynamicPartialDefinitionOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutDynamicPartialDefinitionOpcode = PutDynamicPartialDefinitionOpcode;
-
- var PutPartialDefinitionOpcode = (function (_Opcode2) {
- babelHelpers.inherits(PutPartialDefinitionOpcode, _Opcode2);
-
- function PutPartialDefinitionOpcode(definition) {
- _Opcode2.call(this);
- this.definition = definition;
- this.type = "put-partial-definition";
- }
-
- PutPartialDefinitionOpcode.prototype.evaluate = function evaluate(vm) {
- vm.frame.setImmediate(this.definition);
- };
-
- PutPartialDefinitionOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.definition.name)]
- };
- };
-
- return PutPartialDefinitionOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutPartialDefinitionOpcode = PutPartialDefinitionOpcode;
-
- var EvaluatePartialOpcode = (function (_Opcode3) {
- babelHelpers.inherits(EvaluatePartialOpcode, _Opcode3);
-
- function EvaluatePartialOpcode(symbolTable) {
- _Opcode3.call(this);
- this.symbolTable = symbolTable;
- this.type = "evaluate-partial";
- this.cache = _glimmerUtil.dict();
- }
-
- EvaluatePartialOpcode.prototype.evaluate = function evaluate(vm) {
- var _vm$frame$getImmediate = vm.frame.getImmediate();
-
- var template = _vm$frame$getImmediate.template;
-
- var block = this.cache[template.id];
- if (!block) {
- block = template.asPartial(this.symbolTable);
- }
- vm.invokePartial(block);
- };
-
- EvaluatePartialOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND"]
- };
- };
-
- return EvaluatePartialOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.EvaluatePartialOpcode = EvaluatePartialOpcode;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9wYXJ0aWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVNBLGlDQUFBOzhCQUFBLGlDQUFBOztBQUdFLGlCQUhGLGlDQUFBLENBR3NCLFdBQXdCLEVBQUE7QUFDMUMsOEJBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBYTtBQUZyQyxnQkFBQSxDQUFBLElBQUksR0FBRyxnQ0FBZ0MsQ0FBQztTQUk5Qzs7QUFMSCx5Q0FBQSxXQU9FLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztnQkFDWCxXQUFXLEdBQUssSUFBSSxDQUFwQixXQUFXOztBQUVqQixxQkFBQSxhQUFBLENBQXVCLElBQVksRUFBQTtBQUNqQyxvQkFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTlCLG9CQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUU7QUFDNUMsMEJBQU0sSUFBSSxLQUFLLHNDQUFvQyxVQUFVLE9BQUksQ0FBQztpQkFDbkU7QUFFRCx1QkFBTyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNuRDtBQUVELGdCQUFJLFNBQVMsR0FBRyxrQkE3QmMsR0FBRyxDQTZCYixFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2xFLGdCQUFJLEtBQUssR0FBRyxrQkE5QlMsT0FBTyxDQThCUixTQUFTLENBQUMsR0FBRyxTQUFTLEdBQUcsc0JBOUJ4QyxjQUFjLENBOEI2QyxTQUFTLENBQUMsQ0FBQztBQUMzRSxnQkFBSSxVQUFVLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFMUQsY0FBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFbEMsZ0JBQUksS0FBSyxFQUFFO0FBQ1Qsa0JBQUUsQ0FBQyxVQUFVLENBQUMsd0NBbENYLE1BQU0sQ0FrQ2dCLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDbEM7U0FDRjs7QUE5QkgseUNBQUEsV0FnQ0UsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCxvQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2hCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixvQkFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ25CLENBQUM7U0FDSDs7ZUF0Q0gsaUNBQUE7aUNBUFMsTUFBTTs7OztRQWdEZiwwQkFBQTs4QkFBQSwwQkFBQTs7QUFHRSxpQkFIRiwwQkFBQSxDQUdzQixVQUFxQyxFQUFBO0FBQ3ZELCtCQUFPLENBQUM7QUFEVSxnQkFBQSxDQUFBLFVBQVUsR0FBVixVQUFVLENBQTJCO0FBRmxELGdCQUFBLENBQUEsSUFBSSxHQUFHLHdCQUF3QixDQUFDO1NBSXRDOztBQUxILGtDQUFBLFdBT0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN4Qzs7QUFUSCxrQ0FBQSxXQVdFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2Ysb0JBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QyxDQUFDO1NBQ0g7O2VBakJILDBCQUFBO2lDQWhEUyxNQUFNOzs7O1FBb0VmLHFCQUFBOzhCQUFBLHFCQUFBOztBQUlFLGlCQUpGLHFCQUFBLENBSXNCLFdBQXdCLEVBQUE7QUFDMUMsK0JBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBYTtBQUhyQyxnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztBQUN6QixnQkFBQSxDQUFBLEtBQUssR0FBRyxhQXhFRCxJQUFJLEVBd0VpQixDQUFDO1NBSXBDOztBQU5ILDZCQUFBLFdBUUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTt5Q0FDTSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBNkI7O2dCQUEvRCxRQUFRLDBCQUFSLFFBQVE7O0FBRWQsZ0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRXBDLGdCQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YscUJBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM5QztBQUVELGNBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O0FBbEJILDZCQUFBLFdBb0JFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2Ysb0JBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUNuQixDQUFDO1NBQ0g7O2VBMUJILHFCQUFBO2lDQXBFUyxNQUFNIiwiZmlsZSI6InBhcnRpYWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ2FjaGUsIGlzQ29uc3QsIG1hcCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFBhcnRpYWxEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vcGFydGlhbCc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IFBhcnRpYWxCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5cbmV4cG9ydCBjbGFzcyBQdXREeW5hbWljUGFydGlhbERlZmluaXRpb25PcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LWR5bmFtaWMtcGFydGlhbC1kZWZpbml0aW9uXCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGVudiA9IHZtLmVudjtcbiAgICBsZXQgeyBzeW1ib2xUYWJsZSB9ID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGxvb2t1cFBhcnRpYWwobmFtZTogT3BhcXVlKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZCA9IFN0cmluZyhuYW1lKTtcblxuICAgICAgaWYgKCFlbnYuaGFzUGFydGlhbChub3JtYWxpemVkLCBzeW1ib2xUYWJsZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIHBhcnRpYWwgbmFtZWQgXCIke25vcm1hbGl6ZWR9XCJgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudi5sb29rdXBQYXJ0aWFsKG5vcm1hbGl6ZWQsIHN5bWJvbFRhYmxlKTtcbiAgICB9XG5cbiAgICBsZXQgcmVmZXJlbmNlID0gbWFwKHZtLmZyYW1lLmdldE9wZXJhbmQ8T3BhcXVlPigpLCBsb29rdXBQYXJ0aWFsKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG5cbiAgICB2bS5mcmFtZS5zZXRJbW1lZGlhdGUoZGVmaW5pdGlvbik7XG5cbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHV0UGFydGlhbERlZmluaXRpb25PcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LXBhcnRpYWwtZGVmaW5pdGlvblwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVmaW5pdGlvbjogUGFydGlhbERlZmluaXRpb248T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5mcmFtZS5zZXRJbW1lZGlhdGUodGhpcy5kZWZpbml0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmluaXRpb24ubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGVQYXJ0aWFsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImV2YWx1YXRlLXBhcnRpYWxcIjtcbiAgcHJpdmF0ZSBjYWNoZSA9IGRpY3Q8UGFydGlhbEJsb2NrPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IHRlbXBsYXRlIH0gPSB2bS5mcmFtZS5nZXRJbW1lZGlhdGU8UGFydGlhbERlZmluaXRpb248T3BhcXVlPj4oKTtcblxuICAgIGxldCBibG9jayA9IHRoaXMuY2FjaGVbdGVtcGxhdGUuaWRdO1xuXG4gICAgaWYgKCFibG9jaykge1xuICAgICAgYmxvY2sgPSB0ZW1wbGF0ZS5hc1BhcnRpYWwodGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgdm0uaW52b2tlUGFydGlhbChibG9jayk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/compiled/opcodes/vm', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/references', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibReferences, _glimmerReference, _glimmerUtil) {
- 'use strict';
-
- var PushChildScopeOpcode = (function (_Opcode) {
- babelHelpers.inherits(PushChildScopeOpcode, _Opcode);
-
- function PushChildScopeOpcode() {
- _Opcode.apply(this, arguments);
- this.type = "push-child-scope";
- }
-
- PushChildScopeOpcode.prototype.evaluate = function evaluate(vm) {
- vm.pushChildScope();
- };
-
- return PushChildScopeOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PushChildScopeOpcode = PushChildScopeOpcode;
-
- var PopScopeOpcode = (function (_Opcode2) {
- babelHelpers.inherits(PopScopeOpcode, _Opcode2);
-
- function PopScopeOpcode() {
- _Opcode2.apply(this, arguments);
- this.type = "pop-scope";
- }
-
- PopScopeOpcode.prototype.evaluate = function evaluate(vm) {
- vm.popScope();
- };
-
- return PopScopeOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PopScopeOpcode = PopScopeOpcode;
-
- var PushDynamicScopeOpcode = (function (_Opcode3) {
- babelHelpers.inherits(PushDynamicScopeOpcode, _Opcode3);
-
- function PushDynamicScopeOpcode() {
- _Opcode3.apply(this, arguments);
- this.type = "push-dynamic-scope";
- }
-
- PushDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) {
- vm.pushDynamicScope();
- };
-
- return PushDynamicScopeOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PushDynamicScopeOpcode = PushDynamicScopeOpcode;
-
- var PopDynamicScopeOpcode = (function (_Opcode4) {
- babelHelpers.inherits(PopDynamicScopeOpcode, _Opcode4);
-
- function PopDynamicScopeOpcode() {
- _Opcode4.apply(this, arguments);
- this.type = "pop-dynamic-scope";
- }
-
- PopDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) {
- vm.popDynamicScope();
- };
-
- return PopDynamicScopeOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PopDynamicScopeOpcode = PopDynamicScopeOpcode;
-
- var PutNullOpcode = (function (_Opcode5) {
- babelHelpers.inherits(PutNullOpcode, _Opcode5);
-
- function PutNullOpcode() {
- _Opcode5.apply(this, arguments);
- this.type = "put-null";
- }
-
- PutNullOpcode.prototype.evaluate = function evaluate(vm) {
- vm.frame.setOperand(_glimmerRuntimeLibReferences.NULL_REFERENCE);
- };
-
- return PutNullOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutNullOpcode = PutNullOpcode;
-
- var PutValueOpcode = (function (_Opcode6) {
- babelHelpers.inherits(PutValueOpcode, _Opcode6);
-
- function PutValueOpcode(expression) {
- _Opcode6.call(this);
- this.expression = expression;
- this.type = "put-value";
- }
-
- PutValueOpcode.prototype.evaluate = function evaluate(vm) {
- vm.evaluateOperand(this.expression);
- };
-
- PutValueOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [this.expression.toJSON()]
- };
- };
-
- return PutValueOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutValueOpcode = PutValueOpcode;
-
- var PutArgsOpcode = (function (_Opcode7) {
- babelHelpers.inherits(PutArgsOpcode, _Opcode7);
-
- function PutArgsOpcode(args) {
- _Opcode7.call(this);
- this.args = args;
- this.type = "put-args";
- }
-
- PutArgsOpcode.prototype.evaluate = function evaluate(vm) {
- vm.evaluateArgs(this.args);
- };
-
- PutArgsOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- details: {
- "positional": this.args.positional.toJSON(),
- "named": this.args.named.toJSON()
- }
- };
- };
-
- return PutArgsOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.PutArgsOpcode = PutArgsOpcode;
-
- var BindPositionalArgsOpcode = (function (_Opcode8) {
- babelHelpers.inherits(BindPositionalArgsOpcode, _Opcode8);
-
- function BindPositionalArgsOpcode(names, symbols) {
- _Opcode8.call(this);
- this.names = names;
- this.symbols = symbols;
- this.type = "bind-positional-args";
- }
-
- BindPositionalArgsOpcode.create = function create(block) {
- var names = block.locals;
- var symbols = names.map(function (name) {
- return block.symbolTable.getLocal(name);
- });
- return new this(names, symbols);
- };
-
- BindPositionalArgsOpcode.prototype.evaluate = function evaluate(vm) {
- vm.bindPositionalArgs(this.symbols);
- };
-
- BindPositionalArgsOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ['[' + this.names.map(function (name) {
- return JSON.stringify(name);
- }).join(", ") + ']']
- };
- };
-
- return BindPositionalArgsOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.BindPositionalArgsOpcode = BindPositionalArgsOpcode;
-
- var BindNamedArgsOpcode = (function (_Opcode9) {
- babelHelpers.inherits(BindNamedArgsOpcode, _Opcode9);
-
- function BindNamedArgsOpcode(names, symbols) {
- _Opcode9.call(this);
- this.names = names;
- this.symbols = symbols;
- this.type = "bind-named-args";
- }
-
- BindNamedArgsOpcode.create = function create(layout) {
- var names = layout.named;
- var symbols = names.map(function (name) {
- return layout.symbolTable.getNamed(name);
- });
- return new this(names, symbols);
- };
-
- BindNamedArgsOpcode.prototype.evaluate = function evaluate(vm) {
- vm.bindNamedArgs(this.names, this.symbols);
- };
-
- BindNamedArgsOpcode.prototype.toJSON = function toJSON() {
- var names = this.names;
- var symbols = this.symbols;
-
- var args = names.map(function (name, i) {
- return '$' + symbols[i] + ': $ARGS[' + name + ']';
- });
- return {
- guid: this._guid,
- type: this.type,
- args: args
- };
- };
-
- return BindNamedArgsOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.BindNamedArgsOpcode = BindNamedArgsOpcode;
-
- var BindBlocksOpcode = (function (_Opcode10) {
- babelHelpers.inherits(BindBlocksOpcode, _Opcode10);
-
- function BindBlocksOpcode(names, symbols) {
- _Opcode10.call(this);
- this.names = names;
- this.symbols = symbols;
- this.type = "bind-blocks";
- }
-
- BindBlocksOpcode.create = function create(layout) {
- var names = layout.yields;
- var symbols = names.map(function (name) {
- return layout.symbolTable.getYield(name);
- });
- return new this(names, symbols);
- };
-
- BindBlocksOpcode.prototype.evaluate = function evaluate(vm) {
- vm.bindBlocks(this.names, this.symbols);
- };
-
- BindBlocksOpcode.prototype.toJSON = function toJSON() {
- var names = this.names;
- var symbols = this.symbols;
-
- var args = names.map(function (name, i) {
- return '$' + symbols[i] + ': $BLOCKS[' + name + ']';
- });
- return {
- guid: this._guid,
- type: this.type,
- args: args
- };
- };
-
- return BindBlocksOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.BindBlocksOpcode = BindBlocksOpcode;
-
- var BindPartialArgsOpcode = (function (_Opcode11) {
- babelHelpers.inherits(BindPartialArgsOpcode, _Opcode11);
-
- function BindPartialArgsOpcode(symbol) {
- _Opcode11.call(this);
- this.symbol = symbol;
- this.type = "bind-partial-args";
- }
-
- BindPartialArgsOpcode.create = function create(layout) {
- return new this(layout.symbolTable.getPartialArgs());
- };
-
- BindPartialArgsOpcode.prototype.evaluate = function evaluate(vm) {
- vm.bindPartialArgs(this.symbol);
- };
-
- return BindPartialArgsOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.BindPartialArgsOpcode = BindPartialArgsOpcode;
-
- var BindDynamicScopeOpcode = (function (_Opcode12) {
- babelHelpers.inherits(BindDynamicScopeOpcode, _Opcode12);
-
- function BindDynamicScopeOpcode(names) {
- _Opcode12.call(this);
- this.names = names;
- this.type = "bind-dynamic-scope";
- }
-
- BindDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) {
- vm.bindDynamicScope(this.names);
- };
-
- return BindDynamicScopeOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.BindDynamicScopeOpcode = BindDynamicScopeOpcode;
-
- var EnterOpcode = (function (_Opcode13) {
- babelHelpers.inherits(EnterOpcode, _Opcode13);
-
- function EnterOpcode(begin, end) {
- _Opcode13.call(this);
- this.type = "enter";
- this.slice = new _glimmerUtil.ListSlice(begin, end);
- }
-
- EnterOpcode.prototype.evaluate = function evaluate(vm) {
- vm.enter(this.slice);
- };
-
- EnterOpcode.prototype.toJSON = function toJSON() {
- var slice = this.slice;
- var type = this.type;
- var _guid = this._guid;
-
- var begin = slice.head();
- var end = slice.tail();
- return {
- guid: _guid,
- type: type,
- args: [JSON.stringify(begin.inspect()), JSON.stringify(end.inspect())]
- };
- };
-
- return EnterOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.EnterOpcode = EnterOpcode;
-
- var ExitOpcode = (function (_Opcode14) {
- babelHelpers.inherits(ExitOpcode, _Opcode14);
-
- function ExitOpcode() {
- _Opcode14.apply(this, arguments);
- this.type = "exit";
- }
-
- ExitOpcode.prototype.evaluate = function evaluate(vm) {
- vm.exit();
- };
-
- return ExitOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.ExitOpcode = ExitOpcode;
-
- var LabelOpcode = (function (_Opcode15) {
- babelHelpers.inherits(LabelOpcode, _Opcode15);
-
- function LabelOpcode(label) {
- _Opcode15.call(this);
- this.tag = _glimmerReference.CONSTANT_TAG;
- this.type = "label";
- this.label = null;
- this.prev = null;
- this.next = null;
- if (label) this.label = label;
- }
-
- LabelOpcode.prototype.evaluate = function evaluate() {};
-
- LabelOpcode.prototype.inspect = function inspect() {
- return this.label + ' [' + this._guid + ']';
- };
-
- LabelOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.inspect())]
- };
- };
-
- return LabelOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.LabelOpcode = LabelOpcode;
-
- var EvaluateOpcode = (function (_Opcode16) {
- babelHelpers.inherits(EvaluateOpcode, _Opcode16);
-
- function EvaluateOpcode(debug, block) {
- _Opcode16.call(this);
- this.debug = debug;
- this.block = block;
- this.type = "evaluate";
- }
-
- EvaluateOpcode.prototype.evaluate = function evaluate(vm) {
- vm.invokeBlock(this.block, vm.frame.getArgs());
- };
-
- EvaluateOpcode.prototype.toJSON = function toJSON() {
- var guid = this._guid;
- var type = this.type;
- var debug = this.debug;
- var block = this.block;
-
- var compiled = block['compiled'];
- var children = undefined;
- if (compiled) {
- children = compiled.ops.toArray().map(function (op) {
- return op.toJSON();
- });
- } else {
- children = [{ guid: null, type: '[ UNCOMPILED BLOCK ]' }];
- }
- return {
- guid: guid,
- type: type,
- args: [debug],
- children: children
- };
- };
-
- return EvaluateOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.EvaluateOpcode = EvaluateOpcode;
- var ConstTest = function (ref, env) {
- return new _glimmerReference.ConstReference(!!ref.value());
- };
- exports.ConstTest = ConstTest;
- var SimpleTest = function (ref, env) {
- return ref;
- };
- exports.SimpleTest = SimpleTest;
- var EnvironmentTest = function (ref, env) {
- return env.toConditionalReference(ref);
- };
- exports.EnvironmentTest = EnvironmentTest;
-
- var TestOpcode = (function (_Opcode17) {
- babelHelpers.inherits(TestOpcode, _Opcode17);
-
- function TestOpcode(testFunc) {
- _Opcode17.call(this);
- this.testFunc = testFunc;
- this.type = "test";
- }
-
- TestOpcode.prototype.evaluate = function evaluate(vm) {
- vm.frame.setCondition(this.testFunc(vm.frame.getOperand(), vm.env));
- };
-
- TestOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: ["$OPERAND", this.testFunc.name]
- };
- };
-
- return TestOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.TestOpcode = TestOpcode;
-
- var JumpOpcode = (function (_Opcode18) {
- babelHelpers.inherits(JumpOpcode, _Opcode18);
-
- function JumpOpcode(target) {
- _Opcode18.call(this);
- this.target = target;
- this.type = "jump";
- }
-
- JumpOpcode.prototype.evaluate = function evaluate(vm) {
- vm.goto(this.target);
- };
-
- JumpOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.target.inspect())]
- };
- };
-
- return JumpOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.JumpOpcode = JumpOpcode;
-
- var JumpIfOpcode = (function (_JumpOpcode) {
- babelHelpers.inherits(JumpIfOpcode, _JumpOpcode);
-
- function JumpIfOpcode() {
- _JumpOpcode.apply(this, arguments);
- this.type = "jump-if";
- }
-
- JumpIfOpcode.prototype.evaluate = function evaluate(vm) {
- var reference = vm.frame.getCondition();
- if (_glimmerReference.isConst(reference)) {
- if (reference.value()) {
- _JumpOpcode.prototype.evaluate.call(this, vm);
- }
- } else {
- var cache = new _glimmerReference.ReferenceCache(reference);
- if (cache.peek()) {
- _JumpOpcode.prototype.evaluate.call(this, vm);
- }
- vm.updateWith(new Assert(cache));
- }
- };
-
- return JumpIfOpcode;
- })(JumpOpcode);
-
- exports.JumpIfOpcode = JumpIfOpcode;
-
- var JumpUnlessOpcode = (function (_JumpOpcode2) {
- babelHelpers.inherits(JumpUnlessOpcode, _JumpOpcode2);
-
- function JumpUnlessOpcode() {
- _JumpOpcode2.apply(this, arguments);
- this.type = "jump-unless";
- }
-
- JumpUnlessOpcode.prototype.evaluate = function evaluate(vm) {
- var reference = vm.frame.getCondition();
- if (_glimmerReference.isConst(reference)) {
- if (!reference.value()) {
- _JumpOpcode2.prototype.evaluate.call(this, vm);
- }
- } else {
- var cache = new _glimmerReference.ReferenceCache(reference);
- if (!cache.peek()) {
- _JumpOpcode2.prototype.evaluate.call(this, vm);
- }
- vm.updateWith(new Assert(cache));
- }
- };
-
- return JumpUnlessOpcode;
- })(JumpOpcode);
-
- exports.JumpUnlessOpcode = JumpUnlessOpcode;
-
- var Assert = (function (_UpdatingOpcode) {
- babelHelpers.inherits(Assert, _UpdatingOpcode);
-
- function Assert(cache) {
- _UpdatingOpcode.call(this);
- this.type = "assert";
- this.tag = cache.tag;
- this.cache = cache;
- }
-
- Assert.prototype.evaluate = function evaluate(vm) {
- var cache = this.cache;
-
- if (_glimmerReference.isModified(cache.revalidate())) {
- vm.throw();
- }
- };
-
- Assert.prototype.toJSON = function toJSON() {
- var type = this.type;
- var _guid = this._guid;
- var cache = this.cache;
-
- var expected = undefined;
- try {
- expected = JSON.stringify(cache.peek());
- } catch (e) {
- expected = String(cache.peek());
- }
- return {
- guid: _guid,
- type: type,
- args: [],
- details: { expected: expected }
- };
- };
-
- return Assert;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.Assert = Assert;
-
- var JumpIfNotModifiedOpcode = (function (_UpdatingOpcode2) {
- babelHelpers.inherits(JumpIfNotModifiedOpcode, _UpdatingOpcode2);
-
- function JumpIfNotModifiedOpcode(tag, target) {
- _UpdatingOpcode2.call(this);
- this.target = target;
- this.type = "jump-if-not-modified";
- this.tag = tag;
- this.lastRevision = tag.value();
- }
-
- JumpIfNotModifiedOpcode.prototype.evaluate = function evaluate(vm) {
- var tag = this.tag;
- var target = this.target;
- var lastRevision = this.lastRevision;
-
- if (!vm.alwaysRevalidate && tag.validate(lastRevision)) {
- vm.goto(target);
- }
- };
-
- JumpIfNotModifiedOpcode.prototype.didModify = function didModify() {
- this.lastRevision = this.tag.value();
- };
-
- JumpIfNotModifiedOpcode.prototype.toJSON = function toJSON() {
- return {
- guid: this._guid,
- type: this.type,
- args: [JSON.stringify(this.target.inspect())]
- };
- };
-
- return JumpIfNotModifiedOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.JumpIfNotModifiedOpcode = JumpIfNotModifiedOpcode;
-
- var DidModifyOpcode = (function (_UpdatingOpcode3) {
- babelHelpers.inherits(DidModifyOpcode, _UpdatingOpcode3);
-
- function DidModifyOpcode(target) {
- _UpdatingOpcode3.call(this);
- this.target = target;
- this.type = "did-modify";
- this.tag = _glimmerReference.CONSTANT_TAG;
- }
-
- DidModifyOpcode.prototype.evaluate = function evaluate() {
- this.target.didModify();
- };
-
- return DidModifyOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.DidModifyOpcode = DidModifyOpcode;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy92bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFXQSxvQkFBQTs4QkFBQSxvQkFBQTs7QUFBQSxpQkFBQSxvQkFBQSxHQUFBO0FBQTBDLGdDQUFBLFNBQUEsQ0FBQSxDQUFNO0FBQ3ZDLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO1NBS2xDOztBQU5ELDRCQUFBLFdBR0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNyQjs7ZUFMSCxvQkFBQTtpQ0FYUyxNQUFNOzs7O1FBbUJmLGNBQUE7OEJBQUEsY0FBQTs7QUFBQSxpQkFBQSxjQUFBLEdBQUE7QUFBb0MsaUNBQUEsU0FBQSxDQUFBLENBQU07QUFDakMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBSzNCOztBQU5ELHNCQUFBLFdBR0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNmOztlQUxILGNBQUE7aUNBbkJTLE1BQU07Ozs7UUEyQmYsc0JBQUE7OEJBQUEsc0JBQUE7O0FBQUEsaUJBQUEsc0JBQUEsR0FBQTtBQUE0QyxpQ0FBQSxTQUFBLENBQUEsQ0FBTTtBQUN6QyxnQkFBQSxDQUFBLElBQUksR0FBRyxvQkFBb0IsQ0FBQztTQUtwQzs7QUFORCw4QkFBQSxXQUdFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN2Qjs7ZUFMSCxzQkFBQTtpQ0EzQlMsTUFBTTs7OztRQW1DZixxQkFBQTs4QkFBQSxxQkFBQTs7QUFBQSxpQkFBQSxxQkFBQSxHQUFBO0FBQTJDLGlDQUFBLFNBQUEsQ0FBQSxDQUFNO0FBQ3hDLGdCQUFBLENBQUEsSUFBSSxHQUFHLG1CQUFtQixDQUFDO1NBS25DOztBQU5ELDZCQUFBLFdBR0Us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QUM7QUFJekIsZ0JBQUksQ0FBQyxHQUFHLHFCQW5mSCxZQUFZLEFBbWZNLENBQUM7U0FDekI7O0FBTkgsdUJBQUEsV0FRRSxRQUFRLEdBQUEsb0JBQUE7QUFDTixnQkFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUN6Qjs7ZUFWSCxlQUFBO2lDQXRmNkIsY0FBYyIsImZpbGUiOiJ2bS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbXBpbGVkQXJncyB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEJsb2NrLCBMYXlvdXQsIElubGluZUJsb2NrIH0gZnJvbSAnLi4vYmxvY2tzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIENvbnN0UmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTGlzdFNsaWNlLCBPcGFxdWUsIFNsaWNlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIFJldmlzaW9uLCBSZXZpc2lvblRhZywgaXNDb25zdCwgaXNNb2RpZmllZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBjbGFzcyBQdXNoQ2hpbGRTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXNoLWNoaWxkLXNjb3BlXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucHVzaENoaWxkU2NvcGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9wU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicG9wLXNjb3BlXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucG9wU2NvcGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVzaER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXNoLWR5bmFtaWMtc2NvcGVcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5wdXNoRHluYW1pY1Njb3BlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvcER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwb3AtZHluYW1pYy1zY29wZVwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcER5bmFtaWNTY29wZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXROdWxsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1udWxsXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZnJhbWUuc2V0T3BlcmFuZChOVUxMX1JFRkVSRU5DRSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dFZhbHVlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC12YWx1ZVwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZXZhbHVhdGVPcGVyYW5kKHRoaXMuZXhwcmVzc2lvbik7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbdGhpcy5leHByZXNzaW9uLnRvSlNPTigpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dEFyZ3NPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LWFyZ3NcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFyZ3M6IENvbXBpbGVkQXJncykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5ldmFsdWF0ZUFyZ3ModGhpcy5hcmdzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgXCJwb3NpdGlvbmFsXCI6IHRoaXMuYXJncy5wb3NpdGlvbmFsLnRvSlNPTigpLFxuICAgICAgICBcIm5hbWVkXCI6IHRoaXMuYXJncy5uYW1lZC50b0pTT04oKVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbmRQb3NpdGlvbmFsQXJnc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLXBvc2l0aW9uYWwtYXJnc1wiO1xuXG4gIHN0YXRpYyBjcmVhdGUoYmxvY2s6IElubGluZUJsb2NrKTogQmluZFBvc2l0aW9uYWxBcmdzT3Bjb2RlIHtcbiAgICBsZXQgbmFtZXMgPSBibG9jay5sb2NhbHM7XG4gICAgbGV0IHN5bWJvbHMgPSBuYW1lcy5tYXAobmFtZSA9PiBibG9jay5zeW1ib2xUYWJsZS5nZXRMb2NhbChuYW1lKSk7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG5hbWVzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmFtZXM6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgc3ltYm9sczogbnVtYmVyW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmJpbmRQb3NpdGlvbmFsQXJncyh0aGlzLnN5bWJvbHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW2BbJHt0aGlzLm5hbWVzLm1hcChuYW1lID0+IEpTT04uc3RyaW5naWZ5KG5hbWUpKS5qb2luKFwiLCBcIil9XWBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluZE5hbWVkQXJnc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLW5hbWVkLWFyZ3NcIjtcblxuICBzdGF0aWMgY3JlYXRlKGxheW91dDogTGF5b3V0KSB7XG4gICAgbGV0IG5hbWVzID0gbGF5b3V0Lm5hbWVkO1xuICAgIGxldCBzeW1ib2xzID0gbmFtZXMubWFwKG5hbWUgPT4gbGF5b3V0LnN5bWJvbFRhYmxlLmdldE5hbWVkKG5hbWUpKTtcblxuICAgIHJldHVybiBuZXcgdGhpcyhuYW1lcywgc3ltYm9scyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHN5bWJvbHM6IG51bWJlcltdXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kTmFtZWRBcmdzKHRoaXMubmFtZXMsIHRoaXMuc3ltYm9scyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgbmFtZXMsIHN5bWJvbHMgfSA9IHRoaXM7XG5cbiAgICBsZXQgYXJncyA9IG5hbWVzLm1hcCgobmFtZSwgaSkgPT4gYCQke3N5bWJvbHNbaV19OiAkQVJHU1ske25hbWV9XWApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluZEJsb2Nrc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLWJsb2Nrc1wiO1xuXG4gIHN0YXRpYyBjcmVhdGUobGF5b3V0OiBMYXlvdXQpIHtcbiAgICBsZXQgbmFtZXMgPSBsYXlvdXQueWllbGRzO1xuICAgIGxldCBzeW1ib2xzID0gbmFtZXMubWFwKG5hbWUgPT4gbGF5b3V0LnN5bWJvbFRhYmxlLmdldFlpZWxkKG5hbWUpKTtcblxuICAgIHJldHVybiBuZXcgdGhpcyhuYW1lcywgc3ltYm9scyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHN5bWJvbHM6IG51bWJlcltdXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kQmxvY2tzKHRoaXMubmFtZXMsIHRoaXMuc3ltYm9scyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgbmFtZXMsIHN5bWJvbHMgfSA9IHRoaXM7XG5cbiAgICBsZXQgYXJncyA9IG5hbWVzLm1hcCgobmFtZSwgaSkgPT4gYCQke3N5bWJvbHNbaV19OiAkQkxPQ0tTWyR7bmFtZX1dYCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3NcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kUGFydGlhbEFyZ3NPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYmluZC1wYXJ0aWFsLWFyZ3NcIjtcblxuICBzdGF0aWMgY3JlYXRlKGxheW91dDogTGF5b3V0KSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGxheW91dC5zeW1ib2xUYWJsZS5nZXRQYXJ0aWFsQXJncygpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sOiBudW1iZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uYmluZFBhcnRpYWxBcmdzKHRoaXMuc3ltYm9sKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluZER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLWR5bmFtaWMtc2NvcGVcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kRHluYW1pY1Njb3BlKHRoaXMubmFtZXMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnRlck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJlbnRlclwiO1xuICBwdWJsaWMgc2xpY2U6IFNsaWNlPE9wY29kZT47IC8vIFB1YmxpYyBiZWNhdXNlIGl0J3MgdXNlZCBieSBsYXp5IGNvbnRlbnQgZGVvcHRcblxuICBjb25zdHJ1Y3RvcihiZWdpbjogTGFiZWxPcGNvZGUsIGVuZDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2xpY2UgPSBuZXcgTGlzdFNsaWNlKGJlZ2luLCBlbmQpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZW50ZXIodGhpcy5zbGljZSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgc2xpY2UsIHR5cGUsIF9ndWlkIH0gPSB0aGlzO1xuXG4gICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSBzbGljZS50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW1xuICAgICAgICBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShlbmQuaW5zcGVjdCgpKVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4aXRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZXhpdFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmV4aXQoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsT3B0aW9ucyB7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUgaW1wbGVtZW50cyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0YWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyB0eXBlID0gXCJsYWJlbFwiO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IG51bGw7XG5cbiAgcHJldjogYW55ID0gbnVsbDtcbiAgbmV4dDogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAobGFiZWwpIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIGV2YWx1YXRlKCkge31cblxuICBpbnNwZWN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNwZWN0KCkpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xuICBkZWJ1Zzogc3RyaW5nO1xuICBibG9jazogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJldmFsdWF0ZVwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkZWJ1Zzogc3RyaW5nLFxuICAgIHB1YmxpYyBibG9jazogSW5saW5lQmxvY2tcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmludm9rZUJsb2NrKHRoaXMuYmxvY2ssIHZtLmZyYW1lLmdldEFyZ3MoKSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlYnVnLCBibG9jayB9ID0gdGhpcztcblxuICAgIGxldCBjb21waWxlZDogQ29tcGlsZWRCbG9jayA9IGJsb2NrWydjb21waWxlZCddO1xuICAgIGxldCBjaGlsZHJlbjogT3Bjb2RlSlNPTltdO1xuXG4gICAgaWYgKGNvbXBpbGVkKSB7XG4gICAgICBjaGlsZHJlbiA9IGNvbXBpbGVkLm9wcy50b0FycmF5KCkubWFwKG9wID0+IG9wLnRvSlNPTigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGRyZW4gPSBbeyBndWlkOiBudWxsLCB0eXBlOiAnWyBVTkNPTVBJTEVEIEJMT0NLIF0nIH1dO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGFyZ3M6IFtkZWJ1Z10sXG4gICAgICBjaGlsZHJlblxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVzdEZ1bmN0aW9uID0gKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpID0+IFJlZmVyZW5jZTxib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IENvbnN0VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiByZWYgYXMgUmVmZXJlbmNlPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcblxuZXhwb3J0IGNsYXNzIFRlc3RPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidGVzdFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVzdEZ1bmM6IFRlc3RGdW5jdGlvbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24odGhpcy50ZXN0RnVuYyh2bS5mcmFtZS5nZXRPcGVyYW5kKCksIHZtLmVudikpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW1wiJE9QRVJBTkRcIiwgdGhpcy50ZXN0RnVuYy5uYW1lXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBKdW1wT3B0aW9ucyB7XG4gIHRhcmdldDogTGFiZWxPcGNvZGU7XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXBcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZ290byh0aGlzLnRhcmdldCk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wSWZPcGNvZGUgZXh0ZW5kcyBKdW1wT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtaWZcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0Q29uZGl0aW9uKCk7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG5cbiAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcFVubGVzc09wY29kZSBleHRlbmRzIEp1bXBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC11bmxlc3NcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0Q29uZGl0aW9uKCk7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cblxuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJhc3NlcnRcIjtcblxuICBwcml2YXRlIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+O1xuXG4gIGNvbnN0cnVjdG9yKGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgdm0udGhyb3coKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGV4cGVjdGVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV4cGVjdGVkID0gSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGFyZ3M6IFtdLFxuICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuXG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3Rvcih0YWc6IFJldmlzaW9uVGFnLCBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBkaWRNb2RpZnkoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFyZ2V0OiBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gIH1cblxuICBldmFsdWF0ZSgpIHtcbiAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/compiler', ['exports', 'glimmer-util', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/syntax/core', 'glimmer-runtime/lib/compiled/blocks', 'glimmer-runtime/lib/compiled/expressions/function', 'glimmer-runtime/lib/compiled/opcodes/builder'], function (exports, _glimmerUtil, _glimmerRuntimeLibUtils, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibCompiledBlocks, _glimmerRuntimeLibCompiledExpressionsFunction, _glimmerRuntimeLibCompiledOpcodesBuilder) {
- 'use strict';
-
- exports.compileLayout = compileLayout;
-
- var Compiler = (function () {
- function Compiler(block, env) {
- this.block = block;
- this.env = env;
- this.current = block.program.head();
- this.symbolTable = block.symbolTable;
- }
-
- Compiler.prototype.compileStatement = function compileStatement(statement, ops) {
- this.env.statement(statement, this.symbolTable).compile(ops, this.env, this.symbolTable);
- };
-
- return Compiler;
- })();
-
- function compileStatement(env, statement, ops, layout) {
- env.statement(statement, layout.symbolTable).compile(ops, env, layout.symbolTable);
+ if (keyword.willRender) {
+ keyword.willRender(morph, env);
}
- exports.default = Compiler;
- var EntryPointCompiler = (function (_Compiler) {
- babelHelpers.inherits(EntryPointCompiler, _Compiler);
-
- function EntryPointCompiler(template, env) {
- _Compiler.call(this, template, env);
- var list = new CompileIntoList(env, template.symbolTable);
- this.ops = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(list, template.symbolTable, env);
- }
-
- EntryPointCompiler.prototype.compile = function compile() {
- var block = this.block;
- var ops = this.ops;
- var program = block.program;
-
- var current = program.head();
- while (current) {
- var next = program.nextNode(current);
- this.compileStatement(current, ops);
- current = next;
- }
- return ops.toOpSeq();
- };
-
- EntryPointCompiler.prototype.append = function append(op) {
- this.ops.append(op);
- };
-
- EntryPointCompiler.prototype.getLocalSymbol = function getLocalSymbol(name) {
- return this.symbolTable.getLocal(name);
- };
-
- EntryPointCompiler.prototype.getNamedSymbol = function getNamedSymbol(name) {
- return this.symbolTable.getNamed(name);
- };
-
- EntryPointCompiler.prototype.getYieldSymbol = function getYieldSymbol(name) {
- return this.symbolTable.getYield(name);
- };
-
- return EntryPointCompiler;
- })(Compiler);
-
- exports.EntryPointCompiler = EntryPointCompiler;
-
- var InlineBlockCompiler = (function (_Compiler2) {
- babelHelpers.inherits(InlineBlockCompiler, _Compiler2);
-
- function InlineBlockCompiler(block, env) {
- _Compiler2.call(this, block, env);
- this.block = block;
- var list = new CompileIntoList(env, block.symbolTable);
- this.ops = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(list, block.symbolTable, env);
- }
-
- InlineBlockCompiler.prototype.compile = function compile() {
- var block = this.block;
- var ops = this.ops;
- var program = block.program;
-
- var hasPositionalParameters = block.hasPositionalParameters();
- if (hasPositionalParameters) {
- ops.pushChildScope();
- ops.bindPositionalArgsForBlock(block);
- }
- var current = program.head();
- while (current) {
- var next = program.nextNode(current);
- this.compileStatement(current, ops);
- current = next;
- }
- if (hasPositionalParameters) {
- ops.popScope();
- }
- return ops.toOpSeq();
- };
-
- return InlineBlockCompiler;
- })(Compiler);
-
- exports.InlineBlockCompiler = InlineBlockCompiler;
-
- function compileLayout(compilable, env) {
- var builder = new ComponentLayoutBuilder(env);
- compilable.compile(builder);
- return builder.compile();
+ var lastState, newState;
+ if (keyword.setupState) {
+ lastState = _htmlbarsUtilObjectUtils.shallowCopy(morph.getState());
+ newState = morph.setState(keyword.setupState(lastState, env, scope, params, hash));
}
- var ComponentLayoutBuilder = (function () {
- function ComponentLayoutBuilder(env) {
- this.env = env;
- }
+ if (keyword.childEnv) {
+ // Build the child environment...
+ env = keyword.childEnv(morph.getState(), env);
- ComponentLayoutBuilder.prototype.empty = function empty() {
- this.inner = new EmptyBuilder(this.env);
- };
-
- ComponentLayoutBuilder.prototype.wrapLayout = function wrapLayout(layout) {
- this.inner = new WrappedBuilder(this.env, layout);
- };
-
- ComponentLayoutBuilder.prototype.fromLayout = function fromLayout(layout) {
- this.inner = new UnwrappedBuilder(this.env, layout);
- };
-
- ComponentLayoutBuilder.prototype.compile = function compile() {
- return this.inner.compile();
- };
-
- babelHelpers.createClass(ComponentLayoutBuilder, [{
- key: 'tag',
- get: function () {
- return this.inner.tag;
- }
- }, {
- key: 'attrs',
- get: function () {
- return this.inner.attrs;
- }
- }]);
- return ComponentLayoutBuilder;
- })();
-
- var EmptyBuilder = (function () {
- function EmptyBuilder(env) {
- this.env = env;
- }
-
- EmptyBuilder.prototype.compile = function compile() {
- var env = this.env;
-
- var list = new CompileIntoList(env, null);
- return new _glimmerRuntimeLibCompiledBlocks.CompiledBlock(list, 0);
- };
-
- babelHelpers.createClass(EmptyBuilder, [{
- key: 'tag',
- get: function () {
- throw new Error('Nope');
- }
- }, {
- key: 'attrs',
- get: function () {
- throw new Error('Nope');
- }
- }]);
- return EmptyBuilder;
- })();
-
- var WrappedBuilder = (function () {
- function WrappedBuilder(env, layout) {
- this.env = env;
- this.layout = layout;
- this.tag = new ComponentTagBuilder();
- this.attrs = new ComponentAttrsBuilder();
- }
-
- WrappedBuilder.prototype.compile = function compile() {
- //========DYNAMIC
- // PutValue(TagExpr)
- // Test
- // JumpUnless(BODY)
- // OpenDynamicPrimitiveElement
- // DidCreateElement
- // ...attr statements...
- // FlushElement
- // BODY: Noop
- // ...body statements...
- // PutValue(TagExpr)
- // Test
- // JumpUnless(END)
- // CloseElement
- // END: Noop
- // DidRenderLayout
- // Exit
- //
- //========STATIC
- // OpenPrimitiveElementOpcode
- // DidCreateElement
- // ...attr statements...
- // FlushElement
- // ...body statements...
- // CloseElement
- // DidRenderLayout
- // Exit
- var env = this.env;
- var layout = this.layout;
-
- var symbolTable = layout.symbolTable;
- var buffer = new CompileIntoList(env, layout.symbolTable);
- var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, layout.symbolTable, env);
- dsl.startLabels();
- if (this.tag.isDynamic) {
- dsl.putValue(this.tag.dynamicTagName);
- dsl.test('simple');
- dsl.jumpUnless('BODY');
- dsl.openDynamicPrimitiveElement();
- dsl.didCreateElement();
- this.attrs['buffer'].forEach(function (statement) {
- return compileStatement(env, statement, dsl, layout);
- });
- dsl.flushElement();
- dsl.label('BODY');
- } else if (this.tag.isStatic) {
- var tag = this.tag.staticTagName;
- dsl.openPrimitiveElement(tag);
- dsl.didCreateElement();
- this.attrs['buffer'].forEach(function (statement) {
- return compileStatement(env, statement, dsl, layout);
- });
- dsl.flushElement();
- }
- if (layout.hasNamedParameters) {
- dsl.bindNamedArgsForLayout(layout);
- }
- if (layout.hasYields) {
- dsl.bindBlocksForLayout(layout);
- }
- if (layout.hasPartials) {
- dsl.bindPartialArgsForLayout(layout);
- }
- layout.program.forEachNode(function (statement) {
- return compileStatement(env, statement, dsl, layout);
- });
- if (this.tag.isDynamic) {
- dsl.putValue(this.tag.dynamicTagName);
- dsl.test('simple');
- dsl.jumpUnless('END');
- dsl.closeElement();
- dsl.label('END');
- } else if (this.tag.isStatic) {
- dsl.closeElement();
- }
- dsl.didRenderLayout();
- dsl.stopLabels();
- return new _glimmerRuntimeLibCompiledBlocks.CompiledBlock(dsl.toOpSeq(), symbolTable.size);
- };
-
- return WrappedBuilder;
- })();
-
- var UnwrappedBuilder = (function () {
- function UnwrappedBuilder(env, layout) {
- this.env = env;
- this.layout = layout;
- this.attrs = new ComponentAttrsBuilder();
- }
-
- UnwrappedBuilder.prototype.compile = function compile() {
- var env = this.env;
- var layout = this.layout;
-
- var buffer = new CompileIntoList(env, layout.symbolTable);
- var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, layout.symbolTable, env);
- dsl.startLabels();
- if (layout.hasNamedParameters) {
- dsl.bindNamedArgsForLayout(layout);
- }
- if (layout.hasYields) {
- dsl.bindBlocksForLayout(layout);
- }
- if (layout.hasPartials) {
- dsl.bindPartialArgsForLayout(layout);
- }
- var attrs = this.attrs['buffer'];
- var attrsInserted = false;
- this.layout.program.forEachNode(function (statement) {
- if (!attrsInserted && isOpenElement(statement)) {
- dsl.openComponentElement(statement.tag);
- dsl.didCreateElement();
- dsl.shadowAttributes();
- attrs.forEach(function (statement) {
- return compileStatement(env, statement, dsl, layout);
- });
- attrsInserted = true;
- } else {
- compileStatement(env, statement, dsl, layout);
- }
- });
- dsl.didRenderLayout();
- dsl.stopLabels();
- return new _glimmerRuntimeLibCompiledBlocks.CompiledBlock(dsl.toOpSeq(), layout.symbolTable.size);
- };
-
- babelHelpers.createClass(UnwrappedBuilder, [{
- key: 'tag',
- get: function () {
- throw new Error('BUG: Cannot call `tag` on an UnwrappedBuilder');
- }
- }]);
- return UnwrappedBuilder;
- })();
-
- function isOpenElement(syntax) {
- return syntax instanceof _glimmerRuntimeLibSyntaxCore.OpenElement || syntax instanceof _glimmerRuntimeLibSyntaxCore.OpenPrimitiveElement;
+ // ..then save off the child env builder on the render node. If the render
+ // node tree is re-rendered and this node is not dirty, the child env
+ // builder will still be invoked so that child dirty render nodes still get
+ // the correct child env.
+ morph.buildChildEnv = keyword.childEnv;
}
- var ComponentTagBuilder = (function () {
- function ComponentTagBuilder() {
- this.isDynamic = null;
- this.isStatic = null;
- this.staticTagName = null;
- this.dynamicTagName = null;
- }
+ var firstTime = !morph.rendered;
- ComponentTagBuilder.prototype.static = function _static(tagName) {
- this.isStatic = true;
- this.staticTagName = tagName;
- };
+ if (keyword.isEmpty) {
+ var isEmpty = keyword.isEmpty(morph.getState(), env, scope, params, hash);
- ComponentTagBuilder.prototype.dynamic = function dynamic(tagName) {
- this.isDynamic = true;
- this.dynamicTagName = _glimmerRuntimeLibCompiledExpressionsFunction.default(tagName);
- };
-
- return ComponentTagBuilder;
- })();
-
- var ComponentAttrsBuilder = (function () {
- function ComponentAttrsBuilder() {
- this.buffer = [];
+ if (isEmpty) {
+ if (!firstTime) {
+ _htmlbarsUtilTemplateUtils.clearMorph(morph, env, false);
}
-
- ComponentAttrsBuilder.prototype.static = function _static(name, value) {
- this.buffer.push(new _glimmerRuntimeLibSyntaxCore.StaticAttr(name, value, null));
- };
-
- ComponentAttrsBuilder.prototype.dynamic = function dynamic(name, value) {
- this.buffer.push(new _glimmerRuntimeLibSyntaxCore.DynamicAttr(name, _glimmerRuntimeLibCompiledExpressionsFunction.default(value), null, false));
- };
-
- return ComponentAttrsBuilder;
- })();
-
- var ComponentBuilder = (function () {
- function ComponentBuilder(dsl) {
- this.dsl = dsl;
- this.env = dsl.env;
- }
-
- ComponentBuilder.prototype.static = function _static(definition, args, templates, symbolTable) {
- var shadow = arguments.length <= 4 || arguments[4] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[4];
-
- this.dsl.unit({ templates: templates }, function (dsl) {
- dsl.putComponentDefinition(definition);
- dsl.openComponent(args, shadow);
- dsl.closeComponent();
- });
- };
-
- ComponentBuilder.prototype.dynamic = function dynamic(definitionArgs, definition, args, templates, symbolTable) {
- var shadow = arguments.length <= 5 || arguments[5] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[5];
-
- this.dsl.unit({ templates: templates }, function (dsl) {
- dsl.putArgs(definitionArgs);
- dsl.putValue(_glimmerRuntimeLibCompiledExpressionsFunction.default(definition));
- dsl.test('simple');
- dsl.enter('BEGIN', 'END');
- dsl.label('BEGIN');
- dsl.jumpUnless('END');
- dsl.putDynamicComponentDefinition();
- dsl.openComponent(args, shadow);
- dsl.closeComponent();
- dsl.label('END');
- dsl.exit();
- });
- };
-
- return ComponentBuilder;
- })();
-
- var CompileIntoList = (function (_LinkedList) {
- babelHelpers.inherits(CompileIntoList, _LinkedList);
-
- function CompileIntoList(env, symbolTable) {
- _LinkedList.call(this);
- this.env = env;
- this.symbolTable = symbolTable;
- var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(this, symbolTable, env);
- this.component = new ComponentBuilder(dsl);
- }
-
- CompileIntoList.prototype.getLocalSymbol = function getLocalSymbol(name) {
- return this.symbolTable.getLocal(name);
- };
-
- CompileIntoList.prototype.hasLocalSymbol = function hasLocalSymbol(name) {
- return typeof this.symbolTable.getLocal(name) === 'number';
- };
-
- CompileIntoList.prototype.getNamedSymbol = function getNamedSymbol(name) {
- return this.symbolTable.getNamed(name);
- };
-
- CompileIntoList.prototype.hasNamedSymbol = function hasNamedSymbol(name) {
- return typeof this.symbolTable.getNamed(name) === 'number';
- };
-
- CompileIntoList.prototype.getBlockSymbol = function getBlockSymbol(name) {
- return this.symbolTable.getYield(name);
- };
-
- CompileIntoList.prototype.hasBlockSymbol = function hasBlockSymbol(name) {
- return typeof this.symbolTable.getYield(name) === 'number';
- };
-
- CompileIntoList.prototype.getPartialArgsSymbol = function getPartialArgsSymbol() {
- return this.symbolTable.getPartialArgs();
- };
-
- CompileIntoList.prototype.hasPartialArgsSymbol = function hasPartialArgsSymbol() {
- return typeof this.symbolTable.getPartialArgs() === 'number';
- };
-
- CompileIntoList.prototype.toOpSeq = function toOpSeq() {
- return this;
- };
-
- return CompileIntoList;
- })(_glimmerUtil.LinkedList);
-
- exports.CompileIntoList = CompileIntoList;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFrQ0EsUUFBQTtBQUlFLGlCQUpGLFFBQUEsQ0FJd0IsS0FBWSxFQUFTLEdBQWdCLEVBQUE7QUFBckMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFPO0FBQVMsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFhO0FBQ3pELGdCQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEMsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztTQUN0Qzs7QUFQSCxnQkFBQSxXQVNZLGdCQUFnQixHQUFBLDBCQUFDLFNBQTBCLEVBQUUsR0FBcUIsRUFBQTtBQUMxRSxnQkFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFGOztlQVhILFFBQUE7OztBQWNBLGFBQUEsZ0JBQUEsQ0FBMEIsR0FBZ0IsRUFBRSxTQUEwQixFQUFFLEdBQXFCLEVBQUUsTUFBYyxFQUFBO0FBQzNHLFdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDcEY7c0JBRWMsUUFBUTs7UUFFdkIsa0JBQUE7OEJBQUEsa0JBQUE7O0FBSUUsaUJBSkYsa0JBQUEsQ0FJYyxRQUFvQixFQUFFLEdBQWdCLEVBQUE7QUFDaEQsaUNBQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxD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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDOztBQTVCSCx1QkFBQSxXQThCRSxjQUFjLEdBQUEsd0JBQUMsSUFBWSxFQUFBO0FBQ3pCLG1CQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDO1NBQzVEOztBQWhDSCx1QkFBQSxXQWtDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFDOztBQXBDSCx1QkFBQSxXQXNDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssUUFBUSxDQUFDO1NBQzlEOztBQXhDSCx1QkFBQSxXQTBDRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUM7U0FDYjs7ZUE1Q0gsZUFBQTtvQkFoYXdCLFVBQVUiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFNsaWNlLCBMaW5rZWRMaXN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUgfSBmcm9tICcuL29wY29kZXMnO1xuXG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBCbG9jaywgQ29tcGlsZWRCbG9jaywgRW50cnlQb2ludCwgSW5saW5lQmxvY2ssIExheW91dCB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0RlZmluaXRpb24sXG4gIFN0YXRpY0RlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVTeW50YXgsXG4gIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLFxufSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCB7XG4gIEV4cHJlc3Npb25cbn0gZnJvbSAnLi9zeW50YXgnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIGRlZmF1bHQgYXMgbWFrZUZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2NvbXBpbGVkL2V4cHJlc3Npb25zL2Z1bmN0aW9uJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmFic3RyYWN0IGNsYXNzIENvbXBpbGVyIHtcbiAgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IFN0YXRlbWVudFN5bnRheDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYmxvY2s6IEJsb2NrLCBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuY3VycmVudCA9IGJsb2NrLnByb2dyYW0uaGVhZCgpO1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4LCBvcHM6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudi5zdGF0ZW1lbnQoc3RhdGVtZW50LCB0aGlzLnN5bWJvbFRhYmxlKS5jb21waWxlKG9wcywgdGhpcy5lbnYsIHRoaXMuc3ltYm9sVGFibGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCwgc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIG9wczogT3Bjb2RlQnVpbGRlckRTTCwgbGF5b3V0OiBMYXlvdXQpIHtcbiAgZW52LnN0YXRlbWVudChzdGF0ZW1lbnQsIGxheW91dC5zeW1ib2xUYWJsZSkuY29tcGlsZShvcHMsIGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcGlsZXI7XG5cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50Q29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgYmxvY2s6IEVudHJ5UG9pbnQ7XG5cbiAgY29uc3RydWN0b3IodGVtcGxhdGU6IEVudHJ5UG9pbnQsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcih0ZW1wbGF0ZSwgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgY3VycmVudCA9IHByb2dyYW0uaGVhZCgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGxldCBuZXh0ID0gcHJvZ3JhbS5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICAgIHRoaXMuY29tcGlsZVN0YXRlbWVudChjdXJyZW50LCBvcHMpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQob3A6IE9wY29kZSkge1xuICAgIHRoaXMub3BzLmFwcGVuZChvcCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXROYW1lZChuYW1lKTtcbiAgfVxuXG4gIGdldFlpZWxkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0WWllbGQobmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrQ29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgY3VycmVudDogU3RhdGVtZW50U3ludGF4O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBibG9jazogSW5saW5lQmxvY2ssIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcihibG9jaywgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBibG9jay5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCBibG9jay5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgaGFzUG9zaXRpb25hbFBhcmFtZXRlcnMgPSBibG9jay5oYXNQb3NpdGlvbmFsUGFyYW1ldGVycygpO1xuXG4gICAgaWYgKGhhc1Bvc2l0aW9uYWxQYXJhbWV0ZXJzKSB7XG4gICAgICBvcHMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgIG9wcy5iaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jayk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQgPSBwcm9ncmFtLmhlYWQoKTtcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBsZXQgbmV4dCA9IHByb2dyYW0ubmV4dE5vZGUoY3VycmVudCk7XG4gICAgICB0aGlzLmNvbXBpbGVTdGF0ZW1lbnQoY3VycmVudCwgb3BzKTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cblxuICAgIGlmIChoYXNQb3NpdGlvbmFsUGFyYW1ldGVycykge1xuICAgICAgb3BzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYXJ0cyB7XG4gIHRhZzogc3RyaW5nO1xuICBhdHRyczogU2xpY2U8QXR0cmlidXRlU3ludGF4PE9wYXF1ZT4+O1xuICBib2R5OiBTbGljZTxTdGF0ZW1lbnRTeW50YXg+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVkQ29tcG9uZW50UGFydHMge1xuICB0YWc6IHN0cmluZztcbiAgcHJlYW1ibGU6IENvbXBpbGVJbnRvTGlzdDtcbiAgbWFpbjogQ29tcGlsZUludG9MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGUge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2sge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBpbm5lcjogRW1wdHlCdWlsZGVyIHwgV3JhcHBlZEJ1aWxkZXIgfCBVbndyYXBwZWRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50KSB7fVxuXG4gIGVtcHR5KCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgRW1wdHlCdWlsZGVyKHRoaXMuZW52KTtcbiAgfVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIEVtcHR5QnVpbGRlciB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBnZXQgYXR0cnMoKTogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkQmxvY2sge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcblxuICAgIGxldCBsaXN0ID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIG51bGwpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRCbG9jayhsaXN0LCAwKTtcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBMYXlvdXQpIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSBsYXlvdXQuc3ltYm9sVGFibGU7XG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBsYXlvdXQuc3ltYm9sVGFibGUpO1xuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChidWZmZXIsIGxheW91dC5zeW1ib2xUYWJsZSwgZW52KTtcblxuICAgIGRzbC5zdGFydExhYmVscygpO1xuXG4gICAgaWYgKHRoaXMudGFnLmlzRHluYW1pYykge1xuICAgICAgZHNsLnB1dFZhbHVlKHRoaXMudGFnLmR5bmFtaWNUYWdOYW1lKTtcbiAgICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICBkc2wub3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50KCk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICAgIGRzbC5sYWJlbCgnQk9EWScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50YWcuaXNTdGF0aWMpIHtcbiAgICAgIGxldCB0YWcgPSB0aGlzLnRhZy5zdGF0aWNUYWdOYW1lO1xuICAgICAgZHNsLm9wZW5QcmltaXRpdmVFbGVtZW50KHRhZyk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc05hbWVkUGFyYW1ldGVycykge1xuICAgICAgZHNsLmJpbmROYW1lZEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1lpZWxkcykge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1BhcnRpYWxzKSB7XG4gICAgICBkc2wuYmluZFBhcnRpYWxBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgbGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLmNsb3NlRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFnLmlzU3RhdGljKSB7XG4gICAgICBkc2wuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgc3ltYm9sVGFibGUuc2l6ZSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IExheW91dCkge31cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbiAgICBsZXQgZHNsID0gbmV3IE9wY29kZUJ1aWxkZXJEU0woYnVmZmVyLCBsYXlvdXQuc3ltYm9sVGFibGUsIGVudik7XG5cbiAgICBkc2wuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKSB7XG4gICAgICBkc2wuYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzWWllbGRzKSB7XG4gICAgICBkc2wuYmluZEJsb2Nrc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzUGFydGlhbHMpIHtcbiAgICAgIGRzbC5iaW5kUGFydGlhbEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcbiAgICBsZXQgYXR0cnNJbnNlcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5sYXlvdXQucHJvZ3JhbS5mb3JFYWNoTm9kZShzdGF0ZW1lbnQgPT4ge1xuICAgICAgaWYgKCFhdHRyc0luc2VydGVkICYmIGlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICBkc2wub3BlbkNvbXBvbmVudEVsZW1lbnQoc3RhdGVtZW50LnRhZyk7XG4gICAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICAgIGRzbC5zaGFkb3dBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGF0dHJzLmZvckVhY2goc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG4gICAgICAgIGF0dHJzSW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgbGF5b3V0LnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbnR5cGUgT3BlbkVsZW1lbnQgPSBTeW50YXguT3BlbkVsZW1lbnQgfCBTeW50YXguT3BlblByaW1pdGl2ZUVsZW1lbnQ7XG5cbmZ1bmN0aW9uIGlzT3BlbkVsZW1lbnQoc3ludGF4OiBTdGF0ZW1lbnRTeW50YXgpOiBzeW50YXggaXMgT3BlbkVsZW1lbnQge1xuICByZXR1cm4gc3ludGF4IGluc3RhbmNlb2YgU3ludGF4Lk9wZW5FbGVtZW50IHx8IHN5bnRheCBpbnN0YW5jZW9mIFN5bnRheC5PcGVuUHJpbWl0aXZlRWxlbWVudDtcbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYyA9IG51bGw7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IEV4cHJlc3Npb248c3RyaW5nPiA9IG51bGw7XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHRhZ05hbWUpO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogQXR0cmlidXRlU3ludGF4PHN0cmluZz5bXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKG5ldyBTeW50YXguU3RhdGljQXR0cihuYW1lLCB2YWx1ZSwgbnVsbCkpO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2gobmV3IFN5bnRheC5EeW5hbWljQXR0cihuYW1lLCBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHZhbHVlKSwgbnVsbCwgZmFsc2UpKTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRCdWlsZGVyIGltcGxlbWVudHMgSUNvbXBvbmVudEJ1aWxkZXIge1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGRzbC5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogU3RhdGljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0Q29tcG9uZW50RGVmaW5pdGlvbihkZWZpbml0aW9uKTtcbiAgICAgIGRzbC5vcGVuQ29tcG9uZW50KGFyZ3MsIHNoYWRvdyk7XG4gICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IFN5bnRheC5BcmdzLCBkZWZpbml0aW9uOiBEeW5hbWljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0QXJncyhkZWZpbml0aW9uQXJncyk7XG4gICAgICBkc2wucHV0VmFsdWUobWFrZUZ1bmN0aW9uRXhwcmVzc2lvbihkZWZpbml0aW9uKSk7XG4gICAgICBkc2wudGVzdCgnc2ltcGxlJyk7XG4gICAgICBkc2wuZW50ZXIoJ0JFR0lOJywgJ0VORCcpO1xuICAgICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChhcmdzLCBzaGFkb3cpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgICBkc2wubGFiZWwoJ0VORCcpO1xuICAgICAgZHNsLmV4aXQoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUludG9MaXN0IGV4dGVuZHMgTGlua2VkTGlzdDxPcGNvZGU+IGltcGxlbWVudHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTCh0aGlzLCBzeW1ib2xUYWJsZSwgZW52KTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKGRzbCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgaGFzTG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICBnZXRQYXJ0aWFsQXJnc1N5bWJvbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldFBhcnRpYWxBcmdzKCk7XG4gIH1cblxuICBoYXNQYXJ0aWFsQXJnc1N5bWJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0UGFydGlhbEFyZ3MoKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/component/interfaces', ['exports'], function (exports) {
- 'use strict';
-
- exports.isComponentDefinition = isComponentDefinition;
- var COMPONENT_DEFINITION_BRAND = 'COMPONENT DEFINITION [id=e59c754e-61eb-4392-8c4a-2c0ac72bfcd4]';
-
- function isComponentDefinition(obj) {
- return typeof obj === 'object' && obj && obj[COMPONENT_DEFINITION_BRAND];
+ return true;
+ }
}
- var ComponentDefinition = function ComponentDefinition(name, manager, ComponentClass) {
- this['COMPONENT DEFINITION [id=e59c754e-61eb-4392-8c4a-2c0ac72bfcd4]'] = true;
- this.name = name;
- this.manager = manager;
- this.ComponentClass = ComponentClass;
- };
-
- exports.ComponentDefinition = ComponentDefinition;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcG9uZW50L2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXFHQSxRQUFNLDBCQUEwQixHQUFHLGdFQUFnRSxDQUFDOztBQUVwRyxhQUFBLHFCQUFBLENBQXNDLEdBQVEsRUFBQTtBQUM1QyxlQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDMUU7O1FBRUQsbUJBQUEsR0FPRSxTQVBGLG1CQUFBLENBT2MsSUFBWSxFQUFFLE9BQTRCLEVBQUUsY0FBOEIsRUFBQTtBQUY5RSxZQUFBLENBQUMsZ0VBQWdFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFHaEYsWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsWUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdkIsWUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7S0FDdEMiLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2Z1bmN0aW9uJztcbmltcG9ydCB7IExheW91dCwgQ29tcGlsZWRCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmltcG9ydCBFbnZpcm9ubWVudCwgeyBEeW5hbWljU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgRGVzdHJveWFibGUsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50ID0gT3BhcXVlO1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Q2xhc3MgPSBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWFuYWdlcjxUIGV4dGVuZHMgQ29tcG9uZW50PiB7XG4gIC8vIEZpcnN0LCB0aGUgY29tcG9uZW50IG1hbmFnZXIgaXMgYXNrZWQgdG8gcHJlcGFyZSB0aGUgYXJndW1lbnRzIG5lZWRlZFxuICAvLyBmb3IgYGNyZWF0ZWAuIFRoaXMgYWxsb3dzIGZvciB0aGluZ3MgbGlrZSBjbG9zdXJlIGNvbXBvbmVudHMgd2hlcmUgdGhlXG4gIC8vIGFyZ3MgbmVlZCB0byBiZSBjdXJyaWVkIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIGluc3RhbmNlIG9mIHRoZSBzdGF0ZVxuICAvLyBidWNrZXQuXG4gIHByZXBhcmVBcmdzKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD4sIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlKTogRXZhbHVhdGVkQXJncztcblxuICAvLyBUaGVuLCB0aGUgY29tcG9uZW50IG1hbmFnZXIgaXMgYXNrZWQgdG8gY3JlYXRlIGEgYnVja2V0IG9mIHN0YXRlIGZvclxuICAvLyB0aGUgc3VwcGxpZWQgYXJndW1lbnRzLiBGcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBHbGltbWVyLCB0aGlzIGlzXG4gIC8vIGFuIG9wYXF1ZSB0b2tlbiwgYnV0IGluIHByYWN0aWNlIGl0IGlzIHByb2JhYmx5IGEgY29tcG9uZW50IG9iamVjdC5cbiAgY3JlYXRlKGVudjogRW52aXJvbm1lbnQsIGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD4sIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLCBjYWxsZXI6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgaGFzRGVmYXVsdEJsb2NrOiBib29sZWFuKTogVDtcblxuICAvLyBSZXR1cm4gdGhlIGNvbXBpbGVkIGxheW91dCB0byB1c2UgZm9yIHRoaXMgY29tcG9uZW50LiBUaGlzIGlzIGNhbGxlZFxuICAvLyAqYWZ0ZXIqIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCwgYmVjYXVzZSB5b3UgbWlnaHRcbiAgLy8gd2FudCB0byByZXR1cm4gYSBkaWZmZXJlbnQgbGF5b3V0IHBlci1pbnN0YW5jZSBmb3Igb3B0aW1pemF0aW9uIHJlYXNvbnNcbiAgLy8gb3IgdG8gaW1wbGVtZW50IGZlYXR1cmVzIGxpa2UgRW1iZXIncyBcImxhdGUtYm91bmRcIiBsYXlvdXRzLlxuICBsYXlvdXRGb3IoZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxUPiwgY29tcG9uZW50OiBULCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRCbG9jaztcblxuICAvLyBOZXh0LCBHbGltbWVyIGFza3MgdGhlIG1hbmFnZXIgdG8gY3JlYXRlIGEgcmVmZXJlbmNlIGZvciB0aGUgYHNlbGZgXG4gIC8vIGl0IHNob3VsZCB1c2UgaW4gdGhlIGxheW91dC5cbiAgZ2V0U2VsZihjb21wb25lbnQ6IFQpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG5cbiAgLy8gVGhlIGBkaWRDcmVhdGVFbGVtZW50YCBob29rIGlzIHJ1biBmb3Igbm9uLXRhZ2xlc3MgY29tcG9uZW50cyBhZnRlciB0aGVcbiAgLy8gZWxlbWVudCBhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBiZWZvcmUgaXQgaGFzIGJlZW4gYXBwZW5kZWQgKFwiZmx1c2hlZFwiKSB0b1xuICAvLyB0aGUgRE9NLiBUaGlzIGhvb2sgYWxsb3dzIHRoZSBtYW5hZ2VyIHRvIHNhdmUgb2ZmIHRoZSBlbGVtZW50LCBhcyB3ZWxsIGFzXG4gIC8vIGluc3RhbGwgb3RoZXIgZHluYW1pYyBhdHRyaWJ1dGVzIHZpYSB0aGUgRWxlbWVudE9wZXJhdGlvbnMgb2JqZWN0LlxuICAvL1xuICAvLyBIb3N0cyBzaG91bGQgdXNlIGBkaWRDcmVhdGVgLCB3aGljaCBydW5zIGFzeW5jaHJvbm91c2x5IGFmdGVyIHRoZSByZW5kZXJpbmdcbiAgLy8gcHJvY2VzcywgdG8gcHJvdmlkZSBob29rcyBmb3IgdXNlciBjb2RlLlxuICBkaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudDogVCwgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG9wZXJhdGlvbnM6IEVsZW1lbnRPcGVyYXRpb25zKTtcblxuICAvLyBUaGlzIGhvb2sgaXMgcnVuIGFmdGVyIHRoZSBlbnRpcmUgbGF5b3V0IGhhcyBiZWVuIHJlbmRlcmVkLlxuICAvL1xuICAvLyBIb3N0cyBzaG91bGQgdXNlIGBkaWRDcmVhdGVgLCB3aGljaCBydW5zIGFzeW5jaHJvbm91c2x5IGFmdGVyIHRoZSByZW5kZXJpbmdcbiAgLy8gcHJvY2VzcywgdG8gcHJvdmlkZSBob29rcyBmb3IgdXNlciBjb2RlLlxuICBkaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50OiBULCBib3VuZHM6IEJvdW5kcyk7XG5cbiAgLy8gT25jZSB0aGUgd2hvbGUgdG9wLWRvd24gcmVuZGVyaW5nIHByb2Nlc3MgaXMgY29tcGxldGUsIEdsaW1tZXIgaW52b2tlc1xuICAvLyB0aGUgYGRpZENyZWF0ZWAgY2FsbGJhY2tzLlxuICBkaWRDcmVhdGUoY29tcG9uZW50OiBUKTtcblxuICAvLyBDb252ZXJ0IHRoZSBvcGFxdWUgY29tcG9uZW50IGludG8gYSBgUmV2aXNpb25UYWdgIHRoYXQgZGV0ZXJtaW5zIHdoZW5cbiAgLy8gdGhlIGNvbXBvbmVudCdzIHVwZGF0ZSBob29rcyBuZWVkIHRvIGJlIGNhbGxlZCwgaW4gYWRkaXRpb24gdG8gYW55XG4gIC8vIG91dHNpZGUgY2hhbmdlcyBjYXB0dXJlZCBpbiB0aGUgaW5wdXQgYXJndW1lbnRzLiBJZiBpdCByZXR1cm5zIG51bGwsXG4gIC8vIHRoZSB1cGRhdGUgaG9va3Mgd2lsbCBvbmx5IGJlIGNhbGxlZCB3aGVuIG9uZSBvciBtb3JlIG9mIHRoZSBpbnB1dFxuICAvLyBhcmd1bWVudHMgaGFzIGNoYW5nZWQuXG4gIGdldFRhZyhjb21wb25lbnQ6IFQpOiBSZXZpc2lvblRhZztcblxuICAvLyBXaGVuIHRoZSBpbnB1dCBhcmd1bWVudHMgaGF2ZSBjaGFuZ2VkLCBhbmQgdG9wLWRvd24gcmV2YWxpZGF0aW9uIGhhc1xuICAvLyBiZWd1biwgdGhlIG1hbmFnZXIncyBgdXBkYXRlYCBob29rIGlzIGNhbGxlZC5cbiAgdXBkYXRlKGNvbXBvbmVudDogVCwgYXJnczogRXZhbHVhdGVkQXJncywgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUpO1xuXG4gIC8vIFRoaXMgaG9vayBpcyBydW4gYWZ0ZXIgdGhlIGVudGlyZSBsYXlvdXQgaGFzIGJlZW4gdXBkYXRlZC5cbiAgLy9cbiAgLy8gSG9zdHMgc2hvdWxkIHVzZSBgZGlkVXBkYXRlYCwgd2hpY2ggcnVucyBhc3luY2hyb25vdXNseSBhZnRlciB0aGUgcmVuZGVyaW5nXG4gIC8vIHByb2Nlc3MsIHRvIHByb3ZpZGUgaG9va3MgZm9yIHVzZXIgY29kZS5cbiAgZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudDogVCwgYm91bmRzOiBCb3VuZHMpO1xuXG4gIC8vIEZpbmFsbHksIG9uY2UgdG9wLWRvd24gcmV2YWxpZGF0aW9uIGhhcyBjb21wbGV0ZWQsIEdsaW1tZXIgaW52b2tlc1xuICAvLyB0aGUgYGRpZFVwZGF0ZWAgY2FsbGJhY2tzIG9uIGNvbXBvbmVudHMgdGhhdCBjaGFuZ2VkLlxuICBkaWRVcGRhdGUoY29tcG9uZW50OiBUKTtcblxuICAvLyBDb252ZXJ0IHRoZSBvcGFxdWUgY29tcG9uZW50IGludG8gYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBEZXN0cm95YWJsZS5cbiAgLy8gSWYgaXQgcmV0dXJucyBudWxsLCB0aGUgY29tcG9uZW50IHdpbGwgbm90IGJlIGRlc3Ryb3llZC5cbiAgZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQ6IFQpOiBEZXN0cm95YWJsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgdGFnOiBDb21wb25lbnRUYWdCdWlsZGVyO1xuICBhdHRyczogQ29tcG9uZW50QXR0cnNCdWlsZGVyO1xuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpO1xuICBmcm9tTGF5b3V0KGxheW91dDogTGF5b3V0KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRUYWdCdWlsZGVyIHtcbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZyk7XG4gIGR5bmFtaWModGFnTmFtZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBkeW5hbWljKG5hbWU6IHN0cmluZywgdmFsdWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KTtcbn1cblxuY29uc3QgQ09NUE9ORU5UX0RFRklOSVRJT05fQlJBTkQgPSAnQ09NUE9ORU5UIERFRklOSVRJT04gW2lkPWU1OWM3NTRlLTYxZWItNDM5Mi04YzRhLTJjMGFjNzJiZmNkNF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnREZWZpbml0aW9uKG9iajogYW55KTogb2JqIGlzIENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPiB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogJiYgb2JqW0NPTVBPTkVOVF9ERUZJTklUSU9OX0JSQU5EXTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBvbmVudERlZmluaXRpb248VD4ge1xuICBwdWJsaWMgbmFtZTogc3RyaW5nOyAvLyBmb3IgZGVidWdnaW5nXG4gIHB1YmxpYyBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+O1xuICBwdWJsaWMgQ29tcG9uZW50Q2xhc3M6IENvbXBvbmVudENsYXNzO1xuXG4gIHByaXZhdGUgWydDT01QT05FTlQgREVGSU5JVElPTiBbaWQ9ZTU5Yzc1NGUtNjFlYi00MzkyLThjNGEtMmMwYWM3MmJmY2Q0XSddID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4sIENvbXBvbmVudENsYXNzOiBDb21wb25lbnRDbGFzcykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICB0aGlzLkNvbXBvbmVudENsYXNzID0gQ29tcG9uZW50Q2xhc3M7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/dom/attribute-managers', ['exports', 'glimmer-runtime/lib/dom/sanitized-values', 'glimmer-runtime/lib/dom/props', 'glimmer-runtime/lib/dom/helper', 'glimmer-runtime/lib/compiled/opcodes/content'], function (exports, _glimmerRuntimeLibDomSanitizedValues, _glimmerRuntimeLibDomProps, _glimmerRuntimeLibDomHelper, _glimmerRuntimeLibCompiledOpcodesContent) {
- 'use strict';
-
- exports.defaultManagers = defaultManagers;
- exports.defaultPropertyManagers = defaultPropertyManagers;
- exports.defaultAttributeManagers = defaultAttributeManagers;
- exports.readDOMAttr = readDOMAttr;
-
- function defaultManagers(element, attr, isTrusting, namespace) {
- var tagName = element.tagName;
- var isSVG = element.namespaceURI === _glimmerRuntimeLibDomHelper.SVG_NAMESPACE;
- if (isSVG) {
- return defaultAttributeManagers(tagName, attr);
- }
-
- var _normalizeProperty = _glimmerRuntimeLibDomProps.normalizeProperty(element, attr);
-
- var type = _normalizeProperty.type;
- var normalized = _normalizeProperty.normalized;
-
- if (type === 'attr') {
- return defaultAttributeManagers(tagName, normalized);
- } else {
- return defaultPropertyManagers(tagName, normalized);
- }
+ if (firstTime) {
+ if (keyword.render) {
+ keyword.render(morph, env, scope, params, hash, template, inverse, visitor);
+ }
+ morph.rendered = true;
+ return true;
}
- function defaultPropertyManagers(tagName, attr) {
- if (_glimmerRuntimeLibDomSanitizedValues.requiresSanitization(tagName, attr)) {
- return new SafePropertyManager(attr);
- }
- if (isUserInputValue(tagName, attr)) {
- return INPUT_VALUE_PROPERTY_MANAGER;
- }
- if (isOptionSelected(tagName, attr)) {
- return OPTION_SELECTED_MANAGER;
- }
- return new PropertyManager(attr);
+ var isStable;
+ if (keyword.isStable) {
+ isStable = keyword.isStable(lastState, newState);
+ } else {
+ isStable = stableState(lastState, newState);
}
- function defaultAttributeManagers(tagName, attr) {
- if (_glimmerRuntimeLibDomSanitizedValues.requiresSanitization(tagName, attr)) {
- return new SafeAttributeManager(attr);
- }
- return new AttributeManager(attr);
+ if (isStable) {
+ if (keyword.rerender) {
+ var newEnv = keyword.rerender(morph, env, scope, params, hash, template, inverse, visitor);
+ env = newEnv || env;
+ }
+ _htmlbarsUtilMorphUtils.validateChildMorphs(env, morph, visitor);
+ return true;
+ } else {
+ _htmlbarsUtilTemplateUtils.clearMorph(morph, env, false);
}
- function readDOMAttr(element, attr) {
- var isSVG = element.namespaceURI === _glimmerRuntimeLibDomHelper.SVG_NAMESPACE;
-
- var _normalizeProperty2 = _glimmerRuntimeLibDomProps.normalizeProperty(element, attr);
-
- var type = _normalizeProperty2.type;
- var normalized = _normalizeProperty2.normalized;
-
- if (isSVG) {
- return element.getAttribute(normalized);
- }
- if (type === 'attr') {
- return element.getAttribute(normalized);
- }
- {
- return element[normalized];
- }
+ // If the node is unstable, re-render from scratch
+ if (keyword.render) {
+ keyword.render(morph, env, scope, params, hash, template, inverse, visitor);
+ morph.rendered = true;
+ return true;
}
+ }
- ;
-
- var AttributeManager = (function () {
- function AttributeManager(attr) {
- this.attr = attr;
- }
-
- AttributeManager.prototype.setAttribute = function setAttribute(env, element, value, namespace) {
- var dom = env.getAppendOperations();
- var normalizedValue = normalizeAttributeValue(value);
- if (!isAttrRemovalValue(normalizedValue)) {
- dom.setAttribute(element, this.attr, normalizedValue, namespace);
- }
- };
-
- AttributeManager.prototype.updateAttribute = function updateAttribute(env, element, value, namespace) {
- if (value === null || value === undefined || value === false) {
- if (namespace) {
- env.getDOM().removeAttributeNS(element, namespace, this.attr);
- } else {
- env.getDOM().removeAttribute(element, this.attr);
- }
- } else {
- this.setAttribute(env, element, value);
- }
- };
-
- return AttributeManager;
- })();
-
- exports.AttributeManager = AttributeManager;
-
- ;
-
- var PropertyManager = (function (_AttributeManager) {
- babelHelpers.inherits(PropertyManager, _AttributeManager);
-
- function PropertyManager() {
- _AttributeManager.apply(this, arguments);
- }
-
- PropertyManager.prototype.setAttribute = function setAttribute(env, element, value, namespace) {
- if (!isAttrRemovalValue(value)) {
- element[this.attr] = value;
- }
- };
-
- PropertyManager.prototype.removeAttribute = function removeAttribute(env, element, namespace) {
- // TODO this sucks but to preserve properties first and to meet current
- // semantics we must do this.
- var attr = this.attr;
-
- if (namespace) {
- env.getDOM().removeAttributeNS(element, namespace, attr);
- } else {
- env.getDOM().removeAttribute(element, attr);
- }
- };
-
- PropertyManager.prototype.updateAttribute = function updateAttribute(env, element, value, namespace) {
- if (isAttrRemovalValue(value)) {
- this.removeAttribute(env, element, namespace);
- } else {
- this.setAttribute(env, element, value, namespace);
- }
- };
-
- return PropertyManager;
- })(AttributeManager);
-
- exports.PropertyManager = PropertyManager;
-
- ;
- function normalizeAttributeValue(value) {
- if (value === false || value === undefined || value === null) {
- return null;
- }
- if (value === true) {
- return '';
- }
- // onclick function etc in SSR
- if (typeof value === 'function') {
- return null;
- }
- return String(value);
+ function stableState(oldState, newState) {
+ if (_htmlbarsUtilObjectUtils.keyLength(oldState) !== _htmlbarsUtilObjectUtils.keyLength(newState)) {
+ return false;
}
- function isAttrRemovalValue(value) {
- return value === null || value === undefined;
- }
- var SafePropertyManager = (function (_PropertyManager) {
- babelHelpers.inherits(SafePropertyManager, _PropertyManager);
-
- function SafePropertyManager() {
- _PropertyManager.apply(this, arguments);
- }
-
- SafePropertyManager.prototype.setAttribute = function setAttribute(env, element, value) {
- _PropertyManager.prototype.setAttribute.call(this, env, element, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(env, element, this.attr, value));
- };
-
- SafePropertyManager.prototype.updateAttribute = function updateAttribute(env, element, value) {
- this.setAttribute(env, element, value);
- };
-
- return SafePropertyManager;
- })(PropertyManager);
-
- function isUserInputValue(tagName, attribute) {
- return (tagName === 'INPUT' || tagName === 'TEXTAREA') && attribute === 'value';
+ for (var prop in oldState) {
+ if (oldState[prop] !== newState[prop]) {
+ return false;
+ }
}
- var InputValuePropertyManager = (function (_AttributeManager2) {
- babelHelpers.inherits(InputValuePropertyManager, _AttributeManager2);
+ return true;
+ }
- function InputValuePropertyManager() {
- _AttributeManager2.apply(this, arguments);
- }
+ function linkRenderNode() /* morph, env, scope, params, hash */{
+ return;
+ }
- InputValuePropertyManager.prototype.setAttribute = function setAttribute(env, element, value) {
- var input = element;
- input.value = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value);
- };
+ /**
+ Host Hook: inline
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} path
+ @param {Array} params
+ @param {Hash} hash
+
+ Corresponds to:
+
+ ```hbs
+ {{helper param1 param2 key1=val1 key2=val2}}
+ ```
+
+ This host hook is similar to the `block` host hook, but it
+ invokes helpers that do not supply an attached block.
+
+ Like the `block` hook, the helper should be invoked with:
+
+ - `{Array} params`: the parameters passed to the helper
+ in the template.
+ - `{Object} hash`: an object containing the keys and values passed
+ in the hash position in the template.
+
+ The values in `params` and `hash` will already be resolved
+ through a previous call to the `get` host hook.
+
+ In general, the default implementation of `inline` should work
+ for most host environments. It delegates to other host hooks
+ where appropriate, and properly invokes the helper with the
+ appropriate arguments.
+
+ The default implementation of `inline` also makes `partial`
+ a keyword. Instead of invoking a helper named `partial`,
+ it invokes the `partial` host hook.
+ */
- InputValuePropertyManager.prototype.updateAttribute = function updateAttribute(env, element, value) {
- var input = element;
- var currentValue = input.value;
- var normalizedValue = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value);
- if (currentValue !== normalizedValue) {
- input.value = normalizedValue;
- }
- };
-
- return InputValuePropertyManager;
- })(AttributeManager);
-
- var INPUT_VALUE_PROPERTY_MANAGER = new InputValuePropertyManager('value');
- exports.INPUT_VALUE_PROPERTY_MANAGER = INPUT_VALUE_PROPERTY_MANAGER;
- function isOptionSelected(tagName, attribute) {
- return tagName === 'OPTION' && attribute === 'selected';
+ function inline(morph, env, scope, path, params, hash, visitor) {
+ if (handleRedirect(morph, env, scope, path, params, hash, null, null, visitor)) {
+ return;
}
- var OptionSelectedManager = (function (_PropertyManager2) {
- babelHelpers.inherits(OptionSelectedManager, _PropertyManager2);
+ var value = undefined,
+ hasValue = undefined;
+ if (morph.linkedResult) {
+ value = env.hooks.getValue(morph.linkedResult);
+ hasValue = true;
+ } else {
+ var options = optionsFor(null, null, env, scope, morph);
- function OptionSelectedManager() {
- _PropertyManager2.apply(this, arguments);
- }
+ var helper = env.hooks.lookupHelper(env, scope, path);
+ var result = env.hooks.invokeHelper(morph, env, scope, visitor, params, hash, helper, options.templates, thisFor(options.templates));
- OptionSelectedManager.prototype.setAttribute = function setAttribute(env, element, value) {
- if (value !== null && value !== undefined && value !== false) {
- var option = element;
- option.selected = true;
- }
- };
+ if (result && result.link) {
+ morph.linkedResult = result.value;
+ _htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
+ }
- OptionSelectedManager.prototype.updateAttribute = function updateAttribute(env, element, value) {
- var option = element;
- if (value) {
- option.selected = true;
- } else {
- option.selected = false;
- }
- };
-
- return OptionSelectedManager;
- })(PropertyManager);
-
- var OPTION_SELECTED_MANAGER = new OptionSelectedManager('selected');
- exports.OPTION_SELECTED_MANAGER = OPTION_SELECTED_MANAGER;
-
- var SafeAttributeManager = (function (_AttributeManager3) {
- babelHelpers.inherits(SafeAttributeManager, _AttributeManager3);
-
- function SafeAttributeManager() {
- _AttributeManager3.apply(this, arguments);
- }
-
- SafeAttributeManager.prototype.setAttribute = function setAttribute(env, element, value) {
- _AttributeManager3.prototype.setAttribute.call(this, env, element, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(env, element, this.attr, value));
- };
-
- SafeAttributeManager.prototype.updateAttribute = function updateAttribute(env, element, value, namespace) {
- this.setAttribute(env, element, value);
- };
-
- return SafeAttributeManager;
- })(AttributeManager);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2F0dHJpYnV0ZS1tYW5hZ2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVlBLGFBQUEsZUFBQSxDQUFnQyxPQUF1QixFQUFFLElBQVksRUFBRSxVQUFtQixFQUFFLFNBQWlCLEVBQUE7QUFDM0csWUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUM5QixZQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxpQ0FOekIsYUFBYSxBQU04QixDQUFDO0FBRW5ELFlBQUksS0FBSyxFQUFFO0FBQ1QsbUJBQU8sd0JBQXdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hEOztpQ0FFMEIsMkJBYnBCLGlCQUFpQixDQWFxQixPQUFPLEVBQUUsSUFBSSxDQUFDOztZQUFyRCxJQUFJLHNCQUFKLElBQUk7WUFBRSxVQUFVLHNCQUFWLFVBQVU7O0FBRXRCLFlBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUNuQixtQkFBTyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDdEQsTUFBTTtBQUNMLG1CQUFPLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztTQUNyRDtLQUNGOztBQUVELGFBQUEsdUJBQUEsQ0FBd0MsT0FBZSxFQUFFLElBQVksRUFBQTtBQUNuRSxZQUFJLHFDQXpCSixvQkFBb0IsQ0F5QkssT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3ZDLG1CQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7QUFFRCxZQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRTtBQUNuQyxtQkFBTyw0QkFBNEIsQ0FBQztTQUNyQztBQUVELFlBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ25DLG1CQUFPLHVCQUF1QixDQUFDO1NBQ2hDO0FBRUQsZUFBTyxJ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O0FBQUEsNEJBQUEsV0FDRSxZQUFZLEdBQUEsc0JBQUMsR0FBZ0IsRUFBRSxPQUFnQixFQUFFLEtBQWEsRUFBQTtBQUM1RCx5Q0FBTSxZQUFZLEtBQUEsT0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLHFDQWxNbkMsc0JBQXNCLENBa01vQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMxRjs7QUFISCw0QkFBQSxXQUtFLGVBQWUsR0FBQSx5QkFBQyxHQUFnQixFQUFFLE9BQWdCLEVBQUUsS0FBYSxFQUFFLFNBQXdCLEVBQUE7QUFDekYsZ0JBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN4Qzs7ZUFQSCxvQkFBQTtPQUFtQyxnQkFBZ0IiLCJmaWxlIjoiYXR0cmlidXRlLW1hbmFnZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRklYTUUsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBET01OYW1lc3BhY2UgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIHNhbml0aXplQXR0cmlidXRlVmFsdWUsXG4gIHJlcXVpcmVzU2FuaXRpemF0aW9uXG59IGZyb20gJy4vc2FuaXRpemVkLXZhbHVlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVQcm9wZXJ0eSB9IGZyb20gJy4vcHJvcHMnO1xuaW1wb3J0IHsgU1ZHX05BTUVTUEFDRSB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IG5vcm1hbGl6ZVRleHRWYWx1ZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvY29udGVudCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U6IHN0cmluZyk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICBsZXQgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZTtcbiAgbGV0IGlzU1ZHID0gZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0U7XG5cbiAgaWYgKGlzU1ZHKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRBdHRyaWJ1dGVNYW5hZ2Vycyh0YWdOYW1lLCBhdHRyKTtcbiAgfVxuXG4gIGxldCB7IHR5cGUsIG5vcm1hbGl6ZWQgfSA9IG5vcm1hbGl6ZVByb3BlcnR5KGVsZW1lbnQsIGF0dHIpO1xuXG4gIGlmICh0eXBlID09PSAnYXR0cicpIHtcbiAgICByZXR1cm4gZGVmYXVsdEF0dHJpYnV0ZU1hbmFnZXJzKHRhZ05hbWUsIG5vcm1hbGl6ZWQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkZWZhdWx0UHJvcGVydHlNYW5hZ2Vycyh0YWdOYW1lLCBub3JtYWxpemVkKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFByb3BlcnR5TWFuYWdlcnModGFnTmFtZTogc3RyaW5nLCBhdHRyOiBzdHJpbmcpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgaWYgKHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWUsIGF0dHIpKSB7XG4gICAgcmV0dXJuIG5ldyBTYWZlUHJvcGVydHlNYW5hZ2VyKGF0dHIpO1xuICB9XG5cbiAgaWYgKGlzVXNlcklucHV0VmFsdWUodGFnTmFtZSwgYXR0cikpIHtcbiAgICByZXR1cm4gSU5QVVRfVkFMVUVfUFJPUEVSVFlfTUFOQUdFUjtcbiAgfVxuXG4gIGlmIChpc09wdGlvblNlbGVjdGVkKHRhZ05hbWUsIGF0dHIpKSB7XG4gICAgcmV0dXJuIE9QVElPTl9TRUxFQ1RFRF9NQU5BR0VSO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9wZXJ0eU1hbmFnZXIoYXR0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QXR0cmlidXRlTWFuYWdlcnModGFnTmFtZTogc3RyaW5nLCBhdHRyOiBzdHJpbmcpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgaWYgKHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWUsIGF0dHIpKSB7XG4gICAgcmV0dXJuIG5ldyBTYWZlQXR0cmlidXRlTWFuYWdlcihhdHRyKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQXR0cmlidXRlTWFuYWdlcihhdHRyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRET01BdHRyKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZykge1xuICBsZXQgaXNTVkcgPSBlbGVtZW50Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRTtcbiAgbGV0IHsgdHlwZSwgbm9ybWFsaXplZCB9ID0gbm9ybWFsaXplUHJvcGVydHkoZWxlbWVudCwgYXR0cik7XG5cbiAgaWYgKGlzU1ZHKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKG5vcm1hbGl6ZWQpO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdhdHRyJykge1xuICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShub3JtYWxpemVkKTtcbiAgfSB7XG4gICAgcmV0dXJuIGVsZW1lbnRbbm9ybWFsaXplZF07XG4gIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3IocHVibGljIGF0dHI6IHN0cmluZykge31cblxuICBzZXRBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IERPTU5hbWVzcGFjZSkge1xuICAgIGxldCBkb20gPSBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpO1xuICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAoIWlzQXR0clJlbW92YWxWYWx1ZShub3JtYWxpemVkVmFsdWUpKSB7XG4gICAgICBkb20uc2V0QXR0cmlidXRlKGVsZW1lbnQsIHRoaXMuYXR0ciwgbm9ybWFsaXplZFZhbHVlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCB2YWx1ZTogT3BhcXVlLCBuYW1lc3BhY2U/OiBET01OYW1lc3BhY2UpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgZW52LmdldERPTSgpLnJlbW92ZUF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgdGhpcy5hdHRyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudi5nZXRET00oKS5yZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgdGhpcy5hdHRyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlNYW5hZ2VyIGV4dGVuZHMgQXR0cmlidXRlTWFuYWdlciB7XG4gIHNldEF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogRE9NTmFtZXNwYWNlKSB7XG4gICAgaWYgKCFpc0F0dHJSZW1vdmFsVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbGVtZW50W3RoaXMuYXR0cl0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQsIG5hbWVzcGFjZT86IERPTU5hbWVzcGFjZSkge1xuICAgIC8vIFRPRE8gdGhpcyBzdWNrcyBidXQgdG8gcHJlc2VydmUgcHJvcGVydGllcyBmaXJzdCBhbmQgdG8gbWVldCBjdXJyZW50XG4gICAgLy8gc2VtYW50aWNzIHdlIG11c3QgZG8gdGhpcy5cbiAgICBsZXQgeyBhdHRyIH0gPSB0aGlzO1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIGVudi5nZXRET00oKS5yZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIGF0dHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnYuZ2V0RE9NKCkucmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsIGF0dHIpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCB2YWx1ZTogT3BhcXVlLCBuYW1lc3BhY2U/OiBET01OYW1lc3BhY2UpIHtcbiAgICBpZiAoaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCBuYW1lc3BhY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplQXR0cmlidXRlVmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIC8vIG9uY2xpY2sgZnVuY3Rpb24gZXRjIGluIFNTUlxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5jbGFzcyBTYWZlUHJvcGVydHlNYW5hZ2VyIGV4dGVuZHMgUHJvcGVydHlNYW5hZ2VyIHtcbiAgc2V0QXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgc3VwZXIuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZShlbnYsIGVsZW1lbnQsIHRoaXMuYXR0ciwgdmFsdWUpKTtcbiAgfVxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNVc2VySW5wdXRWYWx1ZSh0YWdOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gIHJldHVybiAodGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCB0YWdOYW1lID09PSAnVEVYVEFSRUEnKSAmJiBhdHRyaWJ1dGUgPT09ICd2YWx1ZSc7XG59XG5cbmNsYXNzIElucHV0VmFsdWVQcm9wZXJ0eU1hbmFnZXIgZXh0ZW5kcyBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgc2V0QXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgbGV0IGlucHV0ID0gZWxlbWVudCBhcyBGSVhNRTxIVE1MSW5wdXRFbGVtZW50LCBcIlRoaXMgYnJlYWtzIFNTUlwiPjtcbiAgICBpbnB1dC52YWx1ZSA9IG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICB1cGRhdGVBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogRWxlbWVudCwgdmFsdWU6IE9wYXF1ZSkge1xuICAgIGxldCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsZW1lbnQ7XG4gICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpO1xuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IG5vcm1hbGl6ZWRWYWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9WQUxVRV9QUk9QRVJUWV9NQU5BR0VSOiBBdHRyaWJ1dGVNYW5hZ2VyID0gbmV3IElucHV0VmFsdWVQcm9wZXJ0eU1hbmFnZXIoJ3ZhbHVlJyk7XG5cbmZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQodGFnTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZykge1xuICByZXR1cm4gdGFnTmFtZSA9PT0gJ09QVElPTicgJiYgYXR0cmlidXRlID09PSAnc2VsZWN0ZWQnO1xufVxuXG5jbGFzcyBPcHRpb25TZWxlY3RlZE1hbmFnZXIgZXh0ZW5kcyBQcm9wZXJ0eU1hbmFnZXIge1xuICBzZXRBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIGxldCBvcHRpb24gPSA8SFRNTE9wdGlvbkVsZW1lbnQ+ZWxlbWVudDtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBsZXQgb3B0aW9uID0gPEhUTUxPcHRpb25FbGVtZW50PmVsZW1lbnQ7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgT1BUSU9OX1NFTEVDVEVEX01BTkFHRVI6IEF0dHJpYnV0ZU1hbmFnZXIgPSBuZXcgT3B0aW9uU2VsZWN0ZWRNYW5hZ2VyKCdzZWxlY3RlZCcpO1xuXG5jbGFzcyBTYWZlQXR0cmlidXRlTWFuYWdlciBleHRlbmRzIEF0dHJpYnV0ZU1hbmFnZXIge1xuICBzZXRBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogRWxlbWVudCwgdmFsdWU6IE9wYXF1ZSkge1xuICAgIHN1cGVyLnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHNhbml0aXplQXR0cmlidXRlVmFsdWUoZW52LCBlbGVtZW50LCB0aGlzLmF0dHIsIHZhbHVlKSk7XG4gIH1cblxuICB1cGRhdGVBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogRWxlbWVudCwgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogRE9NTmFtZXNwYWNlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/dom/helper', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/compat/inner-html-fix', 'glimmer-runtime/lib/compat/svg-inner-html-fix', 'glimmer-runtime/lib/compat/text-node-merging-fix', 'glimmer-runtime/lib/dom/interfaces'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibCompatInnerHtmlFix, _glimmerRuntimeLibCompatSvgInnerHtmlFix, _glimmerRuntimeLibCompatTextNodeMergingFix, _glimmerRuntimeLibDomInterfaces) {
- 'use strict';
-
- exports.isWhitespace = isWhitespace;
- exports.moveNodesBefore = moveNodesBefore;
- exports.insertHTMLBefore = _insertHTMLBefore;
- var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
- exports.SVG_NAMESPACE = SVG_NAMESPACE;
- // http://www.w3.org/TR/html/syntax.html#html-integration-point
- var SVG_INTEGRATION_POINTS = { foreignObject: 1, desc: 1, title: 1 };
- // http://www.w3.org/TR/html/syntax.html#adjust-svg-attributes
- // TODO: Adjust SVG attributes
- // http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign
- // TODO: Adjust SVG elements
- // http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign
- var BLACKLIST_TABLE = Object.create(null);
- exports.BLACKLIST_TABLE = BLACKLIST_TABLE;
- ["b", "big", "blockquote", "body", "br", "center", "code", "dd", "div", "dl", "dt", "em", "embed", "h1", "h2", "h3", "h4", "h5", "h6", "head", "hr", "i", "img", "li", "listing", "main", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small", "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul", "var"].forEach(function (tag) {
- return BLACKLIST_TABLE[tag] = 1;
- });
- var WHITESPACE = /[\t-\r \xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/;
- var doc = typeof document === 'undefined' ? undefined : document;
-
- function isWhitespace(string) {
- return WHITESPACE.test(string);
+ if (result && 'value' in result) {
+ value = env.hooks.getValue(result.value);
+ hasValue = true;
+ }
}
- function moveNodesBefore(source, target, nextSibling) {
- var first = source.firstChild;
- var last = null;
- var current = first;
- while (current) {
- last = current;
- current = current.nextSibling;
- target.insertBefore(last, nextSibling);
- }
- return [first, last];
+ if (hasValue) {
+ if (morph.lastValue !== value) {
+ morph.setContent(value);
+ }
+ morph.lastValue = value;
}
+ }
- var DOM;
- exports.DOM = DOM;
- (function (DOM) {
- var TreeConstruction = (function () {
- function TreeConstruction(document) {
- this.document = document;
- this.uselessElement = null;
- this.setupUselessElement();
- }
+ function keyword(path, morph, env, scope, params, hash, template, inverse, visitor) {
+ handleKeyword(path, morph, env, scope, params, hash, template, inverse, visitor);
+ }
- TreeConstruction.prototype.setupUselessElement = function setupUselessElement() {
- this.uselessElement = this.document.createElement('div');
- };
+ function invokeHelper(morph, env, scope, visitor, _params, _hash, helper, templates, context) {
+ var params = normalizeArray(env, _params);
+ var hash = normalizeObject(env, _hash);
+ return { value: helper.call(context, params, hash, templates) };
+ }
- TreeConstruction.prototype.createElement = function createElement(tag, context) {
- var isElementInSVGNamespace = undefined,
- isHTMLIntegrationPoint = undefined;
- if (context) {
- isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
- isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
- } else {
- isElementInSVGNamespace = tag === 'svg';
- isHTMLIntegrationPoint = false;
- }
- if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
- // FIXME: This does not properly handle <font> with color, face, or
- // size attributes, which is also disallowed by the spec. We should fix
- // this.
- if (BLACKLIST_TABLE[tag]) {
- throw new Error('Cannot create a ' + tag + ' inside an SVG context');
- }
- return this.document.createElementNS(SVG_NAMESPACE, tag);
- } else {
- return this.document.createElement(tag);
- }
- };
+ function normalizeArray(env, array) {
+ var out = new Array(array.length);
- TreeConstruction.prototype.createElementNS = function createElementNS(namespace, tag) {
- return this.document.createElementNS(namespace, tag);
- };
+ for (var i = 0, l = array.length; i < l; i++) {
+ out[i] = env.hooks.getCellOrValue(array[i]);
+ }
- TreeConstruction.prototype.setAttribute = function setAttribute(element, name, value, namespace) {
- if (namespace) {
- element.setAttributeNS(namespace, name, value);
- } else {
- element.setAttribute(name, value);
- }
- };
+ return out;
+ }
- TreeConstruction.prototype.createTextNode = function createTextNode(text) {
- return this.document.createTextNode(text);
- };
+ function normalizeObject(env, object) {
+ var out = {};
- TreeConstruction.prototype.createComment = function createComment(data) {
- return this.document.createComment(data);
- };
+ for (var prop in object) {
+ out[prop] = env.hooks.getCellOrValue(object[prop]);
+ }
- TreeConstruction.prototype.insertBefore = function insertBefore(parent, node, reference) {
- parent.insertBefore(node, reference);
- };
+ return out;
+ }
- TreeConstruction.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
- return _insertHTMLBefore(this.uselessElement, parent, reference, html);
- };
+ function classify() /* env, scope, path */{
+ return null;
+ }
- return TreeConstruction;
- })();
+ var keywords = {
+ partial: function (morph, env, scope, params) {
+ var value = env.hooks.partial(morph, env, scope, params[0]);
+ morph.setContent(value);
+ return true;
+ },
- DOM.TreeConstruction = TreeConstruction;
- var appliedTreeContruction = TreeConstruction;
- appliedTreeContruction = _glimmerRuntimeLibCompatTextNodeMergingFix.treeConstruction(doc, appliedTreeContruction);
- appliedTreeContruction = _glimmerRuntimeLibCompatInnerHtmlFix.treeConstruction(doc, appliedTreeContruction);
- appliedTreeContruction = _glimmerRuntimeLibCompatSvgInnerHtmlFix.treeConstruction(doc, appliedTreeContruction, SVG_NAMESPACE);
- DOM.DOMTreeConstruction = appliedTreeContruction;
- })(DOM || (exports.DOM = DOM = {}));
+ // quoted since it's a reserved word, see issue #420
+ 'yield': function (morph, env, scope, params, hash, template, inverse, visitor) {
+ // the current scope is provided purely for the creation of shadow
+ // scopes; it should not be provided to user code.
- var DOMChanges = (function () {
- function DOMChanges(document) {
- this.document = document;
- this.uselessElement = null;
- this.namespace = null;
- this.uselessElement = this.document.createElement('div');
- }
+ var to = env.hooks.getValue(hash.to) || 'default';
+ var block = env.hooks.getBlock(scope, to);
- DOMChanges.prototype.setAttribute = function setAttribute(element, name, value) {
- element.setAttribute(name, value);
- };
+ if (block) {
+ block.invoke(env, params, hash.self, morph, scope, visitor);
+ }
+ return true;
+ },
- DOMChanges.prototype.setAttributeNS = function setAttributeNS(element, namespace, name, value) {
- element.setAttributeNS(namespace, name, value);
- };
+ hasBlock: function (morph, env, scope, params) {
+ var name = env.hooks.getValue(params[0]) || 'default';
+ return !!env.hooks.getBlock(scope, name);
+ },
- DOMChanges.prototype.removeAttribute = function removeAttribute(element, name) {
- element.removeAttribute(name);
- };
+ hasBlockParams: function (morph, env, scope, params) {
+ var name = env.hooks.getValue(params[0]) || 'default';
+ var block = env.hooks.getBlock(scope, name);
+ return !!(block && block.arity);
+ }
- DOMChanges.prototype.removeAttributeNS = function removeAttributeNS(element, namespace, name) {
- element.removeAttributeNS(namespace, name);
- };
+ };
- DOMChanges.prototype.createTextNode = function createTextNode(text) {
- return this.document.createTextNode(text);
- };
+ exports.keywords = keywords;
+ /**
+ Host Hook: partial
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} path
+
+ Corresponds to:
+
+ ```hbs
+ {{partial "location"}}
+ ```
+
+ This host hook is invoked by the default implementation of
+ the `inline` hook. This makes `partial` a keyword in an
+ HTMLBars environment using the default `inline` host hook.
+
+ It is implemented as a host hook so that it can retrieve
+ the named partial out of the `Environment`. Helpers, in
+ contrast, only have access to the values passed in to them,
+ and not to the ambient lexical environment.
+
+ The host hook should invoke the referenced partial with
+ the ambient `self`.
+ */
- DOMChanges.prototype.createComment = function createComment(data) {
- return this.document.createComment(data);
- };
+ function partial(renderNode, env, scope, path) {
+ var template = env.partials[path];
+ return template.render(scope.self, env, {}).fragment;
+ }
- DOMChanges.prototype.createElement = function createElement(tag, context) {
- var isElementInSVGNamespace = undefined,
- isHTMLIntegrationPoint = undefined;
- if (context) {
- isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
- isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
- } else {
- isElementInSVGNamespace = tag === 'svg';
- isHTMLIntegrationPoint = false;
- }
- if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
- // FIXME: This does not properly handle <font> with color, face, or
- // size attributes, which is also disallowed by the spec. We should fix
- // this.
- if (BLACKLIST_TABLE[tag]) {
- throw new Error('Cannot create a ' + tag + ' inside an SVG context');
- }
- return this.document.createElementNS(SVG_NAMESPACE, tag);
- } else {
- return this.document.createElement(tag);
- }
- };
+ /**
+ Host hook: range
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {Scope} scope
+ @param {any} value
+
+ Corresponds to:
+
+ ```hbs
+ {{content}}
+ {{{unescaped}}}
+ ```
+
+ This hook is responsible for updating a render node
+ that represents a range of content with a value.
+ */
- DOMChanges.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) {
- return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
- };
+ function range(morph, env, scope, path, value, visitor) {
+ if (handleRedirect(morph, env, scope, path, [], {}, null, null, visitor)) {
+ return;
+ }
- DOMChanges.prototype.insertNodeBefore = function insertNodeBefore(parent, node, reference) {
- if (isDocumentFragment(node)) {
- var firstChild = node.firstChild;
- var lastChild = node.lastChild;
+ value = env.hooks.getValue(value);
- this.insertBefore(parent, node, reference);
- return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, firstChild, lastChild);
- } else {
- this.insertBefore(parent, node, reference);
- return new _glimmerRuntimeLibBounds.SingleNodeBounds(parent, node);
- }
- };
+ if (morph.lastValue !== value) {
+ morph.setContent(value);
+ }
- DOMChanges.prototype.insertTextBefore = function insertTextBefore(parent, nextSibling, text) {
- var textNode = this.createTextNode(text);
- this.insertBefore(parent, textNode, nextSibling);
- return textNode;
- };
+ morph.lastValue = value;
+ }
- DOMChanges.prototype.insertBefore = function insertBefore(element, node, reference) {
- element.insertBefore(node, reference);
- };
+ /**
+ Host hook: element
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} path
+ @param {Array} params
+ @param {Hash} hash
+
+ Corresponds to:
+
+ ```hbs
+ <div {{bind-attr foo=bar}}></div>
+ ```
+
+ This hook is responsible for invoking a helper that
+ modifies an element.
+
+ Its purpose is largely legacy support for awkward
+ idioms that became common when using the string-based
+ Handlebars engine.
+
+ Most of the uses of the `element` hook are expected
+ to be superseded by component syntax and the
+ `attribute` hook.
+ */
- DOMChanges.prototype.insertAfter = function insertAfter(element, node, reference) {
- this.insertBefore(element, node, reference.nextSibling);
- };
-
- return DOMChanges;
- })();
-
- exports.DOMChanges = DOMChanges;
-
- function _insertHTMLBefore(_useless, _parent, _nextSibling, html) {
- // TypeScript vendored an old version of the DOM spec where `insertAdjacentHTML`
- // only exists on `HTMLElement` but not on `Element`. We actually work with the
- // newer version of the DOM API here (and monkey-patch this method in `./compat`
- // when we detect older browsers). This is a hack to work around this limitation.
- var parent = _parent;
- var useless = _useless;
- var nextSibling = _nextSibling;
- var prev = nextSibling ? nextSibling.previousSibling : parent.lastChild;
- var last = undefined;
- if (html === null || html === '') {
- return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, null, null);
- }
- if (nextSibling === null) {
- parent.insertAdjacentHTML('beforeEnd', html);
- last = parent.lastChild;
- } else if (nextSibling instanceof HTMLElement) {
- nextSibling.insertAdjacentHTML('beforeBegin', html);
- last = nextSibling.previousSibling;
- } else {
- // Non-element nodes do not support insertAdjacentHTML, so add an
- // element and call it on that element. Then remove the element.
- //
- // This also protects Edge, IE and Firefox w/o the inspector open
- // from merging adjacent text nodes. See ./compat/text-node-merging-fix.ts
- parent.insertBefore(useless, nextSibling);
- useless.insertAdjacentHTML('beforeBegin', html);
- last = useless.previousSibling;
- parent.removeChild(useless);
- }
- var first = prev ? prev.nextSibling : parent.firstChild;
- return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last);
+ function element(morph, env, scope, path, params, hash, visitor) {
+ if (handleRedirect(morph, env, scope, path, params, hash, null, null, visitor)) {
+ return;
}
- function isDocumentFragment(node) {
- return node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
+ var helper = env.hooks.lookupHelper(env, scope, path);
+ if (helper) {
+ env.hooks.invokeHelper(null, env, scope, null, params, hash, helper, { element: morph.element });
}
- var helper = DOMChanges;
- helper = _glimmerRuntimeLibCompatTextNodeMergingFix.domChanges(doc, helper);
- helper = _glimmerRuntimeLibCompatInnerHtmlFix.domChanges(doc, helper);
- helper = _glimmerRuntimeLibCompatSvgInnerHtmlFix.domChanges(doc, helper, SVG_NAMESPACE);
- exports.default = helper;
- var DOMTreeConstruction = DOM.DOMTreeConstruction;
- exports.DOMTreeConstruction = DOMTreeConstruction;
- exports.DOMNamespace = _glimmerRuntimeLibDomInterfaces.Namespace;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFlTyxRQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQzs7O0FBRzFELFFBQU0sc0JBQXNCLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDOzs7Ozs7QUFTaEUsUUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsQUFBQyxLQUNDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDaEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQ3JHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQ3BHLElBQUksRUFBRSxLQUFLLENBQ1osQ0FBRSxPQUFPLENBQUMsVUFBQSxHQUFHO2VBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7S0FBQSxDQUFDLENBQUM7QUFFNUMsUUFBTSxVQUFVLEdBQUcsMkVBQTJFLENBQUM7QUFFL0YsUUFBSSxHQUFHLEdBQUcsT0FBTyxRQUFRLEtBQUssV0FBVyxHQUFHLFNBQVMsR0FB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QixFQUFBO0FBQzNDLGVBQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUM7S0FDdEQ7QUFFRCxRQUFJLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFFeEIsVUFBTSxHQUFHLDJDQXBRUCxVQUFVLENBb1FzQixHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0MsVUFBTSxHQUFHLHFDQTdRUCxVQUFVLENBNlF1QixHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEQsVUFBTSxHQUFHLHdDQTFRUCxVQUFVLENBMFFxQixHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO3NCQUU5QyxNQUFNO0FBQ2QsUUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQUM7O1lBRXJDLFlBQVksbUNBQXpCLFNBQVMiLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMsIFNpbmdsZU5vZGVCb3VuZHMsIEJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQge1xuICBkb21DaGFuZ2VzIGFzIGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgsXG4gIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeFxufSBmcm9tICcuLi9jb21wYXQvaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHtcbiAgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCxcbiAgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeFxufSBmcm9tICcuLi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4JztcbmltcG9ydCB7XG4gIGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4LFxuICB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeFxufSBmcm9tICcuLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4JztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuY29uc3QgU1ZHX0lOVEVHUkFUSU9OX1BPSU5UUyA9IHsgZm9yZWlnbk9iamVjdDogMSwgZGVzYzogMSwgdGl0bGU6IDEgfTtcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhZGp1c3Qtc3ZnLWF0dHJpYnV0ZXNcbi8vIFRPRE86IEFkanVzdCBTVkcgYXR0cmlidXRlc1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbi8vIFRPRE86IEFkanVzdCBTVkcgZWxlbWVudHNcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG5leHBvcnQgY29uc3QgQkxBQ0tMSVNUX1RBQkxFID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuKFtcbiAgXCJiXCIsIFwiYmlnXCIsIFwiYmxvY2txdW90ZVwiLCBcImJvZHlcIiwgXCJiclwiLCBcImNlbnRlclwiLCBcImNvZGVcIiwgXCJkZFwiLCBcImRpdlwiLCBcImRsXCIsIFwiZHRcIiwgXCJlbVwiLCBcImVtYmVkXCIsXG4gIFwiaDFcIiwgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLCBcImg2XCIsIFwiaGVhZFwiLCBcImhyXCIsIFwiaVwiLCBcImltZ1wiLCBcImxpXCIsIFwibGlzdGluZ1wiLCBcIm1haW5cIiwgXCJtZXRhXCIsIFwibm9iclwiLFxuICBcIm9sXCIsIFwicFwiLCBcInByZVwiLCBcInJ1YnlcIiwgXCJzXCIsIFwic21hbGxcIiwgXCJzcGFuXCIsIFwic3Ryb25nXCIsIFwic3RyaWtlXCIsIFwic3ViXCIsIFwic3VwXCIsIFwidGFibGVcIiwgXCJ0dFwiLCBcInVcIixcbiAgXCJ1bFwiLCBcInZhclwiXG5dKS5mb3JFYWNoKHRhZyA9PiBCTEFDS0xJU1RfVEFCTEVbdGFnXSA9IDEpO1xuXG5jb25zdCBXSElURVNQQUNFID0gL1tcXHQtXFxyIFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZdLztcblxubGV0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBkb2N1bWVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVzcGFjZShzdHJpbmc6IHN0cmluZykge1xuICByZXR1cm4gV0hJVEVTUEFDRS50ZXN0KHN0cmluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlTm9kZXNCZWZvcmUoc291cmNlLCB0YXJnZXQsIG5leHRTaWJsaW5nKSB7XG4gIGxldCBmaXJzdCA9IHNvdXJjZS5maXJzdENoaWxkO1xuICBsZXQgbGFzdCA9IG51bGw7XG4gIGxldCBjdXJyZW50ID0gZmlyc3Q7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgbGFzdCA9IGN1cnJlbnQ7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG4gICAgdGFyZ2V0Lmluc2VydEJlZm9yZShsYXN0LCBuZXh0U2libGluZyk7XG4gIH1cbiAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRE9NIHtcbiAgZXhwb3J0IHR5cGUgTm9kZSA9IFNpbXBsZS5Ob2RlO1xuICBleHBvcnQgdHlwZSBFbGVtZW50ID0gU2ltcGxlLkVsZW1lbnQ7XG4gIGV4cG9ydCB0eXBlIERvY3VtZW50ID0gU2ltcGxlLkRvY3VtZW50O1xuICBleHBvcnQgdHlwZSBDb21tZW50ID0gU2ltcGxlLkNvbW1lbnQ7XG4gIGV4cG9ydCB0eXBlIFRleHQgPSBTaW1wbGUuVGV4dDtcbiAgZXhwb3J0IHR5cGUgTmFtZXNwYWNlID0gU2ltcGxlLk5hbWVzcGFjZTtcbiAgZXhwb3J0IHR5cGUgSFRNTEVsZW1lbnQgPSBTaW1wbGUuSFRNTEVsZW1lbnQ7XG5cbiAgZXhwb3J0IGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb24ge1xuICAgIHByb3RlY3RlZCB1c2VsZXNzRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuc2V0dXBVc2VsZXNzRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXR1cFVzZWxlc3NFbGVtZW50KCkge1xuICAgICAgdGhpcy51c2VsZXNzRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgfVxuXG4gICAgY3JlYXRlRWxlbWVudCh0YWc6IHN0cmluZywgY29udGV4dD86IEVsZW1lbnQpOiBFbGVtZW50IHtcbiAgICAgIGxldCBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSwgaXNIVE1MSW50ZWdyYXRpb25Qb2ludDtcblxuICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSBjb250ZXh0Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSB8fCB0YWcgPT09ICdzdmcnO1xuICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gU1ZHX0lOVEVHUkFUSU9OX1BPSU5UU1tjb250ZXh0LnRhZ05hbWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSB0YWcgPT09ICdzdmcnO1xuICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VsZW1lbnRJblNWR05hbWVzcGFjZSAmJiAhaXNIVE1MSW50ZWdyYXRpb25Qb2ludCkge1xuICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgPGZvbnQ+IHdpdGggY29sb3IsIGZhY2UsIG9yXG4gICAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAgIC8vIHRoaXMuXG4gICAgICAgIGlmIChCTEFDS0xJU1RfVEFCTEVbdGFnXSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBhICR7dGFnfSBpbnNpZGUgYW4gU1ZHIGNvbnRleHRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTkFNRVNQQUNFIGFzIE5hbWVzcGFjZSwgdGFnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlOiBOYW1lc3BhY2UsIHRhZzogc3RyaW5nKTogRWxlbWVudCB7XG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWcpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShlbGVtZW50OiBFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZykge1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVRleHROb2RlKHRleHQ6IHN0cmluZyk6IFRleHQge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ29tbWVudChkYXRhOiBzdHJpbmcpOiBDb21tZW50IHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZGF0YSk7XG4gICAgfVxuXG4gICAgaW5zZXJ0QmVmb3JlKHBhcmVudDogRWxlbWVudCwgbm9kZTogTm9kZSwgcmVmZXJlbmNlOiBOb2RlKSB7XG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgICAgIHJldHVybiBpbnNlcnRIVE1MQmVmb3JlKHRoaXMudXNlbGVzc0VsZW1lbnQsIHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbik7XG4gIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbik7XG4gIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24sIFNWR19OQU1FU1BBQ0UpO1xuXG4gIGV4cG9ydCBjb25zdCBET01UcmVlQ29uc3RydWN0aW9uID0gYXBwbGllZFRyZWVDb250cnVjdGlvbjtcbiAgZXhwb3J0IHR5cGUgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG59XG5cbmV4cG9ydCBjbGFzcyBET01DaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIG5hbWVzcGFjZTogc3RyaW5nO1xuICBwcml2YXRlIHVzZWxlc3NFbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRvY3VtZW50OiBIVE1MRG9jdW1lbnQpIHtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG51bGw7XG4gICAgdGhpcy51c2VsZXNzRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH1cblxuICByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZVRleHROb2RlKHRleHQ6IHN0cmluZyk6IFNpbXBsZS5UZXh0IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgfVxuXG4gIGNyZWF0ZUNvbW1lbnQoZGF0YTogc3RyaW5nKTogU2ltcGxlLkNvbW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZGF0YSk7XG4gIH1cblxuICBjcmVhdGVFbGVtZW50KHRhZzogc3RyaW5nLCBjb250ZXh0PzogU2ltcGxlLkVsZW1lbnQpOiBTaW1wbGUuRWxlbWVudCB7XG4gICAgbGV0IGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlLCBpc0hUTUxJbnRlZ3JhdGlvblBvaW50O1xuXG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gY29udGV4dC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UgfHwgdGFnID09PSAnc3ZnJztcbiAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBTVkdfSU5URUdSQVRJT05fUE9JTlRTW2NvbnRleHQudGFnTmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAvLyB0aGlzLlxuICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBhICR7dGFnfSBpbnNpZGUgYW4gU1ZHIGNvbnRleHRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UgYXMgU2ltcGxlLk5hbWVzcGFjZSwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydEhUTUxCZWZvcmUoX3BhcmVudDogRWxlbWVudCwgbmV4dFNpYmxpbmc6IE5vZGUsIGh0bWw6IHN0cmluZyk6IEJvdW5kcyB7XG4gICAgcmV0dXJuIGluc2VydEhUTUxCZWZvcmUodGhpcy51c2VsZXNzRWxlbWVudCwgX3BhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICB9XG5cbiAgaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBub2RlOiBTaW1wbGUuTm9kZSwgcmVmZXJlbmNlOiBTaW1wbGUuTm9kZSk6IEJvdW5kcyB7XG4gICAgaWYgKGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSkge1xuICAgICAgbGV0IHsgZmlyc3RDaGlsZCwgbGFzdENoaWxkIH0gPSBub2RlO1xuICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpO1xuICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydFRleHRCZWZvcmUocGFyZW50OiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlLCB0ZXh0OiBzdHJpbmcpOiBTaW1wbGUuVGV4dCB7XG4gICAgbGV0IHRleHROb2RlID0gdGhpcy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIHRleHROb2RlLCBuZXh0U2libGluZyk7XG4gICAgcmV0dXJuIHRleHROb2RlO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBub2RlOiBTaW1wbGUuTm9kZSwgcmVmZXJlbmNlOiBTaW1wbGUuTm9kZSkge1xuICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBpbnNlcnRBZnRlcihlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbm9kZTogU2ltcGxlLk5vZGUsIHJlZmVyZW5jZTogU2ltcGxlLk5vZGUpIHtcbiAgICB0aGlzLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UubmV4dFNpYmxpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRIVE1MQmVmb3JlKHRoaXM6IHZvaWQsIF91c2VsZXNzOiBTaW1wbGUuSFRNTEVsZW1lbnQsIF9wYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBfbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMgeyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gIC8vIFR5cGVTY3JpcHQgdmVuZG9yZWQgYW4gb2xkIHZlcnNpb24gb2YgdGhlIERPTSBzcGVjIHdoZXJlIGBpbnNlcnRBZGphY2VudEhUTUxgXG4gIC8vIG9ubHkgZXhpc3RzIG9uIGBIVE1MRWxlbWVudGAgYnV0IG5vdCBvbiBgRWxlbWVudGAuIFdlIGFjdHVhbGx5IHdvcmsgd2l0aCB0aGVcbiAgLy8gbmV3ZXIgdmVyc2lvbiBvZiB0aGUgRE9NIEFQSSBoZXJlIChhbmQgbW9ua2V5LXBhdGNoIHRoaXMgbWV0aG9kIGluIGAuL2NvbXBhdGBcbiAgLy8gd2hlbiB3ZSBkZXRlY3Qgb2xkZXIgYnJvd3NlcnMpLiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24uXG4gIGxldCBwYXJlbnQgPSBfcGFyZW50IGFzIEhUTUxFbGVtZW50O1xuICBsZXQgdXNlbGVzcyA9IF91c2VsZXNzIGFzIEhUTUxFbGVtZW50O1xuICBsZXQgbmV4dFNpYmxpbmcgPSBfbmV4dFNpYmxpbmcgYXMgTm9kZTtcblxuICBsZXQgcHJldiA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgbGV0IGxhc3Q7XG5cbiAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgbnVsbCwgbnVsbCk7XG4gIH1cblxuICBpZiAobmV4dFNpYmxpbmcgPT09IG51bGwpIHtcbiAgICBwYXJlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCBodG1sKTtcbiAgICBsYXN0ID0gcGFyZW50Lmxhc3RDaGlsZDtcbiAgfSBlbHNlIGlmIChuZXh0U2libGluZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgbmV4dFNpYmxpbmcuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgIGxhc3QgPSBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmc7XG4gIH0gZWxzZSB7XG4gICAgLy8gTm9uLWVsZW1lbnQgbm9kZXMgZG8gbm90IHN1cHBvcnQgaW5zZXJ0QWRqYWNlbnRIVE1MLCBzbyBhZGQgYW5cbiAgICAvLyBlbGVtZW50IGFuZCBjYWxsIGl0IG9uIHRoYXQgZWxlbWVudC4gVGhlbiByZW1vdmUgdGhlIGVsZW1lbnQuXG4gICAgLy9cbiAgICAvLyBUaGlzIGFsc28gcHJvdGVjdHMgRWRnZSwgSUUgYW5kIEZpcmVmb3ggdy9vIHRoZSBpbnNwZWN0b3Igb3BlblxuICAgIC8vIGZyb20gbWVyZ2luZyBhZGphY2VudCB0ZXh0IG5vZGVzLiBTZWUgLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LnRzXG4gICAgcGFyZW50Lmluc2VydEJlZm9yZSh1c2VsZXNzLCBuZXh0U2libGluZyk7XG4gICAgdXNlbGVzcy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUJlZ2luJywgaHRtbCk7XG4gICAgbGFzdCA9IHVzZWxlc3MucHJldmlvdXNTaWJsaW5nO1xuICAgIHBhcmVudC5yZW1vdmVDaGlsZCh1c2VsZXNzKTtcbiAgfVxuXG4gIGxldCBmaXJzdCA9IHByZXYgPyBwcmV2Lm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQ7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRGcmFnbWVudChub2RlOiBTaW1wbGUuTm9kZSk6IG5vZGUgaXMgRG9jdW1lbnRGcmFnbWVudCB7XG4gIHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7XG59XG5cbmxldCBoZWxwZXIgPSBET01DaGFuZ2VzO1xuXG5oZWxwZXIgPSBkb21DaGFuZ2VzTm9kZU1lcmdpbmdGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeChkb2MsIGhlbHBlcik7XG5oZWxwZXIgPSBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeChkb2MsIGhlbHBlciwgU1ZHX05BTUVTUEFDRSk7XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcjtcbmV4cG9ydCBjb25zdCBET01UcmVlQ29uc3RydWN0aW9uID0gRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb247XG5leHBvcnQgdHlwZSBET01UcmVlQ29uc3RydWN0aW9uID0gRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb247XG5leHBvcnQgeyBOYW1lc3BhY2UgYXMgRE9NTmFtZXNwYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbiJdfQ==
-enifed("glimmer-runtime/lib/dom/interfaces", ["exports"], function (exports) {
- "use strict";
+ }
- var NodeType;
- exports.NodeType = NodeType;
- (function (NodeType) {
- NodeType[NodeType["Element"] = 0] = "Element";
- NodeType[NodeType["Attribute"] = 1] = "Attribute";
- NodeType[NodeType["Text"] = 2] = "Text";
- NodeType[NodeType["CdataSection"] = 3] = "CdataSection";
- NodeType[NodeType["EntityReference"] = 4] = "EntityReference";
- NodeType[NodeType["Entity"] = 5] = "Entity";
- NodeType[NodeType["ProcessingInstruction"] = 6] = "ProcessingInstruction";
- NodeType[NodeType["Comment"] = 7] = "Comment";
- NodeType[NodeType["Document"] = 8] = "Document";
- NodeType[NodeType["DocumentType"] = 9] = "DocumentType";
- NodeType[NodeType["DocumentFragment"] = 10] = "DocumentFragment";
- NodeType[NodeType["Notation"] = 11] = "Notation";
- })(NodeType || (exports.NodeType = NodeType = {}));
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsUUFBWSxRQWFYLENBQUE7O0FBYkQsS0FBQSxVQUFZLFFBQVEsRUFBQTtBQUNsQixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxnQkFBQSxDQUFBLFFBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFTLENBQUE7QUFDVCxnQkFBQSxDQUFBLFFBQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxNQUFJLENBQUE7QUFDSixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxjQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxjQUFZLENBQUE7QUFDWixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxpQkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsaUJBQWUsQ0FBQTtBQUNmLGdCQUFBLENBQUEsUUFBQSxDQUFBLFFBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFFBQU0sQ0FBQTtBQUNOLGdCQUFBLENBQUEsUUFBQSxDQUFBLHVCQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSx1QkFBcUIsQ0FBQTtBQUNyQixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxnQkFBQSxDQUFBLFFBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxjQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxjQUFZLENBQUE7QUFDWixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxrQkFBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEdBQUEsa0JBQWdCLENBQUE7QUFDaEIsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsVUFBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEdBQUEsVUFBUSxDQUFBO0tBQ1QsQ0FBQSxDQWJXLFFBQVEsYUFBUixRQWFYLEdBYlcsUUFBUSxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBYW5CIiwiZmlsZSI6ImludGVyZmFjZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGSVhNRSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5leHBvcnQgdHlwZSBGSVhfUkVJRklDQVRJT048VD4gPSBGSVhNRTxULCAnbmVlZHMgdG8gYmUgcmVpZmllZCBwcm9wZXJseSc+O1xuXG5leHBvcnQgdHlwZSBOYW1lc3BhY2UgPVxuICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gIHwgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCJcbiAgfCBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgfCBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICB8IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCJcbiAgfCBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCI7XG5cbmV4cG9ydCBlbnVtIE5vZGVUeXBlIHtcbiAgRWxlbWVudCxcbiAgQXR0cmlidXRlLFxuICBUZXh0LFxuICBDZGF0YVNlY3Rpb24sXG4gIEVudGl0eVJlZmVyZW5jZSxcbiAgRW50aXR5LFxuICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sXG4gIENvbW1lbnQsXG4gIERvY3VtZW50LFxuICBEb2N1bWVudFR5cGUsXG4gIERvY3VtZW50RnJhZ21lbnQsXG4gIE5vdGF0aW9uXG59XG5cbi8vIFRoaXMgaXMgdGhlIHN1YnNldCBvZiBET00gdXNlZCBieSB0aGUgYXBwZW5kaW5nIFZNLiBJdCBpc1xuLy8gbWVhbnQgdG8gYmUgZWZmaWNpZW50IHRvIHVzZSBvbiB0aGUgc2VydmVyIGFuZCBhbGwgb3BlcmF0aW9uc1xuLy8gbXVzdCBiZSBmdWxseSBzZXJpYWxpemFibGUgdG8gSFRNTCBhcyBhIHRyYW5zcG9ydC5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIG5leHRTaWJsaW5nOiBOb2RlO1xuICBwcmV2aW91c1NpYmxpbmc6IE5vZGU7XG4gIHBhcmVudE5vZGU6IE5vZGU7XG4gIG5vZGVUeXBlOiBOb2RlVHlwZSB8IG51bWJlcjtcbiAgbm9kZVZhbHVlOiBzdHJpbmc7XG4gIGZpcnN0Q2hpbGQ6IE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAgY3JlYXRlRWxlbWVudCh0YWc6IHN0cmluZyk6IEVsZW1lbnQ7XG4gIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2U6IE5hbWVzcGFjZSwgdGFnOiBzdHJpbmcpOiBFbGVtZW50O1xuICBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcpOiBUZXh0O1xuICBjcmVhdGVDb21tZW50KGRhdGE6IHN0cmluZyk6IENvbW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcmFjdGVyRGF0YSBleHRlbmRzIE5vZGUge1xuICBkYXRhOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dCBleHRlbmRzIENoYXJhY3RlckRhdGEge31cblxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50IGV4dGVuZHMgQ2hhcmFjdGVyRGF0YSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAgbmFtZXNwYWNlVVJJOiBzdHJpbmc7XG4gIHRhZ05hbWU6IHN0cmluZztcbiAgZmlyc3RDaGlsZDogTm9kZTtcbiAgbGFzdENoaWxkOiBOb2RlO1xuICByZW1vdmVBdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogdm9pZDtcbiAgcmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlVVJJOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk7XG4gIHNldEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBzZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkk6IHN0cmluZywgcXVhbGlmaWVkTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgaW5zZXJ0QmVmb3JlKG5vZGU6IE5vZGUsIHJlZmVyZW5jZTogTm9kZSk6IHZvaWQ7XG4gIHJlbW92ZUNoaWxkKG5vZGU6IE5vZGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNWR0VsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSFRNTEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHt9XG4iXX0=
-enifed('glimmer-runtime/lib/dom/props', ['exports'], function (exports) {
- /*
- * @method normalizeProperty
- * @param element {HTMLElement}
- * @param slotName {String}
- * @returns {Object} { name, type }
- */
- 'use strict';
+ /**
+ Host hook: attribute
+
+ @param {RenderNode} renderNode
+ @param {Environment} env
+ @param {String} name
+ @param {any} value
+
+ Corresponds to:
+
+ ```hbs
+ <div foo={{bar}}></div>
+ ```
+
+ This hook is responsible for updating a render node
+ that represents an element's attribute with a value.
+
+ It receives the name of the attribute as well as an
+ already-resolved value, and should update the render
+ node with the value if appropriate.
+ */
- exports.normalizeProperty = normalizeProperty;
- exports.normalizePropertyValue = normalizePropertyValue;
+ function attribute(morph, env, scope, name, value) {
+ value = env.hooks.getValue(value);
- function normalizeProperty(element, slotName) {
- var type = undefined,
- normalized = undefined;
- if (slotName in element) {
- normalized = slotName;
- type = 'prop';
- } else {
- var lower = slotName.toLowerCase();
- if (lower in element) {
- type = 'prop';
- normalized = lower;
- } else {
- type = 'attr';
- normalized = slotName;
- }
- }
- if (type === 'prop' && (normalized.toLowerCase() === 'style' || preferAttr(element.tagName, normalized))) {
- type = 'attr';
- }
- return { normalized: normalized, type: type };
+ if (morph.lastValue !== value) {
+ morph.setContent(value);
}
- function normalizePropertyValue(value) {
- if (value === '') {
- return true;
- }
- return value;
- }
+ morph.lastValue = value;
+ }
- // properties that MUST be set as attributes, due to:
- // * browser bug
- // * strange spec outlier
- var ATTR_OVERRIDES = {
- // phantomjs < 2.0 lets you set it as a prop but won't reflect it
- // back to the attribute. button.getAttribute('type') === null
- BUTTON: { type: true, form: true },
- INPUT: {
- // Some version of IE (like IE9) actually throw an exception
- // if you set input.type = 'something-unknown'
- type: true,
- form: true,
- // Chrome 46.0.2464.0: 'autocorrect' in document.createElement('input') === false
- // Safari 8.0.7: 'autocorrect' in document.createElement('input') === false
- // Mobile Safari (iOS 8.4 simulator): 'autocorrect' in document.createElement('input') === true
- autocorrect: true
- },
- // element.form is actually a legitimate readOnly property, that is to be
- // mutated, but must be mutated by setAttribute...
- SELECT: { form: true },
- OPTION: { form: true },
- TEXTAREA: { form: true },
- LABEL: { form: true },
- FIELDSET: { form: true },
- LEGEND: { form: true },
- OBJECT: { form: true }
- };
- function preferAttr(tagName, propName) {
- var tag = ATTR_OVERRIDES[tagName.toUpperCase()];
- return tag && tag[propName.toLowerCase()] || false;
+ function subexpr(env, scope, helperName, params, hash) {
+ var helper = env.hooks.lookupHelper(env, scope, helperName);
+ var result = env.hooks.invokeHelper(null, env, scope, null, params, hash, helper, {});
+ if (result && 'value' in result) {
+ return env.hooks.getValue(result.value);
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQU1BLGFBQUEsaUJBQUEsQ0FBa0MsT0FBTyxFQUFFLFFBQVEsRUFBQTtBQUNqRCxZQUFJLElBQUksWUFBQTtZQUFFLFVBQVUsWUFBQSxDQUFDO0FBRXJCLFlBQUksUUFBUSxJQUFJLE9BQU8sRUFBRTtBQUN2QixzQkFBVSxHQUFHLFFBQVEsQ0FBQztBQUN0QixnQkFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmLE1BQU07QUFDTCxnQkFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ25DLGdCQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7QUFDcEIsb0JBQUksR0FBRyxNQUFNLENBQUM7QUFDZCwwQkFBVSxHQUFHLEtBQUssQ0FBQzthQUNwQixNQUFNO0FBQ0wsb0JBQUksR0FBRyxNQUFNLENBQUM7QUFDZCwwQkFBVSxHQUFHLFFBQVEsQ0FBQzthQUN2QjtTQUNGO0FBRUQsWUFBSSxJQUFJLEtBQUssTUFBTSxLQUNkLFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLElBQ3BDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBLEFBQUMsRUFBRTtBQUM3QyxnQkFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmO0FBRUQsZUFBTyxFQUFFLFVBQVUsRUFBVixVQUFVLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDO0tBQzdCOztBQUVELGFBQUEsc0JBQUEsQ0FBdUMsS0FBSyxFQUFBO0FBQzFDLFlBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtBQUNoQixtQkFBTyxJQUFJLENBQUM7U0FDYjtBQUVELGVBQU8sS0FBSyxDQUFDO0tBQ2Q7Ozs7O0FBS0QsUUFBTSxjQUFjLEdBQUc7OztBQUlyQixjQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFFbEMsYUFBSyxFQUFFOzs7QUFHTCxnQkFBSSxFQUFFLElBQUk7QUFDVixnQkFBSSxFQUFFLElBQUk7Ozs7QUFJVix1QkFBVyxFQUFFLElBQUk7U0FDbEI7OztBQUlELGNBQU0sRUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixnQkFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixhQUFLLEVBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGdCQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGNBQU0sRUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUN6QixDQUFDO0FBRUYsYUFBQSxVQUFBLENBQW9CLE9BQU8sRUFBRSxRQUFRLEVBQUE7QUFDbkMsWUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELGVBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7S0FDcEQiLCJmaWxlIjoicHJvcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQG1ldGhvZCBub3JtYWxpemVQcm9wZXJ0eVxuICogQHBhcmFtIGVsZW1lbnQge0hUTUxFbGVtZW50fVxuICogQHBhcmFtIHNsb3ROYW1lIHtTdHJpbmd9XG4gKiBAcmV0dXJucyB7T2JqZWN0fSB7IG5hbWUsIHR5cGUgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUHJvcGVydHkoZWxlbWVudCwgc2xvdE5hbWUpIHtcbiAgbGV0IHR5cGUsIG5vcm1hbGl6ZWQ7XG5cbiAgaWYgKHNsb3ROYW1lIGluIGVsZW1lbnQpIHtcbiAgICBub3JtYWxpemVkID0gc2xvdE5hbWU7XG4gICAgdHlwZSA9ICdwcm9wJztcbiAgfSBlbHNlIHtcbiAgICBsZXQgbG93ZXIgPSBzbG90TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsb3dlciBpbiBlbGVtZW50KSB7XG4gICAgICB0eXBlID0gJ3Byb3AnO1xuICAgICAgbm9ybWFsaXplZCA9IGxvd2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlID0gJ2F0dHInO1xuICAgICAgbm9ybWFsaXplZCA9IHNsb3ROYW1lO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSAncHJvcCcgJiZcbiAgICAgIChub3JtYWxpemVkLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZScgfHxcbiAgICAgICBwcmVmZXJBdHRyKGVsZW1lbnQudGFnTmFtZSwgbm9ybWFsaXplZCkpKSB7XG4gICAgdHlwZSA9ICdhdHRyJztcbiAgfVxuXG4gIHJldHVybiB7IG5vcm1hbGl6ZWQsIHR5cGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BlcnR5VmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBwcm9wZXJ0aWVzIHRoYXQgTVVTVCBiZSBzZXQgYXMgYXR0cmlidXRlcywgZHVlIHRvOlxuLy8gKiBicm93c2VyIGJ1Z1xuLy8gKiBzdHJhbmdlIHNwZWMgb3V0bGllclxuY29uc3QgQVRUUl9PVkVSUklERVMgPSB7XG5cbiAgLy8gcGhhbnRvbWpzIDwgMi4wIGxldHMgeW91IHNldCBpdCBhcyBhIHByb3AgYnV0IHdvbid0IHJlZmxlY3QgaXRcbiAgLy8gYmFjayB0byB0aGUgYXR0cmlidXRlLiBidXR0b24uZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09IG51bGxcbiAgQlVUVE9OOiB7IHR5cGU6IHRydWUsIGZvcm06IHRydWUgfSxcblxuICBJTlBVVDoge1xuICAgIC8vIFNvbWUgdmVyc2lvbiBvZiBJRSAobGlrZSBJRTkpIGFjdHVhbGx5IHRocm93IGFuIGV4Y2VwdGlvblxuICAgIC8vIGlmIHlvdSBzZXQgaW5wdXQudHlwZSA9ICdzb21ldGhpbmctdW5rbm93bidcbiAgICB0eXBlOiB0cnVlLFxuICAgIGZvcm06IHRydWUsXG4gICAgLy8gQ2hyb21lIDQ2LjAuMjQ2NC4wOiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IGZhbHNlXG4gICAgLy8gU2FmYXJpIDguMC43OiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IGZhbHNlXG4gICAgLy8gTW9iaWxlIFNhZmFyaSAoaU9TIDguNCBzaW11bGF0b3IpOiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IHRydWVcbiAgICBhdXRvY29ycmVjdDogdHJ1ZVxuICB9LFxuXG4gIC8vIGVsZW1lbnQuZm9ybSBpcyBhY3R1YWxseSBhIGxlZ2l0aW1hdGUgcmVhZE9ubHkgcHJvcGVydHksIHRoYXQgaXMgdG8gYmVcbiAgLy8gbXV0YXRlZCwgYnV0IG11c3QgYmUgbXV0YXRlZCBieSBzZXRBdHRyaWJ1dGUuLi5cbiAgU0VMRUNUOiAgIHsgZm9ybTogdHJ1ZSB9LFxuICBPUFRJT046ICAgeyBmb3JtOiB0cnVlIH0sXG4gIFRFWFRBUkVBOiB7IGZvcm06IHRydWUgfSxcbiAgTEFCRUw6ICAgIHsgZm9ybTogdHJ1ZSB9LFxuICBGSUVMRFNFVDogeyBmb3JtOiB0cnVlIH0sXG4gIExFR0VORDogICB7IGZvcm06IHRydWUgfSxcbiAgT0JKRUNUOiAgIHsgZm9ybTogdHJ1ZSB9XG59O1xuXG5mdW5jdGlvbiBwcmVmZXJBdHRyKHRhZ05hbWUsIHByb3BOYW1lKSB7XG4gIGxldCB0YWcgPSBBVFRSX09WRVJSSURFU1t0YWdOYW1lLnRvVXBwZXJDYXNlKCldO1xuICByZXR1cm4gdGFnICYmIHRhZ1twcm9wTmFtZS50b0xvd2VyQ2FzZSgpXSB8fCBmYWxzZTtcbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/dom/sanitized-values', ['exports', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-runtime/lib/upsert'], function (exports, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibUpsert) {
- 'use strict';
+ }
- exports.requiresSanitization = requiresSanitization;
- exports.sanitizeAttributeValue = sanitizeAttributeValue;
+ /**
+ Host Hook: get
+
+ @param {Environment} env
+ @param {Scope} scope
+ @param {String} path
+
+ Corresponds to:
+
+ ```hbs
+ {{foo.bar}}
+ ^
+
+ {{helper foo.bar key=value}}
+ ^ ^
+ ```
+
+ This hook is the "leaf" hook of the system. It is used to
+ resolve a path relative to the current scope.
+ */
- var badProtocols = ['javascript:', 'vbscript:'];
- var badTags = ['A', 'BODY', 'LINK', 'IMG', 'IFRAME', 'BASE', 'FORM'];
- var badTagsForDataURI = ['EMBED'];
- var badAttributes = ['href', 'src', 'background', 'action'];
- var badAttributesForDataURI = ['src'];
- function has(array, item) {
- return array.indexOf(item) !== -1;
+ function get(env, scope, path) {
+ if (path === '') {
+ return scope.self;
}
- function checkURI(tagName, attribute) {
- return (tagName === null || has(badTags, tagName)) && has(badAttributes, attribute);
- }
- function checkDataURI(tagName, attribute) {
- return has(badTagsForDataURI, tagName) && has(badAttributesForDataURI, attribute);
- }
- function requiresSanitization(tagName, attribute) {
- return checkURI(tagName, attribute) || checkDataURI(tagName, attribute);
- }
+ var keys = path.split('.');
+ var value = env.hooks.getRoot(scope, keys[0])[0];
- function sanitizeAttributeValue(env, element, attribute, value) {
- var tagName = undefined;
- if (value === null || value === undefined) {
- return value;
- }
- if (_glimmerRuntimeLibUpsert.isSafeString(value)) {
- return value.toHTML();
- }
- if (!element) {
- tagName = null;
- } else {
- tagName = element.tagName.toUpperCase();
- }
- var str = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value);
- if (checkURI(tagName, attribute)) {
- var protocol = env.protocolForURL(str);
- if (has(badProtocols, protocol)) {
- return 'unsafe:' + str;
- }
- }
- if (checkDataURI(tagName, attribute)) {
- return 'unsafe:' + str;
- }
- return str;
+ for (var i = 1; i < keys.length; i++) {
+ if (value) {
+ value = env.hooks.getChild(value, keys[i]);
+ } else {
+ break;
+ }
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Nhbml0aXplZC12YWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUEsUUFBTSxZQUFZLEdBQUcsQ0FDbkIsYUFBYSxFQUNiLFdBQVcsQ0FDWixDQUFDO0FBRUYsUUFBTSxPQUFPLEdBQUcsQ0FDZCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztBQUVGLFFBQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBTyxDQUNSLENBQUM7QUFFRixRQUFNLGFBQWEsR0FBRyxDQUNwQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixRQUFRLENBQ1QsQ0FBQztBQUVGLFFBQU0sdUJBQXVCLEdBQUcsQ0FDOUIsS0FBSyxDQUNOLENBQUM7QUFFRixhQUFBLEdBQUEsQ0FBYSxLQUFvQixFQUFFLElBQVksRUFBQTtBQUM3QyxlQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDbkM7QUFFRCxhQUFBLFFBQUEsQ0FBa0IsT0FBZSxFQUFFLFNBQWlCLEVBQUE7QUFDbEQsZUFBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQSxJQUFLLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDckY7QUFFRCxhQUFBLFlBQUEsQ0FBc0IsT0FBZSxFQUFFLFNBQWlCLEVBQUE7QUFDdEQsZUFBTyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ25GOztBQUVELGFBQUEsb0JBQUEsQ0FBcUMsT0FBZSxFQUFFLFNBQWlCLEVBQUE7QUFDckUsZUFBTyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDekU7O0FBRUQsYUFBQSxzQkFBQSxDQUF1QyxHQUFnQixFQUFFLE9BQXVCLEVBQUUsU0FBaUIsRUFBRSxLQUFhLEVBQUE7QUFDaEgsWUFBSSxPQUFPLFlBQUEsQ0FBQztBQUVaLFlBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ3pDLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBRUQsWUFBSSx5QkF6REcsWUFBWSxDQXlERixLQUFLLENBQUMsRUFBRTtBQUN2QixtQkFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7QUFFRCxZQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osbUJBQU8sR0FBRyxJQUFJLENBQUM7U0FDaEIsTUFBTTtBQUNMLG1CQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztBQUVELFlBQUksR0FBRyxHQUFHLHlDQXBFSCxrQkFBa0IsQ0FvRUksS0FBSyxDQUFDLENBQUM7QUFFcEMsWUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ2hDLGdCQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGdCQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDL0IsbUNBQWlCLEdBQUcsQ0FBRzthQUN4QjtTQUNGO0FBRUQsWUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ3BDLCtCQUFpQixHQUFHLENBQUc7U0FDeEI7QUFFRCxlQUFPLEdBQUcsQ0FBQztLQUNaIiwiZmlsZSI6InNhbml0aXplZC12YWx1ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgbm9ybWFsaXplVGV4dFZhbHVlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCB7IGlzU2FmZVN0cmluZyB9IGZyb20gJy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5jb25zdCBiYWRQcm90b2NvbHMgPSBbXG4gICdqYXZhc2NyaXB0OicsXG4gICd2YnNjcmlwdDonXG5dO1xuXG5jb25zdCBiYWRUYWdzID0gW1xuICAnQScsXG4gICdCT0RZJyxcbiAgJ0xJTksnLFxuICAnSU1HJyxcbiAgJ0lGUkFNRScsXG4gICdCQVNFJyxcbiAgJ0ZPUk0nXG5dO1xuXG5jb25zdCBiYWRUYWdzRm9yRGF0YVVSSSA9IFtcbiAgJ0VNQkVEJ1xuXTtcblxuY29uc3QgYmFkQXR0cmlidXRlcyA9IFtcbiAgJ2hyZWYnLFxuICAnc3JjJyxcbiAgJ2JhY2tncm91bmQnLFxuICAnYWN0aW9uJ1xuXTtcblxuY29uc3QgYmFkQXR0cmlidXRlc0ZvckRhdGFVUkkgPSBbXG4gICdzcmMnXG5dO1xuXG5mdW5jdGlvbiBoYXMoYXJyYXk6IEFycmF5PHN0cmluZz4sIGl0ZW06IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXJyYXkuaW5kZXhPZihpdGVtKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIGNoZWNrVVJJKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICh0YWdOYW1lID09PSBudWxsIHx8IGhhcyhiYWRUYWdzLCB0YWdOYW1lKSkgJiYgaGFzKGJhZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGF0YVVSSSh0YWdOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBoYXMoYmFkVGFnc0ZvckRhdGFVUkksIHRhZ05hbWUpICYmIGhhcyhiYWRBdHRyaWJ1dGVzRm9yRGF0YVVSSSwgYXR0cmlidXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSkgfHwgY2hlY2tEYXRhVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSk6IE9wYXF1ZSB7XG4gIGxldCB0YWdOYW1lO1xuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cblxuICBpZiAoIWVsZW1lbnQpIHtcbiAgICB0YWdOYW1lID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0YWdOYW1lID0gZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBsZXQgc3RyID0gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKTtcblxuICBpZiAoY2hlY2tVUkkodGFnTmFtZSwgYXR0cmlidXRlKSkge1xuICAgIGxldCBwcm90b2NvbCA9IGVudi5wcm90b2NvbEZvclVSTChzdHIpO1xuICAgIGlmIChoYXMoYmFkUHJvdG9jb2xzLCBwcm90b2NvbCkpIHtcbiAgICAgIHJldHVybiBgdW5zYWZlOiR7c3RyfWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrRGF0YVVSSSh0YWdOYW1lLCBhdHRyaWJ1dGUpKSB7XG4gICAgcmV0dXJuIGB1bnNhZmU6JHtzdHJ9YDtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG4iXX0=
-enifed('glimmer-runtime/lib/environment', ['exports', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/dom/attribute-managers', 'glimmer-util', 'glimmer-runtime/lib/syntax/core', 'glimmer-runtime/lib/syntax/builtins/if', 'glimmer-runtime/lib/syntax/builtins/unless', 'glimmer-runtime/lib/syntax/builtins/with', 'glimmer-runtime/lib/syntax/builtins/each'], function (exports, _glimmerRuntimeLibReferences, _glimmerRuntimeLibDomAttributeManagers, _glimmerUtil, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibSyntaxBuiltinsIf, _glimmerRuntimeLibSyntaxBuiltinsUnless, _glimmerRuntimeLibSyntaxBuiltinsWith, _glimmerRuntimeLibSyntaxBuiltinsEach) {
- 'use strict';
- var Scope = (function () {
- function Scope(references) {
- var callerScope = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
+ return value;
+ }
- this.callerScope = null;
- this.slots = references;
- this.callerScope = callerScope;
- }
-
- Scope.root = function root(self) {
- var size = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
-
- var refs = new Array(size + 1);
- for (var i = 0; i <= size; i++) {
- refs[i] = _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE;
- }
- return new Scope(refs).init({ self: self });
- };
-
- Scope.prototype.init = function init(_ref) {
- var self = _ref.self;
-
- this.slots[0] = self;
- return this;
- };
-
- Scope.prototype.getSelf = function getSelf() {
- return this.slots[0];
- };
-
- Scope.prototype.getSymbol = function getSymbol(symbol) {
- return this.slots[symbol];
- };
-
- Scope.prototype.getBlock = function getBlock(symbol) {
- return this.slots[symbol];
- };
-
- Scope.prototype.bindSymbol = function bindSymbol(symbol, value) {
- this.slots[symbol] = value;
- };
-
- Scope.prototype.bindBlock = function bindBlock(symbol, value) {
- this.slots[symbol] = value;
- };
-
- Scope.prototype.bindCallerScope = function bindCallerScope(scope) {
- this.callerScope = scope;
- };
-
- Scope.prototype.getCallerScope = function getCallerScope() {
- return this.callerScope;
- };
-
- Scope.prototype.child = function child() {
- return new Scope(this.slots.slice(), this.callerScope);
- };
-
- return Scope;
- })();
-
- exports.Scope = Scope;
-
- var Environment = (function () {
- function Environment(_ref2) {
- var appendOperations = _ref2.appendOperations;
- var updateOperations = _ref2.updateOperations;
-
- this.scheduledInstallManagers = null;
- this.scheduledInstallModifiers = null;
- this.scheduledUpdateModifierManagers = null;
- this.scheduledUpdateModifiers = null;
- this.createdComponents = null;
- this.createdManagers = null;
- this.updatedComponents = null;
- this.updatedManagers = null;
- this.destructors = null;
- this.appendOperations = appendOperations;
- this.updateOperations = updateOperations;
- }
-
- Environment.prototype.toConditionalReference = function toConditionalReference(reference) {
- return new _glimmerRuntimeLibReferences.ConditionalReference(reference);
- };
-
- Environment.prototype.getAppendOperations = function getAppendOperations() {
- return this.appendOperations;
- };
-
- Environment.prototype.getDOM = function getDOM() {
- return this.updateOperations;
- };
-
- Environment.prototype.getIdentity = function getIdentity(object) {
- return _glimmerUtil.ensureGuid(object) + '';
- };
-
- Environment.prototype.statement = function statement(_statement, symbolTable) {
- return this.refineStatement(parseStatement(_statement), symbolTable) || _statement;
- };
-
- Environment.prototype.refineStatement = function refineStatement(statement, symbolTable) {
- var isSimple = statement.isSimple;
- var isBlock = statement.isBlock;
- var key = statement.key;
- var args = statement.args;
- var templates = statement.templates;
-
- if (isSimple && isBlock) {
- switch (key) {
- case 'each':
- return new _glimmerRuntimeLibSyntaxBuiltinsEach.default({ args: args, templates: templates });
- case 'if':
- return new _glimmerRuntimeLibSyntaxBuiltinsIf.default({ args: args, templates: templates });
- case 'with':
- return new _glimmerRuntimeLibSyntaxBuiltinsWith.default({ args: args, templates: templates });
- case 'unless':
- return new _glimmerRuntimeLibSyntaxBuiltinsUnless.default({ args: args, templates: templates });
- }
- }
- };
-
- Environment.prototype.begin = function begin() {
- this.createdComponents = [];
- this.createdManagers = [];
- this.updatedComponents = [];
- this.updatedManagers = [];
- this.destructors = [];
- this.scheduledInstallManagers = [];
- this.scheduledInstallModifiers = [];
- this.scheduledUpdateModifierManagers = [];
- this.scheduledUpdateModifiers = [];
- };
-
- Environment.prototype.didCreate = function didCreate(component, manager) {
- this.createdComponents.push(component);
- this.createdManagers.push(manager);
- };
-
- Environment.prototype.didUpdate = function didUpdate(component, manager) {
- this.updatedComponents.push(component);
- this.updatedManagers.push(manager);
- };
-
- Environment.prototype.scheduleInstallModifier = function scheduleInstallModifier(modifier, manager) {
- this.scheduledInstallManagers.push(manager);
- this.scheduledInstallModifiers.push(modifier);
- };
-
- Environment.prototype.scheduleUpdateModifier = function scheduleUpdateModifier(modifier, manager) {
- this.scheduledUpdateModifierManagers.push(manager);
- this.scheduledUpdateModifiers.push(modifier);
- };
-
- Environment.prototype.didDestroy = function didDestroy(d) {
- this.destructors.push(d);
- };
-
- Environment.prototype.commit = function commit() {
- for (var i = 0; i < this.createdComponents.length; i++) {
- var component = this.createdComponents[i];
- var manager = this.createdManagers[i];
- manager.didCreate(component);
- }
- for (var i = 0; i < this.updatedComponents.length; i++) {
- var component = this.updatedComponents[i];
- var manager = this.updatedManagers[i];
- manager.didUpdate(component);
- }
- for (var i = 0; i < this.destructors.length; i++) {
- this.destructors[i].destroy();
- }
- for (var i = 0; i < this.scheduledInstallManagers.length; i++) {
- var manager = this.scheduledInstallManagers[i];
- var modifier = this.scheduledInstallModifiers[i];
- manager.install(modifier);
- }
- for (var i = 0; i < this.scheduledUpdateModifierManagers.length; i++) {
- var manager = this.scheduledUpdateModifierManagers[i];
- var modifier = this.scheduledUpdateModifiers[i];
- manager.update(modifier);
- }
- this.createdComponents = null;
- this.createdManagers = null;
- this.updatedComponents = null;
- this.updatedManagers = null;
- this.destructors = null;
- this.scheduledInstallManagers = null;
- this.scheduledInstallModifiers = null;
- this.scheduledUpdateModifierManagers = null;
- this.scheduledUpdateModifiers = null;
- };
-
- Environment.prototype.attributeFor = function attributeFor(element, attr, isTrusting, namespace) {
- return _glimmerRuntimeLibDomAttributeManagers.defaultManagers(element, attr, isTrusting, namespace);
- };
-
- return Environment;
- })();
-
- exports.Environment = Environment;
- exports.default = Environment;
-
- function parseStatement(statement) {
- var type = statement.type;
- var block = type === 'block' ? statement : null;
- var append = type === 'optimized-append' ? statement : null;
- var modifier = type === 'modifier' ? statement : null;
- var appendType = append && append.value.type;
- var args = undefined;
- var path = undefined;
- if (block) {
- args = block.args;
- path = block.path;
- } else if (append && (appendType === 'unknown' || appendType === 'get')) {
- var appendValue = append.value;
- args = _glimmerRuntimeLibSyntaxCore.Args.empty();
- path = appendValue.ref.parts;
- } else if (append && append.value.type === 'helper') {
- var helper = append.value;
- args = helper.args;
- path = helper.ref.parts;
- } else if (modifier) {
- path = modifier.path;
- args = modifier.args;
- }
- var key = undefined,
- isSimple = undefined;
- if (path) {
- isSimple = path.length === 1;
- key = path[0];
- }
- return {
- isSimple: isSimple,
- path: path,
- key: key,
- args: args,
- appendType: appendType,
- original: statement,
- isInline: !!append,
- isBlock: !!block,
- isModifier: !!modifier,
- templates: block && block.templates
- };
+ function getRoot(scope, key) {
+ if (scope.localPresent[key]) {
+ return [scope.locals[key]];
+ } else if (scope.self) {
+ return [scope.self[key]];
+ } else {
+ return [undefined];
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBMkRBLEtBQUE7QUFlRSxpQkFmRixLQUFBLENBZWMsVUFBdUIsRUFBMkI7Z0JBQXpCLFdBQVcseURBQVUsSUFBSTs7QUFGdEQsZ0JBQUEsQ0FBQSxXQUFXLEdBQVUsSUFBSSxDQUFDO0FBR2hDLGdCQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztBQUN4QixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDaEM7O0FBbEJILGFBQUEsQ0FDUyxJQUFJLEdBQUEsY0FBQyxJQUEyQixFQUFVO2dCQUFSLElBQUkseURBQUcsQ0FBQzs7QUFDL0MsZ0JBQUksSUFBSSxHQUE0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsb0JBQUksQ0FBQyxDQUFDLENBQUMsZ0NBekRKLG1CQUFtQixBQXlETyxDQUFDO2FBQy9CO0FBRUQsbUJBQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdkM7O0FBVEgsYUFBQSxXQW9CRSxJQUFJLEdBQUEsY0FBQyxJQUF5QyxFQUFBO2dCQUF2QyxJQUFJLEdBQU4sSUFBeUMsQ0FBdkMsSUFBSTs7QUFDVCxnQkFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBdkJILGFBQUEsV0F5QkUsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQTBCLENBQUM7U0FDL0M7O0FBM0JILGFBQUEsV0E2QkUsU0FBUyxHQUFBLG1CQUFD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Q0FBQyxJQUFJLENBQUM7U0FDdEI7QUFFRCxZQUFJLEdBQVcsWUFBQTtZQUFFLFFBQWlCLFlBQUEsQ0FBQztBQUVuQyxZQUFJLElBQUksRUFBRTtBQUNSLG9CQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0IsZUFBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNmO0FBRUQsZUFBTztBQUNMLG9CQUFRLEVBQVIsUUFBUTtBQUNSLGdCQUFJLEVBQUosSUFBSTtBQUNKLGVBQUcsRUFBSCxHQUFHO0FBQ0gsZ0JBQUksRUFBSixJQUFJO0FBQ0osc0JBQVUsRUFBVixVQUFVO0FBQ1Ysb0JBQVEsRUFBRSxTQUFTO0FBQ25CLG9CQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDbEIsbUJBQU8sRUFBRSxDQUFDLENBQUMsS0FBSztBQUNoQixzQkFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRO0FBQ3RCLHFCQUFTLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTO1NBQ3BDLENBQUM7S0FDTCIsImZpbGUiOiJlbnZpcm9ubWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXggfSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5cbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlLCBPcGFxdWVJdGVyYWJsZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IFVOREVGSU5FRF9SRUZFUkVOQ0UsIENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRNYW5hZ2VycyxcbiAgQXR0cmlidXRlTWFuYWdlclxufSBmcm9tICcuL2RvbS9hdHRyaWJ1dGUtbWFuYWdlcnMnO1xuXG5pbXBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL3BhcnRpYWwnO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBEZXN0cm95YWJsZSxcbiAgT3BhcXVlLFxuICBIYXNHdWlkLFxuICBlbnN1cmVHdWlkXG59IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5cbmltcG9ydCB7IElubGluZUJsb2NrIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi9zeW50YXgvY29yZSc7XG5cbmltcG9ydCBJZlN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy9pZic7XG5pbXBvcnQgVW5sZXNzU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL3VubGVzcyc7XG5pbXBvcnQgV2l0aFN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy93aXRoJztcbmltcG9ydCBFYWNoU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL2VhY2gnO1xuXG5pbXBvcnQgeyBQdWJsaWNWTSB9IGZyb20gJy4vdm0vYXBwZW5kJztcblxuZXhwb3J0IHR5cGUgU2NvcGVTbG90ID0gUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHwgSW5saW5lQmxvY2s7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1Njb3BlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBjaGlsZCgpOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHN0YXRpYyByb290KHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgc2l6ZSA9IDApIHtcbiAgICBsZXQgcmVmczogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkoc2l6ZSArIDEpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2l6ZTsgaSsrKSB7XG4gICAgICByZWZzW2ldID0gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgLy8gdGhlIDB0aCBzbG90IGlzIGBzZWxmYFxuICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXTtcbiAgcHJpdmF0ZSBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlZmVyZW5jZXM6IFNjb3BlU2xvdFtdLCBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsKSB7XG4gICAgdGhpcy5zbG90cyA9IHJlZmVyZW5jZXM7XG4gICAgdGhpcy5jYWxsZXJTY29wZSA9IGNhbGxlclNjb3BlO1xuICB9XG5cbiAgaW5pdCh7IHNlbGYgfTogeyBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4gfSk6IHRoaXMge1xuICAgIHRoaXMuc2xvdHNbMF0gPSBzZWxmO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLnNsb3RzWzBdIGFzIFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgfVxuXG4gIGdldFN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2xvdHNbc3ltYm9sXSBhcyBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIH1cblxuICBnZXRCbG9jayhzeW1ib2w6IG51bWJlcik6IElubGluZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5zbG90c1tzeW1ib2xdIGFzIElubGluZUJsb2NrO1xuICB9XG5cbiAgYmluZFN5bWJvbChzeW1ib2w6IG51bWJlciwgdmFsdWU6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuc2xvdHNbc3ltYm9sXSA9IHZhbHVlO1xuICB9XG5cbiAgYmluZEJsb2NrKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogSW5saW5lQmxvY2spIHtcbiAgICB0aGlzLnNsb3RzW3N5bWJvbF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGJpbmRDYWxsZXJTY29wZShzY29wZTogU2NvcGUpIHtcbiAgICB0aGlzLmNhbGxlclNjb3BlID0gc2NvcGU7XG4gIH1cblxuICBnZXRDYWxsZXJTY29wZSgpOiBTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbGVyU2NvcGU7XG4gIH1cblxuICBjaGlsZCgpOiBTY29wZSB7XG4gICAgcmV0dXJuIG5ldyBTY29wZSh0aGlzLnNsb3RzLnNsaWNlKCksIHRoaXMuY2FsbGVyU2NvcGUpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByb3RlY3RlZCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzO1xuICBwcm90ZWN0ZWQgYXBwZW5kT3BlcmF0aW9uczogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHJpdmF0ZSBzY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnM6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+W10gPSBudWxsO1xuICBwcml2YXRlIHNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnM6IE9iamVjdFtdID0gbnVsbDtcbiAgcHJpdmF0ZSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gbnVsbDtcbiAgcHJpdmF0ZSBzY2hlZHVsZWRVcGRhdGVNb2RpZmllcnM6IE9iamVjdFtdID0gbnVsbDtcbiAgcHJpdmF0ZSBjcmVhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBudWxsO1xuICBwcml2YXRlIGNyZWF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBudWxsO1xuICBwcml2YXRlIHVwZGF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IG51bGw7XG4gIHByaXZhdGUgdXBkYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IG51bGw7XG4gIHByaXZhdGUgZGVzdHJ1Y3RvcnM6IERlc3Ryb3lhYmxlW10gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXBwZW5kT3BlcmF0aW9ucywgdXBkYXRlT3BlcmF0aW9ucyB9OiB7IGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb24sIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXMgfSkge1xuICAgIHRoaXMuYXBwZW5kT3BlcmF0aW9ucyA9IGFwcGVuZE9wZXJhdGlvbnM7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gdXBkYXRlT3BlcmF0aW9ucztcbiAgfVxuXG4gIHRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgaXRlcmFibGVGb3IocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgYXJnczogRXZhbHVhdGVkQXJncyk6IE9wYXF1ZUl0ZXJhYmxlO1xuICBhYnN0cmFjdCBwcm90b2NvbEZvclVSTChzOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZ2V0QXBwZW5kT3BlcmF0aW9ucygpOiBET01UcmVlQ29uc3RydWN0aW9uIHsgcmV0dXJuIHRoaXMuYXBwZW5kT3BlcmF0aW9uczsgfVxuICBnZXRET00oKTogRE9NQ2hhbmdlcyB7IHJldHVybiB0aGlzLnVwZGF0ZU9wZXJhdGlvbnM7IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbnN1cmVHdWlkKG9iamVjdCkgKyAnJztcbiAgfVxuXG4gIHN0YXRlbWVudChzdGF0ZW1lbnQ6IFN0YXRlbWVudFN5bnRheCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICByZXR1cm4gdGhpcy5yZWZpbmVTdGF0ZW1lbnQocGFyc2VTdGF0ZW1lbnQoc3RhdGVtZW50KSwgc3ltYm9sVGFibGUpIHx8IHN0YXRlbWVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWZpbmVTdGF0ZW1lbnQoc3RhdGVtZW50OiBQYXJzZWRTdGF0ZW1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IFN0YXRlbWVudFN5bnRheCB7XG4gICAgbGV0IHtcbiAgICAgIGlzU2ltcGxlLFxuICAgICAgaXNCbG9jayxcbiAgICAgIGtleSxcbiAgICAgIGFyZ3MsXG4gICAgICB0ZW1wbGF0ZXNcbiAgICB9ID0gc3RhdGVtZW50O1xuXG4gICAgaWYgKGlzU2ltcGxlICYmIGlzQmxvY2spIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ2VhY2gnOlxuICAgICAgICAgIHJldHVybiBuZXcgRWFjaFN5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgICAgY2FzZSAnaWYnOlxuICAgICAgICAgIHJldHVybiBuZXcgSWZTeW50YXgoeyBhcmdzLCB0ZW1wbGF0ZXMgfSk7XG4gICAgICAgIGNhc2UgJ3dpdGgnOlxuICAgICAgICAgIHJldHVybiBuZXcgV2l0aFN5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgICAgY2FzZSAndW5sZXNzJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFVubGVzc1N5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBiZWdpbigpIHtcbiAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzID0gW107XG4gICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gW107XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLmRlc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyA9IFtdO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQgYXMgYW55KTtcbiAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIgYXMgYW55KTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50IGFzIGFueSk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyIGFzIGFueSk7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuY3JlYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB0aGlzLmNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMudXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLnVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB0aGlzLnVwZGF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZGVzdHJ1Y3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLmluc3RhbGwobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMgPSBudWxsO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZWRNYW5hZ2VycyA9IG51bGw7XG4gICAgdGhpcy5kZXN0cnVjdG9ycyA9IG51bGw7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMgPSBudWxsO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyA9IG51bGw7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzID0gbnVsbDtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyA9IG51bGw7XG4gIH1cblxuICBhdHRyaWJ1dGVGb3IoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlPzogc3RyaW5nKTogQXR0cmlidXRlTWFuYWdlciB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYW5hZ2VycyhlbGVtZW50LCBhdHRyLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgaGFzSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZ1tdLCBibG9ja01ldGE6IFRlbXBsYXRlTWV0YSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cEhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmdbXSwgYmxvY2tNZXRhOiBUZW1wbGF0ZU1ldGEpOiBIZWxwZXI7XG5cbiAgYWJzdHJhY3QgaGFzTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmdbXSwgYmxvY2tNZXRhOiBUZW1wbGF0ZU1ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZ1tdLCBibG9ja01ldGE6IFRlbXBsYXRlTWV0YSk6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc0NvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nW10sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldENvbXBvbmVudERlZmluaXRpb24odGFnTmFtZTogc3RyaW5nW10sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPjtcblxuICBhYnN0cmFjdCBoYXNQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGxvb2t1cFBhcnRpYWwoUGFydGlhbE5hbWU6IHN0cmluZywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGFydGlhbERlZmluaXRpb248VGVtcGxhdGVNZXRhPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRW52aXJvbm1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIHtcbiAgKHZtOiBQdWJsaWNWTSwgYXJnczogRXZhbHVhdGVkQXJncywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFN0YXRlbWVudCB7XG4gIGlzU2ltcGxlOiBib29sZWFuO1xuICBwYXRoOiBzdHJpbmdbXTtcbiAga2V5OiBzdHJpbmc7XG4gIGFwcGVuZFR5cGU6IHN0cmluZztcbiAgYXJnczogU3ludGF4LkFyZ3M7XG4gIGlzSW5saW5lOiBib29sZWFuO1xuICBpc0Jsb2NrOiBib29sZWFuO1xuICBpc01vZGlmaWVyOiBib29sZWFuO1xuICB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIG9yaWdpbmFsOiBTdGF0ZW1lbnRTeW50YXg7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4KTogUGFyc2VkU3RhdGVtZW50IHtcbiAgICBsZXQgdHlwZSA9IHN0YXRlbWVudC50eXBlO1xuICAgIGxldCBibG9jayA9IHR5cGUgPT09ICdibG9jaycgPyA8U3ludGF4LkJsb2NrPnN0YXRlbWVudCA6IG51bGw7XG4gICAgbGV0IGFwcGVuZCA9IHR5cGUgPT09ICdvcHRpbWl6ZWQtYXBwZW5kJyA/IDxTeW50YXguT3B0aW1pemVkQXBwZW5kPnN0YXRlbWVudCA6IG51bGw7XG4gICAgbGV0IG1vZGlmaWVyID0gdHlwZSA9PT0gJ21vZGlmaWVyJyA/IDxTeW50YXguTW9kaWZpZXI+c3RhdGVtZW50IDogbnVsbDtcbiAgICBsZXQgYXBwZW5kVHlwZSA9IGFwcGVuZCAmJiBhcHBlbmQudmFsdWUudHlwZTtcblxuICAgIHR5cGUgQXBwZW5kVmFsdWUgPSBTeW50YXguVW5rbm93biB8IFN5bnRheC5HZXQ7XG4gICAgbGV0IGFyZ3M6IFN5bnRheC5BcmdzO1xuICAgIGxldCBwYXRoOiBzdHJpbmdbXTtcblxuICAgIGlmIChibG9jaykge1xuICAgICAgYXJncyA9IGJsb2NrLmFyZ3M7XG4gICAgICBwYXRoID0gYmxvY2sucGF0aDtcbiAgICB9IGVsc2UgaWYgKGFwcGVuZCAmJiAoYXBwZW5kVHlwZSA9PT0gJ3Vua25vd24nIHx8IGFwcGVuZFR5cGUgPT09ICdnZXQnKSkge1xuICAgICAgbGV0IGFwcGVuZFZhbHVlID0gPEFwcGVuZFZhbHVlPmFwcGVuZC52YWx1ZTtcbiAgICAgIGFyZ3MgPSBTeW50YXguQXJncy5lbXB0eSgpO1xuICAgICAgcGF0aCA9IGFwcGVuZFZhbHVlLnJlZi5wYXJ0cztcbiAgICB9IGVsc2UgaWYgKGFwcGVuZCAmJiBhcHBlbmQudmFsdWUudHlwZSA9PT0gJ2hlbHBlcicpIHtcbiAgICAgIGxldCBoZWxwZXIgPSA8U3ludGF4LkhlbHBlcj5hcHBlbmQudmFsdWU7XG4gICAgICBhcmdzID0gaGVscGVyLmFyZ3M7XG4gICAgICBwYXRoID0gaGVscGVyLnJlZi5wYXJ0cztcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyKSB7XG4gICAgICBwYXRoID0gbW9kaWZpZXIucGF0aDtcbiAgICAgIGFyZ3MgPSBtb2RpZmllci5hcmdzO1xuICAgIH1cblxuICAgIGxldCBrZXk6IHN0cmluZywgaXNTaW1wbGU6IGJvb2xlYW47XG5cbiAgICBpZiAocGF0aCkge1xuICAgICAgaXNTaW1wbGUgPSBwYXRoLmxlbmd0aCA9PT0gMTtcbiAgICAgIGtleSA9IHBhdGhbMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU2ltcGxlLFxuICAgICAgcGF0aCxcbiAgICAgIGtleSxcbiAgICAgIGFyZ3MsXG4gICAgICBhcHBlbmRUeXBlLFxuICAgICAgb3JpZ2luYWw6IHN0YXRlbWVudCxcbiAgICAgIGlzSW5saW5lOiAhIWFwcGVuZCxcbiAgICAgIGlzQmxvY2s6ICEhYmxvY2ssXG4gICAgICBpc01vZGlmaWVyOiAhIW1vZGlmaWVyLFxuICAgICAgdGVtcGxhdGVzOiBibG9jayAmJiBibG9jay50ZW1wbGF0ZXNcbiAgICB9O1xufVxuIl19
-enifed('glimmer-runtime/lib/helpers/get-dynamic-var', ['exports', 'glimmer-reference'], function (exports, _glimmerReference) {
- 'use strict';
+ }
- var DynamicVarReference = (function () {
- function DynamicVarReference(scope, nameRef) {
- this.scope = scope;
- this.nameRef = nameRef;
- var varTag = this.varTag = new _glimmerReference.UpdatableTag(_glimmerReference.CONSTANT_TAG);
- this.tag = _glimmerReference.combine([nameRef.tag, varTag]);
- }
+ function getBlock(scope, key) {
+ return scope.blocks[key];
+ }
- DynamicVarReference.prototype.value = function value() {
- return this.getVar().value();
- };
+ function getChild(value, key) {
+ return value[key];
+ }
- DynamicVarReference.prototype.get = function get(key) {
- return this.getVar().get(key);
- };
+ function getValue(reference) {
+ return reference;
+ }
- DynamicVarReference.prototype.getVar = function getVar() {
- var name = String(this.nameRef.value());
- var ref = this.scope.get(name);
- this.varTag.update(ref.tag);
- return ref;
- };
+ function getCellOrValue(reference) {
+ return reference;
+ }
- return DynamicVarReference;
- })();
-
- function getDynamicVar(vm, args, symbolTable) {
- var scope = vm.dynamicScope();
- var nameRef = args.positional.at(0);
- return new DynamicVarReference(scope, nameRef);
+ function component(morph, env, scope, tagName, params, attrs, templates, visitor) {
+ if (env.hooks.hasHelper(env, scope, tagName)) {
+ return env.hooks.block(morph, env, scope, tagName, params, attrs, templates.default, templates.inverse, visitor);
}
- exports.default = getDynamicVar;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvaGVscGVycy9nZXQtZHluYW1pYy12YXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBT0EsbUJBQUE7QUFJRSxpQkFKRixtQkFBQSxDQUlzQixLQUFtQixFQUFVLE9BQThCLEVBQUE7QUFBM0QsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFjO0FBQVUsZ0JBQUEsQ0FBQSxPQUFPLEdBQVAsT0FBTyxDQUF1QjtBQUM3RSxnQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFSb0IsWUFBWSxtQkFBdEQsWUFBWSxDQVF3QyxDQUFDO0FBQzFELGdCQUFJLENBQUMsR0FBRyxHQUFHLGtCQVRrRCxPQUFPLENBU2pELENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQzNDOztBQVBILDJCQUFBLFdBU0UsS0FBSyxHQUFBLGlCQUFBO0FBQ0gsbUJBQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzlCOztBQVhILDJCQUFBLFdBYUUsR0FBRyxHQUFBLGFBQUMsR0FBVyxFQUFBO0FBQ2IsbUJBQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQjs7QUFmSCwyQkFBQSxXQWlCVSxNQUFNLEdBQUEsa0JBQUE7QUFDWixnQkFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN4QyxnQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFL0IsZ0JBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU1QixtQkFBTyxHQUFHLENBQUM7U0FDWjs7ZUF4QkgsbUJBQUE7OztBQTJCQSxhQUFBLGFBQUEsQ0FBdUIsRUFBWSxFQUFFLElBQW1CLEVBQUUsV0FBd0IsRUFBQTtBQUNoRixZQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDOUIsWUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFcEMsZUFBTyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNoRDtzQkFFZSxhQUF3QiIsImZpbGUiOiJnZXQtZHluYW1pYy12YXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWxwZXIsIER5bmFtaWNTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi4vdm0vYXBwZW5kJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi9zeW1ib2wtdGFibGUnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZXZpc2lvblRhZywgUGF0aFJlZmVyZW5jZSwgVXBkYXRhYmxlVGFnLCBjb21iaW5lIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuY2xhc3MgRHluYW1pY1ZhclJlZmVyZW5jZSBpbXBsZW1lbnRzIFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuICBwcml2YXRlIHZhclRhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NvcGU6IER5bmFtaWNTY29wZSwgcHJpdmF0ZSBuYW1lUmVmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICBsZXQgdmFyVGFnID0gdGhpcy52YXJUYWcgPSBuZXcgVXBkYXRhYmxlVGFnKENPTlNUQU5UX1RBRyk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lKFtuYW1lUmVmLnRhZywgdmFyVGFnXSk7XG4gIH1cblxuICB2YWx1ZSgpOiBPcGFxdWUge1xuICAgIHJldHVybiB0aGlzLmdldFZhcigpLnZhbHVlKCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhcigpLmdldChrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXIoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICBsZXQgbmFtZSA9IFN0cmluZyh0aGlzLm5hbWVSZWYudmFsdWUoKSk7XG4gICAgbGV0IHJlZiA9IHRoaXMuc2NvcGUuZ2V0KG5hbWUpO1xuXG4gICAgdGhpcy52YXJUYWcudXBkYXRlKHJlZi50YWcpO1xuXG4gICAgcmV0dXJuIHJlZjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREeW5hbWljVmFyKHZtOiBQdWJsaWNWTSwgYXJnczogRXZhbHVhdGVkQXJncywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgbGV0IHNjb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gIGxldCBuYW1lUmVmID0gYXJncy5wb3NpdGlvbmFsLmF0KDApO1xuXG4gIHJldHVybiBuZXcgRHluYW1pY1ZhclJlZmVyZW5jZShzY29wZSwgbmFtZVJlZik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IChnZXREeW5hbWljVmFyIGFzIEhlbHBlcik7XG4iXX0=
-enifed("glimmer-runtime/lib/modifier/interfaces", ["exports"], function (exports) {
- "use strict";
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvbW9kaWZpZXIvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImludGVyZmFjZXMuanMiLCJzb3VyY2VzQ29udGVudCI6W119
-enifed("glimmer-runtime/lib/opcode-builder", ["exports"], function (exports) {
- "use strict";
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvb3Bjb2RlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJvcGNvZGUtYnVpbGRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbXX0=
-enifed('glimmer-runtime/lib/opcodes', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) {
- 'use strict';
- exports.inspect = inspect;
+ componentFallback(morph, env, scope, tagName, attrs, templates.default);
+ }
- var AbstractOpcode = (function () {
- function AbstractOpcode() {
- _glimmerUtil.initializeGuid(this);
- }
-
- AbstractOpcode.prototype.toJSON = function toJSON() {
- return { guid: this._guid, type: this.type };
- };
-
- return AbstractOpcode;
- })();
-
- exports.AbstractOpcode = AbstractOpcode;
-
- var Opcode = (function (_AbstractOpcode) {
- babelHelpers.inherits(Opcode, _AbstractOpcode);
-
- function Opcode() {
- _AbstractOpcode.apply(this, arguments);
- this.next = null;
- this.prev = null;
- }
-
- return Opcode;
- })(AbstractOpcode);
-
- exports.Opcode = Opcode;
-
- var UpdatingOpcode = (function (_AbstractOpcode2) {
- babelHelpers.inherits(UpdatingOpcode, _AbstractOpcode2);
-
- function UpdatingOpcode() {
- _AbstractOpcode2.apply(this, arguments);
- this.next = null;
- this.prev = null;
- }
-
- return UpdatingOpcode;
- })(AbstractOpcode);
-
- exports.UpdatingOpcode = UpdatingOpcode;
-
- function inspect(opcodes) {
- var buffer = [];
- opcodes.toArray().forEach(function (opcode, i) {
- _inspect(opcode.toJSON(), buffer, 0, i);
- });
- return buffer.join('');
+ function concat(env, params) {
+ var value = "";
+ for (var i = 0, l = params.length; i < l; i++) {
+ value += env.hooks.getValue(params[i]);
}
+ return value;
+ }
- function _inspect(opcode, buffer, level, index) {
- var indentation = [];
- for (var i = 0; i < level; i++) {
- indentation.push(' ');
- }
- buffer.push.apply(buffer, indentation);
- buffer.push(index + 1 + '. ' + opcode.type.toUpperCase());
- if (opcode.args || opcode.details) {
- buffer.push('(');
- if (opcode.args) {
- buffer.push(opcode.args.join(', '));
- }
- if (opcode.details) {
- var keys = Object.keys(opcode.details);
- if (keys.length) {
- if (opcode.args && opcode.args.length) {
- buffer.push(', ');
- }
- buffer.push(keys.map(function (key) {
- return key + '=' + opcode.details[key];
- }).join(', '));
- }
- }
- buffer.push(')');
- }
- buffer.push('\n');
- if (opcode.children && opcode.children.length) {
- for (var i = 0; i < opcode.children.length; i++) {
- _inspect(opcode.children[i], buffer, level + 1, i);
- }
- }
+ function componentFallback(morph, env, scope, tagName, attrs, template) {
+ var element = env.dom.createElement(tagName);
+ for (var name in attrs) {
+ element.setAttribute(name, env.hooks.getValue(attrs[name]));
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvb3Bjb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQWFBLGNBQUE7QUFPRSxpQkFQRixjQUFBLEdBT0U7QUFDRSx5QkFyQjhDLGNBQWMsQ0FxQjdDLElBQUksQ0FBQyxDQUFDO1NBQ3RCOztBQVRILHNCQUFBLFdBV0UsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlDOztlQWJILGNBQUE7Ozs7O1FBZ0JBLE1BQUE7OEJBQUEsTUFBQTs7QUFBQSxpQkFBQSxNQUFBLEdBQUE7QUFBcUMsd0NBQUEsU0FBQSxDQUFBLENBQWM7QUFDakQsZ0JBQUEsQ0FBQSxJQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLGdCQUFBLENBQUEsSUFBSSxHQUFXLElBQUksQ0FBQztTQUdyQjs7ZUFMRCxNQUFBO09BQXFDLGNBQWM7Ozs7UUFVbkQsY0FBQTs4QkFBQSxjQUFBOztBQUFBLGlCQUFBLGNBQUEsR0FBQTtBQUE2Qyx5Q0FBQSxTQUFBLENBQUEsQ0FBYztBQUd6RCxnQkFBQSxDQUFBLElBQUksR0FBbUIsSUFBSSxDQUFDO0FBQzVCLGdCQUFBLENBQUEsSUFBSSxHQUFtQixJQUFJLENBQUM7U0FHN0I7O2VBUEQsY0FBQTtPQUE2QyxjQUFjOzs7O0FBZTNELGFBQUEsT0FBQSxDQUF3QixPQUFtQyxFQUFBO0FBQ3pELFlBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUVoQixlQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQTtBQUNsQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztBQUVILGVBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4Qjs7QUFFRCxhQUFBLFFBQUEsQ0FBa0IsTUFBa0IsRUFBRSxNQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUE7QUFDbEYsWUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXJCLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUIsdUJBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7QUFFRCxjQUFNLENBQUMsSUFBSSxNQUFBLENBQVgsTUFBTSxFQUFTLFdBQVcsQ0FBQyxDQUFDO0FBQzVCLGNBQU0sQ0FBQyxJQUFJLENBQUksS0FBSyxHQUFDLENBQUMsVUFBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFHLENBQUM7QUFFeEQsWUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDakMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFakIsZ0JBQUksTUFBTSxDQUFDLElBQUksRUFBRTtBQUNmLHNCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDckM7QUFFRCxnQkFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQ2xCLG9CQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV2QyxvQkFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2Ysd0JBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQyw4QkFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbkI7QUFFRCwwQkFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRzsrQkFBTyxHQUFHLFNBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7cUJBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUMxRTthQUNGO0FBRUQsa0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7QUFFRCxjQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWxCLFlBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM3QyxpQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNDLHdCQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNsRDtTQUNGO0tBQ0YiLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3QsIExpbmtlZExpc3QsIExpbmtlZExpc3ROb2RlLCBTbGljZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUmV2aXNpb25UYWcgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4vdm0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wY29kZUpTT04ge1xuICBndWlkOiBudW1iZXI7XG4gIHR5cGU6IHN0cmluZztcbiAgZGVvcHRlZD86IGJvb2xlYW47XG4gIGFyZ3M/OiBzdHJpbmdbXTtcbiAgZGV0YWlscz86IERpY3Q8c3RyaW5nPjtcbiAgY2hpbGRyZW4/OiBPcGNvZGVKU09OW107XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9wY29kZSBpbXBsZW1lbnRzIExpbmtlZExpc3ROb2RlIHtcbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIF9ndWlkOiBudW1iZXI7XG5cbiAgcHJldjogQWJzdHJhY3RPcGNvZGU7XG4gIG5leHQ6IEFic3RyYWN0T3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gIG5leHQ6IE9wY29kZSA9IG51bGw7XG4gIHByZXY6IE9wY29kZSA9IG51bGw7XG5cbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFZNKTtcbn1cblxuZXhwb3J0IHR5cGUgT3BTZXEgPSBTbGljZTxPcGNvZGU+O1xuZXhwb3J0IHR5cGUgT3BTZXFCdWlsZGVyID0gTGlua2VkTGlzdDxPcGNvZGU+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXBkYXRpbmdPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIG5leHQ6IFVwZGF0aW5nT3Bjb2RlID0gbnVsbDtcbiAgcHJldjogVXBkYXRpbmdPcGNvZGUgPSBudWxsO1xuXG4gIGFic3RyYWN0IGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRpbmdPcFNlcSA9IFNsaWNlPFVwZGF0aW5nT3Bjb2RlPjtcblxuaW50ZXJmYWNlIE9wY29kZUZhY3Rvcnk8VCBleHRlbmRzIE9wY29kZT4ge1xuICBuZXcob3B0aW9uczogVCk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXM6IExpbmtlZExpc3Q8QWJzdHJhY3RPcGNvZGU+KTogc3RyaW5nIHtcbiAgbGV0IGJ1ZmZlciA9IFtdO1xuXG4gIG9wY29kZXMudG9BcnJheSgpLmZvckVhY2goKG9wY29kZSwgaSkgPT4ge1xuICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlOiBPcGNvZGVKU09OLCBidWZmZXI6IHN0cmluZ1tdLCBsZXZlbDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuXG4gIGZvciAobGV0IGk9MDsgaTxsZXZlbDsgaSsrKSB7XG4gICAgaW5kZW50YXRpb24ucHVzaCgnICAnKTtcbiAgfVxuXG4gIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgYnVmZmVyLnB1c2goYCR7aW5kZXgrMX0uICR7b3Bjb2RlLnR5cGUudG9VcHBlckNhc2UoKX1gKTtcblxuICBpZiAob3Bjb2RlLmFyZ3MgfHwgb3Bjb2RlLmRldGFpbHMpIHtcbiAgICBidWZmZXIucHVzaCgnKCcpO1xuXG4gICAgaWYgKG9wY29kZS5hcmdzKSB7XG4gICAgICBidWZmZXIucHVzaChvcGNvZGUuYXJncy5qb2luKCcsICcpKTtcbiAgICB9XG5cbiAgICBpZiAob3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob3Bjb2RlLmRldGFpbHMpO1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wY29kZS5hcmdzICYmIG9wY29kZS5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZmVyLnB1c2goa2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtvcGNvZGUuZGV0YWlsc1trZXldfWApLmpvaW4oJywgJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJ1ZmZlci5wdXNoKCcpJyk7XG4gIH1cblxuICBidWZmZXIucHVzaCgnXFxuJyk7XG5cbiAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgZm9yIChsZXQgaT0wOyBpPG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsKzEsIGkpO1xuICAgIH1cbiAgfVxufVxuIl19
-enifed("glimmer-runtime/lib/partial", ["exports"], function (exports) {
- "use strict";
+ var fragment = _htmlbarsRuntimeRender.default(template, env, scope, {}).fragment;
+ element.appendChild(fragment);
+ morph.setNode(element);
+ }
- var PartialDefinition = function PartialDefinition(name, template) {
- this.name = name;
- this.template = template;
- };
+ function hasHelper(env, scope, helperName) {
+ return env.helpers[helperName] !== undefined;
+ }
- exports.PartialDefinition = PartialDefinition;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcGFydGlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFFQSxpQkFBQSxHQUlFLFNBSkYsaUJBQUEsQ0FJYyxJQUFZLEVBQUUsUUFBcUIsRUFBQTtBQUM3QyxZQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixZQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztLQUMxQiIsImZpbGUiOiJwYXJ0aWFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcblxuZXhwb3J0IGNsYXNzIFBhcnRpYWxEZWZpbml0aW9uPFQ+IHtcbiAgbmFtZTogc3RyaW5nOyAvLyBmb3IgZGVidWdnaW5nXG4gIHRlbXBsYXRlOiBUZW1wbGF0ZTxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZTxUPikge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/references', ['exports', 'glimmer-reference'], function (exports, _glimmerReference) {
- 'use strict';
+ function lookupHelper(env, scope, helperName) {
+ return env.helpers[helperName];
+ }
- var PrimitiveReference = (function (_ConstReference) {
- babelHelpers.inherits(PrimitiveReference, _ConstReference);
+ function bindScope() /* env, scope */{
+ // this function is used to handle host-specified extensions to scope
+ // other than `self`, `locals` and `block`.
+ }
- function PrimitiveReference() {
- _ConstReference.apply(this, arguments);
- }
+ function updateScope(env, scope) {
+ env.hooks.bindScope(env, scope);
+ }
- PrimitiveReference.prototype.get = function get() {
- return UNDEFINED_REFERENCE;
- };
+ exports.default = {
+ // fundamental hooks that you will likely want to override
+ bindLocal: bindLocal,
+ bindSelf: bindSelf,
+ bindScope: bindScope,
+ classify: classify,
+ component: component,
+ concat: concat,
+ createFreshScope: createFreshScope,
+ getChild: getChild,
+ getRoot: getRoot,
+ getBlock: getBlock,
+ getValue: getValue,
+ getCellOrValue: getCellOrValue,
+ keywords: keywords,
+ linkRenderNode: linkRenderNode,
+ partial: partial,
+ subexpr: subexpr,
- return PrimitiveReference;
- })(_glimmerReference.ConstReference);
+ // fundamental hooks with good default behavior
+ bindBlock: bindBlock,
+ bindShadowScope: bindShadowScope,
+ updateLocal: updateLocal,
+ updateSelf: updateSelf,
+ updateScope: updateScope,
+ createChildScope: createChildScope,
+ hasHelper: hasHelper,
+ lookupHelper: lookupHelper,
+ invokeHelper: invokeHelper,
+ cleanupRenderNode: null,
+ destroyRenderNode: null,
+ willCleanupTree: null,
+ didCleanupTree: null,
+ willRenderNode: null,
+ didRenderNode: null,
- exports.PrimitiveReference = PrimitiveReference;
-
- var ConditionalReference = (function () {
- function ConditionalReference(inner) {
- this.inner = inner;
- this.tag = inner.tag;
- }
-
- ConditionalReference.prototype.value = function value() {
- return this.toBool(this.inner.value());
- };
-
- ConditionalReference.prototype.toBool = function toBool(value) {
- return !!value;
- };
-
- return ConditionalReference;
- })();
-
- exports.ConditionalReference = ConditionalReference;
- var NULL_REFERENCE = new PrimitiveReference(null);
- exports.NULL_REFERENCE = NULL_REFERENCE;
- var UNDEFINED_REFERENCE = new PrimitiveReference(undefined);
- exports.UNDEFINED_REFERENCE = UNDEFINED_REFERENCE;
+ // derived hooks
+ attribute: attribute,
+ block: block,
+ createScope: createScope,
+ element: element,
+ get: get,
+ inline: inline,
+ range: range,
+ keyword: keyword
+ };
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFLQSxrQkFBQTs4QkFBQSxrQkFBQTs7aUJBQUEsa0JBQUE7Ozs7QUFBQSwwQkFBQSxXQUNFLEdBQUcsR0FBQSxlQUFBO0FBQ0QsbUJBQU8sbUJBQW1CLENBQUM7U0FDNUI7O2VBSEgsa0JBQUE7eUJBTHNCLGNBQWM7Ozs7UUFXcEMsb0JBQUE7QUFHRSxpQkFIRixvQkFBQSxDQUdzQixLQUF3QixFQUFBO0FBQXhCLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBbUI7QUFDMUMsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUN0Qjs7QUFMSCw0QkFBQSxXQU9FLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDOztBQVRILDRCQUFBLFdBV1ksTUFBTSxHQUFBLGdCQUFDLEtBQWEsRUFBQTtBQUM1QixtQkFBTyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2hCOztlQWJILG9CQUFBOzs7O0FBZ0JPLFFBQU0sY0FBYyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBQ3BELFFBQU0sbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyIsImZpbGUiOiJyZWZlcmVuY2VzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmV2aXNpb25UYWcsIENvbnN0UmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xuXG5leHBvcnQgY2xhc3MgUHJpbWl0aXZlUmVmZXJlbmNlIGV4dGVuZHMgQ29uc3RSZWZlcmVuY2U8YW55PiBpbXBsZW1lbnRzIFBhdGhSZWZlcmVuY2U8UHJpbWl0aXZlPiB7XG4gIGdldCgpOiBQcmltaXRpdmVSZWZlcmVuY2Uge1xuICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25kaXRpb25hbFJlZmVyZW5jZSBpbXBsZW1lbnRzIFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy50YWcgPSBpbm5lci50YWc7XG4gIH1cblxuICB2YWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b0Jvb2wodGhpcy5pbm5lci52YWx1ZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBOVUxMX1JFRkVSRU5DRSA9IG5ldyBQcmltaXRpdmVSZWZlcmVuY2UobnVsbCk7XG5leHBvcnQgY29uc3QgVU5ERUZJTkVEX1JFRkVSRU5DRSA9IG5ldyBQcmltaXRpdmVSZWZlcmVuY2UodW5kZWZpbmVkKTtcbiJdfQ==
-enifed('glimmer-runtime/lib/scanner', ['exports', 'glimmer-runtime/lib/syntax/statements', 'glimmer-runtime/lib/compiled/blocks', 'glimmer-util', 'glimmer-runtime/lib/symbol-table'], function (exports, _glimmerRuntimeLibSyntaxStatements, _glimmerRuntimeLibCompiledBlocks, _glimmerUtil, _glimmerRuntimeLibSymbolTable) {
- 'use strict';
+enifed("htmlbars-runtime/morph", ["exports", "morph-range"], function (exports, _morphRange) {
+ "use strict";
- var Scanner = (function () {
- function Scanner(block, meta, env) {
- this.block = block;
- this.meta = meta;
- this.env = env;
- }
+ var guid = 1;
- Scanner.prototype.scanEntryPoint = function scanEntryPoint() {
- var block = this.block;
- var meta = this.meta;
+ function HTMLBarsMorph(domHelper, contextualElement) {
+ this.super$constructor(domHelper, contextualElement);
- var symbolTable = _glimmerRuntimeLibSymbolTable.default.forEntryPoint(meta);
- var program = buildStatements(block, block.blocks, symbolTable, this.env);
- return new _glimmerRuntimeLibCompiledBlocks.EntryPoint(program, symbolTable);
- };
+ this._state = undefined;
+ this.ownerNode = null;
+ this.isDirty = false;
+ this.isSubtreeDirty = false;
+ this.lastYielded = null;
+ this.lastResult = null;
+ this.lastValue = null;
+ this.buildChildEnv = null;
+ this.morphList = null;
+ this.morphMap = null;
+ this.key = null;
+ this.linkedParams = null;
+ this.linkedResult = null;
+ this.childNodes = null;
+ this.rendered = false;
+ this.guid = "range" + guid++;
+ this.seen = false;
+ }
- Scanner.prototype.scanLayout = function scanLayout() {
- var block = this.block;
- var meta = this.meta;
- var blocks = block.blocks;
- var named = block.named;
- var yields = block.yields;
- var hasPartials = block.hasPartials;
+ HTMLBarsMorph.empty = function (domHelper, contextualElement) {
+ var morph = new HTMLBarsMorph(domHelper, contextualElement);
+ morph.clear();
+ return morph;
+ };
- var symbolTable = _glimmerRuntimeLibSymbolTable.default.forLayout(named, yields, hasPartials, meta);
- var program = buildStatements(block, blocks, symbolTable, this.env);
- return new _glimmerRuntimeLibCompiledBlocks.Layout(program, symbolTable, named, yields, hasPartials);
- };
+ HTMLBarsMorph.create = function (domHelper, contextualElement, node) {
+ var morph = new HTMLBarsMorph(domHelper, contextualElement);
+ morph.setNode(node);
+ return morph;
+ };
- Scanner.prototype.scanPartial = function scanPartial(symbolTable) {
- var block = this.block;
- var blocks = block.blocks;
- var locals = block.locals;
+ HTMLBarsMorph.attach = function (domHelper, contextualElement, firstNode, lastNode) {
+ var morph = new HTMLBarsMorph(domHelper, contextualElement);
+ morph.setRange(firstNode, lastNode);
+ return morph;
+ };
- var program = buildStatements(block, blocks, symbolTable, this.env);
- return new _glimmerRuntimeLibCompiledBlocks.PartialBlock(program, symbolTable, locals);
- };
+ var prototype = HTMLBarsMorph.prototype = Object.create(_morphRange.default.prototype);
+ prototype.constructor = HTMLBarsMorph;
+ prototype.super$constructor = _morphRange.default;
- return Scanner;
- })();
-
- exports.default = Scanner;
-
- function buildStatements(_ref, blocks, symbolTable, env) {
- var statements = _ref.statements;
-
- if (statements.length === 0) return EMPTY_PROGRAM;
- return new BlockScanner(statements, blocks, symbolTable, env).scan();
+ prototype.getState = function () {
+ if (!this._state) {
+ this._state = {};
}
- var EMPTY_PROGRAM = _glimmerUtil.EMPTY_SLICE;
- var BlockScanner = (function () {
- function BlockScanner(statements, blocks, symbolTable, env) {
- this.blocks = blocks;
- this.symbolTable = symbolTable;
- this.stack = new _glimmerUtil.Stack();
- this.stack.push(new ChildBlockScanner(symbolTable));
- this.reader = new SyntaxReader(statements, symbolTable, this);
- this.env = env;
- }
+ return this._state;
+ };
- BlockScanner.prototype.scan = function scan() {
- var statement = undefined;
- while (statement = this.reader.next()) {
- this.addStatement(statement);
- }
- return this.stack.current.program;
- };
+ prototype.setState = function (newState) {
+ /*jshint -W093 */
- BlockScanner.prototype.blockFor = function blockFor(symbolTable, id) {
- var block = this.blocks[id];
- var childTable = _glimmerRuntimeLibSymbolTable.default.forBlock(this.symbolTable, block.locals);
- var program = buildStatements(block, this.blocks, childTable, this.env);
- return new _glimmerRuntimeLibCompiledBlocks.InlineBlock(program, childTable, block.locals);
- };
+ return this._state = newState;
+ };
- BlockScanner.prototype.startBlock = function startBlock(locals) {
- var childTable = _glimmerRuntimeLibSymbolTable.default.forBlock(this.symbolTable, locals);
- this.stack.push(new ChildBlockScanner(childTable));
- };
-
- BlockScanner.prototype.endBlock = function endBlock(locals) {
- var _stack$pop = this.stack.pop();
-
- var program = _stack$pop.program;
- var symbolTable = _stack$pop.symbolTable;
-
- var block = new _glimmerRuntimeLibCompiledBlocks.InlineBlock(program, symbolTable, locals);
- this.addChild(block);
- return block;
- };
-
- BlockScanner.prototype.addChild = function addChild(block) {
- this.stack.current.addChild(block);
- };
-
- BlockScanner.prototype.addStatement = function addStatement(statement) {
- this.stack.current.addStatement(statement.scan(this));
- };
-
- BlockScanner.prototype.next = function next() {
- return this.reader.next();
- };
-
- return BlockScanner;
- })();
-
- exports.BlockScanner = BlockScanner;
-
- var ChildBlockScanner = (function () {
- function ChildBlockScanner(symbolTable) {
- this.symbolTable = symbolTable;
- this.children = [];
- this.program = new _glimmerUtil.LinkedList();
- }
-
- ChildBlockScanner.prototype.addChild = function addChild(block) {
- this.children.push(block);
- };
-
- ChildBlockScanner.prototype.addStatement = function addStatement(statement) {
- this.program.append(statement);
- };
-
- return ChildBlockScanner;
- })();
-
- var SyntaxReader = (function () {
- function SyntaxReader(statements, symbolTable, scanner) {
- this.statements = statements;
- this.symbolTable = symbolTable;
- this.scanner = scanner;
- this.current = 0;
- this.last = null;
- }
-
- SyntaxReader.prototype.next = function next() {
- var last = this.last;
- if (last) {
- this.last = null;
- return last;
- } else if (this.current === this.statements.length) {
- return null;
- }
- var sexp = this.statements[this.current++];
- return _glimmerRuntimeLibSyntaxStatements.default(sexp, this.symbolTable, this.scanner);
- };
-
- return SyntaxReader;
- })();
+ exports.default = HTMLBarsMorph;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFRQSxPQUFBO0FBQ0UsaUJBREYsT0FBQSxDQUNzQixLQUE4QixFQUFVLElBQWtCLEVBQVUsR0FBZ0IsRUFBQTtBQUFwRixnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQXlCO0FBQVUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFjO0FBQVUsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFhO1NBQ3ZHOztBQUZILGVBQUEsV0FJRSxjQUFjLEdBQUEsMEJBQUE7Z0JBQ04sS0FBSyxHQUFXLElBQUksQ0FBcEIsS0FBSztnQkFBRSxJQUFJLEdBQUssSUFBSSxDQUFiLElBQUk7O0FBRWpCLGdCQUFJLFdBQVcsR0FBRyxzQ0FBWSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEQsZ0JBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFFLG1CQUFPLHFDQWZGLFVBQVUsQ0FlTyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDN0M7O0FBVkgsZUFBQSxXQVlFLFVBQVUsR0FBQSxzQkFBQTtnQkFDRixLQUFLLEdBQVcsSUFBSSxDQUFwQixLQUFLO2dCQUFFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTtnQkFDWCxNQUFNLEdBQWlDLEtBQUssQ0FBNUMsTUFBTTtnQkFBRSxLQUFLLEdBQTBCLEtBQUssQ0FBcEMsS0FBSztnQkFBRSxNQUFNLEdBQWtCLEtBQUssQ0FBN0IsTUFBTTtnQkFBRSxXQUFXLEdBQUssS0FBSyxDQUFyQixXQUFXOztBQUV4QyxnQkFBSSxXQUFXLEdBQUcsc0NBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLGdCQUFJLE9BQU8sR0FB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V0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3RDs7ZUFqQkgsWUFBQSIsImZpbGUiOiJzY2FubmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZ3JhbSwgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCB9IGZyb20gJy4vc3ludGF4JztcbmltcG9ydCBidWlsZFN0YXRlbWVudCBmcm9tICcuL3N5bnRheC9zdGF0ZW1lbnRzJztcbmltcG9ydCB7IEVudHJ5UG9pbnQsIElubGluZUJsb2NrLCBQYXJ0aWFsQmxvY2ssIExheW91dCB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVNUFRZX1NMSUNFLCBMaW5rZWRMaXN0LCBTdGFjayB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgVGVtcGxhdGVNZXRhLCBTZXJpYWxpemVkQmxvY2ssIFN0YXRlbWVudCBhcyBTZXJpYWxpemVkU3RhdGVtZW50IH0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi9zeW1ib2wtdGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBibG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIHByaXZhdGUgbWV0YTogVGVtcGxhdGVNZXRhLCBwcml2YXRlIGVudjogRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIHNjYW5FbnRyeVBvaW50KCk6IEVudHJ5UG9pbnQge1xuICAgIGxldCB7IGJsb2NrLCBtZXRhIH0gPSB0aGlzO1xuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGUuZm9yRW50cnlQb2ludChtZXRhKTtcbiAgICBsZXQgcHJvZ3JhbSA9IGJ1aWxkU3RhdGVtZW50cyhibG9jaywgYmxvY2suYmxvY2tzLCBzeW1ib2xUYWJsZSwgdGhpcy5lbnYpO1xuICAgIHJldHVybiBuZXcgRW50cnlQb2ludChwcm9ncmFtLCBzeW1ib2xUYWJsZSk7XG4gIH1cblxuICBzY2FuTGF5b3V0KCk6IExheW91dCB7XG4gICAgbGV0IHsgYmxvY2ssIG1ldGEgfSA9IHRoaXM7XG4gICAgbGV0IHsgYmxvY2tzLCBuYW1lZCwgeWllbGRzLCBoYXNQYXJ0aWFscyB9ID0gYmxvY2s7XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZS5mb3JMYXlvdXQobmFtZWQsIHlpZWxkcywgaGFzUGFydGlhbHMsIG1ldGEpO1xuICAgIGxldCBwcm9ncmFtID0gYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCBibG9ja3MsIHN5bWJvbFRhYmxlLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbmV3IExheW91dChwcm9ncmFtLCBzeW1ib2xUYWJsZSwgbmFtZWQsIHlpZWxkcywgaGFzUGFydGlhbHMpO1xuICB9XG5cbiAgc2NhblBhcnRpYWwoc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGFydGlhbEJsb2NrIHtcbiAgICBsZXQgeyBibG9jayB9ID0gdGhpcztcbiAgICBsZXQgeyBibG9ja3MsIGxvY2FscyB9ID0gYmxvY2s7XG5cbiAgICBsZXQgcHJvZ3JhbSA9IGJ1aWxkU3RhdGVtZW50cyhibG9jaywgYmxvY2tzLCBzeW1ib2xUYWJsZSwgdGhpcy5lbnYpO1xuXG4gICAgcmV0dXJuIG5ldyBQYXJ0aWFsQmxvY2socHJvZ3JhbSwgc3ltYm9sVGFibGUsIGxvY2Fscyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRTdGF0ZW1lbnRzKHsgc3RhdGVtZW50cyB9OiBTZXJpYWxpemVkQmxvY2ssIGJsb2NrczogU2VyaWFsaXplZEJsb2NrW10sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IFByb2dyYW0ge1xuICBpZiAoc3RhdGVtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBFTVBUWV9QUk9HUkFNO1xuICByZXR1cm4gbmV3IEJsb2NrU2Nhbm5lcihzdGF0ZW1lbnRzLCBibG9ja3MsIHN5bWJvbFRhYmxlLCBlbnYpLnNjYW4oKTtcbn1cblxuY29uc3QgRU1QVFlfUFJPR1JBTSA9IEVNUFRZX1NMSUNFO1xuXG5leHBvcnQgY2xhc3MgQmxvY2tTY2FubmVyIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBzdGFjayA9IG5ldyBTdGFjazxDaGlsZEJsb2NrU2Nhbm5lcj4oKTtcbiAgcHJpdmF0ZSByZWFkZXI6IFN5bnRheFJlYWRlcjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnRzOiBTZXJpYWxpemVkU3RhdGVtZW50W10sIHByaXZhdGUgYmxvY2tzOiBTZXJpYWxpemVkQmxvY2tbXSwgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2gobmV3IENoaWxkQmxvY2tTY2FubmVyKHN5bWJvbFRhYmxlKSk7XG4gICAgdGhpcy5yZWFkZXIgPSBuZXcgU3ludGF4UmVhZGVyKHN0YXRlbWVudHMsIHN5bWJvbFRhYmxlLCB0aGlzKTtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgfVxuXG4gIHNjYW4oKTogUHJvZ3JhbSB7XG4gICAgbGV0IHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4O1xuXG4gICAgd2hpbGUgKHN0YXRlbWVudCA9IHRoaXMucmVhZGVyLm5leHQoKSkge1xuICAgICAgdGhpcy5hZGRTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFjay5jdXJyZW50LnByb2dyYW07XG4gIH1cblxuICBibG9ja0ZvcihzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIGlkOiBudW1iZXIpOiBJbmxpbmVCbG9jayB7XG4gICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja3NbaWRdO1xuICAgIGxldCBjaGlsZFRhYmxlID0gU3ltYm9sVGFibGUuZm9yQmxvY2sodGhpcy5zeW1ib2xUYWJsZSwgYmxvY2subG9jYWxzKTtcbiAgICBsZXQgcHJvZ3JhbSA9IGJ1aWxkU3RhdGVtZW50cyhibG9jaywgdGhpcy5ibG9ja3MsIGNoaWxkVGFibGUsIHRoaXMuZW52KTtcbiAgICByZXR1cm4gbmV3IElubGluZUJsb2NrKHByb2dyYW0sIGNoaWxkVGFibGUsIGJsb2NrLmxvY2Fscyk7XG4gIH1cblxuICBzdGFydEJsb2NrKGxvY2Fsczogc3RyaW5nW10pIHtcbiAgICBsZXQgY2hpbGRUYWJsZSA9IFN5bWJvbFRhYmxlLmZvckJsb2NrKHRoaXMuc3ltYm9sVGFibGUsIGxvY2Fscyk7XG4gICAgdGhpcy5zdGFjay5wdXNoKG5ldyBDaGlsZEJsb2NrU2Nhbm5lcihjaGlsZFRhYmxlKSk7XG4gIH1cblxuICBlbmRCbG9jayhsb2NhbHM6IHN0cmluZ1tdKTogSW5saW5lQmxvY2sge1xuICAgIGxldCB7IHByb2dyYW0sIHN5bWJvbFRhYmxlIH0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIGxldCBibG9jayA9IG5ldyBJbmxpbmVCbG9jayhwcm9ncmFtLCBzeW1ib2xUYWJsZSwgbG9jYWxzKTtcbiAgICB0aGlzLmFkZENoaWxkKGJsb2NrKTtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBhZGRDaGlsZChibG9jazogSW5saW5lQmxvY2spIHtcbiAgICB0aGlzLnN0YWNrLmN1cnJlbnQuYWRkQ2hpbGQoYmxvY2spO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4KSB7XG4gICAgdGhpcy5zdGFjay5jdXJyZW50LmFkZFN0YXRlbWVudChzdGF0ZW1lbnQuc2Nhbih0aGlzKSk7XG4gIH1cblxuICBuZXh0KCk6IFN0YXRlbWVudFN5bnRheCB7XG4gICAgcmV0dXJuIHRoaXMucmVhZGVyLm5leHQoKTtcbiAgfVxufVxuXG5jbGFzcyBDaGlsZEJsb2NrU2Nhbm5lciB7XG4gIHB1YmxpYyBjaGlsZHJlbjogSW5saW5lQmxvY2tbXSA9IFtdO1xuICBwdWJsaWMgcHJvZ3JhbSA9IG5ldyBMaW5rZWRMaXN0PFN0YXRlbWVudFN5bnRheD4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7fVxuXG4gIGFkZENoaWxkKGJsb2NrOiBJbmxpbmVCbG9jaykge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChibG9jayk7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgpIHtcbiAgICB0aGlzLnByb2dyYW0uYXBwZW5kKHN0YXRlbWVudCk7XG4gIH1cbn1cblxuY2xhc3MgU3ludGF4UmVhZGVyIHtcbiAgY3VycmVudDogbnVtYmVyID0gMDtcbiAgbGFzdDogU3RhdGVtZW50U3ludGF4ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YXRlbWVudHM6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRbXSwgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHByaXZhdGUgc2Nhbm5lcjogQmxvY2tTY2FubmVyKSB7fVxuXG4gIG5leHQoKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICBsZXQgbGFzdCA9IHRoaXMubGFzdDtcbiAgICBpZiAobGFzdCkge1xuICAgICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50ID09PSB0aGlzLnN0YXRlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgc2V4cCA9IHRoaXMuc3RhdGVtZW50c1t0aGlzLmN1cnJlbnQrK107XG4gICAgcmV0dXJuIGJ1aWxkU3RhdGVtZW50KHNleHAsIHRoaXMuc3ltYm9sVGFibGUsIHRoaXMuc2Nhbm5lcik7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/symbol-table', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) {
- 'use strict';
+enifed("htmlbars-runtime/node-visitor", ["exports", "htmlbars-util/morph-utils", "htmlbars-runtime/expression-visitor"], function (exports, _htmlbarsUtilMorphUtils, _htmlbarsRuntimeExpressionVisitor) {
+ "use strict";
- var SymbolTable = (function () {
- function SymbolTable(parent) {
- var meta = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
+ /**
+ Node classification:
+
+ # Primary Statement Nodes:
+
+ These nodes are responsible for a render node that represents a morph-range.
+
+ * block
+ * inline
+ * content
+ * element
+ * component
+
+ # Leaf Statement Nodes:
+
+ This node is responsible for a render node that represents a morph-attr.
+
+ * attribute
+ */
- this.parent = parent;
- this.meta = meta;
- this.locals = _glimmerUtil.dict();
- this.named = _glimmerUtil.dict();
- this.yields = _glimmerUtil.dict();
- this.partialArgs = null;
- this.size = 1;
- this.top = parent ? parent.top : this;
- }
+ function linkParamsAndHash(env, scope, morph, path, params, hash) {
+ if (morph.linkedParams) {
+ params = morph.linkedParams.params;
+ hash = morph.linkedParams.hash;
+ } else {
+ params = params && _htmlbarsRuntimeExpressionVisitor.acceptParams(params, env, scope);
+ hash = hash && _htmlbarsRuntimeExpressionVisitor.acceptHash(hash, env, scope);
+ }
- SymbolTable.forEntryPoint = function forEntryPoint(meta) {
- return new SymbolTable(null, meta).initEntryPoint();
- };
+ _htmlbarsUtilMorphUtils.linkParams(env, scope, morph, path, params, hash);
+ return [params, hash];
+ }
- SymbolTable.forLayout = function forLayout(named, yields, hasPartials, meta) {
- return new SymbolTable(null, meta).initLayout(named, yields, hasPartials);
- };
+ var AlwaysDirtyVisitor = {
- SymbolTable.forBlock = function forBlock(parent, locals) {
- return new SymbolTable(parent, null).initBlock(locals);
- };
+ block: function (node, morph, env, scope, template, visitor) {
+ var path = node[1];
+ var params = node[2];
+ var hash = node[3];
+ var templateId = node[4];
+ var inverseId = node[5];
- SymbolTable.prototype.initEntryPoint = function initEntryPoint() {
- return this;
- };
+ var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
- SymbolTable.prototype.initBlock = function initBlock(locals) {
- this.initPositionals(locals);
- return this;
- };
+ morph.isDirty = morph.isSubtreeDirty = false;
+ env.hooks.block(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templateId === null ? null : template.templates[templateId], inverseId === null ? null : template.templates[inverseId], visitor);
+ },
- SymbolTable.prototype.initLayout = function initLayout(named, yields, hasPartials) {
- this.initNamed(named);
- this.initYields(yields);
- this.initPartials(hasPartials);
- return this;
- };
+ inline: function (node, morph, env, scope, visitor) {
+ var path = node[1];
+ var params = node[2];
+ var hash = node[3];
- SymbolTable.prototype.initPositionals = function initPositionals(positionals) {
- var _this = this;
+ var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
- if (positionals) positionals.forEach(function (s) {
- return _this.locals[s] = _this.top.size++;
- });
- return this;
- };
+ morph.isDirty = morph.isSubtreeDirty = false;
+ env.hooks.inline(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
+ },
- SymbolTable.prototype.initNamed = function initNamed(named) {
- var _this2 = this;
+ content: function (node, morph, env, scope, visitor) {
+ var path = node[1];
- if (named) named.forEach(function (s) {
- return _this2.named[s] = _this2.top.size++;
- });
- return this;
- };
+ morph.isDirty = morph.isSubtreeDirty = false;
- SymbolTable.prototype.initYields = function initYields(yields) {
- var _this3 = this;
-
- if (yields) yields.forEach(function (b) {
- return _this3.yields[b] = _this3.top.size++;
- });
- return this;
- };
-
- SymbolTable.prototype.initPartials = function initPartials(hasPartials) {
- if (hasPartials) this.top.partialArgs = this.top.size++;
- return this;
- };
-
- SymbolTable.prototype.getMeta = function getMeta() {
- var meta = this.meta;
- var parent = this.parent;
-
- if (!meta && parent) {
- meta = parent.getMeta();
- }
- return meta;
- };
-
- SymbolTable.prototype.getYield = function getYield(name) {
- var yields = this.yields;
- var parent = this.parent;
-
- var symbol = yields[name];
- if (!symbol && parent) {
- symbol = parent.getYield(name);
- }
- return symbol;
- };
-
- SymbolTable.prototype.getNamed = function getNamed(name) {
- var named = this.named;
- var parent = this.parent;
-
- var symbol = named[name];
- if (!symbol && parent) {
- symbol = parent.getNamed(name);
- }
- return symbol;
- };
-
- SymbolTable.prototype.getLocal = function getLocal(name) {
- var locals = this.locals;
- var parent = this.parent;
-
- var symbol = locals[name];
- if (!symbol && parent) {
- symbol = parent.getLocal(name);
- }
- return symbol;
- };
-
- SymbolTable.prototype.getPartialArgs = function getPartialArgs() {
- return this.top.partialArgs;
- };
-
- SymbolTable.prototype.isTop = function isTop() {
- return this.top === this;
- };
-
- return SymbolTable;
- })();
-
- exports.default = SymbolTable;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQUdBLFdBQUE7QUFvQkUsaUJBcEJGLFdBQUEsQ0FvQnNCLE1BQW1CLEVBQW1DO2dCQUF6QixJQUFJLHlEQUFpQixJQUFJOztBQUF0RCxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQWE7QUFBVSxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQXFCO0FBTmxFLGdCQUFBLENBQUEsTUFBTSxHQUFHLGFBakJWLElBQUksRUFpQm9CLENBQUM7QUFDeEIsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsYUFsQlQsSUFBSSxFQWtCbUIsQ0FBQztBQUN2QixnQkFBQSxDQUFBLE1BQU0sR0FBRyxhQW5CVixJQUFJLEVBbUJvQixDQUFDO0FBQ3hCLGdCQUFBLENBQUEsV0FBVyxHQUFXLElBQUksQ0FBQztBQUM1QixnQkFBQSxDQUFBLElBQUksR0FBRyxDQUFDLENBQUM7QUFHZCxnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDdkM7O0FBdEJILG1CQUFBLENBQ1MsYUFBYSxHQUFBLHVCQUFDLElBQWtCLEVBQUE7QUFDckMsbUJBQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3JEOztBQUhILG1CQUFBLENBS1MsU0FBUyxHQUFBLG1CQUFDLEtBQWUsRUFBRSxNQUFnQixFQUFFLFdBQW9CLEVBQUUsSUFBa0IsRUFBQTtBQUMxRixtQkFBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDM0U7O0FBUEgsbUJBQUEsQ0FTUyxRQUFRLEdBQUEsa0JBQUMsTUFBbUIsRUFBRSxNQUFnQixFQUFBO0FBQ25ELG1CQUFPLElBQUks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QUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBRW5CLGdCQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFekIsZ0JBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFO0FBQ3JCLHNCQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQztBQUVELG1CQUFPLE1BQU0sQ0FBQztTQUNmOztBQTVGSCxtQkFBQSxXQThGRSxRQUFRLEdBQUEsa0JBQUMsSUFBWSxFQUFBO2dCQUNiLE1BQU0sR0FBYSxJQUFJLENBQXZCLE1BQU07Z0JBQUUsTUFBTSxHQUFLLElBQUksQ0FBZixNQUFNOztBQUVwQixnQkFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTFCLGdCQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUNyQixzQkFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEM7QUFFRCxtQkFBTyxNQUFNLENBQUM7U0FDZjs7QUF4R0gsbUJBQUEsV0EwR0UsY0FBYyxHQUFBLDBCQUFBO0FBQ1osbUJBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDN0I7O0FBNUdILG1CQUFBLFdBOEdFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO1NBQzFCOztlQWhISCxXQUFBOzs7c0JBQUEsV0FBQSIsImZpbGUiOiJzeW1ib2wtdGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFRlbXBsYXRlTWV0YSB9IGZyb20gJ2dsaW1tZXItd2lyZS1mb3JtYXQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW1ib2xUYWJsZSB7XG4gIHN0YXRpYyBmb3JFbnRyeVBvaW50KG1ldGE6IFRlbXBsYXRlTWV0YSk6IFN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gbmV3IFN5bWJvbFRhYmxlKG51bGwsIG1ldGEpLmluaXRFbnRyeVBvaW50KCk7XG4gIH1cblxuICBzdGF0aWMgZm9yTGF5b3V0KG5hbWVkOiBzdHJpbmdbXSwgeWllbGRzOiBzdHJpbmdbXSwgaGFzUGFydGlhbHM6IGJvb2xlYW4sIG1ldGE6IFRlbXBsYXRlTWV0YSk6IFN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gbmV3IFN5bWJvbFRhYmxlKG51bGwsIG1ldGEpLmluaXRMYXlvdXQobmFtZWQsIHlpZWxkcywgaGFzUGFydGlhbHMpO1xuICB9XG5cbiAgc3RhdGljIGZvckJsb2NrKHBhcmVudDogU3ltYm9sVGFibGUsIGxvY2Fsczogc3RyaW5nW10pOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBTeW1ib2xUYWJsZShwYXJlbnQsIG51bGwpLmluaXRCbG9jayhsb2NhbHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b3A6IFN5bWJvbFRhYmxlO1xuICBwcml2YXRlIGxvY2FscyA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIG5hbWVkID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgeWllbGRzID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgcGFydGlhbEFyZ3M6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBzaXplID0gMTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU3ltYm9sVGFibGUsIHByaXZhdGUgbWV0YTogVGVtcGxhdGVNZXRhID0gbnVsbCkge1xuICAgIHRoaXMudG9wID0gcGFyZW50ID8gcGFyZW50LnRvcCA6IHRoaXM7XG4gIH1cblxuICBpbml0RW50cnlQb2ludCgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXRCbG9jayhsb2NhbHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5pbml0UG9zaXRpb25hbHMobG9jYWxzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXRMYXlvdXQobmFtZWQ6IHN0cmluZ1tdLCB5aWVsZHM6IHN0cmluZ1tdLCBoYXNQYXJ0aWFsczogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuaW5pdE5hbWVkKG5hbWVkKTtcbiAgICB0aGlzLmluaXRZaWVsZHMoeWllbGRzKTtcbiAgICB0aGlzLmluaXRQYXJ0aWFscyhoYXNQYXJ0aWFscyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0UG9zaXRpb25hbHMocG9zaXRpb25hbHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKHBvc2l0aW9uYWxzKSBwb3NpdGlvbmFscy5mb3JFYWNoKHMgPT4gdGhpcy5sb2NhbHNbc10gPSB0aGlzLnRvcC5zaXplKyspO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdE5hbWVkKG5hbWVkOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmIChuYW1lZCkgbmFtZWQuZm9yRWFjaChzID0+IHRoaXMubmFtZWRbc10gPSB0aGlzLnRvcC5zaXplKyspO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdFlpZWxkcyh5aWVsZHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKHlpZWxkcykgeWllbGRzLmZvckVhY2goYiA9PiB0aGlzLnlpZWxkc1tiXSA9IHRoaXMudG9wLnNpemUrKyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0UGFydGlhbHMoaGFzUGFydGlhbHM6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBpZiAoaGFzUGFydGlhbHMpIHRoaXMudG9wLnBhcnRpYWxBcmdzID0gdGhpcy50b3Auc2l6ZSsrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0TWV0YSgpOiBUZW1wbGF0ZU1ldGEge1xuICAgIGxldCB7IG1ldGEsIHBhcmVudCB9ID0gdGhpcztcblxuICAgIGlmICghbWV0YSAmJiBwYXJlbnQpIHtcbiAgICAgIG1ldGEgPSBwYXJlbnQuZ2V0TWV0YSgpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgZ2V0WWllbGQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgeyB5aWVsZHMsIHBhcmVudCB9ID0gdGhpcztcblxuICAgIGxldCBzeW1ib2wgPSB5aWVsZHNbbmFtZV07XG5cbiAgICBpZiAoIXN5bWJvbCAmJiBwYXJlbnQpIHtcbiAgICAgIHN5bWJvbCA9IHBhcmVudC5nZXRZaWVsZChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgZ2V0TmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgeyBuYW1lZCwgcGFyZW50IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN5bWJvbCA9IG5hbWVkW25hbWVdO1xuXG4gICAgaWYgKCFzeW1ib2wgJiYgcGFyZW50KSB7XG4gICAgICBzeW1ib2wgPSBwYXJlbnQuZ2V0TmFtZWQobmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bWJvbDtcbiAgfVxuXG4gIGdldExvY2FsKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IHsgbG9jYWxzLCBwYXJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sID0gbG9jYWxzW25hbWVdO1xuXG4gICAgaWYgKCFzeW1ib2wgJiYgcGFyZW50KSB7XG4gICAgICBzeW1ib2wgPSBwYXJlbnQuZ2V0TG9jYWwobmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bWJvbDtcbiAgfVxuXG4gIGdldFBhcnRpYWxBcmdzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9wLnBhcnRpYWxBcmdzO1xuICB9XG5cbiAgaXNUb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9wID09PSB0aGlzO1xuICB9XG59XG4iXX0=
-enifed("glimmer-runtime/lib/syntax", ["exports"], function (exports) {
- "use strict";
-
- exports.isAttribute = isAttribute;
-
- var Statement = (function () {
- function Statement() {
- this.next = null;
- this.prev = null;
+ if (isHelper(env, scope, path)) {
+ env.hooks.inline(morph, env, scope, path, [], {}, visitor);
+ if (morph.linkedResult) {
+ _htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
}
+ return;
+ }
- Statement.fromSpec = function fromSpec(spec, symbolTable, scanner) {
- throw new Error("You need to implement fromSpec on " + this);
- };
+ var params = undefined;
+ if (morph.linkedParams) {
+ params = morph.linkedParams.params;
+ } else {
+ params = [env.hooks.get(env, scope, path)];
+ }
- Statement.prototype.clone = function clone() {
- // not type safe but the alternative is extreme boilerplate per
- // syntax subclass.
- return new this.constructor(this);
- };
+ _htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@range', params, null);
+ env.hooks.range(morph, env, scope, path, params[0], visitor);
+ },
- Statement.prototype.scan = function scan(scanner) {
- return this;
- };
+ element: function (node, morph, env, scope, visitor) {
+ var path = node[1];
+ var params = node[2];
+ var hash = node[3];
- return Statement;
- })();
+ var paramsAndHash = linkParamsAndHash(env, scope, morph, path, params, hash);
- exports.Statement = Statement;
+ morph.isDirty = morph.isSubtreeDirty = false;
+ env.hooks.element(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
+ },
- var Expression = (function () {
- function Expression() {}
+ attribute: function (node, morph, env, scope) {
+ var name = node[1];
+ var value = node[2];
- Expression.fromSpec = function fromSpec(spec, blocks) {
- throw new Error("You need to implement fromSpec on " + this);
- };
+ var paramsAndHash = linkParamsAndHash(env, scope, morph, '@attribute', [value], null);
- return Expression;
- })();
+ morph.isDirty = morph.isSubtreeDirty = false;
+ env.hooks.attribute(morph, env, scope, name, paramsAndHash[0][0]);
+ },
- exports.Expression = Expression;
- var ATTRIBUTE = "e1185d30-7cac-4b12-b26a-35327d905d92";
- exports.ATTRIBUTE = ATTRIBUTE;
- var ARGUMENT = "0f3802314-d747-bbc5-0168-97875185c3rt";
- exports.ARGUMENT = ARGUMENT;
+ component: function (node, morph, env, scope, template, visitor) {
+ var path = node[1];
+ var attrs = node[2];
+ var templateId = node[3];
+ var inverseId = node[4];
- var Attribute = (function (_Statement) {
- babelHelpers.inherits(Attribute, _Statement);
+ var paramsAndHash = linkParamsAndHash(env, scope, morph, path, [], attrs);
+ var templates = {
+ default: template.templates[templateId],
+ inverse: template.templates[inverseId]
+ };
- function Attribute() {
- _Statement.apply(this, arguments);
- this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true;
- }
+ morph.isDirty = morph.isSubtreeDirty = false;
+ env.hooks.component(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templates, visitor);
+ },
- return Attribute;
- })(Statement);
+ attributes: function (node, morph, env, scope, parentMorph, visitor) {
+ var template = node[1];
- exports.Attribute = Attribute;
-
- var Argument = (function (_Statement2) {
- babelHelpers.inherits(Argument, _Statement2);
-
- function Argument() {
- _Statement2.apply(this, arguments);
- this["0f3802314-d747-bbc5-0168-97875185c3rt"] = true;
- }
-
- return Argument;
- })(Statement);
-
- exports.Argument = Argument;
-
- function isAttribute(value) {
- return value && value[ATTRIBUTE] === true;
+ env.hooks.attributes(morph, env, scope, template, parentMorph, visitor);
}
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBbUJBLFNBQUE7QUFBQSxpQkFBQSxTQUFBLEdBQUE7QUFNUyxnQkFBQSxDQUFBLElBQUksR0FBYyxJQUFJLENBQUM7QUFDdkIsZ0JBQUEsQ0FBQSxJQUFJLEdBQWMsSUFBSSxDQUFDO1NBYS9COztBQXBCRCxpQkFBQSxDQUNTLFFBQVEsR0FBQSxrQkFBZ0MsSUFBTyxFQUFFLFdBQXdCLEVBQUUsT0FBc0IsRUFBQTtBQUN0RyxrQkFBTSxJQUFJLEtBQUssd0NBQXNDLElBQUksQ0FBRyxDQUFDO1NBQzlEOztBQUhILGlCQUFBLFdBU0UsS0FBSyxHQUFBLGlCQUFBOzs7QUFHSCxtQkFBTyxJQUF1QixJQUFJLENBQUMsV0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZEOztBQWJILGlCQUFBLFdBaUJFLElBQUksR0FBQSxjQUFDLE9BQXFCLEVBQUE7QUFDeEIsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O2VBbkJILFNBQUE7Ozs7O1FBOEJBLFVBQUE7aUJBQUEsVUFBQTs7QUFBQSxrQkFBQSxDQUNTLFFBQVEsR0FBQSxrQkFBMEQsSUFBTyxFQUFFLE1BQXNCLEVBQUE7QUFDdEcsa0JBQU0sSUFBSSxLQUFLLHdDQUFzQyxJQUFJLENBQUcsQ0FBQztTQUM5RDs7ZUFISCxVQUFBOzs7O0FBZ0NPLFFBQU0sU0FBUyxHQUFHLHNDQUFzQyxDQUFDOztBQUN6RCxRQUFNLFFBQVEsR0FBRyx1Q0FBdUMsQ0FBQzs7O1FBSWhFLFNBQUE7OEJBQUEsU0FBQTs7QUFBQSxpQkFBQSxTQUFBLEdBQUE7QUFBMkMsbUNBQUEsU0FBQSxDQUFBLENBQVM7QUFDbEQsZ0JBQUEsQ0FBQSxzQ0FBQSxDQUFzQyxHQUFHLElBQUksQ0FBQztTQUkvQzs7ZUFMRCxTQUFBO09BQTJDLFNBQVM7Ozs7UUFPcEQsUUFBQTs4QkFBQSxRQUFBOztBQUFBLGlCQUFBLFFBQUEsR0FBQTtBQUEwQyxvQ0FBQSxTQUFBLENBQUEsQ0FBUztBQUNqRCxnQkFBQSxDQUFBLHVDQUFBLENBQXVDLEdBQUcsSUFBSSxDQUFDO1NBSWhEOztlQUxELFFBQUE7T0FBMEMsU0FBUzs7OztBQU9uRCxhQUFBLFdBQUEsQ0FBNEIsS0FBZ0IsRUFBQTtBQUMxQyxlQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDO0tBQzNDIiwiZmlsZSI6InN5bnRheC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmtlZExpc3ROb2RlLCBTbGljZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBCbG9ja1NjYW5uZXIgfSBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jayB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5cbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb24gYXMgU2VyaWFsaXplZEV4cHJlc3Npb25cbn0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5cbmludGVyZmFjZSBTdGF0ZW1lbnRDbGFzczxUIGV4dGVuZHMgU2VyaWFsaXplZFN0YXRlbWVudCwgVSBleHRlbmRzIFN0YXRlbWVudD4ge1xuICBmcm9tU3BlYyhzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogVTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlbWVudCBpbXBsZW1lbnRzIExpbmtlZExpc3ROb2RlIHtcbiAgc3RhdGljIGZyb21TcGVjPFQgZXh0ZW5kcyBTZXJpYWxpemVkU3RhdGVtZW50PihzcGVjOiBULCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHNjYW5uZXI/OiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnQge1xuICAgIHRocm93IG5ldyBFcnJvcihgWW91IG5lZWQgdG8gaW1wbGVtZW50IGZyb21TcGVjIG9uICR7dGhpc31gKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCB0eXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXh0OiBTdGF0ZW1lbnQgPSBudWxsO1xuICBwdWJsaWMgcHJldjogU3RhdGVtZW50ID0gbnVsbDtcblxuICBjbG9uZSgpOiB0aGlzIHtcbiAgICAvLyBub3QgdHlwZSBzYWZlIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgZXh0cmVtZSBib2lsZXJwbGF0ZSBwZXJcbiAgICAvLyBzeW50YXggc3ViY2xhc3MuXG4gICAgcmV0dXJuIG5ldyAoPG5ldyAoYW55KSA9PiBhbnk+dGhpcy5jb25zdHJ1Y3RvcikodGhpcyk7XG4gIH1cblxuICBhYnN0cmFjdCBjb21waWxlKG9wY29kZXM6IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpO1xuXG4gIHNjYW4oc2Nhbm5lcjogQmxvY2tTY2FubmVyKTogU3RhdGVtZW50IHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5pbnRlcmZhY2UgRXhwcmVzc2lvbkNsYXNzPFQgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbiwgVSBleHRlbmRzIEV4cHJlc3Npb248VD4+IHtcbiAgZnJvbVNwZWMoc3BlYzogVCwgYmxvY2tzPzogSW5saW5lQmxvY2tbXSk6IFU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZXNJbnRvPFQ+IHtcbiAgY29tcGlsZShkc2w6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogVDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb248VD4gaW1wbGVtZW50cyBDb21waWxlc0ludG88Q29tcGlsZWRFeHByZXNzaW9uPFQ+PiB7XG4gIHN0YXRpYyBmcm9tU3BlYzxUIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb24sIFUgZXh0ZW5kcyBFeHByZXNzaW9uPFQ+PihzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogVSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBpbXBsZW1lbnQgZnJvbVNwZWMgb24gJHt0aGlzfWApO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHR5cGU6IHN0cmluZztcblxuICBhYnN0cmFjdCBjb21waWxlKGRzbDogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZEV4cHJlc3Npb248VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ltYm9sTG9va3VwIHtcbiAgZ2V0TG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBoYXNMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBnZXROYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc05hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGdldEJsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgaGFzQmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgZ2V0UGFydGlhbEFyZ3NTeW1ib2woKTogbnVtYmVyO1xuICBoYXNQYXJ0aWFsQXJnc1N5bWJvbCgpOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVJbnRvIHtcbiAgYXBwZW5kKG9wOiBPcGNvZGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIGV4dGVuZHMgQ29tcGlsZUludG8sIFN5bWJvbExvb2t1cCB7XG4gIGNvbXBvbmVudDogQ29tcG9uZW50QnVpbGRlcjtcbiAgdG9PcFNlcSgpOiBPcFNlcTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvZ3JhbSA9IFNsaWNlPFN0YXRlbWVudD47XG5cbmV4cG9ydCBjb25zdCBBVFRSSUJVVEUgPSBcImUxMTg1ZDMwLTdjYWMtNGIxMi1iMjZhLTM1MzI3ZDkwNWQ5MlwiO1xuZXhwb3J0IGNvbnN0IEFSR1VNRU5UID0gXCIwZjM4MDIzMTQtZDc0Ny1iYmM1LTAxNjgtOTc4NzUxODVjM3J0XCI7XG5cbmV4cG9ydCB0eXBlIFBhcmFtZXRlcjxUPiA9IEF0dHJpYnV0ZTxUPiB8IEFyZ3VtZW50PFQ+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXR0cmlidXRlPFQ+IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIG5hbWU6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIGFic3RyYWN0IHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb248VD47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcmd1bWVudDxUPiBleHRlbmRzIFN0YXRlbWVudCB7XG4gIFwiMGYzODAyMzE0LWQ3NDctYmJjNS0wMTY4LTk3ODc1MTg1YzNydFwiID0gdHJ1ZTtcbiAgbmFtZTogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgYWJzdHJhY3QgdmFsdWVTeW50YXgoKTogRXhwcmVzc2lvbjxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXR0cmlidXRlKHZhbHVlOiBTdGF0ZW1lbnQpOiB2YWx1ZSBpcyBBdHRyaWJ1dGU8YW55PiB7XG4gIHJldHVybiB2YWx1ZSAmJiB2YWx1ZVtBVFRSSUJVVEVdID09PSB0cnVlO1xufVxuIl19
-enifed('glimmer-runtime/lib/syntax/builtins/each', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
- var EachSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(EachSyntax, _StatementSyntax);
+ };
- function EachSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
+ exports.AlwaysDirtyVisitor = AlwaysDirtyVisitor;
+ exports.default = {
+ block: function (node, morph, env, scope, template, visitor) {
+ dirtyCheck(env, morph, visitor, function (visitor) {
+ AlwaysDirtyVisitor.block(node, morph, env, scope, template, visitor);
+ });
+ },
- _StatementSyntax.call(this);
- this.type = "each-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
- }
+ inline: function (node, morph, env, scope, visitor) {
+ dirtyCheck(env, morph, visitor, function (visitor) {
+ AlwaysDirtyVisitor.inline(node, morph, env, scope, visitor);
+ });
+ },
- EachSyntax.prototype.compile = function compile(dsl, env) {
- // Enter(BEGIN, END)
- // BEGIN: Noop
- // PutArgs
- // PutIterable
- // JumpUnless(ELSE)
- // EnterList(BEGIN2, END2)
- // ITER: Noop
- // NextIter(BREAK)
- // EnterWithKey(BEGIN2, END2)
- // BEGIN2: Noop
- // PushChildScope
- // Evaluate(default)
- // PopScope
- // END2: Noop
- // Exit
- // Jump(ITER)
- // BREAK: Noop
- // ExitList
- // Jump(END)
- // ELSE: Noop
- // Evalulate(inverse)
- // END: Noop
- // Exit
- var args = this.args;
- var templates = this.templates;
+ content: function (node, morph, env, scope, visitor) {
+ dirtyCheck(env, morph, visitor, function (visitor) {
+ AlwaysDirtyVisitor.content(node, morph, env, scope, visitor);
+ });
+ },
- dsl.block({ templates: templates, args: args }, function (dsl, BEGIN, END) {
- dsl.putIterator();
- if (templates.inverse) {
- dsl.jumpUnless('ELSE');
- } else {
- dsl.jumpUnless(END);
- }
- dsl.iter({ templates: templates }, function (dsl, BEGIN, END) {
- dsl.evaluate('default');
- });
- if (templates.inverse) {
- dsl.jump(END);
- dsl.label('ELSE');
- dsl.evaluate('inverse');
- }
- });
- };
+ element: function (node, morph, env, scope, template, visitor) {
+ dirtyCheck(env, morph, visitor, function (visitor) {
+ AlwaysDirtyVisitor.element(node, morph, env, scope, template, visitor);
+ });
+ },
- return EachSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
+ attribute: function (node, morph, env, scope, template) {
+ dirtyCheck(env, morph, null, function () {
+ AlwaysDirtyVisitor.attribute(node, morph, env, scope, template);
+ });
+ },
- exports.default = EachSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2VhY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBVUEsVUFBQTs4QkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkF5QnZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQzdDLG1CQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFbEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDeEIsTUFBTTtBQUNMLHVCQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjtBQUVELG1CQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDdEMsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLENBQUMsQ0FBQztBQUVILG9CQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDckIsdUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCx1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUEzREgsVUFBQTtnQ0FURSxTQUFTOztzQkFTWCxVQUFBIiwiZmlsZSI6ImVhY2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFjaFN5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcImVhY2gtc3RhdGVtZW50XCI7XG5cbiAgcHVibGljIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBwdWJsaWMgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcih7IGFyZ3MsIHRlbXBsYXRlcyB9OiB7IGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgfVxuXG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyRFNMLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgLy8gICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiAgTm9vcFxuICAgIC8vICAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICAgUHV0SXRlcmFibGVcbiAgICAvLyAgICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgIEVudGVyTGlzdChCRUdJTjIsIEVORDIpXG4gICAgLy8gSVRFUjogICBOb29wXG4gICAgLy8gICAgICAgICBOZXh0SXRlcihCUkVBSylcbiAgICAvLyAgICAgICAgIEVudGVyV2l0aEtleShCRUdJTjIsIEVORDIpXG4gICAgLy8gQkVHSU4yOiBOb29wXG4gICAgLy8gICAgICAgICBQdXNoQ2hpbGRTY29wZVxuICAgIC8vICAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgIFBvcFNjb3BlXG4gICAgLy8gRU5EMjogICBOb29wXG4gICAgLy8gICAgICAgICBFeGl0XG4gICAgLy8gICAgICAgICBKdW1wKElURVIpXG4gICAgLy8gQlJFQUs6ICBOb29wXG4gICAgLy8gICAgICAgICBFeGl0TGlzdFxuICAgIC8vICAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogICBOb29wXG4gICAgLy8gICAgICAgICBFdmFsdWxhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgIE5vb3BcbiAgICAvLyAgICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wucHV0SXRlcmF0b3IoKTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgfVxuXG4gICAgICBkc2wuaXRlcih7IHRlbXBsYXRlcyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/syntax/builtins/if', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
+ component: function (node, morph, env, scope, template, visitor) {
+ dirtyCheck(env, morph, visitor, function (visitor) {
+ AlwaysDirtyVisitor.component(node, morph, env, scope, template, visitor);
+ });
+ },
- var IfSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(IfSyntax, _StatementSyntax);
+ attributes: function (node, morph, env, scope, parentMorph, visitor) {
+ AlwaysDirtyVisitor.attributes(node, morph, env, scope, parentMorph, visitor);
+ }
+ };
- function IfSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
+ function dirtyCheck(_env, morph, visitor, callback) {
+ var isDirty = morph.isDirty;
+ var isSubtreeDirty = morph.isSubtreeDirty;
+ var env = _env;
- _StatementSyntax.call(this);
- this.type = "if-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
- }
+ if (isSubtreeDirty) {
+ visitor = AlwaysDirtyVisitor;
+ }
- IfSyntax.prototype.compile = function compile(dsl) {
- // PutArgs
- // Test(Environment)
- // Enter(BEGIN, END)
- // BEGIN: Noop
- // JumpUnless(ELSE)
- // Evaluate(default)
- // Jump(END)
- // ELSE: Noop
- // Evalulate(inverse)
- // END: Noop
- // Exit
- var args = this.args;
- var templates = this.templates;
+ if (isDirty || isSubtreeDirty) {
+ callback(visitor);
+ } else {
+ if (morph.buildChildEnv) {
+ env = morph.buildChildEnv(morph.getState(), env);
+ }
+ _htmlbarsUtilMorphUtils.validateChildMorphs(env, morph, visitor);
+ }
+ }
- dsl.putArgs(args);
- dsl.test('environment');
- dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
- if (templates.inverse) {
- dsl.jumpUnless('ELSE');
- dsl.evaluate('default');
- dsl.jump(END);
- dsl.label('ELSE');
- dsl.evaluate('inverse');
- } else {
- dsl.jumpUnless(END);
- dsl.evaluate('default');
- }
- });
- };
-
- return IfSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.default = IfSyntax;
+ function isHelper(env, scope, path) {
+ return env.hooks.keywords[path] !== undefined || env.hooks.hasHelper(env, scope, path);
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2lmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFBLFFBQUE7OEJBQUEsUUFBQTs7QUFPRSxpQkFQRixRQUFBLENBT2MsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBSWYsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWEgsZ0JBQUEsV0FhRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWFyQixJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGVBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQ3ZDLG9CQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDckIsdUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEIsdUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCx1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekIsTUFBTTtBQUNMLHVCQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QjthQUNGLENBQUMsQ0FBQztTQUNKOztlQTNDSCxRQUFBO2dDQVBFLFNBQVM7O3NCQU9YLFFBQUEiLCJmaWxlIjoiaWYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWZTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJpZi1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBUZXN0KEVudmlyb25tZW50KVxuICAgIC8vICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiBOb29wXG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogIE5vb3BcbiAgICAvLyAgICAgICAgRXZhbHVsYXRlKGludmVyc2UpXG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgYXJncywgdGVtcGxhdGVzIH0gPSB0aGlzO1xuXG4gICAgZHNsLnB1dEFyZ3MoYXJncyk7XG4gICAgZHNsLnRlc3QoJ2Vudmlyb25tZW50Jyk7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/syntax/builtins/in-element', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
+enifed("htmlbars-runtime/render", ["exports", "htmlbars-util/morph-utils", "htmlbars-runtime/node-visitor", "htmlbars-runtime/morph", "htmlbars-util/template-utils", "htmlbars-util/void-tag-names"], function (exports, _htmlbarsUtilMorphUtils, _htmlbarsRuntimeNodeVisitor, _htmlbarsRuntimeMorph, _htmlbarsUtilTemplateUtils, _htmlbarsUtilVoidTagNames) {
+ "use strict";
- var InElementSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(InElementSyntax, _StatementSyntax);
+ exports.default = render;
+ exports.RenderOptions = RenderOptions;
+ exports.manualElement = manualElement;
+ exports.attachAttributes = attachAttributes;
+ exports.createChildMorph = createChildMorph;
+ exports.getCachedFragment = getCachedFragment;
- function InElementSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
+ var svgNamespace = "http://www.w3.org/2000/svg";
- _StatementSyntax.call(this);
- this.type = "in-element-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
- }
+ function render(template, env, scope, options) {
+ var dom = env.dom;
+ var contextualElement;
- InElementSyntax.prototype.compile = function compile(dsl, env) {
- var args = this.args;
- var templates = this.templates;
+ if (options) {
+ if (options.renderNode) {
+ contextualElement = options.renderNode.contextualElement;
+ } else if (options.contextualElement) {
+ contextualElement = options.contextualElement;
+ }
+ }
- dsl.putArgs(args);
- dsl.test('simple');
- dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
- dsl.jumpUnless(END);
- dsl.pushRemoteElement();
- dsl.evaluate('default');
- dsl.popRemoteElement();
- });
- };
+ dom.detectNamespace(contextualElement);
- return InElementSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
+ var renderResult = RenderResult.build(env, scope, template, options, contextualElement);
+ renderResult.render();
- exports.default = InElementSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2luLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsZUFBQTs4QkFBQSxlQUFBOztBQU9FLGlCQVBGLGVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxzQkFBc0IsQ0FBQztBQUl2QixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCx1QkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Z0JBQ3ZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsZUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVuQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDdkMsbUJBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsbUJBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBQ3hCLG1CQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLG1CQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN4QixDQUFDLENBQUM7U0FDSjs7ZUF6QkgsZUFBQTtnQ0FQRSxTQUFTOztzQkFPWCxlQUFBIiwiZmlsZSI6ImluLWVsZW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbkVsZW1lbnRTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJpbi1lbGVtZW50LXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgZHNsLnB1c2hSZW1vdGVFbGVtZW50KCk7XG4gICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIGRzbC5wb3BSZW1vdGVFbGVtZW50KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
-enifed("glimmer-runtime/lib/syntax/builtins/partial", ["exports", "glimmer-runtime/lib/syntax"], function (exports, _glimmerRuntimeLibSyntax) {
- "use strict";
+ return renderResult;
+ }
- var StaticPartialSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(StaticPartialSyntax, _StatementSyntax);
+ function RenderOptions(renderNode, self, blockArguments, contextualElement) {
+ this.renderNode = renderNode || null;
+ this.self = self;
+ this.blockArguments = blockArguments || null;
+ this.contextualElement = contextualElement || null;
+ }
- function StaticPartialSyntax(name) {
- _StatementSyntax.call(this);
- this.name = name;
- this.type = "static-partial";
- }
+ function RenderResult(env, scope, options, rootNode, ownerNode, nodes, fragment, template, shouldSetContent) {
+ this.root = rootNode;
+ this.fragment = fragment;
- StaticPartialSyntax.prototype.compile = function compile(dsl, env, symbolTable) {
- var name = String(this.name.inner());
- if (!env.hasPartial(name, symbolTable)) {
- throw new Error("Compile Error: " + name + " is not a partial");
- }
- var definition = env.lookupPartial(name, symbolTable);
- dsl.putPartialDefinition(definition);
- dsl.evaluatePartial();
- };
+ this.nodes = nodes;
+ this.template = template;
+ this.statements = template.statements.slice();
+ this.env = env;
+ this.scope = scope;
+ this.shouldSetContent = shouldSetContent;
- return StaticPartialSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
+ if (options.self !== undefined) {
+ this.bindSelf(options.self);
+ }
+ if (options.blockArguments !== undefined) {
+ this.bindLocals(options.blockArguments);
+ }
- exports.StaticPartialSyntax = StaticPartialSyntax;
+ this.initializeNodes(ownerNode);
+ }
- var DynamicPartialSyntax = (function (_StatementSyntax2) {
- babelHelpers.inherits(DynamicPartialSyntax, _StatementSyntax2);
+ RenderResult.build = function (env, scope, template, options, contextualElement) {
+ var dom = env.dom;
+ var fragment = getCachedFragment(template, env);
+ var nodes = template.buildRenderNodes(dom, fragment, contextualElement);
- function DynamicPartialSyntax(name) {
- _StatementSyntax2.call(this);
- this.name = name;
- this.type = "dynamic-partial";
- }
+ var rootNode, ownerNode, shouldSetContent;
- DynamicPartialSyntax.prototype.compile = function compile(dsl) {
- var name = this.name;
+ if (options && options.renderNode) {
+ rootNode = options.renderNode;
+ ownerNode = rootNode.ownerNode;
+ shouldSetContent = true;
+ } else {
+ rootNode = dom.createMorph(null, fragment.firstChild, fragment.lastChild, contextualElement);
+ ownerNode = rootNode;
+ rootNode.ownerNode = ownerNode;
+ shouldSetContent = false;
+ }
- dsl.startLabels();
- dsl.putValue(name);
- dsl.test('simple');
- dsl.enter('BEGIN', 'END');
- dsl.label('BEGIN');
- dsl.jumpUnless('END');
- dsl.putDynamicPartialDefinition();
- dsl.evaluatePartial();
- dsl.label('END');
- dsl.exit();
- dsl.stopLabels();
- };
+ if (rootNode.childNodes) {
+ _htmlbarsUtilMorphUtils.visitChildren(rootNode.childNodes, function (node) {
+ _htmlbarsUtilTemplateUtils.clearMorph(node, env, true);
+ });
+ }
- return DynamicPartialSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
+ rootNode.childNodes = nodes;
+ return new RenderResult(env, scope, options, rootNode, ownerNode, nodes, fragment, template, shouldSetContent);
+ };
- exports.DynamicPartialSyntax = DynamicPartialSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3BhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBY0EsbUJBQUE7OEJBQUEsbUJBQUE7O0FBR0UsaUJBSEYsbUJBQUEsQ0FHc0IsSUFBdUIsRUFBQTtBQUN6Qyx1Q0FBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFtQjtBQUZwQyxnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztTQUk5Qjs7QUFMSCwyQkFBQSxXQU9FLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTtBQUN2RSxnQkFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUVyQyxnQkFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFO0FBQ3RDLHNCQUFNLElBQUksS0FBSyxxQkFBbUIsSUFBSSx1QkFBb0IsQ0FBQzthQUM1RDtBQUVELGdCQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV0RCxlQUFHLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckMsZUFBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3ZCOztlQWxCSCxtQkFBQTtnQ0FYRSxTQUFTOzs7O1FBZ0NYLG9CQUFBOzhCQUFBLG9CQUFBOztBQUdFLGlCQUhGLG9CQUFBLENBR3NCLElBQThCLEVBQUE7QUFDaEQsd0NBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBMEI7QUFGM0MsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7U0FJL0I7O0FBTEgsNEJBQUEsV0FPRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTtnQkFDckIsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUVWLGVBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUVsQixlQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLGVBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkIsZUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsZUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQixlQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLGVBQUcsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0FBQ2xDLGVBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN0QixlQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pCLGVBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUVYLGVBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQjs7ZUF2Qkgsb0JBQUE7Z0NBaENFLFNBQVMiLCJmaWxlIjoicGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcblxuaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCxcbiAgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgU3RhdGljUGFydGlhbFN5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHB1YmxpYyB0eXBlID0gXCJzdGF0aWMtcGFydGlhbFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmFtZTogU3ludGF4LlZhbHVlPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCBuYW1lID0gU3RyaW5nKHRoaXMubmFtZS5pbm5lcigpKTtcblxuICAgIGlmICghZW52Lmhhc1BhcnRpYWwobmFtZSwgc3ltYm9sVGFibGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6ICR7bmFtZX0gaXMgbm90IGEgcGFydGlhbGApO1xuICAgIH1cblxuICAgIGxldCBkZWZpbml0aW9uID0gZW52Lmxvb2t1cFBhcnRpYWwobmFtZSwgc3ltYm9sVGFibGUpO1xuXG4gICAgZHNsLnB1dFBhcnRpYWxEZWZpbml0aW9uKGRlZmluaXRpb24pO1xuICAgIGRzbC5ldmFsdWF0ZVBhcnRpYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY1BhcnRpYWxTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBwdWJsaWMgdHlwZSA9IFwiZHluYW1pYy1wYXJ0aWFsXCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICBsZXQgeyBuYW1lIH0gPSB0aGlzO1xuXG4gICAgZHNsLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBkc2wucHV0VmFsdWUobmFtZSk7XG4gICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgIGRzbC5lbnRlcignQkVHSU4nLCAnRU5EJyk7XG4gICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgIGRzbC5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICBkc2wucHV0RHluYW1pY1BhcnRpYWxEZWZpbml0aW9uKCk7XG4gICAgZHNsLmV2YWx1YXRlUGFydGlhbCgpO1xuICAgIGRzbC5sYWJlbCgnRU5EJyk7XG4gICAgZHNsLmV4aXQoKTtcblxuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
+ function manualElement(tagName, attributes, _isEmpty) {
+ var statements = [];
- var UnlessSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(UnlessSyntax, _StatementSyntax);
+ for (var key in attributes) {
+ if (typeof attributes[key] === 'string') {
+ continue;
+ }
- function UnlessSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
+ statements.push(_htmlbarsUtilTemplateUtils.buildStatement("attribute", key, attributes[key]));
+ }
- _StatementSyntax.call(this);
- this.type = "unless-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
- }
+ var isEmpty = _isEmpty || _htmlbarsUtilVoidTagNames.default[tagName];
- UnlessSyntax.prototype.compile = function compile(dsl, env) {
- // PutArgs
- // Enter(BEGIN, END)
- // BEGIN: Noop
- // Test(Environment)
- // JumpIf(ELSE)
- // Evaluate(default)
- // Jump(END)
- // ELSE: Noop
- // Evalulate(inverse)
- // END: Noop
- // Exit
- var args = this.args;
- var templates = this.templates;
+ if (!isEmpty) {
+ statements.push(_htmlbarsUtilTemplateUtils.buildStatement('content', 'yield'));
+ }
- dsl.putArgs(args);
- dsl.test('environment');
- dsl.block({ templates: templates }, function (dsl) {
- if (templates.inverse) {
- dsl.jumpIf('ELSE');
- dsl.evaluate('default');
- dsl.jump('END');
- dsl.label('ELSE');
- dsl.evaluate('inverse');
- } else {
- dsl.jumpIf('END');
- dsl.evaluate('default');
- }
- });
- };
-
- return UnlessSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.default = UnlessSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3VubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFVQSxZQUFBOzhCQUFBLFlBQUE7O0FBT0UsaUJBUEYsWUFBQSxDQU9jLElBQXVFLEVBQUE7Z0JBQXJFLElBQUksR0FBTixJQUF1RSxDQUFyRSxJQUFJO2dCQUFFLFNBQVMsR0FBakIsSUFBdUUsQ0FBL0QsU0FBUzs7QUFDM0IsdUNBQU8sQ0FBQztBQVBWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBSW5CLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUl0QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCOztBQVhILG9CQUFBLFdBYUUsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWF2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGVBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsRUFBRSxVQUFBLEdBQUcsRUFBQTtBQUMxQixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLHVCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBM0NILFlBQUE7Z0NBVEUsU0FBUzs7c0JBU1gsWUFBQSIsImZpbGUiOiJ1bmxlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVW5sZXNzU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwidW5sZXNzLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgVGVzdChFbnZpcm9ubWVudClcbiAgICAvLyAgICAgICAgSnVtcElmKEVMU0UpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICBOb29wXG4gICAgLy8gICAgICAgIEV2YWx1bGF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBpZiAodGVtcGxhdGVzLmludmVyc2UpIHtcbiAgICAgICAgZHNsLmp1bXBJZignRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoJ0VORCcpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcElmKCdFTkQnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/syntax/builtins/with-dynamic-vars', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
-
- var WithDynamicVarsSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(WithDynamicVarsSyntax, _StatementSyntax);
-
- function WithDynamicVarsSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
-
- _StatementSyntax.call(this);
- this.type = "with-dynamic-vars-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
+ var template = {
+ arity: 0,
+ cachedFragment: null,
+ hasRendered: false,
+ buildFragment: function buildFragment(dom) {
+ var el0 = dom.createDocumentFragment();
+ if (tagName === 'svg') {
+ dom.setNamespace(svgNamespace);
}
+ var el1 = dom.createElement(tagName);
- WithDynamicVarsSyntax.prototype.compile = function compile(dsl, env) {
- var args = this.args;
- var templates = this.templates;
-
- dsl.unit({ templates: templates }, function (dsl) {
- dsl.putArgs(args);
- dsl.pushDynamicScope();
- dsl.bindDynamicScope(args.named.keys);
- dsl.evaluate('default');
- dsl.popDynamicScope();
- });
- };
-
- return WithDynamicVarsSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.default = WithDynamicVarsSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgtZHluYW1pYy12YXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFBLHFCQUFBOzhCQUFBLHFCQUFBOztBQU9FLGlCQVBGLHFCQUFBLENBT2MsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsNkJBQTZCLENBQUM7QUFJOUIsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWEgsNkJBQUEsV0FhRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBRSxHQUFnQixFQUFBO2dCQUN2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxFQUFFLFVBQUEsR0FBRyxFQUFBO0FBQ3pCLG1CQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLG1CQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN2QixtQkFBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsbUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEIsbUJBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN2QixDQUFDLENBQUM7U0FDSjs7ZUF2QkgscUJBQUE7Z0NBUEUsU0FBUzs7c0JBT1gscUJBQUEiLCJmaWxlIjoid2l0aC1keW5hbWljLXZhcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaXRoRHluYW1pY1ZhcnNTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJ3aXRoLWR5bmFtaWMtdmFycy1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wudW5pdCh7IHRlbXBsYXRlcyB9LCBkc2wgPT4ge1xuICAgICAgZHNsLnB1dEFyZ3MoYXJncyk7XG4gICAgICBkc2wucHVzaER5bmFtaWNTY29wZSgpO1xuICAgICAgZHNsLmJpbmREeW5hbWljU2NvcGUoYXJncy5uYW1lZC5rZXlzKTtcbiAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgZHNsLnBvcER5bmFtaWNTY29wZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
-enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
- 'use strict';
-
- var WithSyntax = (function (_StatementSyntax) {
- babelHelpers.inherits(WithSyntax, _StatementSyntax);
-
- function WithSyntax(_ref) {
- var args = _ref.args;
- var templates = _ref.templates;
-
- _StatementSyntax.call(this);
- this.type = "with-statement";
- this.isStatic = false;
- this.args = args;
- this.templates = templates;
+ for (var key in attributes) {
+ if (typeof attributes[key] !== 'string') {
+ continue;
+ }
+ dom.setAttribute(el1, key, attributes[key]);
}
- WithSyntax.prototype.compile = function compile(dsl, env) {
- // PutArgs
- // Test(Environment)
- // Enter(BEGIN, END)
- // BEGIN: Noop
- // JumpUnless(ELSE)
- // Evaluate(default)
- // Jump(END)
- // ELSE: Noop
- // Evaluate(inverse)
- // END: Noop
- // Exit
- var args = this.args;
- var templates = this.templates;
-
- dsl.putArgs(args);
- dsl.test('environment');
- dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
- if (templates.inverse) {
- dsl.jumpUnless('ELSE');
- dsl.evaluate('default');
- dsl.jump(END);
- dsl.label('ELSE');
- dsl.evaluate('inverse');
- } else {
- dsl.jumpUnless(END);
- dsl.evaluate('default');
- }
- });
- };
-
- return WithSyntax;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.default = WithSyntax;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBU0EsVUFBQTs4QkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7OztnQkFhdkMsSUFBSSxHQUFnQixJQUFJLENBQXhCLElBQUk7Z0JBQUUsU0FBUyxHQUFLLElBQUksQ0FBbEIsU0FBUzs7QUFFckIsZUFBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixlQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXhCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUN2QyxvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLE1BQU07QUFDTCx1QkFBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUEzQ0gsVUFBQTtnQ0FSRSxTQUFTOztzQkFRWCxVQUFBIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdpdGhTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJ3aXRoLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTFNFKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZShkZWZhdWx0KVxuICAgIC8vICAgICAgICBKdW1wKEVORClcbiAgICAvLyBFTFNFOiAgTm9vcFxuICAgIC8vICAgICAgICBFdmFsdWF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzIH0sIChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgICAgZHNsLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnaW52ZXJzZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoRU5EKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/syntax/core', ['exports', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/syntax/builtins/partial', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-runtime/lib/compiled/opcodes/component', 'glimmer-runtime/lib/compiled/opcodes/dom', 'glimmer-runtime/lib/syntax/expressions', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-runtime/lib/compiled/expressions/lookups', 'glimmer-runtime/lib/compiled/expressions/has-block', 'glimmer-runtime/lib/compiled/expressions/has-block-params', 'glimmer-runtime/lib/compiled/expressions/helper', 'glimmer-runtime/lib/compiled/expressions/concat', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/compiled/opcodes/content'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibSyntaxBuiltinsPartial, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibSyntaxExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsLookups, _glimmerRuntimeLibCompiledExpressionsHasBlock, _glimmerRuntimeLibCompiledExpressionsHasBlockParams, _glimmerRuntimeLibCompiledExpressionsHelper, _glimmerRuntimeLibCompiledExpressionsConcat, _glimmerRuntimeLibUtils, _glimmerRuntimeLibCompiledOpcodesContent) {
- 'use strict';
-
- var Block = (function (_StatementSyntax) {
- babelHelpers.inherits(Block, _StatementSyntax);
-
- function Block(path, args, templates) {
- _StatementSyntax.call(this);
- this.path = path;
- this.args = args;
- this.templates = templates;
- this.type = "block";
+ if (!isEmpty) {
+ var el2 = dom.createComment("");
+ dom.appendChild(el1, el2);
}
- Block.fromSpec = function fromSpec(sexp, symbolTable, scanner) {
- var path = sexp[1];
- var params = sexp[2];
- var hash = sexp[3];
- var templateId = sexp[4];
- var inverseId = sexp[5];
+ dom.appendChild(el0, el1);
- var template = scanner.blockFor(symbolTable, templateId);
- var inverse = typeof inverseId === 'number' ? scanner.blockFor(symbolTable, inverseId) : null;
- return new Block(path, Args.fromSpec(params, hash), Templates.fromSpec(template, inverse));
- };
+ return el0;
+ },
+ buildRenderNodes: function buildRenderNodes(dom, fragment) {
+ var element = dom.childAt(fragment, [0]);
+ var morphs = [];
- Block.build = function build(path, args, templates) {
- return new this(path, args, templates);
- };
-
- Block.prototype.scan = function scan(scanner) {
- var _templates = this.templates;
- var _default = _templates.default;
- var inverse = _templates.inverse;
-
- if (_default) scanner.addChild(_default);
- if (inverse) scanner.addChild(inverse);
- return this;
- };
-
- Block.prototype.compile = function compile(ops) {
- throw new Error("SyntaxError");
- };
-
- return Block;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Block = Block;
-
- var Append = (function (_StatementSyntax2) {
- babelHelpers.inherits(Append, _StatementSyntax2);
-
- function Append(_ref) {
- var value = _ref.value;
- var trustingMorph = _ref.trustingMorph;
-
- _StatementSyntax2.call(this);
- this.value = value;
- this.trustingMorph = trustingMorph;
+ for (var key in attributes) {
+ if (typeof attributes[key] === 'string') {
+ continue;
+ }
+ morphs.push(dom.createAttrMorph(element, key));
}
- Append.fromSpec = function fromSpec(sexp) {
- var value = sexp[1];
- var trustingMorph = sexp[2];
-
- return new OptimizedAppend({ value: _glimmerRuntimeLibSyntaxExpressions.default(value), trustingMorph: trustingMorph });
- };
-
- return Append;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Append = Append;
-
- var OptimizedAppend = (function (_Append) {
- babelHelpers.inherits(OptimizedAppend, _Append);
-
- function OptimizedAppend() {
- _Append.apply(this, arguments);
- this.type = "optimized-append";
+ if (!isEmpty) {
+ morphs.push(dom.createMorphAt(element, 0, 0));
}
- OptimizedAppend.prototype.deopt = function deopt() {
- return new UnoptimizedAppend(this);
- };
+ return morphs;
+ },
+ statements: statements,
+ locals: [],
+ templates: []
+ };
- OptimizedAppend.prototype.compile = function compile(compiler, env, symbolTable) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode(this.value.compile(compiler, env, symbolTable)));
- if (this.trustingMorph) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedTrustingAppendOpcode());
- } else {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedCautiousAppendOpcode());
- }
- };
+ return template;
+ }
- return OptimizedAppend;
- })(Append);
+ function attachAttributes(attributes) {
+ var statements = [];
- exports.OptimizedAppend = OptimizedAppend;
-
- var UnoptimizedAppend = (function (_Append2) {
- babelHelpers.inherits(UnoptimizedAppend, _Append2);
-
- function UnoptimizedAppend() {
- _Append2.apply(this, arguments);
- this.type = "unoptimized-append";
- }
-
- UnoptimizedAppend.prototype.compile = function compile(compiler, env, symbolTable) {
- var expression = this.value.compile(compiler, env, symbolTable);
- if (this.trustingMorph) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.GuardedTrustingAppendOpcode(expression, symbolTable));
- } else {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.GuardedCautiousAppendOpcode(expression, symbolTable));
- }
- };
-
- return UnoptimizedAppend;
- })(Append);
-
- exports.UnoptimizedAppend = UnoptimizedAppend;
-
- var MODIFIER_SYNTAX = "c0420397-8ff1-4241-882b-4b7a107c9632";
-
- var Modifier = (function (_StatementSyntax3) {
- babelHelpers.inherits(Modifier, _StatementSyntax3);
-
- function Modifier(options) {
- _StatementSyntax3.call(this);
- this["c0420397-8ff1-4241-882b-4b7a107c9632"] = true;
- this.type = "modifier";
- this.path = options.path;
- this.args = options.args;
- }
-
- Modifier.fromSpec = function fromSpec(node) {
- var path = node[1];
- var params = node[2];
- var hash = node[3];
-
- return new Modifier({
- path: path,
- args: Args.fromSpec(params, hash)
- });
- };
-
- Modifier.build = function build(path, options) {
- return new Modifier({
- path: path,
- params: options.params,
- hash: options.hash
- });
- };
-
- Modifier.prototype.compile = function compile(compiler, env, symbolTable) {
- var args = this.args.compile(compiler, env, symbolTable);
- if (env.hasModifier(this.path, symbolTable)) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.ModifierOpcode(this.path[0], env.lookupModifier(this.path, symbolTable), args));
- } else {
- throw new Error('Compile Error: ' + this.path.join('.') + ' is not a modifier');
- }
- };
-
- return Modifier;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Modifier = Modifier;
-
- var StaticArg = (function (_ArgumentSyntax) {
- babelHelpers.inherits(StaticArg, _ArgumentSyntax);
-
- function StaticArg(name, value) {
- _ArgumentSyntax.call(this);
- this.name = name;
- this.value = value;
- this.type = "static-arg";
- }
-
- StaticArg.fromSpec = function fromSpec(node) {
- var name = node[1];
- var value = node[2];
-
- return new StaticArg(name, value);
- };
-
- StaticArg.build = function build(name, value) {
- var namespace = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
-
- return new this(name, value);
- };
-
- StaticArg.prototype.compile = function compile() {
- throw new Error('Cannot compiler StaticArg "' + this.name + '" as it is a delegate for ValueSyntax<string>.');
- };
-
- StaticArg.prototype.valueSyntax = function valueSyntax() {
- return Value.build(this.value);
- };
-
- return StaticArg;
- })(_glimmerRuntimeLibSyntax.Argument);
-
- exports.StaticArg = StaticArg;
-
- var DynamicArg = (function (_ArgumentSyntax2) {
- babelHelpers.inherits(DynamicArg, _ArgumentSyntax2);
-
- function DynamicArg(name, value) {
- var namespace = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
-
- _ArgumentSyntax2.call(this);
- this.name = name;
- this.value = value;
- this.namespace = namespace;
- this.type = 'dynamic-arg';
- }
-
- DynamicArg.fromSpec = function fromSpec(sexp) {
- var name = sexp[1];
- var value = sexp[2];
-
- return new DynamicArg(name, _glimmerRuntimeLibSyntaxExpressions.default(value));
- };
-
- DynamicArg.build = function build(name, value) {
- return new this(name, value);
- };
-
- DynamicArg.prototype.compile = function compile() {
- throw new Error('Cannot compile DynamicArg for "' + this.name + '" as it is delegate for ExpressionSyntax<Opaque>.');
- };
-
- DynamicArg.prototype.valueSyntax = function valueSyntax() {
- return this.value;
- };
-
- return DynamicArg;
- })(_glimmerRuntimeLibSyntax.Argument);
-
- exports.DynamicArg = DynamicArg;
-
- var TrustingAttr = (function () {
- function TrustingAttr() {}
-
- TrustingAttr.fromSpec = function fromSpec(sexp) {
- var name = sexp[1];
- var value = sexp[2];
- var namespace = sexp[3];
-
- return new DynamicAttr(name, _glimmerRuntimeLibSyntaxExpressions.default(value), namespace, true);
- };
-
- TrustingAttr.build = function build(name, value, isTrusting) {
- var namespace = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
-
- return new DynamicAttr(name, value, namespace, isTrusting);
- };
-
- TrustingAttr.prototype.compile = function compile() {
- throw new Error('Attempting to compile a TrustingAttr which is just a delegate for DynamicAttr.');
- };
-
- return TrustingAttr;
- })();
-
- exports.TrustingAttr = TrustingAttr;
-
- var StaticAttr = (function (_AttributeSyntax) {
- babelHelpers.inherits(StaticAttr, _AttributeSyntax);
-
- function StaticAttr(name, value, namespace) {
- _AttributeSyntax.call(this);
- this.name = name;
- this.value = value;
- this.namespace = namespace;
- this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true;
- this.type = "static-attr";
- this.isTrusting = false;
- }
-
- StaticAttr.fromSpec = function fromSpec(node) {
- var name = node[1];
- var value = node[2];
- var namespace = node[3];
-
- return new StaticAttr(name, value, namespace);
- };
-
- StaticAttr.build = function build(name, value) {
- var namespace = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
-
- return new this(name, value, namespace);
- };
-
- StaticAttr.prototype.compile = function compile(compiler) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.StaticAttrOpcode(this.namespace, this.name, this.value));
- };
-
- StaticAttr.prototype.valueSyntax = function valueSyntax() {
- return Value.build(this.value);
- };
-
- return StaticAttr;
- })(_glimmerRuntimeLibSyntax.Attribute);
-
- exports.StaticAttr = StaticAttr;
-
- var DynamicAttr = (function (_AttributeSyntax2) {
- babelHelpers.inherits(DynamicAttr, _AttributeSyntax2);
-
- function DynamicAttr(name, value, namespace, isTrusting) {
- if (namespace === undefined) namespace = undefined;
-
- _AttributeSyntax2.call(this);
- this.name = name;
- this.value = value;
- this.namespace = namespace;
- this.isTrusting = isTrusting;
- this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true;
- this.type = "dynamic-attr";
- }
-
- DynamicAttr.fromSpec = function fromSpec(sexp) {
- var name = sexp[1];
- var value = sexp[2];
- var namespace = sexp[3];
-
- return new DynamicAttr(name, _glimmerRuntimeLibSyntaxExpressions.default(value), namespace);
- };
-
- DynamicAttr.build = function build(name, value) {
- var isTrusting = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
- var namespace = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
-
- return new this(name, value, namespace, isTrusting);
- };
-
- DynamicAttr.prototype.compile = function compile(compiler, env, symbolTable) {
- var namespace = this.namespace;
- var value = this.value;
-
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode(value.compile(compiler, env, symbolTable)));
- if (namespace) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrNSOpcode(this.name, this.namespace, this.isTrusting));
- } else {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrOpcode(this.name, this.isTrusting));
- }
- };
-
- DynamicAttr.prototype.valueSyntax = function valueSyntax() {
- return this.value;
- };
-
- return DynamicAttr;
- })(_glimmerRuntimeLibSyntax.Attribute);
-
- exports.DynamicAttr = DynamicAttr;
-
- var FlushElement = (function (_StatementSyntax4) {
- babelHelpers.inherits(FlushElement, _StatementSyntax4);
-
- function FlushElement() {
- _StatementSyntax4.apply(this, arguments);
- this.type = "flush-element";
- }
-
- FlushElement.fromSpec = function fromSpec() {
- return new FlushElement();
- };
-
- FlushElement.build = function build() {
- return new this();
- };
-
- FlushElement.prototype.compile = function compile(compiler) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.FlushElementOpcode());
- };
-
- return FlushElement;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.FlushElement = FlushElement;
-
- var CloseElement = (function (_StatementSyntax5) {
- babelHelpers.inherits(CloseElement, _StatementSyntax5);
-
- function CloseElement() {
- _StatementSyntax5.apply(this, arguments);
- this.type = "close-element";
- }
-
- CloseElement.fromSpec = function fromSpec() {
- return new CloseElement();
- };
-
- CloseElement.build = function build() {
- return new this();
- };
-
- CloseElement.prototype.compile = function compile(compiler) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.CloseElementOpcode());
- };
-
- return CloseElement;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.CloseElement = CloseElement;
-
- var Text = (function (_StatementSyntax6) {
- babelHelpers.inherits(Text, _StatementSyntax6);
-
- function Text(content) {
- _StatementSyntax6.call(this);
- this.content = content;
- this.type = "text";
- }
-
- Text.fromSpec = function fromSpec(node) {
- var content = node[1];
-
- return new Text(content);
- };
-
- Text.build = function build(content) {
- return new this(content);
- };
-
- Text.prototype.compile = function compile(dsl) {
- dsl.text(this.content);
- };
-
- return Text;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Text = Text;
-
- var Comment = (function (_StatementSyntax7) {
- babelHelpers.inherits(Comment, _StatementSyntax7);
-
- function Comment(comment) {
- _StatementSyntax7.call(this);
- this.comment = comment;
- this.type = "comment";
- }
-
- Comment.fromSpec = function fromSpec(sexp) {
- var value = sexp[1];
-
- return new Comment(value);
- };
-
- Comment.build = function build(value) {
- return new this(value);
- };
-
- Comment.prototype.compile = function compile(dsl) {
- dsl.comment(this.comment);
- };
-
- return Comment;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Comment = Comment;
-
- var OpenElement = (function (_StatementSyntax8) {
- babelHelpers.inherits(OpenElement, _StatementSyntax8);
-
- function OpenElement(tag, blockParams, symbolTable) {
- _StatementSyntax8.call(this);
- this.tag = tag;
- this.blockParams = blockParams;
- this.symbolTable = symbolTable;
- this.type = "open-element";
- }
-
- OpenElement.fromSpec = function fromSpec(sexp, symbolTable) {
- var tag = sexp[1];
- var blockParams = sexp[2];
-
- return new OpenElement(tag, blockParams, symbolTable);
- };
-
- OpenElement.build = function build(tag, blockParams, symbolTable) {
- return new this(tag, blockParams, symbolTable);
- };
-
- OpenElement.prototype.scan = function scan(scanner) {
- var tag = this.tag;
-
- if (scanner.env.hasComponentDefinition([tag], this.symbolTable)) {
- var _parameters = this.parameters(scanner);
-
- var args = _parameters.args;
- var attrs = _parameters.attrs;
-
- scanner.startBlock(this.blockParams);
- this.tagContents(scanner);
- var template = scanner.endBlock(this.blockParams);
- return new Component(tag, attrs, args, template);
- } else {
- return new OpenPrimitiveElement(tag);
- }
- };
-
- OpenElement.prototype.compile = function compile(list, env) {
- list.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(this.tag));
- };
-
- OpenElement.prototype.toIdentity = function toIdentity() {
- var tag = this.tag;
-
- return new OpenPrimitiveElement(tag);
- };
-
- OpenElement.prototype.parameters = function parameters(scanner) {
- var current = scanner.next();
- var attrs = [];
- var argKeys = [];
- var argValues = [];
- while (!(current instanceof FlushElement)) {
- if (current[MODIFIER_SYNTAX]) {
- throw new Error('Compile Error: Element modifiers are not allowed in components');
- }
- var param = current;
- if (current[_glimmerRuntimeLibSyntax.ATTRIBUTE]) {
- attrs.push(param.name);
- // REMOVE ME: attributes should not be treated as args
- argKeys.push(param.name);
- argValues.push(param.valueSyntax());
- } else if (current[_glimmerRuntimeLibSyntax.ARGUMENT]) {
- argKeys.push(param.name);
- argValues.push(param.valueSyntax());
- } else {
- throw new Error("Expected FlushElement, but got ${current}");
- }
- current = scanner.next();
- }
- return { args: Args.fromNamedArgs(NamedArgs.build(argKeys, argValues)), attrs: attrs };
- };
-
- OpenElement.prototype.tagContents = function tagContents(scanner) {
- var nesting = 1;
- while (true) {
- var current = scanner.next();
- if (current instanceof CloseElement && --nesting === 0) {
- break;
- }
- scanner.addStatement(current);
- if (current instanceof OpenElement || current instanceof OpenPrimitiveElement) {
- nesting++;
- }
- }
- };
-
- return OpenElement;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.OpenElement = OpenElement;
-
- var Component = (function (_StatementSyntax9) {
- babelHelpers.inherits(Component, _StatementSyntax9);
-
- function Component(tag, attrs, args, template) {
- _StatementSyntax9.call(this);
- this.tag = tag;
- this.attrs = attrs;
- this.args = args;
- this.template = template;
- this.type = 'component';
- }
-
- Component.prototype.compile = function compile(list, env, symbolTable) {
- var definition = env.getComponentDefinition([this.tag], symbolTable);
- var args = this.args.compile(list, env, symbolTable);
- var shadow = this.attrs;
- var templates = new Templates(this.template);
- list.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutComponentDefinitionOpcode(definition));
- list.append(new _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOpcode(args, shadow, templates));
- list.append(new _glimmerRuntimeLibCompiledOpcodesComponent.CloseComponentOpcode());
- };
-
- return Component;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Component = Component;
-
- var OpenPrimitiveElement = (function (_StatementSyntax10) {
- babelHelpers.inherits(OpenPrimitiveElement, _StatementSyntax10);
-
- function OpenPrimitiveElement(tag) {
- _StatementSyntax10.call(this);
- this.tag = tag;
- this.type = "open-primitive-element";
- }
-
- OpenPrimitiveElement.build = function build(tag) {
- return new this(tag);
- };
-
- OpenPrimitiveElement.prototype.compile = function compile(compiler) {
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(this.tag));
- };
-
- return OpenPrimitiveElement;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.OpenPrimitiveElement = OpenPrimitiveElement;
-
- var Yield = (function (_StatementSyntax11) {
- babelHelpers.inherits(Yield, _StatementSyntax11);
-
- function Yield(to, args) {
- _StatementSyntax11.call(this);
- this.to = to;
- this.args = args;
- this.type = "yield";
- }
-
- Yield.fromSpec = function fromSpec(sexp) {
- var to = sexp[1];
- var params = sexp[2];
-
- var args = Args.fromSpec(params, null);
- return new Yield(to, args);
- };
-
- Yield.build = function build(params, to) {
- var args = Args.fromPositionalArgs(PositionalArgs.build(params));
- return new this(to, args);
- };
-
- Yield.prototype.compile = function compile(dsl, env, symbolTable) {
- var to = dsl.getBlockSymbol(this.to);
- var args = this.args.compile(dsl, env, symbolTable);
- dsl.append(new OpenBlockOpcode(to, this.to, args));
- dsl.append(new CloseBlockOpcode());
- };
-
- return Yield;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Yield = Yield;
-
- function isStaticPartialName(exp) {
- return exp.type === 'value';
+ for (var key in attributes) {
+ if (typeof attributes[key] === 'string') {
+ continue;
+ }
+ statements.push(_htmlbarsUtilTemplateUtils.buildStatement("attribute", key, attributes[key]));
}
- var Partial = (function (_StatementSyntax12) {
- babelHelpers.inherits(Partial, _StatementSyntax12);
-
- function Partial() {
- _StatementSyntax12.apply(this, arguments);
+ var template = {
+ arity: 0,
+ cachedFragment: null,
+ hasRendered: false,
+ buildFragment: function buildFragment(dom) {
+ var el0 = this.element;
+ if (el0.namespaceURI === "http://www.w3.org/2000/svg") {
+ dom.setNamespace(svgNamespace);
}
-
- Partial.fromSpec = function fromSpec(sexp) {
- var exp = sexp[1];
-
- var name = _glimmerRuntimeLibSyntaxExpressions.default(exp);
- if (isStaticPartialName(name)) {
- return new _glimmerRuntimeLibSyntaxBuiltinsPartial.StaticPartialSyntax(name);
- } else {
- return new _glimmerRuntimeLibSyntaxBuiltinsPartial.DynamicPartialSyntax(name);
- }
- };
-
- return Partial;
- })(_glimmerRuntimeLibSyntax.Statement);
-
- exports.Partial = Partial;
-
- var OpenBlockOpcode = (function (_Opcode) {
- babelHelpers.inherits(OpenBlockOpcode, _Opcode);
-
- function OpenBlockOpcode(to, label, args) {
- _Opcode.call(this);
- this.to = to;
- this.label = label;
- this.args = args;
- this.type = "open-block";
+ for (var key in attributes) {
+ if (typeof attributes[key] !== 'string') {
+ continue;
+ }
+ dom.setAttribute(el0, key, attributes[key]);
}
- OpenBlockOpcode.prototype.evaluate = function evaluate(vm) {
- var block = vm.scope().getBlock(this.to);
- var args = undefined;
- if (block) {
- args = this.args.evaluate(vm);
- }
- // FIXME: can we avoid doing this when we don't have a block?
- vm.pushCallerScope();
- if (block) {
- vm.invokeBlock(block, args);
- }
- };
+ return el0;
+ },
+ buildRenderNodes: function buildRenderNodes(dom) {
+ var element = this.element;
+ var morphs = [];
- return OpenBlockOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- var CloseBlockOpcode = (function (_Opcode2) {
- babelHelpers.inherits(CloseBlockOpcode, _Opcode2);
-
- function CloseBlockOpcode() {
- _Opcode2.apply(this, arguments);
- this.type = "close-block";
+ for (var key in attributes) {
+ if (typeof attributes[key] === 'string') {
+ continue;
+ }
+ morphs.push(dom.createAttrMorph(element, key));
}
- CloseBlockOpcode.prototype.evaluate = function evaluate(vm) {
- vm.popScope();
- };
-
- return CloseBlockOpcode;
- })(_glimmerRuntimeLibOpcodes.Opcode);
-
- exports.CloseBlockOpcode = CloseBlockOpcode;
-
- var Value = (function (_ExpressionSyntax) {
- babelHelpers.inherits(Value, _ExpressionSyntax);
-
- function Value(value) {
- _ExpressionSyntax.call(this);
- this.value = value;
- this.type = "value";
- }
-
- Value.fromSpec = function fromSpec(value) {
- return new Value(value);
- };
-
- Value.build = function build(value) {
- return new this(value);
- };
-
- Value.prototype.inner = function inner() {
- return this.value;
- };
-
- Value.prototype.compile = function compile(compiler) {
- return new _glimmerRuntimeLibCompiledExpressionsValue.default(this.value);
- };
-
- return Value;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.Value = Value;
-
- var GetArgument = (function (_ExpressionSyntax2) {
- babelHelpers.inherits(GetArgument, _ExpressionSyntax2);
-
- function GetArgument(parts) {
- _ExpressionSyntax2.call(this);
- this.parts = parts;
- this.type = "get-argument";
- }
-
- // this is separated out from Get because Unknown also has a ref, but it
- // may turn out to be a helper
-
- GetArgument.fromSpec = function fromSpec(sexp) {
- var parts = sexp[1];
-
- return new GetArgument(parts);
- };
-
- GetArgument.build = function build(path) {
- return new this(path.split('.'));
- };
-
- GetArgument.prototype.compile = function compile(lookup) {
- var parts = this.parts;
-
- var head = parts[0];
- if (lookup.hasNamedSymbol(head)) {
- var symbol = lookup.getNamedSymbol(head);
- var path = parts.slice(1);
- return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledLocalLookup(symbol, path, head);
- } else if (lookup.hasPartialArgsSymbol()) {
- var symbol = lookup.getPartialArgsSymbol();
- return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledLocalLookup(symbol, parts, head);
- } else {
- throw new Error('Compile Error: ' + this.parts.join('.') + ' is not a valid lookup path.');
- }
- };
-
- return GetArgument;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.GetArgument = GetArgument;
-
- var Ref = (function (_ExpressionSyntax3) {
- babelHelpers.inherits(Ref, _ExpressionSyntax3);
-
- function Ref(parts) {
- _ExpressionSyntax3.call(this);
- this.parts = parts;
- this.type = "ref";
- }
-
- Ref.build = function build(path) {
- var parts = path.split('.');
- if (parts[0] === 'this') {
- parts[0] = null;
- }
- return new this(parts);
- };
-
- Ref.prototype.compile = function compile(lookup) {
- var parts = this.parts;
-
- var head = parts[0];
- var path = parts.slice(1);
- if (head === null) {
- return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledSelfLookup(path);
- } else if (lookup.hasLocalSymbol(head)) {
- var symbol = lookup.getLocalSymbol(head);
- return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledLocalLookup(symbol, path, head);
- } else {
- return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledSelfLookup(parts);
- }
- };
-
- return Ref;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.Ref = Ref;
-
- var Get = (function (_ExpressionSyntax4) {
- babelHelpers.inherits(Get, _ExpressionSyntax4);
-
- function Get(ref) {
- _ExpressionSyntax4.call(this);
- this.ref = ref;
- this.type = "get";
- }
-
- Get.fromSpec = function fromSpec(sexp) {
- var parts = sexp[1];
-
- return new this(new Ref(parts));
- };
-
- Get.build = function build(path) {
- return new this(Ref.build(path));
- };
-
- Get.prototype.compile = function compile(compiler) {
- return this.ref.compile(compiler);
- };
-
- return Get;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.Get = Get;
-
- var Unknown = (function (_ExpressionSyntax5) {
- babelHelpers.inherits(Unknown, _ExpressionSyntax5);
-
- function Unknown(ref) {
- _ExpressionSyntax5.call(this);
- this.ref = ref;
- this.type = "unknown";
- }
-
- Unknown.fromSpec = function fromSpec(sexp) {
- var path = sexp[1];
-
- return new this(new Ref(path));
- };
-
- Unknown.build = function build(path) {
- return new this(Ref.build(path));
- };
-
- Unknown.prototype.compile = function compile(compiler, env, symbolTable) {
- var ref = this.ref;
-
- if (env.hasHelper(ref.parts, symbolTable)) {
- return new _glimmerRuntimeLibCompiledExpressionsHelper.default(ref.parts, env.lookupHelper(ref.parts, symbolTable), _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.empty(), symbolTable);
- } else {
- return this.ref.compile(compiler);
- }
- };
-
- return Unknown;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.Unknown = Unknown;
-
- var Helper = (function (_ExpressionSyntax6) {
- babelHelpers.inherits(Helper, _ExpressionSyntax6);
-
- function Helper(ref, args) {
- _ExpressionSyntax6.call(this);
- this.ref = ref;
- this.args = args;
- this.type = "helper";
- }
-
- Helper.fromSpec = function fromSpec(sexp) {
- var path = sexp[1];
- var params = sexp[2];
- var hash = sexp[3];
-
- return new Helper(new Ref(path), Args.fromSpec(params, hash));
- };
-
- Helper.build = function build(path, positional, named) {
- return new this(Ref.build(path), Args.build(positional, named));
- };
-
- Helper.prototype.compile = function compile(compiler, env, symbolTable) {
- if (env.hasHelper(this.ref.parts, symbolTable)) {
- var args = this.args;
- var ref = this.ref;
-
- return new _glimmerRuntimeLibCompiledExpressionsHelper.default(ref.parts, env.lookupHelper(ref.parts, symbolTable), args.compile(compiler, env, symbolTable), symbolTable);
- } else {
- throw new Error('Compile Error: ' + this.ref.parts.join('.') + ' is not a helper');
- }
- };
-
- return Helper;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.Helper = Helper;
-
- var HasBlock = (function (_ExpressionSyntax7) {
- babelHelpers.inherits(HasBlock, _ExpressionSyntax7);
-
- function HasBlock(blockName) {
- _ExpressionSyntax7.call(this);
- this.blockName = blockName;
- this.type = "has-block";
- }
-
- HasBlock.fromSpec = function fromSpec(sexp) {
- var blockName = sexp[1];
-
- return new HasBlock(blockName);
- };
-
- HasBlock.build = function build(blockName) {
- return new this(blockName);
- };
-
- HasBlock.prototype.compile = function compile(compiler, env) {
- return new _glimmerRuntimeLibCompiledExpressionsHasBlock.default(this.blockName, compiler.getBlockSymbol(this.blockName));
- };
-
- return HasBlock;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.HasBlock = HasBlock;
-
- var HasBlockParams = (function (_ExpressionSyntax8) {
- babelHelpers.inherits(HasBlockParams, _ExpressionSyntax8);
-
- function HasBlockParams(blockName) {
- _ExpressionSyntax8.call(this);
- this.blockName = blockName;
- this.type = "has-block-params";
- }
-
- HasBlockParams.fromSpec = function fromSpec(sexp) {
- var blockName = sexp[1];
-
- return new HasBlockParams(blockName);
- };
-
- HasBlockParams.build = function build(blockName) {
- return new this(blockName);
- };
-
- HasBlockParams.prototype.compile = function compile(compiler, env) {
- return new _glimmerRuntimeLibCompiledExpressionsHasBlockParams.default(this.blockName, compiler.getBlockSymbol(this.blockName));
- };
-
- return HasBlockParams;
- })(_glimmerRuntimeLibSyntax.Expression);
-
- exports.HasBlockParams = HasBlockParams;
-
- var Concat = (function () {
- function Concat(parts) {
- this.parts = parts;
- this.type = "concat";
- }
-
- Concat.fromSpec = function fromSpec(sexp) {
- var params = sexp[1];
-
- return new Concat(params.map(_glimmerRuntimeLibSyntaxExpressions.default));
- };
-
- Concat.build = function build(parts) {
- return new this(parts);
- };
-
- Concat.prototype.compile = function compile(compiler, env, symbolTable) {
- return new _glimmerRuntimeLibCompiledExpressionsConcat.default(this.parts.map(function (p) {
- return p.compile(compiler, env, symbolTable);
- }));
- };
-
- return Concat;
- })();
-
- exports.Concat = Concat;
-
- var Args = (function () {
- function Args(positional, named) {
- this.positional = positional;
- this.named = named;
- this.type = "args";
- }
-
- Args.empty = function empty() {
- return EMPTY_ARGS;
- };
-
- Args.fromSpec = function fromSpec(positional, named) {
- return new Args(PositionalArgs.fromSpec(positional), NamedArgs.fromSpec(named));
- };
-
- Args.fromPositionalArgs = function fromPositionalArgs(positional) {
- return new Args(positional, EMPTY_NAMED_ARGS);
- };
-
- Args.fromNamedArgs = function fromNamedArgs(named) {
- return new Args(EMPTY_POSITIONAL_ARGS, named);
- };
-
- Args.build = function build(positional, named) {
- if (positional === EMPTY_POSITIONAL_ARGS && named === EMPTY_NAMED_ARGS) {
- return EMPTY_ARGS;
- } else {
- return new this(positional, named);
- }
- };
-
- Args.prototype.compile = function compile(compiler, env, symbolTable) {
- var positional = this.positional;
- var named = this.named;
-
- return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.create(positional.compile(compiler, env, symbolTable), named.compile(compiler, env, symbolTable));
- };
-
- return Args;
- })();
-
- exports.Args = Args;
-
- var PositionalArgs = (function () {
- function PositionalArgs(values) {
- this.values = values;
- this.type = "positional";
- this.length = values.length;
- }
-
- PositionalArgs.empty = function empty() {
- return EMPTY_POSITIONAL_ARGS;
- };
-
- PositionalArgs.fromSpec = function fromSpec(sexp) {
- if (!sexp || sexp.length === 0) return EMPTY_POSITIONAL_ARGS;
- return new PositionalArgs(sexp.map(_glimmerRuntimeLibSyntaxExpressions.default));
- };
-
- PositionalArgs.build = function build(exprs) {
- if (exprs.length === 0) {
- return EMPTY_POSITIONAL_ARGS;
- } else {
- return new this(exprs);
- }
- };
-
- PositionalArgs.prototype.slice = function slice(start, end) {
- return PositionalArgs.build(this.values.slice(start, end));
- };
-
- PositionalArgs.prototype.at = function at(index) {
- return this.values[index];
- };
-
- PositionalArgs.prototype.compile = function compile(compiler, env, symbolTable) {
- return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledPositionalArgs.create(this.values.map(function (v) {
- return v.compile(compiler, env, symbolTable);
- }));
- };
-
- return PositionalArgs;
- })();
-
- exports.PositionalArgs = PositionalArgs;
-
- var EMPTY_POSITIONAL_ARGS = new ((function (_PositionalArgs) {
- babelHelpers.inherits(_class, _PositionalArgs);
-
- function _class() {
- _PositionalArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY);
- }
-
- _class.prototype.slice = function slice(start, end) {
- return this;
- };
-
- _class.prototype.at = function at(index) {
- return undefined; // ??!
- };
-
- _class.prototype.compile = function compile(compiler, env) {
- return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledPositionalArgs.empty();
- };
-
- return _class;
- })(PositionalArgs))();
-
- var NamedArgs = (function () {
- function NamedArgs(keys, values) {
- this.keys = keys;
- this.values = values;
- this.type = "named";
- this.length = keys.length;
- }
-
- NamedArgs.empty = function empty() {
- return EMPTY_NAMED_ARGS;
- };
-
- NamedArgs.fromSpec = function fromSpec(sexp) {
- if (sexp === null || sexp === undefined) {
- return EMPTY_NAMED_ARGS;
- }
- var keys = sexp[0];
- var exprs = sexp[1];
-
- if (keys.length === 0) {
- return EMPTY_NAMED_ARGS;
- }
- return new this(keys, exprs.map(function (expr) {
- return _glimmerRuntimeLibSyntaxExpressions.default(expr);
- }));
- };
-
- NamedArgs.build = function build(keys, values) {
- if (keys.length === 0) {
- return EMPTY_NAMED_ARGS;
- } else {
- return new this(keys, values);
- }
- };
-
- NamedArgs.prototype.at = function at(key) {
- var keys = this.keys;
- var values = this.values;
-
- var index = keys.indexOf(key);
- return values[index];
- };
-
- NamedArgs.prototype.has = function has(key) {
- return this.keys.indexOf(key) !== -1;
- };
-
- NamedArgs.prototype.compile = function compile(compiler, env, symbolTable) {
- var keys = this.keys;
- var values = this.values;
-
- return new _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs(keys, values.map(function (value) {
- return value.compile(compiler, env, symbolTable);
- }));
- };
-
- return NamedArgs;
- })();
-
- exports.NamedArgs = NamedArgs;
-
- var EMPTY_NAMED_ARGS = new ((function (_NamedArgs) {
- babelHelpers.inherits(_class2, _NamedArgs);
-
- function _class2() {
- _NamedArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_ARRAY);
- }
-
- _class2.prototype.at = function at(key) {
- return undefined; // ??!
- };
-
- _class2.prototype.has = function has(key) {
- return false;
- };
-
- _class2.prototype.compile = function compile(compiler, env) {
- return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs.empty();
- };
-
- return _class2;
- })(NamedArgs))();
- var EMPTY_ARGS = new ((function (_Args) {
- babelHelpers.inherits(_class3, _Args);
-
- function _class3() {
- _Args.call(this, EMPTY_POSITIONAL_ARGS, EMPTY_NAMED_ARGS);
- }
-
- _class3.prototype.compile = function compile(compiler, env) {
- return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.empty();
- };
-
- return _class3;
- })(Args))();
-
- var Templates = (function () {
- function Templates(_default) {
- var inverse = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
- this.type = "templates";
- this.default = _default;
- this.inverse = inverse;
- }
-
- Templates.fromSpec = function fromSpec(_default) {
- var inverse = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
- return new Templates(_default, inverse);
- };
-
- Templates.empty = function empty() {
- return new Templates(null, null);
- };
-
- return Templates;
- })();
-
- exports.Templates = Templates;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBd0dBLEtBQUE7OEJBQUEsS0FBQTs7QUFvQkUsaUJBcEJGLEtBQUEsQ0FxQlcsSUFBYyxFQUNkLElBQVUsRUFDVixTQUFvQixFQUFBO0FBRTNCLHVDQUFPLENBQUM7QUFKRCxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQVU7QUFDZCxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQU07QUFDVixnQkFBQSxDQUFBLFNBQVMsR0FBVCxTQUFTLENBQVc7QUF0QnRCLGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztTQXlCckI7O0FBMUJILGFBQUEsQ0FHUyxRQUFRLEdBQUEsa0JBQUMsSUFBZ0MsRUFBRSxXQUF3QixFQUFFLE9BQXFCLEVBQUE7Z0JBQ3hGLElBQUksR0FBeUMsSUFBSTtnQkFBM0MsTUFBTSxHQUFpQyxJQUFJO2dCQUFuQyxJQUFJLEdBQTJCLElBQUk7Z0JBQTdCLFVBQVUsR0FBZSxJQUFJO2dCQUFqQixTQUFTLEdBQUksSUFBSTs7QUFFeEQsZ0JBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3pELGdCQUFJLE9BQU8sR0FBRyxBQUFDLE9BQU8sU0FBUyxLQUFLLFFBQVEsR0FBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7QUFFaEcsbUJBQU8sSUFBSSxLQUFLLENBQ2QsSUFBSSxFQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUMzQixTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FDdEMsQ0FBQztTQUNIOztBQWRILGFBQUEsQ0FnQlMsS0FBSyxHQUFBLGVBQUMsSUFBYyxFQUFFLElBQVUsRUFBRSxTQUFvQixFQUFBO0FBQzNELG1C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bmltcG9ydCB7XG4gIEJsb2NrU2Nhbm5lclxufSBmcm9tICcuLi9zY2FubmVyJztcblxuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uL3N5bWJvbC10YWJsZSc7XG5cbmltcG9ydCB7XG4gIEFUVFJJQlVURSBhcyBBVFRSSUJVVEVfU1lOVEFYLFxuICBBUkdVTUVOVCBhcyBBUkdVTUVOVF9TWU5UQVgsXG4gIENvbXBpbGVJbnRvLFxuICBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyU3ludGF4LFxuICBBdHRyaWJ1dGUgYXMgQXR0cmlidXRlU3ludGF4LFxuICBBcmd1bWVudCBhcyBBcmd1bWVudFN5bnRheCxcbiAgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4LFxuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4LFxuICBTeW1ib2xMb29rdXBcbn0gZnJvbSAnLi4vc3ludGF4JztcblxuaW1wb3J0IHtcbiAgU3RhdGljUGFydGlhbFN5bnRheCxcbiAgRHluYW1pY1BhcnRpYWxTeW50YXhcbn0gZnJvbSAnLi9idWlsdGlucy9wYXJ0aWFsJztcblxuaW1wb3J0IHtcbiAgSW5saW5lQmxvY2tcbn0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IHtcbiAgT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQge1xuICBQdXRWYWx1ZU9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcblxuaW1wb3J0IHtcbiAgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSxcbiAgT3BlbkNvbXBvbmVudE9wY29kZSxcbiAgQ2xvc2VDb21wb25lbnRPcGNvZGVcbn0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBNb2RpZmllck9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCBidWlsZEV4cHJlc3Npb24gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVkQXJncyxcbiAgQ29tcGlsZWROYW1lZEFyZ3MsXG4gIENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsXG59IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuXG5pbXBvcnQgQ29tcGlsZWRWYWx1ZSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVkTG9jYWxMb29rdXAsXG4gIENvbXBpbGVkU2VsZkxvb2t1cFxufSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9sb29rdXBzJztcblxuaW1wb3J0IENvbXBpbGVkSGFzQmxvY2sgZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrJztcblxuaW1wb3J0IENvbXBpbGVkSGFzQmxvY2tQYXJhbXMgZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLXBhcmFtcyc7XG5cbmltcG9ydCBDb21waWxlZEhlbHBlciBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9oZWxwZXInO1xuXG5pbXBvcnQgQ29tcGlsZWRDb25jYXQgZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0JztcblxuaW1wb3J0IHtcbiAgQ29tcGlsZWRFeHByZXNzaW9uXG59IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zJztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5cbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5pbXBvcnQge1xuICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZSxcbiAgRmx1c2hFbGVtZW50T3Bjb2RlLFxuICBDbG9zZUVsZW1lbnRPcGNvZGUsXG4gIFN0YXRpY0F0dHJPcGNvZGUsXG4gIER5bmFtaWNBdHRyT3Bjb2RlLFxuICBEeW5hbWljQXR0ck5TT3Bjb2RlXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0IHtcbiAgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUsXG4gIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlLFxuICBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUsXG4gIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5pbXBvcnQge1xuICBTdGF0ZW1lbnRzIGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLFxuICBFeHByZXNzaW9ucyBhcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMsXG4gIENvcmUgYXMgU2VyaWFsaXplZENvcmVcbn0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5cbmV4cG9ydCBjbGFzcyBCbG9jayBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5CbG9jaywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBCbG9jayB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaCwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkXSA9IHNleHA7XG5cbiAgICBsZXQgdGVtcGxhdGUgPSBzY2FubmVyLmJsb2NrRm9yKHN5bWJvbFRhYmxlLCB0ZW1wbGF0ZUlkKTtcbiAgICBsZXQgaW52ZXJzZSA9ICh0eXBlb2YgaW52ZXJzZUlkID09PSAnbnVtYmVyJykgPyBzY2FubmVyLmJsb2NrRm9yKHN5bWJvbFRhYmxlLCBpbnZlcnNlSWQpIDogbnVsbDtcblxuICAgIHJldHVybiBuZXcgQmxvY2soXG4gICAgICBwYXRoLFxuICAgICAgQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpLFxuICAgICAgVGVtcGxhdGVzLmZyb21TcGVjKHRlbXBsYXRlLCBpbnZlcnNlKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGF0aDogc3RyaW5nW10sIGFyZ3M6IEFyZ3MsIHRlbXBsYXRlczogVGVtcGxhdGVzKTogQmxvY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhwYXRoLCBhcmdzLCB0ZW1wbGF0ZXMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBhdGg6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyBhcmdzOiBBcmdzLFxuICAgIHB1YmxpYyB0ZW1wbGF0ZXM6IFRlbXBsYXRlc1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgc2NhbihzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCB7IGRlZmF1bHQ6IF9kZWZhdWx0LCBpbnZlcnNlIH0gPSB0aGlzLnRlbXBsYXRlcztcblxuICAgIGlmIChfZGVmYXVsdCkgc2Nhbm5lci5hZGRDaGlsZChfZGVmYXVsdCk7XG4gICAgaWYgKGludmVyc2UpICBzY2FubmVyLmFkZENoaWxkKGludmVyc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21waWxlKG9wczogQ29tcGlsZUludG8pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXhFcnJvclwiKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQXBwZW5kT3Bjb2RlIHtcbiAgbmV3KCk6IE9wY29kZTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGVuZCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5BcHBlbmQpOiBBcHBlbmQge1xuICAgIGxldCBbLCB2YWx1ZSwgdHJ1c3RpbmdNb3JwaF0gPSBzZXhwO1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkQXBwZW5kKHsgdmFsdWU6IGJ1aWxkRXhwcmVzc2lvbih2YWx1ZSksIHRydXN0aW5nTW9ycGggfSk7XG4gIH1cblxuICB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxhbnk+O1xuICB0cnVzdGluZ01vcnBoOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHsgdmFsdWUsIHRydXN0aW5nTW9ycGggfTogeyB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxhbnk+LCB0cnVzdGluZ01vcnBoOiBib29sZWFuIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnRydXN0aW5nTW9ycGggPSB0cnVzdGluZ01vcnBoO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRBcHBlbmQgZXh0ZW5kcyBBcHBlbmQge1xuICBwdWJsaWMgdHlwZSA9IFwib3B0aW1pemVkLWFwcGVuZFwiO1xuXG4gIGRlb3B0KCk6IFVub3B0aW1pemVkQXBwZW5kIHtcbiAgICByZXR1cm4gbmV3IFVub3B0aW1pemVkQXBwZW5kKHRoaXMpO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogQ29tcGlsZUludG8gJiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgUHV0VmFsdWVPcGNvZGUodGhpcy52YWx1ZS5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSkpO1xuXG4gICAgaWYgKHRoaXMudHJ1c3RpbmdNb3JwaCkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVub3B0aW1pemVkQXBwZW5kIGV4dGVuZHMgQXBwZW5kIHtcbiAgcHVibGljIHR5cGUgPSBcInVub3B0aW1pemVkLWFwcGVuZFwiO1xuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBsZXQgZXhwcmVzc2lvbiA9IHRoaXMudmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSk7XG5cbiAgICBpZiAodGhpcy50cnVzdGluZ01vcnBoKSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZShleHByZXNzaW9uLCBzeW1ib2xUYWJsZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZShleHByZXNzaW9uLCBzeW1ib2xUYWJsZSkpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBNT0RJRklFUl9TWU5UQVggPSBcImMwNDIwMzk3LThmZjEtNDI0MS04ODJiLTRiN2ExMDdjOTYzMlwiO1xuXG5leHBvcnQgY2xhc3MgTW9kaWZpZXIgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBcImMwNDIwMzk3LThmZjEtNDI0MS04ODJiLTRiN2ExMDdjOTYzMlwiID0gdHJ1ZTtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nID0gXCJtb2RpZmllclwiO1xuICBwdWJsaWMgcGF0aDogc3RyaW5nW107XG4gIHB1YmxpYyBhcmdzOiBBcmdzO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhub2RlKSB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaF0gPSBub2RlO1xuXG4gICAgcmV0dXJuIG5ldyBNb2RpZmllcih7XG4gICAgICBwYXRoLFxuICAgICAgYXJnczogQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGF0aCwgb3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTW9kaWZpZXIoe1xuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtczogb3B0aW9ucy5wYXJhbXMsXG4gICAgICBoYXNoOiBvcHRpb25zLmhhc2hcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucGF0aCA9IG9wdGlvbnMucGF0aDtcbiAgICB0aGlzLmFyZ3MgPSBvcHRpb25zLmFyZ3M7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50byAmIFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSk7XG5cbiAgICBpZiAoZW52Lmhhc01vZGlmaWVyKHRoaXMucGF0aCwgc3ltYm9sVGFibGUpKSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IE1vZGlmaWVyT3Bjb2RlKFxuICAgICAgICB0aGlzLnBhdGhbMF0sXG4gICAgICAgIGVudi5sb29rdXBNb2RpZmllcih0aGlzLnBhdGgsIHN5bWJvbFRhYmxlKSxcbiAgICAgICAgYXJnc1xuICAgICAgKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogJHt0aGlzLnBhdGguam9pbignLicpfSBpcyBub3QgYSBtb2RpZmllcmApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXJnIGV4dGVuZHMgQXJndW1lbnRTeW50YXg8c3RyaW5nPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJzdGF0aWMtYXJnXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGU6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLlN0YXRpY0FyZyk6IFN0YXRpY0FyZyB7XG4gICAgbGV0IFssIG5hbWUsIHZhbHVlXSA9IG5vZGU7XG4gICAgcmV0dXJuIG5ldyBTdGF0aWNBcmcobmFtZSwgdmFsdWUgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBTdGF0aWNBcmcge1xuICAgIHJldHVybiBuZXcgdGhpcyhuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21waWxlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBpbGVyIFN0YXRpY0FyZyBcIiR7dGhpcy5uYW1lfVwiIGFzIGl0IGlzIGEgZGVsZWdhdGUgZm9yIFZhbHVlU3ludGF4PHN0cmluZz4uYCk7XG4gIH1cblxuICB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4ge1xuICAgIHJldHVybiBWYWx1ZS5idWlsZCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0FyZyBleHRlbmRzIEFyZ3VtZW50U3ludGF4PE9wYXF1ZT4ge1xuICBwdWJsaWMgdHlwZSA9ICdkeW5hbWljLWFyZyc7XG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5EeW5hbWljQXJnKTogRHluYW1pY0FyZyB7XG4gICAgbGV0IFssIG5hbWUsIHZhbHVlXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IER5bmFtaWNBcmcoXG4gICAgICBuYW1lLFxuICAgICAgYnVpbGRFeHByZXNzaW9uKHZhbHVlKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+KTogRHluYW1pY0FyZyB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4sXG4gICAgcHVibGljIG5hbWVzcGFjZTogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIER5bmFtaWNBcmcgZm9yIFwiJHt0aGlzLm5hbWV9XCIgYXMgaXQgaXMgZGVsZWdhdGUgZm9yIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPi5gKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGluZ0F0dHIge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuVHJ1c3RpbmdBdHRyKTogRHluYW1pY0F0dHIge1xuICAgIGxldCBbLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljQXR0cihcbiAgICAgIG5hbWUsXG4gICAgICBidWlsZEV4cHJlc3Npb24odmFsdWUpLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U6IHN0cmluZz1udWxsKTogRHluYW1pY0F0dHIge1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBjb21waWxlKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gY29tcGlsZSBhIFRydXN0aW5nQXR0ciB3aGljaCBpcyBqdXN0IGEgZGVsZWdhdGUgZm9yIER5bmFtaWNBdHRyLicpOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyIGV4dGVuZHMgQXR0cmlidXRlU3ludGF4PHN0cmluZz4ge1xuICBcImUxMTg1ZDMwLTdjYWMtNGIxMi1iMjZhLTM1MzI3ZDkwNWQ5MlwiID0gdHJ1ZTtcbiAgdHlwZSA9IFwic3RhdGljLWF0dHJcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMobm9kZTogU2VyaWFsaXplZFN0YXRlbWVudHMuU3RhdGljQXR0cik6IFN0YXRpY0F0dHIge1xuICAgIGxldCBbLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSA9IG5vZGU7XG4gICAgcmV0dXJuIG5ldyBTdGF0aWNBdHRyKG5hbWUsIHZhbHVlIGFzIHN0cmluZywgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBTdGF0aWNBdHRyIHtcbiAgICByZXR1cm4gbmV3IHRoaXMobmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBpc1RydXN0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgdmFsdWU6IHN0cmluZyxcbiAgICBwdWJsaWMgbmFtZXNwYWNlOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvKSB7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBTdGF0aWNBdHRyT3Bjb2RlKHRoaXMubmFtZXNwYWNlLCB0aGlzLm5hbWUsIHRoaXMudmFsdWUpKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFZhbHVlLmJ1aWxkKHRoaXMudmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5EeW5hbWljQXR0cik6IER5bmFtaWNBdHRyIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBzZXhwO1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoXG4gICAgICBuYW1lLFxuICAgICAgYnVpbGRFeHByZXNzaW9uKHZhbHVlKSxcbiAgICAgIG5hbWVzcGFjZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nID0gZmFsc2UsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBEeW5hbWljQXR0ciB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPixcbiAgICBwdWJsaWMgbmFtZXNwYWNlOiBzdHJpbmcgPSB1bmRlZmluZWQsXG4gICAgcHVibGljIGlzVHJ1c3Rpbmc/OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogQ29tcGlsZUludG8gJiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCB7bmFtZXNwYWNlLCB2YWx1ZX0gPSB0aGlzO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgUHV0VmFsdWVPcGNvZGUodmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpKTtcbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IER5bmFtaWNBdHRyTlNPcGNvZGUodGhpcy5uYW1lLCB0aGlzLm5hbWVzcGFjZSwgdGhpcy5pc1RydXN0aW5nKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRHluYW1pY0F0dHJPcGNvZGUodGhpcy5uYW1lLCB0aGlzLmlzVHJ1c3RpbmcpKTtcbiAgICB9XG4gIH1cblxuICB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbHVzaEVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJmbHVzaC1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgIHJldHVybiBuZXcgRmx1c2hFbGVtZW50KCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50bykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRmx1c2hFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZUVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJjbG9zZS1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgIHJldHVybiBuZXcgQ2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50bykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgQ2xvc2VFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwidGV4dFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhub2RlOiBTZXJpYWxpemVkU3RhdGVtZW50cy5UZXh0KTogVGV4dCB7XG4gICAgbGV0IFssIGNvbnRlbnRdID0gbm9kZTtcbiAgICByZXR1cm4gbmV3IFRleHQoY29udGVudCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoY29udGVudCk6IFRleHQge1xuICAgIHJldHVybiBuZXcgdGhpcyhjb250ZW50KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICBkc2wudGV4dCh0aGlzLmNvbnRlbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwiY29tbWVudFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5Db21tZW50KTogQ29tbWVudCB7XG4gICAgbGV0IFssIHZhbHVlXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IENvbW1lbnQodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHZhbHVlOiBzdHJpbmcpOiBDb21tZW50IHtcbiAgICByZXR1cm4gbmV3IHRoaXModmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIGRzbC5jb21tZW50KHRoaXMuY29tbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwib3Blbi1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLk9wZW5FbGVtZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBPcGVuRWxlbWVudCB7XG4gICAgbGV0IFssIHRhZywgYmxvY2tQYXJhbXNdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgT3BlbkVsZW1lbnQoXG4gICAgICB0YWcsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIHN5bWJvbFRhYmxlXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZCh0YWc6IHN0cmluZywgYmxvY2tQYXJhbXM6IHN0cmluZ1tdLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBPcGVuRWxlbWVudCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHRhZywgYmxvY2tQYXJhbXMsIHN5bWJvbFRhYmxlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IHN0cmluZyxcbiAgICBwdWJsaWMgYmxvY2tQYXJhbXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHNjYW4oc2Nhbm5lcjogQmxvY2tTY2FubmVyKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICBsZXQgeyB0YWcgfSA9IHRoaXM7XG5cbiAgICBpZiAoc2Nhbm5lci5lbnYuaGFzQ29tcG9uZW50RGVmaW5pdGlvbihbdGFnXSwgdGhpcy5zeW1ib2xUYWJsZSkpIHtcbiAgICAgIGxldCB7IGFyZ3MsIGF0dHJzIH0gPSB0aGlzLnBhcmFtZXRlcnMoc2Nhbm5lcik7XG4gICAgICBzY2FubmVyLnN0YXJ0QmxvY2sodGhpcy5ibG9ja1BhcmFtcyk7XG4gICAgICB0aGlzLnRhZ0NvbnRlbnRzKHNjYW5uZXIpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gc2Nhbm5lci5lbmRCbG9jayh0aGlzLmJsb2NrUGFyYW1zKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHRhZywgYXR0cnMsIGFyZ3MsIHRlbXBsYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBPcGVuUHJpbWl0aXZlRWxlbWVudCh0YWcpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBpbGUobGlzdDogQ29tcGlsZUludG8sIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsaXN0LmFwcGVuZChuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGhpcy50YWcpKTtcbiAgfVxuXG4gIHRvSWRlbnRpdHkoKTogT3BlblByaW1pdGl2ZUVsZW1lbnQge1xuICAgIGxldCB7IHRhZyB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IE9wZW5QcmltaXRpdmVFbGVtZW50KHRhZyk7XG4gIH1cblxuICBwcml2YXRlIHBhcmFtZXRlcnMoc2Nhbm5lcjogQmxvY2tTY2FubmVyKTogeyBhcmdzOiBBcmdzLCBhdHRyczogc3RyaW5nW10gfSB7XG4gICAgbGV0IGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICBsZXQgYXR0cnM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGFyZ0tleXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGFyZ1ZhbHVlczogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W10gPSBbXTtcblxuICAgIHdoaWxlICghKGN1cnJlbnQgaW5zdGFuY2VvZiBGbHVzaEVsZW1lbnQpKSB7XG4gICAgICBpZiAoY3VycmVudFtNT0RJRklFUl9TWU5UQVhdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHNgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmFtID0gPFBhcmFtZXRlclN5bnRheDxPcGFxdWU+PmN1cnJlbnQ7XG5cbiAgICAgIGlmIChjdXJyZW50W0FUVFJJQlVURV9TWU5UQVhdKSB7XG4gICAgICAgIGF0dHJzLnB1c2gocGFyYW0ubmFtZSk7XG5cbiAgICAgICAgLy8gUkVNT1ZFIE1FOiBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhcmdzXG4gICAgICAgIGFyZ0tleXMucHVzaChwYXJhbS5uYW1lKTtcbiAgICAgICAgYXJnVmFsdWVzLnB1c2gocGFyYW0udmFsdWVTeW50YXgoKSk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRbQVJHVU1FTlRfU1lOVEFYXSkge1xuICAgICAgICBhcmdLZXlzLnB1c2gocGFyYW0ubmFtZSk7XG4gICAgICAgIGFyZ1ZhbHVlcy5wdXNoKHBhcmFtLnZhbHVlU3ludGF4KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgRmx1c2hFbGVtZW50LCBidXQgZ290ICR7Y3VycmVudH1cIik7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBhcmdzOiBBcmdzLmZyb21OYW1lZEFyZ3MoTmFtZWRBcmdzLmJ1aWxkKGFyZ0tleXMsIGFyZ1ZhbHVlcykpLCBhdHRycyB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0YWdDb250ZW50cyhzY2FubmVyOiBCbG9ja1NjYW5uZXIpIHtcbiAgICBsZXQgbmVzdGluZyA9IDE7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgbGV0IGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICAgIGlmIChjdXJyZW50IGluc3RhbmNlb2YgQ2xvc2VFbGVtZW50ICYmIC0tbmVzdGluZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc2Nhbm5lci5hZGRTdGF0ZW1lbnQoY3VycmVudCk7XG5cbiAgICAgIGlmIChjdXJyZW50IGluc3RhbmNlb2YgT3BlbkVsZW1lbnQgfHwgY3VycmVudCBpbnN0YW5jZW9mIE9wZW5QcmltaXRpdmVFbGVtZW50KSB7XG4gICAgICAgIG5lc3RpbmcrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHB1YmxpYyB0eXBlID0gJ2NvbXBvbmVudCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhZzogc3RyaW5nLFxuICAgIHB1YmxpYyBhdHRyczogc3RyaW5nW10sXG4gICAgcHVibGljIGFyZ3M6IEFyZ3MsXG4gICAgcHVibGljIHRlbXBsYXRlOiBJbmxpbmVCbG9ja1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShsaXN0OiBDb21waWxlSW50byAmIFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgbGV0IGRlZmluaXRpb24gPSBlbnYuZ2V0Q29tcG9uZW50RGVmaW5pdGlvbihbdGhpcy50YWddLCBzeW1ib2xUYWJsZSk7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShsaXN0IGFzIFN5bWJvbExvb2t1cCwgZW52LCBzeW1ib2xUYWJsZSk7XG4gICAgbGV0IHNoYWRvdyA9IHRoaXMuYXR0cnM7XG4gICAgbGV0IHRlbXBsYXRlcyA9IG5ldyBUZW1wbGF0ZXModGhpcy50ZW1wbGF0ZSk7XG5cbiAgICBsaXN0LmFwcGVuZChuZXcgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gICAgbGlzdC5hcHBlbmQobmV3IE9wZW5Db21wb25lbnRPcGNvZGUoYXJncywgc2hhZG93LCB0ZW1wbGF0ZXMpKTtcbiAgICBsaXN0LmFwcGVuZChuZXcgQ2xvc2VDb21wb25lbnRPcGNvZGUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5QcmltaXRpdmVFbGVtZW50IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwib3Blbi1wcmltaXRpdmUtZWxlbWVudFwiO1xuXG4gIHN0YXRpYyBidWlsZCh0YWc6IHN0cmluZyk6IE9wZW5QcmltaXRpdmVFbGVtZW50IHtcbiAgICByZXR1cm4gbmV3IHRoaXModGFnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0YWc6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50bykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGhpcy50YWcpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgWWllbGQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuWWllbGQpOiBZaWVsZCB7XG4gICAgbGV0IFssIHRvLCBwYXJhbXNdID0gc2V4cDtcblxuICAgIGxldCBhcmdzID0gQXJncy5mcm9tU3BlYyhwYXJhbXMsIG51bGwpO1xuXG4gICAgcmV0dXJuIG5ldyBZaWVsZCh0bywgYXJncyk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGFyYW1zOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSwgdG86IHN0cmluZyk6IFlpZWxkIHtcbiAgICBsZXQgYXJncyA9IEFyZ3MuZnJvbVBvc2l0aW9uYWxBcmdzKFBvc2l0aW9uYWxBcmdzLmJ1aWxkKHBhcmFtcykpO1xuICAgIHJldHVybiBuZXcgdGhpcyh0bywgYXJncyk7XG4gIH1cblxuICB0eXBlID0gXCJ5aWVsZFwiO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0bzogc3RyaW5nLCBwdWJsaWMgYXJnczogQXJncykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgbGV0IHRvID0gZHNsLmdldEJsb2NrU3ltYm9sKHRoaXMudG8pO1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmdzLmNvbXBpbGUoZHNsLCBlbnYsIHN5bWJvbFRhYmxlKTtcbiAgICBkc2wuYXBwZW5kKG5ldyBPcGVuQmxvY2tPcGNvZGUodG8sIHRoaXMudG8sIGFyZ3MpKTtcbiAgICBkc2wuYXBwZW5kKG5ldyBDbG9zZUJsb2NrT3Bjb2RlKCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljUGFydGlhbE5hbWUoZXhwOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4pOiBleHAgaXMgVmFsdWU8YW55PiB7XG4gIHJldHVybiBleHAudHlwZSA9PT0gJ3ZhbHVlJztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBhcnRpYWwgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuUGFydGlhbCk6IFBhcnRpYWwge1xuICAgIGxldCBbLCBleHBdID0gc2V4cDtcblxuICAgIGxldCBuYW1lID0gYnVpbGRFeHByZXNzaW9uKGV4cCkgYXMgRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+O1xuXG4gICAgaWYgKGlzU3RhdGljUGFydGlhbE5hbWUobmFtZSkpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhdGljUGFydGlhbFN5bnRheChuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEeW5hbWljUGFydGlhbFN5bnRheChuYW1lKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgT3BlbkJsb2NrT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgdHlwZSA9IFwib3Blbi1ibG9ja1wiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0bzogbnVtYmVyLFxuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nLFxuICAgIHB1YmxpYyBhcmdzOiBDb21waWxlZEFyZ3NcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2sodGhpcy50byk7XG4gICAgbGV0IGFyZ3M7XG5cbiAgICBpZiAoYmxvY2spIHtcbiAgICAgIGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pO1xuICAgIH1cblxuICAgIC8vIEZJWE1FOiBjYW4gd2UgYXZvaWQgZG9pbmcgdGhpcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBibG9jaz9cbiAgICB2bS5wdXNoQ2FsbGVyU2NvcGUoKTtcblxuICAgIGlmIChibG9jaykge1xuICAgICAgdm0uaW52b2tlQmxvY2soYmxvY2ssIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvc2VCbG9ja09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJjbG9zZS1ibG9ja1wiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcFNjb3BlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlPFQgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVmFsdWU+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJ2YWx1ZVwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYzxVIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZTogVSk6IFZhbHVlPFU+IHtcbiAgICByZXR1cm4gbmV3IFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZDxVIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZTogVSk6IFZhbHVlPFU+IHtcbiAgICByZXR1cm4gbmV3IHRoaXModmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBUKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGlubmVyKCk6IFQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwKTogQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkVmFsdWU8VD4odGhpcy52YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEFyZ3VtZW50PFQ+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHR5cGUgPSBcImdldC1hcmd1bWVudFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuQXJnKTogR2V0QXJndW1lbnQ8T3BhcXVlPiB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IEdldEFyZ3VtZW50PE9wYXF1ZT4ocGFydHMpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHBhdGg6IHN0cmluZyk6IEdldEFyZ3VtZW50PE9wYXF1ZT4ge1xuICAgIHJldHVybiBuZXcgdGhpczxPcGFxdWU+KHBhdGguc3BsaXQoJy4nKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFydHM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUobG9va3VwOiBTeW1ib2xMb29rdXApOiBDb21waWxlZEV4cHJlc3Npb248VD4ge1xuICAgIGxldCB7IHBhcnRzIH0gPSB0aGlzO1xuICAgIGxldCBoZWFkID0gcGFydHNbMF07XG5cbiAgICBpZiAobG9va3VwLmhhc05hbWVkU3ltYm9sKGhlYWQpKSB7XG4gICAgICBsZXQgc3ltYm9sID0gbG9va3VwLmdldE5hbWVkU3ltYm9sKGhlYWQpO1xuICAgICAgbGV0IHBhdGggPSBwYXJ0cy5zbGljZSgxKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhdGgsIGhlYWQpO1xuICAgIH0gZWxzZSBpZiAobG9va3VwLmhhc1BhcnRpYWxBcmdzU3ltYm9sKCkpIHtcbiAgICAgIGxldCBzeW1ib2wgPSBsb29rdXAuZ2V0UGFydGlhbEFyZ3NTeW1ib2woKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhcnRzLCBoZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAke3RoaXMucGFydHMuam9pbignLicpfSBpcyBub3QgYSB2YWxpZCBsb29rdXAgcGF0aC5gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gdGhpcyBpcyBzZXBhcmF0ZWQgb3V0IGZyb20gR2V0IGJlY2F1c2UgVW5rbm93biBhbHNvIGhhcyBhIHJlZiwgYnV0IGl0XG4vLyBtYXkgdHVybiBvdXQgdG8gYmUgYSBoZWxwZXJcbmV4cG9ydCBjbGFzcyBSZWYgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJyZWZcIjtcblxuICBzdGF0aWMgYnVpbGQocGF0aDogc3RyaW5nKTogUmVmIHtcbiAgICBsZXQgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG5cbiAgICBpZiAocGFydHNbMF0gPT09ICd0aGlzJykge1xuICAgICAgcGFydHNbMF0gPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgdGhpcyhwYXJ0cyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFydHM6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUobG9va3VwOiBTeW1ib2xMb29rdXApOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gICAgbGV0IHsgcGFydHMgfSA9IHRoaXM7XG4gICAgbGV0IGhlYWQgPSBwYXJ0c1swXTtcbiAgICBsZXQgcGF0aCA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgaWYgKGhlYWQgPT09IG51bGwpIHsgLy8ge3t0aGlzLmZvb319XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkU2VsZkxvb2t1cChwYXRoKTtcbiAgICB9IGVsc2UgaWYgKGxvb2t1cC5oYXNMb2NhbFN5bWJvbChoZWFkKSkge1xuICAgICAgbGV0IHN5bWJvbCA9IGxvb2t1cC5nZXRMb2NhbFN5bWJvbChoZWFkKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhdGgsIGhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkU2VsZkxvb2t1cChwYXJ0cyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXQgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJnZXRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkdldCk6IEdldCB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG5ldyBSZWYocGFydHMpKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBHZXQge1xuICAgIHJldHVybiBuZXcgdGhpcyhSZWYuYnVpbGQocGF0aCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVua25vd24gZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGFueT4ge1xuICBwdWJsaWMgdHlwZSA9IFwidW5rbm93blwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVW5rbm93bik6IFVua25vd24ge1xuICAgIGxldCBbLCBwYXRoXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IHRoaXMobmV3IFJlZihwYXRoKSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGF0aDogc3RyaW5nKTogVW5rbm93biB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFJlZi5idWlsZChwYXRoKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVmOiBSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gICAgbGV0IHsgcmVmIH0gPSB0aGlzO1xuXG4gICAgaWYgKGVudi5oYXNIZWxwZXIocmVmLnBhcnRzLCBzeW1ib2xUYWJsZSkpIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIZWxwZXIocmVmLnBhcnRzLCBlbnYubG9va3VwSGVscGVyKHJlZi5wYXJ0cywgc3ltYm9sVGFibGUpLCBDb21waWxlZEFyZ3MuZW1wdHkoKSwgc3ltYm9sVGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWxwZXIgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJoZWxwZXJcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkhlbHBlcik6IEhlbHBlciB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaF0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBIZWxwZXIoXG4gICAgICBuZXcgUmVmKHBhdGgpLFxuICAgICAgQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcsIHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLCBuYW1lZDogTmFtZWRBcmdzKTogSGVscGVyIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoUmVmLmJ1aWxkKHBhdGgpLCBBcmdzLmJ1aWxkKHBvc2l0aW9uYWwsIG5hbWVkKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVmOiBSZWYsIHB1YmxpYyBhcmdzOiBBcmdzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4ge1xuICAgIGlmIChlbnYuaGFzSGVscGVyKHRoaXMucmVmLnBhcnRzLCBzeW1ib2xUYWJsZSkpIHtcbiAgICAgIGxldCB7IGFyZ3MsIHJlZiB9ID0gdGhpcztcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIZWxwZXIocmVmLnBhcnRzLCBlbnYubG9va3VwSGVscGVyKHJlZi5wYXJ0cywgc3ltYm9sVGFibGUpLCBhcmdzLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpLCBzeW1ib2xUYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogJHt0aGlzLnJlZi5wYXJ0cy5qb2luKCcuJyl9IGlzIG5vdCBhIGhlbHBlcmApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGFzQmxvY2sgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGJvb2xlYW4+IHtcbiAgdHlwZSA9IFwiaGFzLWJsb2NrXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRFeHByZXNzaW9ucy5IYXNCbG9jayk6IEhhc0Jsb2NrIHtcbiAgICBsZXQgWywgYmxvY2tOYW1lXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBIYXNCbG9jayhibG9ja05hbWUpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGJsb2NrTmFtZTogc3RyaW5nKTogSGFzQmxvY2sge1xuICAgIHJldHVybiBuZXcgdGhpcyhibG9ja05hbWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJsb2NrTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkSGFzQmxvY2sge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRIYXNCbG9jayhcbiAgICAgIHRoaXMuYmxvY2tOYW1lLFxuICAgICAgY29tcGlsZXIuZ2V0QmxvY2tTeW1ib2wodGhpcy5ibG9ja05hbWUpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGFzQmxvY2tQYXJhbXMgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGJvb2xlYW4+IHtcbiAgdHlwZSA9IFwiaGFzLWJsb2NrLXBhcmFtc1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXMpOiBIYXNCbG9ja1BhcmFtcyB7XG4gICAgbGV0IFssIGJsb2NrTmFtZV0gPSBzZXhwO1xuICAgIHJldHVybiBuZXcgSGFzQmxvY2tQYXJhbXMoYmxvY2tOYW1lKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChibG9ja05hbWU6IHN0cmluZyk6IEhhc0Jsb2NrUGFyYW1zIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYmxvY2tOYW1lKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBibG9ja05hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEhhc0Jsb2NrUGFyYW1zIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkSGFzQmxvY2tQYXJhbXMoXG4gICAgICB0aGlzLmJsb2NrTmFtZSxcbiAgICAgIGNvbXBpbGVyLmdldEJsb2NrU3ltYm9sKHRoaXMuYmxvY2tOYW1lKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmNhdCB7XG4gIHB1YmxpYyB0eXBlID0gXCJjb25jYXRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkNvbmNhdCk6IENvbmNhdCB7XG4gICAgbGV0IFssIHBhcmFtc10gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBDb25jYXQocGFyYW1zLm1hcChidWlsZEV4cHJlc3Npb24pKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXJ0cyk6IENvbmNhdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHBhcnRzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJ0czogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W10pIHt9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZENvbmNhdCB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZENvbmNhdCh0aGlzLnBhcnRzLm1hcChwID0+IHAuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXJncyB7XG4gIHB1YmxpYyB0eXBlID0gXCJhcmdzXCI7XG5cbiAgc3RhdGljIGVtcHR5KCk6IEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9BUkdTO1xuICB9XG5cbiAgc3RhdGljIGZyb21TcGVjKHBvc2l0aW9uYWw6IFNlcmlhbGl6ZWRDb3JlLlBhcmFtcywgbmFtZWQ6IFNlcmlhbGl6ZWRDb3JlLkhhc2gpOiBBcmdzIHtcbiAgICByZXR1cm4gbmV3IEFyZ3MoUG9zaXRpb25hbEFyZ3MuZnJvbVNwZWMocG9zaXRpb25hbCksIE5hbWVkQXJncy5mcm9tU3BlYyhuYW1lZCkpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qb3NpdGlvbmFsQXJncyhwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJncyk6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyhwb3NpdGlvbmFsLCBFTVBUWV9OQU1FRF9BUkdTKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTmFtZWRBcmdzKG5hbWVkOiBOYW1lZEFyZ3MpOiBBcmdzIHtcbiAgICByZXR1cm4gbmV3IEFyZ3MoRU1QVFlfUE9TSVRJT05BTF9BUkdTLCBuYW1lZCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBOYW1lZEFyZ3MpOiBBcmdzIHtcbiAgICBpZiAocG9zaXRpb25hbCA9PT0gRU1QVFlfUE9TSVRJT05BTF9BUkdTICYmIG5hbWVkID09PSBFTVBUWV9OQU1FRF9BUkdTKSB7XG4gICAgICByZXR1cm4gRU1QVFlfQVJHUztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHBvc2l0aW9uYWwsIG5hbWVkKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3MsXG4gICAgcHVibGljIG5hbWVkOiBOYW1lZEFyZ3NcbiAgKSB7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IENvbXBpbGVkQXJncyB7XG4gICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgcmV0dXJuIENvbXBpbGVkQXJncy5jcmVhdGUocG9zaXRpb25hbC5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSwgbmFtZWQuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbmFsQXJncyB7XG4gIHB1YmxpYyB0eXBlID0gXCJwb3NpdGlvbmFsXCI7XG5cbiAgc3RhdGljIGVtcHR5KCk6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICB9XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRDb3JlLlBhcmFtcyk6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICBpZiAoIXNleHAgfHwgc2V4cC5sZW5ndGggPT09IDApIHJldHVybiBFTVBUWV9QT1NJVElPTkFMX0FSR1M7XG4gICAgcmV0dXJuIG5ldyBQb3NpdGlvbmFsQXJncyhzZXhwLm1hcChidWlsZEV4cHJlc3Npb24pKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChleHByczogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W10pOiBQb3NpdGlvbmFsQXJncyB7XG4gICAgaWYgKGV4cHJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEVNUFRZX1BPU0lUSU9OQUxfQVJHUztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4cHJzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHZhbHVlczogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W10pIHtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICBzbGljZShzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBQb3NpdGlvbmFsQXJncy5idWlsZCh0aGlzLnZhbHVlcy5zbGljZShzdGFydCwgZW5kKSk7XG4gIH1cblxuICBhdChpbmRleDogbnVtYmVyKTogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gQ29tcGlsZWRQb3NpdGlvbmFsQXJncy5jcmVhdGUodGhpcy52YWx1ZXMubWFwKHYgPT4gdi5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSkpO1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX1BPU0lUSU9OQUxfQVJHUyA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBQb3NpdGlvbmFsQXJncyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVNUFRZX0FSUkFZKTtcbiAgfVxuXG4gIHNsaWNlKHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIpOiBQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhdChpbmRleDogbnVtYmVyKTogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyA/PyFcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBDb21waWxlZFBvc2l0aW9uYWxBcmdzLmVtcHR5KCk7XG4gIH1cbn0pO1xuXG5leHBvcnQgY2xhc3MgTmFtZWRBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcIm5hbWVkXCI7XG5cbiAgc3RhdGljIGVtcHR5KCk6IE5hbWVkQXJncyB7XG4gICAgcmV0dXJuIEVNUFRZX05BTUVEX0FSR1M7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZENvcmUuSGFzaCk6IE5hbWVkQXJncyB7XG4gICAgaWYgKHNleHAgPT09IG51bGwgfHwgc2V4cCA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBFTVBUWV9OQU1FRF9BUkdTOyB9XG5cbiAgICBsZXQgW2tleXMsIGV4cHJzXSA9IHNleHA7XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHsgcmV0dXJuIEVNUFRZX05BTUVEX0FSR1M7IH1cblxuICAgIHJldHVybiBuZXcgdGhpcyhrZXlzLCBleHBycy5tYXAoZXhwciA9PiBidWlsZEV4cHJlc3Npb24oZXhwcikpKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChrZXlzOiBzdHJpbmdbXSwgdmFsdWVzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSk6IE5hbWVkQXJncyB7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gRU1QVFlfTkFNRURfQVJHUztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGtleXMsIHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBrZXlzOiBzdHJpbmdbXSxcbiAgICBwdWJsaWMgdmFsdWVzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXVxuICApIHtcbiAgICB0aGlzLmxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB9XG5cbiAgYXQoa2V5OiBzdHJpbmcpOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICAgIGxldCB7IGtleXMsIHZhbHVlcyB9ID0gdGhpcztcbiAgICBsZXQgaW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcbiAgICByZXR1cm4gdmFsdWVzW2luZGV4XTtcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtleXMuaW5kZXhPZihrZXkpICE9PSAtMTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogQ29tcGlsZWROYW1lZEFyZ3Mge1xuICAgIGxldCB7IGtleXMsIHZhbHVlcyB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkTmFtZWRBcmdzKGtleXMsIHZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpKTtcbiAgfVxufVxuXG5jb25zdCBFTVBUWV9OQU1FRF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIE5hbWVkQXJncyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVNUFRZX0FSUkFZLCBFTVBUWV9BUlJBWSk7XG4gIH1cblxuICBhdChrZXk6IHN0cmluZyk6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gPz8hXG4gIH1cblxuICBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZE5hbWVkQXJncyB7XG4gICAgcmV0dXJuIENvbXBpbGVkTmFtZWRBcmdzLmVtcHR5KCk7XG4gIH1cbn0pO1xuXG5jb25zdCBFTVBUWV9BUkdTOiBBcmdzID0gbmV3IChjbGFzcyBleHRlbmRzIEFyZ3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFTVBUWV9QT1NJVElPTkFMX0FSR1MsIEVNUFRZX05BTUVEX0FSR1MpO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRBcmdzIHtcbiAgICByZXR1cm4gQ29tcGlsZWRBcmdzLmVtcHR5KCk7XG4gIH1cbn0pO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVzIHtcbiAgcHVibGljIHR5cGUgPSBcInRlbXBsYXRlc1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhfZGVmYXVsdDogSW5saW5lQmxvY2ssIGludmVyc2U6IElubGluZUJsb2NrID0gbnVsbCk6IFRlbXBsYXRlcyB7XG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZXMoX2RlZmF1bHQsIGludmVyc2UpO1xuICB9XG5cbiAgc3RhdGljIGVtcHR5KCk6IFRlbXBsYXRlcyB7XG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZXMobnVsbCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdDogSW5saW5lQmxvY2s7XG4gIHB1YmxpYyBpbnZlcnNlOiBJbmxpbmVCbG9jaztcblxuICBjb25zdHJ1Y3RvcihfZGVmYXVsdDogSW5saW5lQmxvY2ssIGludmVyc2U6IElubGluZUJsb2NrID0gbnVsbCkge1xuICAgIHRoaXMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICAgIHRoaXMuaW52ZXJzZSA9IGludmVyc2U7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/syntax/expressions', ['exports', 'glimmer-runtime/lib/syntax/core', 'glimmer-wire-format'], function (exports, _glimmerRuntimeLibSyntaxCore, _glimmerWireFormat) {
- 'use strict';
-
- var isArg = _glimmerWireFormat.Expressions.isArg;
- var isConcat = _glimmerWireFormat.Expressions.isConcat;
- var isGet = _glimmerWireFormat.Expressions.isGet;
- var isHasBlock = _glimmerWireFormat.Expressions.isHasBlock;
- var isHasBlockParams = _glimmerWireFormat.Expressions.isHasBlockParams;
- var isHelper = _glimmerWireFormat.Expressions.isHelper;
- var isUnknown = _glimmerWireFormat.Expressions.isUnknown;
- var isPrimitiveValue = _glimmerWireFormat.Expressions.isPrimitiveValue;
- var isUndefined = _glimmerWireFormat.Expressions.isUndefined;
-
- exports.default = function (sexp) {
- if (isPrimitiveValue(sexp)) return _glimmerRuntimeLibSyntaxCore.Value.fromSpec(sexp);
- if (isUndefined(sexp)) return _glimmerRuntimeLibSyntaxCore.Value.build(undefined);
- if (isArg(sexp)) return _glimmerRuntimeLibSyntaxCore.GetArgument.fromSpec(sexp);
- if (isConcat(sexp)) return _glimmerRuntimeLibSyntaxCore.Concat.fromSpec(sexp);
- if (isGet(sexp)) return _glimmerRuntimeLibSyntaxCore.Get.fromSpec(sexp);
- if (isHelper(sexp)) return _glimmerRuntimeLibSyntaxCore.Helper.fromSpec(sexp);
- if (isUnknown(sexp)) return _glimmerRuntimeLibSyntaxCore.Unknown.fromSpec(sexp);
- if (isHasBlock(sexp)) return _glimmerRuntimeLibSyntaxCore.HasBlock.fromSpec(sexp);
- if (isHasBlockParams(sexp)) return _glimmerRuntimeLibSyntaxCore.HasBlockParams.fromSpec(sexp);
- throw new Error('Unexpected wire format: ' + JSON.stringify(sexp));
+ return morphs;
+ },
+ statements: statements,
+ locals: [],
+ templates: [],
+ element: null
};
- ;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2V4cHJlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQWlCRSxLQUFLLHNCQUxMLFdBQVcsQ0FLWCxLQUFLO1FBQ0wsUUFBUSxzQkFOUixXQUFXLENBTVgsUUFBUTtRQUNSLEtBQUssc0JBUEwsV0FBVyxDQU9YLEtBQUs7UUFDTCxVQUFVLHNCQVJWLFdBQVcsQ0FRWCxVQUFVO1FBQ1YsZ0JBQWdCLHNCQVRoQixXQUFXLENBU1gsZ0JBQWdCO1FBQ2hCLFFBQVEsc0JBVlIsV0FBVyxDQVVYLFFBQVE7UUFDUixTQUFTLHNCQVhULFdBQVcsQ0FXWCxTQUFTO1FBQ1QsZ0JBQWdCLHNCQVpoQixXQUFXLENBWVgsZ0JBQWdCO1FBQ2hCLFdBQVcsc0JBYlgsV0FBVyxDQWFYLFdBQVc7O3NCQUdiLFVBQXdCLElBQTBCLEVBQUE7QUFDaEQsWUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTVCbkMsS0FBSyxDQTRCMEMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELFlBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBN0I5QixLQUFLLENBNkJxQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0QsWUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE3QnhCLFdBQVcsQ0E2QnVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxZQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTdCM0IsTUFBTSxDQTZCa0MsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFlBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBN0J4QixHQUFHLENBNkIrQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsWUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkEzQjNCLE1BQU0sQ0EyQmtDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxZQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTNCNUIsT0FBTyxDQTJCbUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELFlBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0I3QixRQUFRLENBK0JvQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsWUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQS9CbkMsY0FBYyxDQStCMEMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZFLGNBQU0sSUFBSSxLQUFLLDhCQUE0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUM7S0FDcEU7O0FBQUEsS0FBQyIsImZpbGUiOiJleHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFZhbHVlIGFzIFZhbHVlU3ludGF4LFxuICBHZXRBcmd1bWVudCBhcyBBcmdTeW50YXgsXG4gIENvbmNhdCBhcyBDb25jYXRTeW50YXgsXG4gIEdldCBhcyBHZXRTeW50YXgsXG4gIEhhc0Jsb2NrIGFzIEhhc0Jsb2NrU3ludGF4LFxuICBIYXNCbG9ja1BhcmFtcyBhcyBIYXNCbG9ja1BhcmFtc1N5bnRheCxcbiAgSGVscGVyIGFzIEhlbHBlclN5bnRheCxcbiAgVW5rbm93biBhcyBVbmtub3duU3ludGF4XG59IGZyb20gJy4vY29yZSc7XG5cbmltcG9ydCB7XG4gIEV4cHJlc3Npb25zIGFzIFNlcmlhbGl6ZWRFeHByZXNzaW9ucyxcbiAgRXhwcmVzc2lvbiBhcyBTZXJpYWxpemVkRXhwcmVzc2lvblxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuY29uc3Qge1xuICBpc0FyZyxcbiAgaXNDb25jYXQsXG4gIGlzR2V0LFxuICBpc0hhc0Jsb2NrLFxuICBpc0hhc0Jsb2NrUGFyYW1zLFxuICBpc0hlbHBlcixcbiAgaXNVbmtub3duLFxuICBpc1ByaW1pdGl2ZVZhbHVlLFxuICBpc1VuZGVmaW5lZFxufSA9IFNlcmlhbGl6ZWRFeHByZXNzaW9ucztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb24pOiBhbnkge1xuICBpZiAoaXNQcmltaXRpdmVWYWx1ZShzZXhwKSkgcmV0dXJuIFZhbHVlU3ludGF4LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNVbmRlZmluZWQoc2V4cCkpIHJldHVybiBWYWx1ZVN5bnRheC5idWlsZCh1bmRlZmluZWQpO1xuICBpZiAoaXNBcmcoc2V4cCkpIHJldHVybiBBcmdTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0NvbmNhdChzZXhwKSkgcmV0dXJuIENvbmNhdFN5bnRheC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzR2V0KHNleHApKSByZXR1cm4gR2V0U3ludGF4LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNIZWxwZXIoc2V4cCkpIHJldHVybiBIZWxwZXJTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc1Vua25vd24oc2V4cCkpIHJldHVybiBVbmtub3duU3ludGF4LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNIYXNCbG9jayhzZXhwKSkgcmV0dXJuIEhhc0Jsb2NrU3ludGF4LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNIYXNCbG9ja1BhcmFtcyhzZXhwKSkgcmV0dXJuIEhhc0Jsb2NrUGFyYW1zU3ludGF4LmZyb21TcGVjKHNleHApO1xuXG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB3aXJlIGZvcm1hdDogJHtKU09OLnN0cmluZ2lmeShzZXhwKX1gKTtcbn07XG4iXX0=
-enifed('glimmer-runtime/lib/syntax/statements', ['exports', 'glimmer-runtime/lib/syntax/core', 'glimmer-wire-format'], function (exports, _glimmerRuntimeLibSyntaxCore, _glimmerWireFormat) {
- 'use strict';
+ return template;
+ }
- var isYield = _glimmerWireFormat.Statements.isYield;
- var isBlock = _glimmerWireFormat.Statements.isBlock;
- var isPartial = _glimmerWireFormat.Statements.isPartial;
- var isAppend = _glimmerWireFormat.Statements.isAppend;
- var isDynamicAttr = _glimmerWireFormat.Statements.isDynamicAttr;
- var isText = _glimmerWireFormat.Statements.isText;
- var isComment = _glimmerWireFormat.Statements.isComment;
- var isOpenElement = _glimmerWireFormat.Statements.isOpenElement;
- var isFlushElement = _glimmerWireFormat.Statements.isFlushElement;
- var isCloseElement = _glimmerWireFormat.Statements.isCloseElement;
- var isStaticAttr = _glimmerWireFormat.Statements.isStaticAttr;
- var isModifier = _glimmerWireFormat.Statements.isModifier;
- var isDynamicArg = _glimmerWireFormat.Statements.isDynamicArg;
- var isStaticArg = _glimmerWireFormat.Statements.isStaticArg;
- var isTrustingAttr = _glimmerWireFormat.Statements.isTrustingAttr;
+ RenderResult.prototype.initializeNodes = function (ownerNode) {
+ var childNodes = this.root.childNodes;
- exports.default = function (sexp, symbolTable, scanner) {
- if (isYield(sexp)) return _glimmerRuntimeLibSyntaxCore.Yield.fromSpec(sexp);
- if (isPartial(sexp)) return _glimmerRuntimeLibSyntaxCore.Partial.fromSpec(sexp);
- if (isBlock(sexp)) return _glimmerRuntimeLibSyntaxCore.Block.fromSpec(sexp, symbolTable, scanner);
- if (isAppend(sexp)) return _glimmerRuntimeLibSyntaxCore.OptimizedAppend.fromSpec(sexp);
- if (isDynamicAttr(sexp)) return _glimmerRuntimeLibSyntaxCore.DynamicAttr.fromSpec(sexp);
- if (isDynamicArg(sexp)) return _glimmerRuntimeLibSyntaxCore.DynamicArg.fromSpec(sexp);
- if (isTrustingAttr(sexp)) return _glimmerRuntimeLibSyntaxCore.TrustingAttr.fromSpec(sexp);
- if (isText(sexp)) return _glimmerRuntimeLibSyntaxCore.Text.fromSpec(sexp);
- if (isComment(sexp)) return _glimmerRuntimeLibSyntaxCore.Comment.fromSpec(sexp);
- if (isOpenElement(sexp)) return _glimmerRuntimeLibSyntaxCore.OpenElement.fromSpec(sexp, symbolTable);
- if (isFlushElement(sexp)) return _glimmerRuntimeLibSyntaxCore.FlushElement.fromSpec();
- if (isCloseElement(sexp)) return _glimmerRuntimeLibSyntaxCore.CloseElement.fromSpec();
- if (isStaticAttr(sexp)) return _glimmerRuntimeLibSyntaxCore.StaticAttr.fromSpec(sexp);
- if (isStaticArg(sexp)) return _glimmerRuntimeLibSyntaxCore.StaticArg.fromSpec(sexp);
- if (isModifier(sexp)) return _glimmerRuntimeLibSyntaxCore.Modifier.fromSpec(sexp);
- };
+ for (var i = 0, l = childNodes.length; i < l; i++) {
+ childNodes[i].ownerNode = ownerNode;
+ }
+ };
- ;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L3N0YXRlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBMkJFLE9BQU8sc0JBTlAsVUFBVSxDQU1WLE9BQU87UUFDUCxPQUFPLHNCQVBQLFVBQVUsQ0FPVixPQUFPO1FBQ1AsU0FBUyxzQkFSVCxVQUFVLENBUVYsU0FBUztRQUNULFFBQVEsc0JBVFIsVUFBVSxDQVNWLFFBQVE7UUFDUixhQUFhLHNCQVZiLFVBQVUsQ0FVVixhQUFhO1FBQ2IsTUFBTSxzQkFYTixVQUFVLENBV1YsTUFBTTtRQUNOLFNBQVMsc0JBWlQsVUFBVSxDQVlWLFNBQVM7UUFDVCxhQUFhLHNCQWJiLFVBQVUsQ0FhVixhQUFhO1FBQ2IsY0FBYyxzQkFkZCxVQUFVLENBY1YsY0FBYztRQUNkLGNBQWMsc0JBZmQsVUFBVSxDQWVWLGNBQWM7UUFDZCxZQUFZLHNCQWhCWixVQUFVLENBZ0JWLFlBQVk7UUFDWixVQUFVLHNCQWpCVixVQUFVLENBaUJWLFVBQVU7UUFDVixZQUFZLHNCQWxCWixVQUFVLENBa0JWLFlBQVk7UUFDWixXQUFXLHNCQW5CWCxVQUFVLENBbUJWLFdBQVc7UUFDWCxjQUFjLHNCQXBCZCxVQUFVLENBb0JWLGNBQWM7O3NCQUdoQixVQUF3QixJQUF5QixFQUFFLFdBQXdCLEVBQUUsT0FBcUIsRUFBQTtBQUNoRyxZQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTVDMUIsS0FBSyxDQTRDMkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DLFlBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBNUM1QixPQUFPLENBNEM2QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsWUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE1QzFCLEtBQUssQ0E0QzJCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3JFLFlBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBNUMzQixlQUFlLENBNEM0QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsWUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE1Q2hDLFdBQVcsQ0E0Q2lDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRCxZQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQXJDL0IsVUFBVSxDQXFDZ0MsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELFlBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBcENqQyxZQUFZLENBb0NrQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsWUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE5Q3pCLElBQUksQ0E4QzBCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxZQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTlDNUIsT0FBTyxDQThDNkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELFlBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBOUNoQyxXQUFXLENBOENpQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3hFLFlBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBOUNqQyxZQUFZLENBOENrQyxRQUFRLEVBQUUsQ0FBQztBQUN6RCxZQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTlDakMsWUFBWSxDQThDa0MsUUFBUSxFQUFFLENBQUM7QUFDekQsWUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE5Qy9CLFVBQVUsQ0E4Q2dDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxZQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTVDOUIsU0FBUyxDQTRDK0IsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFlBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0M3QixRQUFRLENBK0M4QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEQ7O0FBQUEsS0FBQyIsImZpbGUiOiJzdGF0ZW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgWWllbGQsXG4gIFBhcnRpYWwsXG4gIEJsb2NrLFxuICBPcHRpbWl6ZWRBcHBlbmQsXG4gIER5bmFtaWNBdHRyLFxuICBUZXh0LFxuICBDb21tZW50LFxuICBPcGVuRWxlbWVudCxcbiAgRmx1c2hFbGVtZW50LFxuICBDbG9zZUVsZW1lbnQsXG4gIFN0YXRpY0F0dHIsXG4gIE1vZGlmaWVyLFxuICBEeW5hbWljQXJnLFxuICBTdGF0aWNBcmcsXG4gIFRydXN0aW5nQXR0clxufSBmcm9tICcuL2NvcmUnO1xuXG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXggfSBmcm9tICcuLi9zeW50YXgnO1xuaW1wb3J0IHtcbiAgU3RhdGVtZW50cyBhcyBTZXJpYWxpemVkU3RhdGVtZW50cyxcbiAgU3RhdGVtZW50IGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnRcbn0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBCbG9ja1NjYW5uZXIgIH0gZnJvbSAnLi4vc2Nhbm5lcic7XG5cbmNvbnN0IHtcbiAgaXNZaWVsZCxcbiAgaXNCbG9jayxcbiAgaXNQYXJ0aWFsLFxuICBpc0FwcGVuZCxcbiAgaXNEeW5hbWljQXR0cixcbiAgaXNUZXh0LFxuICBpc0NvbW1lbnQsXG4gIGlzT3BlbkVsZW1lbnQsXG4gIGlzRmx1c2hFbGVtZW50LFxuICBpc0Nsb3NlRWxlbWVudCxcbiAgaXNTdGF0aWNBdHRyLFxuICBpc01vZGlmaWVyLFxuICBpc0R5bmFtaWNBcmcsXG4gIGlzU3RhdGljQXJnLFxuICBpc1RydXN0aW5nQXR0clxufSA9IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IFN0YXRlbWVudFN5bnRheCB7XG4gIGlmIChpc1lpZWxkKHNleHApKSByZXR1cm4gWWllbGQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc1BhcnRpYWwoc2V4cCkpIHJldHVybiBQYXJ0aWFsLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNCbG9jayhzZXhwKSkgcmV0dXJuIEJsb2NrLmZyb21TcGVjKHNleHAsIHN5bWJvbFRhYmxlLCBzY2FubmVyKTtcbiAgaWYgKGlzQXBwZW5kKHNleHApKSByZXR1cm4gT3B0aW1pemVkQXBwZW5kLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNEeW5hbWljQXR0cihzZXhwKSkgcmV0dXJuIER5bmFtaWNBdHRyLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNEeW5hbWljQXJnKHNleHApKSByZXR1cm4gRHluYW1pY0FyZy5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzVHJ1c3RpbmdBdHRyKHNleHApKSByZXR1cm4gVHJ1c3RpbmdBdHRyLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNUZXh0KHNleHApKSByZXR1cm4gVGV4dC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzQ29tbWVudChzZXhwKSkgcmV0dXJuIENvbW1lbnQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc09wZW5FbGVtZW50KHNleHApKSByZXR1cm4gT3BlbkVsZW1lbnQuZnJvbVNwZWMoc2V4cCwgc3ltYm9sVGFibGUpO1xuICBpZiAoaXNGbHVzaEVsZW1lbnQoc2V4cCkpIHJldHVybiBGbHVzaEVsZW1lbnQuZnJvbVNwZWMoKTtcbiAgaWYgKGlzQ2xvc2VFbGVtZW50KHNleHApKSByZXR1cm4gQ2xvc2VFbGVtZW50LmZyb21TcGVjKCk7XG4gIGlmIChpc1N0YXRpY0F0dHIoc2V4cCkpIHJldHVybiBTdGF0aWNBdHRyLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNTdGF0aWNBcmcoc2V4cCkpIHJldHVybiBTdGF0aWNBcmcuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc01vZGlmaWVyKHNleHApKSByZXR1cm4gTW9kaWZpZXIuZnJvbVNwZWMoc2V4cCk7XG59O1xuIl19
-enifed('glimmer-runtime/lib/template', ['exports', 'glimmer-util', 'glimmer-runtime/lib/builder', 'glimmer-runtime/lib/vm', 'glimmer-runtime/lib/scanner'], function (exports, _glimmerUtil, _glimmerRuntimeLibBuilder, _glimmerRuntimeLibVm, _glimmerRuntimeLibScanner) {
- 'use strict';
+ RenderResult.prototype.render = function () {
+ this.root.lastResult = this;
+ this.root.rendered = true;
+ this.populateNodes(_htmlbarsRuntimeNodeVisitor.AlwaysDirtyVisitor);
- exports.default = templateFactory;
-
- var clientId = 0;
-
- function templateFactory(_ref) {
- var id = _ref.id;
- var meta = _ref.meta;
- var block = _ref.block;
-
- var parsedBlock = undefined;
- if (!id) {
- id = 'client-' + clientId++;
- }
- var create = function (env, envMeta) {
- var newMeta = envMeta ? _glimmerUtil.assign({}, envMeta, meta) : meta;
- if (!parsedBlock) {
- parsedBlock = JSON.parse(block);
- }
- return template(parsedBlock, id, newMeta, env);
- };
- return { id: id, meta: meta, create: create };
+ if (this.shouldSetContent && this.root.setContent) {
+ this.root.setContent(this.fragment);
}
+ };
- function template(block, id, meta, env) {
- var scanner = new _glimmerRuntimeLibScanner.default(block, meta, env);
- var entryPoint = undefined;
- var asEntryPoint = function () {
- if (!entryPoint) entryPoint = scanner.scanEntryPoint();
- return entryPoint;
- };
- var layout = undefined;
- var asLayout = function () {
- if (!layout) layout = scanner.scanLayout();
- return layout;
- };
- var asPartial = function (symbols) {
- return scanner.scanPartial(symbols);
- };
- var render = function (self, appendTo, dynamicScope) {
- var elementStack = _glimmerRuntimeLibBuilder.ElementStack.forInitialRender(env, appendTo, null);
- var compiled = asEntryPoint().compile(env);
- var vm = _glimmerRuntimeLibVm.VM.initial(env, self, dynamicScope, elementStack, compiled.symbols);
- return vm.execute(compiled.ops);
- };
- return { id: id, meta: meta, _block: block, asEntryPoint: asEntryPoint, asLayout: asLayout, asPartial: asPartial, render: render };
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQWtGQSxlQUFBOztBQVRBLFFBQUksUUFBUSxHQUFHLENBQUMsQ0FBQzs7QUFTakIsYUFBQSxlQUFBLENBQXdDLElBQXlELEVBQUE7WUFBdkQsRUFBRSxHQUFKLElBQXlELENBQXZELEVBQUU7WUFBRSxJQUFJLEdBQVYsSUFBeUQsQ0FBbkQsSUFBSTtZQUFFLEtBQUssR0FBakIsSUFBeUQsQ0FBN0MsS0FBSzs7QUFDdkQsWUFBSSxXQUFvQyxZQUFBLENBQUM7QUFDekMsWUFBSSxDQUFDLEVBQUUsRUFBRTtBQUNQLGNBQUUsZUFBYSxRQUFRLEVBQUcsQUFBRSxDQUFDO1NBQzlCO0FBQ0QsWUFBSSxNQUFNLEdBQUcsVUFBQyxHQUFnQixFQUFFLE9BQVksRUFBQTtBQUMxQyxnQkFBSSxPQUFPLEdBQUcsT0FBTyxHQUFHLGFBbkZuQixNQUFNLENBbUZvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN6RCxnQkFBSSxDQUFDLFdBQVcsRUFBRTtBQUNoQiwyQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7QUFDRCxtQkFBTyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDaEQsQ0FBQztBQUNGLGVBQU8sRUFBRSxFQUFFLEVBQUYsRUFBRSxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsTUFBTSxFQUFOLE1BQU0sRUFBRSxDQUFDO0tBQzdCOztBQUVELGFBQUEsUUFBQSxDQUFxQixLQUE4QixFQUFFLEVBQVUsRUFBRSxJQUFPLEVBQUUsR0FBZ0IsRUFBQTtBQUN4RixZQUFJLE9BQU8sR0FBRyxzQ0FBWSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLFlBQUksVUFBc0IsWUFBQSxDQUFDO0FBQzNCLFlBQUksWUFBWSxHQUFHLFlBQUE7QUFDakIsZ0JBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN2RCxtQkFBTyxVQUFVLENBQUM7U0FDbkIsQ0FBQztBQUNGLFlBQUksTUFBYyxZQUFBLENBQUM7QUFDbkIsWUFBSSxRQUFRLEdBQUcsWUFBQTtBQUNiLGdCQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDM0MsbUJBQU8sTUFBTSxDQUFDO1NBQ2YsQ0FBQztBQUNGLFlBQUksU0FBUyxHQUFHLFVBQUEsT0FBTzttQkFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztTQUFBLENBQUM7QUFDeEQsWUFBSSxNQUFNLEdBQUcsVUFBQyxJQUF3QixFQUFFLFFBQXdCLEVBQUUsWUFBMEIsRUFBQTtBQUMxRixnQkFBSSxZQUFZLEdBQUcsMEJBdEdkLFlBQVksQ0FzR2UsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RSxnQkFBSSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGdCQUFJLEVBQUUsR0FBRyxxQkF2R0osRUFBRSxDQXVHSyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3RSxtQkFBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqQyxDQUFDO0FBQ0YsZUFBTyxFQUFFLEVBQUUsRUFBRixFQUFFLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBWixZQUFZLEVBQUUsUUFBUSxFQUFSLFFBQVEsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLE1BQU0sRUFBTixNQUFNLEVBQUUsQ0FBQztLQUMvRSIsImZpbGUiOiJ0ZW1wbGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrXG59IGZyb20gJ2dsaW1tZXItd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBFbnRyeVBvaW50LCBMYXlvdXQsIFBhcnRpYWxCbG9jayB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi92bS9yZW5kZXItcmVzdWx0JztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogRW52aXJvbm1lbnQgc3BlY2lmaWMgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGU8VD4ge1xuICAvKipcbiAgICogVGVtcGxhdGUgaWRlbnRpZmllciwgaWYgcHJlY29tcGlsZWQgd2lsbCBiZSB0aGUgaWQgb2YgdGhlXG4gICAqIHByZWNvbXBpbGVkIHRlbXBsYXRlLlxuICAgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGVtcGxhdGUgbWV0YSAoYm90aCBjb21waWxlIHRpbWUgYW5kIGVudmlyb25tZW50IHNwZWNpZmljKS5cbiAgICovXG4gIG1ldGE6IFQ7XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byByZW5kZXIgdGVtcGxhdGUgYXMgcm9vdCBlbnRyeSBwb2ludC5cbiAgICovXG4gIHJlbmRlcihzZWxmOiBQYXRoUmVmZXJlbmNlPGFueT4sIGFwcGVuZFRvOiBTaW1wbGUuRWxlbWVudCwgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUpOiBSZW5kZXJSZXN1bHQ7XG5cbiAgLy8gaW50ZXJuYWwgY2FzdHMsIHRoZXNlIGFyZSBsYXppbHkgY3JlYXRlZCBhbmQgY2FjaGVkXG4gIGFzRW50cnlQb2ludCgpOiBFbnRyeVBvaW50O1xuICBhc0xheW91dCgpOiBMYXlvdXQ7XG4gIGFzUGFydGlhbChzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IFBhcnRpYWxCbG9jaztcblxuICAvLyBleHBvc2VkIGZvciB2aXN1YWxpemVyXG4gIF9ibG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVGYWN0b3J5PFQsIFU+IHtcbiAgLyoqXG4gICAqIFRlbXBsYXRlIGlkZW50aWZpZXIsIGlmIHByZWNvbXBpbGVkIHdpbGwgYmUgdGhlIGlkIG9mIHRoZVxuICAgKiBwcmVjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbXBpbGUgdGltZSBtZXRhLlxuICAgKi9cbiAgbWV0YTogVDtcblxuICAvKipcbiAgICogVXNlZCB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgc3BlY2lmaWMgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqIG9mIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtFbnZpcm9ubWVudH0gZW52IGdsaW1tZXIgRW52aXJvbm1lbnRcbiAgICovXG4gIGNyZWF0ZShlbnYpOiBUZW1wbGF0ZTxUPjtcbiAgLyoqXG4gICAqIFVzZWQgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IHNwZWNpZmljIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKiBvZiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RW52aXJvbm1lbnR9IGVudiBnbGltbWVyIEVudmlyb25tZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXRhIGVudmlyb25tZW50IHNwZWNpZmljIGluamVjdGlvbnMgaW50byBtZXRhXG4gICAqL1xuICBjcmVhdGUoZW52LCBtZXRhOiBVKTogVGVtcGxhdGU8VCAmIFU+O1xufVxuXG5sZXQgY2xpZW50SWQgPSAwO1xuXG4vKipcbiAqIFdyYXBzIGEgdGVtcGxhdGUganMgaW4gYSB0ZW1wbGF0ZSBtb2R1bGUgdG8gY2hhbmdlIGl0IGludG8gYSBmYWN0b3J5XG4gKiB0aGF0IGhhbmRsZXMgbGF6eSBwYXJzaW5nIHRoZSB0ZW1wbGF0ZSBhbmQgdG8gY3JlYXRlIHBlciBlbnYgc2luZ2xldG9uc1xuICogb2YgdGhlIHRlbXBsYXRlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3Rvcnk8VD4oc2VyaWFsaXplZFRlbXBsYXRlOiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrPFQ+KTogVGVtcGxhdGVGYWN0b3J5PFQsIFQ+O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGVtcGxhdGVGYWN0b3J5PFQsIFU+KHNlcmlhbGl6ZWRUZW1wbGF0ZTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxUPik6IFRlbXBsYXRlRmFjdG9yeTxULCBVPjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRlbXBsYXRlRmFjdG9yeSh7IGlkLCBtZXRhLCBibG9jayB9OiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrPGFueT4pOiBUZW1wbGF0ZUZhY3Rvcnk8e30sIHt9PiB7XG4gIGxldCBwYXJzZWRCbG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2s7XG4gIGlmICghaWQpIHtcbiAgICBpZCA9IGBjbGllbnQtJHtjbGllbnRJZCArK31gO1xuICB9XG4gIGxldCBjcmVhdGUgPSAoZW52OiBFbnZpcm9ubWVudCwgZW52TWV0YT86IHt9KSA9PiB7XG4gICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgaWYgKCFwYXJzZWRCbG9jaykge1xuICAgICAgcGFyc2VkQmxvY2sgPSBKU09OLnBhcnNlKGJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlKHBhcnNlZEJsb2NrLCBpZCwgbmV3TWV0YSwgZW52KTtcbiAgfTtcbiAgcmV0dXJuIHsgaWQsIG1ldGEsIGNyZWF0ZSB9O1xufVxuXG5mdW5jdGlvbiB0ZW1wbGF0ZTxUPihibG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIGlkOiBzdHJpbmcsIG1ldGE6IFQsIGVudjogRW52aXJvbm1lbnQpOiBUZW1wbGF0ZTxUPiB7XG4gIGxldCBzY2FubmVyID0gbmV3IFNjYW5uZXIoYmxvY2ssIG1ldGEsIGVudik7XG4gIGxldCBlbnRyeVBvaW50OiBFbnRyeVBvaW50O1xuICBsZXQgYXNFbnRyeVBvaW50ID0gKCkgPT4ge1xuICAgIGlmICghZW50cnlQb2ludCkgZW50cnlQb2ludCA9IHNjYW5uZXIuc2NhbkVudHJ5UG9pbnQoKTtcbiAgICByZXR1cm4gZW50cnlQb2ludDtcbiAgfTtcbiAgbGV0IGxheW91dDogTGF5b3V0O1xuICBsZXQgYXNMYXlvdXQgPSAoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXQpIGxheW91dCA9IHNjYW5uZXIuc2NhbkxheW91dCgpO1xuICAgIHJldHVybiBsYXlvdXQ7XG4gIH07XG4gIGxldCBhc1BhcnRpYWwgPSBzeW1ib2xzID0+IHNjYW5uZXIuc2NhblBhcnRpYWwoc3ltYm9scyk7XG4gIGxldCByZW5kZXIgPSAoc2VsZjogUGF0aFJlZmVyZW5jZTxhbnk+LCBhcHBlbmRUbzogU2ltcGxlLkVsZW1lbnQsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlKSA9PiB7XG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgIGxldCBjb21waWxlZCA9IGFzRW50cnlQb2ludCgpLmNvbXBpbGUoZW52KTtcbiAgICBsZXQgdm0gPSBWTS5pbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIGNvbXBpbGVkLnN5bWJvbHMpO1xuICAgIHJldHVybiB2bS5leGVjdXRlKGNvbXBpbGVkLm9wcyk7XG4gIH07XG4gIHJldHVybiB7IGlkLCBtZXRhLCBfYmxvY2s6IGJsb2NrLCBhc0VudHJ5UG9pbnQsIGFzTGF5b3V0LCBhc1BhcnRpYWwsIHJlbmRlciB9O1xufVxuIl19
-enifed('glimmer-runtime/lib/upsert', ['exports', 'glimmer-runtime/lib/bounds'], function (exports, _glimmerRuntimeLibBounds) {
- 'use strict';
+ RenderResult.prototype.dirty = function () {
+ _htmlbarsUtilMorphUtils.visitChildren([this.root], function (node) {
+ node.isDirty = true;
+ });
+ };
- exports.isSafeString = isSafeString;
- exports.isNode = isNode;
- exports.isString = isString;
- exports.cautiousInsert = cautiousInsert;
- exports.trustingInsert = trustingInsert;
+ RenderResult.prototype.revalidate = function (env, self, blockArguments, scope) {
+ this.revalidateWith(env, scope, self, blockArguments, _htmlbarsRuntimeNodeVisitor.default);
+ };
- function isSafeString(value) {
- return value && typeof value['toHTML'] === 'function';
- }
+ RenderResult.prototype.rerender = function (env, self, blockArguments, scope) {
+ this.revalidateWith(env, scope, self, blockArguments, _htmlbarsRuntimeNodeVisitor.AlwaysDirtyVisitor);
+ };
- function isNode(value) {
- return value !== null && typeof value === 'object' && typeof value['nodeType'] === 'number';
+ RenderResult.prototype.revalidateWith = function (env, scope, self, blockArguments, visitor) {
+ if (env !== undefined) {
+ this.env = env;
}
-
- function isString(value) {
- return typeof value === 'string';
+ if (scope !== undefined) {
+ this.scope = scope;
}
+ this.updateScope();
- var Upsert = function Upsert(bounds) {
- this.bounds = bounds;
- };
-
- exports.default = Upsert;
-
- function cautiousInsert(dom, cursor, value) {
- if (isString(value)) {
- return TextUpsert.insert(dom, cursor, value);
- }
- if (isSafeString(value)) {
- return SafeStringUpsert.insert(dom, cursor, value);
- }
- if (isNode(value)) {
- return NodeUpsert.insert(dom, cursor, value);
- }
+ if (self !== undefined) {
+ this.updateSelf(self);
}
-
- function trustingInsert(dom, cursor, value) {
- if (isString(value)) {
- return HTMLUpsert.insert(dom, cursor, value);
- }
- if (isNode(value)) {
- return NodeUpsert.insert(dom, cursor, value);
- }
+ if (blockArguments !== undefined) {
+ this.updateLocals(blockArguments);
}
- var TextUpsert = (function (_Upsert) {
- babelHelpers.inherits(TextUpsert, _Upsert);
+ this.populateNodes(visitor);
+ };
- function TextUpsert(bounds, textNode) {
- _Upsert.call(this, bounds);
- this.textNode = textNode;
- }
+ RenderResult.prototype.destroy = function () {
+ var rootNode = this.root;
+ _htmlbarsUtilTemplateUtils.clearMorph(rootNode, this.env, true);
+ };
- TextUpsert.insert = function insert(dom, cursor, value) {
- var textNode = dom.createTextNode(value);
- dom.insertBefore(cursor.element, textNode, cursor.nextSibling);
- var bounds = new _glimmerRuntimeLibBounds.SingleNodeBounds(cursor.element, textNode);
- return new TextUpsert(bounds, textNode);
- };
+ RenderResult.prototype.populateNodes = function (visitor) {
+ var env = this.env;
+ var scope = this.scope;
+ var template = this.template;
+ var nodes = this.nodes;
+ var statements = this.statements;
+ var i, l;
- TextUpsert.prototype.update = function update(dom, value) {
- if (isString(value)) {
- var textNode = this.textNode;
+ for (i = 0, l = statements.length; i < l; i++) {
+ var statement = statements[i];
+ var morph = nodes[i];
- textNode.nodeValue = value;
- return true;
- } else {
- return false;
- }
- };
+ if (env.hooks.willRenderNode) {
+ env.hooks.willRenderNode(morph, env, scope);
+ }
- return TextUpsert;
- })(Upsert);
+ switch (statement[0]) {
+ case 'block':
+ visitor.block(statement, morph, env, scope, template, visitor);break;
+ case 'inline':
+ visitor.inline(statement, morph, env, scope, visitor);break;
+ case 'content':
+ visitor.content(statement, morph, env, scope, visitor);break;
+ case 'element':
+ visitor.element(statement, morph, env, scope, template, visitor);break;
+ case 'attribute':
+ visitor.attribute(statement, morph, env, scope);break;
+ case 'component':
+ visitor.component(statement, morph, env, scope, template, visitor);break;
+ }
- var HTMLUpsert = (function (_Upsert2) {
- babelHelpers.inherits(HTMLUpsert, _Upsert2);
+ if (env.hooks.didRenderNode) {
+ env.hooks.didRenderNode(morph, env, scope);
+ }
+ }
+ };
- function HTMLUpsert() {
- _Upsert2.apply(this, arguments);
- }
+ RenderResult.prototype.bindScope = function () {
+ this.env.hooks.bindScope(this.env, this.scope);
+ };
- HTMLUpsert.insert = function insert(dom, cursor, value) {
- var bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling);
- return new HTMLUpsert(bounds);
- };
+ RenderResult.prototype.updateScope = function () {
+ this.env.hooks.updateScope(this.env, this.scope);
+ };
- HTMLUpsert.prototype.update = function update(dom, value) {
- if (isString(value)) {
- var bounds = this.bounds;
+ RenderResult.prototype.bindSelf = function (self) {
+ this.env.hooks.bindSelf(this.env, this.scope, self);
+ };
- var parentElement = bounds.parentElement();
- var nextSibling = _glimmerRuntimeLibBounds.clear(bounds);
- this.bounds = dom.insertHTMLBefore(parentElement, nextSibling, value);
- return true;
- } else {
- return false;
- }
- };
+ RenderResult.prototype.updateSelf = function (self) {
+ this.env.hooks.updateSelf(this.env, this.scope, self);
+ };
- return HTMLUpsert;
- })(Upsert);
+ RenderResult.prototype.bindLocals = function (blockArguments) {
+ var localNames = this.template.locals;
- var SafeStringUpsert = (function (_Upsert3) {
- babelHelpers.inherits(SafeStringUpsert, _Upsert3);
+ for (var i = 0, l = localNames.length; i < l; i++) {
+ this.env.hooks.bindLocal(this.env, this.scope, localNames[i], blockArguments[i]);
+ }
+ };
- function SafeStringUpsert(bounds, lastStringValue) {
- _Upsert3.call(this, bounds);
- this.lastStringValue = lastStringValue;
- }
+ RenderResult.prototype.updateLocals = function (blockArguments) {
+ var localNames = this.template.locals;
- SafeStringUpsert.insert = function insert(dom, cursor, value) {
- var stringValue = value.toHTML();
- var bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling);
- return new SafeStringUpsert(bounds, stringValue);
- };
+ for (var i = 0, l = localNames.length; i < l; i++) {
+ this.env.hooks.updateLocal(this.env, this.scope, localNames[i], blockArguments[i]);
+ }
+ };
- SafeStringUpsert.prototype.update = function update(dom, value) {
- if (isSafeString(value)) {
- var stringValue = value.toHTML();
- if (stringValue !== this.lastStringValue) {
- var bounds = this.bounds;
+ function initializeNode(node, owner) {
+ node.ownerNode = owner;
+ }
- var parentElement = bounds.parentElement();
- var nextSibling = _glimmerRuntimeLibBounds.clear(bounds);
- this.bounds = dom.insertHTMLBefore(parentElement, nextSibling, stringValue);
- this.lastStringValue = stringValue;
- }
- return true;
- } else {
- return false;
- }
- };
+ function createChildMorph(dom, parentMorph, contextualElement) {
+ var morph = _htmlbarsRuntimeMorph.default.empty(dom, contextualElement || parentMorph.contextualElement);
+ initializeNode(morph, parentMorph.ownerNode);
+ return morph;
+ }
- return SafeStringUpsert;
- })(Upsert);
-
- var NodeUpsert = (function (_Upsert4) {
- babelHelpers.inherits(NodeUpsert, _Upsert4);
-
- function NodeUpsert() {
- _Upsert4.apply(this, arguments);
+ function getCachedFragment(template, env) {
+ var dom = env.dom,
+ fragment;
+ if (env.useFragmentCache && dom.canClone) {
+ if (template.cachedFragment === null) {
+ fragment = template.buildFragment(dom);
+ if (template.hasRendered) {
+ template.cachedFragment = fragment;
+ } else {
+ template.hasRendered = true;
}
+ }
+ if (template.cachedFragment) {
+ fragment = dom.cloneNode(template.cachedFragment, true);
+ }
+ } else if (!fragment) {
+ fragment = template.buildFragment(dom);
+ }
- NodeUpsert.insert = function insert(dom, cursor, node) {
- dom.insertBefore(cursor.element, node, cursor.nextSibling);
- return new NodeUpsert(_glimmerRuntimeLibBounds.single(cursor.element, node));
- };
-
- NodeUpsert.prototype.update = function update(dom, value) {
- if (isNode(value)) {
- var bounds = this.bounds;
-
- var parentElement = bounds.parentElement();
- var nextSibling = _glimmerRuntimeLibBounds.clear(bounds);
- this.bounds = dom.insertNodeBefore(parentElement, value, nextSibling);
- return true;
- } else {
- return false;
- }
- };
-
- return NodeUpsert;
- })(Upsert);
+ return fragment;
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLGFBQUEsWUFBQSxDQUE2QixLQUFhLEVBQUE7QUFDeEMsZUFBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3ZEOztBQUVELGFBQUEsTUFBQSxDQUF1QixLQUFhLEVBQUE7QUFDbEMsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLENBQUM7S0FDN0Y7O0FBRUQsYUFBQSxRQUFBLENBQXlCLEtBQWEsRUFBQTtBQUNwQyxlQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztLQUNsQzs7UUFNRCxNQUFBLEdBQ0UsU0FERixNQUFBLENBQ3FCLE1BQWMsRUFBQTtBQUFkLFlBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFRO0tBQ2hDOztzQkFLWSxNQUFNOztBQUVyQixhQUFBLGNBQUEsQ0FBK0IsR0FBd0IsRUFBRSxNQUFjLEVBQUUsS0FBd0IsRUFBQTtBQUMvRixZQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDOUM7QUFDRCxZQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2QixtQkFBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNwRDtBQUNELFlBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2pCLG1CQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QztLQUNGOztBQUVELGFBQUEsY0FBQSxDQUErQixH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T0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0QsbUJBQU8sSUFBSSxVQUFVLENBQUMseUJBdklpQixNQUFNLENBdUloQixNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckQ7O0FBSkgsa0JBQUEsV0FNRSxNQUFNLEdBQUEsZ0JBQUMsR0FBZSxFQUFFLEtBQWdCLEVBQUE7QUFDdEMsZ0JBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFFWixvQkFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzNDLG9CQUFJLFdBQVcsR0FBRyx5QkEvSTJCLEtBQUssQ0ErSTFCLE1BQU0sQ0FBQyxDQUFDO0FBRWhDLG9CQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUF5QyxFQUFFLEtBQUssRUFBRSxXQUFvQyxDQUFDLENBQUM7QUFFM0gsdUJBQU8sSUFBSSxDQUFDO2FBQ2IsTUFBTTtBQUNMLHVCQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7O2VBbkJILFVBQUE7T0FBeUIsTUFBTSIsImZpbGUiOiJ1cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIE5vZGUge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWVbJ25vZGVUeXBlJ10gPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgdHlwZSBJbnNlcnRpb24gPSBDYXV0aW91c0luc2VydGlvbiB8IFRydXN0aW5nSW5zZXJ0aW9uO1xuZXhwb3J0IHR5cGUgQ2F1dGlvdXNJbnNlcnRpb24gPSBzdHJpbmcgfCBTYWZlU3RyaW5nIHwgTm9kZTtcbmV4cG9ydCB0eXBlIFRydXN0aW5nSW5zZXJ0aW9uID0gc3RyaW5nIHwgTm9kZTtcblxuYWJzdHJhY3QgY2xhc3MgVXBzZXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGJvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuXG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBTYWZlU3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCBwcml2YXRlIGxhc3RTdHJpbmdWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG5cbiAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgbm9kZTogU2ltcGxlLk5vZGUpOiBVcHNlcnQge1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIHZhbHVlLCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/utils', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) {
- 'use strict';
+enifed("htmlbars-syntax", ["exports", "htmlbars-syntax/builders", "htmlbars-syntax/parser", "htmlbars-syntax/generation/print", "htmlbars-syntax/traversal/traverse", "htmlbars-syntax/traversal/walker"], function (exports, _htmlbarsSyntaxBuilders, _htmlbarsSyntaxParser, _htmlbarsSyntaxGenerationPrint, _htmlbarsSyntaxTraversalTraverse, _htmlbarsSyntaxTraversalWalker) {
+ "use strict";
- var EMPTY_ARRAY = Object.freeze([]);
- exports.EMPTY_ARRAY = EMPTY_ARRAY;
- var EMPTY_DICT = Object.freeze(_glimmerUtil.dict());
- exports.EMPTY_DICT = EMPTY_DICT;
-
- var ListRange = (function () {
- function ListRange(list, start, end) {
- this.list = list;
- this.start = start;
- this.end = end;
- }
-
- ListRange.prototype.at = function at(index) {
- if (index >= this.list.length) return null;
- return this.list[index];
- };
-
- ListRange.prototype.min = function min() {
- return this.start;
- };
-
- ListRange.prototype.max = function max() {
- return this.end;
- };
-
- return ListRange;
- })();
-
- exports.ListRange = ListRange;
+ exports.builders = _htmlbarsSyntaxBuilders.default;
+ exports.parse = _htmlbarsSyntaxParser.default;
+ exports.print = _htmlbarsSyntaxGenerationPrint.default;
+ exports.traverse = _htmlbarsSyntaxTraversalTraverse.default;
+ exports.Walker = _htmlbarsSyntaxTraversalWalker.default;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sUUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzs7QUFDdEMsUUFBTSxVQUFVLEdBQWMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUhwQyxJQUFJLEVBRzJDLENBQUMsQ0FBQzs7O1FBb0JoRSxTQUFBO0FBT0UsaUJBUEYsU0FBQSxDQU9jLElBQVMsRUFBRSxLQUFhLEVBQUUsR0FBVyxFQUFBO0FBQy9DLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ2hCOztBQVhILGlCQUFBLFdBYUUsRUFBRSxHQUFBLFlBQUMsS0FBYSxFQUFBO0FBQ2QsZ0JBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQzNDLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O0FBaEJILGlCQUFBLFdBa0JFLEdBQUcsR0FBQSxlQUFBO0FBQ0QsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjs7QUFwQkgsaUJBQUEsV0FzQkUsR0FBRyxHQUFBLGVBQUE7QUFDRCxtQkFBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2pCOztlQXhCSCxTQUFBIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgZGljdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9BUlJBWSA9IE9iamVjdC5mcmVlemUoW10pO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0RJQ1Q6IERpY3Q8YW55PiA9IE9iamVjdC5mcmVlemUoZGljdDxhbnk+KCkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1lcmFibGVDYWxsYmFjazxUPiB7XG4gIChpdGVtOiBUKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnVtZXJhYmxlPFQ+IHtcbiAgZm9yRWFjaChjYWxsYmFjazogRW51bWVyYWJsZUNhbGxiYWNrPFQ+KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95YWJsZSB7XG4gIGRlc3Ryb3koKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZTxUPiB7XG4gIG1pbigpOiBudW1iZXI7XG4gIG1heCgpOiBudW1iZXI7XG4gIGF0KGluZGV4OiBudW1iZXIpOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdFJhbmdlPFQ+IGltcGxlbWVudHMgUmFuZ2U8VD4ge1xuICBwcml2YXRlIGxpc3Q6IFRbXTtcblxuICAvLyBbc3RhcnQsIGVuZF1cbiAgcHJpdmF0ZSBzdGFydDogbnVtYmVyO1xuICBwcml2YXRlIGVuZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFRbXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5saXN0Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMubGlzdFtpbmRleF07XG4gIH1cblxuICBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydDtcbiAgfVxuXG4gIG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmVuZDtcbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/vm', ['exports', 'glimmer-runtime/lib/vm/append', 'glimmer-runtime/lib/vm/update', 'glimmer-runtime/lib/vm/render-result'], function (exports, _glimmerRuntimeLibVmAppend, _glimmerRuntimeLibVmUpdate, _glimmerRuntimeLibVmRenderResult) {
- 'use strict';
+enifed("htmlbars-syntax/builders", ["exports"], function (exports) {
+ // Statements
- exports.VM = _glimmerRuntimeLibVmAppend.default;
- exports.PublicVM = _glimmerRuntimeLibVmAppend.PublicVM;
- exports.UpdatingVM = _glimmerRuntimeLibVmUpdate.default;
- exports.RenderResult = _glimmerRuntimeLibVmRenderResult.default;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1VBQW9CLEVBQUUsOEJBQWIsT0FBTztVQUFRLFFBQVEsOEJBQVIsUUFBUTtVQUNaLFVBQVUsOEJBQXJCLE9BQU87VUFDSSxZQUFZLG9DQUF2QixPQUFPIiwiZmlsZSI6InZtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBWTSwgUHVibGljVk0gfSBmcm9tICcuL3ZtL2FwcGVuZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFVwZGF0aW5nVk0gfSBmcm9tICcuL3ZtL3VwZGF0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbmRlclJlc3VsdCB9IGZyb20gJy4vdm0vcmVuZGVyLXJlc3VsdCc7XG4iXX0=
-enifed('glimmer-runtime/lib/vm/append', ['exports', 'glimmer-runtime/lib/environment', 'glimmer-util', 'glimmer-reference', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-runtime/lib/vm/update', 'glimmer-runtime/lib/vm/render-result', 'glimmer-runtime/lib/vm/frame'], function (exports, _glimmerRuntimeLibEnvironment, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibVmUpdate, _glimmerRuntimeLibVmRenderResult, _glimmerRuntimeLibVmFrame) {
- 'use strict';
+ "use strict";
- var VM = (function () {
- function VM(env, scope, dynamicScope, elementStack) {
- this.env = env;
- this.elementStack = elementStack;
- this.dynamicScopeStack = new _glimmerUtil.Stack();
- this.scopeStack = new _glimmerUtil.Stack();
- this.updatingOpcodeStack = new _glimmerUtil.Stack();
- this.cacheGroups = new _glimmerUtil.Stack();
- this.listBlockStack = new _glimmerUtil.Stack();
- this.frame = new _glimmerRuntimeLibVmFrame.FrameStack();
- this.env = env;
- this.elementStack = elementStack;
- this.scopeStack.push(scope);
- this.dynamicScopeStack.push(dynamicScope);
- }
+ exports.buildMustache = buildMustache;
+ exports.buildBlock = buildBlock;
+ exports.buildElementModifier = buildElementModifier;
+ exports.buildPartial = buildPartial;
+ exports.buildComment = buildComment;
+ exports.buildConcat = buildConcat;
+ exports.buildElement = buildElement;
+ exports.buildComponent = buildComponent;
+ exports.buildAttr = buildAttr;
+ exports.buildText = buildText;
+ exports.buildSexpr = buildSexpr;
+ exports.buildPath = buildPath;
+ exports.buildString = buildString;
+ exports.buildBoolean = buildBoolean;
+ exports.buildNumber = buildNumber;
+ exports.buildNull = buildNull;
+ exports.buildUndefined = buildUndefined;
+ exports.buildHash = buildHash;
+ exports.buildPair = buildPair;
+ exports.buildProgram = buildProgram;
- VM.initial = function initial(env, self, dynamicScope, elementStack, size) {
- var scope = _glimmerRuntimeLibEnvironment.Scope.root(self, size);
- return new VM(env, scope, dynamicScope, elementStack);
- };
+ function buildMustache(path, params, hash, raw, loc) {
+ return {
+ type: "MustacheStatement",
+ path: buildPath(path),
+ params: params || [],
+ hash: hash || buildHash([]),
+ escaped: !raw,
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.capture = function capture() {
- return {
- env: this.env,
- scope: this.scope(),
- dynamicScope: this.dynamicScope(),
- frame: this.frame.capture()
- };
- };
+ function buildBlock(path, params, hash, program, inverse, loc) {
+ return {
+ type: "BlockStatement",
+ path: buildPath(path),
+ params: params || [],
+ hash: hash || buildHash([]),
+ program: program || null,
+ inverse: inverse || null,
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.goto = function goto(op) {
- // assert(this.frame.getOps().contains(op), `Illegal jump to ${op.label}`);
- this.frame.goto(op);
- };
+ function buildElementModifier(path, params, hash, loc) {
+ return {
+ type: "ElementModifierStatement",
+ path: buildPath(path),
+ params: params || [],
+ hash: hash || buildHash([]),
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.beginCacheGroup = function beginCacheGroup() {
- this.cacheGroups.push(this.updatingOpcodeStack.current.tail());
- };
+ function buildPartial(name, params, hash, indent) {
+ return {
+ type: "PartialStatement",
+ name: name,
+ params: params || [],
+ hash: hash || buildHash([]),
+ indent: indent
+ };
+ }
- VM.prototype.commitCacheGroup = function commitCacheGroup() {
- // JumpIfNotModified(END)
- // (head)
- // (....)
- // (tail)
- // DidModify
- // END: Noop
- var END = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode("END");
- var opcodes = this.updatingOpcodeStack.current;
- var marker = this.cacheGroups.pop();
- var head = marker ? opcodes.nextNode(marker) : opcodes.head();
- var tail = opcodes.tail();
- var tag = _glimmerReference.combineSlice(new _glimmerUtil.ListSlice(head, tail));
- var guard = new _glimmerRuntimeLibCompiledOpcodesVm.JumpIfNotModifiedOpcode(tag, END);
- opcodes.insertBefore(guard, head);
- opcodes.append(new _glimmerRuntimeLibCompiledOpcodesVm.DidModifyOpcode(guard));
- opcodes.append(END);
- };
+ function buildComment(value) {
+ return {
+ type: "CommentStatement",
+ value: value
+ };
+ }
- VM.prototype.enter = function enter(ops) {
- var updating = new _glimmerUtil.LinkedList();
- var tracker = this.stack().pushUpdatableBlock();
- var state = this.capture();
- var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, updating);
- this.didEnter(tryOpcode, updating);
- };
+ function buildConcat(parts) {
+ return {
+ type: "ConcatStatement",
+ parts: parts || []
+ };
+ }
- VM.prototype.enterWithKey = function enterWithKey(key, ops) {
- var updating = new _glimmerUtil.LinkedList();
- var tracker = this.stack().pushUpdatableBlock();
- var state = this.capture();
- var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, updating);
- this.listBlockStack.current.map[key] = tryOpcode;
- this.didEnter(tryOpcode, updating);
- };
+ // Nodes
- VM.prototype.enterList = function enterList(ops) {
- var updating = new _glimmerUtil.LinkedList();
- var tracker = this.stack().pushBlockList(updating);
- var state = this.capture();
- var artifacts = this.frame.getIterator().artifacts;
- var opcode = new _glimmerRuntimeLibVmUpdate.ListBlockOpcode(ops, state, tracker, updating, artifacts);
- this.listBlockStack.push(opcode);
- this.didEnter(opcode, updating);
- };
+ function buildElement(tag, attributes, modifiers, children, loc) {
+ return {
+ type: "ElementNode",
+ tag: tag || "",
+ attributes: attributes || [],
+ modifiers: modifiers || [],
+ children: children || [],
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.didEnter = function didEnter(opcode, updating) {
- this.updateWith(opcode);
- this.updatingOpcodeStack.push(updating);
- };
+ function buildComponent(tag, attributes, program, loc) {
+ return {
+ type: "ComponentNode",
+ tag: tag,
+ attributes: attributes,
+ program: program,
+ loc: buildLoc(loc),
- VM.prototype.exit = function exit() {
- this.stack().popBlock();
- this.updatingOpcodeStack.pop();
- var parent = this.updatingOpcodeStack.current.tail();
- parent.didInitializeChildren();
- };
+ // this should be true only if this component node is guaranteed
+ // to produce start and end points that can never change after the
+ // initial render, regardless of changes to dynamic inputs. If
+ // a component represents a "fragment" (any number of top-level nodes),
+ // this will usually not be true.
+ isStatic: false
+ };
+ }
- VM.prototype.exitList = function exitList() {
- this.exit();
- this.listBlockStack.pop();
- };
+ function buildAttr(name, value, loc) {
+ return {
+ type: "AttrNode",
+ name: name,
+ value: value,
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.updateWith = function updateWith(opcode) {
- this.updatingOpcodeStack.current.append(opcode);
- };
+ function buildText(chars, loc) {
+ return {
+ type: "TextNode",
+ chars: chars || "",
+ loc: buildLoc(loc)
+ };
+ }
- VM.prototype.stack = function stack() {
- return this.elementStack;
- };
+ // Expressions
- VM.prototype.scope = function scope() {
- return this.scopeStack.current;
- };
-
- VM.prototype.dynamicScope = function dynamicScope() {
- return this.dynamicScopeStack.current;
- };
-
- VM.prototype.pushFrame = function pushFrame(block, args, blocks, callerScope) {
- this.frame.push(block.ops);
- if (args) this.frame.setArgs(args);
- if (blocks) this.frame.setBlocks(blocks);
- if (callerScope) this.frame.setCallerScope(callerScope);
- };
-
- VM.prototype.pushComponentFrame = function pushComponentFrame(layout, args, blocks, callerScope, component, manager, shadow) {
- this.frame.push(layout.ops, component, manager, shadow);
- if (args) this.frame.setArgs(args);
- if (blocks) this.frame.setBlocks(blocks);
- if (callerScope) this.frame.setCallerScope(callerScope);
- };
-
- VM.prototype.pushEvalFrame = function pushEvalFrame(ops) {
- this.frame.push(ops);
- };
-
- VM.prototype.pushChildScope = function pushChildScope() {
- this.scopeStack.push(this.scopeStack.current.child());
- };
-
- VM.prototype.pushCallerScope = function pushCallerScope() {
- this.scopeStack.push(this.scope().getCallerScope());
- };
-
- VM.prototype.pushDynamicScope = function pushDynamicScope() {
- var child = this.dynamicScopeStack.current.child();
- this.dynamicScopeStack.push(child);
- return child;
- };
-
- VM.prototype.pushRootScope = function pushRootScope(self, size) {
- var scope = _glimmerRuntimeLibEnvironment.Scope.root(self, size);
- this.scopeStack.push(scope);
- return scope;
- };
-
- VM.prototype.popScope = function popScope() {
- this.scopeStack.pop();
- };
-
- VM.prototype.popDynamicScope = function popDynamicScope() {
- this.dynamicScopeStack.pop();
- };
-
- VM.prototype.newDestroyable = function newDestroyable(d) {
- this.stack().newDestroyable(d);
- };
-
- /// SCOPE HELPERS
-
- VM.prototype.getSelf = function getSelf() {
- return this.scope().getSelf();
- };
-
- VM.prototype.referenceForSymbol = function referenceForSymbol(symbol) {
- return this.scope().getSymbol(symbol);
- };
-
- VM.prototype.getArgs = function getArgs() {
- return this.frame.getArgs();
- };
-
- /// EXECUTION
-
- VM.prototype.resume = function resume(opcodes, frame) {
- return this.execute(opcodes, function (vm) {
- return vm.frame.restore(frame);
- });
- };
-
- VM.prototype.execute = function execute(opcodes, initialize) {
- _glimmerUtil.LOGGER.debug("[VM] Begin program execution");
- var elementStack = this.elementStack;
- var frame = this.frame;
- var updatingOpcodeStack = this.updatingOpcodeStack;
- var env = this.env;
-
- elementStack.pushSimpleBlock();
- updatingOpcodeStack.push(new _glimmerUtil.LinkedList());
- frame.push(opcodes);
- if (initialize) initialize(this);
- var opcode = undefined;
- while (frame.hasOpcodes()) {
- if (opcode = frame.nextStatement()) {
- _glimmerUtil.LOGGER.debug('[VM] OP ' + opcode.type);
- _glimmerUtil.LOGGER.trace(opcode);
- opcode.evaluate(this);
- }
- }
- _glimmerUtil.LOGGER.debug("[VM] Completed program execution");
- return new _glimmerRuntimeLibVmRenderResult.default(env, updatingOpcodeStack.pop(), elementStack.popBlock());
- };
-
- VM.prototype.evaluateOpcode = function evaluateOpcode(opcode) {
- opcode.evaluate(this);
- };
-
- // Make sure you have opcodes that push and pop a scope around this opcode
- // if you need to change the scope.
-
- VM.prototype.invokeBlock = function invokeBlock(block, args) {
- var compiled = block.compile(this.env);
- this.pushFrame(compiled, args);
- };
-
- VM.prototype.invokePartial = function invokePartial(block) {
- var compiled = block.compile(this.env);
- this.pushFrame(compiled);
- };
-
- VM.prototype.invokeLayout = function invokeLayout(args, layout, templates, callerScope, component, manager, shadow) {
- this.pushComponentFrame(layout, args, templates, callerScope, component, manager, shadow);
- };
-
- VM.prototype.evaluateOperand = function evaluateOperand(expr) {
- this.frame.setOperand(expr.evaluate(this));
- };
-
- VM.prototype.evaluateArgs = function evaluateArgs(args) {
- var evaledArgs = this.frame.setArgs(args.evaluate(this));
- this.frame.setOperand(evaledArgs.positional.at(0));
- };
-
- VM.prototype.bindPositionalArgs = function bindPositionalArgs(symbols) {
- var args = this.frame.getArgs();
- _glimmerUtil.assert(args, "Cannot bind positional args");
- var positional = args.positional;
-
- var scope = this.scope();
- for (var i = 0; i < symbols.length; i++) {
- scope.bindSymbol(symbols[i], positional.at(i));
- }
- };
-
- VM.prototype.bindNamedArgs = function bindNamedArgs(names, symbols) {
- var args = this.frame.getArgs();
- _glimmerUtil.assert(args, "Cannot bind named args");
- var named = args.named;
-
- var scope = this.scope();
- for (var i = 0; i < names.length; i++) {
- scope.bindSymbol(symbols[i], named.get(names[i]));
- }
- };
-
- VM.prototype.bindBlocks = function bindBlocks(names, symbols) {
- var blocks = this.frame.getBlocks();
- var callerScope = this.frame.getCallerScope();
- var scope = this.scope();
- scope.bindCallerScope(callerScope);
- for (var i = 0; i < names.length; i++) {
- scope.bindBlock(symbols[i], blocks && blocks[names[i]] || null);
- }
- };
-
- VM.prototype.bindPartialArgs = function bindPartialArgs(symbol) {
- var args = this.frame.getArgs();
- _glimmerUtil.assert(args, "Cannot bind named args");
- this.scope().bindSymbol(symbol, args.named);
- };
-
- VM.prototype.bindDynamicScope = function bindDynamicScope(names) {
- var args = this.frame.getArgs();
- _glimmerUtil.assert(args, "Cannot bind dynamic scope");
- var scope = this.dynamicScope();
- for (var i = 0; i < names.length; i++) {
- scope.set(names[i], args.named.get(names[i]));
- }
- };
-
- return VM;
- })();
-
- exports.default = VM;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXdDQSxFQUFBO0FBbUJFLGlCQW5CRixFQUFBLENBb0JXLEdBQWdCLEVBQ3ZCLEtBQVksRUFDWixZQUEwQixFQUNsQixZQUEwQixFQUFBO0FBSDNCLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBYTtBQUdmLGdCQUFBLENBQUEsWUFBWSxHQUFaLFlBQVksQ0FBYztBQXRCNUIsZ0JBQUEsQ0FBQSxpQkFBaUIsR0FBRyxpQkF2Q1IsS0FBSyxFQXVDNEIsQ0FBQztBQUM5QyxnQkFBQSxDQUFBLFVBQVUsR0FBRyxpQkF4Q0QsS0FBSyxFQXdDYyxDQUFDO0FBQ2pDLGdCQUFBLENBQUEsbUJBQW1CLEdBQUcsaUJBekNULEtBQUssRUF5QzJDLENBQUM7QUFDOUQsZ0JBQUEsQ0FBQSxXQUFXLEdBQUcsaUJBMUNELEtBQUssRUEwQ3VCLENBQUM7QUFDMUMsZ0JBQUEsQ0FBQSxjQUFjLEdBQUcsaUJBM0NKLEtBQUssRUEyQzJCLENBQUM7QUFDOUMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsOEJBaENPLFVBQVUsRUFnQ0QsQ0FBQztBQW1COUIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQzs7QUE3QkgsVUFBQSxDQVFTLE9BQU8sR0FBQSxpQkFDWixHQUFnQixFQUNoQixJQUEyQixFQUMzQixZQUEwQixFQUMxQixZQUEwQixFQUMxQixJQUFZLEVBQUE7QUFFWixnQkFBSSxLQUFLLEdBQUcsOEJBdkRQLEtBQUssQ0F1RFEsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztB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R0FBQSwwQkFBQyxLQUFlLEVBQUE7QUFDOUIsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFaEMseUJBcFlnRSxNQUFNLENBb1kvRCxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztBQUUxQyxnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWhDLGlCQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxxQkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQztTQUNGOztlQXJXSCxFQUFBOzs7c0JBQUEsRUFBQSIsImZpbGUiOiJhcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIExPR0dFUiwgT3BhcXVlLCBhc3NlcnQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVzIH0gZnJvbSAnLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jaywgQ29tcGlsZWRCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE9wY29kZSwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgUmFuZ2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIgfSBmcm9tICcuLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBDYXB0dXJlZEZyYW1lLCBGcmFtZVN0YWNrLCBCbG9ja3MgfSBmcm9tICcuL2ZyYW1lJztcblxuaW50ZXJmYWNlIFZNSW5pdGlhbE9wdGlvbnMge1xuICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjaztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUHVzaEZyYW1lT3B0aW9ucyB7XG4gIGJsb2NrOiBDb21waWxlZEJsb2NrO1xuICBhcmdzPzogRXZhbHVhdGVkQXJncztcbiAgYmxvY2tzPzogQmxvY2tzO1xuICBjYWxsZXJTY29wZT86IFNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZ2V0QXJncygpOiBFdmFsdWF0ZWRBcmdzO1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpO1xufVxuXG50eXBlIE9wTGlzdCA9IFJhbmdlPE9wY29kZT47XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPFVwZGF0aW5nT3Bjb2RlPigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgZnJhbWUgPSBuZXcgRnJhbWVTdGFjaygpO1xuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHNpemU6IG51bWJlclxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHNpemUpO1xuICAgIHJldHVybiBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgZnJhbWU6IHRoaXMuZnJhbWUuY2FwdHVyZSgpXG4gICAgfTtcbiAgfVxuXG4gIGdvdG8ob3A6IExhYmVsT3Bjb2RlKSB7XG4gICAgLy8gYXNzZXJ0KHRoaXMuZnJhbWUuZ2V0T3BzKCkuY29udGFpbnMob3ApLCBgSWxsZWdhbCBqdW1wIHRvICR7b3AubGFiZWx9YCk7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50O1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVyV2l0aEtleShrZXk6IHN0cmluZywgb3BzOiBPcFNlcSkge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShvcHMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQubWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLmZyYW1lLmdldEl0ZXJhdG9yKCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlLCB1cGRhdGluZyk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUsIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHVwZGF0aW5nKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5zdGFjaygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIHN0YWNrKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoRnJhbWUoXG4gICAgYmxvY2s6IENvbXBpbGVkQmxvY2ssXG4gICAgYXJncz86IEV2YWx1YXRlZEFyZ3MsXG4gICAgYmxvY2tzPzogQmxvY2tzLFxuICAgIGNhbGxlclNjb3BlPzogU2NvcGVcbiAgKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGJsb2NrLm9wcyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MpO1xuICAgIGlmIChibG9ja3MpIHRoaXMuZnJhbWUuc2V0QmxvY2tzKGJsb2Nrcyk7XG4gICAgaWYgKGNhbGxlclNjb3BlKSB0aGlzLmZyYW1lLnNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRGcmFtZShcbiAgICBsYXlvdXQ6IENvbXBpbGVkQmxvY2ssXG4gICAgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBibG9ja3M6IEJsb2NrcyxcbiAgICBjYWxsZXJTY29wZTogU2NvcGUsXG4gICAgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHNoYWRvdzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGxheW91dC5vcHMsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcblxuICAgIGlmIChhcmdzKSB0aGlzLmZyYW1lLnNldEFyZ3MoYXJncyk7XG4gICAgaWYgKGJsb2NrcykgdGhpcy5mcmFtZS5zZXRCbG9ja3MoYmxvY2tzKTtcbiAgICBpZiAoY2FsbGVyU2NvcGUpIHRoaXMuZnJhbWUuc2V0Q2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaEV2YWxGcmFtZShvcHM6IE9wU2VxKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKG9wcyk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlU3RhY2suY3VycmVudC5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNlbGY6IFBhdGhSZWZlcmVuY2U8YW55Piwgc2l6ZTogbnVtYmVyKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgc2l6ZSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLnN0YWNrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIHJlc3VtZShvcGNvZGVzOiBPcFNlcSwgZnJhbWU6IENhcHR1cmVkRnJhbWUpOiBSZW5kZXJSZXN1bHQge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUob3Bjb2Rlcywgdm0gPT4gdm0uZnJhbWUucmVzdG9yZShmcmFtZSkpO1xuICB9XG5cbiAgZXhlY3V0ZShvcGNvZGVzOiBPcFNlcSwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIExPR0dFUi5kZWJ1ZyhcIltWTV0gQmVnaW4gcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICBsZXQgeyBlbGVtZW50U3RhY2ssIGZyYW1lLCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBlbGVtZW50U3RhY2sucHVzaFNpbXBsZUJsb2NrKCk7XG5cbiAgICB1cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIGZyYW1lLnB1c2gob3Bjb2Rlcyk7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCBvcGNvZGU6IE9wY29kZTtcblxuICAgIHdoaWxlIChmcmFtZS5oYXNPcGNvZGVzKCkpIHtcbiAgICAgIGlmIChvcGNvZGUgPSBmcmFtZS5uZXh0U3RhdGVtZW50KCkpIHtcbiAgICAgICAgTE9HR0VSLmRlYnVnKGBbVk1dIE9QICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgICAgIExPR0dFUi50cmFjZShvcGNvZGUpO1xuICAgICAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgTE9HR0VSLmRlYnVnKFwiW1ZNXSBDb21wbGV0ZWQgcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICByZXR1cm4gbmV3IFJlbmRlclJlc3VsdChcbiAgICAgIGVudixcbiAgICAgIHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksXG4gICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB5b3UgaGF2ZSBvcGNvZGVzIHRoYXQgcHVzaCBhbmQgcG9wIGEgc2NvcGUgYXJvdW5kIHRoaXMgb3Bjb2RlXG4gIC8vIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2NvcGUuXG4gIGludm9rZUJsb2NrKGJsb2NrOiBJbmxpbmVCbG9jaywgYXJnczogRXZhbHVhdGVkQXJncykge1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGUodGhpcy5lbnYpO1xuICAgIHRoaXMucHVzaEZyYW1lKGNvbXBpbGVkLCBhcmdzKTtcbiAgfVxuXG4gIGludm9rZVBhcnRpYWwoYmxvY2s6IFBhcnRpYWxCbG9jaykge1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGUodGhpcy5lbnYpO1xuICAgIHRoaXMucHVzaEZyYW1lKGNvbXBpbGVkKTtcbiAgfVxuXG4gIGludm9rZUxheW91dChcbiAgICBhcmdzOiBFdmFsdWF0ZWRBcmdzLFxuICAgIGxheW91dDogQ29tcGlsZWRCbG9jayxcbiAgICB0ZW1wbGF0ZXM6IFRlbXBsYXRlcyxcbiAgICBjYWxsZXJTY29wZTogU2NvcGUsXG4gICAgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHNoYWRvdzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5wdXNoQ29tcG9uZW50RnJhbWUobGF5b3V0LCBhcmdzLCB0ZW1wbGF0ZXMsIGNhbGxlclNjb3BlLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG4gIH1cblxuICBldmFsdWF0ZU9wZXJhbmQoZXhwcjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4pIHtcbiAgICB0aGlzLmZyYW1lLnNldE9wZXJhbmQoZXhwci5ldmFsdWF0ZSh0aGlzKSk7XG4gIH1cblxuICBldmFsdWF0ZUFyZ3MoYXJnczogQ29tcGlsZWRBcmdzKSB7XG4gICAgbGV0IGV2YWxlZEFyZ3MgPSB0aGlzLmZyYW1lLnNldEFyZ3MoYXJncy5ldmFsdWF0ZSh0aGlzKSk7XG4gICAgdGhpcy5mcmFtZS5zZXRPcGVyYW5kKGV2YWxlZEFyZ3MucG9zaXRpb25hbC5hdCgwKSk7XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3Moc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgcG9zaXRpb25hbCBhcmdzXCIpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCB9ID0gYXJncztcblxuICAgIGxldCBzY29wZSA9IHRoaXMuc2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT0wOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZFN5bWJvbChzeW1ib2xzW2ldLCBwb3NpdGlvbmFsLmF0KGkpKTtcbiAgICB9XG4gIH1cblxuICBiaW5kTmFtZWRBcmdzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgbmFtZWQgYXJnc1wiKTtcblxuICAgIGxldCB7IG5hbWVkIH0gPSBhcmdzO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZFN5bWJvbChzeW1ib2xzW2ldLCBuYW1lZC5nZXQobmFtZXNbaV0pKTtcbiAgICB9XG4gIH1cblxuICBiaW5kQmxvY2tzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYmxvY2tzID0gdGhpcy5mcmFtZS5nZXRCbG9ja3MoKTtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB0aGlzLmZyYW1lLmdldENhbGxlclNjb3BlKCk7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBzY29wZS5iaW5kQ2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZEJsb2NrKHN5bWJvbHNbaV0sIChibG9ja3MgJiYgYmxvY2tzW25hbWVzW2ldXSkgfHwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYmluZFBhcnRpYWxBcmdzKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcblxuICAgIGFzc2VydChhcmdzLCBcIkNhbm5vdCBiaW5kIG5hbWVkIGFyZ3NcIik7XG5cbiAgICB0aGlzLnNjb3BlKCkuYmluZFN5bWJvbChzeW1ib2wsIGFyZ3MubmFtZWQpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogc3RyaW5nW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgZHluYW1pYyBzY29wZVwiKTtcblxuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5zZXQobmFtZXNbaV0sIGFyZ3MubmFtZWQuZ2V0KG5hbWVzW2ldKSk7XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTtcbn1cblxuaW50ZXJmYWNlIFJldHVybkhhbmRsZXIge1xuICBzZXRSZW5kZXJSZXN1bHQocmVuZGVyUmVzdWx0OiBSZW5kZXJSZXN1bHQpO1xufVxuIl19
-enifed('glimmer-runtime/lib/vm/frame', ['exports'], function (exports) {
- 'use strict';
-
- var CapturedFrame = function CapturedFrame(operand, args, condition) {
- this.operand = operand;
- this.args = args;
- this.condition = condition;
+ function buildSexpr(path, params, hash) {
+ return {
+ type: "SubExpression",
+ path: buildPath(path),
+ params: params || [],
+ hash: hash || buildHash([])
};
+ }
- exports.CapturedFrame = CapturedFrame;
-
- var Frame = (function () {
- function Frame(ops) {
- var component = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
- var manager = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
- var shadow = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
-
- this.component = component;
- this.manager = manager;
- this.shadow = shadow;
- this.operand = null;
- this.immediate = null;
- this.args = null;
- this.callerScope = null;
- this.blocks = null;
- this.condition = null;
- this.iterator = null;
- this.key = null;
- this.ops = ops;
- this.op = ops.head();
- }
-
- Frame.prototype.capture = function capture() {
- return new CapturedFrame(this.operand, this.args, this.condition);
- };
-
- Frame.prototype.restore = function restore(frame) {
- this.operand = frame['operand'];
- this.args = frame['args'];
- this.condition = frame['condition'];
- };
-
- return Frame;
- })();
-
- var FrameStack = (function () {
- function FrameStack() {
- this.frames = [];
- this.frame = undefined;
- }
-
- FrameStack.prototype.push = function push(ops) {
- var component = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
- var manager = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
- var shadow = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
-
- var frame = this.frame === undefined ? this.frame = 0 : ++this.frame;
- if (this.frames.length <= frame) {
- this.frames.push(null);
- }
- this.frames[frame] = new Frame(ops, component, manager, shadow);
- };
-
- FrameStack.prototype.pop = function pop() {
- var frames = this.frames;
- var frame = this.frame;
-
- frames[frame] = null;
- this.frame = frame === 0 ? undefined : frame - 1;
- };
-
- FrameStack.prototype.capture = function capture() {
- return this.frames[this.frame].capture();
- };
-
- FrameStack.prototype.restore = function restore(frame) {
- this.frames[this.frame].restore(frame);
- };
-
- FrameStack.prototype.getOps = function getOps() {
- return this.frames[this.frame].ops;
- };
-
- FrameStack.prototype.getCurrent = function getCurrent() {
- return this.frames[this.frame].op;
- };
-
- FrameStack.prototype.setCurrent = function setCurrent(op) {
- return this.frames[this.frame].op = op;
- };
-
- FrameStack.prototype.getOperand = function getOperand() {
- return this.frames[this.frame].operand;
- };
-
- FrameStack.prototype.setOperand = function setOperand(operand) {
- return this.frames[this.frame].operand = operand;
- };
-
- FrameStack.prototype.getImmediate = function getImmediate() {
- return this.frames[this.frame].immediate;
- };
-
- FrameStack.prototype.setImmediate = function setImmediate(value) {
- return this.frames[this.frame].immediate = value;
- };
-
- FrameStack.prototype.getArgs = function getArgs() {
- return this.frames[this.frame].args;
- };
-
- FrameStack.prototype.setArgs = function setArgs(args) {
- var frame = this.frames[this.frame];
- return frame.args = args;
- };
-
- FrameStack.prototype.getCondition = function getCondition() {
- return this.frames[this.frame].condition;
- };
-
- FrameStack.prototype.setCondition = function setCondition(condition) {
- return this.frames[this.frame].condition = condition;
- };
-
- FrameStack.prototype.getIterator = function getIterator() {
- return this.frames[this.frame].iterator;
- };
-
- FrameStack.prototype.setIterator = function setIterator(iterator) {
- return this.frames[this.frame].iterator = iterator;
- };
-
- FrameStack.prototype.getKey = function getKey() {
- return this.frames[this.frame].key;
- };
-
- FrameStack.prototype.setKey = function setKey(key) {
- return this.frames[this.frame].key = key;
- };
-
- FrameStack.prototype.getBlocks = function getBlocks() {
- return this.frames[this.frame].blocks;
- };
-
- FrameStack.prototype.setBlocks = function setBlocks(blocks) {
- return this.frames[this.frame].blocks = blocks;
- };
-
- FrameStack.prototype.getCallerScope = function getCallerScope() {
- return this.frames[this.frame].callerScope;
- };
-
- FrameStack.prototype.setCallerScope = function setCallerScope(callerScope) {
- return this.frames[this.frame].callerScope = callerScope;
- };
-
- FrameStack.prototype.getComponent = function getComponent() {
- return this.frames[this.frame].component;
- };
-
- FrameStack.prototype.getManager = function getManager() {
- return this.frames[this.frame].manager;
- };
-
- FrameStack.prototype.getShadow = function getShadow() {
- return this.frames[this.frame].shadow;
- };
-
- FrameStack.prototype.goto = function goto(op) {
- this.setCurrent(op);
- };
-
- FrameStack.prototype.hasOpcodes = function hasOpcodes() {
- return this.frame !== undefined;
- };
-
- FrameStack.prototype.nextStatement = function nextStatement() {
- var op = this.frames[this.frame].op;
- var ops = this.getOps();
- if (op) {
- this.setCurrent(ops.nextNode(op));
- return op;
- } else {
- this.pop();
- return null;
- }
- };
-
- return FrameStack;
- })();
-
- exports.FrameStack = FrameStack;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsYUFBQSxHQUNFLFNBREYsYUFBQSxDQUVZLE9BQTJCLEVBQzNCLElBQW1CLEVBQ25CLFNBQTZCLEVBQUE7QUFGN0IsWUFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQW9CO0FBQzNCLFlBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFlO0FBQ25CLFlBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFvQjtLQUNuQzs7OztRQUdOLEtBQUE7QUFZRSxpQkFaRixLQUFBLENBYUksR0FBVSxFQUdvQjtnQkFGdkIsU0FBUyx5REFBYyxJQUFJO2dCQUMzQixPQUFPLHlEQUFnQyxJQUFJO2dCQUMzQyxNQUFNLHlEQUFhLElBQUk7O0FBRnZCLGdCQUFBLENBQUEsU0FBUyxHQUFULFNBQVMsQ0FBa0I7QUFDM0IsZ0JBQUEsQ0FBQSxPQUFPLEdBQVAsT0FBTyxDQUFvQztBQUMzQyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQWlCO0FBYmhDLGdCQUFBLENBQUEsT0FBTyxHQUF1QixJQUFJLENBQUM7QUFDbkMsZ0JBQUEsQ0FBQSxTQUFTLEdBQVEsSUFBSSxDQUFDO0FBQ3RCLGdCQUFBLENBQUEsSUFBSSxHQUFrQixJQUFJLENBQUM7QUFDM0IsZ0JBQUEsQ0FBQSxXQUFXLEdBQVUsSUFBSSxDQUFDO0FBQzFCLGdCQUFBLENBQUEsTUFBTSxHQUFXLElBQUksQ0FBQztBQUN0QixnQkFBQSxDQUFBLFNBQVMsR0FBdUIsSUFBSSxDQUFDO0FBQ3JDLGdCQUFBLENBQUEsUUFBUSxHQUFzQixJQUFJLENBQUM7QUFDbkMsZ0JBQUEsQ0FBQSxHQUFHLEdBQVcsSUFBSSxDQUFDO0FBUWpCLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGdCQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0Qjs7QUFwQkgsYUFB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WyJpbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWRGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3BlcmFuZDogUGF0aFJlZmVyZW5jZTxhbnk+LFxuICAgIHByaXZhdGUgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBwcml2YXRlIGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+XG4gICkge31cbn1cblxuY2xhc3MgRnJhbWUge1xuICBvcHM6IE9wU2VxO1xuICBvcDogT3Bjb2RlO1xuICBvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPGFueT4gPSBudWxsO1xuICBpbW1lZGlhdGU6IGFueSA9IG51bGw7XG4gIGFyZ3M6IEV2YWx1YXRlZEFyZ3MgPSBudWxsO1xuICBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsO1xuICBibG9ja3M6IEJsb2NrcyA9IG51bGw7XG4gIGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+ID0gbnVsbDtcbiAgaXRlcmF0b3I6IFJlZmVyZW5jZUl0ZXJhdG9yID0gbnVsbDtcbiAga2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wczogT3BTZXEsXG4gICAgcHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50ID0gbnVsbCxcbiAgICBwdWJsaWMgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+ID0gbnVsbCxcbiAgICBwdWJsaWMgc2hhZG93OiBzdHJpbmdbXSA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5vcCA9IG9wcy5oZWFkKCk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkRnJhbWUge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRGcmFtZSh0aGlzLm9wZXJhbmQsIHRoaXMuYXJncywgdGhpcy5jb25kaXRpb24pO1xuICB9XG5cbiAgcmVzdG9yZShmcmFtZTogQ2FwdHVyZWRGcmFtZSkge1xuICAgIHRoaXMub3BlcmFuZCA9IGZyYW1lWydvcGVyYW5kJ107XG4gICAgdGhpcy5hcmdzID0gZnJhbWVbJ2FyZ3MnXTtcbiAgICB0aGlzLmNvbmRpdGlvbiA9IGZyYW1lWydjb25kaXRpb24nXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrcyB7XG4gIGRlZmF1bHQ6IElubGluZUJsb2NrO1xuICBpbnZlcnNlOiBJbmxpbmVCbG9jaztcbn1cblxuZXhwb3J0IGNsYXNzIEZyYW1lU3RhY2sge1xuICBwcml2YXRlIGZyYW1lczogRnJhbWVbXSA9IFtdO1xuICBwcml2YXRlIGZyYW1lOiBudW1iZXIgPSB1bmRlZmluZWQ7XG5cbiAgcHVzaChvcHM6IE9wU2VxLCBjb21wb25lbnQ6IENvbXBvbmVudCA9IG51bGwsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiA9IG51bGwsIHNoYWRvdzogc3RyaW5nW10gPSBudWxsKSB7XG4gICAgbGV0IGZyYW1lID0gKHRoaXMuZnJhbWUgPT09IHVuZGVmaW5lZCkgPyAodGhpcy5mcmFtZSA9IDApIDogKyt0aGlzLmZyYW1lO1xuXG4gICAgaWYgKHRoaXMuZnJhbWVzLmxlbmd0aCA8PSBmcmFtZSkge1xuICAgICAgdGhpcy5mcmFtZXMucHVzaChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLmZyYW1lc1tmcmFtZV0gPSBuZXcgRnJhbWUob3BzLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG4gIH1cblxuICBwb3AoKSB7XG4gICAgbGV0IHsgZnJhbWVzLCBmcmFtZSB9ID0gdGhpcztcbiAgICBmcmFtZXNbZnJhbWVdID0gbnVsbDtcbiAgICB0aGlzLmZyYW1lID0gZnJhbWUgPT09IDAgPyB1bmRlZmluZWQgOiBmcmFtZSAtIDE7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkRnJhbWUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYXB0dXJlKCk7XG4gIH1cblxuICByZXN0b3JlKGZyYW1lOiBDYXB0dXJlZEZyYW1lKSB7XG4gICAgdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ucmVzdG9yZShmcmFtZSk7XG4gIH1cblxuICBnZXRPcHMoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcHM7XG4gIH1cblxuICBnZXRDdXJyZW50KCk6IE9wY29kZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wO1xuICB9XG5cbiAgc2V0Q3VycmVudChvcDogT3Bjb2RlKTogT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3AgPSBvcDtcbiAgfVxuXG4gIGdldE9wZXJhbmQ8VD4oKTogUGF0aFJlZmVyZW5jZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wZXJhbmQ7XG4gIH1cblxuICBzZXRPcGVyYW5kPFQ+KG9wZXJhbmQ6IFBhdGhSZWZlcmVuY2U8VD4pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3BlcmFuZCA9IG9wZXJhbmQ7XG4gIH1cblxuICBnZXRJbW1lZGlhdGU8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmltbWVkaWF0ZTtcbiAgfVxuXG4gIHNldEltbWVkaWF0ZTxUPih2YWx1ZTogVCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pbW1lZGlhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmFyZ3M7XG4gIH1cblxuICBzZXRBcmdzKGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXTtcbiAgICByZXR1cm4gZnJhbWUuYXJncyA9IGFyZ3M7XG4gIH1cblxuICBnZXRDb25kaXRpb24oKTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uO1xuICB9XG5cbiAgc2V0Q29uZGl0aW9uKGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICB9XG5cbiAgZ2V0SXRlcmF0b3IoKTogUmVmZXJlbmNlSXRlcmF0b3Ige1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pdGVyYXRvcjtcbiAgfVxuXG4gIHNldEl0ZXJhdG9yKGl0ZXJhdG9yOiBSZWZlcmVuY2VJdGVyYXRvcik6IFJlZmVyZW5jZUl0ZXJhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uaXRlcmF0b3IgPSBpdGVyYXRvcjtcbiAgfVxuXG4gIGdldEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5rZXk7XG4gIH1cblxuICBzZXRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5rZXkgPSBrZXk7XG4gIH1cblxuICBnZXRCbG9ja3MoKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzO1xuICB9XG5cbiAgc2V0QmxvY2tzKGJsb2NrczogQmxvY2tzKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzID0gYmxvY2tzO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIHNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlOiBTY29wZSk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgfVxuXG4gIGdldENvbXBvbmVudCgpOiBDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jb21wb25lbnQ7XG4gIH1cblxuICBnZXRNYW5hZ2VyKCk6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm1hbmFnZXI7XG4gIH1cblxuICBnZXRTaGFkb3coKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5zaGFkb3c7XG4gIH1cblxuICBnb3RvKG9wOiBMYWJlbE9wY29kZSkge1xuICAgIHRoaXMuc2V0Q3VycmVudChvcCk7XG4gIH1cblxuICBoYXNPcGNvZGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IE9wY29kZSB7XG4gICAgbGV0IG9wID0gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3A7XG4gICAgbGV0IG9wcyA9IHRoaXMuZ2V0T3BzKCk7XG5cbiAgICBpZiAob3ApIHtcbiAgICAgIHRoaXMuc2V0Q3VycmVudChvcHMubmV4dE5vZGUob3ApKTtcbiAgICAgIHJldHVybiBvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
-enifed('glimmer-runtime/lib/vm/render-result', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/vm/update'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibVmUpdate) {
- 'use strict';
-
- var RenderResult = (function () {
- function RenderResult(env, updating, bounds) {
- this.env = env;
- this.updating = updating;
- this.bounds = bounds;
- }
-
- RenderResult.prototype.rerender = function rerender() {
- var _ref = arguments.length <= 0 || arguments[0] === undefined ? { alwaysRevalidate: false } : arguments[0];
-
- var _ref$alwaysRevalidate = _ref.alwaysRevalidate;
- var alwaysRevalidate = _ref$alwaysRevalidate === undefined ? false : _ref$alwaysRevalidate;
- var env = this.env;
- var updating = this.updating;
-
- var vm = new _glimmerRuntimeLibVmUpdate.default(env, { alwaysRevalidate: alwaysRevalidate });
- vm.execute(updating, this);
- };
-
- RenderResult.prototype.parentElement = function parentElement() {
- return this.bounds.parentElement();
- };
-
- RenderResult.prototype.firstNode = function firstNode() {
- return this.bounds.firstNode();
- };
-
- RenderResult.prototype.lastNode = function lastNode() {
- return this.bounds.lastNode();
- };
-
- RenderResult.prototype.opcodes = function opcodes() {
- return this.updating;
- };
-
- RenderResult.prototype.handleException = function handleException() {
- throw "this should never happen";
- };
-
- RenderResult.prototype.destroy = function destroy() {
- this.bounds.destroy();
- _glimmerRuntimeLibBounds.clear(this.bounds);
- };
-
- return RenderResult;
- })();
-
- exports.default = RenderResult;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vcmVuZGVyLXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFPQSxZQUFBO0FBQ0UsaUJBREYsWUFBQSxDQUVZLEdBQWdCLEVBQ2hCLFFBQW9DLEVBQ3BDLE1BQXlCLEVBQUE7QUFGekIsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFhO0FBQ2hCLGdCQUFBLENBQUEsUUFBUSxHQUFSLFFBQVEsQ0FBNEI7QUFDcEMsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFtQjtTQUMvQjs7QUFMTixvQkFBQSxXQU9FLFFBQVEsR0FBQSxvQkFBMkQ7NkVBQTNCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFOzs2Q0FBeEQsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSztnQkFDM0IsR0FBRyxHQUFlLElBQUksQ0FBdEIsR0FBRztnQkFBRSxRQUFRLEdBQUssSUFBSSxDQUFqQixRQUFROztBQUNuQixnQkFBSSxFQUFFLEdBQUcsdUNBQWUsR0FBRyxFQUFFLEVBQUUsZ0JBQWdCLEVBQWhCLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNuRCxjQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM1Qjs7QUFYSCxvQkFBQSxXQWFFLGFBQWEsR0FBQSx5QkFBQTtBQUNYLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDcEM7O0FBZkgsb0JBQUEsV0FpQkUsU0FBUyxHQUFBLHFCQUFBO0FBQ1AsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNoQzs7QUFuQkgsb0JBQUEsV0FxQkUsUUFBUSxHQUFBLG9CQUFBO0FBQ04sbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMvQjs7QUF2Qkgsb0JBQUEsV0F5QkUsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0Qjs7QUEzQkgsb0JBQUEsV0E2QkUsZUFBZSxHQUFBLDJCQUFBO0FBQ2Isa0JBQU0sMEJBQTBCLENBQUM7U0FDbEM7O0FBL0JILG9CQUFBLFdBaUNFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLGdCQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RCLHFDQXhDd0IsS0FBSyxDQXdDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BCOztlQXBDSCxZQUFBOzs7c0JBQUEsWUFBQSIsImZpbGUiOiJyZW5kZXItcmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCBVcGRhdGluZ1ZNLCB7IEV4Y2VwdGlvbkhhbmRsZXIgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgeyBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVuZGVyUmVzdWx0IGltcGxlbWVudHMgRGVzdHJveWFibGVCb3VuZHMsIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQsXG4gICAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4sXG4gICAgcHJpdmF0ZSBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzXG4gICkge31cblxuICByZXJlbmRlcih7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9ID0geyBhbHdheXNSZXZhbGlkYXRlOiBmYWxzZSB9KSB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgdm0gPSBuZXcgVXBkYXRpbmdWTShlbnYsIHsgYWx3YXlzUmV2YWxpZGF0ZSB9KTtcbiAgICB2bS5leGVjdXRlKHVwZGF0aW5nLCB0aGlzKTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogU2ltcGxlLk5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZS5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wY29kZXMoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0aW5nO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIHRocm93IFwidGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXCI7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRzLmRlc3Ryb3koKTtcbiAgICBjbGVhcih0aGlzLmJvdW5kcyk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-runtime/lib/vm/update', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/builder', 'glimmer-util', 'glimmer-reference', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/vm/append'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibBuilder, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibVmAppend) {
- 'use strict';
-
- var UpdatingVM = (function () {
- function UpdatingVM(env, _ref) {
- var _ref$alwaysRevalidate = _ref.alwaysRevalidate;
- var alwaysRevalidate = _ref$alwaysRevalidate === undefined ? false : _ref$alwaysRevalidate;
-
- this.frameStack = new _glimmerUtil.Stack();
- this.env = env;
- this.dom = env.getDOM();
- this.alwaysRevalidate = alwaysRevalidate;
- }
-
- UpdatingVM.prototype.execute = function execute(opcodes, handler) {
- var frameStack = this.frameStack;
-
- this.try(opcodes, handler);
- while (true) {
- if (frameStack.isEmpty()) break;
- var opcode = this.frameStack.current.nextStatement();
- if (opcode === null) {
- this.frameStack.pop();
- continue;
- }
- _glimmerUtil.LOGGER.debug('[VM] OP ' + opcode.type);
- _glimmerUtil.LOGGER.trace(opcode);
- opcode.evaluate(this);
- }
- };
-
- UpdatingVM.prototype.goto = function goto(op) {
- this.frameStack.current.goto(op);
- };
-
- UpdatingVM.prototype.try = function _try(ops, handler) {
- this.frameStack.push(new UpdatingVMFrame(this, ops, handler));
- };
-
- UpdatingVM.prototype.throw = function _throw() {
- this.frameStack.current.handleException();
- this.frameStack.pop();
- };
-
- UpdatingVM.prototype.evaluateOpcode = function evaluateOpcode(opcode) {
- opcode.evaluate(this);
- };
-
- return UpdatingVM;
- })();
-
- exports.default = UpdatingVM;
-
- var BlockOpcode = (function (_UpdatingOpcode) {
- babelHelpers.inherits(BlockOpcode, _UpdatingOpcode);
-
- function BlockOpcode(ops, state, bounds, children) {
- _UpdatingOpcode.call(this);
- this.type = "block";
- this.next = null;
- this.prev = null;
- var env = state.env;
- var scope = state.scope;
- var dynamicScope = state.dynamicScope;
- var frame = state.frame;
-
- this.ops = ops;
- this.children = children;
- this.env = env;
- this.scope = scope;
- this.dynamicScope = dynamicScope;
- this.frame = frame;
- this.bounds = bounds;
- }
-
- BlockOpcode.prototype.parentElement = function parentElement() {
- return this.bounds.parentElement();
- };
-
- BlockOpcode.prototype.firstNode = function firstNode() {
- return this.bounds.firstNode();
- };
-
- BlockOpcode.prototype.lastNode = function lastNode() {
- return this.bounds.lastNode();
- };
-
- BlockOpcode.prototype.evaluate = function evaluate(vm) {
- vm.try(this.children, null);
- };
-
- BlockOpcode.prototype.destroy = function destroy() {
- this.bounds.destroy();
- };
-
- BlockOpcode.prototype.didDestroy = function didDestroy() {
- this.env.didDestroy(this.bounds);
- };
-
- BlockOpcode.prototype.toJSON = function toJSON() {
- var begin = this.ops.head();
- var end = this.ops.tail();
- var details = _glimmerUtil.dict();
- details["guid"] = '' + this._guid;
- details["begin"] = begin.inspect();
- details["end"] = end.inspect();
- return {
- guid: this._guid,
- type: this.type,
- details: details,
- children: this.children.toArray().map(function (op) {
- return op.toJSON();
- })
- };
- };
-
- return BlockOpcode;
- })(_glimmerRuntimeLibOpcodes.UpdatingOpcode);
-
- exports.BlockOpcode = BlockOpcode;
-
- var TryOpcode = (function (_BlockOpcode) {
- babelHelpers.inherits(TryOpcode, _BlockOpcode);
-
- function TryOpcode(ops, state, bounds, children) {
- _BlockOpcode.call(this, ops, state, bounds, children);
- this.type = "try";
- this.tag = this._tag = new _glimmerReference.UpdatableTag(_glimmerReference.CONSTANT_TAG);
- }
-
- TryOpcode.prototype.didInitializeChildren = function didInitializeChildren() {
- this._tag.update(_glimmerReference.combineSlice(this.children));
- };
-
- TryOpcode.prototype.evaluate = function evaluate(vm) {
- vm.try(this.children, this);
- };
-
- TryOpcode.prototype.handleException = function handleException() {
- var env = this.env;
- var scope = this.scope;
- var ops = this.ops;
- var dynamicScope = this.dynamicScope;
- var frame = this.frame;
-
- var elementStack = _glimmerRuntimeLibBuilder.ElementStack.resume(this.env, this.bounds, this.bounds.reset(env));
- var vm = new _glimmerRuntimeLibVmAppend.default(env, scope, dynamicScope, elementStack);
- var result = vm.resume(ops, frame);
- this.children = result.opcodes();
- this.didInitializeChildren();
- };
-
- TryOpcode.prototype.toJSON = function toJSON() {
- var json = _BlockOpcode.prototype.toJSON.call(this);
- var begin = this.ops.head();
- var end = this.ops.tail();
- json["details"]["begin"] = JSON.stringify(begin.inspect());
- json["details"]["end"] = JSON.stringify(end.inspect());
- return _BlockOpcode.prototype.toJSON.call(this);
- };
-
- return TryOpcode;
- })(BlockOpcode);
-
- exports.TryOpcode = TryOpcode;
-
- var ListRevalidationDelegate = (function () {
- function ListRevalidationDelegate(opcode, marker) {
- this.opcode = opcode;
- this.marker = marker;
- this.didInsert = false;
- this.didDelete = false;
- this.map = opcode.map;
- this.updating = opcode['children'];
- }
-
- ListRevalidationDelegate.prototype.insert = function insert(key, item, memo, before) {
- var map = this.map;
- var opcode = this.opcode;
- var updating = this.updating;
-
- var nextSibling = null;
- var reference = null;
- if (before) {
- reference = map[before];
- nextSibling = reference.bounds.firstNode();
- } else {
- nextSibling = this.marker;
- }
- var vm = opcode.vmForInsertion(nextSibling);
- var tryOpcode = undefined;
- vm.execute(opcode.ops, function (vm) {
- vm.frame.setArgs(_glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedArgs.positional([item, memo]));
- vm.frame.setOperand(item);
- vm.frame.setCondition(new _glimmerReference.ConstReference(true));
- vm.frame.setKey(key);
- var state = vm.capture();
- var tracker = vm.stack().pushUpdatableBlock();
- tryOpcode = new TryOpcode(opcode.ops, state, tracker, vm.updatingOpcodeStack.current);
- });
- tryOpcode.didInitializeChildren();
- updating.insertBefore(tryOpcode, reference);
- map[key] = tryOpcode;
- this.didInsert = true;
- };
-
- ListRevalidationDelegate.prototype.retain = function retain(key, item, memo) {};
-
- ListRevalidationDelegate.prototype.move = function move(key, item, memo, before) {
- var map = this.map;
- var updating = this.updating;
-
- var entry = map[key];
- var reference = map[before] || null;
- if (before) {
- _glimmerRuntimeLibBounds.move(entry, reference.firstNode());
- } else {
- _glimmerRuntimeLibBounds.move(entry, this.marker);
- }
- updating.remove(entry);
- updating.insertBefore(entry, reference);
- };
-
- ListRevalidationDelegate.prototype.delete = function _delete(key) {
- var map = this.map;
-
- var opcode = map[key];
- opcode.didDestroy();
- _glimmerRuntimeLibBounds.clear(opcode);
- this.updating.remove(opcode);
- delete map[key];
- this.didDelete = true;
- };
-
- ListRevalidationDelegate.prototype.done = function done() {
- this.opcode.didInitializeChildren(this.didInsert || this.didDelete);
- };
-
- return ListRevalidationDelegate;
- })();
-
- var ListBlockOpcode = (function (_BlockOpcode2) {
- babelHelpers.inherits(ListBlockOpcode, _BlockOpcode2);
-
- function ListBlockOpcode(ops, state, bounds, children, artifacts) {
- _BlockOpcode2.call(this, ops, state, bounds, children);
- this.type = "list-block";
- this.map = _glimmerUtil.dict();
- this.lastIterated = _glimmerReference.INITIAL;
- this.artifacts = artifacts;
- var _tag = this._tag = new _glimmerReference.UpdatableTag(_glimmerReference.CONSTANT_TAG);
- this.tag = _glimmerReference.combine([artifacts.tag, _tag]);
- }
-
- ListBlockOpcode.prototype.didInitializeChildren = function didInitializeChildren() {
- var listDidChange = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
-
- this.lastIterated = this.artifacts.tag.value();
- if (listDidChange) {
- this._tag.update(_glimmerReference.combineSlice(this.children));
- }
- };
-
- ListBlockOpcode.prototype.evaluate = function evaluate(vm) {
- var artifacts = this.artifacts;
- var lastIterated = this.lastIterated;
-
- if (!artifacts.tag.validate(lastIterated)) {
- var bounds = this.bounds;
- var dom = vm.dom;
-
- var marker = dom.createComment('');
- dom.insertAfter(bounds.parentElement(), marker, bounds.lastNode());
- var target = new ListRevalidationDelegate(this, marker);
- var synchronizer = new _glimmerReference.IteratorSynchronizer({ target: target, artifacts: artifacts });
- synchronizer.sync();
- this.parentElement().removeChild(marker);
- }
- // Run now-updated updating opcodes
- _BlockOpcode2.prototype.evaluate.call(this, vm);
- };
-
- ListBlockOpcode.prototype.vmForInsertion = function vmForInsertion(nextSibling) {
- var env = this.env;
- var scope = this.scope;
- var dynamicScope = this.dynamicScope;
-
- var elementStack = _glimmerRuntimeLibBuilder.ElementStack.forInitialRender(this.env, this.bounds.parentElement(), nextSibling);
- return new _glimmerRuntimeLibVmAppend.default(env, scope, dynamicScope, elementStack);
- };
-
- ListBlockOpcode.prototype.toJSON = function toJSON() {
- var json = _BlockOpcode2.prototype.toJSON.call(this);
- var map = this.map;
- var inner = Object.keys(map).map(function (key) {
- return JSON.stringify(key) + ': ' + map[key]._guid;
- }).join(", ");
- json["details"]["map"] = '{' + inner + '}';
- return json;
- };
-
- return ListBlockOpcode;
- })(BlockOpcode);
-
- exports.ListBlockOpcode = ListBlockOpcode;
-
- var UpdatingVMFrame = (function () {
- function UpdatingVMFrame(vm, ops, handler) {
- this.vm = vm;
- this.ops = ops;
- this.current = ops.head();
- this.exceptionHandler = handler;
- }
-
- UpdatingVMFrame.prototype.goto = function goto(op) {
- this.current = op;
- };
-
- UpdatingVMFrame.prototype.nextStatement = function nextStatement() {
- var current = this.current;
- var ops = this.ops;
-
- if (current) this.current = ops.nextNode(current);
- return current;
- };
-
- UpdatingVMFrame.prototype.handleException = function handleException() {
- this.exceptionHandler.handleException();
- };
-
- return UpdatingVMFrame;
- })();
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQTRCQSxVQUFBO0FBTUUsaUJBTkYsVUFBQSxDQU1jLEdBQWdCLEVBQUUsSUFBNEIsRUFBQTt3Q0FBNUIsSUFBNEIsQ0FBMUIsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSzs7QUFGaEQsZ0JBQUEsQ0FBQSxVQUFVLEdBQTJCLGlCQTdCdEIsS0FBSyxFQTZCNkMsQ0FBQztBQUd4RSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUMxQzs7QUFWSCxrQkFBQSxXQVlFLE9BQU8sR0FBQSxpQkFBQyxPQUFzQixFQUFFLE9BQXlCLEVBQUE7Z0JBQ2pELFVBQVUsR0FBSyxJQUFJLENBQW5CLFVBQVU7O0FBRWhCLGdCQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUzQixtQkFBTyxJQUFJLEVBQUU7QUFDWCxvQkFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUVoQyxvQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFckQsb0JBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUNuQix3QkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0Qiw2QkFBUztpQkFDVjtBQUVELDZCQXBERyxNQUFNLENBb0RGLEtBQUssY0FBWSxNQUFNLENBQUMsSUFBSSxDQUFHLENBQUM7QUFDdkMsNkJBckRHLE1BQU0sQ0FxREYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXJCLHNCQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NB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V0FpQkUsYUFBYSxHQUFBLHlCQUFBO2dCQUNMLE9BQU8sR0FBVSxJQUFJLENBQXJCLE9BQU87Z0JBQUUsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNsQixnQkFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELG1CQUFPLE9BQU8sQ0FBQztTQUNoQjs7QUFyQkgsdUJBQUEsV0F1QkUsZUFBZSxHQUFBLDJCQUFBO0FBQ2IsZ0JBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6Qzs7ZUF6QkgsZUFBQSIsImZpbGUiOiJ1cGRhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgTE9HR0VSLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7XG4gIENvbnN0UmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyLFxuICBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlLFxuXG4gIC8vIFRhZ3NcbiAgY29tYmluZSxcbiAgUmV2aXNpb24sXG4gIFVwZGF0YWJsZVRhZyxcbiAgY29tYmluZVNsaWNlLFxuICBDT05TVEFOVF9UQUcsXG4gIElOSVRJQUxcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlLCBVcGRhdGluZ09wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcyB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhcHR1cmVkRnJhbWUgfSBmcm9tICcuL2ZyYW1lJztcblxuaW1wb3J0IFZNIGZyb20gJy4vYXBwZW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRpbmdWTSB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuICBwdWJsaWMgZG9tOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgYWx3YXlzUmV2YWxpZGF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIExPR0dFUi5kZWJ1ZyhgW1ZNXSBPUCAke29wY29kZS50eXBlfWApO1xuICAgICAgTE9HR0VSLnRyYWNlKG9wY29kZSk7XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LmdvdG8ob3ApO1xuICB9XG5cbiAgdHJ5KG9wczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lU3RhY2suY3VycmVudC5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBmcmFtZTogQ2FwdHVyZWRGcmFtZTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgZnJhbWU6IENhcHR1cmVkRnJhbWU7XG4gIHByb3RlY3RlZCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuICBwdWJsaWMgb3BzOiBPcFNlcTtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGZyYW1lIH0gPSBzdGF0ZTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgYmVnaW4gPSB0aGlzLm9wcy5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHRoaXMub3BzLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcImd1aWRcIl0gPSBgJHt0aGlzLl9ndWlkfWA7XG4gICAgZGV0YWlsc1tcImJlZ2luXCJdID0gYmVnaW4uaW5zcGVjdCgpO1xuICAgIGRldGFpbHNbXCJlbmRcIl0gPSBlbmQuaW5zcGVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICB0aGlzLl90YWcudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBvcHMsIGR5bmFtaWNTY29wZSwgZnJhbWUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLnJlc3VtZShcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMsXG4gICAgICB0aGlzLmJvdW5kcy5yZXNldChlbnYpXG4gICAgKTtcblxuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgbGV0IHJlc3VsdCA9IHZtLnJlc3VtZShvcHMsIGZyYW1lKTtcblxuICAgIHRoaXMuY2hpbGRyZW4gPSByZXN1bHQub3Bjb2RlcygpO1xuICAgIHRoaXMuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImJlZ2luXCJdID0gSlNPTi5zdHJpbmdpZnkoYmVnaW4uaW5zcGVjdCgpKTtcbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImVuZFwiXSA9IEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICB9XG59XG5cbmNsYXNzIExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICBwcml2YXRlIG1hcDogRGljdDxCbG9ja09wY29kZT47XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByaXZhdGUgZGlkSW5zZXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlkRGVsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcGNvZGU6IExpc3RCbG9ja09wY29kZSwgcHJpdmF0ZSBtYXJrZXI6IFNpbXBsZS5Db21tZW50KSB7XG4gICAgdGhpcy5tYXAgPSBvcGNvZGUubWFwO1xuICAgIHRoaXMudXBkYXRpbmcgPSBvcGNvZGVbJ2NoaWxkcmVuJ107XG4gIH1cblxuICBpbnNlcnQoa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCwgb3Bjb2RlLCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2UuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogVHJ5T3Bjb2RlO1xuXG4gICAgdm0uZXhlY3V0ZShvcGNvZGUub3BzLCB2bSA9PiB7XG4gICAgICB2bS5mcmFtZS5zZXRBcmdzKEV2YWx1YXRlZEFyZ3MucG9zaXRpb25hbChbaXRlbSwgbWVtb10pKTtcbiAgICAgIHZtLmZyYW1lLnNldE9wZXJhbmQoaXRlbSk7XG4gICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24obmV3IENvbnN0UmVmZXJlbmNlKHRydWUpKTtcbiAgICAgIHZtLmZyYW1lLnNldEtleShrZXkpO1xuXG4gICAgICBsZXQgc3RhdGUgPSB2bS5jYXB0dXJlKCk7XG4gICAgICBsZXQgdHJhY2tlciA9IHZtLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAgIHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3Bjb2RlLm9wcywgc3RhdGUsIHRyYWNrZXIsIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCk7XG4gICAgfSk7XG5cbiAgICB0cnlPcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlLCByZWZlcmVuY2UpO1xuXG4gICAgbWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEluc2VydCA9IHRydWU7XG4gIH1cblxuICByZXRhaW4oa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gIH1cblxuICBtb3ZlKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogT3BTZXEsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGJvdW5kcy5sYXN0Tm9kZSgpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSB2bTogVXBkYXRpbmdWTTtcbiAgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXE7XG4gIHByaXZhdGUgY3VycmVudDogVXBkYXRpbmdPcGNvZGU7XG4gIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcjtcblxuICBjb25zdHJ1Y3Rvcih2bTogVXBkYXRpbmdWTSwgb3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gICAgdGhpcy5leGNlcHRpb25IYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5jdXJyZW50ID0gb3A7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
-enifed('glimmer-syntax/index', ['exports', 'glimmer-syntax/lib/parser', 'glimmer-syntax/lib/builders', 'glimmer-syntax/lib/traversal/traverse', 'glimmer-syntax/lib/traversal/walker', 'glimmer-syntax/lib/generation/print'], function (exports, _glimmerSyntaxLibParser, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibTraversalTraverse, _glimmerSyntaxLibTraversalWalker, _glimmerSyntaxLibGenerationPrint) {
- // used by ember-compiler
- 'use strict';
-
- exports.preprocess = _glimmerSyntaxLibParser.preprocess;
-
- // needed for tests only
- exports.builders = _glimmerSyntaxLibBuilders.default;
- exports.traverse = _glimmerSyntaxLibTraversalTraverse.default;
- exports.Walker = _glimmerSyntaxLibTraversalWalker.default;
- exports.print = _glimmerSyntaxLibGenerationPrint.default;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7VUFDUyxVQUFVLDJCQUFWLFVBQVU7OztVQUdDLFFBQVEsNkJBQW5CLE9BQU87VUFDSSxRQUFRLHNDQUFuQixPQUFPO1VBQ0ksTUFBTSxvQ0FBakIsT0FBTztVQUNJLEtBQUssb0NBQWhCLE9BQU8iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSAnLi9saWIvcGFyc2VyJztcblxuLy8gbmVlZGVkIGZvciB0ZXN0cyBvbmx5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuIl19
-enifed("glimmer-syntax/lib/builders", ["exports"], function (exports) {
- // Statements
- "use strict";
-
- function buildMustache(path, params, hash, raw, loc) {
- return {
- type: "MustacheStatement",
- path: buildPath(path),
- params: params || [],
- hash: hash || buildHash([]),
- escaped: !raw,
- loc: buildLoc(loc)
- };
+ function buildPath(original) {
+ if (typeof original === 'string') {
+ return {
+ type: "PathExpression",
+ original: original,
+ parts: original.split('.')
+ };
+ } else {
+ return original;
}
- function buildBlock(path, params, hash, program, inverse, loc) {
- return {
- type: "BlockStatement",
- path: buildPath(path),
- params: params ? params.map(buildPath) : [],
- hash: hash || buildHash([]),
- program: program || null,
- inverse: inverse || null,
- loc: buildLoc(loc)
- };
- }
- function buildElementModifier(path, params, hash, loc) {
- return {
- type: "ElementModifierStatement",
- path: buildPath(path),
- params: params || [],
- hash: hash || buildHash([]),
- loc: buildLoc(loc)
- };
- }
- function buildPartial(name, params, hash, indent) {
- return {
- type: "PartialStatement",
- name: name,
- params: params || [],
- hash: hash || buildHash([]),
- indent: indent
- };
- }
- function buildComment(value) {
- return {
- type: "CommentStatement",
- value: value
- };
- }
- function buildConcat(parts) {
- return {
- type: "ConcatStatement",
- parts: parts || []
- };
- }
- // Nodes
- function buildElement(tag, attributes, modifiers, children, loc) {
- return {
- type: "ElementNode",
- tag: tag || "",
- attributes: attributes || [],
- blockParams: [],
- modifiers: modifiers || [],
- children: children || [],
- loc: buildLoc(loc)
- };
- }
- function buildAttr(name, value, loc) {
- return {
- type: "AttrNode",
- name: name,
- value: value,
- loc: buildLoc(loc)
- };
- }
- function buildText(chars, loc) {
- return {
- type: "TextNode",
- chars: chars || "",
- loc: buildLoc(loc)
- };
- }
- // Expressions
- function buildSexpr(path, params, hash, loc) {
- return {
- type: "SubExpression",
- path: buildPath(path),
- params: params || [],
- hash: hash || buildHash([]),
- loc: buildLoc(loc)
- };
- }
- function buildPath(original, loc) {
- if (typeof original !== 'string') return original;
- var parts = original.split('.');
- if (parts[0] === 'this') {
- parts[0] = null;
- }
- return {
- type: "PathExpression",
- original: original,
- parts: parts,
- data: false,
- loc: buildLoc(loc)
- };
- }
- function buildString(value) {
- return {
- type: "StringLiteral",
- value: value,
- original: value
- };
- }
- function buildBoolean(value) {
- return {
- type: "BooleanLiteral",
- value: value,
- original: value
- };
- }
- function buildNumber(value) {
- return {
- type: "NumberLiteral",
- value: value,
- original: value
- };
- }
- function buildNull() {
- return {
- type: "NullLiteral",
- value: null,
- original: null
- };
- }
- function buildUndefined() {
- return {
- type: "UndefinedLiteral",
- value: undefined,
- original: undefined
- };
- }
- // Miscellaneous
- function buildHash(pairs) {
- return {
- type: "Hash",
- pairs: pairs || []
- };
- }
- function buildPair(key, value) {
- return {
- type: "HashPair",
- key: key,
- value: value
- };
- }
- function buildProgram(body, blockParams, loc) {
- return {
- type: "Program",
- body: body || [],
- blockParams: blockParams || [],
- loc: buildLoc(loc)
- };
- }
- function buildSource(source) {
- return source || null;
- }
- function buildPosition(line, column) {
- return {
- line: typeof line === 'number' ? line : null,
- column: typeof column === 'number' ? column : null
- };
- }
- function buildLoc() {
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
+ }
- if (args.length === 1) {
- var loc = args[0];
- if (typeof loc === 'object') {
- return {
- source: buildSource(loc.source),
- start: buildPosition(loc.start.line, loc.start.column),
- end: buildPosition(loc.end.line, loc.end.column)
- };
- } else {
- return null;
- }
- } else {
- var startLine = args[0];
- var startColumn = args[1];
- var endLine = args[2];
- var endColumn = args[3];
- var source = args[4];
+ function buildString(value) {
+ return {
+ type: "StringLiteral",
+ value: value,
+ original: value
+ };
+ }
- return {
- source: buildSource(source),
- start: buildPosition(startLine, startColumn),
- end: buildPosition(endLine, endColumn)
- };
- }
- }
- exports.default = {
- mustache: buildMustache,
- block: buildBlock,
- partial: buildPartial,
- comment: buildComment,
- element: buildElement,
- elementModifier: buildElementModifier,
- attr: buildAttr,
- text: buildText,
- sexpr: buildSexpr,
- path: buildPath,
- string: buildString,
- boolean: buildBoolean,
- number: buildNumber,
- undefined: buildUndefined,
- null: buildNull,
- concat: buildConcat,
- hash: buildHash,
- pair: buildPair,
- program: buildProgram,
- loc: buildLoc,
- pos: buildPosition
+ function buildBoolean(value) {
+ return {
+ type: "BooleanLiteral",
+ value: value,
+ original: value
};
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9idWlsZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsYUFBQSxhQUFBLENBQXVCLElBQUksRUFBRSxNQUFPLEVBQUUsSUFBSyxFQUFFLEdBQUksRUFBRSxHQUFJLEVBQUE7QUFDckQsZUFBTztBQUNMLGdCQUFJLEVBQUUsbUJBQW1CO0FBQ3pCLGdCQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztBQUNyQixrQkFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FBQ3BCLGdCQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsbUJBQU8sRUFBRSxDQUFDLEdBQUc7QUFDYixlQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNuQixDQUFDO0tBQ0g7QUFFRCxhQUFBLFVBQUEsQ0FBb0IsSUFBSSxFQUFFLE1BQU8sRUFBRSxJQUFLLEVBQUUsT0FBUSxFQUFFLE9BQVEsRUFBRSxHQUFJLEVBQUE7QUFDaEUsZUFBTztBQUNMLGdCQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLGdCQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztBQUNyQixrQkFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDM0MsZ0JBQUksRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUMzQixtQkFBTyxFQUFFLE9BQU8sSUFBSSxJQUFJO0FBQ3hCLG1CQUFPLEVBQUUsT0FBTyxJQUFJLElBQUk7QUFDeEIsZUFBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDbkIsQ0FBQztLQUNIO0FBRUQsYUFBQSxvQkFBQSxDQUE4QixJQUFJLEVBQUUsTUFBTyxFQUFFLElBQUssRUFBRSxHQUFJLEVBQUE7QUFDdEQsZUFBTztBQUNMLGdCQUFJLEVBQUUsMEJBQTBCO0FBQ2hDLGdCQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztB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QUNiO1NBQ0YsTUFBTTtnQkFDQyxTQUFTLEdBQThDLElBQUk7Z0JBQWhELFdBQVcsR0FBaUMsSUFBSTtnQkFBbkMsT0FBTyxHQUF3QixJQUFJO2dCQUExQixTQUFTLEdBQWEsSUFBSTtnQkFBZixNQUFNLEdBQUssSUFBSTs7QUFDakUsbUJBQU87QUFDTCxzQkFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDM0IscUJBQUssRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztBQUM1QyxtQkFBRyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO2FBQ3ZDLENBQUM7U0FDSDtLQUNGO3NCQUVjO0FBQ2IsZ0JBQVEsRUFBRSxhQUFhO0FBQ3ZCLGFBQUssRUFBRSxVQUFVO0FBQ2pCLGVBQU8sRUFBRSxZQUFZO0FBQ3JCLGVBQU8sRUFBRSxZQUFZO0FBQ3JCLGVBQU8sRUFBRSxZQUFZO0FBQ3JCLHVCQUFlLEVBQUUsb0JBQW9CO0FBQ3JDLFlBQUksRUFBRSxTQUFTO0FBQ2YsWUFBSSxFQUFFLFNBQVM7QUFDZixhQUFLLEVBQUUsVUFBVTtBQUNqQixZQUFJLEVBQUUsU0FBUztBQUNmLGNBQU0sRUFBRSxXQUFXO0FBQ25CLGVBQU8sRUFBRSxZQUFZO0FBQ3JCLGNBQU0sRUFBRSxXQUFXO0FBQ25CLGlCQUFTLEVBQUUsY0FBYztBQUN6QixZQUFJLEVBQUUsU0FBUztBQUNmLGNBQU0sRUFBRSxXQUFXO0FBQ25CLFlBQUksRUFBRSxTQUFTO0FBQ2YsWUFBSSxFQUFFLFNBQVM7QUFDZixlQUFPLEVBQUUsWUFBWTtBQUNyQixXQUFHLEVBQUUsUUFBUTtBQUNiLFdBQUcsRUFBRSxhQUFhO0tBQ25CIiwiZmlsZSI6ImJ1aWxkZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhdGVtZW50c1xuXG5mdW5jdGlvbiBidWlsZE11c3RhY2hlKHBhdGgsIHBhcmFtcz8sIGhhc2g/LCByYXc/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJNdXN0YWNoZVN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgZXNjYXBlZDogIXJhdyxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRCbG9jayhwYXRoLCBwYXJhbXM/LCBoYXNoPywgcHJvZ3JhbT8sIGludmVyc2U/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJCbG9ja1N0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyA/IHBhcmFtcy5tYXAoYnVpbGRQYXRoKSA6IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBwcm9ncmFtOiBwcm9ncmFtIHx8IG51bGwsXG4gICAgaW52ZXJzZTogaW52ZXJzZSB8fCBudWxsLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXM/LCBoYXNoPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50XCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYXJ0aWFsKG5hbWUsIHBhcmFtcywgaGFzaCwgaW5kZW50KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJQYXJ0aWFsU3RhdGVtZW50XCIsXG4gICAgbmFtZTogbmFtZSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgaW5kZW50OiBpbmRlbnRcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRDb21tZW50KHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21tZW50U3RhdGVtZW50XCIsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29uY2F0KHBhcnRzKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb25jYXRTdGF0ZW1lbnRcIixcbiAgICBwYXJ0czogcGFydHMgfHwgW11cbiAgfTtcbn1cblxuLy8gTm9kZXNcblxuZnVuY3Rpb24gYnVpbGRFbGVtZW50KHRhZywgYXR0cmlidXRlcz8sIG1vZGlmaWVycz8sIGNoaWxkcmVuPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiRWxlbWVudE5vZGVcIixcbiAgICB0YWc6IHRhZyB8fCBcIlwiLFxuICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMgfHwgW10sXG4gICAgYmxvY2tQYXJhbXM6IFtdLFxuICAgIG1vZGlmaWVyczogbW9kaWZpZXJzIHx8IFtdLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBdHRyKG5hbWUsIHZhbHVlLCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJBdHRyTm9kZVwiLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFRleHQoY2hhcnM/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJUZXh0Tm9kZVwiLFxuICAgIGNoYXJzOiBjaGFycyB8fCBcIlwiLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG4vLyBFeHByZXNzaW9uc1xuXG5mdW5jdGlvbiBidWlsZFNleHByKHBhdGgsIHBhcmFtcz8sIGhhc2g/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJTdWJFeHByZXNzaW9uXCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYXRoKG9yaWdpbmFsLCBsb2M/KSB7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWwgIT09ICdzdHJpbmcnKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgbGV0IHBhcnRzID0gb3JpZ2luYWwuc3BsaXQoJy4nKTtcblxuICBpZiAocGFydHNbMF0gPT09ICd0aGlzJykge1xuICAgIHBhcnRzWzBdID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJQYXRoRXhwcmVzc2lvblwiLFxuICAgIG9yaWdpbmFsLFxuICAgIHBhcnRzLFxuICAgIGRhdGE6IGZhbHNlLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFN0cmluZyh2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiU3RyaW5nTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJCb29sZWFuTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGROdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIk51bWJlckxpdGVyYWxcIixcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb3JpZ2luYWw6IHZhbHVlXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTnVsbCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIk51bGxMaXRlcmFsXCIsXG4gICAgdmFsdWU6IG51bGwsXG4gICAgb3JpZ2luYWw6IG51bGxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVbmRlZmluZWQoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJVbmRlZmluZWRMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5hbDogdW5kZWZpbmVkXG4gIH07XG59XG5cbi8vIE1pc2NlbGxhbmVvdXNcblxuZnVuY3Rpb24gYnVpbGRIYXNoKHBhaXJzPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiSGFzaFwiLFxuICAgIHBhaXJzOiBwYWlycyB8fCBbXVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFBhaXIoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiSGFzaFBhaXJcIixcbiAgICBrZXk6IGtleSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQcm9ncmFtKGJvZHk/LCBibG9ja1BhcmFtcz8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlByb2dyYW1cIixcbiAgICBib2R5OiBib2R5IHx8IFtdLFxuICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRTb3VyY2Uoc291cmNlPykge1xuICByZXR1cm4gc291cmNlIHx8IG51bGw7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkUG9zaXRpb24obGluZSwgY29sdW1uKSB7XG4gIHJldHVybiB7XG4gICAgbGluZTogKHR5cGVvZiBsaW5lID09PSAnbnVtYmVyJykgPyBsaW5lIDogbnVsbCxcbiAgICBjb2x1bW46ICh0eXBlb2YgY29sdW1uID09PSAnbnVtYmVyJykgPyBjb2x1bW4gOiBudWxsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTG9jKGxvYzogeyBzb3VyY2U6IGFueSwgc3RhcnQ6IGFueSwgZW5kOiBhbnkgfSk6IHsgc291cmNlOiBhbnksIHN0YXJ0OiBhbnksIGVuZDogYW55IH07XG5mdW5jdGlvbiBidWlsZExvYyhzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lPywgZW5kQ29sdW1uPywgc291cmNlPyk6IHsgc291cmNlOiBhbnksIHN0YXJ0OiBhbnksIGVuZDogYW55IH07XG5cbmZ1bmN0aW9uIGJ1aWxkTG9jKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IGxvYyA9IGFyZ3NbMF07XG5cbiAgICBpZiAodHlwZW9mIGxvYyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2UobG9jLnNvdXJjZSksXG4gICAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uKSxcbiAgICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGxvYy5lbmQubGluZSwgbG9jLmVuZC5jb2x1bW4pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IFsgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2UgXSA9IGFyZ3M7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2Uoc291cmNlKSxcbiAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pLFxuICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGVuZExpbmUsIGVuZENvbHVtbilcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbXVzdGFjaGU6IGJ1aWxkTXVzdGFjaGUsXG4gIGJsb2NrOiBidWlsZEJsb2NrLFxuICBwYXJ0aWFsOiBidWlsZFBhcnRpYWwsXG4gIGNvbW1lbnQ6IGJ1aWxkQ29tbWVudCxcbiAgZWxlbWVudDogYnVpbGRFbGVtZW50LFxuICBlbGVtZW50TW9kaWZpZXI6IGJ1aWxkRWxlbWVudE1vZGlmaWVyLFxuICBhdHRyOiBidWlsZEF0dHIsXG4gIHRleHQ6IGJ1aWxkVGV4dCxcbiAgc2V4cHI6IGJ1aWxkU2V4cHIsXG4gIHBhdGg6IGJ1aWxkUGF0aCxcbiAgc3RyaW5nOiBidWlsZFN0cmluZyxcbiAgYm9vbGVhbjogYnVpbGRCb29sZWFuLFxuICBudW1iZXI6IGJ1aWxkTnVtYmVyLFxuICB1bmRlZmluZWQ6IGJ1aWxkVW5kZWZpbmVkLFxuICBudWxsOiBidWlsZE51bGwsXG4gIGNvbmNhdDogYnVpbGRDb25jYXQsXG4gIGhhc2g6IGJ1aWxkSGFzaCxcbiAgcGFpcjogYnVpbGRQYWlyLFxuICBwcm9ncmFtOiBidWlsZFByb2dyYW0sXG4gIGxvYzogYnVpbGRMb2MsXG4gIHBvczogYnVpbGRQb3NpdGlvblxufTtcbiJdfQ==
-enifed('glimmer-syntax/lib/generation/print', ['exports'], function (exports) {
- 'use strict';
+ }
- exports.default = build;
+ function buildNumber(value) {
+ return {
+ type: "NumberLiteral",
+ value: value,
+ original: value
+ };
+ }
- function build(ast) {
- if (!ast) {
- return '';
- }
- var output = [];
- switch (ast.type) {
- case 'Program':
- {
- var chainBlock = ast.chained && ast.body[0];
- if (chainBlock) {
- chainBlock.chained = true;
- }
- var body = buildEach(ast.body).join('');
- output.push(body);
- }
- break;
- case 'ElementNode':
- output.push('<', ast.tag);
- if (ast.attributes.length) {
- output.push(' ', buildEach(ast.attributes).join(' '));
- }
- if (ast.modifiers.length) {
- output.push(' ', buildEach(ast.modifiers).join(' '));
- }
- output.push('>');
- output.push.apply(output, buildEach(ast.children));
- output.push('</', ast.tag, '>');
- break;
- case 'AttrNode':
- output.push(ast.name, '=');
- var value = build(ast.value);
- if (ast.value.type === 'TextNode') {
- output.push('"', value, '"');
- } else {
- output.push(value);
- }
- break;
- case 'ConcatStatement':
- output.push('"');
- ast.parts.forEach(function (node) {
- if (node.type === 'StringLiteral') {
- output.push(node.original);
- } else {
- output.push(build(node));
- }
- });
- output.push('"');
- break;
- case 'TextNode':
- output.push(ast.chars);
- break;
- case 'MustacheStatement':
- {
- output.push(compactJoin(['{{', pathParams(ast), '}}']));
- }
- break;
- case 'ElementModifierStatement':
- {
- output.push(compactJoin(['{{', pathParams(ast), '}}']));
- }
- break;
- case 'PathExpression':
- output.push(ast.original);
- break;
- case 'SubExpression':
- {
- output.push('(', pathParams(ast), ')');
- }
- break;
- case 'BooleanLiteral':
- output.push(ast.value ? 'true' : false);
- break;
- case 'BlockStatement':
- {
- var lines = [];
- if (ast.chained) {
- lines.push(['{{else ', pathParams(ast), '}}'].join(''));
- } else {
- lines.push(openBlock(ast));
- }
- lines.push(build(ast.program));
- if (ast.inverse) {
- if (!ast.inverse.chained) {
- lines.push('{{else}}');
- }
- lines.push(build(ast.inverse));
- }
- if (!ast.chained) {
- lines.push(closeBlock(ast));
- }
- output.push(lines.join(''));
- }
- break;
- case 'PartialStatement':
- {
- output.push(compactJoin(['{{>', pathParams(ast), '}}']));
- }
- break;
- case 'CommentStatement':
- {
- output.push(compactJoin(['<!--', ast.value, '-->']));
- }
- break;
- case 'StringLiteral':
- {
- output.push('"' + ast.value + '"');
- }
- break;
- case 'NumberLiteral':
- {
- output.push(ast.value);
- }
- break;
- case 'UndefinedLiteral':
- {
- output.push('undefined');
- }
- break;
- case 'NullLiteral':
- {
- output.push('null');
- }
- break;
- case 'Hash':
- {
- output.push(ast.pairs.map(function (pair) {
- return build(pair);
- }).join(' '));
- }
- break;
- case 'HashPair':
- {
- output.push(ast.key + '=' + build(ast.value));
- }
- break;
- }
- return output.join('');
- }
+ function buildNull() {
+ return {
+ type: "NullLiteral",
+ value: null,
+ original: null
+ };
+ }
- function compact(array) {
- var newArray = [];
- array.forEach(function (a) {
- if (typeof a !== 'undefined' && a !== null && a !== '') {
- newArray.push(a);
- }
- });
- return newArray;
- }
- function buildEach(asts) {
- var output = [];
- asts.forEach(function (node) {
- output.push(build(node));
- });
- return output;
- }
- function pathParams(ast) {
- var name = build(ast.name);
- var path = build(ast.path);
- var params = buildEach(ast.params).join(' ');
- var hash = build(ast.hash);
- return compactJoin([name, path, params, hash], ' ');
- }
- function compactJoin(array, delimiter) {
- return compact(array).join(delimiter || '');
- }
- function blockParams(block) {
- var params = block.program.blockParams;
- if (params.length) {
- return ' as |' + params.join(',') + '|';
- }
- }
- function openBlock(block) {
- return ['{{#', pathParams(block), blockParams(block), '}}'].join('');
- }
- function closeBlock(block) {
- return ['{{/', build(block.path), '}}'].join('');
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9nZW5lcmF0aW9uL3ByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFBQSxLQUFBOztBQUFBLGFBQUEsS0FBQSxDQUE4QixHQUFHLEVBQUE7QUFDL0IsWUFBRyxDQUFDLEdBQUcsRUFBRTtBQUNQLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRWxCLGdCQUFPLEdBQUcsQ0FBQyxJQUFJO0FBQ2IsaUJBQUssU0FBUztBQUFFO0FBQ2Qsd0JBQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5Qyx3QkFBRyxVQUFVLEVBQUU7QUFDYixrQ0FBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQzNCO0FBQ0Qsd0JBQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLDBCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQjtBQUNELHNCQUFNO0FBQUEsQUFDTixpQkFBSyxhQUFhO0FBQ2hCLHNCQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsb0JBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDeEIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO0FBQ0Qsb0JBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDdkIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxD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LEdBQUcsQ0FBQyxPQUFJO1NBQ3BDO0tBQ0Y7QUFFRCxhQUFBLFNBQUEsQ0FBbUIsS0FBSyxFQUFBO0FBQ3RCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDdEU7QUFFRCxhQUFBLFVBQUEsQ0FBb0IsS0FBSyxFQUFBO0FBQ3ZCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbEQiLCJmaWxlIjoicHJpbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZChhc3QpIHtcbiAgaWYoIWFzdCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBvdXRwdXQgPSBbXTtcblxuICBzd2l0Y2goYXN0LnR5cGUpIHtcbiAgICBjYXNlICdQcm9ncmFtJzoge1xuICAgICAgY29uc3QgY2hhaW5CbG9jayA9IGFzdC5jaGFpbmVkICYmIGFzdC5ib2R5WzBdO1xuICAgICAgaWYoY2hhaW5CbG9jaykge1xuICAgICAgICBjaGFpbkJsb2NrLmNoYWluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYm9keSA9IGJ1aWxkRWFjaChhc3QuYm9keSkuam9pbignJyk7XG4gICAgICBvdXRwdXQucHVzaChib2R5KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goJzwnLCBhc3QudGFnKTtcbiAgICAgIGlmKGFzdC5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICBvdXRwdXQucHVzaCgnICcsIGJ1aWxkRWFjaChhc3QuYXR0cmlidXRlcykuam9pbignICcpKTtcbiAgICAgIH1cbiAgICAgIGlmKGFzdC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKCcgJywgYnVpbGRFYWNoKGFzdC5tb2RpZmllcnMpLmpvaW4oJyAnKSk7XG4gICAgICB9XG4gICAgICBvdXRwdXQucHVzaCgnPicpO1xuICAgICAgb3V0cHV0LnB1c2guYXBwbHkob3V0cHV0LCBidWlsZEVhY2goYXN0LmNoaWxkcmVuKSk7XG4gICAgICBvdXRwdXQucHVzaCgnPC8nLCBhc3QudGFnLCAnPicpO1xuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0F0dHJOb2RlJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5uYW1lLCAnPScpO1xuICAgICAgY29uc3QgdmFsdWUgPSBidWlsZChhc3QudmFsdWUpO1xuICAgICAgaWYoYXN0LnZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJ1wiJywgdmFsdWUsICdcIicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICBvdXRwdXQucHVzaCgnXCInKTtcbiAgICAgIGFzdC5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYobm9kZS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChub2RlLm9yaWdpbmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChidWlsZChub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb3V0cHV0LnB1c2goJ1wiJyk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goYXN0LmNoYXJzKTtcbiAgICBicmVhaztcbiAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5vcmlnaW5hbCk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6IHtcbiAgICAgIG91dHB1dC5wdXNoKCcoJywgcGF0aFBhcmFtcyhhc3QpLCAnKScpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUgPyAndHJ1ZScgOiBmYWxzZSk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOiB7XG4gICAgICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gICAgICBpZihhc3QuY2hhaW5lZCl7XG4gICAgICAgIGxpbmVzLnB1c2goWyd7e2Vsc2UgJywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXS5qb2luKCcnKSk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgbGluZXMucHVzaChvcGVuQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIGxpbmVzLnB1c2goYnVpbGQoYXN0LnByb2dyYW0pKTtcblxuICAgICAgaWYoYXN0LmludmVyc2UpIHtcbiAgICAgICAgaWYoIWFzdC5pbnZlcnNlLmNoYWluZWQpe1xuICAgICAgICAgIGxpbmVzLnB1c2goJ3t7ZWxzZX19Jyk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaChidWlsZChhc3QuaW52ZXJzZSkpO1xuICAgICAgfVxuXG4gICAgICBpZighYXN0LmNoYWluZWQpe1xuICAgICAgICBsaW5lcy5wdXNoKGNsb3NlQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIG91dHB1dC5wdXNoKGxpbmVzLmpvaW4oJycpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3s+JywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdDb21tZW50U3RhdGVtZW50Jzoge1xuICAgICAgb3V0cHV0LnB1c2goY29tcGFjdEpvaW4oWyc8IS0tJywgYXN0LnZhbHVlLCAnLS0+J10pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGBcIiR7YXN0LnZhbHVlfVwiYCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzoge1xuICAgICAgb3V0cHV0LnB1c2goJ3VuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdOdWxsTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKCdudWxsJyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0hhc2gnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QucGFpcnMubWFwKGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkKHBhaXIpO1xuICAgICAgfSkuam9pbignICcpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnSGFzaFBhaXInOiB7XG4gICAgICBvdXRwdXQucHVzaChgJHthc3Qua2V5fT0ke2J1aWxkKGFzdC52YWx1ZSl9YCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbihhKSB7XG4gICAgaWYodHlwZW9mKGEpICE9PSAndW5kZWZpbmVkJyAmJiBhICE9PSBudWxsICYmIGEgIT09ICcnKSB7XG4gICAgICBuZXdBcnJheS5wdXNoKGEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXdBcnJheTtcbn1cblxuZnVuY3Rpb24gYnVpbGRFYWNoKGFzdHMpIHtcbiAgY29uc3Qgb3V0cHV0ID0gW107XG4gIGFzdHMuZm9yRWFjaChmdW5jdGlvbihub2RlKSB7XG4gICAgb3V0cHV0LnB1c2goYnVpbGQobm9kZSkpO1xuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gcGF0aFBhcmFtcyhhc3QpIHtcbiAgY29uc3QgbmFtZSA9IGJ1aWxkKGFzdC5uYW1lKTtcbiAgY29uc3QgcGF0aCA9IGJ1aWxkKGFzdC5wYXRoKTtcbiAgY29uc3QgcGFyYW1zID0gYnVpbGRFYWNoKGFzdC5wYXJhbXMpLmpvaW4oJyAnKTtcbiAgY29uc3QgaGFzaCA9IGJ1aWxkKGFzdC5oYXNoKTtcbiAgcmV0dXJuIGNvbXBhY3RKb2luKFtuYW1lLCBwYXRoLCBwYXJhbXMsIGhhc2hdLCAnICcpO1xufVxuXG5mdW5jdGlvbiBjb21wYWN0Sm9pbihhcnJheSwgZGVsaW1pdGVyPykge1xuICByZXR1cm4gY29tcGFjdChhcnJheSkuam9pbihkZWxpbWl0ZXIgfHwgJycpO1xufVxuXG5mdW5jdGlvbiBibG9ja1BhcmFtcyhibG9jaykge1xuICBjb25zdCBwYXJhbXMgPSBibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zO1xuICBpZihwYXJhbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGAgYXMgfCR7cGFyYW1zLmpvaW4oJywnKX18YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBvcGVuQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3sjJywgcGF0aFBhcmFtcyhibG9jayksIGJsb2NrUGFyYW1zKGJsb2NrKSwgJ319J10uam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3svJywgYnVpbGQoYmxvY2sucGF0aCksICd9fSddLmpvaW4oJycpO1xufVxuIl19
-enifed("glimmer-syntax/lib/parser", ["exports", "handlebars/compiler/base", "glimmer-syntax/lib/builders", "glimmer-syntax/lib/generation/print", "glimmer-syntax/lib/traversal/traverse", "glimmer-syntax/lib/traversal/walker", "simple-html-tokenizer", "glimmer-syntax/lib/parser/handlebars-node-visitors", "glimmer-syntax/lib/parser/tokenizer-event-handlers"], function (exports, _handlebarsCompilerBase, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibGenerationPrint, _glimmerSyntaxLibTraversalTraverse, _glimmerSyntaxLibTraversalWalker, _simpleHtmlTokenizer, _glimmerSyntaxLibParserHandlebarsNodeVisitors, _glimmerSyntaxLibParserTokenizerEventHandlers) {
- "use strict";
-
- exports.preprocess = preprocess;
- exports.Parser = Parser;
- var syntax = {
- parse: preprocess,
- builders: _glimmerSyntaxLibBuilders.default,
- print: _glimmerSyntaxLibGenerationPrint.default,
- traverse: _glimmerSyntaxLibTraversalTraverse.default,
- Walker: _glimmerSyntaxLibTraversalWalker.default
+ function buildUndefined() {
+ return {
+ type: "UndefinedLiteral",
+ value: undefined,
+ original: undefined
};
- exports.syntax = syntax;
+ }
- function preprocess(html, options) {
- var ast = typeof html === 'object' ? html : _handlebarsCompilerBase.parse(html);
- var combined = new Parser(html, options).acceptNode(ast);
- if (options && options.plugins && options.plugins.ast) {
- for (var i = 0, l = options.plugins.ast.length; i < l; i++) {
- var plugin = new options.plugins.ast[i](options);
- plugin.syntax = syntax;
- combined = plugin.transform(combined);
- }
- }
- return combined;
- }
+ // Miscellaneous
- var entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs);
+ function buildHash(pairs) {
+ return {
+ type: "Hash",
+ pairs: pairs || []
+ };
+ }
- function Parser(source, options) {
- this.options = options || {};
- this.elementStack = [];
- this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser);
- this.currentNode = null;
- this.currentAttribute = null;
- if (typeof source === 'string') {
- this.source = source.split(/(?:\r\n?|\n)/g);
- }
- }
+ function buildPair(key, value) {
+ return {
+ type: "HashPair",
+ key: key,
+ value: value
+ };
+ }
- for (var key in _glimmerSyntaxLibParserHandlebarsNodeVisitors.default) {
- Parser.prototype[key] = _glimmerSyntaxLibParserHandlebarsNodeVisitors.default[key];
- }
- for (var key in _glimmerSyntaxLibParserTokenizerEventHandlers.default) {
- Parser.prototype[key] = _glimmerSyntaxLibParserTokenizerEventHandlers.default[key];
- }
- Parser.prototype.acceptNode = function (node) {
- return this[node.type](node);
+ function buildProgram(body, blockParams, loc) {
+ return {
+ type: "Program",
+ body: body || [],
+ blockParams: blockParams || [],
+ loc: buildLoc(loc)
};
- Parser.prototype.currentElement = function () {
- return this.elementStack[this.elementStack.length - 1];
- };
- Parser.prototype.sourceForMustache = function (mustache) {
- var firstLine = mustache.loc.start.line - 1;
- var lastLine = mustache.loc.end.line - 1;
- var currentLine = firstLine - 1;
- var firstColumn = mustache.loc.start.column + 2;
- var lastColumn = mustache.loc.end.column - 2;
- var string = [];
- var line = undefined;
- if (!this.source) {
- return '{{' + mustache.path.id.original + '}}';
- }
- while (currentLine < lastLine) {
- currentLine++;
- line = this.source[currentLine];
- if (currentLine === firstLine) {
- if (firstLine === lastLine) {
- string.push(line.slice(firstColumn, lastColumn));
- } else {
- string.push(line.slice(firstColumn));
- }
- } else if (currentLine === lastLine) {
- string.push(line.slice(0, lastColumn));
- } else {
- string.push(line);
- }
- }
- return string.join('\n');
- };
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFhTyxRQUFNLE1BQU0sR0FBRztBQUNwQixhQUFLLEVBQUUsVUFBVTtBQUNqQixnQkFBUSxtQ0FBQTtBQUNSLGFBQUssMENBQUE7QUFDTCxnQkFBUSw0Q0FBQTtBQUNSLGNBQU0sMENBQUE7S0FDUCxDQUFDOzs7QUFFRixhQUFBLFVBQUEsQ0FBMkIsSUFBSSxFQUFFLE9BQVEsRUFBQTtBQUN2QyxZQUFJLEdBQUcsR0FBRyxBQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsR0FBSSxJQUFJLEdBQUcsd0JBdEJ2QyxLQUFLLENBc0J3QyxJQUFJLENBQUMsQ0FBQztBQUMxRCxZQUFJLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXpELFlBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDckQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxRCxvQkFBSSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVqRCxzQkFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFFdkIsd0JBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0Y7QUFFRCxlQUFPLFFBQVEsQ0FBQztLQUNqQjs7QUFFRCxRQUFNLFlBQVksR0FBRyx5QkEvQm5CLFlBQVksc0JBQ1osa0JBQWtCLENBOEJnQyxDQUFDOztBQUVyRCxh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QUM7YUFDeEMsTUFBTTtBQUNMLHNCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7QUFFRCxlQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUIsQ0FBQyIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJoYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2VcIjtcbmltcG9ydCBidWlsZGVycyBmcm9tIFwiLi9idWlsZGVyc1wiO1xuaW1wb3J0IHByaW50IGZyb20gXCIuL2dlbmVyYXRpb24vcHJpbnRcIjtcbmltcG9ydCB0cmF2ZXJzZSBmcm9tIFwiLi90cmF2ZXJzYWwvdHJhdmVyc2VcIjtcbmltcG9ydCBXYWxrZXIgZnJvbSBcIi4vdHJhdmVyc2FsL3dhbGtlclwiO1xuaW1wb3J0IHtcbiAgRXZlbnRlZFRva2VuaXplcixcbiAgRW50aXR5UGFyc2VyLFxuICBIVE1MNU5hbWVkQ2hhclJlZnMgYXMgbmFtZWRDaGFyUmVmc1xufSBmcm9tIFwic2ltcGxlLWh0bWwtdG9rZW5pemVyXCI7XG5pbXBvcnQgaGFuZGxlYmFyc05vZGVWaXNpdG9ycyBmcm9tIFwiLi9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzXCI7XG5pbXBvcnQgdG9rZW5pemVyRXZlbnRIYW5kbGVycyBmcm9tIFwiLi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzXCI7XG5cbmV4cG9ydCBjb25zdCBzeW50YXggPSB7XG4gIHBhcnNlOiBwcmVwcm9jZXNzLFxuICBidWlsZGVycyxcbiAgcHJpbnQsXG4gIHRyYXZlcnNlLFxuICBXYWxrZXJcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzKGh0bWwsIG9wdGlvbnM/KSB7XG4gIGxldCBhc3QgPSAodHlwZW9mIGh0bWwgPT09ICdvYmplY3QnKSA/IGh0bWwgOiBwYXJzZShodG1sKTtcbiAgbGV0IGNvbWJpbmVkID0gbmV3IFBhcnNlcihodG1sLCBvcHRpb25zKS5hY2NlcHROb2RlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wbHVnaW5zICYmIG9wdGlvbnMucGx1Z2lucy5hc3QpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IG9wdGlvbnMucGx1Z2lucy5hc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZXQgcGx1Z2luID0gbmV3IG9wdGlvbnMucGx1Z2lucy5hc3RbaV0ob3B0aW9ucyk7XG5cbiAgICAgIHBsdWdpbi5zeW50YXggPSBzeW50YXg7XG5cbiAgICAgIGNvbWJpbmVkID0gcGx1Z2luLnRyYW5zZm9ybShjb21iaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkO1xufVxuXG5jb25zdCBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKG5hbWVkQ2hhclJlZnMpO1xuXG5leHBvcnQgZnVuY3Rpb24gUGFyc2VyKHNvdXJjZSwgb3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB0aGlzLmVsZW1lbnRTdGFjayA9IFtdO1xuICB0aGlzLnRva2VuaXplciA9IG5ldyBFdmVudGVkVG9rZW5pemVyKHRoaXMsIGVudGl0eVBhcnNlcik7XG5cbiAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBzb3VyY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2Uuc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgfVxufVxuXG5mb3IgKGxldCBrZXkgaW4gaGFuZGxlYmFyc05vZGVWaXNpdG9ycykge1xuICBQYXJzZXIucHJvdG90eXBlW2tleV0gPSBoYW5kbGViYXJzTm9kZVZpc2l0b3JzW2tleV07XG59XG5cbmZvciAobGV0IGtleSBpbiB0b2tlbml6ZXJFdmVudEhhbmRsZXJzKSB7XG4gIFBhcnNlci5wcm90b3R5cGVba2V5XSA9IHRva2VuaXplckV2ZW50SGFuZGxlcnNba2V5XTtcbn1cblxuUGFyc2VyLnByb3RvdHlwZS5hY2NlcHROb2RlID0gZnVuY3Rpb24obm9kZSkge1xuICByZXR1cm4gdGhpc1tub2RlLnR5cGVdKG5vZGUpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5jdXJyZW50RWxlbWVudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2tbdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoIC0gMV07XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnNvdXJjZUZvck11c3RhY2hlID0gZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgbGV0IGZpcnN0TGluZSA9IG11c3RhY2hlLmxvYy5zdGFydC5saW5lIC0gMTtcbiAgbGV0IGxhc3RMaW5lID0gbXVzdGFjaGUubG9jLmVuZC5saW5lIC0gMTtcbiAgbGV0IGN1cnJlbnRMaW5lID0gZmlyc3RMaW5lIC0gMTtcbiAgbGV0IGZpcnN0Q29sdW1uID0gbXVzdGFjaGUubG9jLnN0YXJ0LmNvbHVtbiArIDI7XG4gIGxldCBsYXN0Q29sdW1uID0gbXVzdGFjaGUubG9jLmVuZC5jb2x1bW4gLSAyO1xuICBsZXQgc3RyaW5nID0gW107XG4gIGxldCBsaW5lO1xuXG4gIGlmICghdGhpcy5zb3VyY2UpIHtcbiAgICByZXR1cm4gJ3t7JyArIG11c3RhY2hlLnBhdGguaWQub3JpZ2luYWwgKyAnfX0nO1xuICB9XG5cbiAgd2hpbGUgKGN1cnJlbnRMaW5lIDwgbGFzdExpbmUpIHtcbiAgICBjdXJyZW50TGluZSsrO1xuICAgIGxpbmUgPSB0aGlzLnNvdXJjZVtjdXJyZW50TGluZV07XG5cbiAgICBpZiAoY3VycmVudExpbmUgPT09IGZpcnN0TGluZSkge1xuICAgICAgaWYgKGZpcnN0TGluZSA9PT0gbGFzdExpbmUpIHtcbiAgICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZShmaXJzdENvbHVtbiwgbGFzdENvbHVtbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZShmaXJzdENvbHVtbikpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKDAsIGxhc3RDb2x1bW4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyaW5nLnB1c2gobGluZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZy5qb2luKCdcXG4nKTtcbn07XG4iXX0=
-enifed("glimmer-syntax/lib/parser/handlebars-node-visitors", ["exports", "glimmer-syntax/lib/builders", "glimmer-syntax/lib/utils"], function (exports, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibUtils) {
- "use strict";
+ }
- exports.default = {
- Program: function (program) {
- var body = [];
- var node = _glimmerSyntaxLibBuilders.default.program(body, program.blockParams, program.loc);
- var i = undefined,
- l = program.body.length;
- this.elementStack.push(node);
- if (l === 0) {
- return this.elementStack.pop();
- }
- for (i = 0; i < l; i++) {
- this.acceptNode(program.body[i]);
- }
- // Ensure that that the element stack is balanced properly.
- var poppedNode = this.elementStack.pop();
- if (poppedNode !== node) {
- throw new Error("Unclosed element `" + poppedNode.tag + "` (on line " + poppedNode.loc.start.line + ").");
- }
- return node;
- },
- BlockStatement: function (block) {
- delete block.inverseStrip;
- delete block.openString;
- delete block.closeStrip;
- if (this.tokenizer.state === 'comment') {
- this.appendToCommentData('{{' + this.sourceForMustache(block) + '}}');
- return;
- }
- if (this.tokenizer.state !== 'comment' && this.tokenizer.state !== 'data' && this.tokenizer.state !== 'beforeData') {
- throw new Error("A block may only be used inside an HTML element or another block.");
- }
- block = acceptCommonNodes(this, block);
- var program = block.program ? this.acceptNode(block.program) : null;
- var inverse = block.inverse ? this.acceptNode(block.inverse) : null;
- var node = _glimmerSyntaxLibBuilders.default.block(block.path, block.params, block.hash, program, inverse, block.loc);
- var parentProgram = this.currentElement();
- _glimmerSyntaxLibUtils.appendChild(parentProgram, node);
- },
- MustacheStatement: function (rawMustache) {
- var tokenizer = this.tokenizer;
- var path = rawMustache.path;
- var params = rawMustache.params;
- var hash = rawMustache.hash;
- var escaped = rawMustache.escaped;
- var loc = rawMustache.loc;
+ function buildSource(source) {
+ return source || null;
+ }
- var mustache = _glimmerSyntaxLibBuilders.default.mustache(path, params, hash, !escaped, loc);
- if (tokenizer.state === 'comment') {
- this.appendToCommentData('{{' + this.sourceForMustache(mustache) + '}}');
- return;
- }
- acceptCommonNodes(this, mustache);
- switch (tokenizer.state) {
- // Tag helpers
- case "tagName":
- addElementModifier(this.currentNode, mustache);
- tokenizer.state = "beforeAttributeName";
- break;
- case "beforeAttributeName":
- addElementModifier(this.currentNode, mustache);
- break;
- case "attributeName":
- case "afterAttributeName":
- this.beginAttributeValue(false);
- this.finishAttributeValue();
- addElementModifier(this.currentNode, mustache);
- tokenizer.state = "beforeAttributeName";
- break;
- case "afterAttributeValueQuoted":
- addElementModifier(this.currentNode, mustache);
- tokenizer.state = "beforeAttributeName";
- break;
- // Attribute values
- case "beforeAttributeValue":
- appendDynamicAttributeValuePart(this.currentAttribute, mustache);
- tokenizer.state = 'attributeValueUnquoted';
- break;
- case "attributeValueDoubleQuoted":
- case "attributeValueSingleQuoted":
- case "attributeValueUnquoted":
- appendDynamicAttributeValuePart(this.currentAttribute, mustache);
- break;
- // TODO: Only append child when the tokenizer state makes
- // sense to do so, otherwise throw an error.
- default:
- _glimmerSyntaxLibUtils.appendChild(this.currentElement(), mustache);
- }
- return mustache;
- },
- ContentStatement: function (content) {
- updateTokenizerLocation(this.tokenizer, content);
- this.tokenizer.tokenizePart(content.value);
- this.tokenizer.flushData();
- },
- CommentStatement: function (comment) {
- return comment;
- },
- PartialStatement: function (partial) {
- _glimmerSyntaxLibUtils.appendChild(this.currentElement(), partial);
- return partial;
- },
- SubExpression: function (sexpr) {
- return acceptCommonNodes(this, sexpr);
- },
- PathExpression: function (path) {
- var original = path.original;
- var loc = path.loc;
-
- if (original.indexOf('/') !== -1) {
- // TODO add a SyntaxError with loc info
- if (original.slice(0, 2) === './') {
- throw new Error("Using \"./\" is not supported in Glimmer and unnecessary: \"" + path.original + "\" on line " + loc.start.line + ".");
- }
- if (original.slice(0, 3) === '../') {
- throw new Error("Changing context using \"../\" is not supported in Glimmer: \"" + path.original + "\" on line " + loc.start.line + ".");
- }
- if (original.indexOf('.') !== -1) {
- throw new Error("Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths: \"" + path.original + "\" on line " + loc.start.line + ".");
- }
- path.parts = [path.parts.join('/')];
- }
- delete path.depth;
- // This is to fix a bug in the Handlebars AST where the path expressions in
- // `{{this.foo}}` (and similarly `{{foo-bar this.foo named=this.foo}}` etc)
- // are simply turned into `{{foo}}`. The fix is to push it back onto the
- // parts array and let the runtime see the difference. However, we cannot
- // simply use the string `this` as it means literally the property called
- // "this" in the current context (it can be expressed in the syntax as
- // `{{[this]}}`, where the square bracket are generally for this kind of
- // escaping – such as `{{foo.["bar.baz"]}}` would mean lookup a property
- // named literally "bar.baz" on `this.foo`). By convention, we use `null`
- // for this purpose.
- if (original.match(/^this(\..+)?$/)) {
- path.parts.unshift(null);
- }
- return path;
- },
- Hash: function (hash) {
- for (var i = 0; i < hash.pairs.length; i++) {
- this.acceptNode(hash.pairs[i].value);
- }
- return hash;
- },
- StringLiteral: function () {},
- BooleanLiteral: function () {},
- NumberLiteral: function () {},
- UndefinedLiteral: function () {},
- NullLiteral: function () {}
+ function buildPosition(line, column) {
+ return {
+ line: typeof line === 'number' ? line : null,
+ column: typeof column === 'number' ? column : null
};
+ }
- function calculateRightStrippedOffsets(original, value) {
- if (value === '') {
- // if it is empty, just return the count of newlines
- // in original
- return {
- lines: original.split("\n").length - 1,
- columns: 0
- };
- }
- // otherwise, return the number of newlines prior to
- // `value`
- var difference = original.split(value)[0];
- var lines = difference.split(/\n/);
- var lineCount = lines.length - 1;
+ function buildLoc(startLine, startColumn, endLine, endColumn, source) {
+ if (arguments.length === 1) {
+ var loc = startLine;
+
+ if (typeof loc === 'object') {
return {
- lines: lineCount,
- columns: lines[lineCount].length
+ source: buildSource(loc.source),
+ start: buildPosition(loc.start.line, loc.start.column),
+ end: buildPosition(loc.end.line, loc.end.column)
};
+ } else {
+ return null;
+ }
+ } else {
+ return {
+ source: buildSource(source),
+ start: buildPosition(startLine, startColumn),
+ end: buildPosition(endLine, endColumn)
+ };
}
- function updateTokenizerLocation(tokenizer, content) {
- var line = content.loc.start.line;
- var column = content.loc.start.column;
- if (content.rightStripped) {
- var offsets = calculateRightStrippedOffsets(content.original, content.value);
- line = line + offsets.lines;
- if (offsets.lines) {
- column = offsets.columns;
- } else {
- column = column + offsets.columns;
- }
- }
- tokenizer.line = line;
- tokenizer.column = column;
- }
- function acceptCommonNodes(compiler, node) {
- compiler.acceptNode(node.path);
- if (node.params) {
- for (var i = 0; i < node.params.length; i++) {
- compiler.acceptNode(node.params[i]);
- }
- } else {
- node.params = [];
- }
- if (node.hash) {
- compiler.acceptNode(node.hash);
- } else {
- node.hash = _glimmerSyntaxLibBuilders.default.hash();
- }
- return node;
- }
- function addElementModifier(element, mustache) {
- var path = mustache.path;
- var params = mustache.params;
- var hash = mustache.hash;
- var loc = mustache.loc;
+ }
- var modifier = _glimmerSyntaxLibBuilders.default.elementModifier(path, params, hash, loc);
- element.modifiers.push(modifier);
- }
- function appendDynamicAttributeValuePart(attribute, part) {
- attribute.isDynamic = true;
- attribute.parts.push(part);
- }
+ exports.default = {
+ mustache: buildMustache,
+ block: buildBlock,
+ partial: buildPartial,
+ comment: buildComment,
+ element: buildElement,
+ elementModifier: buildElementModifier,
+ component: buildComponent,
+ attr: buildAttr,
+ text: buildText,
+ sexpr: buildSexpr,
+ path: buildPath,
+ string: buildString,
+ boolean: buildBoolean,
+ number: buildNumber,
+ undefined: buildUndefined,
+ null: buildNull,
+ concat: buildConcat,
+ hash: buildHash,
+ pair: buildPair,
+ program: buildProgram,
+ loc: buildLoc,
+ pos: buildPosition
+ };
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFHZTtBQUViLGVBQU8sRUFBRSxVQUFTLE9BQU8sRUFBQTtBQUN2QixnQkFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2QsZ0JBQUksSUFBSSxHQUFHLGtDQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsZ0JBQUksQ0FBQyxZQUFBO2dCQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUUvQixnQkFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFN0IsZ0JBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUFFLHVCQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7YUFBRTtBQUVoRCxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEIsb0JBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xDOztBQUdELGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLGdCQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7QUFDdkIsc0JBQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzNHO0FBRUQsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7QUFFRCxzQkFBYyxFQUFFLFVBQVMsS0FBSyxFQUFBO0FBQzVCLG1CQUFPLEtB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQztTQUNGLE1BQU07QUFDTCxnQkFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7QUFFRCxZQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDYixvQkFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEMsTUFBTTtBQUNMLGdCQUFJLENBQUMsSUFBSSxHQUFHLGtDQUFFLElBQUksRUFBRSxDQUFDO1NBQ3RCO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYjtBQUVELGFBQUEsa0JBQUEsQ0FBNEIsT0FBTyxFQUFFLFFBQVEsRUFBQTtZQUNyQyxJQUFJLEdBQXdCLFFBQVEsQ0FBcEMsSUFBSTtZQUFFLE1BQU0sR0FBZ0IsUUFBUSxDQUE5QixNQUFNO1lBQUUsSUFBSSxHQUFVLFFBQVEsQ0FBdEIsSUFBSTtZQUFFLEdBQUcsR0FBSyxRQUFRLENBQWhCLEdBQUc7O0FBQzdCLFlBQUksUUFBUSxHQUFHLGtDQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxlQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNsQztBQUVELGFBQUEsK0JBQUEsQ0FBeUMsU0FBUyxFQUFFLElBQUksRUFBQTtBQUN0RCxpQkFBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDM0IsaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzVCIiwiZmlsZSI6ImhhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIFByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICBsZXQgYm9keSA9IFtdO1xuICAgIGxldCBub2RlID0gYi5wcm9ncmFtKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICBsZXQgaSwgbCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKGwgPT09IDApIHsgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpOyB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuY2xvc2VkIGVsZW1lbnQgYFwiICsgcG9wcGVkTm9kZS50YWcgKyBcImAgKG9uIGxpbmUgXCIgKyBwb3BwZWROb2RlLmxvYy5zdGFydC5saW5lICsgXCIpLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSxcblxuICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24oYmxvY2spIHtcbiAgICBkZWxldGUgYmxvY2suaW52ZXJzZVN0cmlwO1xuICAgIGRlbGV0ZSBibG9jay5vcGVuU3RyaW5nO1xuICAgIGRlbGV0ZSBibG9jay5jbG9zZVN0cmlwO1xuXG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShibG9jaykgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgIT09ICdjb21tZW50JyAmJiB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gJ2RhdGEnICYmIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSAnYmVmb3JlRGF0YScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suXCIpO1xuICAgIH1cblxuICAgIGJsb2NrID0gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSA/IHRoaXMuYWNjZXB0Tm9kZShibG9jay5wcm9ncmFtKSA6IG51bGw7XG4gICAgbGV0IGludmVyc2UgPSBibG9jay5pbnZlcnNlID8gdGhpcy5hY2NlcHROb2RlKGJsb2NrLmludmVyc2UpIDogbnVsbDtcblxuICAgIGxldCBub2RlID0gYi5ibG9jayhibG9jay5wYXRoLCBibG9jay5wYXJhbXMsIGJsb2NrLmhhc2gsIHByb2dyYW0sIGludmVyc2UsIGJsb2NrLmxvYyk7XG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50UHJvZ3JhbSwgbm9kZSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHJhd011c3RhY2hlKSB7XG4gICAgbGV0IHRva2VuaXplciA9IHRoaXMudG9rZW5pemVyO1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0gPSByYXdNdXN0YWNoZTtcbiAgICBsZXQgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYyk7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShtdXN0YWNoZSkgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhY2NlcHRDb21tb25Ob2Rlcyh0aGlzLCBtdXN0YWNoZSk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgLy8gVGFnIGhlbHBlcnNcbiAgICAgIGNhc2UgXCJ0YWdOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci5zdGF0ZSA9IFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgIGNhc2UgXCJhZnRlckF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZXNcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVWYWx1ZVwiOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVVbnF1b3RlZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkXCI6XG4gICAgICBjYXNlIFwiYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRcIjpcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXCI6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbihjb21tZW50KSB7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgcGFydGlhbCk7XG4gICAgcmV0dXJuIHBhcnRpYWw7XG4gIH0sXG5cbiAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24oc2V4cHIpIHtcbiAgICByZXR1cm4gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgc2V4cHIpO1xuICB9LFxuXG4gIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAvLyBUT0RPIGFkZCBhIFN5bnRheEVycm9yIHdpdGggbG9jIGluZm9cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDMpID09PSAnLi4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYW5naW5nIGNvbnRleHQgdXNpbmcgXCIuLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gKTtcbiAgICAgIH1cbiAgICAgIHBhdGgucGFydHMgPSBbIHBhdGgucGFydHMuam9pbignLycpIF07XG4gICAgfVxuXG4gICAgZGVsZXRlIHBhdGguZGVwdGg7XG5cbiAgICAvLyBUaGlzIGlzIHRvIGZpeCBhIGJ1ZyBpbiB0aGUgSGFuZGxlYmFycyBBU1Qgd2hlcmUgdGhlIHBhdGggZXhwcmVzc2lvbnMgaW5cbiAgICAvLyBge3t0aGlzLmZvb319YCAoYW5kIHNpbWlsYXJseSBge3tmb28tYmFyIHRoaXMuZm9vIG5hbWVkPXRoaXMuZm9vfX1gIGV0YylcbiAgICAvLyBhcmUgc2ltcGx5IHR1cm5lZCBpbnRvIGB7e2Zvb319YC4gVGhlIGZpeCBpcyB0byBwdXNoIGl0IGJhY2sgb250byB0aGVcbiAgICAvLyBwYXJ0cyBhcnJheSBhbmQgbGV0IHRoZSBydW50aW1lIHNlZSB0aGUgZGlmZmVyZW5jZS4gSG93ZXZlciwgd2UgY2Fubm90XG4gICAgLy8gc2ltcGx5IHVzZSB0aGUgc3RyaW5nIGB0aGlzYCBhcyBpdCBtZWFucyBsaXRlcmFsbHkgdGhlIHByb3BlcnR5IGNhbGxlZFxuICAgIC8vIFwidGhpc1wiIGluIHRoZSBjdXJyZW50IGNvbnRleHQgKGl0IGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIHN5bnRheCBhc1xuICAgIC8vIGB7e1t0aGlzXX19YCwgd2hlcmUgdGhlIHNxdWFyZSBicmFja2V0IGFyZSBnZW5lcmFsbHkgZm9yIHRoaXMga2luZCBvZlxuICAgIC8vIGVzY2FwaW5nIOKAkyBzdWNoIGFzIGB7e2Zvby5bXCJiYXIuYmF6XCJdfX1gIHdvdWxkIG1lYW4gbG9va3VwIGEgcHJvcGVydHlcbiAgICAvLyBuYW1lZCBsaXRlcmFsbHkgXCJiYXIuYmF6XCIgb24gYHRoaXMuZm9vYCkuIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGlmIChvcmlnaW5hbC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSkge1xuICAgICAgcGF0aC5wYXJ0cy51bnNoaWZ0KG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uKGhhc2gpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhc2gucGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0Tm9kZShoYXNoLnBhaXJzW2ldLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfSxcblxuICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbigpIHt9LFxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uKCkge31cbn07XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKG9yaWdpbmFsLCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgLy8gaWYgaXQgaXMgZW1wdHksIGp1c3QgcmV0dXJuIHRoZSBjb3VudCBvZiBuZXdsaW5lc1xuICAgIC8vIGluIG9yaWdpbmFsXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBvcmlnaW5hbC5zcGxpdChcIlxcblwiKS5sZW5ndGggLSAxLFxuICAgICAgY29sdW1uczogMFxuICAgIH07XG4gIH1cblxuICAvLyBvdGhlcndpc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIG5ld2xpbmVzIHByaW9yIHRvXG4gIC8vIGB2YWx1ZWBcbiAgbGV0IGRpZmZlcmVuY2UgPSBvcmlnaW5hbC5zcGxpdCh2YWx1ZSlbMF07XG4gIGxldCBsaW5lcyA9IGRpZmZlcmVuY2Uuc3BsaXQoL1xcbi8pO1xuICBsZXQgbGluZUNvdW50ID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICByZXR1cm4ge1xuICAgIGxpbmVzOiBsaW5lQ291bnQsXG4gICAgY29sdW1uczogbGluZXNbbGluZUNvdW50XS5sZW5ndGhcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odG9rZW5pemVyLCBjb250ZW50KSB7XG4gIGxldCBsaW5lID0gY29udGVudC5sb2Muc3RhcnQubGluZTtcbiAgbGV0IGNvbHVtbiA9IGNvbnRlbnQubG9jLnN0YXJ0LmNvbHVtbjtcblxuICBpZiAoY29udGVudC5yaWdodFN0cmlwcGVkKSB7XG4gICAgbGV0IG9mZnNldHMgPSBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhjb250ZW50Lm9yaWdpbmFsLCBjb250ZW50LnZhbHVlKTtcblxuICAgIGxpbmUgPSBsaW5lICsgb2Zmc2V0cy5saW5lcztcbiAgICBpZiAob2Zmc2V0cy5saW5lcykge1xuICAgICAgY29sdW1uID0gb2Zmc2V0cy5jb2x1bW5zO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2x1bW4gPSBjb2x1bW4gKyBvZmZzZXRzLmNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgdG9rZW5pemVyLmxpbmUgPSBsaW5lO1xuICB0b2tlbml6ZXIuY29sdW1uID0gY29sdW1uO1xufVxuZnVuY3Rpb24gYWNjZXB0Q29tbW9uTm9kZXMoY29tcGlsZXIsIG5vZGUpIHtcbiAgY29tcGlsZXIuYWNjZXB0Tm9kZShub2RlLnBhdGgpO1xuXG4gIGlmIChub2RlLnBhcmFtcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5wYXJhbXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLnBhcmFtcyA9IFtdO1xuICB9XG5cbiAgaWYgKG5vZGUuaGFzaCkge1xuICAgIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5oYXNoKTtcbiAgfSBlbHNlIHtcbiAgICBub2RlLmhhc2ggPSBiLmhhc2goKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50TW9kaWZpZXIoZWxlbWVudCwgbXVzdGFjaGUpIHtcbiAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IG11c3RhY2hlO1xuICBsZXQgbW9kaWZpZXIgPSBiLmVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyk7XG4gIGVsZW1lbnQubW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KGF0dHJpYnV0ZSwgcGFydCkge1xuICBhdHRyaWJ1dGUuaXNEeW5hbWljID0gdHJ1ZTtcbiAgYXR0cmlidXRlLnBhcnRzLnB1c2gocGFydCk7XG59XG4iXX0=
-enifed("glimmer-syntax/lib/parser/tokenizer-event-handlers", ["exports", "glimmer-syntax/lib/builders", "glimmer-syntax/lib/utils"], function (exports, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibUtils) {
- "use strict";
+enifed('htmlbars-syntax/generation/print', ['exports'], function (exports) {
+ 'use strict';
- var voidMap = Object.create(null);
- var voidTagNames = "area base br col command embed hr img input keygen link meta param source track wbr";
- voidTagNames.split(" ").forEach(function (tagName) {
- voidMap[tagName] = true;
- });
- exports.default = {
- reset: function () {
- this.currentNode = null;
- },
- // Comment
- beginComment: function () {
- this.currentNode = _glimmerSyntaxLibBuilders.default.comment("");
- this.currentNode.loc = {
- source: null,
- start: _glimmerSyntaxLibBuilders.default.pos(this.tagOpenLine, this.tagOpenColumn),
- end: null
- };
- },
- appendToCommentData: function (char) {
- this.currentNode.value += char;
- },
- finishComment: function () {
- this.currentNode.loc.end = _glimmerSyntaxLibBuilders.default.pos(this.tokenizer.line, this.tokenizer.column);
- _glimmerSyntaxLibUtils.appendChild(this.currentElement(), this.currentNode);
- },
- // Data
- beginData: function () {
- this.currentNode = _glimmerSyntaxLibBuilders.default.text();
- this.currentNode.loc = {
- source: null,
- start: _glimmerSyntaxLibBuilders.default.pos(this.tokenizer.line, this.tokenizer.column),
- end: null
- };
- },
- appendToData: function (char) {
- this.currentNode.chars += char;
- },
- finishData: function () {
- this.currentNode.loc.end = _glimmerSyntaxLibBuilders.default.pos(this.tokenizer.line, this.tokenizer.column);
- _glimmerSyntaxLibUtils.appendChild(this.currentElement(), this.currentNode);
- },
- // Tags - basic
- tagOpen: function () {
- this.tagOpenLine = this.tokenizer.line;
- this.tagOpenColumn = this.tokenizer.column;
- },
- beginStartTag: function () {
- this.currentNode = {
- type: 'StartTag',
- name: "",
- attributes: [],
- modifiers: [],
- selfClosing: false,
- loc: null
- };
- },
- beginEndTag: function () {
- this.currentNode = {
- type: 'EndTag',
- name: "",
- attributes: [],
- modifiers: [],
- selfClosing: false,
- loc: null
- };
- },
- finishTag: function () {
- var _tokenizer = this.tokenizer;
- var line = _tokenizer.line;
- var column = _tokenizer.column;
+ exports.default = build;
- var tag = this.currentNode;
- tag.loc = _glimmerSyntaxLibBuilders.default.loc(this.tagOpenLine, this.tagOpenColumn, line, column);
- if (tag.type === 'StartTag') {
- this.finishStartTag();
- if (voidMap[tag.name] || tag.selfClosing) {
- this.finishEndTag(true);
- }
- } else if (tag.type === 'EndTag') {
- this.finishEndTag(false);
- }
- },
- finishStartTag: function () {
- var _currentNode = this.currentNode;
- var name = _currentNode.name;
- var attributes = _currentNode.attributes;
- var modifiers = _currentNode.modifiers;
-
- var loc = _glimmerSyntaxLibBuilders.default.loc(this.tagOpenLine, this.tagOpenColumn);
- var element = _glimmerSyntaxLibBuilders.default.element(name, attributes, modifiers, [], loc);
- this.elementStack.push(element);
- },
- finishEndTag: function (isVoid) {
- var tag = this.currentNode;
- var element = this.elementStack.pop();
- var parent = this.currentElement();
- validateEndTag(tag, element, isVoid);
- element.loc.end.line = this.tokenizer.line;
- element.loc.end.column = this.tokenizer.column;
- _glimmerSyntaxLibUtils.parseElementBlockParams(element);
- _glimmerSyntaxLibUtils.appendChild(parent, element);
- },
- markTagAsSelfClosing: function () {
- this.currentNode.selfClosing = true;
- },
- // Tags - name
- appendToTagName: function (char) {
- this.currentNode.name += char;
- },
- // Tags - attributes
- beginAttribute: function () {
- var tag = this.currentNode;
- if (tag.type === 'EndTag') {
- throw new Error("Invalid end tag: closing tag must not have attributes, " + ("in `" + tag.name + "` (on line " + this.tokenizer.line + ")."));
- }
- this.currentAttribute = {
- name: "",
- parts: [],
- isQuoted: false,
- isDynamic: false,
- start: _glimmerSyntaxLibBuilders.default.pos(this.tokenizer.line, this.tokenizer.column),
- valueStartLine: null,
- valueStartColumn: null
- };
- },
- appendToAttributeName: function (char) {
- this.currentAttribute.name += char;
- },
- beginAttributeValue: function (isQuoted) {
- this.currentAttribute.isQuoted = isQuoted;
- this.currentAttribute.valueStartLine = this.tokenizer.line;
- this.currentAttribute.valueStartColumn = this.tokenizer.column;
- },
- appendToAttributeValue: function (char) {
- var parts = this.currentAttribute.parts;
- if (typeof parts[parts.length - 1] === 'string') {
- parts[parts.length - 1] += char;
- } else {
- parts.push(char);
- }
- },
- finishAttributeValue: function () {
- var _currentAttribute = this.currentAttribute;
- var name = _currentAttribute.name;
- var parts = _currentAttribute.parts;
- var isQuoted = _currentAttribute.isQuoted;
- var isDynamic = _currentAttribute.isDynamic;
- var valueStartLine = _currentAttribute.valueStartLine;
- var valueStartColumn = _currentAttribute.valueStartColumn;
-
- var value = assembleAttributeValue(parts, isQuoted, isDynamic, this.tokenizer.line);
- value.loc = _glimmerSyntaxLibBuilders.default.loc(valueStartLine, valueStartColumn, this.tokenizer.line, this.tokenizer.column);
- var loc = _glimmerSyntaxLibBuilders.default.loc(this.currentAttribute.start.line, this.currentAttribute.start.column, this.tokenizer.line, this.tokenizer.column);
- var attribute = _glimmerSyntaxLibBuilders.default.attr(name, value, loc);
- this.currentNode.attributes.push(attribute);
- }
- };
-
- function assembleAttributeValue(parts, isQuoted, isDynamic, line) {
- if (isDynamic) {
- if (isQuoted) {
- return assembleConcatenatedValue(parts);
- } else {
- if (parts.length === 1 || parts.length === 2 && parts[1] === '/') {
- return parts[0];
- } else {
- throw new Error("An unquoted attribute value must be a string or a mustache, " + "preceeded by whitespace or a '=' character, and " + ("followed by whitespace, a '>' character, or '/>' (on line " + line + ")"));
- }
- }
- } else {
- return _glimmerSyntaxLibBuilders.default.text(parts.length > 0 ? parts[0] : "");
- }
+ function build(ast) {
+ if (!ast) {
+ return '';
}
- function assembleConcatenatedValue(parts) {
- for (var i = 0; i < parts.length; i++) {
- var part = parts[i];
- if (typeof part === 'string') {
- parts[i] = _glimmerSyntaxLibBuilders.default.text(parts[i]);
- } else {
- if (part.type !== 'MustacheStatement') {
- throw new Error("Unsupported node in quoted attribute value: " + part.type);
- }
- }
- }
- return _glimmerSyntaxLibBuilders.default.concat(parts);
- }
- function validateEndTag(tag, element, selfClosing) {
- var error = undefined;
- if (voidMap[tag.name] && !selfClosing) {
- // EngTag is also called by StartTag for void and self-closing tags (i.e.
- // <input> or <br />, so we need to check for that here. Otherwise, we would
- // throw an error for those cases.
- error = "Invalid end tag " + formatEndTagInfo(tag) + " (void elements cannot have end tags).";
- } else if (element.tag === undefined) {
- error = "Closing tag " + formatEndTagInfo(tag) + " without an open tag.";
- } else if (element.tag !== tag.name) {
- error = "Closing tag " + formatEndTagInfo(tag) + " did not match last open tag `" + element.tag + "` (on line " + element.loc.start.line + ").";
- }
- if (error) {
- throw new Error(error);
- }
- }
- function formatEndTagInfo(tag) {
- return "`" + tag.name + "` (on line " + tag.loc.end.line + ")";
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLFFBQU0sT0FBTyxHQUVULE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFeEIsUUFBSSxZQUFZLEdBQUcscUZBQXFGLENBQUM7QUFDekcsZ0JBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsT0FBTyxFQUFBO0FBQ3JDLGVBQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDekIsQ0FBQyxDQUFDO3NCQUVZO0FBQ2IsYUFBSyxFQUFFLFlBQUE7QUFDTCxnQkFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7O0FBSUQsb0JBQVksRUFBRSxZQUFBO0FBQ1osZ0JBQUksQ0FBQyxXQUFXLEdBQUcsa0NBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRztBQUNyQixzQkFBTSxFQUFFLElBQUk7QUFDWixxQkFBSyxFQUFFLGtDQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDbEQsbUJBQUcsRUFBRSxJQUFJO2FBQ1YsQ0FBQztTQUNIO0FBRUQsMkJBQW1CLEVBQUUsVUFBUyxJQUFJLEVBQUE7QUFDaEMsZ0JBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztTQUNoQztBQUVELHFCQUFhLEVBQUUsWUFBQTtBQUNiLGdCQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsa0NBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0UsbUNBbENLLFdBQVcsQ0FrQ0osSUFBSSxDQUFD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QU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN4QjtBQUVELGFBQUEsY0FBQSxDQUF3QixHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQTtBQUMvQyxZQUFJLEtBQUssWUFBQSxDQUFDO0FBRVYsWUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFOzs7O0FBSXJDLGlCQUFLLEdBQUcsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsd0NBQXdDLENBQUM7U0FDL0YsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3BDLGlCQUFLLEdBQUcsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO1NBQzFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUU7QUFDbkMsaUJBQUssR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0NBQWdDLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFhLEdBQ3ZHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDdkM7QUFFRCxZQUFJLEtBQUssRUFBRTtBQUFFLGtCQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQUU7S0FDdkM7QUFFRCxhQUFBLGdCQUFBLENBQTBCLEdBQUcsRUFBQTtBQUMzQixlQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0tBQ2hFIiwiZmlsZSI6InRva2VuaXplci1ldmVudC1oYW5kbGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmNvbnN0IHZvaWRNYXA6IHtcbiAgW3RhZ05hbWU6IHN0cmluZ106IGJvb2xlYW5cbn0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5sZXQgdm9pZFRhZ05hbWVzID0gXCJhcmVhIGJhc2UgYnIgY29sIGNvbW1hbmQgZW1iZWQgaHIgaW1nIGlucHV0IGtleWdlbiBsaW5rIG1ldGEgcGFyYW0gc291cmNlIHRyYWNrIHdiclwiO1xudm9pZFRhZ05hbWVzLnNwbGl0KFwiIFwiKS5mb3JFYWNoKHRhZ05hbWUgPT4ge1xuICB2b2lkTWFwW3RhZ05hbWVdID0gdHJ1ZTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgfSxcblxuICAvLyBDb21tZW50XG5cbiAgYmVnaW5Db21tZW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi5jb21tZW50KFwiXCIpO1xuICAgIHRoaXMuY3VycmVudE5vZGUubG9jID0ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgc3RhcnQ6IGIucG9zKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiksXG4gICAgICBlbmQ6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGFwcGVuZFRvQ29tbWVudERhdGE6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLnZhbHVlICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoQ29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5sb2MuZW5kID0gYi5wb3ModGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uKTtcblxuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5jdXJyZW50Tm9kZSk7XG4gIH0sXG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIudGV4dCgpO1xuICAgIHRoaXMuY3VycmVudE5vZGUubG9jID0ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgc3RhcnQ6IGIucG9zKHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtbiksXG4gICAgICBlbmQ6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGFwcGVuZFRvRGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUuY2hhcnMgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hEYXRhOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmxvYy5lbmQgPSBiLnBvcyh0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW4pO1xuXG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgfSxcblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICB0YWdPcGVuOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRhZ09wZW5MaW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICB0aGlzLnRhZ09wZW5Db2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH0sXG5cbiAgYmVnaW5TdGFydFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdTdGFydFRhZycsXG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBiZWdpbkVuZFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdFbmRUYWcnLFxuICAgICAgbmFtZTogXCJcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgZmluaXNoVGFnOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgeyBsaW5lLCBjb2x1bW4gfSA9IHRoaXMudG9rZW5pemVyO1xuXG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgdGFnLmxvYyA9IGIubG9jKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbiwgbGluZSwgY29sdW1uKTtcblxuICAgIGlmICh0YWcudHlwZSA9PT0gJ1N0YXJ0VGFnJykge1xuICAgICAgdGhpcy5maW5pc2hTdGFydFRhZygpO1xuXG4gICAgICBpZiAodm9pZE1hcFt0YWcubmFtZV0gfHwgdGFnLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHRoaXMuZmluaXNoRW5kVGFnKHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaEVuZFRhZyhmYWxzZSk7XG4gICAgfVxuICB9LFxuXG4gIGZpbmlzaFN0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgeyBuYW1lLCBhdHRyaWJ1dGVzLCBtb2RpZmllcnMgfSA9IHRoaXMuY3VycmVudE5vZGU7XG5cbiAgICBsZXQgbG9jID0gYi5sb2ModGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKTtcbiAgICBsZXQgZWxlbWVudCA9IGIuZWxlbWVudChuYW1lLCBhdHRyaWJ1dGVzLCBtb2RpZmllcnMsIFtdLCBsb2MpO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gIH0sXG5cbiAgZmluaXNoRW5kVGFnOiBmdW5jdGlvbihpc1ZvaWQpIHtcbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50Tm9kZTtcblxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMuY3VycmVudEVsZW1lbnQoKTtcblxuICAgIHZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgaXNWb2lkKTtcblxuICAgIGVsZW1lbnQubG9jLmVuZC5saW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICBlbGVtZW50LmxvYy5lbmQuY29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuXG4gICAgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgfSxcblxuICBtYXJrVGFnQXNTZWxmQ2xvc2luZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH0sXG5cbiAgLy8gVGFncyAtIG5hbWVcblxuICBhcHBlbmRUb1RhZ05hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLm5hbWUgKz0gY2hhcjtcbiAgfSxcblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBlbmQgdGFnOiBjbG9zaW5nIHRhZyBtdXN0IG5vdCBoYXZlIGF0dHJpYnV0ZXMsIGAgK1xuICAgICAgICBgaW4gXFxgJHt0YWcubmFtZX1cXGAgKG9uIGxpbmUgJHt0aGlzLnRva2VuaXplci5saW5lfSkuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSB7XG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgcGFydHM6IFtdLFxuICAgICAgaXNRdW90ZWQ6IGZhbHNlLFxuICAgICAgaXNEeW5hbWljOiBmYWxzZSxcbiAgICAgIHN0YXJ0OiBiLnBvcyh0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW4pLFxuICAgICAgdmFsdWVTdGFydExpbmU6IG51bGwsXG4gICAgICB2YWx1ZVN0YXJ0Q29sdW1uOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUubmFtZSArPSBjaGFyO1xuICB9LFxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKGlzUXVvdGVkKSB7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLnZhbHVlU3RhcnRMaW5lID0gdGhpcy50b2tlbml6ZXIubGluZTtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUudmFsdWVTdGFydENvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgbGV0IHBhcnRzID0gdGhpcy5jdXJyZW50QXR0cmlidXRlLnBhcnRzO1xuXG4gICAgaWYgKHR5cGVvZiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdICs9IGNoYXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goY2hhcik7XG4gICAgfVxuICB9LFxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgeyBuYW1lLCBwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgdmFsdWVTdGFydExpbmUsIHZhbHVlU3RhcnRDb2x1bW4gfSA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZTtcbiAgICBsZXQgdmFsdWUgPSBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCB0aGlzLnRva2VuaXplci5saW5lKTtcbiAgICB2YWx1ZS5sb2MgPSBiLmxvYyhcbiAgICAgIHZhbHVlU3RhcnRMaW5lLCB2YWx1ZVN0YXJ0Q29sdW1uLFxuICAgICAgdGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uXG4gICAgKTtcblxuICAgIGxldCBsb2MgPSBiLmxvYyhcbiAgICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS5zdGFydC5saW5lLCB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUuc3RhcnQuY29sdW1uLFxuICAgICAgdGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uXG4gICAgKTtcblxuICAgIGxldCBhdHRyaWJ1dGUgPSBiLmF0dHIobmFtZSwgdmFsdWUsIGxvYyk7XG5cbiAgICB0aGlzLmN1cnJlbnROb2RlLmF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCBsaW5lKSB7XG4gIGlmIChpc0R5bmFtaWMpIHtcbiAgICBpZiAoaXNRdW90ZWQpIHtcbiAgICAgIHJldHVybiBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSB8fCAocGFydHMubGVuZ3RoID09PSAyICYmIHBhcnRzWzFdID09PSAnLycpKSB7XG4gICAgICAgIHJldHVybiBwYXJ0c1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBtdXN0YWNoZSwgYCArXG4gICAgICAgICAgYHByZWNlZWRlZCBieSB3aGl0ZXNwYWNlIG9yIGEgJz0nIGNoYXJhY3RlciwgYW5kIGAgK1xuICAgICAgICAgIGBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlLCBhICc+JyBjaGFyYWN0ZXIsIG9yICcvPicgKG9uIGxpbmUgJHtsaW5lfSlgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiLnRleHQoKHBhcnRzLmxlbmd0aCA+IDApID8gcGFydHNbMF0gOiBcIlwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgcGFydCA9IHBhcnRzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgcGFydHNbaV0gPSBiLnRleHQocGFydHNbaV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFydC50eXBlICE9PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIG5vZGUgaW4gcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZTogXCIgKyBwYXJ0LnR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiLmNvbmNhdChwYXJ0cyk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgc2VsZkNsb3NpbmcpIHtcbiAgbGV0IGVycm9yO1xuXG4gIGlmICh2b2lkTWFwW3RhZy5uYW1lXSAmJiAhc2VsZkNsb3NpbmcpIHtcbiAgICAvLyBFbmdUYWcgaXMgYWxzbyBjYWxsZWQgYnkgU3RhcnRUYWcgZm9yIHZvaWQgYW5kIHNlbGYtY2xvc2luZyB0YWdzIChpLmUuXG4gICAgLy8gPGlucHV0PiBvciA8YnIgLz4sIHNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZFxuICAgIC8vIHRocm93IGFuIGVycm9yIGZvciB0aG9zZSBjYXNlcy5cbiAgICBlcnJvciA9IFwiSW52YWxpZCBlbmQgdGFnIFwiICsgZm9ybWF0RW5kVGFnSW5mbyh0YWcpICsgXCIgKHZvaWQgZWxlbWVudHMgY2Fubm90IGhhdmUgZW5kIHRhZ3MpLlwiO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnID09PSB1bmRlZmluZWQpIHtcbiAgICBlcnJvciA9IFwiQ2xvc2luZyB0YWcgXCIgKyBmb3JtYXRFbmRUYWdJbmZvKHRhZykgKyBcIiB3aXRob3V0IGFuIG9wZW4gdGFnLlwiO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnICE9PSB0YWcubmFtZSkge1xuICAgIGVycm9yID0gXCJDbG9zaW5nIHRhZyBcIiArIGZvcm1hdEVuZFRhZ0luZm8odGFnKSArIFwiIGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyBgXCIgKyBlbGVtZW50LnRhZyArIFwiYCAob24gbGluZSBcIiArXG4gICAgICAgICAgICBlbGVtZW50LmxvYy5zdGFydC5saW5lICsgXCIpLlwiO1xuICB9XG5cbiAgaWYgKGVycm9yKSB7IHRocm93IG5ldyBFcnJvcihlcnJvcik7IH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0RW5kVGFnSW5mbyh0YWcpIHtcbiAgcmV0dXJuIFwiYFwiICsgdGFnLm5hbWUgKyBcImAgKG9uIGxpbmUgXCIgKyB0YWcubG9jLmVuZC5saW5lICsgXCIpXCI7XG59XG4iXX0=
-enifed("glimmer-syntax/lib/traversal/errors", ["exports"], function (exports) {
- "use strict";
+ var output = [];
- exports.cannotRemoveNode = cannotRemoveNode;
- exports.cannotReplaceNode = cannotReplaceNode;
- exports.cannotReplaceOrRemoveInKeyHandlerYet = cannotReplaceOrRemoveInKeyHandlerYet;
- function TraversalError(message, node, parent, key) {
- this.name = "TraversalError";
- this.message = message;
- this.node = node;
- this.parent = parent;
- this.key = key;
- }
- TraversalError.prototype = Object.create(Error.prototype);
- TraversalError.prototype.constructor = TraversalError;
- exports.default = TraversalError;
-
- function cannotRemoveNode(node, parent, key) {
- return new TraversalError("Cannot remove a node unless it is part of an array", node, parent, key);
- }
-
- function cannotReplaceNode(node, parent, key) {
- return new TraversalError("Cannot replace a node with multiple nodes unless it is part of an array", node, parent, key);
- }
-
- function cannotReplaceOrRemoveInKeyHandlerYet(node, key) {
- return new TraversalError("Replacing and removing in key handlers is not yet supported.", node, null, key);
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGFBQUEsY0FBQSxDQUF3QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUE7QUFDaEQsWUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUM3QixZQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUN2QixZQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixZQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixZQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztLQUNoQjtBQUVELGtCQUFjLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFELGtCQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7c0JBRXZDLGNBQWM7O0FBRTdCLGFBQUEsZ0JBQUEsQ0FBaUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUE7QUFDaEQsZUFBTyxJQUFJLGNBQWMsQ0FDdkIsb0RBQW9ELEVBQ3BELElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUNsQixDQUFDO0tBQ0g7O0FBRUQsYUFBQSxpQkFBQSxDQUFrQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQTtBQUNqRCxlQUFPLElBQUksY0FBYyxDQUN2Qix5RUFBeUUsRUFDekUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQ2xCLENBQUM7S0FDSDs7QUFFRCxhQUFBLG9DQUFBLENBQXFELElBQUksRUFBRSxHQUFHLEVBQUE7QUFDNUQsZUFBTyxJQUFJLGNBQWMsQ0FDdkIsOERBQThELEVBQzlELElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUNoQixDQUFDO0tBQ0giLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gVHJhdmVyc2FsRXJyb3IobWVzc2FnZSwgbm9kZSwgcGFyZW50LCBrZXkpIHtcbiAgdGhpcy5uYW1lID0gXCJUcmF2ZXJzYWxFcnJvclwiO1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLm5vZGUgPSBub2RlO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5rZXkgPSBrZXk7XG59XG5cblRyYXZlcnNhbEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcblRyYXZlcnNhbEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRyYXZlcnNhbEVycm9yO1xuXG5leHBvcnQgZGVmYXVsdCBUcmF2ZXJzYWxFcnJvcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbm5vdFJlbW92ZU5vZGUobm9kZSwgcGFyZW50LCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBUcmF2ZXJzYWxFcnJvcihcbiAgICBcIkNhbm5vdCByZW1vdmUgYSBub2RlIHVubGVzcyBpdCBpcyBwYXJ0IG9mIGFuIGFycmF5XCIsXG4gICAgbm9kZSwgcGFyZW50LCBrZXlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbm5vdFJlcGxhY2VOb2RlKG5vZGUsIHBhcmVudCwga2V5KSB7XG4gIHJldHVybiBuZXcgVHJhdmVyc2FsRXJyb3IoXG4gICAgXCJDYW5ub3QgcmVwbGFjZSBhIG5vZGUgd2l0aCBtdWx0aXBsZSBub2RlcyB1bmxlc3MgaXQgaXMgcGFydCBvZiBhbiBhcnJheVwiLFxuICAgIG5vZGUsIHBhcmVudCwga2V5XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQobm9kZSwga2V5KSB7XG4gIHJldHVybiBuZXcgVHJhdmVyc2FsRXJyb3IoXG4gICAgXCJSZXBsYWNpbmcgYW5kIHJlbW92aW5nIGluIGtleSBoYW5kbGVycyBpcyBub3QgeWV0IHN1cHBvcnRlZC5cIixcbiAgICBub2RlLCBudWxsLCBrZXlcbiAgKTtcbn1cbiJdfQ==
-enifed('glimmer-syntax/lib/traversal/traverse', ['exports', 'glimmer-syntax/lib/types/visitor-keys', 'glimmer-syntax/lib/traversal/errors'], function (exports, _glimmerSyntaxLibTypesVisitorKeys, _glimmerSyntaxLibTraversalErrors) {
- 'use strict';
-
- exports.default = traverse;
- exports.normalizeVisitor = normalizeVisitor;
-
- function visitNode(visitor, node) {
- var handler = visitor[node.type] || visitor.All;
- var result = undefined;
- if (handler && handler.enter) {
- result = handler.enter.call(null, node);
+ switch (ast.type) {
+ case 'Program':
+ {
+ var chainBlock = ast.chained && ast.body[0];
+ if (chainBlock) {
+ chainBlock.chained = true;
+ }
+ var body = buildEach(ast.body).join('');
+ output.push(body);
}
- if (result !== undefined && result !== null) {
- if (JSON.stringify(node) === JSON.stringify(result)) {
- result = undefined;
- } else if (Array.isArray(result)) {
- return visitArray(visitor, result) || result;
- } else {
- return visitNode(visitor, result) || result;
- }
+ break;
+ case 'ElementNode':
+ output.push('<', ast.tag);
+ if (ast.attributes.length) {
+ output.push(' ', buildEach(ast.attributes).join(' '));
}
- if (result === undefined) {
- var keys = _glimmerSyntaxLibTypesVisitorKeys.default[node.type];
- for (var i = 0; i < keys.length; i++) {
- visitKey(visitor, handler, node, keys[i]);
- }
- if (handler && handler.exit) {
- result = handler.exit.call(null, node);
- }
+ if (ast.modifiers.length) {
+ output.push(' ', buildEach(ast.modifiers).join(' '));
}
- return result;
- }
- function visitKey(visitor, handler, node, key) {
- var value = node[key];
- if (!value) {
- return;
- }
- var keyHandler = handler && (handler.keys[key] || handler.keys.All);
- var result = undefined;
- if (keyHandler && keyHandler.enter) {
- result = keyHandler.enter.call(null, node, key);
- if (result !== undefined) {
- throw _glimmerSyntaxLibTraversalErrors.cannotReplaceOrRemoveInKeyHandlerYet(node, key);
- }
- }
- if (Array.isArray(value)) {
- visitArray(visitor, value);
+ output.push('>');
+ output.push.apply(output, buildEach(ast.children));
+ output.push('</', ast.tag, '>');
+ break;
+ case 'AttrNode':
+ output.push(ast.name, '=');
+ var value = build(ast.value);
+ if (ast.value.type === 'TextNode') {
+ output.push('"', value, '"');
} else {
- var _result = visitNode(visitor, value);
- if (_result !== undefined) {
- assignKey(node, key, _result);
- }
+ output.push(value);
}
- if (keyHandler && keyHandler.exit) {
- result = keyHandler.exit.call(null, node, key);
- if (result !== undefined) {
- throw _glimmerSyntaxLibTraversalErrors.cannotReplaceOrRemoveInKeyHandlerYet(node, key);
- }
+ break;
+ case 'ConcatStatement':
+ output.push('"');
+ ast.parts.forEach(function (node) {
+ if (node.type === 'StringLiteral') {
+ output.push(node.original);
+ } else {
+ output.push(build(node));
+ }
+ });
+ output.push('"');
+ break;
+ case 'TextNode':
+ output.push(ast.chars);
+ break;
+ case 'MustacheStatement':
+ {
+ output.push(compactJoin(['{{', pathParams(ast), '}}']));
}
- }
- function visitArray(visitor, array) {
- for (var i = 0; i < array.length; i++) {
- var result = visitNode(visitor, array[i]);
- if (result !== undefined) {
- i += spliceArray(array, i, result) - 1;
- }
+ break;
+ case 'ElementModifierStatement':
+ {
+ output.push(compactJoin(['{{', pathParams(ast), '}}']));
}
- }
- function assignKey(node, key, result) {
- if (result === null) {
- throw _glimmerSyntaxLibTraversalErrors.cannotRemoveNode(node[key], node, key);
- } else if (Array.isArray(result)) {
- if (result.length === 1) {
- node[key] = result[0];
- } else {
- if (result.length === 0) {
- throw _glimmerSyntaxLibTraversalErrors.cannotRemoveNode(node[key], node, key);
- } else {
- throw _glimmerSyntaxLibTraversalErrors.cannotReplaceNode(node[key], node, key);
- }
- }
- } else {
- node[key] = result;
+ break;
+ case 'PathExpression':
+ output.push(ast.original);
+ break;
+ case 'SubExpression':
+ {
+ output.push('(', pathParams(ast), ')');
}
- }
- function spliceArray(array, index, result) {
- if (result === null) {
- array.splice(index, 1);
- return 0;
- } else if (Array.isArray(result)) {
- array.splice.apply(array, [index, 1].concat(result));
- return result.length;
- } else {
- array.splice(index, 1, result);
- return 1;
- }
- }
+ break;
+ case 'BooleanLiteral':
+ output.push(ast.value ? 'true' : false);
+ break;
+ case 'BlockStatement':
+ {
+ var lines = [];
- function traverse(node, visitor) {
- visitNode(normalizeVisitor(visitor), node);
- }
+ if (ast.chained) {
+ lines.push(['{{else ', pathParams(ast), '}}'].join(''));
+ } else {
+ lines.push(openBlock(ast));
+ }
- function normalizeVisitor(visitor) {
- var normalizedVisitor = {};
- for (var type in visitor) {
- var handler = visitor[type] || visitor.All;
- var normalizedKeys = {};
- if (typeof handler === 'object') {
- var keys = handler.keys;
- if (keys) {
- for (var key in keys) {
- var keyHandler = keys[key];
- if (typeof keyHandler === 'object') {
- normalizedKeys[key] = {
- enter: typeof keyHandler.enter === 'function' ? keyHandler.enter : null,
- exit: typeof keyHandler.exit === 'function' ? keyHandler.exit : null
- };
- } else if (typeof keyHandler === 'function') {
- normalizedKeys[key] = {
- enter: keyHandler,
- exit: null
- };
- }
- }
- }
- normalizedVisitor[type] = {
- enter: typeof handler.enter === 'function' ? handler.enter : null,
- exit: typeof handler.exit === 'function' ? handler.exit : null,
- keys: normalizedKeys
- };
- } else if (typeof handler === 'function') {
- normalizedVisitor[type] = {
- enter: handler,
- exit: null,
- keys: normalizedKeys
- };
+ lines.push(build(ast.program));
+
+ if (ast.inverse) {
+ if (!ast.inverse.chained) {
+ lines.push('{{else}}');
}
- }
- return normalizedVisitor;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQStHQSxRQUFBOzs7QUF4R0EsYUFBQSxTQUFBLENBQW1CLE9BQU8sRUFBRSxJQUFJLEVBQUE7QUFDOUIsWUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hELFlBQUksTUFBTSxZQUFBLENBQUM7QUFFWCxZQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLGtCQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO0FBRUQsWUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFDM0MsZ0JBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ25ELHNCQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2hDLHVCQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDO2FBQzlDLE1BQU07QUFDTCx1QkFBTyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQzthQUM3QztTQUNGO0FBRUQsWUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQ3hCLGdCQUFJLElBQUksR0FBRywwQ0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbEMsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLHdCQUFRLENBQUMsT0FB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QUMsSUFBSSxHQUFHLElBQUk7QUFDaEUsd0JBQUksRUFBRSxjQUFjO2lCQUNyQixDQUFDO2FBQ0gsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUN4QyxpQ0FBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4Qix5QkFBSyxFQUFFLE9BQU87QUFDZCx3QkFBSSxFQUFFLElBQUk7QUFDVix3QkFBSSxFQUFFLGNBQWM7aUJBQ3JCLENBQUM7YUFDSDtTQUNGO0FBRUQsZUFBTyxpQkFBaUIsQ0FBQztLQUMxQiIsImZpbGUiOiJ0cmF2ZXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2aXNpdG9yS2V5cyBmcm9tICcuLi90eXBlcy92aXNpdG9yLWtleXMnO1xuaW1wb3J0IHtcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbmZ1bmN0aW9uIHZpc2l0Tm9kZSh2aXNpdG9yLCBub2RlKSB7XG4gIGxldCBoYW5kbGVyID0gdmlzaXRvcltub2RlLnR5cGVdIHx8IHZpc2l0b3IuQWxsO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChoYW5kbGVyICYmIGhhbmRsZXIuZW50ZXIpIHtcbiAgICByZXN1bHQgPSBoYW5kbGVyLmVudGVyLmNhbGwobnVsbCwgbm9kZSk7XG4gIH1cblxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBudWxsKSB7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KG5vZGUpID09PSBKU09OLnN0cmluZ2lmeShyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB2aXNpdEFycmF5KHZpc2l0b3IsIHJlc3VsdCkgfHwgcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmlzaXROb2RlKHZpc2l0b3IsIHJlc3VsdCkgfHwgcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBrZXlzID0gdmlzaXRvcktleXNbbm9kZS50eXBlXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmlzaXRLZXkodmlzaXRvciwgaGFuZGxlciwgbm9kZSwga2V5c1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5leGl0KSB7XG4gICAgICByZXN1bHQgPSBoYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB2aXNpdEtleSh2aXNpdG9yLCBoYW5kbGVyLCBub2RlLCBrZXkpIHtcbiAgbGV0IHZhbHVlID0gbm9kZVtrZXldO1xuICBpZiAoIXZhbHVlKSB7IHJldHVybjsgfVxuXG4gIGxldCBrZXlIYW5kbGVyID0gaGFuZGxlciAmJiAoaGFuZGxlci5rZXlzW2tleV0gfHwgaGFuZGxlci5rZXlzLkFsbCk7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGtleUhhbmRsZXIgJiYga2V5SGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmlzaXRBcnJheSh2aXNpdG9yLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCB2YWx1ZSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NpZ25LZXkobm9kZSwga2V5LCByZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChrZXlIYW5kbGVyICYmIGtleUhhbmRsZXIuZXhpdCkge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZXhpdC5jYWxsKG51bGwsIG5vZGUsIGtleSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQobm9kZSwga2V5KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmlzaXRBcnJheSh2aXNpdG9yLCBhcnJheSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCBhcnJheVtpXSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpICs9IHNwbGljZUFycmF5KGFycmF5LCBpLCByZXN1bHQpIC0gMTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzaWduS2V5KG5vZGUsIGtleSwgcmVzdWx0KSB7XG4gIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBjYW5ub3RSZW1vdmVOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbm9kZVtrZXldID0gcmVzdWx0WzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBjYW5ub3RSZW1vdmVOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGNhbm5vdFJlcGxhY2VOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZVtrZXldID0gcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGljZUFycmF5KGFycmF5LCBpbmRleCwgcmVzdWx0KSB7XG4gIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMSwgLi4ucmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEsIHJlc3VsdCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZSwgdmlzaXRvcikge1xuICB2aXNpdE5vZGUobm9ybWFsaXplVmlzaXRvcih2aXNpdG9yKSwgbm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWaXNpdG9yKHZpc2l0b3IpIHtcbiAgbGV0IG5vcm1hbGl6ZWRWaXNpdG9yID0ge307XG5cbiAgZm9yIChsZXQgdHlwZSBpbiB2aXNpdG9yKSB7XG4gICAgbGV0IGhhbmRsZXIgPSB2aXNpdG9yW3R5cGVdIHx8IHZpc2l0b3IuQWxsO1xuICAgIGxldCBub3JtYWxpemVkS2V5cyA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgbGV0IGtleXMgPSBoYW5kbGVyLmtleXM7XG4gICAgICBpZiAoa2V5cykge1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4ga2V5cykge1xuICAgICAgICAgIGxldCBrZXlIYW5kbGVyID0ga2V5c1trZXldO1xuICAgICAgICAgIGlmICh0eXBlb2Yga2V5SGFuZGxlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRLZXlzW2tleV0gPSB7XG4gICAgICAgICAgICAgIGVudGVyOiAodHlwZW9mIGtleUhhbmRsZXIuZW50ZXIgPT09ICdmdW5jdGlvbicpID8ga2V5SGFuZGxlci5lbnRlciA6IG51bGwsXG4gICAgICAgICAgICAgIGV4aXQ6ICh0eXBlb2Yga2V5SGFuZGxlci5leGl0ID09PSAnZnVuY3Rpb24nKSA/IGtleUhhbmRsZXIuZXhpdCA6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yga2V5SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbm9ybWFsaXplZEtleXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgZW50ZXI6IGtleUhhbmRsZXIsXG4gICAgICAgICAgICAgIGV4aXQ6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5vcm1hbGl6ZWRWaXNpdG9yW3R5cGVdID0ge1xuICAgICAgICBlbnRlcjogKHR5cGVvZiBoYW5kbGVyLmVudGVyID09PSAnZnVuY3Rpb24nKSA/IGhhbmRsZXIuZW50ZXIgOiBudWxsLFxuICAgICAgICBleGl0OiAodHlwZW9mIGhhbmRsZXIuZXhpdCA9PT0gJ2Z1bmN0aW9uJykgPyBoYW5kbGVyLmV4aXQgOiBudWxsLFxuICAgICAgICBrZXlzOiBub3JtYWxpemVkS2V5c1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBub3JtYWxpemVkVmlzaXRvclt0eXBlXSA9IHtcbiAgICAgICAgZW50ZXI6IGhhbmRsZXIsXG4gICAgICAgIGV4aXQ6IG51bGwsXG4gICAgICAgIGtleXM6IG5vcm1hbGl6ZWRLZXlzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkVmlzaXRvcjtcbn1cbiJdfQ==
-enifed('glimmer-syntax/lib/traversal/walker', ['exports'], function (exports) {
- 'use strict';
+ lines.push(build(ast.inverse));
+ }
- function Walker() {
- var order = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];
+ if (!ast.chained) {
+ lines.push(closeBlock(ast));
+ }
- this.order = order;
- this.stack = [];
- }
- exports.default = Walker;
-
- Walker.prototype.visit = function (node, callback) {
- if (!node) {
- return;
+ output.push(lines.join(''));
}
- this.stack.push(node);
- if (this.order === 'post') {
- this.children(node, callback);
- callback(node, this);
- } else {
- callback(node, this);
- this.children(node, callback);
+ break;
+ case 'PartialStatement':
+ {
+ output.push(compactJoin(['{{>', pathParams(ast), '}}']));
}
- this.stack.pop();
- };
- var visitors = {
- Program: function (walker, node, callback) {
- for (var i = 0; i < node.body.length; i++) {
- walker.visit(node.body[i], callback);
- }
- },
- ElementNode: function (walker, node, callback) {
- for (var i = 0; i < node.children.length; i++) {
- walker.visit(node.children[i], callback);
- }
- },
- BlockStatement: function (walker, node, callback) {
- walker.visit(node.program, callback);
- walker.visit(node.inverse, callback);
+ break;
+ case 'CommentStatement':
+ {
+ output.push(compactJoin(['<!--', ast.value, '-->']));
}
- };
- Walker.prototype.children = function (node, callback) {
- var visitor = visitors[node.type];
- if (visitor) {
- visitor(this, node, callback);
+ break;
+ case 'StringLiteral':
+ {
+ output.push('"' + ast.value + '"');
}
- };
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvd2Fsa2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGFBQUEsTUFBQSxHQUErQjtZQUFmLEtBQUsseURBQUMsU0FBUzs7QUFDN0IsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7S0FDakI7c0JBRWMsTUFBTTs7QUFFckIsVUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBUyxJQUFJLEVBQUUsUUFBUSxFQUFBO0FBQzlDLFlBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCxtQkFBTztTQUNSO0FBRUQsWUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdEIsWUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRTtBQUN6QixnQkFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUIsb0JBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEIsTUFBTTtBQUNMLG9CQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvQjtBQUVELFlBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDbEIsQ0FBQztBQUVGLFFBQUksUUFBUSxHQUFHO0FBQ2IsZUFBTyxFQUFFLFVBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUE7QUFDdEMsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxzQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7QUFFRCxtQkFBVyxFQUFFLFVBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUE7QUFDMUMsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxzQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7QUFFRCxzQkFBYyxFQUFFLFVBQVMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUE7QUFDN0Msa0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyQyxrQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3RDO0tBQ0YsQ0FBQztBQUVGLFVBQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFLFFBQVEsRUFBQTtBQUNqRCxZQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQUksT0FBTyxFQUFFO0FBQ1gsbUJBQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQy9CO0tBQ0YsQ0FBQyIsImZpbGUiOiJ3YWxrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBXYWxrZXIob3JkZXI9dW5kZWZpbmVkKSB7XG4gIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgdGhpcy5zdGFjayA9IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBXYWxrZXI7XG5cbldhbGtlci5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xuICBpZiAoIW5vZGUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG5cbiAgaWYgKHRoaXMub3JkZXIgPT09ICdwb3N0Jykge1xuICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgIGNhbGxiYWNrKG5vZGUsIHRoaXMpO1xuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG5vZGUsIHRoaXMpO1xuICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgdGhpcy5zdGFjay5wb3AoKTtcbn07XG5cbmxldCB2aXNpdG9ycyA9IHtcbiAgUHJvZ3JhbTogZnVuY3Rpb24od2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5ib2R5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrZXIudmlzaXQobm9kZS5ib2R5W2ldLCBjYWxsYmFjayk7XG4gICAgfVxuICB9LFxuXG4gIEVsZW1lbnROb2RlOiBmdW5jdGlvbih3YWxrZXIsIG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrZXIudmlzaXQobm9kZS5jaGlsZHJlbltpXSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24od2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgIHdhbGtlci52aXNpdChub2RlLnByb2dyYW0sIGNhbGxiYWNrKTtcbiAgICB3YWxrZXIudmlzaXQobm9kZS5pbnZlcnNlLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbldhbGtlci5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xuICBsZXQgdmlzaXRvciA9IHZpc2l0b3JzW25vZGUudHlwZV07XG4gIGlmICh2aXNpdG9yKSB7XG4gICAgdmlzaXRvcih0aGlzLCBub2RlLCBjYWxsYmFjayk7XG4gIH1cbn07XG4iXX0=
-enifed('glimmer-syntax/lib/types/visitor-keys', ['exports'], function (exports) {
- 'use strict';
-
- exports.default = {
- Program: ['body'],
- MustacheStatement: ['path', 'params', 'hash'],
- BlockStatement: ['path', 'params', 'hash', 'program', 'inverse'],
- ElementModifierStatement: ['path', 'params', 'hash'],
- PartialStatement: ['name', 'params', 'hash'],
- CommentStatement: [],
- ElementNode: ['attributes', 'modifiers', 'children'],
- AttrNode: ['value'],
- TextNode: [],
- ConcatStatement: ['parts'],
- SubExpression: ['path', 'params', 'hash'],
- PathExpression: [],
- StringLiteral: [],
- BooleanLiteral: [],
- NumberLiteral: [],
- NullLiteral: [],
- UndefinedLiteral: [],
- Hash: ['pairs'],
- HashPair: ['value']
- };
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90eXBlcy92aXNpdG9yLWtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQUFlO0FBQ2IsZUFBTyxFQUFtQixDQUFDLE1BQU0sQ0FBQztBQUVsQyx5QkFBaUIsRUFBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQ3BELHNCQUFjLEVBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBQzFFLGdDQUF3QixFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7QUFDcEQsd0JBQWdCLEVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztBQUNwRCx3QkFBZ0IsRUFBVSxFQUFFO0FBQzVCLG1CQUFXLEVBQWUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQztBQUNqRSxnQkFBUSxFQUFrQixDQUFDLE9BQU8sQ0FBQztBQUNuQyxnQkFBUSxFQUFrQixFQUFFO0FBRTVCLHVCQUFlLEVBQVcsQ0FBQyxPQUFPLENBQUM7QUFDbkMscUJBQWEsRUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0FBQ3BELHNCQUFjLEVBQVksRUFBRTtBQUU1QixxQkFBYSxFQUFhLEVBQUU7QUFDNUIsc0JBQWMsRUFBWSxFQUFFO0FBQzVCLHFCQUFhLEVBQWEsRUFBRTtBQUM1QixtQkFBVyxFQUFlLEVBQUU7QUFDNUIsd0JBQWdCLEVBQVUsRUFBRTtBQUU1QixZQUFJLEVBQXNCLENBQUMsT0FBTyxDQUFDO0FBQ25DLGdCQUFRLEVBQWtCLENBQUMsT0FBTyxDQUFDO0tBQ3BDIiwiZmlsZSI6InZpc2l0b3Ita2V5cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgUHJvZ3JhbTogICAgICAgICAgICAgICAgICBbJ2JvZHknXSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogICAgICAgIFsncGF0aCcsICdwYXJhbXMnLCAnaGFzaCddLFxuICBCbG9ja1N0YXRlbWVudDogICAgICAgICAgIFsncGF0aCcsICdwYXJhbXMnLCAnaGFzaCcsICdwcm9ncmFtJywgJ2ludmVyc2UnXSxcbiAgRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50OiBbJ3BhdGgnLCAncGFyYW1zJywgJ2hhc2gnXSxcbiAgUGFydGlhbFN0YXRlbWVudDogICAgICAgICBbJ25hbWUnLCAncGFyYW1zJywgJ2hhc2gnXSxcbiAgQ29tbWVudFN0YXRlbWVudDogICAgICAgICBbXSxcbiAgRWxlbWVudE5vZGU6ICAgICAgICAgICAgICBbJ2F0dHJpYnV0ZXMnLCAnbW9kaWZpZXJzJywgJ2NoaWxkcmVuJ10sXG4gIEF0dHJOb2RlOiAgICAgICAgICAgICAgICAgWyd2YWx1ZSddLFxuICBUZXh0Tm9kZTogICAgICAgICAgICAgICAgIFtdLFxuXG4gIENvbmNhdFN0YXRlbWVudDogICAgICAgICAgWydwYXJ0cyddLFxuICBTdWJFeHByZXNzaW9uOiAgICAgICAgICAgIFsncGF0aCcsICdwYXJhbXMnLCAnaGFzaCddLFxuICBQYXRoRXhwcmVzc2lvbjogICAgICAgICAgIFtdLFxuXG4gIFN0cmluZ0xpdGVyYWw6ICAgICAgICAgICAgW10sXG4gIEJvb2xlYW5MaXRlcmFsOiAgICAgICAgICAgW10sXG4gIE51bWJlckxpdGVyYWw6ICAgICAgICAgICAgW10sXG4gIE51bGxMaXRlcmFsOiAgICAgICAgICAgICAgW10sXG4gIFVuZGVmaW5lZExpdGVyYWw6ICAgICAgICAgW10sXG5cbiAgSGFzaDogICAgICAgICAgICAgICAgICAgICBbJ3BhaXJzJ10sXG4gIEhhc2hQYWlyOiAgICAgICAgICAgICAgICAgWyd2YWx1ZSddXG59O1xuIl19
-enifed('glimmer-syntax/lib/utils', ['exports'], function (exports) {
- // Regex to validate the identifier for block parameters.
- // Based on the ID validation regex in Handlebars.
- 'use strict';
-
- exports.parseElementBlockParams = parseElementBlockParams;
- exports.childrenFor = childrenFor;
- exports.appendChild = appendChild;
- var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/;
- // Checks the element's attributes to see if it uses block params.
- // If it does, registers the block params with the program and
- // removes the corresponding attributes from the element.
-
- function parseElementBlockParams(element) {
- var params = parseBlockParams(element);
- if (params) element.blockParams = params;
- }
-
- function parseBlockParams(element) {
- var l = element.attributes.length;
- var attrNames = [];
- for (var i = 0; i < l; i++) {
- attrNames.push(element.attributes[i].name);
+ break;
+ case 'NumberLiteral':
+ {
+ output.push(ast.value);
}
- var asIndex = attrNames.indexOf('as');
- if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
- // Some basic validation, since we're doing the parsing ourselves
- var paramsString = attrNames.slice(asIndex).join(' ');
- if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
- throw new Error('Invalid block parameters syntax: \'' + paramsString + '\'');
- }
- var params = [];
- for (var i = asIndex + 1; i < l; i++) {
- var param = attrNames[i].replace(/\|/g, '');
- if (param !== '') {
- if (ID_INVERSE_PATTERN.test(param)) {
- throw new Error('Invalid identifier for block parameters: \'' + param + '\' in \'' + paramsString + '\'');
- }
- params.push(param);
- }
- }
- if (params.length === 0) {
- throw new Error('Cannot use zero block parameters: \'' + paramsString + '\'');
- }
- element.attributes = element.attributes.slice(0, asIndex);
- return params;
+ break;
+ case 'UndefinedLiteral':
+ {
+ output.push('undefined');
}
- }
-
- function childrenFor(node) {
- if (node.type === 'Program') {
- return node.body;
+ break;
+ case 'NullLiteral':
+ {
+ output.push('null');
}
- if (node.type === 'ElementNode') {
- return node.children;
+ break;
+ case 'Hash':
+ {
+ output.push(ast.pairs.map(function (pair) {
+ return build(pair);
+ }).join(' '));
}
- }
-
- function appendChild(parent, node) {
- childrenFor(parent).push(node);
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLFFBQUksa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7Ozs7O0FBTXRELGFBQUEsdUJBQUEsQ0FBd0MsT0FBTyxFQUFBO0FBQzdDLFlBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLFlBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0tBQzFDOztBQUVELGFBQUEsZ0JBQUEsQ0FBMEIsT0FBTyxFQUFBO0FBQy9CLFlBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ2xDLFlBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUVuQixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLHFCQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUM7QUFFRCxZQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXRDLFlBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFOztBQUU3RSxnQkFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEQsZ0JBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDbEcsc0JBQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzlFO0FBRUQsZ0JBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixpQkFBSyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEMsb0JBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLG9CQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7QUFDaEIsd0JBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLDhCQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxHQUFHLEtBQUssR0FBRyxVQUFVLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO3FCQUMzRztBQUNELDBCQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNwQjthQUNGO0FBRUQsZ0JBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDdkIsc0JBQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQy9FO0FBRUQsbUJBQU8sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFELG1CQUFPLE1BQU0sQ0FBQztTQUNmO0tBQ0Y7O0FBRUQsYUFBQSxXQUFBLENBQTRCLElBQUksRUFBQTtBQUM5QixZQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzNCLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7QUFDRCxZQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQy9CLG1CQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7S0FDRjs7QUFFRCxhQUFBLFdBQUEsQ0FBNEIsTUFBTSxFQUFFLElBQUksRUFBQTtBQUN0QyxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFJlZ2V4IHRvIHZhbGlkYXRlIHRoZSBpZGVudGlmaWVyIGZvciBibG9jayBwYXJhbWV0ZXJzLlxuLy8gQmFzZWQgb24gdGhlIElEIHZhbGlkYXRpb24gcmVnZXggaW4gSGFuZGxlYmFycy5cblxubGV0IElEX0lOVkVSU0VfUEFUVEVSTiA9IC9bIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XS87XG5cbi8vIENoZWNrcyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMgdG8gc2VlIGlmIGl0IHVzZXMgYmxvY2sgcGFyYW1zLlxuLy8gSWYgaXQgZG9lcywgcmVnaXN0ZXJzIHRoZSBibG9jayBwYXJhbXMgd2l0aCB0aGUgcHJvZ3JhbSBhbmRcbi8vIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBmcm9tIHRoZSBlbGVtZW50LlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCkge1xuICBsZXQgcGFyYW1zID0gcGFyc2VCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgaWYgKHBhcmFtcykgZWxlbWVudC5ibG9ja1BhcmFtcyA9IHBhcmFtcztcbn1cblxuZnVuY3Rpb24gcGFyc2VCbG9ja1BhcmFtcyhlbGVtZW50KSB7XG4gIGxldCBsID0gZWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDtcbiAgbGV0IGF0dHJOYW1lcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgYXR0ck5hbWVzLnB1c2goZWxlbWVudC5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xuICB9XG5cbiAgbGV0IGFzSW5kZXggPSBhdHRyTmFtZXMuaW5kZXhPZignYXMnKTtcblxuICBpZiAoYXNJbmRleCAhPT0gLTEgJiYgbCA+IGFzSW5kZXggJiYgYXR0ck5hbWVzW2FzSW5kZXggKyAxXS5jaGFyQXQoMCkgPT09ICd8Jykge1xuICAgIC8vIFNvbWUgYmFzaWMgdmFsaWRhdGlvbiwgc2luY2Ugd2UncmUgZG9pbmcgdGhlIHBhcnNpbmcgb3Vyc2VsdmVzXG4gICAgbGV0IHBhcmFtc1N0cmluZyA9IGF0dHJOYW1lcy5zbGljZShhc0luZGV4KS5qb2luKCcgJyk7XG4gICAgaWYgKHBhcmFtc1N0cmluZy5jaGFyQXQocGFyYW1zU3RyaW5nLmxlbmd0aCAtIDEpICE9PSAnfCcgfHwgcGFyYW1zU3RyaW5nLm1hdGNoKC9cXHwvZykubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmxvY2sgcGFyYW1ldGVycyBzeW50YXg6IFxcJycgKyBwYXJhbXNTdHJpbmcgKyAnXFwnJyk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBhc0luZGV4ICsgMTsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHBhcmFtID0gYXR0ck5hbWVzW2ldLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG4gICAgICBpZiAocGFyYW0gIT09ICcnKSB7XG4gICAgICAgIGlmIChJRF9JTlZFUlNFX1BBVFRFUk4udGVzdChwYXJhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtICsgJ1xcJyBpbiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIHplcm8gYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICB9XG5cbiAgICBlbGVtZW50LmF0dHJpYnV0ZXMgPSBlbGVtZW50LmF0dHJpYnV0ZXMuc2xpY2UoMCwgYXNJbmRleCk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRyZW5Gb3Iobm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAnUHJvZ3JhbScpIHtcbiAgICByZXR1cm4gbm9kZS5ib2R5O1xuICB9XG4gIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGQocGFyZW50LCBub2RlKSB7XG4gIGNoaWxkcmVuRm9yKHBhcmVudCkucHVzaChub2RlKTtcbn1cbiJdfQ==
-enifed('glimmer-util/index', ['exports', 'glimmer-util/lib/namespaces', 'glimmer-util/lib/platform-utils', 'glimmer-util/lib/assert', 'glimmer-util/lib/logger', 'glimmer-util/lib/object-utils', 'glimmer-util/lib/guid', 'glimmer-util/lib/collections', 'glimmer-util/lib/list-utils'], function (exports, _glimmerUtilLibNamespaces, _glimmerUtilLibPlatformUtils, _glimmerUtilLibAssert, _glimmerUtilLibLogger, _glimmerUtilLibObjectUtils, _glimmerUtilLibGuid, _glimmerUtilLibCollections, _glimmerUtilLibListUtils) {
- 'use strict';
-
- exports.getAttrNamespace = _glimmerUtilLibNamespaces.getAttrNamespace;
- exports.Option = _glimmerUtilLibPlatformUtils.Option;
- exports.Maybe = _glimmerUtilLibPlatformUtils.Maybe;
- exports.Opaque = _glimmerUtilLibPlatformUtils.Opaque;
- exports.assert = _glimmerUtilLibAssert.default;
- exports.LOGGER = _glimmerUtilLibLogger.default;
- exports.Logger = _glimmerUtilLibLogger.Logger;
- exports.LogLevel = _glimmerUtilLibLogger.LogLevel;
- exports.assign = _glimmerUtilLibObjectUtils.assign;
- exports.ensureGuid = _glimmerUtilLibGuid.ensureGuid;
- exports.initializeGuid = _glimmerUtilLibGuid.initializeGuid;
- exports.HasGuid = _glimmerUtilLibGuid.HasGuid;
- exports.Stack = _glimmerUtilLibCollections.Stack;
- exports.Dict = _glimmerUtilLibCollections.Dict;
- exports.Set = _glimmerUtilLibCollections.Set;
- exports.DictSet = _glimmerUtilLibCollections.DictSet;
- exports.dict = _glimmerUtilLibCollections.dict;
- exports.EMPTY_SLICE = _glimmerUtilLibListUtils.EMPTY_SLICE;
- exports.LinkedList = _glimmerUtilLibListUtils.LinkedList;
- exports.LinkedListNode = _glimmerUtilLibListUtils.LinkedListNode;
- exports.ListNode = _glimmerUtilLibListUtils.ListNode;
- exports.CloneableListNode = _glimmerUtilLibListUtils.CloneableListNode;
- exports.ListSlice = _glimmerUtilLibListUtils.ListSlice;
- exports.Slice = _glimmerUtilLibListUtils.Slice;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7VUFJUyxnQkFBZ0IsNkJBQWhCLGdCQUFnQjtVQUNoQixNQUFNLGdDQUFOLE1BQU07VUFBRSxLQUFLLGdDQUFMLEtBQUs7VUFBRSxNQUFNLGdDQUFOLE1BQU07VUFDVixNQUFNLHlCQUFqQixPQUFPO1VBQ0ksTUFBTSx5QkFBakIsT0FBTztVQUFZLE1BQU0seUJBQU4sTUFBTTtVQUFFLFFBQVEseUJBQVIsUUFBUTtVQUVuQyxNQUFNLDhCQUFOLE1BQU07VUFDTixVQUFVLHVCQUFWLFVBQVU7VUFBRSxjQUFjLHVCQUFkLGNBQWM7VUFBRSxPQUFPLHVCQUFQLE9BQU87VUFFbkMsS0FBSyw4QkFBTCxLQUFLO1VBQUUsSUFBSSw4QkFBSixJQUFJO1VBQUUsR0FBRyw4QkFBSCxHQUFHO1VBQUUsT0FBTyw4QkFBUCxPQUFPO1VBQUUsSUFBSSw4QkFBSixJQUFJO1VBQy9CLFdBQVcsNEJBQVgsV0FBVztVQUFFLFVBQVUsNEJBQVYsVUFBVTtVQUFFLGNBQWMsNEJBQWQsY0FBYztVQUFFLFFBQVEsNEJBQVIsUUFBUTtVQUFFLGlCQUFpQiw0QkFBakIsaUJBQWlCO1VBQUUsU0FBUyw0QkFBVCxTQUFTO1VBQUUsS0FBSyw0QkFBTCxLQUFLIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXN0cm95YWJsZSB7XG4gIGRlc3Ryb3koKTtcbn1cblxuZXhwb3J0IHsgZ2V0QXR0ck5hbWVzcGFjZSB9IGZyb20gJy4vbGliL25hbWVzcGFjZXMnO1xuZXhwb3J0IHsgT3B0aW9uLCBNYXliZSwgT3BhcXVlIH0gZnJvbSAnLi9saWIvcGxhdGZvcm0tdXRpbHMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3NlcnQgfSBmcm9tICcuL2xpYi9hc3NlcnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMT0dHRVIsIExvZ2dlciwgTG9nTGV2ZWwgfSBmcm9tICcuL2xpYi9sb2dnZXInO1xuXG5leHBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL2xpYi9vYmplY3QtdXRpbHMnO1xuZXhwb3J0IHsgZW5zdXJlR3VpZCwgaW5pdGlhbGl6ZUd1aWQsIEhhc0d1aWQgfSBmcm9tICcuL2xpYi9ndWlkJztcblxuZXhwb3J0IHsgU3RhY2ssIERpY3QsIFNldCwgRGljdFNldCwgZGljdCB9IGZyb20gJy4vbGliL2NvbGxlY3Rpb25zJztcbmV4cG9ydCB7IEVNUFRZX1NMSUNFLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgTGlzdE5vZGUsIENsb25lYWJsZUxpc3ROb2RlLCBMaXN0U2xpY2UsIFNsaWNlIH0gZnJvbSAnLi9saWIvbGlzdC11dGlscyc7XG5cbmV4cG9ydCB0eXBlIEZJWE1FPFQsIHN0cmluZz4gPSBUO1xuIl19
-enifed("glimmer-util/lib/assert", ["exports"], function (exports) {
- // import Logger from './logger';
- // let alreadyWarned = false;
- "use strict";
-
- exports.debugAssert = debugAssert;
- exports.prodAssert = prodAssert;
-
- function debugAssert(test, msg) {
- // if (!alreadyWarned) {
- // alreadyWarned = true;
- // Logger.warn("Don't leave debug assertions on in public builds");
- // }
- if (!test) {
- throw new Error(msg || "assertion failure");
+ break;
+ case 'HashPair':
+ {
+ output.push(ast.key + '=' + build(ast.value));
}
+ break;
}
+ return output.join('');
+ }
- function prodAssert() {}
+ function compact(array) {
+ var newArray = [];
+ array.forEach(function (a) {
+ if (typeof a !== 'undefined' && a !== null && a !== '') {
+ newArray.push(a);
+ }
+ });
+ return newArray;
+ }
- exports.default = debugAssert;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvYXNzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsYUFBQSxXQUFBLENBQTRCLElBQUksRUFBRSxHQUFHLEVBQUE7Ozs7O0FBTW5DLFlBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCxrQkFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksbUJBQW1CLENBQUMsQ0FBQztTQUM3QztLQUNGOztBQUVELGFBQUEsVUFBQSxHQUFBLEVBQStCOztzQkFFaEIsV0FBVyIsImZpbGUiOiJhc3NlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgTG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuLy8gbGV0IGFscmVhZHlXYXJuZWQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnQXNzZXJ0KHRlc3QsIG1zZykge1xuICAvLyBpZiAoIWFscmVhZHlXYXJuZWQpIHtcbiAgLy8gICBhbHJlYWR5V2FybmVkID0gdHJ1ZTtcbiAgLy8gICBMb2dnZXIud2FybihcIkRvbid0IGxlYXZlIGRlYnVnIGFzc2VydGlvbnMgb24gaW4gcHVibGljIGJ1aWxkc1wiKTtcbiAgLy8gfVxuXG4gIGlmICghdGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgXCJhc3NlcnRpb24gZmFpbHVyZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZEFzc2VydCgpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGRlYnVnQXNzZXJ0O1xuIl19
-enifed('glimmer-util/lib/collections', ['exports', 'glimmer-util/lib/guid'], function (exports, _glimmerUtilLibGuid) {
- 'use strict';
-
- exports.dict = dict;
-
- var proto = Object.create(null, {
- // without this, we will always still end up with (new
- // EmptyObject()).constructor === Object
- constructor: {
- value: undefined,
- enumerable: false,
- writable: true
- }
+ function buildEach(asts) {
+ var output = [];
+ asts.forEach(function (node) {
+ output.push(build(node));
});
- function EmptyObject() {}
- EmptyObject.prototype = proto;
+ return output;
+ }
- function dict() {
- // let d = Object.create(null);
- // d.x = 1;
- // delete d.x;
- // return d;
- return new EmptyObject();
- }
+ function pathParams(ast) {
+ var name = build(ast.name);
+ var path = build(ast.path);
+ var params = buildEach(ast.params).join(' ');
+ var hash = build(ast.hash);
+ return compactJoin([name, path, params, hash], ' ');
+ }
- var DictSet = (function () {
- function DictSet() {
- this.dict = dict();
- }
+ function compactJoin(array, delimiter) {
+ return compact(array).join(delimiter || '');
+ }
- DictSet.prototype.add = function add(obj) {
- if (typeof obj === 'string') this.dict[obj] = obj;else this.dict[_glimmerUtilLibGuid.ensureGuid(obj)] = obj;
- return this;
- };
-
- DictSet.prototype.delete = function _delete(obj) {
- if (typeof obj === 'string') delete this.dict[obj];else if (obj._guid) delete this.dict[obj._guid];
- };
-
- DictSet.prototype.forEach = function forEach(callback) {
- var dict = this.dict;
-
- Object.keys(dict).forEach(function (key) {
- return callback(dict[key]);
- });
- };
-
- DictSet.prototype.toArray = function toArray() {
- return Object.keys(this.dict);
- };
-
- return DictSet;
- })();
-
- exports.DictSet = DictSet;
-
- var Stack = (function () {
- function Stack() {
- this.stack = [];
- this.current = null;
- }
-
- Stack.prototype.push = function push(item) {
- this.current = item;
- this.stack.push(item);
- };
-
- Stack.prototype.pop = function pop() {
- var item = this.stack.pop();
- var len = this.stack.length;
- this.current = len === 0 ? null : this.stack[len - 1];
- return item;
- };
-
- Stack.prototype.isEmpty = function isEmpty() {
- return this.stack.length === 0;
- };
-
- return Stack;
- })();
-
- exports.Stack = Stack;
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFZQSxRQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTs7O0FBRzlCLG1CQUFXLEVBQUU7QUFDWCxpQkFBSyxFQUFFLFNBQVM7QUFDaEIsc0JBQVUsRUFBRSxLQUFLO0FBQ2pCLG9CQUFRLEVBQUUsSUFBSTtTQUNmO0tBQ0YsQ0FBQyxDQUFDO0FBRUgsYUFBQSxXQUFBLEdBQUEsRUFBeUI7QUFDekIsZUFBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7O0FBRTlCLGFBQUEsSUFBQSxHQUFBOzs7OztBQUtFLGVBQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQztLQUMxQjs7UUFJRCxPQUFBO0FBR0UsaUJBSEYsT0FBQSxHQUdFO0FBQ0UsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFLLENBQUM7U0FDdkI7O0FBTEgsZUFBQSxXQU9FLEdBQUcsR0FBQSxhQUFDLEdBQU0sRUFBQTtBQUNSLGdCQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQTVDRCxVQUFVLENBNENPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzNDLG1CQUFPLElBQUksQ0FBQztTQUNiOztBQVhILGVBQUEsV0FhRSxNQUFNLEdBQUEsaUJBQUMsR0FBTSxFQUFBO0FBQ1gsZ0JBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLENBQUMsQ0FBQyxLQUNuRCxJQUFLLEdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFFLEdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRTs7QUFoQkgsZUFBQSxXQWtCRSxPQUFPLEdBQUEsaUJBQUMsUUFBcUIsRUFBQTtnQkFDckIsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUNWLGtCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7dUJBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUFBLENBQUMsQ0FBQztTQUN2RDs7QUFyQkgsZUFBQSxXQXVCRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjs7ZUF6QkgsT0FBQTs7Ozs7UUE0QkEsS0FBQTtBQUFBLGlCQUFBLEtBQUEsR0FBQTtBQUNVLGdCQUFBLENBQUEsS0FBSyxHQUFRLEVBQUUsQ0FBQztBQUNqQixnQkFBQSxDQUFBLE9BQU8sR0FBTSxJQUFJLENBQUM7U0FrQjFCOztBQXBCRCxhQUFBLFdBSUUsSUFBSSxHQUFBLGNBQUMsSUFBTyxFQUFBO0FBQ1YsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLGdCQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2Qjs7QUFQSCxhQUFBLFdBU0UsR0FBRyxHQUFBLGVBQUE7QUFDRCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM1QixnQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDNUIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFdEQsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBZkgsYUFBQSxXQWlCRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7U0FDaEM7O2VBbkJILEtBQUEiLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXNHdWlkLCBlbnN1cmVHdWlkIH0gZnJvbSAnLi9ndWlkJztcblxuZXhwb3J0IGludGVyZmFjZSBEaWN0PFQ+IHtcbiAgW2luZGV4OiBzdHJpbmddOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldDxUPiB7XG4gIGFkZCh2YWx1ZTogVCk6IFNldDxUPjtcbiAgZGVsZXRlKHZhbHVlOiBUKTtcbiAgZm9yRWFjaChjYWxsYmFjazogKFQpID0+IHZvaWQpO1xufVxuXG5sZXQgcHJvdG8gPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgLy8gd2l0aG91dCB0aGlzLCB3ZSB3aWxsIGFsd2F5cyBzdGlsbCBlbmQgdXAgd2l0aCAobmV3XG4gIC8vIEVtcHR5T2JqZWN0KCkpLmNvbnN0cnVjdG9yID09PSBPYmplY3RcbiAgY29uc3RydWN0b3I6IHtcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBFbXB0eU9iamVjdCgpIHt9XG5FbXB0eU9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpY3Q8VD4oKTogRGljdDxUPiB7XG4gIC8vIGxldCBkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZC54ID0gMTtcbiAgLy8gZGVsZXRlIGQueDtcbiAgLy8gcmV0dXJuIGQ7XG4gIHJldHVybiBuZXcgRW1wdHlPYmplY3QoKTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0TWVtYmVyID0gSGFzR3VpZCB8IHN0cmluZztcblxuZXhwb3J0IGNsYXNzIERpY3RTZXQ8VCBleHRlbmRzIFNldE1lbWJlcj4gaW1wbGVtZW50cyBTZXQ8VD4ge1xuICBwcml2YXRlIGRpY3Q6IERpY3Q8VD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kaWN0ID0gZGljdDxUPigpO1xuICB9XG5cbiAgYWRkKG9iajogVCk6IFNldDxUPiB7XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB0aGlzLmRpY3RbPGFueT5vYmpdID0gb2JqO1xuICAgIGVsc2UgdGhpcy5kaWN0W2Vuc3VyZUd1aWQoPGFueT5vYmopXSA9IG9iajtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlbGV0ZShvYmo6IFQpIHtcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIGRlbGV0ZSB0aGlzLmRpY3RbPGFueT5vYmpdO1xuICAgIGVsc2UgaWYgKChvYmogYXMgYW55KS5fZ3VpZCkgZGVsZXRlIHRoaXMuZGljdFsob2JqIGFzIGFueSkuX2d1aWRdO1xuICB9XG5cbiAgZm9yRWFjaChjYWxsYmFjazogKFQpID0+IHZvaWQpIHtcbiAgICBsZXQgeyBkaWN0IH0gPSB0aGlzO1xuICAgIE9iamVjdC5rZXlzKGRpY3QpLmZvckVhY2goa2V5ID0+IGNhbGxiYWNrKGRpY3Rba2V5XSkpO1xuICB9XG5cbiAgdG9BcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGljdCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrPFQ+IHtcbiAgcHJpdmF0ZSBzdGFjazogVFtdID0gW107XG4gIHB1YmxpYyBjdXJyZW50OiBUID0gbnVsbDtcblxuICBwdXNoKGl0ZW06IFQpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBpdGVtO1xuICAgIHRoaXMuc3RhY2sucHVzaChpdGVtKTtcbiAgfVxuXG4gIHBvcCgpOiBUIHtcbiAgICBsZXQgaXRlbSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgbGV0IGxlbiA9IHRoaXMuc3RhY2subGVuZ3RoO1xuICAgIHRoaXMuY3VycmVudCA9IGxlbiA9PT0gMCA/IG51bGwgOiB0aGlzLnN0YWNrW2xlbiAtIDFdO1xuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgfVxufVxuIl19
-enifed("glimmer-util/lib/guid", ["exports"], function (exports) {
- "use strict";
-
- exports.initializeGuid = initializeGuid;
- exports.ensureGuid = ensureGuid;
- var GUID = 0;
-
- function initializeGuid(object) {
- return object._guid = ++GUID;
+ function blockParams(block) {
+ var params = block.program.blockParams;
+ if (params.length) {
+ return ' as |' + params.join(',') + '|';
}
+ }
- function ensureGuid(object) {
- return object._guid || initializeGuid(object);
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvZ3VpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFFBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzs7QUFNYixhQUFBLGNBQUEsQ0FBK0IsTUFBZSxFQUFBO0FBQzVDLGVBQVEsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBRTtLQUNoQzs7QUFFRCxhQUFBLFVBQUEsQ0FBMkIsTUFBZSxFQUFBO0FBQ3hDLGVBQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0MiLCJmaWxlIjoiZ3VpZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBHVUlEID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBIYXNHdWlkIHtcbiAgX2d1aWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVHdWlkKG9iamVjdDogSGFzR3VpZCk6IG51bWJlciB7XG4gIHJldHVybiAob2JqZWN0Ll9ndWlkID0gKytHVUlEKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUd1aWQob2JqZWN0OiBIYXNHdWlkKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9iamVjdC5fZ3VpZCB8fCBpbml0aWFsaXplR3VpZChvYmplY3QpO1xufSJdfQ==
-enifed("glimmer-util/lib/list-utils", ["exports"], function (exports) {
- "use strict";
+ function openBlock(block) {
+ return ['{{#', pathParams(block), blockParams(block), '}}'].join('');
+ }
- var ListNode = function ListNode(value) {
- this.next = null;
- this.prev = null;
- this.value = value;
- };
-
- exports.ListNode = ListNode;
-
- var LinkedList = (function () {
- function LinkedList() {
- this.clear();
- }
-
- LinkedList.fromSlice = function fromSlice(slice) {
- var list = new LinkedList();
- slice.forEachNode(function (n) {
- return list.append(n.clone());
- });
- return list;
- };
-
- LinkedList.prototype.head = function head() {
- return this._head;
- };
-
- LinkedList.prototype.tail = function tail() {
- return this._tail;
- };
-
- LinkedList.prototype.clear = function clear() {
- this._head = this._tail = null;
- };
-
- LinkedList.prototype.isEmpty = function isEmpty() {
- return this._head === null;
- };
-
- LinkedList.prototype.toArray = function toArray() {
- var out = [];
- this.forEachNode(function (n) {
- return out.push(n);
- });
- return out;
- };
-
- LinkedList.prototype.splice = function splice(start, end, reference) {
- var before = undefined;
- if (reference === null) {
- before = this._tail;
- this._tail = end;
- } else {
- before = reference.prev;
- end.next = reference;
- reference.prev = end;
- }
- if (before) {
- before.next = start;
- start.prev = before;
- }
- };
-
- LinkedList.prototype.spliceList = function spliceList(list, reference) {
- if (list.isEmpty()) return;
- this.splice(list.head(), list.tail(), reference);
- };
-
- LinkedList.prototype.nextNode = function nextNode(node) {
- return node.next;
- };
-
- LinkedList.prototype.prevNode = function prevNode(node) {
- return node.prev;
- };
-
- LinkedList.prototype.forEachNode = function forEachNode(callback) {
- var node = this._head;
- while (node !== null) {
- callback(node);
- node = node.next;
- }
- };
-
- LinkedList.prototype.contains = function contains(needle) {
- var node = this._head;
- while (node !== null) {
- if (node === needle) return true;
- node = node.next;
- }
- return false;
- };
-
- LinkedList.prototype.insertBefore = function insertBefore(node) {
- var reference = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
- if (reference === null) return this.append(node);
- if (reference.prev) reference.prev.next = node;else this._head = node;
- node.prev = reference.prev;
- node.next = reference;
- reference.prev = node;
- return node;
- };
-
- LinkedList.prototype.append = function append(node) {
- var tail = this._tail;
- if (tail) {
- tail.next = node;
- node.prev = tail;
- node.next = null;
- } else {
- this._head = node;
- }
- return this._tail = node;
- };
-
- LinkedList.prototype.pop = function pop() {
- if (this._tail) return this.remove(this._tail);
- return null;
- };
-
- LinkedList.prototype.prepend = function prepend(node) {
- if (this._head) return this.insertBefore(node, this._head);
- return this._head = this._tail = node;
- };
-
- LinkedList.prototype.remove = function remove(node) {
- if (node.prev) node.prev.next = node.next;else this._head = node.next;
- if (node.next) node.next.prev = node.prev;else this._tail = node.prev;
- return node;
- };
-
- return LinkedList;
- })();
-
- exports.LinkedList = LinkedList;
-
- var LinkedListRemover = (function () {
- function LinkedListRemover(node) {
- this.node = node;
- }
-
- LinkedListRemover.prototype.destroy = function destroy() {
- var _node = this.node;
- var prev = _node.prev;
- var next = _node.next;
-
- prev.next = next;
- next.prev = prev;
- };
-
- return LinkedListRemover;
- })();
-
- var ListSlice = (function () {
- function ListSlice(head, tail) {
- this._head = head;
- this._tail = tail;
- }
-
- ListSlice.toList = function toList(slice) {
- var list = new LinkedList();
- slice.forEachNode(function (n) {
- return list.append(n.clone());
- });
- return list;
- };
-
- ListSlice.prototype.forEachNode = function forEachNode(callback) {
- var node = this._head;
- while (node !== null) {
- callback(node);
- node = this.nextNode(node);
- }
- };
-
- ListSlice.prototype.contains = function contains(needle) {
- var node = this._head;
- while (node !== null) {
- if (node === needle) return true;
- node = node.next;
- }
- return false;
- };
-
- ListSlice.prototype.head = function head() {
- return this._head;
- };
-
- ListSlice.prototype.tail = function tail() {
- return this._tail;
- };
-
- ListSlice.prototype.toArray = function toArray() {
- var out = [];
- this.forEachNode(function (n) {
- return out.push(n);
- });
- return out;
- };
-
- ListSlice.prototype.nextNode = function nextNode(node) {
- if (node === this._tail) return null;
- return node.next;
- };
-
- ListSlice.prototype.prevNode = function prevNode(node) {
- if (node === this._head) return null;
- return node.prev;
- };
-
- ListSlice.prototype.isEmpty = function isEmpty() {
- return false;
- };
-
- return ListSlice;
- })();
-
- exports.ListSlice = ListSlice;
- var EMPTY_SLICE = new ListSlice(null, null);
- exports.EMPTY_SLICE = EMPTY_SLICE;
+ function closeBlock(block) {
+ return ['{{/', build(block.path), '}}'].join('');
+ }
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbGlzdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFTQSxRQUFBLEdBS0UsU0FMRixRQUFBLENBS2MsS0FBUSxFQUFBO0FBSmIsWUFBQSxDQUFBLElBQUksR0FBZ0IsSUFBSSxDQUFDO0FBQ3pCLFlBQUEsQ0FBQSxJQUFJLEdBQWdCLElBQUksQ0FBQztBQUk5QixZQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7OztRQU9ILFVBQUE7QUFVRSxpQkFWRixVQUFBLEdBVUU7QUFDRSxnQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7O0FBWkgsa0JBQUEsQ0FDUyxTQUFTLEdBQUEsbUJBQThCLEtBQWUsRUFBQTtBQUMzRCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUssQ0FBQztBQUMvQixpQkFBSyxDQUFDLFdBQVcsQ0FBQyxVQUFBLENBQUM7dUJBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFBQSxDQUFDLENBQUM7QUFDL0MsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBTEgsa0JBQUEsV0FjRSxJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQWhCSCxrQkFBQSxXQWtCRSxJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQXBCSCxrQkFBQSxXQXNCRSxLQUFLLEdBQUEsaUJBQUE7QUFDSCxnQkFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQzs7QUF4Qkgsa0JBQUEsV0EwQkUsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7U0FDNUI7O0FBNUJILGtCQUFBLFdBOEJFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLGdCQUFJLEdBQUcsR0FB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LFNBQUE7Ozs7QUFnRU8sUUFBTSxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDIiwiZmlsZSI6Imxpc3QtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlIHtcbiAgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZExpc3ROb2RlIHtcbiAgbmV4dDogTGlua2VkTGlzdE5vZGU7XG4gIHByZXY6IExpbmtlZExpc3ROb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdE5vZGU8VD4gaW1wbGVtZW50cyBMaW5rZWRMaXN0Tm9kZSB7XG4gIHB1YmxpYyBuZXh0OiBMaXN0Tm9kZTxUPiA9IG51bGw7XG4gIHB1YmxpYyBwcmV2OiBMaXN0Tm9kZTxUPiA9IG51bGw7XG4gIHB1YmxpYyB2YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyB3ZSBhcmUgdW5hYmxlIHRvIGV4cHJlc3MgdGhlIGNvbnN0cmFpbnQgdGhhdCBUJ3MgLnByZXYgYW5kIC5uZXh0IGFyZVxuLy8gdGhlbXNlbHZlcyBULiBIb3dldmVyLCBpdCB3aWxsIGFsd2F5cyBiZSB0cnVlLCBzbyB0cnVzdCB1cy5cbnR5cGUgdHJ1c3QgPSBhbnk7XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgZXh0ZW5kcyBMaW5rZWRMaXN0Tm9kZT4gaW1wbGVtZW50cyBTbGljZTxUPiB7XG4gIHN0YXRpYyBmcm9tU2xpY2U8VSBleHRlbmRzIENsb25lYWJsZUxpc3ROb2RlPihzbGljZTogU2xpY2U8VT4pOiBMaW5rZWRMaXN0PFU+IHtcbiAgICBsZXQgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFU+KCk7XG4gICAgc2xpY2UuZm9yRWFjaE5vZGUobiA9PiBsaXN0LmFwcGVuZChuLmNsb25lKCkpKTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHByaXZhdGUgX2hlYWQ6IFQ7XG4gIHByaXZhdGUgX3RhaWw6IFQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgaGVhZCgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZDtcbiAgfVxuXG4gIHRhaWwoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3RhaWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLl9oZWFkID0gdGhpcy5fdGFpbCA9IG51bGw7XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oZWFkID09PSBudWxsO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGxldCBvdXQgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hOb2RlKG4gPT4gb3V0LnB1c2gobikpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBzcGxpY2Uoc3RhcnQ6IFQsIGVuZDogVCwgcmVmZXJlbmNlOiBUKSB7XG4gICAgbGV0IGJlZm9yZTogVDtcblxuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIGJlZm9yZSA9IHRoaXMuX3RhaWw7XG4gICAgICB0aGlzLl90YWlsID0gZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWZvcmUgPSA8VD5yZWZlcmVuY2UucHJldjtcbiAgICAgIGVuZC5uZXh0ID0gcmVmZXJlbmNlO1xuICAgICAgcmVmZXJlbmNlLnByZXYgPSBlbmQ7XG4gICAgfVxuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgYmVmb3JlLm5leHQgPSBzdGFydDtcbiAgICAgIHN0YXJ0LnByZXYgPSBiZWZvcmU7XG4gICAgfVxuICB9XG5cbiAgc3BsaWNlTGlzdChsaXN0OiBMaW5rZWRMaXN0PFQ+LCByZWZlcmVuY2U6IFQpIHtcbiAgICBpZiAobGlzdC5pc0VtcHR5KCkpIHJldHVybjtcbiAgICB0aGlzLnNwbGljZShsaXN0LmhlYWQoKSwgbGlzdC50YWlsKCksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBuZXh0Tm9kZShub2RlOiBUKTogVCB7XG4gICAgcmV0dXJuIDx0cnVzdD5ub2RlLm5leHQ7XG4gIH1cblxuICBwcmV2Tm9kZShub2RlOiBUKTogVCB7XG4gICAgcmV0dXJuIDx0cnVzdD5ub2RlLnByZXY7XG4gIH1cblxuICBmb3JFYWNoTm9kZShjYWxsYmFjazogKG5vZGU6IFQpID0+IHZvaWQpIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX2hlYWQ7XG5cbiAgICB3aGlsZSAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgY2FsbGJhY2soPHRydXN0Pm5vZGUpO1xuICAgICAgbm9kZSA9IDx0cnVzdD5ub2RlLm5leHQ7XG4gICAgfVxuICB9XG5cbiAgY29udGFpbnMobmVlZGxlOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLl9oZWFkO1xuXG4gICAgd2hpbGUgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIGlmIChub2RlID09PSBuZWVkbGUpIHJldHVybiB0cnVlO1xuICAgICAgbm9kZSA9IDx0cnVzdD5ub2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlKG5vZGU6IFQsIHJlZmVyZW5jZTogVCA9IG51bGwpOiBUIHtcbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSByZXR1cm4gdGhpcy5hcHBlbmQobm9kZSk7XG5cbiAgICBpZiAocmVmZXJlbmNlLnByZXYpIHJlZmVyZW5jZS5wcmV2Lm5leHQgPSBub2RlO1xuICAgIGVsc2UgdGhpcy5faGVhZCA9IG5vZGU7XG5cbiAgICBub2RlLnByZXYgPSByZWZlcmVuY2UucHJldjtcbiAgICBub2RlLm5leHQgPSByZWZlcmVuY2U7XG4gICAgcmVmZXJlbmNlLnByZXYgPSBub2RlO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmQobm9kZTogVCk6IFQge1xuICAgIGxldCB0YWlsID0gdGhpcy5fdGFpbDtcblxuICAgIGlmICh0YWlsKSB7XG4gICAgICB0YWlsLm5leHQgPSBub2RlO1xuICAgICAgbm9kZS5wcmV2ID0gdGFpbDtcbiAgICAgIG5vZGUubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWQgPSBub2RlO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5fdGFpbCA9IG5vZGUpO1xuICB9XG5cbiAgcG9wKCk6IFQge1xuICAgIGlmICh0aGlzLl90YWlsKSByZXR1cm4gdGhpcy5yZW1vdmUodGhpcy5fdGFpbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcmVwZW5kKG5vZGU6IFQpOiBUIHtcbiAgICBpZiAodGhpcy5faGVhZCkgcmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG5vZGUsIHRoaXMuX2hlYWQpO1xuICAgIHJldHVybiAodGhpcy5faGVhZCA9IHRoaXMuX3RhaWwgPSBub2RlKTtcbiAgfVxuXG4gIHJlbW92ZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUucHJldikgbm9kZS5wcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgZWxzZSB0aGlzLl9oZWFkID0gPHRydXN0Pm5vZGUubmV4dDtcblxuICAgIGlmIChub2RlLm5leHQpIG5vZGUubmV4dC5wcmV2ID0gbm9kZS5wcmV2O1xuICAgIGVsc2UgdGhpcy5fdGFpbCA9IDx0cnVzdD5ub2RlLnByZXY7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMaW5rZWRMaXN0UmVtb3ZlciBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlIHtcbiAgcHJpdmF0ZSBub2RlOiBMaW5rZWRMaXN0Tm9kZTtcblxuICBjb25zdHJ1Y3Rvcihub2RlOiBMaW5rZWRMaXN0Tm9kZSkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IHByZXYsIG5leHQgfSA9IHRoaXMubm9kZTtcbiAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICAgIG5leHQucHJldiA9IHByZXY7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbGljZTxUIGV4dGVuZHMgTGlua2VkTGlzdE5vZGU+IHtcbiAgaGVhZCgpOiBUO1xuICB0YWlsKCk6IFQ7XG4gIG5leHROb2RlKG5vZGU6IFQpOiBUO1xuICBwcmV2Tm9kZShub2RlOiBUKTogVDtcbiAgZm9yRWFjaE5vZGUoY2FsbGJhY2s6IChub2RlOiBUKSA9PiB2b2lkKTtcbiAgdG9BcnJheSgpOiBUW107XG4gIGlzRW1wdHkoKTogYm9vbGVhbjtcbiAgY29udGFpbnMobmVlZGxlOiBUKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG9uZWFibGVMaXN0Tm9kZSBleHRlbmRzIExpbmtlZExpc3ROb2RlIHtcbiAgY2xvbmUoKTogdGhpcztcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RTbGljZTxUIGV4dGVuZHMgTGlua2VkTGlzdE5vZGU+IGltcGxlbWVudHMgU2xpY2U8VD4ge1xuICBzdGF0aWMgdG9MaXN0PFUgZXh0ZW5kcyBDbG9uZWFibGVMaXN0Tm9kZT4oc2xpY2U6IFNsaWNlPFU+KTogTGlua2VkTGlzdDxVPiB7XG4gICAgbGV0IGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVPigpO1xuICAgIHNsaWNlLmZvckVhY2hOb2RlKG4gPT4gbGlzdC5hcHBlbmQobi5jbG9uZSgpKSk7XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICBwcml2YXRlIF9oZWFkOiBUO1xuICBwcml2YXRlIF90YWlsOiBUO1xuXG4gIGNvbnN0cnVjdG9yKGhlYWQ6IFQsIHRhaWw6IFQpIHtcbiAgICB0aGlzLl9oZWFkID0gaGVhZDtcbiAgICB0aGlzLl90YWlsID0gdGFpbDtcbiAgfVxuXG4gIGZvckVhY2hOb2RlKGNhbGxiYWNrOiAobm9kZTogVCkgPT4gdm9pZCkge1xuICAgIGxldCBub2RlID0gdGhpcy5faGVhZDtcblxuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgIG5vZGUgPSB0aGlzLm5leHROb2RlKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRhaW5zKG5lZWRsZTogVCk6IGJvb2xlYW4ge1xuICAgIGxldCBub2RlID0gdGhpcy5faGVhZDtcblxuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICBpZiAobm9kZSA9PT0gbmVlZGxlKSByZXR1cm4gdHJ1ZTtcbiAgICAgIG5vZGUgPSA8dHJ1c3Q+bm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhlYWQoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWQ7XG4gIH1cblxuICB0YWlsKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl90YWlsO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGxldCBvdXQgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hOb2RlKG4gPT4gb3V0LnB1c2gobikpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBuZXh0Tm9kZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMuX3RhaWwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8VD5ub2RlLm5leHQ7XG4gIH1cblxuICBwcmV2Tm9kZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMuX2hlYWQpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8VD5ub2RlLnByZXY7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRU1QVFlfU0xJQ0UgPSBuZXcgTGlzdFNsaWNlKG51bGwsIG51bGwpO1xuIl19
-enifed("glimmer-util/lib/logger", ["exports"], function (exports) {
- "use strict";
-
- var LogLevel;
- exports.LogLevel = LogLevel;
- (function (LogLevel) {
- LogLevel[LogLevel["Trace"] = 0] = "Trace";
- LogLevel[LogLevel["Debug"] = 1] = "Debug";
- LogLevel[LogLevel["Warn"] = 2] = "Warn";
- LogLevel[LogLevel["Error"] = 3] = "Error";
- })(LogLevel || (exports.LogLevel = LogLevel = {}));
-
- var NullConsole = (function () {
- function NullConsole() {}
-
- NullConsole.prototype.log = function log(message) {};
-
- NullConsole.prototype.warn = function warn(message) {};
-
- NullConsole.prototype.error = function error(message) {};
-
- NullConsole.prototype.trace = function trace() {};
-
- return NullConsole;
- })();
-
- var Logger = (function () {
- function Logger(_ref) {
- var console = _ref.console;
- var level = _ref.level;
-
- this.f = ALWAYS;
- this.force = ALWAYS;
- this.console = console;
- this.level = level;
- }
-
- Logger.prototype.skipped = function skipped(level) {
- return level < this.level;
- };
-
- Logger.prototype.trace = function trace(message) {
- var _ref2 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
-
- var _ref2$stackTrace = _ref2.stackTrace;
- var stackTrace = _ref2$stackTrace === undefined ? false : _ref2$stackTrace;
-
- if (this.skipped(LogLevel.Trace)) return;
- this.console.log(message);
- if (stackTrace) this.console.trace();
- };
-
- Logger.prototype.debug = function debug(message) {
- var _ref3 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
-
- var _ref3$stackTrace = _ref3.stackTrace;
- var stackTrace = _ref3$stackTrace === undefined ? false : _ref3$stackTrace;
-
- if (this.skipped(LogLevel.Debug)) return;
- this.console.log(message);
- if (stackTrace) this.console.trace();
- };
-
- Logger.prototype.warn = function warn(message) {
- var _ref4 = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
-
- var _ref4$stackTrace = _ref4.stackTrace;
- var stackTrace = _ref4$stackTrace === undefined ? false : _ref4$stackTrace;
-
- if (this.skipped(LogLevel.Warn)) return;
- this.console.warn(message);
- if (stackTrace) this.console.trace();
- };
-
- Logger.prototype.error = function error(message) {
- if (this.skipped(LogLevel.Error)) return;
- this.console.error(message);
- };
-
- return Logger;
- })();
-
- exports.Logger = Logger;
-
- var _console = typeof console === 'undefined' ? new NullConsole() : console;
- var ALWAYS = new Logger({ console: _console, level: LogLevel.Trace });
- var LOG_LEVEL = LogLevel.Warn;
- exports.default = new Logger({ console: _console, level: LOG_LEVEL });
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFFBQVksUUFLWCxDQUFBOztBQUxELEtBQUEsVUFBWSxRQUFRLEVBQUE7QUFDbEIsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0FBQ0wsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0FBQ0wsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsTUFBSSxDQUFBO0FBQ0osZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0tBQ04sQ0FBQSxDQUxXLFFBQVEsYUFBUixRQUtYLEdBTFcsUUFBUSxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBS25COztRQVNELFdBQUE7aUJBQUEsV0FBQTs7QUFBQSxtQkFBQSxXQUNFLEdBQUcsR0FBQSxhQUFDLE9BQWUsRUFBQSxFQUFJOztBQUR6QixtQkFBQSxXQUVFLElBQUksR0FBQSxjQUFDLE9BQWUsRUFBQSxFQUFJOztBQUYxQixtQkFBQSxXQUdFLEtBQUssR0FBQSxlQUFDLE9BQWUsRUFBQSxFQUFJOztBQUgzQixtQkFBQSxXQUlFLEtBQUssR0FBQSxpQkFBQSxFQUFLOztlQUpaLFdBQUE7OztRQU9BLE1BQUE7QUFNRSxpQkFORixNQUFBLENBTWMsSUFBeUQsRUFBQTtnQkFBdkQsT0FBTyxHQUFULElBQXlELENBQXZELE9BQU87Z0JBQUUsS0FBSyxHQUFoQixJQUF5RCxDQUE5QyxLQUFLOztBQUhyQixnQkFBQSxDQUFBLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDWCxnQkFBQSxDQUFBLEtBQUssR0FBRyxNQUFNLENBQUM7QUFHcEIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFUSCxjQUFBLFdBV1UsT0FBTyxHQUFBLGlCQUFDLEtBQWUsRUFBQTtBQUM3QixtQkFBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMzQjs7QUFiSCxjQUFBLFdBZUUsS0FBSyxHQUFBLGVBQUMsT0FBYSxFQUE2Qjs4RUFBRixFQUFFOzt5Q0FBekIsVUFBVTtnQkFBVixVQUFVLG9DQUFHLEtBQUs7O0FBQ3ZDLGdCQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFDekMsZ0JBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFCLGdCQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RDOztBQW5CSCxjQUFBLFdBcUJFLEtBQUssR0FBQSxlQUFDLE9BQVksRUFBNkI7OEVBQUYsRUFBRTs7eUNBQXpCLFVBQVU7Z0JBQVYsVUFBVSxvQ0FBRyxLQUFLOztBQUN0QyxnQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0FBQ3pDLGdCQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQixnQkFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0Qzs7QUF6QkgsY0FBQSxXQTJCRSxJQUFJLEdBQUEsY0FBQyxPQUFZLEVBQTZCOzhFQUFGLEVBQUU7O3lDQUF6QixVQUFVO2dCQUFWLFVBQVUsb0NBQUcsS0FBSzs7QUFDckMsZ0JBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztBQUN4QyxnQkFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0IsZ0JBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEM7O0FBL0JILGNBQUEsV0FpQ0UsS0FBSyxHQUFBLGVBQUMsT0FBb0IsRUFBQTtBQUN4QixnQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0FBQ3pDLGdCQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3Qjs7ZUFwQ0gsTUFBQTs7Ozs7QUF1Q0EsUUFBSSxRQUFRLEdBQUcsQUFBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEdBQUksSUFBSSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFFOUUsUUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO3NCQUVqQixJQUFJLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgVHJhY2UsXG4gIERlYnVnLFxuICBXYXJuLFxuICBFcnJvclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnNvbGUge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKTtcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpO1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpO1xuICB0cmFjZSgpO1xufVxuXG5jbGFzcyBOdWxsQ29uc29sZSB7XG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHt9XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nKSB7fVxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpIHt9XG4gIHRyYWNlKCkge31cbn1cblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgY29uc29sZTogQ29uc29sZTtcbiAgcHVibGljIGxldmVsOiBMb2dMZXZlbDtcbiAgcHVibGljIGYgPSBBTFdBWVM7XG4gIHB1YmxpYyBmb3JjZSA9IEFMV0FZUztcblxuICBjb25zdHJ1Y3Rvcih7IGNvbnNvbGUsIGxldmVsIH06IHsgY29uc29sZTogQ29uc29sZSwgbGV2ZWw6IExvZ0xldmVsIH0pIHtcbiAgICB0aGlzLmNvbnNvbGUgPSBjb25zb2xlO1xuICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcHBlZChsZXZlbDogTG9nTGV2ZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbGV2ZWwgPCB0aGlzLmxldmVsO1xuICB9XG5cbiAgdHJhY2UobWVzc2FnZT86IGFueSwgeyBzdGFja1RyYWNlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgaWYgKHRoaXMuc2tpcHBlZChMb2dMZXZlbC5UcmFjZSkpIHJldHVybjtcbiAgICB0aGlzLmNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIGlmIChzdGFja1RyYWNlKSB0aGlzLmNvbnNvbGUudHJhY2UoKTtcbiAgfVxuXG4gIGRlYnVnKG1lc3NhZ2U6IGFueSwgeyBzdGFja1RyYWNlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgaWYgKHRoaXMuc2tpcHBlZChMb2dMZXZlbC5EZWJ1ZykpIHJldHVybjtcbiAgICB0aGlzLmNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIGlmIChzdGFja1RyYWNlKSB0aGlzLmNvbnNvbGUudHJhY2UoKTtcbiAgfVxuXG4gIHdhcm4obWVzc2FnZTogYW55LCB7IHN0YWNrVHJhY2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBpZiAodGhpcy5za2lwcGVkKExvZ0xldmVsLldhcm4pKSByZXR1cm47XG4gICAgdGhpcy5jb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgaWYgKHN0YWNrVHJhY2UpIHRoaXMuY29uc29sZS50cmFjZSgpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogYW55IHwgYW55W10pIHtcbiAgICBpZiAodGhpcy5za2lwcGVkKExvZ0xldmVsLkVycm9yKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG5sZXQgX2NvbnNvbGUgPSAodHlwZW9mIGNvbnNvbGUgPT09ICd1bmRlZmluZWQnKSA/IG5ldyBOdWxsQ29uc29sZSgpIDogY29uc29sZTtcblxuY29uc3QgQUxXQVlTID0gbmV3IExvZ2dlcih7IGNvbnNvbGU6IF9jb25zb2xlLCBsZXZlbDogTG9nTGV2ZWwuVHJhY2UgfSk7XG5jb25zdCBMT0dfTEVWRUwgPSBMb2dMZXZlbC5XYXJuO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgTG9nZ2VyKHsgY29uc29sZTogX2NvbnNvbGUsIGxldmVsOiBMT0dfTEVWRUwgfSk7XG4iXX0=
-enifed('glimmer-util/lib/namespaces', ['exports'], function (exports) {
- // There is a small whitelist of namespaced attributes specially
- // enumerated in
- // https://www.w3.org/TR/html/syntax.html#attributes-0
- //
- // > When a foreign element has one of the namespaced attributes given by
- // > the local name and namespace of the first and second cells of a row
- // > from the following table, it must be written using the name given by
- // > the third cell from the same row.
- //
- // In all other cases, colons are interpreted as a regular character
- // with no special meaning:
- //
- // > No other namespaced attribute can be expressed in the HTML syntax.
- 'use strict';
-
- exports.getAttrNamespace = getAttrNamespace;
- var XLINK = 'http://www.w3.org/1999/xlink';
- var XML = 'http://www.w3.org/XML/1998/namespace';
- var XMLNS = 'http://www.w3.org/2000/xmlns/';
- var WHITELIST = {
- 'xlink:actuate': XLINK,
- 'xlink:arcrole': XLINK,
- 'xlink:href': XLINK,
- 'xlink:role': XLINK,
- 'xlink:show': XLINK,
- 'xlink:title': XLINK,
- 'xlink:type': XLINK,
- 'xml:base': XML,
- 'xml:lang': XML,
- 'xml:space': XML,
- 'xmlns': XMLNS,
- 'xmlns:xlink': XMLNS
- };
-
- function getAttrNamespace(attrName) {
- return WHITELIST[attrName] || null;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbmFtZXNwYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFFBQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzdDLFFBQU0sR0FBRyxHQUFHLHNDQUFzQyxDQUFDO0FBQ25ELFFBQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDO0FBRTlDLFFBQU0sU0FBUyxHQUFHO0FBQ2hCLHVCQUFlLEVBQUUsS0FBSztBQUN0Qix1QkFBZSxFQUFFLEtBQUs7QUFDdEIsb0JBQVksRUFBRSxLQUFLO0FBQ25CLG9CQUFZLEVBQUUsS0FBSztBQUNuQixvQkFBWSxFQUFFLEtBQUs7QUFDbkIscUJBQWEsRUFBRSxLQUFLO0FBQ3BCLG9CQUFZLEVBQUUsS0FBSztBQUNuQixrQkFBVSxFQUFFLEdBQUc7QUFDZixrQkFBVSxFQUFFLEdBQUc7QUFDZixtQkFBVyxFQUFFLEdBQUc7QUFDaEIsZUFBTyxFQUFFLEtBQUs7QUFDZCxxQkFBYSxFQUFFLEtBQUs7S0FDckIsQ0FBQzs7QUFFRixhQUFBLGdCQUFBLENBQWlDLFFBQVEsRUFBQTtBQUN2QyxlQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUM7S0FDcEMiLCJmaWxlIjoibmFtZXNwYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZXJlIGlzIGEgc21hbGwgd2hpdGVsaXN0IG9mIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBzcGVjaWFsbHlcbi8vIGVudW1lcmF0ZWQgaW5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMFxuLy9cbi8vID4gV2hlbiBhIGZvcmVpZ24gZWxlbWVudCBoYXMgb25lIG9mIHRoZSBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgZ2l2ZW4gYnlcbi8vID4gdGhlIGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiB0aGUgZmlyc3QgYW5kIHNlY29uZCBjZWxscyBvZiBhIHJvd1xuLy8gPiBmcm9tIHRoZSBmb2xsb3dpbmcgdGFibGUsIGl0IG11c3QgYmUgd3JpdHRlbiB1c2luZyB0aGUgbmFtZSBnaXZlbiBieVxuLy8gPiB0aGUgdGhpcmQgY2VsbCBmcm9tIHRoZSBzYW1lIHJvdy5cbi8vXG4vLyBJbiBhbGwgb3RoZXIgY2FzZXMsIGNvbG9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSByZWd1bGFyIGNoYXJhY3RlclxuLy8gd2l0aCBubyBzcGVjaWFsIG1lYW5pbmc6XG4vL1xuLy8gPiBObyBvdGhlciBuYW1lc3BhY2VkIGF0dHJpYnV0ZSBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBIVE1MIHN5bnRheC5cblxuY29uc3QgWExJTksgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5jb25zdCBYTUwgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcbmNvbnN0IFhNTE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJztcblxuY29uc3QgV0hJVEVMSVNUID0ge1xuICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LLFxuICAneGxpbms6YXJjcm9sZSc6IFhMSU5LLFxuICAneGxpbms6aHJlZic6IFhMSU5LLFxuICAneGxpbms6cm9sZSc6IFhMSU5LLFxuICAneGxpbms6c2hvdyc6IFhMSU5LLFxuICAneGxpbms6dGl0bGUnOiBYTElOSyxcbiAgJ3hsaW5rOnR5cGUnOiBYTElOSyxcbiAgJ3htbDpiYXNlJzogWE1MLFxuICAneG1sOmxhbmcnOiBYTUwsXG4gICd4bWw6c3BhY2UnOiBYTUwsXG4gICd4bWxucyc6IFhNTE5TLFxuICAneG1sbnM6eGxpbmsnOiBYTUxOU1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dHJOYW1lc3BhY2UoYXR0ck5hbWUpIHtcbiAgcmV0dXJuIFdISVRFTElTVFthdHRyTmFtZV0gfHwgbnVsbDtcbn0iXX0=
-enifed('glimmer-util/lib/object-utils', ['exports'], function (exports) {
- 'use strict';
-
- exports.assign = assign;
- var objKeys = Object.keys;
-
- function assign(obj) {
- for (var i = 1; i < arguments.length; i++) {
- var assignment = arguments[i];
- if (assignment === null || typeof assignment !== 'object') continue;
- var keys = objKeys(assignment);
- for (var j = 0; j < keys.length; j++) {
- var key = keys[j];
- obj[key] = assignment[key];
- }
- }
- return obj;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7UUFBYyxPQUFPLEdBQUssTUFBTSxDQUF4QixJQUFJOztBQVNaLGFBQUEsTUFBQSxDQUF1QixHQUFHLEVBQUE7QUFDeEIsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekMsZ0JBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixnQkFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxTQUFTO0FBQ3BFLGdCQUFJLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0IsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLG9CQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsbUJBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUI7U0FDRjtBQUNELGVBQU8sR0FBRyxDQUFDO0tBQ1oiLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBrZXlzOiBvYmpLZXlzIH0gPSBPYmplY3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ248VCwgVT4ob2JqOiBULCBhc3NpZ25tZW50czogVSk6IFQgJiBVO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbjxULCBVLCBWPihvYmo6IFQsIGE6IFUsIGI6IFYpOiBUICYgVSAmIFY7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFYsIFc+KG9iajogVCwgYTogVSwgYjogViwgYzogVyk6IFQgJiBVICYgViAmIFc7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFYsIFcsIFg+KG9iajogVCwgYTogVSwgYjogViwgYzogVywgZDogWCk6IFQgJiBVICYgViAmIFcgJiBYO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbjxULCBVLCBWLCBXLCBYLCBZPihvYmo6IFQsIGE6IFUsIGI6IFYsIGM6IFcsIGQ6IFgsIGU6IFkpOiBUICYgVSAmIFYgJiBXICYgWCAmIFk7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFYsIFcsIFgsIFksIFo+KG9iajogVCwgYTogVSwgYjogViwgYzogVywgZDogWCwgZTogWSwgZjogWik6IFQgJiBVICYgViAmIFcgJiBYICYgWSAmIFo7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKHRhcmdldDogYW55LCAuLi5hcmdzOiBhbnlbXSk6IGFueTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGFzc2lnbm1lbnQgPSBhcmd1bWVudHNbaV07XG4gICAgaWYgKGFzc2lnbm1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGFzc2lnbm1lbnQgIT09ICdvYmplY3QnKSBjb250aW51ZTtcbiAgICBsZXQga2V5cyA9IG9iaktleXMoYXNzaWdubWVudCk7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQga2V5ID0ga2V5c1tqXTtcbiAgICAgIG9ialtrZXldID0gYXNzaWdubWVudFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxuIl19
-enifed("glimmer-util/lib/platform-utils", ["exports"], function (exports) {
- "use strict";
-
- exports.unwrap = unwrap;
-
- function unwrap(val) {
- if (val === null || val === undefined) throw new Error("Expected value to be present");
- return val;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcGxhdGZvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxhQUFBLE1BQUEsQ0FBMEIsR0FBYSxFQUFBO0FBQ3JDLFlBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLE1BQU0sSUFBSSxLQUFLLGdDQUFnQyxDQUFDO0FBQ3ZGLGVBQU8sR0FBRyxDQUFDO0tBQ1oiLCJmaWxlIjoicGxhdGZvcm0tdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBPcGFxdWUgPSB7fSB8IHZvaWQ7XG5leHBvcnQgdHlwZSBPcHRpb248VD4gPSBUIHwgbnVsbDsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuZXhwb3J0IHR5cGUgTWF5YmU8VD4gPSBPcHRpb248VD4gfCB1bmRlZmluZWQ7IC8vIHRzbGludDpkaXNhYmxlLWxpbmVcblxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcDxUPih2YWw6IE1heWJlPFQ+KTogVCB7XG4gIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdmFsdWUgdG8gYmUgcHJlc2VudGApO1xuICByZXR1cm4gdmFsO1xufVxuIl19
-enifed("glimmer-util/lib/quoting", ["exports"], function (exports) {
- "use strict";
-
- exports.hash = hash;
- exports.repeat = repeat;
- function escapeString(str) {
- str = str.replace(/\\/g, "\\\\");
- str = str.replace(/"/g, '\\"');
- str = str.replace(/\n/g, "\\n");
- return str;
- }
- exports.escapeString = escapeString;
-
- function string(str) {
- return '"' + escapeString(str) + '"';
- }
- exports.string = string;
-
- function array(a) {
- return "[" + a + "]";
- }
- exports.array = array;
-
- function hash(pairs) {
- return "{" + pairs.join(", ") + "}";
- }
-
- function repeat(chars, times) {
- var str = "";
- while (times--) {
- str += chars;
- }
- return str;
- }
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcXVvdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGFBQUEsWUFBQSxDQUFzQixHQUFHLEVBQUE7QUFDdkIsV0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLFdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixXQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEMsZUFBTyxHQUFHLENBQUM7S0FDWjtZQUVRLFlBQVksR0FBWixZQUFZOztBQUVyQixhQUFBLE1BQUEsQ0FBZ0IsR0FBRyxFQUFBO0FBQ2pCLGVBQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDdEM7WUFFUSxNQUFNLEdBQU4sTUFBTTs7QUFFZixhQUFBLEtBQUEsQ0FBZSxDQUFDLEVBQUE7QUFDZCxlQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ3RCO1lBRVEsS0FBSyxHQUFMLEtBQUs7O0FBRWQsYUFBQSxJQUFBLENBQXFCLEtBQUssRUFBQTtBQUN4QixlQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyQzs7QUFFRCxhQUFBLE1BQUEsQ0FBdUIsS0FBSyxFQUFFLEtBQUssRUFBQTtBQUNqQyxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDYixlQUFPLEtBQUssRUFBRSxFQUFFO0FBQ2QsZUFBRyxJQUFJLEtBQUssQ0FBQztTQUNkO0FBQ0QsZUFBTyxHQUFHLENBQUM7S0FDWiIsImZpbGUiOiJxdW90aW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cikge1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIik7XG4gIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCB7IGVzY2FwZVN0cmluZyB9O1xuXG5mdW5jdGlvbiBzdHJpbmcoc3RyKSB7XG4gIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cikgKyAnXCInO1xufVxuXG5leHBvcnQgeyBzdHJpbmcgfTtcblxuZnVuY3Rpb24gYXJyYXkoYSkge1xuICByZXR1cm4gXCJbXCIgKyBhICsgXCJdXCI7XG59XG5cbmV4cG9ydCB7IGFycmF5IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoKHBhaXJzKSB7XG4gIHJldHVybiBcIntcIiArIHBhaXJzLmpvaW4oXCIsIFwiKSArIFwifVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwZWF0KGNoYXJzLCB0aW1lcykge1xuICBsZXQgc3RyID0gXCJcIjtcbiAgd2hpbGUgKHRpbWVzLS0pIHtcbiAgICBzdHIgKz0gY2hhcnM7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cbiJdfQ==
-enifed('glimmer-wire-format/index', ['exports'], function (exports) {
- 'use strict';
-
- function is(variant) {
- return function (value) {
- return value[0] === variant;
- };
- }
- var Expressions;
- exports.Expressions = Expressions;
- (function (Expressions) {
- Expressions.isUnknown = is('unknown');
- Expressions.isArg = is('arg');
- Expressions.isGet = is('get');
- Expressions.isConcat = is('concat');
- Expressions.isHelper = is('helper');
- Expressions.isHasBlock = is('has-block');
- Expressions.isHasBlockParams = is('has-block-params');
- Expressions.isUndefined = is('undefined');
- function isPrimitiveValue(value) {
- if (value === null) {
- return true;
- }
- return typeof value !== 'object';
- }
- Expressions.isPrimitiveValue = isPrimitiveValue;
- })(Expressions || (exports.Expressions = Expressions = {}));
- var Statements;
- exports.Statements = Statements;
- (function (Statements) {
- Statements.isText = is('text');
- Statements.isAppend = is('append');
- Statements.isComment = is('comment');
- Statements.isModifier = is('modifier');
- Statements.isBlock = is('block');
- Statements.isOpenElement = is('open-element');
- Statements.isFlushElement = is('flush-element');
- Statements.isCloseElement = is('close-element');
- Statements.isStaticAttr = is('static-attr');
- Statements.isDynamicAttr = is('dynamic-attr');
- Statements.isYield = is('yield');
- Statements.isPartial = is('partial');
- Statements.isDynamicArg = is('dynamic-arg');
- Statements.isStaticArg = is('static-arg');
- Statements.isTrustingAttr = is('trusting-attr');
- })(Statements || (exports.Statements = Statements = {}));
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItd2lyZS1mb3JtYXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLGFBQUEsRUFBQSxDQUE2QixPQUFlLEVBQUE7QUFDMUMsZUFBTyxVQUFTLEtBQVksRUFBQTtBQUMxQixtQkFBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO1NBQzdCLENBQUM7S0FDSDtBQVVELFFBQWlCLFdBQVcsQ0FvRDNCOztBQXBERCxLQUFBLFVBQWlCLFdBQVcsRUFBQztBQXFDZCxtQkFBQSxDQUFBLFNBQVMsR0FBVSxFQUFFLENBQVUsU0FBUyxDQUFDLENBQUM7QUFDMUMsbUJBQUEsQ0FBQSxLQUFLLEdBQWMsRUFBRSxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLG1CQUFBLENBQUEsS0FBSyxHQUFjLEVBQUUsQ0FBTSxLQUFLLENBQUMsQ0FBQztBQUNsQyxtQkFBQSxDQUFBLFFBQVEsR0FBVyxFQUFFLENBQVMsUUFBUSxDQUFDLENBQUM7QUFDeEMsbUJBQUEsQ0FBQSxRQUFRLEdBQVcsRUFBRSxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLG1CQUFBLENBQUEsVUFBVSxHQUFTLEVBQUUsQ0FBVyxXQUFXLENBQUMsQ0FBQztBQUM3QyxtQkFBQSxDQUFBLGdCQUFnQixHQUFHLEVBQUUsQ0FBaUIsa0JBQWtCLENBQUMsQ0FBQztBQUMxRCxtQkFBQSxDQUFBLFdBQVcsR0FBUSxFQUFFLENBQVksV0FBVyxDQUFDLENBQUM7QUFFM0QsaUJBQUEsZ0JBQUEsQ0FBaUMsS0FBVSxFQUFBO0FBQ3pDLGdCQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDbEIsdUJBQU8sSUFBSSxDQUFDO2FBQ2I7QUFDRCxtQkFBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7U0FDbEM7QUFMZSxtQkFBQSxDQUFBLGdCQUFnQixHQUFBLGdCQUsvQixDQUFBO0tBQ0YsQ0FBQSxDQXBEZ0IsV0FBVyxhQUFYLFdBQVcsR0FBWCxXQUFXLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FvRDNCO0FBSUQsUUFBaUIsVUFBVSxDQXVEMUI7O0FBdkRELEtBQUEsVUFBaUIsVUFBVSxFQUFDO0FBc0JiLGtCQUFBLENBQUEsTUFBTSxHQUFXLEVBQUUsQ0FBTyxNQUFNLENBQUMsQ0FBQztBQUNsQyxrQkFBQSxDQUFBLFFBQVEsR0FBUyxFQUFFLENBQVMsUUFBUSxDQUFDLENBQUM7QUFDdEMsa0JBQUEsQ0FBQSxTQUFTLEdBQVEsRUFBRSxDQUFVLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLGtCQUFBLENBQUEsVUFBVSxHQUFPLEVBQUUsQ0FBVyxVQUFVLENBQUMsQ0FBQztBQUMxQyxrQkFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQVEsT0FBTyxDQUFDLENBQUM7QUFDcEMsa0JBQUEsQ0FBQSxhQUFhLEdBQUksRUFBRSxDQUFjLGNBQWMsQ0FBQyxDQUFDO0FBQ2pELGtCQUFBLENBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBZSxlQUFlLENBQUMsQ0FBQztBQUNuRCxrQkFBQSxDQUFBLGNBQWMsR0FBRyxFQUFFLENBQWUsZUFBZSxDQUFDLENBQUM7QUFDbkQsa0JBQUEsQ0FBQSxZQUFZLEdBQUssRUFBRSxDQUFhLGFBQWEsQ0FBQyxDQUFDO0FBQy9DLGtCQUFBLENBQUEsYUFBYSxHQUFJLEVBQUUsQ0FBYyxjQUFjLENBQUMsQ0FBQztBQUNqRCxrQkFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQVEsT0FBTyxDQUFDLENBQUM7QUFDcEMsa0JBQUEsQ0FBQSxTQUFTLEdBQVEsRUFBRSxDQUFVLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLGtCQUFBLENBQUEsWUFBWSxHQUFLLEVBQUUsQ0FBYSxhQUFhLENBQUMsQ0FBQztBQUMvQyxrQkFBQSxDQUFBLFdBQVcsR0FBTSxFQUFFLENBQVksWUFBWSxDQUFDLENBQUM7QUFDN0Msa0JBQUEsQ0FBQSxjQUFjLEdBQUcsRUFBRSxDQUFlLGVBQWUsQ0FBQyxDQUFDO0tBbUJqRSxDQUFBLENBdkRnQixVQUFVLGFBQVYsVUFBVSxHQUFWLFVBQVUsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQXVEMUIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxudHlwZSBKc29uVmFsdWUgPVxuICAgIHN0cmluZ1xuICB8IG51bWJlclxuICB8IGJvb2xlYW5cbiAgfCBKc29uT2JqZWN0XG4gIHwgSnNvbkFycmF5XG4gIDtcblxuaW50ZXJmYWNlIEpzb25PYmplY3QgZXh0ZW5kcyBEaWN0PEpzb25WYWx1ZT4ge31cbmludGVyZmFjZSBKc29uQXJyYXkgZXh0ZW5kcyBBcnJheTxKc29uVmFsdWU+IHt9XG5cbi8vIFRoaXMgZW50aXJlIGZpbGUgaXMgc2VyaWFsaXplZCB0byBkaXNrLCBzbyBhbGwgc3RyaW5nc1xuLy8gZW5kIHVwIGJlaW5nIGludGVybmVkLlxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVGVtcGxhdGVSZWZlcmVuY2UgPSBudW1iZXI7XG5leHBvcnQgdHlwZSBZaWVsZFRvID0gc3RyO1xuXG5mdW5jdGlvbiBpczxUIGV4dGVuZHMgYW55W10+KHZhcmlhbnQ6IHN0cmluZyk6ICh2YWx1ZTogYW55W10pID0+IHZhbHVlIGlzIFQge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWU6IGFueVtdKTogdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIHZhbHVlWzBdID09PSB2YXJpYW50O1xuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvcmUge1xuICBleHBvcnQgdHlwZSBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMuRXhwcmVzc2lvbjtcblxuICBleHBvcnQgdHlwZSBQYXRoICAgICAgICAgID0gc3RyW107XG4gIGV4cG9ydCB0eXBlIFBhcmFtcyAgICAgICAgPSBFeHByZXNzaW9uW107XG4gIGV4cG9ydCB0eXBlIEhhc2ggICAgICAgICAgPSBbc3RyW10sIEV4cHJlc3Npb25bXV07XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRXhwcmVzc2lvbnMge1xuICBleHBvcnQgdHlwZSBQYXRoID0gQ29yZS5QYXRoO1xuICBleHBvcnQgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgZXhwb3J0IHR5cGUgSGFzaCA9IENvcmUuSGFzaDtcblxuICBleHBvcnQgdHlwZSBVbmtub3duICAgICAgICA9IFsndW5rbm93bicsIFBhdGhdO1xuICBleHBvcnQgdHlwZSBBcmcgICAgICAgICAgICA9IFsnYXJnJywgUGF0aF07XG4gIGV4cG9ydCB0eXBlIEdldCAgICAgICAgICAgID0gWydnZXQnLCBQYXRoXTtcbiAgZXhwb3J0IHR5cGUgVmFsdWUgICAgICAgICAgPSBzdHIgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbDsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICBleHBvcnQgdHlwZSBIYXNCbG9jayAgICAgICA9IFsnaGFzLWJsb2NrJywgc3RyXTtcbiAgZXhwb3J0IHR5cGUgSGFzQmxvY2tQYXJhbXMgPSBbJ2hhcy1ibG9jay1wYXJhbXMnLCBzdHJdO1xuICBleHBvcnQgdHlwZSBVbmRlZmluZWQgICAgICA9IFsndW5kZWZpbmVkJ107XG5cbiAgZXhwb3J0IHR5cGUgRXhwcmVzc2lvbiA9XG4gICAgICBVbmtub3duXG4gICAgfCBBcmdcbiAgICB8IEdldFxuICAgIHwgQ29uY2F0XG4gICAgfCBIYXNCbG9ja1xuICAgIHwgSGFzQmxvY2tQYXJhbXNcbiAgICB8IEhlbHBlclxuICAgIHwgVW5kZWZpbmVkXG4gICAgfCBWYWx1ZVxuICAgIDtcblxuICBleHBvcnQgaW50ZXJmYWNlIENvbmNhdCBleHRlbmRzIEFycmF5PGFueT4ge1xuICAgIFswXTogJ2NvbmNhdCc7XG4gICAgWzFdOiBQYXJhbXM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEhlbHBlciBleHRlbmRzIEFycmF5PGFueT4ge1xuICAgIFswXTogJ2hlbHBlcic7XG4gICAgWzFdOiBQYXRoO1xuICAgIFsyXTogUGFyYW1zO1xuICAgIFszXTogSGFzaDtcbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBpc1Vua25vd24gICAgICAgID0gaXM8VW5rbm93bj4oJ3Vua25vd24nKTtcbiAgZXhwb3J0IGNvbnN0IGlzQXJnICAgICAgICAgICAgPSBpczxBcmc+KCdhcmcnKTtcbiAgZXhwb3J0IGNvbnN0IGlzR2V0ICAgICAgICAgICAgPSBpczxHZXQ+KCdnZXQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzQ29uY2F0ICAgICAgICAgPSBpczxDb25jYXQ+KCdjb25jYXQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzSGVscGVyICAgICAgICAgPSBpczxIZWxwZXI+KCdoZWxwZXInKTtcbiAgZXhwb3J0IGNvbnN0IGlzSGFzQmxvY2sgICAgICAgPSBpczxIYXNCbG9jaz4oJ2hhcy1ibG9jaycpO1xuICBleHBvcnQgY29uc3QgaXNIYXNCbG9ja1BhcmFtcyA9IGlzPEhhc0Jsb2NrUGFyYW1zPignaGFzLWJsb2NrLXBhcmFtcycpO1xuICBleHBvcnQgY29uc3QgaXNVbmRlZmluZWQgICAgICA9IGlzPFVuZGVmaW5lZD4oJ3VuZGVmaW5lZCcpO1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZVZhbHVlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBWYWx1ZSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCc7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXhwcmVzc2lvbiA9IEV4cHJlc3Npb25zLkV4cHJlc3Npb247XG5cbmV4cG9ydCBuYW1lc3BhY2UgU3RhdGVtZW50cyB7XG4gIGV4cG9ydCB0eXBlIEV4cHJlc3Npb24gPSBFeHByZXNzaW9ucy5FeHByZXNzaW9uO1xuICBleHBvcnQgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgZXhwb3J0IHR5cGUgSGFzaCA9IENvcmUuSGFzaDtcbiAgZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcblxuICBleHBvcnQgdHlwZSBUZXh0ICAgICAgICAgID0gWyd0ZXh0Jywgc3RyXTtcbiAgZXhwb3J0IHR5cGUgQXBwZW5kICAgICAgICA9IFsnYXBwZW5kJywgRXhwcmVzc2lvbiwgYm9vbGVhbl07XG4gIGV4cG9ydCB0eXBlIENvbW1lbnQgICAgICAgPSBbJ2NvbW1lbnQnLCBzdHJdO1xuICBleHBvcnQgdHlwZSBNb2RpZmllciAgICAgID0gWydtb2RpZmllcicsIFBhdGgsIFBhcmFtcywgSGFzaF07XG4gIGV4cG9ydCB0eXBlIEJsb2NrICAgICAgICAgPSBbJ2Jsb2NrJywgUGF0aCwgUGFyYW1zLCBIYXNoLCBUZW1wbGF0ZVJlZmVyZW5jZSwgVGVtcGxhdGVSZWZlcmVuY2VdO1xuICBleHBvcnQgdHlwZSBPcGVuRWxlbWVudCAgID0gWydvcGVuLWVsZW1lbnQnLCBzdHIsIHN0cltdXTtcbiAgZXhwb3J0IHR5cGUgRmx1c2hFbGVtZW50ICA9IFsnZmx1c2gtZWxlbWVudCddO1xuICBleHBvcnQgdHlwZSBDbG9zZUVsZW1lbnQgID0gWydjbG9zZS1lbGVtZW50J107XG4gIGV4cG9ydCB0eXBlIFN0YXRpY0F0dHIgICAgPSBbJ3N0YXRpYy1hdHRyJywgc3RyLCBFeHByZXNzaW9uLCBzdHJdO1xuICBleHBvcnQgdHlwZSBEeW5hbWljQXR0ciAgID0gWydkeW5hbWljLWF0dHInLCBzdHIsIEV4cHJlc3Npb24sIHN0cl07XG4gIGV4cG9ydCB0eXBlIFlpZWxkICAgICAgICAgPSBbJ3lpZWxkJywgWWllbGRUbywgUGFyYW1zXTtcbiAgZXhwb3J0IHR5cGUgUGFydGlhbCAgICAgICA9IFsncGFydGlhbCcsIEV4cHJlc3Npb25dO1xuICBleHBvcnQgdHlwZSBEeW5hbWljQXJnICAgID0gWydkeW5hbWljLWFyZycsIHN0ciwgRXhwcmVzc2lvbl07XG4gIGV4cG9ydCB0eXBlIFN0YXRpY0FyZyAgICAgPSBbJ3N0YXRpYy1hcmcnLCBzdHIsIEV4cHJlc3Npb25dO1xuICBleHBvcnQgdHlwZSBUcnVzdGluZ0F0dHIgID0gWyd0cnVzdGluZy1hdHRyJywgc3RyLCBFeHByZXNzaW9uLCBzdHJdO1xuXG4gIGV4cG9ydCBjb25zdCBpc1RleHQgICAgICAgICA9IGlzPFRleHQ+KCd0ZXh0Jyk7XG4gIGV4cG9ydCBjb25zdCBpc0FwcGVuZCAgICAgICA9IGlzPEFwcGVuZD4oJ2FwcGVuZCcpO1xuICBleHBvcnQgY29uc3QgaXNDb21tZW50ICAgICAgPSBpczxDb21tZW50PignY29tbWVudCcpO1xuICBleHBvcnQgY29uc3QgaXNNb2RpZmllciAgICAgPSBpczxNb2RpZmllcj4oJ21vZGlmaWVyJyk7XG4gIGV4cG9ydCBjb25zdCBpc0Jsb2NrICAgICAgICA9IGlzPEJsb2NrPignYmxvY2snKTtcbiAgZXhwb3J0IGNvbnN0IGlzT3BlbkVsZW1lbnQgID0gaXM8T3BlbkVsZW1lbnQ+KCdvcGVuLWVsZW1lbnQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzRmx1c2hFbGVtZW50ID0gaXM8Rmx1c2hFbGVtZW50PignZmx1c2gtZWxlbWVudCcpO1xuICBleHBvcnQgY29uc3QgaXNDbG9zZUVsZW1lbnQgPSBpczxDbG9zZUVsZW1lbnQ+KCdjbG9zZS1lbGVtZW50Jyk7XG4gIGV4cG9ydCBjb25zdCBpc1N0YXRpY0F0dHIgICA9IGlzPFN0YXRpY0F0dHI+KCdzdGF0aWMtYXR0cicpO1xuICBleHBvcnQgY29uc3QgaXNEeW5hbWljQXR0ciAgPSBpczxEeW5hbWljQXR0cj4oJ2R5bmFtaWMtYXR0cicpO1xuICBleHBvcnQgY29uc3QgaXNZaWVsZCAgICAgICAgPSBpczxZaWVsZD4oJ3lpZWxkJyk7XG4gIGV4cG9ydCBjb25zdCBpc1BhcnRpYWwgICAgICA9IGlzPFBhcnRpYWw+KCdwYXJ0aWFsJyk7XG4gIGV4cG9ydCBjb25zdCBpc0R5bmFtaWNBcmcgICA9IGlzPER5bmFtaWNBcmc+KCdkeW5hbWljLWFyZycpO1xuICBleHBvcnQgY29uc3QgaXNTdGF0aWNBcmcgICAgPSBpczxTdGF0aWNBcmc+KCdzdGF0aWMtYXJnJyk7XG4gIGV4cG9ydCBjb25zdCBpc1RydXN0aW5nQXR0ciA9IGlzPFRydXN0aW5nQXR0cj4oJ3RydXN0aW5nLWF0dHInKTtcblxuICBleHBvcnQgdHlwZSBTdGF0ZW1lbnQgPVxuICAgICAgVGV4dFxuICAgIHwgQXBwZW5kXG4gICAgfCBDb21tZW50XG4gICAgfCBNb2RpZmllclxuICAgIHwgQmxvY2tcbiAgICB8IE9wZW5FbGVtZW50XG4gICAgfCBGbHVzaEVsZW1lbnRcbiAgICB8IENsb3NlRWxlbWVudFxuICAgIHwgU3RhdGljQXR0clxuICAgIHwgRHluYW1pY0F0dHJcbiAgICB8IFlpZWxkXG4gICAgfCBQYXJ0aWFsXG4gICAgfCBTdGF0aWNBcmdcbiAgICB8IER5bmFtaWNBcmdcbiAgICB8IFRydXN0aW5nQXR0clxuICAgIDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGVtZW50ID0gU3RhdGVtZW50cy5TdGF0ZW1lbnQ7XG5cbi8qKlxuICogQSBKU09OIG9iamVjdCBvZiBzdGF0aWMgY29tcGlsZSB0aW1lIG1ldGEgZm9yIHRoZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU1ldGEge1xuICBtb2R1bGVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgSlNPTiBvYmplY3QgdGhhdCB0aGUgQmxvY2sgd2FzIHNlcmlhbGl6ZWQgaW50by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkQmxvY2sge1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRzLlN0YXRlbWVudFtdO1xuICBsb2NhbHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgSlNPTiBvYmplY3QgdGhhdCB0aGUgY29tcGlsZWQgVGVtcGxhdGVCbG9jayB3YXMgc2VyaWFsaXplZCBpbnRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgU2VyaWFsaXplZEJsb2NrIHtcbiAgbmFtZWQ6IHN0cmluZ1tdO1xuICB5aWVsZHM6IHN0cmluZ1tdO1xuICBibG9ja3M6IFNlcmlhbGl6ZWRCbG9ja1tdO1xuICBoYXNQYXJ0aWFsczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIEpTT04gb2JqZWN0IHRoYXQgdGhlIGNvbXBpbGVkIFRlbXBsYXRlIHdhcyBzZXJpYWxpemVkIGludG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrO1xuICBtZXRhOiBUO1xufVxuXG4vKipcbiAqIEEgc3RyaW5nIG9mIEpTT04gY29udGFpbmluZyBhIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrXG4gKiBAdHlwZWRlZiB7c3RyaW5nfSBTZXJpYWxpemVkVGVtcGxhdGVCbG9ja0pTT05cbiAqL1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2tKU09OID0gc3RyaW5nO1xuXG4vKipcbiAqIEEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sgYXMgSlNPTiBhbmQgVGVtcGxhdGVNZXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2s8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ge1xuICBpZD86IHN0cmluZztcbiAgYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrSlNPTjtcbiAgbWV0YTogVDtcbn1cblxuLyoqXG4gKiBBIHN0cmluZyBvZiBKYXZhc2NyaXB0IGNvbnRhaW5pbmcgYSBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrIHRvIGJlXG4gKiBjb25jYXRlbmF0ZWQgaW50byBhIEphdmFzY3JpcHQgbW9kdWxlLlxuICogQHR5cGVkZWYge3N0cmluZ30gVGVtcGxhdGVKYXZhc2NyaXB0XG4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlSmF2YXNjcmlwdCA9IHN0cmluZztcbiJdfQ==
-enifed('handlebars/compiler/ast', ['exports'], function (exports) {
+enifed('htmlbars-syntax/handlebars/compiler/ast', ['exports'], function (exports) {
'use strict';
var AST = {
Program: function (statements, blockParams, strip, locInfo) {
this.loc = locInfo;
@@ -24970,39 +15447,37 @@
// Must be exported as an object rather than the root of the module as the jison lexer
// must modify the object to operate properly.
exports.default = AST;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvYXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQUksR0FBRyxHQUFHO0FBQ1IsV0FBTyxFQUFFLFVBQVMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFVBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFVBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBQ3RCLFVBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDOztBQUV2QixVQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUMvQixVQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFFRCxxQkFBaUIsRUFBRSxVQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFVBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFVBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7O0FBRWhDLFVBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLFVBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUMzQixVQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixVQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFFdkIsVUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBRUQsa0JBQWMsRUFBRSxVQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0FBQzNHLFVBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFVBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7O0FBRTdCLFVBQUks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T0FBTyxDQUFDO0FBQ25CLFVBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsVUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7OztBQUdELFdBQU8sRUFBRTs7OztBQUlQLHNCQUFnQixFQUFFLFVBQVMsSUFBSSxFQUFFO0FBQy9CLGVBQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUEsQUFBQyxDQUFDO09BQzdFOztBQUVELGNBQVEsRUFBRSxVQUFTLElBQUksRUFBRTtBQUN2QixlQUFPLEFBQUMsYUFBWSxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1VBQUM7T0FDM0M7Ozs7QUFJRCxjQUFRLEVBQUUsVUFBUyxJQUFJLEVBQUU7QUFDdkIsZUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7T0FDOUU7S0FDRjtHQUNGLENBQUM7Ozs7b0JBS2EsR0FBRyIsImZpbGUiOiJoYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBBU1QgPSB7XG4gIFByb2dyYW06IGZ1bmN0aW9uKHN0YXRlbWVudHMsIGJsb2NrUGFyYW1zLCBzdHJpcCwgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnUHJvZ3JhbSc7XG4gICAgdGhpcy5ib2R5ID0gc3RhdGVtZW50cztcblxuICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBibG9ja1BhcmFtcztcbiAgICB0aGlzLnN0cmlwID0gc3RyaXA7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhdGgsIHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgc3RyaXAsIGxvY0luZm8pIHtcbiAgICB0aGlzLmxvYyA9IGxvY0luZm87XG4gICAgdGhpcy50eXBlID0gJ011c3RhY2hlU3RhdGVtZW50JztcblxuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXMgfHwgW107XG4gICAgdGhpcy5oYXNoID0gaGFzaDtcbiAgICB0aGlzLmVzY2FwZWQgPSBlc2NhcGVkO1xuXG4gICAgdGhpcy5zdHJpcCA9IHN0cmlwO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihwYXRoLCBwYXJhbXMsIGhhc2gsIHByb2dyYW0sIGludmVyc2UsIG9wZW5TdHJpcCwgaW52ZXJzZVN0cmlwLCBjbG9zZVN0cmlwLCBsb2NJbmZvKSB7XG4gICAgdGhpcy5sb2MgPSBsb2NJbmZvO1xuICAgIHRoaXMudHlwZSA9ICdCbG9ja1N0YXRlbWVudCc7XG5cbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zIHx8IFtdO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICB0aGlzLmludmVyc2UgPSBpbnZlcnNlO1xuXG4gICAgdGhpcy5vcGVuU3RyaXAgPSBvcGVuU3RyaXA7XG4gICAgdGhpcy5pbnZlcnNlU3RyaXAgPSBpbnZlcnNlU3RyaXA7XG4gICAgdGhpcy5jbG9zZVN0cmlwID0gY2xvc2VTdHJpcDtcbiAgfSxcblxuICBQYXJ0aWFsU3RhdGVtZW50OiBmdW5jdGlvbihuYW1lLCBwYXJhbXMsIGhhc2gsIHN0cmlwLCBsb2NJbmZvKSB7XG4gICAgdGhpcy5sb2MgPSBsb2NJbmZvO1xuICAgIHRoaXMudHlwZSA9ICdQYXJ0aWFsU3RhdGVtZW50JztcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXMgfHwgW107XG4gICAgdGhpcy5oYXNoID0gaGFzaDtcblxuICAgIHRoaXMuaW5kZW50ID0gJyc7XG4gICAgdGhpcy5zdHJpcCA9IHN0cmlwO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHN0cmluZywgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnQ29udGVudFN0YXRlbWVudCc7XG4gICAgdGhpcy5vcmlnaW5hbCA9IHRoaXMudmFsdWUgPSBzdHJpbmc7XG4gIH0sXG5cbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24oY29tbWVudCwgc3RyaXAsIGxvY0luZm8pIHtcbiAgICB0aGlzLmxvYyA9IGxvY0luZm87XG4gICAgdGhpcy50eXBlID0gJ0NvbW1lbnRTdGF0ZW1lbnQnO1xuICAgIHRoaXMudmFsdWUgPSBjb21tZW50O1xuXG4gICAgdGhpcy5zdHJpcCA9IHN0cmlwO1xuICB9LFxuXG4gIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uKHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcblxuICAgIHRoaXMudHlwZSA9ICdTdWJFeHByZXNzaW9uJztcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zIHx8IFtdO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gIH0sXG5cbiAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uKGRhdGEsIGRlcHRoLCBwYXJ0cywgb3JpZ2luYWwsIGxvY0luZm8pIHtcbiAgICB0aGlzLmxvYyA9IGxvY0luZm87XG4gICAgdGhpcy50eXBlID0gJ1BhdGhFeHByZXNzaW9uJztcblxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5vcmlnaW5hbCA9IG9yaWdpbmFsO1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oc3RyaW5nLCBsb2NJbmZvKSB7XG4gICAgdGhpcy5sb2MgPSBsb2NJbmZvO1xuICAgIHRoaXMudHlwZSA9ICdTdHJpbmdMaXRlcmFsJztcbiAgICB0aGlzLm9yaWdpbmFsID1cbiAgICAgIHRoaXMudmFsdWUgPSBzdHJpbmc7XG4gIH0sXG5cbiAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24obnVtYmVyLCBsb2NJbmZvKSB7XG4gICAgdGhpcy5sb2MgPSBsb2NJbmZvO1xuICAgIHRoaXMudHlwZSA9ICdOdW1iZXJMaXRlcmFsJztcbiAgICB0aGlzLm9yaWdpbmFsID1cbiAgICAgIHRoaXMudmFsdWUgPSBOdW1iZXIobnVtYmVyKTtcbiAgfSxcblxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oYm9vbCwgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnQm9vbGVhbkxpdGVyYWwnO1xuICAgIHRoaXMub3JpZ2luYWwgPVxuICAgICAgdGhpcy52YWx1ZSA9IGJvb2wgPT09ICd0cnVlJztcbiAgfSxcblxuICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbihsb2NJbmZvKSB7XG4gICAgdGhpcy5sb2MgPSBsb2NJbmZvO1xuICAgIHRoaXMudHlwZSA9ICdVbmRlZmluZWRMaXRlcmFsJztcbiAgICB0aGlzLm9yaWdpbmFsID0gdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgfSxcblxuICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24obG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnTnVsbExpdGVyYWwnO1xuICAgIHRoaXMub3JpZ2luYWwgPSB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfSxcblxuICBIYXNoOiBmdW5jdGlvbihwYWlycywgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnSGFzaCc7XG4gICAgdGhpcy5wYWlycyA9IHBhaXJzO1xuICB9LFxuICBIYXNoUGFpcjogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgbG9jSW5mbykge1xuICAgIHRoaXMubG9jID0gbG9jSW5mbztcbiAgICB0aGlzLnR5cGUgPSAnSGFzaFBhaXInO1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfSxcblxuICAvLyBQdWJsaWMgQVBJIHVzZWQgdG8gZXZhbHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJlZ2FyZGluZyBBU1Qgbm9kZXNcbiAgaGVscGVyczoge1xuICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjpcbiAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5kXG4gICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21lbnRcbiAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICByZXR1cm4gISEobm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHwgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCk7XG4gICAgfSxcblxuICAgIHNjb3BlZElkOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gKC9eXFwufHRoaXNcXGIvKS50ZXN0KHBhdGgub3JpZ2luYWwpO1xuICAgIH0sXG5cbiAgICAvLyBhbiBJRCBpcyBzaW1wbGUgaWYgaXQgb25seSBoYXMgb25lIHBhcnQsIGFuZCB0aGF0IHBhcnQgaXMgbm90XG4gICAgLy8gYC4uYCBvciBgdGhpc2AuXG4gICAgc2ltcGxlSWQ6IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoLnBhcnRzLmxlbmd0aCA9PT0gMSAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVwdGg7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vIE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyXG4vLyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuXG5leHBvcnQgZGVmYXVsdCBBU1Q7XG4iXX0=
-enifed('handlebars/compiler/base', ['exports', 'handlebars/compiler/parser', 'handlebars/compiler/ast', 'handlebars/compiler/whitespace-control', 'handlebars/compiler/helpers', 'handlebars/utils'], function (exports, _handlebarsCompilerParser, _handlebarsCompilerAst, _handlebarsCompilerWhitespaceControl, _handlebarsCompilerHelpers, _handlebarsUtils) {
+enifed('htmlbars-syntax/handlebars/compiler/base', ['exports', 'htmlbars-syntax/handlebars/compiler/parser', 'htmlbars-syntax/handlebars/compiler/ast', 'htmlbars-syntax/handlebars/compiler/whitespace-control', 'htmlbars-syntax/handlebars/compiler/helpers', 'htmlbars-syntax/handlebars/utils'], function (exports, _htmlbarsSyntaxHandlebarsCompilerParser, _htmlbarsSyntaxHandlebarsCompilerAst, _htmlbarsSyntaxHandlebarsCompilerWhitespaceControl, _htmlbarsSyntaxHandlebarsCompilerHelpers, _htmlbarsSyntaxHandlebarsUtils) {
'use strict';
exports.parse = parse;
- exports.parser = _handlebarsCompilerParser.default;
+ exports.parser = _htmlbarsSyntaxHandlebarsCompilerParser.default;
var yy = {};
- _handlebarsUtils.extend(yy, _handlebarsCompilerHelpers, _handlebarsCompilerAst.default);
+ _htmlbarsSyntaxHandlebarsUtils.extend(yy, _htmlbarsSyntaxHandlebarsCompilerHelpers, _htmlbarsSyntaxHandlebarsCompilerAst.default);
function parse(input, options) {
// Just return if an already-compiled AST was passed in.
if (input.type === 'Program') {
return input;
}
- _handlebarsCompilerParser.default.yy = yy;
+ _htmlbarsSyntaxHandlebarsCompilerParser.default.yy = yy;
// Altering the shared object here, but this is ok as parser is a sync operation
yy.locInfo = function (locInfo) {
return new yy.SourceLocation(options && options.srcName, locInfo);
};
- var strip = new _handlebarsCompilerWhitespaceControl.default();
- return strip.accept(_handlebarsCompilerParser.default.parse(input));
+ var strip = new _htmlbarsSyntaxHandlebarsCompilerWhitespaceControl.default();
+ return strip.accept(_htmlbarsSyntaxHandlebarsCompilerParser.default.parse(input));
}
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvYmFzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1VBTVMsTUFBTTs7QUFFZixNQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDWixtQkFMUyxNQUFNLENBS1IsRUFBRSw2REFBZSxDQUFDOztBQUVsQixXQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFOztBQUVwQyxRQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsYUFBTyxLQUFLLENBQUM7S0FBRTs7QUFFL0Msc0NBQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzs7O0FBR2YsTUFBRSxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixhQUFPLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNuRSxDQUFDOztBQUVGLFFBQUksS0FBSyxHQUFHLGtEQUF1QixDQUFDO0FBQ3BDLFdBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQ0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztHQUMxQyIsImZpbGUiOiJoYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VyIGZyb20gJy4vcGFyc2VyJztcbmltcG9ydCBBU1QgZnJvbSAnLi9hc3QnO1xuaW1wb3J0IFdoaXRlc3BhY2VDb250cm9sIGZyb20gJy4vd2hpdGVzcGFjZS1jb250cm9sJztcbmltcG9ydCAqIGFzIEhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHsgcGFyc2VyIH07XG5cbmxldCB5eSA9IHt9O1xuZXh0ZW5kKHl5LCBIZWxwZXJzLCBBU1QpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgLy8gSnVzdCByZXR1cm4gaWYgYW4gYWxyZWFkeS1jb21waWxlZCBBU1Qgd2FzIHBhc3NlZCBpbi5cbiAgaWYgKGlucHV0LnR5cGUgPT09ICdQcm9ncmFtJykgeyByZXR1cm4gaW5wdXQ7IH1cblxuICBwYXJzZXIueXkgPSB5eTtcblxuICAvLyBBbHRlcmluZyB0aGUgc2hhcmVkIG9iamVjdCBoZXJlLCBidXQgdGhpcyBpcyBvayBhcyBwYXJzZXIgaXMgYSBzeW5jIG9wZXJhdGlvblxuICB5eS5sb2NJbmZvID0gZnVuY3Rpb24obG9jSW5mbykge1xuICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24ob3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pO1xuICB9O1xuXG4gIGxldCBzdHJpcCA9IG5ldyBXaGl0ZXNwYWNlQ29udHJvbCgpO1xuICByZXR1cm4gc3RyaXAuYWNjZXB0KHBhcnNlci5wYXJzZShpbnB1dCkpO1xufVxuIl19
-enifed('handlebars/compiler/helpers', ['exports', 'handlebars/exception'], function (exports, _handlebarsException) {
+enifed('htmlbars-syntax/handlebars/compiler/helpers', ['exports', 'htmlbars-syntax/handlebars/exception'], function (exports, _htmlbarsSyntaxHandlebarsException) {
'use strict';
exports.SourceLocation = SourceLocation;
exports.id = id;
exports.stripFlags = stripFlags;
@@ -25059,11 +15534,11 @@
isLiteral = parts[i].original !== part;
original += (parts[i].separator || '') + part;
if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
if (dig.length > 0) {
- throw new _handlebarsException.default('Invalid path: ' + original, { loc: locInfo });
+ throw new _htmlbarsSyntaxHandlebarsException.default('Invalid path: ' + original, { loc: locInfo });
} else if (part === '..') {
depth++;
depthString += '../';
}
} else {
@@ -25084,11 +15559,11 @@
function prepareRawBlock(openRawBlock, content, close, locInfo) {
if (openRawBlock.path.original !== close) {
var errorNode = { loc: openRawBlock.path.loc };
- throw new _handlebarsException.default(openRawBlock.path.original + " doesn't match " + close, errorNode);
+ throw new _htmlbarsSyntaxHandlebarsException.default(openRawBlock.path.original + " doesn't match " + close, errorNode);
}
locInfo = this.locInfo(locInfo);
var program = new this.Program([content], null, {}, locInfo);
@@ -25098,11 +15573,11 @@
function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
// When we are chaining inverse calls, we will not have a close path
if (close && close.path && openBlock.path.original !== close.path.original) {
var errorNode = { loc: openBlock.path.loc };
- throw new _handlebarsException.default(openBlock.path.original + ' doesn\'t match ' + close.path.original, errorNode);
+ throw new _htmlbarsSyntaxHandlebarsException.default(openBlock.path.original + ' doesn\'t match ' + close.path.original, errorNode);
}
program.blockParams = openBlock.blockParams;
var inverse = undefined,
@@ -25124,12 +15599,11 @@
}
return new this.BlockStatement(openBlock.path, openBlock.params, openBlock.hash, program, inverse, openBlock.strip, inverseStrip, close && close.strip, this.locInfo(locInfo));
}
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFTyxXQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzlDLFFBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLFFBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxVQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7QUFDeEIsWUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQzdCLENBQUM7QUFDRixRQUFJLENBQUMsR0FBRyxHQUFHO0FBQ1QsVUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTO0FBQ3ZCLFlBQU0sRUFBRSxPQUFPLENBQUMsV0FBVztLQUM1QixDQUFDO0dBQ0g7O0FBRU0sV0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFFBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMxQixhQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDMUMsTUFBTTtBQUNMLGFBQU8sS0FBSyxDQUFDO0tBQ2Q7R0FDRjs7QUFFTSxXQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLFdBQU87QUFDTCxVQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHO0FBQzVCLFdBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRztLQUM5QyxDQUFDO0dBQ0g7O0FBRU0sV0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQ3BDLFdBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQzVCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDM0M7O0FBRU0sV0FB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O0tBQ3BCOztBQUVELFdBQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUMxQixTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksRUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFDaEIsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztHQUM1QiIsImZpbGUiOiJoYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzb3VyY2UsIGxvY0luZm8pIHtcbiAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIHRoaXMuc3RhcnQgPSB7XG4gICAgbGluZTogbG9jSW5mby5maXJzdF9saW5lLFxuICAgIGNvbHVtbjogbG9jSW5mby5maXJzdF9jb2x1bW5cbiAgfTtcbiAgdGhpcy5lbmQgPSB7XG4gICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1uXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZCh0b2tlbikge1xuICBpZiAoL15cXFsuKlxcXSQvLnRlc3QodG9rZW4pKSB7XG4gICAgcmV0dXJuIHRva2VuLnN1YnN0cigxLCB0b2tlbi5sZW5ndGggLSAyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xvc2UpIHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLFxuICAgIGNsb3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+J1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBDb21tZW50KGNvbW1lbnQpIHtcbiAgcmV0dXJuIGNvbW1lbnQucmVwbGFjZSgvXlxce1xce34/XFwhLT8tPy8sICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgcGFydHMsIGxvY0luZm8pIHtcbiAgbG9jSW5mbyA9IHRoaXMubG9jSW5mbyhsb2NJbmZvKTtcblxuICBsZXQgb3JpZ2luYWwgPSBkYXRhID8gJ0AnIDogJycsXG4gICAgICBkaWcgPSBbXSxcbiAgICAgIGRlcHRoID0gMCxcbiAgICAgIGRlcHRoU3RyaW5nID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgcGFydCA9IHBhcnRzW2ldLnBhcnQsXG4gICAgICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsXG4gICAgICAgIC8vIGkuZS4gZm9vLlt0aGlzXSByZXNvbHZlcyB0byBhcHByb3hpbWF0ZWx5IGNvbnRleHQuZm9vWyd0aGlzJ11cbiAgICAgICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7XG4gICAgb3JpZ2luYWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0O1xuXG4gICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHtcbiAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICcgKyBvcmlnaW5hbCwge2xvYzogbG9jSW5mb30pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICAgIGRlcHRoKys7XG4gICAgICAgIGRlcHRoU3RyaW5nICs9ICcuLi8nO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkaWcucHVzaChwYXJ0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IHRoaXMuUGF0aEV4cHJlc3Npb24oZGF0YSwgZGVwdGgsIGRpZywgb3JpZ2luYWwsIGxvY0luZm8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgb3Blbiwgc3RyaXAsIGxvY0luZm8pIHtcbiAgLy8gTXVzdCB1c2UgY2hhckF0IHRvIHN1cHBvcnQgSUUgcHJlLTEwXG4gIGxldCBlc2NhcGVGbGFnID0gb3Blbi5jaGFyQXQoMykgfHwgb3Blbi5jaGFyQXQoMiksXG4gICAgICBlc2NhcGVkID0gZXNjYXBlRmxhZyAhPT0gJ3snICYmIGVzY2FwZUZsYWcgIT09ICcmJztcblxuICByZXR1cm4gbmV3IHRoaXMuTXVzdGFjaGVTdGF0ZW1lbnQocGF0aCwgcGFyYW1zLCBoYXNoLCBlc2NhcGVkLCBzdHJpcCwgdGhpcy5sb2NJbmZvKGxvY0luZm8pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVSYXdCbG9jayhvcGVuUmF3QmxvY2ssIGNvbnRlbnQsIGNsb3NlLCBsb2NJbmZvKSB7XG4gIGlmIChvcGVuUmF3QmxvY2sucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UpIHtcbiAgICBsZXQgZXJyb3JOb2RlID0ge2xvYzogb3BlblJhd0Jsb2NrLnBhdGgubG9jfTtcblxuICAgIHRocm93IG5ldyBFeGNlcHRpb24ob3BlblJhd0Jsb2NrLnBhdGgub3JpZ2luYWwgKyBcIiBkb2Vzbid0IG1hdGNoIFwiICsgY2xvc2UsIGVycm9yTm9kZSk7XG4gIH1cblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICBsZXQgcHJvZ3JhbSA9IG5ldyB0aGlzLlByb2dyYW0oW2NvbnRlbnRdLCBudWxsLCB7fSwgbG9jSW5mbyk7XG5cbiAgcmV0dXJuIG5ldyB0aGlzLkJsb2NrU3RhdGVtZW50KFxuICAgICAgb3BlblJhd0Jsb2NrLnBhdGgsIG9wZW5SYXdCbG9jay5wYXJhbXMsIG9wZW5SYXdCbG9jay5oYXNoLFxuICAgICAgcHJvZ3JhbSwgdW5kZWZpbmVkLFxuICAgICAge30sIHt9LCB7fSxcbiAgICAgIGxvY0luZm8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUJsb2NrKG9wZW5CbG9jaywgcHJvZ3JhbSwgaW52ZXJzZUFuZFByb2dyYW0sIGNsb3NlLCBpbnZlcnRlZCwgbG9jSW5mbykge1xuICAvLyBXaGVuIHdlIGFyZSBjaGFpbmluZyBpbnZlcnNlIGNhbGxzLCB3ZSB3aWxsIG5vdCBoYXZlIGEgY2xvc2UgcGF0aFxuICBpZiAoY2xvc2UgJiYgY2xvc2UucGF0aCAmJiBvcGVuQmxvY2sucGF0aC5vcmlnaW5hbCAhPT0gY2xvc2UucGF0aC5vcmlnaW5hbCkge1xuICAgIGxldCBlcnJvck5vZGUgPSB7bG9jOiBvcGVuQmxvY2sucGF0aC5sb2N9O1xuXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihvcGVuQmxvY2sucGF0aC5vcmlnaW5hbCArICcgZG9lc25cXCd0IG1hdGNoICcgKyBjbG9zZS5wYXRoLm9yaWdpbmFsLCBlcnJvck5vZGUpO1xuICB9XG5cbiAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IG9wZW5CbG9jay5ibG9ja1BhcmFtcztcblxuICBsZXQgaW52ZXJzZSxcbiAgICAgIGludmVyc2VTdHJpcDtcblxuICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHtcbiAgICBpZiAoaW52ZXJzZUFuZFByb2dyYW0uY2hhaW4pIHtcbiAgICAgIGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW0uYm9keVswXS5jbG9zZVN0cmlwID0gY2xvc2Uuc3RyaXA7XG4gICAgfVxuXG4gICAgaW52ZXJzZVN0cmlwID0gaW52ZXJzZUFuZFByb2dyYW0uc3RyaXA7XG4gICAgaW52ZXJzZSA9IGludmVyc2VBbmRQcm9ncmFtLnByb2dyYW07XG4gIH1cblxuICBpZiAoaW52ZXJ0ZWQpIHtcbiAgICBpbnZlcnRlZCA9IGludmVyc2U7XG4gICAgaW52ZXJzZSA9IHByb2dyYW07XG4gICAgcHJvZ3JhbSA9IGludmVydGVkO1xuICB9XG5cbiAgcmV0dXJuIG5ldyB0aGlzLkJsb2NrU3RhdGVtZW50KFxuICAgICAgb3BlbkJsb2NrLnBhdGgsIG9wZW5CbG9jay5wYXJhbXMsIG9wZW5CbG9jay5oYXNoLFxuICAgICAgcHJvZ3JhbSwgaW52ZXJzZSxcbiAgICAgIG9wZW5CbG9jay5zdHJpcCwgaW52ZXJzZVN0cmlwLCBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICAgIHRoaXMubG9jSW5mbyhsb2NJbmZvKSk7XG59XG4iXX0=
-enifed("handlebars/compiler/parser", ["exports"], function (exports) {
+enifed("htmlbars-syntax/handlebars/compiler/parser", ["exports"], function (exports) {
/* istanbul ignore next */
/* Jison generated parser */
"use strict";
var handlebars = (function () {
@@ -25799,12 +16273,11 @@
this.yy = {};
}Parser.prototype = parser;parser.Parser = Parser;
return new Parser();
})();exports.default = handlebars;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsUUFBSSxVQUFVLEdBQUcsQ0FBQyxZQUFVO0FBQzVCLFlBQUksTUFBTSxHQUFHLEVBQUMsS0FBSyxFQUFFLFNBQVMsS0FBSyxHQUFHLEVBQUc7QUFDekMsY0FBRSxFQUFFLEVBQUU7QUFDTixvQkFBUSxFQUFFLEVBQUMsT0FBTyxFQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxxQkFBcUIsRUFBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUMsRUFBRSxFQUFDLFNBQVMsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUMsRUFBRSxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUMsZUFBZSxFQUFDLEVBQUUsRUFBQyxnQkFBZ0IsRUFBQyxFQUFFLEVBQUMsWUFBWSxFQUFDLEVBQUUsRUFBQywwQkFBMEIsRUFBQyxFQUFFLEVBQUMsc0JBQXNCLEVBQUMsRUFBRSxFQUFDLGlCQUFpQixFQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsWUFBWSxFQUFDLEVBQUUsRUFBQyxhQUFhLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsWUFBWSxFQUFDLEVBQUUsRUFBQyx1QkFBdUIsRUFBQyxFQUFFLEVBQUMsbUJBQW1CLEVBQUMsRUFBRSxFQUFDLG1CQUFtQixFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUMseUJBQXlCLEVBQUMsRUFBRSxFQUFDLHFCQUFxQixFQUFDLEVBQUUsRUFBQyxxQkFBcUIs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QUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZvQix5QkFBYSxFQUFFLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBQyxNQUFNLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRTs7QUFFM0Usb0JBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLHdCQUFRLE9BQU87QUFDZix5QkFBSyxDQUFDO0FBQUUsK0JBQU8sRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssQ0FBQztBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JILDhCQUFNO0FBQUEsQUFDTix5QkFBSyxDQUFDO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckUsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxFQUFFO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RFLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxFQUFFO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2Riw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEYsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNySSw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxV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Q04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RILDhCQUFNO0FBQUEsQUFDTix5QkFBSyxFQUFFO0FBQUMsNEJBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0gsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEIsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEIsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVB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QyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RCw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEQsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBRSwwQkFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxBQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4Ryw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUMzRCw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDBCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5Qiw4QkFBTTtBQUFBLEFBQ04seUJBQUssRUFBRTtBQUFDLDRCQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUIsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQywwQkFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsOEJBQU07QUFBQSxBQUNOLHlCQUFLLEVBQUU7QUFBQyw0QkFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFCLDhCQUFNO0FBQUEsQUFDTix5QkFBSyxFQUFFO0FBQUMsMEJBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCLDhCQUFNO0FBQUEsaUJBQ0w7YUFDQTtBQUNELGlCQUFLLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFDN3VULDBCQUFjLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxD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QUFDLEtBQUssRUFBQyxFQUFDLFNBQVMsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxFQUFDLENBQUM7QUFDclUsbUJBQU8sS0FBSyxDQUFDO1NBQUMsQ0FBQSxFQUFHLENBQUE7QUFDakIsY0FBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDckIsaUJBQVMsTUFBTSxHQUFJO0FBQUUsZ0JBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckYsZUFBTyxJQUFJLE1BQU0sRUFBQSxDQUFDO0tBQ2pCLENBQUEsRUFBRyxDQUFDLGtCQUFlLFVBQVUiLCJmaWxlIjoiaGFuZGxlYmFycy9jb21waWxlci9wYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuLyogSmlzb24gZ2VuZXJhdGVkIHBhcnNlciAqL1xudmFyIGhhbmRsZWJhcnMgPSAoZnVuY3Rpb24oKXtcbnZhciBwYXJzZXIgPSB7dHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkgeyB9LFxueXk6IHt9LFxuc3ltYm9sc186IHtcImVycm9yXCI6MixcInJvb3RcIjozLFwicHJvZ3JhbVwiOjQsXCJFT0ZcIjo1LFwicHJvZ3JhbV9yZXBldGl0aW9uMFwiOjYsXCJzdGF0ZW1lbnRcIjo3LFwibXVzdGFjaGVcIjo4LFwiYmxvY2tcIjo5LFwicmF3QmxvY2tcIjoxMCxcInBhcnRpYWxcIjoxMSxcImNvbnRlbnRcIjoxMixcIkNPTU1FTlRcIjoxMyxcIkNPTlRFTlRcIjoxNCxcIm9wZW5SYXdCbG9ja1wiOjE1LFwiRU5EX1JBV19CTE9DS1wiOjE2LFwiT1BFTl9SQVdfQkxPQ0tcIjoxNyxcImhlbHBlck5hbWVcIjoxOCxcIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMFwiOjE5LFwib3BlblJhd0Jsb2NrX29wdGlvbjBcIjoyMCxcIkNMT1NFX1JBV19CTE9DS1wiOjIxLFwib3BlbkJsb2NrXCI6MjIsXCJibG9ja19vcHRpb24wXCI6MjMsXCJjbG9zZUJsb2NrXCI6MjQsXCJvcGVuSW52ZXJzZVwiOjI1LFwiYmxvY2tfb3B0aW9uMVwiOjI2LFwiT1BFTl9CTE9DS1wiOjI3LFwib3BlbkJsb2NrX3JlcGV0aXRpb24wXCI6MjgsXCJvcGVuQmxvY2tfb3B0aW9uMFwiOjI5LFwib3BlbkJsb2NrX29wdGlvbjFcIjozMCxcIkNMT1NFXCI6MzEsXCJPUEVOX0lOVkVSU0VcIjozMixcIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wXCI6MzMsXCJvcGVuSW52ZXJzZV9vcHRpb24wXCI6MzQsXCJvcGVuSW52ZXJzZV9vcHRpb24xXCI6MzUsXCJvcGVuSW52ZXJzZUNoYWluXCI6MzYsXCJPUEVOX0lOVkVSU0VfQ0hBSU5cIjozNyxcIm9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjBcIjozOCxcIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOjM5LFwib3BlbkludmVyc2VDaGFpbl9vcHRpb24xXCI6NDAsXCJpbnZlcnNlQW5kUHJvZ3JhbVwiOjQxLFwiSU5WRVJTRVwiOjQyLFwiaW52ZXJzZUNoYWluXCI6NDMsXCJpbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOjQ0LFwiT1BFTl9FTkRCTE9DS1wiOjQ1LFwiT1BFTlwiOjQ2LFwibXVzdGFjaGVfcmVwZXRpdGlvbjBcIjo0NyxcIm11c3RhY2hlX29wdGlvbjBcIjo0OCxcIk9QRU5fVU5FU0NBUEVEXCI6NDksXCJtdXN0YWNoZV9yZXBldGl0aW9uMVwiOjUwLFwibXVzdGFjaGVfb3B0aW9uMVwiOjUxLFwiQ0xPU0VfVU5FU0NBUEVEXCI6NTIsXCJPUEVOX1BBUlRJQUxcIjo1MyxcInBhcnRpYWxOYW1lXCI6NTQsXCJwYXJ0aWFsX3JlcGV0aXRpb24wXCI6NTUsXCJwYXJ0aWFsX29wdGlvbjBcIjo1NixcInBhcmFtXCI6NTcsXCJzZXhwclwiOjU4LFwiT1BFTl9TRVhQUlwiOjU5LFwic2V4cHJfcmVwZXRpdGlvbjBcIjo2MCxcInNleHByX29wdGlvbjBcIjo2MSxcIkNMT1NFX1NFWFBSXCI6NjIsXCJoYXNoXCI6NjMsXCJoYXNoX3JlcGV0aXRpb25fcGx1czBcIjo2NCxcImhhc2hTZWdtZW50XCI6NjUsXCJJRFwiOjY2LFwiRVFVQUxTXCI6NjcsXCJibG9ja1BhcmFtc1wiOjY4LFwiT1BFTl9CTE9DS19QQVJBTVNcIjo2OSxcImJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czBcIjo3MCxcIkNMT1NFX0JMT0NLX1BBUkFNU1wiOjcxLFwicGF0aFwiOjcyLFwiZGF0YU5hbWVcIjo3MyxcIlNUUklOR1wiOjc0LFwiTlVNQkVSXCI6NzUsXCJCT09MRUFOXCI6NzYsXCJVTkRFRklORURcIjo3NyxcIk5VTExcIjo3OCxcIkRBVEFcIjo3OSxcInBhdGhTZWdtZW50c1wiOjgwLFwiU0VQXCI6ODEsXCIkYWNjZXB0XCI6MCxcIiRlbmRcIjoxfSxcbnRlcm1pbmFsc186IHsyOlwiZXJyb3JcIiw1OlwiRU9GXCIsMTM6XCJDT01NRU5UXCIsMTQ6XCJDT05URU5UXCIsMTY6XCJFTkRfUkFXX0JMT0NLXCIsMTc6XCJPUEVOX1JBV19CTE9DS1wiLDIxOlwiQ0xPU0VfUkFXX0JMT0NLXCIsMjc6XCJPUEVOX0JMT0NLXCIsMzE6XCJDTE9TRVwiLDMyOlwiT1BFTl9JTlZFUlNFXCIsMzc6XCJPUEVOX0lOVkVSU0VfQ0hBSU5cIiw0MjpcIklOVkVSU0VcIiw0NTpcIk9QRU5fRU5EQkxPQ0tcIiw0NjpcIk9QRU5cIiw0OTpcIk9QRU5fVU5FU0NBUEVEXCIsNTI6XCJDTE9TRV9VTkVTQ0FQRURcIiw1MzpcIk9QRU5fUEFSVElBTFwiLDU5OlwiT1BFTl9TRVhQUlwiLDYyOlwiQ0xPU0VfU0VYUFJcIiw2NjpcIklEXCIsNjc6XCJFUVVBTFNcIiw2OTpcIk9QRU5fQkxPQ0tfUEFSQU1TXCIsNzE6XCJDTE9TRV9CTE9DS19QQVJBTVNcIiw3NDpcIlNUUklOR1wiLDc1OlwiTlVNQkVSXCIsNzY6XCJCT09MRUFOXCIsNzc6XCJVTkRFRklORURcIiw3ODpcIk5VTExcIiw3OTpcIkRBVEFcIiw4MTpcIlNFUFwifSxcbnByb2R1Y3Rpb25zXzogWzAsWzMsMl0sWzQsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzEyLDFdLFsxMCwzXSxbMTUsNV0sWzksNF0sWzksNF0sWzIyLDZdLFsyNSw2XSxbMzYsNl0sWzQxLDJdLFs0MywzXSxbNDMsMV0sWzI0LDNdLFs4LDVdLFs4LDVdLFsxMSw1XSxbNTcsMV0sWzU3LDFdLFs1OCw1XSxbNjMsMV0sWzY1LDNdLFs2OCwzXSxbMTgsMV0sWzE4LDFdLFsxOCwxXSxbMTgsMV0sWzE4LDFdLFsxOCwxXSxbMTgsMV0sWzU0LDFdLFs1NCwxXSxbNzMsMl0sWzcyLDFdLFs4MCwzXSxbODAsMV0sWzYsMF0sWzYsMl0sWzE5LDBdLFsxOSwyXSxbMjAsMF0sWzIwLDFdLFsyMywwXSxbMjMsMV0sWzI2LDBdLFsyNiwxXSxbMjgsMF0sWzI4LDJdLFsyOSwwXSxbMjksMV0sWzMwLDBdLFszMCwxXSxbMzMsMF0sWzMzLDJdLFszNCwwXSxbMzQsMV0sWzM1LDBdLFszNSwxXSxbMzgsMF0sWzM4LDJdLFszOSwwXSxbMzksMV0sWzQwLDBdLFs0MCwxXSxbNDQsMF0sWzQ0LDFdLFs0NywwXSxbNDcsMl0sWzQ4LDBdLFs0OCwxXSxbNTAsMF0sWzUwLDJdLFs1MSwwXSxbNTEsMV0sWzU1LDBdLFs1NSwyXSxbNTYsMF0sWzU2LDFdLFs2MCwwXSxbNjAsMl0sWzYxLDBdLFs2MSwxXSxbNjQsMV0sWzY0LDJdLFs3MCwxXSxbNzAsMl1dLFxucGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCx5eWxlbmcseXlsaW5lbm8seXkseXlzdGF0ZSwkJCxfJCkge1xuXG52YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuc3dpdGNoICh5eXN0YXRlKSB7XG5jYXNlIDE6IHJldHVybiAkJFskMC0xXTsgXG5icmVhaztcbmNhc2UgMjp0aGlzLiQgPSBuZXcgeXkuUHJvZ3JhbSgkJFskMF0sIG51bGwsIHt9LCB5eS5sb2NJbmZvKHRoaXMuXyQpKTtcbmJyZWFrO1xuY2FzZSAzOnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA0OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA1OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA2OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA3OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA4OnRoaXMuJCA9IG5ldyB5eS5Db21tZW50U3RhdGVtZW50KHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLCB5eS5zdHJpcEZsYWdzKCQkWyQwXSwgJCRbJDBdKSwgeXkubG9jSW5mbyh0aGlzLl8kKSk7XG5icmVhaztcbmNhc2UgOTp0aGlzLiQgPSBuZXcgeXkuQ29udGVudFN0YXRlbWVudCgkJFskMF0sIHl5LmxvY0luZm8odGhpcy5fJCkpO1xuYnJlYWs7XG5jYXNlIDEwOnRoaXMuJCA9IHl5LnByZXBhcmVSYXdCbG9jaygkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMTE6dGhpcy4kID0geyBwYXRoOiAkJFskMC0zXSwgcGFyYW1zOiAkJFskMC0yXSwgaGFzaDogJCRbJDAtMV0gfTtcbmJyZWFrO1xuY2FzZSAxMjp0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMTM6dGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwLTNdLCAkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwgdHJ1ZSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMTQ6dGhpcy4kID0geyBwYXRoOiAkJFskMC00XSwgcGFyYW1zOiAkJFskMC0zXSwgaGFzaDogJCRbJDAtMl0sIGJsb2NrUGFyYW1zOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtNV0sICQkWyQwXSkgfTtcbmJyZWFrO1xuY2FzZSAxNTp0aGlzLiQgPSB7IHBhdGg6ICQkWyQwLTRdLCBwYXJhbXM6ICQkWyQwLTNdLCBoYXNoOiAkJFskMC0yXSwgYmxvY2tQYXJhbXM6ICQkWyQwLTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC01XSwgJCRbJDBdKSB9O1xuYnJlYWs7XG5jYXNlIDE2OnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtNF0sIHBhcmFtczogJCRbJDAtM10sIGhhc2g6ICQkWyQwLTJdLCBibG9ja1BhcmFtczogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTVdLCAkJFskMF0pIH07XG5icmVhaztcbmNhc2UgMTc6dGhpcy4kID0geyBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC0xXSwgJCRbJDAtMV0pLCBwcm9ncmFtOiAkJFskMF0gfTtcbmJyZWFrO1xuY2FzZSAxODpcbiAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBhcmVCbG9jaygkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCksXG4gICAgICAgIHByb2dyYW0gPSBuZXcgeXkuUHJvZ3JhbShbaW52ZXJzZV0sIG51bGwsIHt9LCB5eS5sb2NJbmZvKHRoaXMuXyQpKTtcbiAgICBwcm9ncmFtLmNoYWluZWQgPSB0cnVlO1xuXG4gICAgdGhpcy4kID0geyBzdHJpcDogJCRbJDAtMl0uc3RyaXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWluOiB0cnVlIH07XG4gIFxuYnJlYWs7XG5jYXNlIDE5OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSAyMDp0aGlzLiQgPSB7cGF0aDogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTJdLCAkJFskMF0pfTtcbmJyZWFrO1xuY2FzZSAyMTp0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDAtNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAtNF0sICQkWyQwXSksIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDIyOnRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMC0zXSwgJCRbJDAtMl0sICQkWyQwLTFdLCAkJFskMC00XSwgeXkuc3RyaXBGbGFncygkJFskMC00XSwgJCRbJDBdKSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMjM6dGhpcy4kID0gbmV3IHl5LlBhcnRpYWxTdGF0ZW1lbnQoJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgeXkuc3RyaXBGbGFncygkJFskMC00XSwgJCRbJDBdKSwgeXkubG9jSW5mbyh0aGlzLl8kKSk7XG5icmVhaztcbmNhc2UgMjQ6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDI1OnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSAyNjp0aGlzLiQgPSBuZXcgeXkuU3ViRXhwcmVzc2lvbigkJFskMC0zXSwgJCRbJDAtMl0sICQkWyQwLTFdLCB5eS5sb2NJbmZvKHRoaXMuXyQpKTtcbmJyZWFrO1xuY2FzZSAyNzp0aGlzLiQgPSBuZXcgeXkuSGFzaCgkJFskMF0sIHl5LmxvY0luZm8odGhpcy5fJCkpO1xuYnJlYWs7XG5jYXNlIDI4OnRoaXMuJCA9IG5ldyB5eS5IYXNoUGFpcih5eS5pZCgkJFskMC0yXSksICQkWyQwXSwgeXkubG9jSW5mbyh0aGlzLl8kKSk7XG5icmVhaztcbmNhc2UgMjk6dGhpcy4kID0geXkuaWQoJCRbJDAtMV0pO1xuYnJlYWs7XG5jYXNlIDMwOnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSAzMTp0aGlzLiQgPSAkJFskMF07XG5icmVhaztcbmNhc2UgMzI6dGhpcy4kID0gbmV3IHl5LlN0cmluZ0xpdGVyYWwoJCRbJDBdLCB5eS5sb2NJbmZvKHRoaXMuXyQpKTtcbmJyZWFrO1xuY2FzZSAzMzp0aGlzLiQgPSBuZXcgeXkuTnVtYmVyTGl0ZXJhbCgkJFskMF0sIHl5LmxvY0luZm8odGhpcy5fJCkpO1xuYnJlYWs7XG5jYXNlIDM0OnRoaXMuJCA9IG5ldyB5eS5Cb29sZWFuTGl0ZXJhbCgkJFskMF0sIHl5LmxvY0luZm8odGhpcy5fJCkpO1xuYnJlYWs7XG5jYXNlIDM1OnRoaXMuJCA9IG5ldyB5eS5VbmRlZmluZWRMaXRlcmFsKHl5LmxvY0luZm8odGhpcy5fJCkpO1xuYnJlYWs7XG5jYXNlIDM2OnRoaXMuJCA9IG5ldyB5eS5OdWxsTGl0ZXJhbCh5eS5sb2NJbmZvKHRoaXMuXyQpKTtcbmJyZWFrO1xuY2FzZSAzNzp0aGlzLiQgPSAkJFskMF07XG5icmVhaztcbmNhc2UgMzg6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDM5OnRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRydWUsICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgNDA6dGhpcy4kID0geXkucHJlcGFyZVBhdGgoZmFsc2UsICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgNDE6ICQkWyQwLTJdLnB1c2goe3BhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF0sIHNlcGFyYXRvcjogJCRbJDAtMV19KTsgdGhpcy4kID0gJCRbJDAtMl07IFxuYnJlYWs7XG5jYXNlIDQyOnRoaXMuJCA9IFt7cGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXX1dO1xuYnJlYWs7XG5jYXNlIDQzOnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDQ0OiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA0NTp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA0NjokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgNTM6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNTQ6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDU5OnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDYwOiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA2NTp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA2NjokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgNzM6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNzQ6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDc3OnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDc4OiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA4MTp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA4MjokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgODU6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgODY6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDg5OnRoaXMuJCA9IFskJFskMF1dO1xuYnJlYWs7XG5jYXNlIDkwOiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA5MTp0aGlzLiQgPSBbJCRbJDBdXTtcbmJyZWFrO1xuY2FzZSA5MjokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbn1cbn0sXG50YWJsZTogW3szOjEsNDoyLDU6WzIsNDNdLDY6MywxMzpbMiw0M10sMTQ6WzIsNDNdLDE3OlsyLDQzXSwyNzpbMiw0M10sMzI6WzIsNDNdLDQ2OlsyLDQzXSw0OTpbMiw0M10sNTM6WzIsNDNdfSx7MTpbM119LHs1OlsxLDRdfSx7NTpbMiwyXSw3OjUsODo2LDk6NywxMDo4LDExOjksMTI6MTAsMTM6WzEsMTFdLDE0OlsxLDE4XSwxNToxNiwxNzpbMSwyMV0sMjI6MTQsMjU6MTUsMjc6WzEsMTldLDMyOlsxLDIwXSwzNzpbMiwyXSw0MjpbMiwyXSw0NTpbMiwyXSw0NjpbMSwxMl0sNDk6WzEsMTNdLDUzOlsxLDE3XX0sezE6WzIsMV19LHs1OlsyLDQ0XSwxMzpbMiw0NF0sMTQ6WzIsNDRdLDE3OlsyLDQ0XSwyNzpbMiw0NF0sMzI6WzIsNDRdLDM3OlsyLDQ0XSw0MjpbMiw0NF0sNDU6WzIsNDRdLDQ2OlsyLDQ0XSw0OTpbMiw0NF0sNTM6WzIsNDRdfSx7NTpbMiwzXSwxMzpbMiwzXSwxNDpbMiwzXSwxNzpbMiwzXSwyNzpbMiwzXSwzMjpbMiwzXSwzNzpbMiwzXSw0MjpbMiwzXSw0NTpbMiwzXSw0NjpbMiwzXSw0OTpbMiwzXSw1MzpbMiwzXX0sezU6WzIsNF0sMTM6WzIsNF0sMTQ6WzIsNF0sMTc6WzIsNF0sMjc6WzIsNF0sMzI6WzIsNF0sMzc6WzIsNF0sNDI6WzIsNF0sNDU6WzIsNF0sNDY6WzIsNF0sNDk6WzIsNF0sNTM6WzIsNF19LHs1OlsyLDVdLDEzOlsyLDVdLDE0OlsyLDVdLDE3OlsyLDVdLDI3OlsyLDVdLDMyOlsyLDVdLDM3OlsyLDVdLDQyOlsyLDVdLDQ1OlsyLDVdLDQ2OlsyLDVdLDQ5OlsyLDVdLDUzOlsyLDVdfSx7NTpbMiw2XSwxMzpbMiw2XSwxNDpbMiw2XSwxNzpbMiw2XSwyNzpbMiw2XSwzMjpbMiw2XSwzNzpbMiw2XSw0MjpbMiw2XSw0NTpbMiw2XSw0NjpbMiw2XSw0OTpbMiw2XSw1MzpbMiw2XX0sezU6WzIsN10sMTM6WzIsN10sMTQ6WzIsN10sMTc6WzIsN10sMjc6WzIsN10sMzI6WzIsN10sMzc6WzIsN10sNDI6WzIsN10sNDU6WzIsN10sNDY6WzIsN10sNDk6WzIsN10sNTM6WzIsN119LHs1OlsyLDhdLDEzOlsyLDhdLDE0OlsyLDhdLDE3OlsyLDhdLDI3OlsyLDhdLDMyOlsyLDhdLDM3OlsyLDhdLDQyOlsyLDhdLDQ1OlsyLDhdLDQ2OlsyLDhdLDQ5OlsyLDhdLDUzOlsyLDhdfSx7MTg6MjIsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MTg6MzMsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7NDozNCw2OjMsMTM6WzIsNDNdLDE0OlsyLDQzXSwxNzpbMiw0M10sMjc6WzIsNDNdLDMyOlsyLDQzXSwzNzpbMiw0M10sNDI6WzIsNDNdLDQ1OlsyLDQzXSw0NjpbMiw0M10sNDk6WzIsNDNdLDUzOlsyLDQzXX0sezQ6MzUsNjozLDEzOlsyLDQzXSwxNDpbMiw0M10sMTc6WzIsNDNdLDI3OlsyLDQzXSwzMjpbMiw0M10sNDI6WzIsNDNdLDQ1OlsyLDQzXSw0NjpbMiw0M10sNDk6WzIsNDNdLDUzOlsyLDQzXX0sezEyOjM2LDE0OlsxLDE4XX0sezE4OjM4LDU0OjM3LDU4OjM5LDU5OlsxLDQwXSw2NjpbMSwzMl0sNzI6MjMsNzM6MjQsNzQ6WzEsMjVdLDc1OlsxLDI2XSw3NjpbMSwyN10sNzc6WzEsMjhdLDc4OlsxLDI5XSw3OTpbMSwzMV0sODA6MzB9LHs1OlsyLDldLDEzOlsyLDldLDE0OlsyLDldLDE2OlsyLDldLDE3OlsyLDldLDI3OlsyLDldLDMyOlsyLDldLDM3OlsyLDldLDQyOlsyLDldLDQ1OlsyLDldLDQ2OlsyLDldLDQ5OlsyLDldLDUzOlsyLDldfSx7MTg6NDEsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MTg6NDIsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MTg6NDMsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MzE6WzIsNzNdLDQ3OjQ0LDU5OlsyLDczXSw2NjpbMiw3M10sNzQ6WzIsNzNdLDc1OlsyLDczXSw3NjpbMiw3M10sNzc6WzIsNzNdLDc4OlsyLDczXSw3OTpbMiw3M119LHsyMTpbMiwzMF0sMzE6WzIsMzBdLDUyOlsyLDMwXSw1OTpbMiwzMF0sNjI6WzIsMzBdLDY2OlsyLDMwXSw2OTpbMiwzMF0sNzQ6WzIsMzBdLDc1OlsyLDMwXSw3NjpbMiwzMF0sNzc6WzIsMzBdLDc4OlsyLDMwXSw3OTpbMiwzMF19LHsyMTpbMiwzMV0sMzE6WzIsMzFdLDUyOlsyLDMxXSw1OTpbMiwzMV0sNjI6WzIsMzFdLDY2OlsyLDMxXSw2OTpbMiwzMV0sNzQ6WzIsMzFdLDc1OlsyLDMxXSw3NjpbMiwzMV0sNzc6WzIsMzFdLDc4OlsyLDMxXSw3OTpbMiwzMV19LHsyMTpbMiwzMl0sMzE6WzIsMzJdLDUyOlsyLDMyXSw1OTpbMiwzMl0sNjI6WzIsMzJdLDY2OlsyLDMyXSw2OTpbMiwzMl0sNzQ6WzIsMzJdLDc1OlsyLDMyXSw3NjpbMiwzMl0sNzc6WzIsMzJdLDc4OlsyLDMyXSw3OTpbMiwzMl19LHsyMTpbMiwzM10sMzE6WzIsMzNdLDUyOlsyLDMzXSw1OTpbMiwzM10sNjI6WzIsMzNdLDY2OlsyLDMzXSw2OTpbMiwzM10sNzQ6WzIsMzNdLDc1OlsyLDMzXSw3NjpbMiwzM10sNzc6WzIsMzNdLDc4OlsyLDMzXSw3OTpbMiwzM119LHsyMTpbMiwzNF0sMzE6WzIsMzRdLDUyOlsyLDM0XSw1OTpbMiwzNF0sNjI6WzIsMzRdLDY2OlsyLDM0XSw2OTpbMiwzNF0sNzQ6WzIsMzRdLDc1OlsyLDM0XSw3NjpbMiwzNF0sNzc6WzIsMzRdLDc4OlsyLDM0XSw3OTpbMiwzNF19LHsyMTpbMiwzNV0sMzE6WzIsMzVdLDUyOlsyLDM1XSw1OTpbMiwzNV0sNjI6WzIsMzVdLDY2OlsyLDM1XSw2OTpbMiwzNV0sNzQ6WzIsMzVdLDc1OlsyLDM1XSw3NjpbMiwzNV0sNzc6WzIsMzVdLDc4OlsyLDM1XSw3OTpbMiwzNV19LHsyMTpbMiwzNl0sMzE6WzIsMzZdLDUyOlsyLDM2XSw1OTpbMiwzNl0sNjI6WzIsMzZdLDY2OlsyLDM2XSw2OTpbMiwzNl0sNzQ6WzIsMzZdLDc1OlsyLDM2XSw3NjpbMiwzNl0sNzc6WzIsMzZdLDc4OlsyLDM2XSw3OTpbMiwzNl19LHsyMTpbMiw0MF0sMzE6WzIsNDBdLDUyOlsyLDQwXSw1OTpbMiw0MF0sNjI6WzIsNDBdLDY2OlsyLDQwXSw2OTpbMiw0MF0sNzQ6WzIsNDBdLDc1OlsyLDQwXSw3NjpbMiw0MF0sNzc6WzIsNDBdLDc4OlsyLDQwXSw3OTpbMiw0MF0sODE6WzEsNDVdfSx7NjY6WzEsMzJdLDgwOjQ2fSx7MjE6WzIsNDJdLDMxOlsyLDQyXSw1MjpbMiw0Ml0sNTk6WzIsNDJdLDYyOlsyLDQyXSw2NjpbMiw0Ml0sNjk6WzIsNDJdLDc0OlsyLDQyXSw3NTpbMiw0Ml0sNzY6WzIsNDJdLDc3OlsyLDQyXSw3ODpbMiw0Ml0sNzk6WzIsNDJdLDgxOlsyLDQyXX0sezUwOjQ3LDUyOlsyLDc3XSw1OTpbMiw3N10sNjY6WzIsNzddLDc0OlsyLDc3XSw3NTpbMiw3N10sNzY6WzIsNzddLDc3OlsyLDc3XSw3ODpbMiw3N10sNzk6WzIsNzddfSx7MjM6NDgsMzY6NTAsMzc6WzEsNTJdLDQxOjUxLDQyOlsxLDUzXSw0Mzo0OSw0NTpbMiw0OV19LHsyNjo1NCw0MTo1NSw0MjpbMSw1M10sNDU6WzIsNTFdfSx7MTY6WzEsNTZdfSx7MzE6WzIsODFdLDU1OjU3LDU5OlsyLDgxXSw2NjpbMiw4MV0sNzQ6WzIsODFdLDc1OlsyLDgxXSw3NjpbMiw4MV0sNzc6WzIsODFdLDc4OlsyLDgxXSw3OTpbMiw4MV19LHszMTpbMiwzN10sNTk6WzIsMzddLDY2OlsyLDM3XSw3NDpbMiwzN10sNzU6WzIsMzddLDc2OlsyLDM3XSw3NzpbMiwzN10sNzg6WzIsMzddLDc5OlsyLDM3XX0sezMxOlsyLDM4XSw1OTpbMiwzOF0sNjY6WzIsMzhdLDc0OlsyLDM4XSw3NTpbMiwzOF0sNzY6WzIsMzhdLDc3OlsyLDM4XSw3ODpbMiwzOF0sNzk6WzIsMzhdfSx7MTg6NTgsNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7Mjg6NTksMzE6WzIsNTNdLDU5OlsyLDUzXSw2NjpbMiw1M10sNjk6WzIsNTNdLDc0OlsyLDUzXSw3NTpbMiw1M10sNzY6WzIsNTNdLDc3OlsyLDUzXSw3ODpbMiw1M10sNzk6WzIsNTNdfSx7MzE6WzIsNTldLDMzOjYwLDU5OlsyLDU5XSw2NjpbMiw1OV0sNjk6WzIsNTldLDc0OlsyLDU5XSw3NTpbMiw1OV0sNzY6WzIsNTldLDc3OlsyLDU5XSw3ODpbMiw1OV0sNzk6WzIsNTldfSx7MTk6NjEsMjE6WzIsNDVdLDU5OlsyLDQ1XSw2NjpbMiw0NV0sNzQ6WzIsNDVdLDc1OlsyLDQ1XSw3NjpbMiw0NV0sNzc6WzIsNDVdLDc4OlsyLDQ1XSw3OTpbMiw0NV19LHsxODo2NSwzMTpbMiw3NV0sNDg6NjIsNTc6NjMsNTg6NjYsNTk6WzEsNDBdLDYzOjY0LDY0OjY3LDY1OjY4LDY2OlsxLDY5XSw3MjoyMyw3MzoyNCw3NDpbMSwyNV0sNzU6WzEsMjZdLDc2OlsxLDI3XSw3NzpbMSwyOF0sNzg6WzEsMjldLDc5OlsxLDMxXSw4MDozMH0sezY2OlsxLDcwXX0sezIxOlsyLDM5XSwzMTpbMiwzOV0sNTI6WzIsMzldLDU5OlsyLDM5XSw2MjpbMiwzOV0sNjY6WzIsMzldLDY5OlsyLDM5XSw3NDpbMiwzOV0sNzU6WzIsMzldLDc2OlsyLDM5XSw3NzpbMiwzOV0sNzg6WzIsMzldLDc5OlsyLDM5XSw4MTpbMSw0NV19LHsxODo2NSw1MTo3MSw1MjpbMiw3OV0sNTc6NzIsNTg6NjYsNTk6WzEsNDBdLDYzOjczLDY0OjY3LDY1OjY4LDY2OlsxLDY5XSw3MjoyMyw3MzoyNCw3NDpbMSwyNV0sNzU6WzEsMjZdLDc2OlsxLDI3XSw3NzpbMSwyOF0sNzg6WzEsMjldLDc5OlsxLDMxXSw4MDozMH0sezI0Ojc0LDQ1OlsxLDc1XX0sezQ1OlsyLDUwXX0sezQ6NzYsNjozLDEzOlsyLDQzXSwxNDpbMiw0M10sMTc6WzIsNDNdLDI3OlsyLDQzXSwzMjpbMiw0M10sMzc6WzIsNDNdLDQyOlsyLDQzXSw0NTpbMiw0M10sNDY6WzIsNDNdLDQ5OlsyLDQzXSw1MzpbMiw0M119LHs0NTpbMiwxOV19LHsxODo3Nyw2NjpbMSwzMl0sNzI6MjMsNzM6MjQsNzQ6WzEsMjVdLDc1OlsxLDI2XSw3NjpbMSwyN10sNzc6WzEsMjhdLDc4OlsxLDI5XSw3OTpbMSwzMV0sODA6MzB9LHs0Ojc4LDY6MywxMzpbMiw0M10sMTQ6WzIsNDNdLDE3OlsyLDQzXSwyNzpbMiw0M10sMzI6WzIsNDNdLDQ1OlsyLDQzXSw0NjpbMiw0M10sNDk6WzIsNDNdLDUzOlsyLDQzXX0sezI0Ojc5LDQ1OlsxLDc1XX0sezQ1OlsyLDUyXX0sezU6WzIsMTBdLDEzOlsyLDEwXSwxNDpbMiwxMF0sMTc6WzIsMTBdLDI3OlsyLDEwXSwzMjpbMiwxMF0sMzc6WzIsMTBdLDQyOlsyLDEwXSw0NTpbMiwxMF0sNDY6WzIsMTBdLDQ5OlsyLDEwXSw1MzpbMiwxMF19LHsxODo2NSwzMTpbMiw4M10sNTY6ODAsNTc6ODEsNTg6NjYsNTk6WzEsNDBdLDYzOjgyLDY0OjY3LDY1OjY4LDY2OlsxLDY5XSw3MjoyMyw3MzoyNCw3NDpbMSwyNV0sNzU6WzEsMjZdLDc2OlsxLDI3XSw3NzpbMSwyOF0sNzg6WzEsMjldLDc5OlsxLDMxXSw4MDozMH0sezU5OlsyLDg1XSw2MDo4Myw2MjpbMiw4NV0sNjY6WzIsODVdLDc0OlsyLDg1XSw3NTpbMiw4NV0sNzY6WzIsODVdLDc3OlsyLDg1XSw3ODpbMiw4NV0sNzk6WzIsODVdfSx7MTg6NjUsMjk6ODQsMzE6WzIsNTVdLDU3Ojg1LDU4OjY2LDU5OlsxLDQwXSw2Mzo4Niw2NDo2Nyw2NTo2OCw2NjpbMSw2OV0sNjk6WzIsNTVdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MTg6NjUsMzE6WzIsNjFdLDM0Ojg3LDU3Ojg4LDU4OjY2LDU5OlsxLDQwXSw2Mzo4OSw2NDo2Nyw2NTo2OCw2NjpbMSw2OV0sNjk6WzIsNjFdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MTg6NjUsMjA6OTAsMjE6WzIsNDddLDU3OjkxLDU4OjY2LDU5OlsxLDQwXSw2Mzo5Miw2NDo2Nyw2NTo2OCw2NjpbMSw2OV0sNzI6MjMsNzM6MjQsNzQ6WzEsMjVdLDc1OlsxLDI2XSw3NjpbMSwyN10sNzc6WzEsMjhdLDc4OlsxLDI5XSw3OTpbMSwzMV0sODA6MzB9LHszMTpbMSw5M119LHszMTpbMiw3NF0sNTk6WzIsNzRdLDY2OlsyLDc0XSw3NDpbMiw3NF0sNzU6WzIsNzRdLDc2OlsyLDc0XSw3NzpbMiw3NF0sNzg6WzIsNzRdLDc5OlsyLDc0XX0sezMxOlsyLDc2XX0sezIxOlsyLDI0XSwzMTpbMiwyNF0sNTI6WzIsMjRdLDU5OlsyLDI0XSw2MjpbMiwyNF0sNjY6WzIsMjRdLDY5OlsyLDI0XSw3NDpbMiwyNF0sNzU6WzIsMjRdLDc2OlsyLDI0XSw3NzpbMiwyNF0sNzg6WzIsMjRdLDc5OlsyLDI0XX0sezIxOlsyLDI1XSwzMTpbMiwyNV0sNTI6WzIsMjVdLDU5OlsyLDI1XSw2MjpbMiwyNV0sNjY6WzIsMjVdLDY5OlsyLDI1XSw3NDpbMiwyNV0sNzU6WzIsMjVdLDc2OlsyLDI1XSw3NzpbMiwyNV0sNzg6WzIsMjVdLDc5OlsyLDI1XX0sezIxOlsyLDI3XSwzMTpbMiwyN10sNTI6WzIsMjddLDYyOlsyLDI3XSw2NTo5NCw2NjpbMSw5NV0sNjk6WzIsMjddfSx7MjE6WzIsODldLDMxOlsyLDg5XSw1MjpbMiw4OV0sNjI6WzIsODldLDY2OlsyLDg5XSw2OTpbMiw4OV19LHsyMTpbMiw0Ml0sMzE6WzIsNDJdLDUyOlsyLDQyXSw1OTpbMiw0Ml0sNjI6WzIsNDJdLDY2OlsyLDQyXSw2NzpbMSw5Nl0sNjk6WzIsNDJdLDc0OlsyLDQyXSw3NTpbMiw0Ml0sNzY6WzIsNDJdLDc3OlsyLDQyXSw3ODpbMiw0Ml0sNzk6WzIsNDJdLDgxOlsyLDQyXX0sezIxOlsyLDQxXSwzMTpbMiw0MV0sNTI6WzIsNDFdLDU5OlsyLDQxXSw2MjpbMiw0MV0sNjY6WzIsNDFdLDY5OlsyLDQxXSw3NDpbMiw0MV0sNzU6WzIsNDFdLDc2OlsyLDQxXSw3NzpbMiw0MV0sNzg6WzIsNDFdLDc5OlsyLDQxXSw4MTpbMiw0MV19LHs1MjpbMSw5N119LHs1MjpbMiw3OF0sNTk6WzIsNzhdLDY2OlsyLDc4XSw3NDpbMiw3OF0sNzU6WzIsNzhdLDc2OlsyLDc4XSw3NzpbMiw3OF0sNzg6WzIsNzhdLDc5OlsyLDc4XX0sezUyOlsyLDgwXX0sezU6WzIsMTJdLDEzOlsyLDEyXSwxNDpbMiwxMl0sMTc6WzIsMTJdLDI3OlsyLDEyXSwzMjpbMiwxMl0sMzc6WzIsMTJdLDQyOlsyLDEyXSw0NTpbMiwxMl0sNDY6WzIsMTJdLDQ5OlsyLDEyXSw1MzpbMiwxMl19LHsxODo5OCw2NjpbMSwzMl0sNzI6MjMsNzM6MjQsNzQ6WzEsMjVdLDc1OlsxLDI2XSw3NjpbMSwyN10sNzc6WzEsMjhdLDc4OlsxLDI5XSw3OTpbMSwzMV0sODA6MzB9LHszNjo1MCwzNzpbMSw1Ml0sNDE6NTEsNDI6WzEsNTNdLDQzOjEwMCw0NDo5OSw0NTpbMiw3MV19LHszMTpbMiw2NV0sMzg6MTAxLDU5OlsyLDY1XSw2NjpbMiw2NV0sNjk6WzIsNjVdLDc0OlsyLDY1XSw3NTpbMiw2NV0sNzY6WzIsNjVdLDc3OlsyLDY1XSw3ODpbMiw2NV0sNzk6WzIsNjVdfSx7NDU6WzIsMTddfSx7NTpbMiwxM10sMTM6WzIsMTNdLDE0OlsyLDEzXSwxNzpbMiwxM10sMjc6WzIsMTNdLDMyOlsyLDEzXSwzNzpbMiwxM10sNDI6WzIsMTNdLDQ1OlsyLDEzXSw0NjpbMiwxM10sNDk6WzIsMTNdLDUzOlsyLDEzXX0sezMxOlsxLDEwMl19LHszMTpbMiw4Ml0sNTk6WzIsODJdLDY2OlsyLDgyXSw3NDpbMiw4Ml0sNzU6WzIsODJdLDc2OlsyLDgyXSw3NzpbMiw4Ml0sNzg6WzIsODJdLDc5OlsyLDgyXX0sezMxOlsyLDg0XX0sezE4OjY1LDU3OjEwNCw1ODo2Niw1OTpbMSw0MF0sNjE6MTAzLDYyOlsyLDg3XSw2MzoxMDUsNjQ6NjcsNjU6NjgsNjY6WzEsNjldLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7MzA6MTA2LDMxOlsyLDU3XSw2ODoxMDcsNjk6WzEsMTA4XX0sezMxOlsyLDU0XSw1OTpbMiw1NF0sNjY6WzIsNTRdLDY5OlsyLDU0XSw3NDpbMiw1NF0sNzU6WzIsNTRdLDc2OlsyLDU0XSw3NzpbMiw1NF0sNzg6WzIsNTRdLDc5OlsyLDU0XX0sezMxOlsyLDU2XSw2OTpbMiw1Nl19LHszMTpbMiw2M10sMzU6MTA5LDY4OjExMCw2OTpbMSwxMDhdfSx7MzE6WzIsNjBdLDU5OlsyLDYwXSw2NjpbMiw2MF0sNjk6WzIsNjBdLDc0OlsyLDYwXSw3NTpbMiw2MF0sNzY6WzIsNjBdLDc3OlsyLDYwXSw3ODpbMiw2MF0sNzk6WzIsNjBdfSx7MzE6WzIsNjJdLDY5OlsyLDYyXX0sezIxOlsxLDExMV19LHsyMTpbMiw0Nl0sNTk6WzIsNDZdLDY2OlsyLDQ2XSw3NDpbMiw0Nl0sNzU6WzIsNDZdLDc2OlsyLDQ2XSw3NzpbMiw0Nl0sNzg6WzIsNDZdLDc5OlsyLDQ2XX0sezIxOlsyLDQ4XX0sezU6WzIsMjFdLDEzOlsyLDIxXSwxNDpbMiwyMV0sMTc6WzIsMjFdLDI3OlsyLDIxXSwzMjpbMiwyMV0sMzc6WzIsMjFdLDQyOlsyLDIxXSw0NTpbMiwyMV0sNDY6WzIsMjFdLDQ5OlsyLDIxXSw1MzpbMiwyMV19LHsyMTpbMiw5MF0sMzE6WzIsOTBdLDUyOlsyLDkwXSw2MjpbMiw5MF0sNjY6WzIsOTBdLDY5OlsyLDkwXX0sezY3OlsxLDk2XX0sezE4OjY1LDU3OjExMiw1ODo2Niw1OTpbMSw0MF0sNjY6WzEsMzJdLDcyOjIzLDczOjI0LDc0OlsxLDI1XSw3NTpbMSwyNl0sNzY6WzEsMjddLDc3OlsxLDI4XSw3ODpbMSwyOV0sNzk6WzEsMzFdLDgwOjMwfSx7NTpbMiwyMl0sMTM6WzIsMjJdLDE0OlsyLDIyXSwxNzpbMiwyMl0sMjc6WzIsMjJdLDMyOlsyLDIyXSwzNzpbMiwyMl0sNDI6WzIsMjJdLDQ1OlsyLDIyXSw0NjpbMiwyMl0sNDk6WzIsMjJdLDUzOlsyLDIyXX0sezMxOlsxLDExM119LHs0NTpbMiwxOF19LHs0NTpbMiw3Ml19LHsxODo2NSwzMTpbMiw2N10sMzk6MTE0LDU3OjExNSw1ODo2Niw1OTpbMSw0MF0sNjM6MTE2LDY0OjY3LDY1OjY4LDY2OlsxLDY5XSw2OTpbMiw2N10sNzI6MjMsNzM6MjQsNzQ6WzEsMjVdLDc1OlsxLDI2XSw3NjpbMSwyN10sNzc6WzEsMjhdLDc4OlsxLDI5XSw3OTpbMSwzMV0sODA6MzB9LHs1OlsyLDIzXSwxMzpbMiwyM10sMTQ6WzIsMjNdLDE3OlsyLDIzXSwyNzpbMiwyM10sMzI6WzIsMjNdLDM3OlsyLDIzXSw0MjpbMiwyM10sNDU6WzIsMjNdLDQ2OlsyLDIzXSw0OTpbMiwyM10sNTM6WzIsMjNdfSx7NjI6WzEsMTE3XX0sezU5OlsyLDg2XSw2MjpbMiw4Nl0sNjY6WzIsODZdLDc0OlsyLDg2XSw3NTpbMiw4Nl0sNzY6WzIsODZdLDc3OlsyLDg2XSw3ODpbMiw4Nl0sNzk6WzIsODZdfSx7NjI6WzIsODhdfSx7MzE6WzEsMTE4XX0sezMxOlsyLDU4XX0sezY2OlsxLDEyMF0sNzA6MTE5fSx7MzE6WzEsMTIxXX0sezMxOlsyLDY0XX0sezE0OlsyLDExXX0sezIxOlsyLDI4XSwzMTpbMiwyOF0sNTI6WzIsMjhdLDYyOlsyLDI4XSw2NjpbMiwyOF0sNjk6WzIsMjhdfSx7NTpbMiwyMF0sMTM6WzIsMjBdLDE0OlsyLDIwXSwxNzpbMiwyMF0sMjc6WzIsMjBdLDMyOlsyLDIwXSwzNzpbMiwyMF0sNDI6WzIsMjBdLDQ1OlsyLDIwXSw0NjpbMiwyMF0sNDk6WzIsMjBdLDUzOlsyLDIwXX0sezMxOlsyLDY5XSw0MDoxMjIsNjg6MTIzLDY5OlsxLDEwOF19LHszMTpbMiw2Nl0sNTk6WzIsNjZdLDY2OlsyLDY2XSw2OTpbMiw2Nl0sNzQ6WzIsNjZdLDc1OlsyLDY2XSw3NjpbMiw2Nl0sNzc6WzIsNjZdLDc4OlsyLDY2XSw3OTpbMiw2Nl19LHszMTpbMiw2OF0sNjk6WzIsNjhdfSx7MjE6WzIsMjZdLDMxOlsyLDI2XSw1MjpbMiwyNl0sNTk6WzIsMjZdLDYyOlsyLDI2XSw2NjpbMiwyNl0sNjk6WzIsMjZdLDc0OlsyLDI2XSw3NTpbMiwyNl0sNzY6WzIsMjZdLDc3OlsyLDI2XSw3ODpbMiwyNl0sNzk6WzIsMjZdfSx7MTM6WzIsMTRdLDE0OlsyLDE0XSwxNzpbMiwxNF0sMjc6WzIsMTRdLDMyOlsyLDE0XSwzNzpbMiwxNF0sNDI6WzIsMTRdLDQ1OlsyLDE0XSw0NjpbMiwxNF0sNDk6WzIsMTRdLDUzOlsyLDE0XX0sezY2OlsxLDEyNV0sNzE6WzEsMTI0XX0sezY2OlsyLDkxXSw3MTpbMiw5MV19LHsxMzpbMiwxNV0sMTQ6WzIsMTVdLDE3OlsyLDE1XSwyNzpbMiwxNV0sMzI6WzIsMTVdLDQyOlsyLDE1XSw0NTpbMiwxNV0sNDY6WzIsMTVdLDQ5OlsyLDE1XSw1MzpbMiwxNV19LHszMTpbMSwxMjZdfSx7MzE6WzIsNzBdfSx7MzE6WzIsMjldfSx7NjY6WzIsOTJdLDcxOlsyLDkyXX0sezEzOlsyLDE2XSwxNDpbMiwxNl0sMTc6WzIsMTZdLDI3OlsyLDE2XSwzMjpbMiwxNl0sMzc6WzIsMTZdLDQyOlsyLDE2XSw0NTpbMiwxNl0sNDY6WzIsMTZdLDQ5OlsyLDE2XSw1MzpbMiwxNl19XSxcbmRlZmF1bHRBY3Rpb25zOiB7NDpbMiwxXSw0OTpbMiw1MF0sNTE6WzIsMTldLDU1OlsyLDUyXSw2NDpbMiw3Nl0sNzM6WzIsODBdLDc4OlsyLDE3XSw4MjpbMiw4NF0sOTI6WzIsNDhdLDk5OlsyLDE4XSwxMDA6WzIsNzJdLDEwNTpbMiw4OF0sMTA3OlsyLDU4XSwxMTA6WzIsNjRdLDExMTpbMiwxMV0sMTIzOlsyLDcwXSwxMjQ6WzIsMjldfSxcbnBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG59LFxucGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIHJlY292ZXJpbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgIHRoaXMubGV4ZXIuc2V0SW5wdXQoaW5wdXQpO1xuICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5O1xuICAgIHRoaXMueXkubGV4ZXIgPSB0aGlzLmxleGVyO1xuICAgIHRoaXMueXkucGFyc2VyID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHRoaXMubGV4ZXIueXlsbG9jID0ge307XG4gICAgdmFyIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7XG4gICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICBpZiAodHlwZW9mIHRoaXMueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSB0aGlzLnl5LnBhcnNlRXJyb3I7XG4gICAgZnVuY3Rpb24gcG9wU3RhY2sobikge1xuICAgICAgICBzdGFjay5sZW5ndGggPSBzdGFjay5sZW5ndGggLSAyICogbjtcbiAgICAgICAgdnN0YWNrLmxlbmd0aCA9IHZzdGFjay5sZW5ndGggLSBuO1xuICAgICAgICBsc3RhY2subGVuZ3RoID0gbHN0YWNrLmxlbmd0aCAtIG47XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHNlbGYubGV4ZXIubGV4KCkgfHwgMTtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuICAgIHZhciBzeW1ib2wsIHByZUVycm9yU3ltYm9sLCBzdGF0ZSwgYWN0aW9uLCBhLCByLCB5eXZhbCA9IHt9LCBwLCBsZW4sIG5ld1N0YXRlLCBleHBlY3RlZDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICB2YXIgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgICAgIGlmICghcmVjb3ZlcmluZykge1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgdGhpcy5sZXhlci5zaG93UG9zaXRpb24oKSArIFwiXFxuRXhwZWN0aW5nIFwiICsgZXhwZWN0ZWQuam9pbihcIiwgXCIpICsgXCIsIGdvdCAnXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IDE/XCJlbmQgb2YgaW5wdXRcIjpcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7dGV4dDogdGhpcy5sZXhlci5tYXRjaCwgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCwgbGluZTogdGhpcy5sZXhlci55eWxpbmVubywgbG9jOiB5eWxvYywgZXhwZWN0ZWQ6IGV4cGVjdGVkfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHRoaXMubGV4ZXIueXl0ZXh0KTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHRoaXMubGV4ZXIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7XG4gICAgICAgICAgICAgICAgeXlsZW5nID0gdGhpcy5sZXhlci55eWxlbmc7XG4gICAgICAgICAgICAgICAgeXl0ZXh0ID0gdGhpcy5sZXhlci55eXRleHQ7XG4gICAgICAgICAgICAgICAgeXlsaW5lbm8gPSB0aGlzLmxleGVyLnl5bGluZW5vO1xuICAgICAgICAgICAgICAgIHl5bG9jID0gdGhpcy5sZXhlci55eWxsb2M7XG4gICAgICAgICAgICAgICAgaWYgKHJlY292ZXJpbmcgPiAwKVxuICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IHByZUVycm9yU3ltYm9sO1xuICAgICAgICAgICAgICAgIHByZUVycm9yU3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge2ZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSwgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSwgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbiwgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW59O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFjdGlvblsxXSwgdnN0YWNrLCBsc3RhY2spO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxufTtcbi8qIEppc29uIGdlbmVyYXRlZCBsZXhlciAqL1xudmFyIGxleGVyID0gKGZ1bmN0aW9uKCl7XG52YXIgbGV4ZXIgPSAoe0VPRjoxLFxucGFyc2VFcnJvcjpmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHtcbiAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgfSxcbnNldElucHV0OmZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLDBdO1xuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5pbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICB9LFxudW5wdXQ6ZnVuY3Rpb24gKGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG5cbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGgtbGVuLTEpO1xuICAgICAgICAvL3RoaXMueXlsZW5nIC09IGxlbjtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aC0xKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoLTEpO1xuXG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGgtMSkgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGgtMTtcbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcblxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubysxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/XG4gICAgICAgICAgICAgIChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGg6XG4gICAgICAgICAgICAgIHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbm1vcmU6ZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbmxlc3M6ZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICB9LFxucGFzdElucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/ICcuLi4nOicnKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG51cGNvbWluZ0lucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAtbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwyMCkrKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJzonJykpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICB9LFxuc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMrXCJeXCI7XG4gICAgfSxcbm5leHQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgIHRlbXBNYXRjaCxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY29sLFxuICAgICAgICAgICAgbGluZXM7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgICAgdGhpcy55eXRleHQgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaT0wO2kgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy55eWxsb2MgPSB7Zmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vKzEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoLTFdLmxlbmd0aC1saW5lc1tsaW5lcy5sZW5ndGgtMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGh9O1xuICAgICAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX21vcmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgcnVsZXNbaW5kZXhdLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodG9rZW4pIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcrKHRoaXMueXlsaW5lbm8rMSkrJy4gVW5yZWNvZ25pemVkIHRleHQuXFxuJyt0aGlzLnNob3dQb3NpdGlvbigpLFxuICAgICAgICAgICAgICAgICAgICB7dGV4dDogXCJcIiwgdG9rZW46IG51bGwsIGxpbmU6IHRoaXMueXlsaW5lbm99KTtcbiAgICAgICAgfVxuICAgIH0sXG5sZXg6ZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgfSxcbmJlZ2luOmZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICB9LFxucG9wU3RhdGU6ZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpO1xuICAgIH0sXG5fY3VycmVudFJ1bGVzOmZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM7XG4gICAgfSxcbnRvcFN0YXRlOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMl07XG4gICAgfSxcbnB1c2hTdGF0ZTpmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgIH19KTtcbmxleGVyLm9wdGlvbnMgPSB7fTtcbmxleGVyLnBlcmZvcm1BY3Rpb24gPSBmdW5jdGlvbiBhbm9ueW1vdXMoeXkseXlfLCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsWVlfU1RBUlQpIHtcblxuXG5mdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7XG4gIHJldHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoc3RhcnQsIHl5Xy55eWxlbmctZW5kKTtcbn1cblxuXG52YXIgWVlTVEFURT1ZWV9TVEFSVFxuc3dpdGNoKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbmNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoeXlfLnl5dGV4dC5zbGljZSgtMikgPT09IFwiXFxcXFxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoeXlfLnl5dGV4dC5zbGljZSgtMSkgPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZW11XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJtdVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih5eV8ueXl0ZXh0KSByZXR1cm4gMTQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJyZWFrO1xuY2FzZSAxOnJldHVybiAxNDtcbmJyZWFrO1xuY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYnJlYWs7XG5jYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc3Vic3RyKDUsIHl5Xy55eWxlbmctOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYnJlYWs7XG5jYXNlIDQ6IHJldHVybiAxNDsgXG5icmVhaztcbmNhc2UgNTpcbiAgdGhpcy5wb3BTdGF0ZSgpO1xuICByZXR1cm4gMTM7XG5cbmJyZWFrO1xuY2FzZSA2OnJldHVybiA1OTtcbmJyZWFrO1xuY2FzZSA3OnJldHVybiA2MjtcbmJyZWFrO1xuY2FzZSA4OiByZXR1cm4gMTc7IFxuYnJlYWs7XG5jYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYnJlYWs7XG5jYXNlIDEwOnJldHVybiA1MztcbmJyZWFrO1xuY2FzZSAxMTpyZXR1cm4gMjc7XG5icmVhaztcbmNhc2UgMTI6cmV0dXJuIDQ1O1xuYnJlYWs7XG5jYXNlIDEzOnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQyO1xuYnJlYWs7XG5jYXNlIDE0OnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQyO1xuYnJlYWs7XG5jYXNlIDE1OnJldHVybiAzMjtcbmJyZWFrO1xuY2FzZSAxNjpyZXR1cm4gMzc7XG5icmVhaztcbmNhc2UgMTc6cmV0dXJuIDQ5O1xuYnJlYWs7XG5jYXNlIDE4OnJldHVybiA0NjtcbmJyZWFrO1xuY2FzZSAxOTpcbiAgdGhpcy51bnB1dCh5eV8ueXl0ZXh0KTtcbiAgdGhpcy5wb3BTdGF0ZSgpO1xuICB0aGlzLmJlZ2luKCdjb20nKTtcblxuYnJlYWs7XG5jYXNlIDIwOlxuICB0aGlzLnBvcFN0YXRlKCk7XG4gIHJldHVybiAxMztcblxuYnJlYWs7XG5jYXNlIDIxOnJldHVybiA0NjtcbmJyZWFrO1xuY2FzZSAyMjpyZXR1cm4gNjc7XG5icmVhaztcbmNhc2UgMjM6cmV0dXJuIDY2O1xuYnJlYWs7XG5jYXNlIDI0OnJldHVybiA2NjtcbmJyZWFrO1xuY2FzZSAyNTpyZXR1cm4gODE7XG5icmVhaztcbmNhc2UgMjY6Ly8gaWdub3JlIHdoaXRlc3BhY2VcbmJyZWFrO1xuY2FzZSAyNzp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiA1MjtcbmJyZWFrO1xuY2FzZSAyODp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiAzMTtcbmJyZWFrO1xuY2FzZSAyOTp5eV8ueXl0ZXh0ID0gc3RyaXAoMSwyKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKTsgcmV0dXJuIDc0O1xuYnJlYWs7XG5jYXNlIDMwOnl5Xy55eXRleHQgPSBzdHJpcCgxLDIpLnJlcGxhY2UoL1xcXFwnL2csXCInXCIpOyByZXR1cm4gNzQ7XG5icmVhaztcbmNhc2UgMzE6cmV0dXJuIDc5O1xuYnJlYWs7XG5jYXNlIDMyOnJldHVybiA3NjtcbmJyZWFrO1xuY2FzZSAzMzpyZXR1cm4gNzY7XG5icmVhaztcbmNhc2UgMzQ6cmV0dXJuIDc3O1xuYnJlYWs7XG5jYXNlIDM1OnJldHVybiA3ODtcbmJyZWFrO1xuY2FzZSAzNjpyZXR1cm4gNzU7XG5icmVhaztcbmNhc2UgMzc6cmV0dXJuIDY5O1xuYnJlYWs7XG5jYXNlIDM4OnJldHVybiA3MTtcbmJyZWFrO1xuY2FzZSAzOTpyZXR1cm4gNjY7XG5icmVhaztcbmNhc2UgNDA6cmV0dXJuIDY2O1xuYnJlYWs7XG5jYXNlIDQxOnJldHVybiAnSU5WQUxJRCc7XG5icmVhaztcbmNhc2UgNDI6cmV0dXJuIDU7XG5icmVhaztcbn1cbn07XG5sZXhlci5ydWxlcyA9IFsvXig/OlteXFx4MDBdKj8oPz0oXFx7XFx7KSkpLywvXig/OlteXFx4MDBdKykvLC9eKD86W15cXHgwMF17Mix9Pyg/PShcXHtcXHt8XFxcXFxce1xce3xcXFxcXFxcXFxce1xce3wkKSkpLywvXig/Olxce1xce1xce1xce1xcL1teXFxzIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XSsoPz1bPX1cXHNcXC8uXSlcXH1cXH1cXH1cXH0pLywvXig/OlteXFx4MDBdKj8oPz0oXFx7XFx7XFx7XFx7XFwvKSkpLywvXig/OltcXHNcXFNdKj8tLSh+KT9cXH1cXH0pLywvXig/OlxcKCkvLC9eKD86XFwpKS8sL14oPzpcXHtcXHtcXHtcXHspLywvXig/OlxcfVxcfVxcfVxcfSkvLC9eKD86XFx7XFx7KH4pPz4pLywvXig/Olxce1xceyh+KT8jKS8sL14oPzpcXHtcXHsofik/XFwvKS8sL14oPzpcXHtcXHsofik/XFxeXFxzKih+KT9cXH1cXH0pLywvXig/Olxce1xceyh+KT9cXHMqZWxzZVxccyoofik/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFxeKS8sL14oPzpcXHtcXHsofik/XFxzKmVsc2VcXGIpLywvXig/Olxce1xceyh+KT9cXHspLywvXig/Olxce1xceyh+KT8mKS8sL14oPzpcXHtcXHsofik/IS0tKS8sL14oPzpcXHtcXHsofik/IVtcXHNcXFNdKj9cXH1cXH0pLywvXig/Olxce1xceyh+KT8pLywvXig/Oj0pLywvXig/OlxcLlxcLikvLC9eKD86XFwuKD89KFs9fn1cXHNcXC8uKXxdKSkpLywvXig/OltcXC8uXSkvLC9eKD86XFxzKykvLC9eKD86XFx9KH4pP1xcfVxcfSkvLC9eKD86KH4pP1xcfVxcfSkvLC9eKD86XCIoXFxcXFtcIl18W15cIl0pKlwiKS8sL14oPzonKFxcXFxbJ118W14nXSkqJykvLC9eKD86QCkvLC9eKD86dHJ1ZSg/PShbfn1cXHMpXSkpKS8sL14oPzpmYWxzZSg/PShbfn1cXHMpXSkpKS8sL14oPzp1bmRlZmluZWQoPz0oW359XFxzKV0pKSkvLC9eKD86bnVsbCg/PShbfn1cXHMpXSkpKS8sL14oPzotP1swLTldKyg/OlxcLlswLTldKyk/KD89KFt+fVxccyldKSkpLywvXig/OmFzXFxzK1xcfCkvLC9eKD86XFx8KS8sL14oPzooW15cXHMhXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dKyg/PShbPX59XFxzXFwvLil8XSkpKSkvLC9eKD86XFxbW15cXF1dKlxcXSkvLC9eKD86LikvLC9eKD86JCkvXTtcbmxleGVyLmNvbmRpdGlvbnMgPSB7XCJtdVwiOntcInJ1bGVzXCI6WzYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDJdLFwiaW5jbHVzaXZlXCI6ZmFsc2V9LFwiZW11XCI6e1wicnVsZXNcIjpbMl0sXCJpbmNsdXNpdmVcIjpmYWxzZX0sXCJjb21cIjp7XCJydWxlc1wiOls1XSxcImluY2x1c2l2ZVwiOmZhbHNlfSxcInJhd1wiOntcInJ1bGVzXCI6WzMsNF0sXCJpbmNsdXNpdmVcIjpmYWxzZX0sXCJJTklUSUFMXCI6e1wicnVsZXNcIjpbMCwxLDQyXSxcImluY2x1c2l2ZVwiOnRydWV9fTtcbnJldHVybiBsZXhlcjt9KSgpXG5wYXJzZXIubGV4ZXIgPSBsZXhlcjtcbmZ1bmN0aW9uIFBhcnNlciAoKSB7IHRoaXMueXkgPSB7fTsgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbnJldHVybiBuZXcgUGFyc2VyO1xufSkoKTtleHBvcnQgZGVmYXVsdCBoYW5kbGViYXJzO1xuIl19
-enifed('handlebars/compiler/visitor', ['exports', 'handlebars/exception', 'handlebars/compiler/ast'], function (exports, _handlebarsException, _handlebarsCompilerAst) {
+enifed('htmlbars-syntax/handlebars/compiler/visitor', ['exports', 'htmlbars-syntax/handlebars/exception', 'htmlbars-syntax/handlebars/compiler/ast'], function (exports, _htmlbarsSyntaxHandlebarsException, _htmlbarsSyntaxHandlebarsCompilerAst) {
'use strict';
function Visitor() {
this.parents = [];
}
@@ -25816,12 +16289,12 @@
// Visits a given value. If mutating, will replace the value if necessary.
acceptKey: function (node, name) {
var value = this.accept(node[name]);
if (this.mutating) {
// Hacky sanity check:
- if (value && (!value.type || !_handlebarsCompilerAst.default[value.type])) {
- throw new _handlebarsException.default('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
+ if (value && (!value.type || !_htmlbarsSyntaxHandlebarsCompilerAst.default[value.type])) {
+ throw new _htmlbarsSyntaxHandlebarsException.default('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
}
node[name] = value;
}
},
@@ -25829,11 +16302,11 @@
// required keys are not removed.
acceptRequired: function (node, name) {
this.acceptKey(node, name);
if (!node[name]) {
- throw new _handlebarsException.default(node.type + ' requires ' + name);
+ throw new _htmlbarsSyntaxHandlebarsException.default(node.type + ' requires ' + name);
}
},
// Traverses a given array. If mutating, empty respnses will be removed
// for child elements.
@@ -25920,16 +16393,15 @@
}
};
exports.default = Visitor;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvdmlzaXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxXQUFTLE9BQU8sR0FBRztBQUNqQixRQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztHQUNuQjs7QUFFRCxTQUFPLENBQUMsU0FBUyxHQUFHO0FBQ2xCLGVBQVcsRUFBRSxPQUFPO0FBQ3BCLFlBQVEsRUFBRSxLQUFLOzs7QUFHZixhQUFTLEVBQUUsVUFBUyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzlCLFVBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEMsVUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFOztBQUVqQixZQUFJLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQywrQkFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUEsQUFBQyxFQUFFO0FBQzlDLGdCQUFNLGlDQUFjLHdCQUF3QixHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcseUJBQXlCLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEg7QUFDRCxZQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO09BQ3BCO0tBQ0Y7Ozs7QUFJRCxrQkFBYyxFQUFFLFVBQVMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNuQyxVQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFM0IsVUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNmLGNBQU0saUNBQWMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7T0FDdEQ7S0FDRjs7OztBQUlELGVBQVcsRUFBRSxVQUFTLEtBQUssRUFBRTtBQUMzQixXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdB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QixFQUFFO0FBQ3hDLGlCQUFhLEVBQUUsd0JBQXVCLEVBQUU7QUFDeEMsa0JBQWMsRUFBRSxzQkFBcUIsRUFBRTtBQUN2QyxvQkFBZ0IsRUFBRSx5QkFBd0IsRUFBRTtBQUM1QyxlQUFXLEVBQUUseUJBQXdCLEVBQUU7O0FBRXZDLFFBQUksRUFBRSxVQUFTLElBQUksRUFBRTtBQUNuQixVQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5QjtBQUNELFlBQVEsRUFBRSxVQUFTLElBQUksRUFBRTtBQUN2QixVQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwQztHQUNGLENBQUM7O29CQUVhLE9BQU8iLCJmaWxlIjoiaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuaW1wb3J0IEFTVCBmcm9tICcuL2FzdCc7XG5cbmZ1bmN0aW9uIFZpc2l0b3IoKSB7XG4gIHRoaXMucGFyZW50cyA9IFtdO1xufVxuXG5WaXNpdG9yLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFZpc2l0b3IsXG4gIG11dGF0aW5nOiBmYWxzZSxcblxuICAvLyBWaXNpdHMgYSBnaXZlbiB2YWx1ZS4gSWYgbXV0YXRpbmcsIHdpbGwgcmVwbGFjZSB0aGUgdmFsdWUgaWYgbmVjZXNzYXJ5LlxuICBhY2NlcHRLZXk6IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTtcbiAgICBpZiAodGhpcy5tdXRhdGluZykge1xuICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOlxuICAgICAgaWYgKHZhbHVlICYmICghdmFsdWUudHlwZSB8fCAhQVNUW3ZhbHVlLnR5cGVdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIicgKyB2YWx1ZS50eXBlICsgJ1wiIGZvdW5kIHdoZW4gYWNjZXB0aW5nICcgKyBuYW1lICsgJyBvbiAnICsgbm9kZS50eXBlKTtcbiAgICAgIH1cbiAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmVcbiAgLy8gcmVxdWlyZWQga2V5cyBhcmUgbm90IHJlbW92ZWQuXG4gIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbihub2RlLCBuYW1lKSB7XG4gICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7XG5cbiAgICBpZiAoIW5vZGVbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkgcmVzcG5zZXMgd2lsbCBiZSByZW1vdmVkXG4gIC8vIGZvciBjaGlsZCBlbGVtZW50cy5cbiAgYWNjZXB0QXJyYXk6IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0S2V5KGFycmF5LCBpKTtcblxuICAgICAgaWYgKCFhcnJheVtpXSkge1xuICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGktLTtcbiAgICAgICAgbC0tO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhY2NlcHQ6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0O1xuXG4gICAgbGV0IHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTtcblxuICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgdGhpcy5hY2NlcHRBcnJheShwcm9ncmFtLmJvZHkpO1xuICB9LFxuXG4gIE11c3RhY2hlU3RhdGVtZW50OiBmdW5jdGlvbihtdXN0YWNoZSkge1xuICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7XG4gICAgdGhpcy5hY2NlcHRBcnJheShtdXN0YWNoZS5wYXJhbXMpO1xuICAgIHRoaXMuYWNjZXB0S2V5KG11c3RhY2hlLCAnaGFzaCcpO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihibG9jaykge1xuICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQoYmxvY2ssICdwYXRoJyk7XG4gICAgdGhpcy5hY2NlcHRBcnJheShibG9jay5wYXJhbXMpO1xuICAgIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaGFzaCcpO1xuXG4gICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7XG4gICAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQocGFydGlhbCwgJ25hbWUnKTtcbiAgICB0aGlzLmFjY2VwdEFycmF5KHBhcnRpYWwucGFyYW1zKTtcbiAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uKC8qIGNvbnRlbnQgKi8pIHt9LFxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbigvKiBjb21tZW50ICovKSB7fSxcblxuICBTdWJFeHByZXNzaW9uOiBmdW5jdGlvbihzZXhwcikge1xuICAgIHRoaXMuYWNjZXB0UmVxdWlyZWQoc2V4cHIsICdwYXRoJyk7XG4gICAgdGhpcy5hY2NlcHRBcnJheShzZXhwci5wYXJhbXMpO1xuICAgIHRoaXMuYWNjZXB0S2V5KHNleHByLCAnaGFzaCcpO1xuICB9LFxuXG4gIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbigvKiBwYXRoICovKSB7fSxcblxuICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbigvKiBzdHJpbmcgKi8pIHt9LFxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbigvKiBudW1iZXIgKi8pIHt9LFxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oLyogYm9vbCAqLykge30sXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uKC8qIGxpdGVyYWwgKi8pIHt9LFxuICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24oLyogbGl0ZXJhbCAqLykge30sXG5cbiAgSGFzaDogZnVuY3Rpb24oaGFzaCkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7XG4gIH0sXG4gIEhhc2hQYWlyOiBmdW5jdGlvbihwYWlyKSB7XG4gICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmlzaXRvcjtcbiJdfQ==
-enifed('handlebars/compiler/whitespace-control', ['exports', 'handlebars/compiler/visitor'], function (exports, _handlebarsCompilerVisitor) {
+enifed('htmlbars-syntax/handlebars/compiler/whitespace-control', ['exports', 'htmlbars-syntax/handlebars/compiler/visitor'], function (exports, _htmlbarsSyntaxHandlebarsCompilerVisitor) {
'use strict';
function WhitespaceControl() {}
- WhitespaceControl.prototype = new _handlebarsCompilerVisitor.default();
+ WhitespaceControl.prototype = new _htmlbarsSyntaxHandlebarsCompilerVisitor.default();
WhitespaceControl.prototype.Program = function (program) {
var isRoot = !this.isRootSeen;
this.isRootSeen = true;
@@ -26126,12 +16598,11 @@
return current.leftStripped;
}
exports.default = WhitespaceControl;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvY29tcGlsZXIvd2hpdGVzcGFjZS1jb250cm9sLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLFdBQVMsaUJBQWlCLEdBQUcsRUFDNUI7QUFDRCxtQkFBaUIsQ0FBQyxTQUFTLEdBQUcsd0NBQWEsQ0FBQzs7QUFFNUMsbUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUN0RCxRQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDOUIsUUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7O0FBRXZCLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxVQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1VBQ2pCLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUVqQyxVQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YsaUJBQVM7T0FDVjs7QUFFRCxVQUFJLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO1VBQ3JELGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO1VBRXJELGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLGlCQUFpQjtVQUMxRCxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxpQkFBaUI7VUFDNUQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDOztBQUV4RixVQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7QUFDZixpQkFBUyxDQUFDLElB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QVEsQ0FBQztBQUNsRCxXQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUM7R0FDN0I7O29CQUVjLGlCQUFpQiIsImZpbGUiOiJoYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWaXNpdG9yIGZyb20gJy4vdmlzaXRvcic7XG5cbmZ1bmN0aW9uIFdoaXRlc3BhY2VDb250cm9sKCkge1xufVxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IFZpc2l0b3IoKTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLlByb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFtKSB7XG4gIGxldCBpc1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuO1xuICB0aGlzLmlzUm9vdFNlZW4gPSB0cnVlO1xuXG4gIGxldCBib2R5ID0gcHJvZ3JhbS5ib2R5O1xuICBmb3IgKGxldCBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBib2R5W2ldLFxuICAgICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpO1xuXG4gICAgaWYgKCFzdHJpcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IF9pc1ByZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLFxuICAgICAgICBfaXNOZXh0V2hpdGVzcGFjZSA9IGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSxcblxuICAgICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5TdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLFxuICAgICAgICBjbG9zZVN0YW5kYWxvbmUgPSBzdHJpcC5jbG9zZVN0YW5kYWxvbmUgJiYgX2lzTmV4dFdoaXRlc3BhY2UsXG4gICAgICAgIGlubGluZVN0YW5kYWxvbmUgPSBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlO1xuXG4gICAgaWYgKHN0cmlwLmNsb3NlKSB7XG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChzdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoaW5saW5lU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhbmRhbG9uZSBub2RlLCBzYXZlIHRoZSBpbmRlbnQgaW5mbyBmb3IgcGFydGlhbHNcbiAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZVxuICAgICAgICAgIGN1cnJlbnQuaW5kZW50ID0gKC8oWyBcXHRdKyQpLykuZXhlYyhib2R5W2kgLSAxXS5vcmlnaW5hbClbMV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wZW5TdGFuZGFsb25lKSB7XG4gICAgICBvbWl0UmlnaHQoKGN1cnJlbnQucHJvZ3JhbSB8fCBjdXJyZW50LmludmVyc2UpLmJvZHkpO1xuXG4gICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seVxuICAgICAgb21pdExlZnQoYm9keSwgaSk7XG4gICAgfVxuICAgIGlmIChjbG9zZVN0YW5kYWxvbmUpIHtcbiAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlXG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSk7XG5cbiAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihibG9jaykge1xuICB0aGlzLmFjY2VwdChibG9jay5wcm9ncmFtKTtcbiAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7XG5cbiAgLy8gRmluZCB0aGUgaW52ZXJzZSBwcm9ncmFtIHRoYXQgaXMgaW52b2xlZCB3aXRoIHdoaXRlc3BhY2Ugc3RyaXBwaW5nLlxuICBsZXQgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0gfHwgYmxvY2suaW52ZXJzZSxcbiAgICAgIGludmVyc2UgPSBibG9jay5wcm9ncmFtICYmIGJsb2NrLmludmVyc2UsXG4gICAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLFxuICAgICAgbGFzdEludmVyc2UgPSBpbnZlcnNlO1xuXG4gIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkge1xuICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UuYm9keVswXS5wcm9ncmFtO1xuXG4gICAgLy8gV2FsayB0aGUgaW52ZXJzZSBjaGFpbiB0byBmaW5kIHRoZSBsYXN0IGludmVyc2UgdGhhdCBpcyBhY3R1YWxseSBpbiB0aGUgY2hhaW4uXG4gICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQpIHtcbiAgICAgIGxhc3RJbnZlcnNlID0gbGFzdEludmVyc2UuYm9keVtsYXN0SW52ZXJzZS5ib2R5Lmxlbmd0aCAtIDFdLnByb2dyYW07XG4gICAgfVxuICB9XG5cbiAgbGV0IHN0cmlwID0ge1xuICAgIG9wZW46IGJsb2NrLm9wZW5TdHJpcC5vcGVuLFxuICAgIGNsb3NlOiBibG9jay5jbG9zZVN0cmlwLmNsb3NlLFxuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBzdGFuZGFsb25lIGNhbmRpYWN5LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29udGVudCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25lXG4gICAgLy8gc28gb3VyIHBhcmVudCBjYW4gZGV0ZXJtaW5lIGlmIHdlIGFjdHVhbGx5IGFyZSBzdGFuZGFsb25lXG4gICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSxcbiAgICBjbG9zZVN0YW5kYWxvbmU6IGlzUHJldldoaXRlc3BhY2UoKGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KVxuICB9O1xuXG4gIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHtcbiAgICBvbWl0UmlnaHQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgfVxuXG4gIGlmIChpbnZlcnNlKSB7XG4gICAgbGV0IGludmVyc2VTdHJpcCA9IGJsb2NrLmludmVyc2VTdHJpcDtcblxuICAgIGlmIChpbnZlcnNlU3RyaXAub3Blbikge1xuICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoaW52ZXJzZVN0cmlwLmNsb3NlKSB7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoYmxvY2suY2xvc2VTdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHN0YW5kYWxvbmUgZWxzZSBzdGF0bWVudHNcbiAgICBpZiAoaXNQcmV2V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpXG4gICAgICAgICYmIGlzTmV4dFdoaXRlc3BhY2UoZmlyc3RJbnZlcnNlLmJvZHkpKSB7XG4gICAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHkpO1xuICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYmxvY2suY2xvc2VTdHJpcC5vcGVuKSB7XG4gICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgfVxuXG4gIHJldHVybiBzdHJpcDtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIHJldHVybiBtdXN0YWNoZS5zdHJpcDtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50ID1cbiAgICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgbGV0IHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTtcbiAgcmV0dXJuIHtcbiAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLFxuICAgIG9wZW46IHN0cmlwLm9wZW4sXG4gICAgY2xvc2U6IHN0cmlwLmNsb3NlXG4gIH07XG59O1xuXG5cbmZ1bmN0aW9uIGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7XG4gIGlmIChpID09PSB1bmRlZmluZWQpIHtcbiAgICBpID0gYm9keS5sZW5ndGg7XG4gIH1cblxuICAvLyBOb2RlcyB0aGF0IGVuZCB3aXRoIG5ld2xpbmVzIGFyZSBjb25zaWRlcmVkIHdoaXRlc3BhY2UgKGJ1dCBhcmUgc3BlY2lhbFxuICAvLyBjYXNlZCBmb3Igc3RyaXAgb3BlcmF0aW9ucylcbiAgbGV0IHByZXYgPSBib2R5W2kgLSAxXSxcbiAgICAgIHNpYmxpbmcgPSBib2R5W2kgLSAyXTtcbiAgaWYgKCFwcmV2KSB7XG4gICAgcmV0dXJuIGlzUm9vdDtcbiAgfVxuXG4gIGlmIChwcmV2LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50Jykge1xuICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gKC9cXHI/XFxuXFxzKj8kLykgOiAoLyhefFxccj9cXG4pXFxzKj8kLykpLnRlc3QocHJldi5vcmlnaW5hbCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7XG4gIGlmIChpID09PSB1bmRlZmluZWQpIHtcbiAgICBpID0gLTE7XG4gIH1cblxuICBsZXQgbmV4dCA9IGJvZHlbaSArIDFdLFxuICAgICAgc2libGluZyA9IGJvZHlbaSArIDJdO1xuICBpZiAoIW5leHQpIHtcbiAgICByZXR1cm4gaXNSb290O1xuICB9XG5cbiAgaWYgKG5leHQudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7XG4gICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAoL15cXHMqP1xccj9cXG4vKSA6ICgvXlxccyo/KFxccj9cXG58JCkvKSkudGVzdChuZXh0Lm9yaWdpbmFsKTtcbiAgfVxufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgcmlnaHQgb2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuXG4vLyBJLmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLlxuLy9cbi8vIElmIGkgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkge1xuICBsZXQgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gMCA6IGkgKyAxXTtcbiAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQudHlwZSAhPT0gJ0NvbnRlbnRTdGF0ZW1lbnQnIHx8ICghbXVsdGlwbGUgJiYgY3VycmVudC5yaWdodFN0cmlwcGVkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAoL15cXHMrLykgOiAoL15bIFxcdF0qXFxyP1xcbj8vKSwgJycpO1xuICBjdXJyZW50LnJpZ2h0U3RyaXBwZWQgPSBjdXJyZW50LnZhbHVlICE9PSBvcmlnaW5hbDtcbn1cblxuLy8gTWFya3MgdGhlIG5vZGUgdG8gdGhlIGxlZnQgb2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuXG4vLyBJLmUuICcgJ3t7Zm9vfX0gd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLlxuLy9cbi8vIElmIGkgaXMgdW5kZWZpbmVkIHRoZW4gdGhlIGxhc3QgY2hpbGQgd2lsbCBiZSBtYXJrZWQgYXMgc3VjaC5cbi8vXG4vLyBJZiBtdWxpdHBsZSBpcyB0cnV0aHkgdGhlbiBhbGwgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkIG91dCB1bnRpbCBub24td2hpdGVzcGFjZVxuLy8gY29udGVudCBpcyBtZXQuXG5mdW5jdGlvbiBvbWl0TGVmdChib2R5LCBpLCBtdWx0aXBsZSkge1xuICBsZXQgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gYm9keS5sZW5ndGggLSAxIDogaSAtIDFdO1xuICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgKCFtdWx0aXBsZSAmJiBjdXJyZW50LmxlZnRTdHJpcHBlZCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWVkZWQgYnkgYSBub24tY29udGVudCBub2RlLlxuICBsZXQgb3JpZ2luYWwgPSBjdXJyZW50LnZhbHVlO1xuICBjdXJyZW50LnZhbHVlID0gY3VycmVudC52YWx1ZS5yZXBsYWNlKG11bHRpcGxlID8gKC9cXHMrJC8pIDogKC9bIFxcdF0rJC8pLCAnJyk7XG4gIGN1cnJlbnQubGVmdFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7XG4gIHJldHVybiBjdXJyZW50LmxlZnRTdHJpcHBlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgV2hpdGVzcGFjZUNvbnRyb2w7XG4iXX0=
-enifed('handlebars/exception', ['exports'], function (exports) {
+enifed('htmlbars-syntax/handlebars/exception', ['exports'], function (exports) {
'use strict';
var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
function Exception(message, node) {
@@ -26164,12 +16635,11 @@
Exception.prototype = new Error();
exports.default = Exception;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvZXhjZXB0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLE1BQU0sVUFBVSxHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBRW5HLFdBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDaEMsUUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHO1FBQ3RCLElBQUksWUFBQTtRQUNKLE1BQU0sWUFBQSxDQUFDO0FBQ1gsUUFBSSxHQUFHLEVBQUU7QUFDUCxVQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsWUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztBQUUxQixhQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0tBQ3hDOztBQUVELFFBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxTQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxVQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzlDOztBQUVELFFBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFdBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDMUM7O0FBRUQsUUFBSSxHQUFHLEVBQUU7QUFDUCxVQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QixVQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztLQUN0QjtHQUNGOztBQUVELFdBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQzs7b0JBRW5CLFNBQVMiLCJmaWxlIjoiaGFuZGxlYmFycy9leGNlcHRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnbWVzc2FnZScsICduYW1lJywgJ251bWJlcicsICdzdGFjayddO1xuXG5mdW5jdGlvbiBFeGNlcHRpb24obWVzc2FnZSwgbm9kZSkge1xuICBsZXQgbG9jID0gbm9kZSAmJiBub2RlLmxvYyxcbiAgICAgIGxpbmUsXG4gICAgICBjb2x1bW47XG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgY29sdW1uID0gbG9jLnN0YXJ0LmNvbHVtbjtcblxuICAgIG1lc3NhZ2UgKz0gJyAtICcgKyBsaW5lICsgJzonICsgY29sdW1uO1xuICB9XG5cbiAgbGV0IHRtcCA9IEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuXG4gIC8vIFVuZm9ydHVuYXRlbHkgZXJyb3JzIGFyZSBub3QgZW51bWVyYWJsZSBpbiBDaHJvbWUgKGF0IGxlYXN0KSwgc28gYGZvciBwcm9wIGluIHRtcGAgZG9lc24ndCB3b3JrLlxuICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBlcnJvclByb3BzLmxlbmd0aDsgaWR4KyspIHtcbiAgICB0aGlzW2Vycm9yUHJvcHNbaWR4XV0gPSB0bXBbZXJyb3JQcm9wc1tpZHhdXTtcbiAgfVxuXG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEV4Y2VwdGlvbik7XG4gIH1cblxuICBpZiAobG9jKSB7XG4gICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjtcbiJdfQ==
-enifed('handlebars/safe-string', ['exports'], function (exports) {
+enifed('htmlbars-syntax/handlebars/safe-string', ['exports'], function (exports) {
// Build out our basic SafeString type
'use strict';
function SafeString(string) {
this.string = string;
@@ -26179,12 +16649,11 @@
return '' + this.string;
};
exports.default = SafeString;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLFdBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUMxQixRQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxZQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxZQUFXO0FBQ3ZFLFdBQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7R0FDekIsQ0FBQzs7b0JBRWEsVUFBVSIsImZpbGUiOiJoYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQnVpbGQgb3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGVcbmZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5nKSB7XG4gIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xufVxuXG5TYWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gJycgKyB0aGlzLnN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVTdHJpbmc7XG4iXX0=
-enifed('handlebars/utils', ['exports'], function (exports) {
+enifed('htmlbars-syntax/handlebars/utils', ['exports'], function (exports) {
'use strict';
exports.extend = extend;
exports.indexOf = indexOf;
exports.escapeExpression = escapeExpression;
@@ -26296,10 +16765,2129 @@
function appendContextPath(contextPath, id) {
return (contextPath ? contextPath + '.' : '') + id;
}
});
-//# sourceMappingURL=data:application/json;base64,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LENBQUM7S0FDdEI7O0FBRUQsUUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFBRSxhQUFPLE1BQU0sQ0FBQztLQUFFO0FBQzlDLFdBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7R0FDN0M7O0FBRU0sV0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzdCLFFBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixhQUFPLElBQUksQ0FBQztLQUNiLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDL0MsYUFBTyxJQUFJLENBQUM7S0FDYixNQUFNO0FBQ0wsYUFBTyxLQUFLLENBQUM7S0FDZDtHQUNGOztBQUVNLFdBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7QUFDdkMsVUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7QUFDbEIsV0FBTyxNQUFNLENBQUM7R0FDZjs7QUFFTSxXQUFTLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUU7QUFDakQsV0FBTyxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQSxHQUFJLEVBQUUsQ0FBQztHQUNwRCIsImZpbGUiOiJoYW5kbGViYXJzL3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXNjYXBlID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gIFwiJ1wiOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufTtcblxuY29uc3QgYmFkQ2hhcnMgPSAvWyY8PlwiJ2BdL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYF0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyplc2xpbnQtZGlzYWJsZSBmdW5jLXN0eWxlLCBuby12YXIgKi9cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn07XG4vLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmlcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaXNGdW5jdGlvbigveC8pKSB7XG4gIGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnQgdmFyIGlzRnVuY3Rpb247XG4vKmVzbGludC1lbmFibGUgZnVuYy1zdHlsZSwgbm8tdmFyICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSA/IHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7XG59O1xuXG4vLyBPbGRlciBJRSB2ZXJzaW9ucyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpbmRleE9mIHNvIHdlIG11c3QgaW1wbGVtZW50IG91ciBvd24sIHNhZGx5LlxuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsgcmV0dXJuIHN0cmluZzsgfVxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYmFkQ2hhcnMsIGVzY2FwZUNoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykge1xuICBwYXJhbXMucGF0aCA9IGlkcztcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkge1xuICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAnJykgKyBpZDtcbn1cbiJdfQ==
+enifed("htmlbars-syntax/parser", ["exports", "htmlbars-syntax/handlebars/compiler/base", "htmlbars-syntax", "simple-html-tokenizer/evented-tokenizer", "simple-html-tokenizer/entity-parser", "simple-html-tokenizer/html5-named-char-refs", "htmlbars-syntax/parser/handlebars-node-visitors", "htmlbars-syntax/parser/tokenizer-event-handlers"], function (exports, _htmlbarsSyntaxHandlebarsCompilerBase, _htmlbarsSyntax, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerEntityParser, _simpleHtmlTokenizerHtml5NamedCharRefs, _htmlbarsSyntaxParserHandlebarsNodeVisitors, _htmlbarsSyntaxParserTokenizerEventHandlers) {
+ "use strict";
+
+ exports.preprocess = preprocess;
+ exports.Parser = Parser;
+
+ function preprocess(html, options) {
+ var ast = typeof html === 'object' ? html : _htmlbarsSyntaxHandlebarsCompilerBase.parse(html);
+ var combined = new Parser(html, options).acceptNode(ast);
+
+ if (options && options.plugins && options.plugins.ast) {
+ for (var i = 0, l = options.plugins.ast.length; i < l; i++) {
+ var plugin = new options.plugins.ast[i](options);
+
+ plugin.syntax = _htmlbarsSyntax;
+
+ combined = plugin.transform(combined);
+ }
+ }
+
+ return combined;
+ }
+
+ exports.default = preprocess;
+
+ var entityParser = new _simpleHtmlTokenizerEntityParser.default(_simpleHtmlTokenizerHtml5NamedCharRefs.default);
+
+ function Parser(source, options) {
+ this.options = options || {};
+ this.elementStack = [];
+ this.tokenizer = new _simpleHtmlTokenizerEventedTokenizer.default(this, entityParser);
+
+ this.currentNode = null;
+ this.currentAttribute = null;
+
+ if (typeof source === 'string') {
+ this.source = source.split(/(?:\r\n?|\n)/g);
+ }
+ }
+
+ for (var key in _htmlbarsSyntaxParserHandlebarsNodeVisitors.default) {
+ Parser.prototype[key] = _htmlbarsSyntaxParserHandlebarsNodeVisitors.default[key];
+ }
+
+ for (var key in _htmlbarsSyntaxParserTokenizerEventHandlers.default) {
+ Parser.prototype[key] = _htmlbarsSyntaxParserTokenizerEventHandlers.default[key];
+ }
+
+ Parser.prototype.acceptNode = function (node) {
+ return this[node.type](node);
+ };
+
+ Parser.prototype.currentElement = function () {
+ return this.elementStack[this.elementStack.length - 1];
+ };
+
+ Parser.prototype.sourceForMustache = function (mustache) {
+ var firstLine = mustache.loc.start.line - 1;
+ var lastLine = mustache.loc.end.line - 1;
+ var currentLine = firstLine - 1;
+ var firstColumn = mustache.loc.start.column + 2;
+ var lastColumn = mustache.loc.end.column - 2;
+ var string = [];
+ var line;
+
+ if (!this.source) {
+ return '{{' + mustache.path.id.original + '}}';
+ }
+
+ while (currentLine < lastLine) {
+ currentLine++;
+ line = this.source[currentLine];
+
+ if (currentLine === firstLine) {
+ if (firstLine === lastLine) {
+ string.push(line.slice(firstColumn, lastColumn));
+ } else {
+ string.push(line.slice(firstColumn));
+ }
+ } else if (currentLine === lastLine) {
+ string.push(line.slice(0, lastColumn));
+ } else {
+ string.push(line);
+ }
+ }
+
+ return string.join('\n');
+ };
+});
+enifed("htmlbars-syntax/parser/handlebars-node-visitors", ["exports", "htmlbars-syntax/builders", "htmlbars-syntax/utils"], function (exports, _htmlbarsSyntaxBuilders, _htmlbarsSyntaxUtils) {
+ "use strict";
+
+ exports.default = {
+
+ Program: function (program) {
+ var body = [];
+ var node = _htmlbarsSyntaxBuilders.default.program(body, program.blockParams, program.loc);
+ var i,
+ l = program.body.length;
+
+ this.elementStack.push(node);
+
+ if (l === 0) {
+ return this.elementStack.pop();
+ }
+
+ for (i = 0; i < l; i++) {
+ this.acceptNode(program.body[i]);
+ }
+
+ // Ensure that that the element stack is balanced properly.
+ var poppedNode = this.elementStack.pop();
+ if (poppedNode !== node) {
+ throw new Error("Unclosed element `" + poppedNode.tag + "` (on line " + poppedNode.loc.start.line + ").");
+ }
+
+ return node;
+ },
+
+ BlockStatement: function (block) {
+ delete block.inverseStrip;
+ delete block.openString;
+ delete block.closeStrip;
+
+ if (this.tokenizer.state === 'comment') {
+ this.appendToCommentData('{{' + this.sourceForMustache(block) + '}}');
+ return;
+ }
+
+ if (this.tokenizer.state !== 'comment' && this.tokenizer.state !== 'data' && this.tokenizer.state !== 'beforeData') {
+ throw new Error("A block may only be used inside an HTML element or another block.");
+ }
+
+ block = acceptCommonNodes(this, block);
+ var program = block.program ? this.acceptNode(block.program) : null;
+ var inverse = block.inverse ? this.acceptNode(block.inverse) : null;
+
+ var node = _htmlbarsSyntaxBuilders.default.block(block.path, block.params, block.hash, program, inverse, block.loc);
+ var parentProgram = this.currentElement();
+ _htmlbarsSyntaxUtils.appendChild(parentProgram, node);
+ },
+
+ MustacheStatement: function (rawMustache) {
+ var tokenizer = this.tokenizer;
+ var path = rawMustache.path;
+ var params = rawMustache.params;
+ var hash = rawMustache.hash;
+ var escaped = rawMustache.escaped;
+ var loc = rawMustache.loc;
+
+ var mustache = _htmlbarsSyntaxBuilders.default.mustache(path, params, hash, !escaped, loc);
+
+ if (tokenizer.state === 'comment') {
+ this.appendToCommentData('{{' + this.sourceForMustache(mustache) + '}}');
+ return;
+ }
+
+ acceptCommonNodes(this, mustache);
+
+ switch (tokenizer.state) {
+ // Tag helpers
+ case "tagName":
+ addElementModifier(this.currentNode, mustache);
+ tokenizer.state = "beforeAttributeName";
+ break;
+ case "beforeAttributeName":
+ addElementModifier(this.currentNode, mustache);
+ break;
+ case "attributeName":
+ case "afterAttributeName":
+ this.beginAttributeValue(false);
+ this.finishAttributeValue();
+ addElementModifier(this.currentNode, mustache);
+ tokenizer.state = "beforeAttributeName";
+ break;
+ case "afterAttributeValueQuoted":
+ addElementModifier(this.currentNode, mustache);
+ tokenizer.state = "beforeAttributeName";
+ break;
+
+ // Attribute values
+ case "beforeAttributeValue":
+ appendDynamicAttributeValuePart(this.currentAttribute, mustache);
+ tokenizer.state = 'attributeValueUnquoted';
+ break;
+ case "attributeValueDoubleQuoted":
+ case "attributeValueSingleQuoted":
+ case "attributeValueUnquoted":
+ appendDynamicAttributeValuePart(this.currentAttribute, mustache);
+ break;
+
+ // TODO: Only append child when the tokenizer state makes
+ // sense to do so, otherwise throw an error.
+ default:
+ _htmlbarsSyntaxUtils.appendChild(this.currentElement(), mustache);
+ }
+
+ return mustache;
+ },
+
+ ContentStatement: function (content) {
+ updateTokenizerLocation(this.tokenizer, content);
+
+ this.tokenizer.tokenizePart(content.value);
+ this.tokenizer.flushData();
+ },
+
+ CommentStatement: function (comment) {
+ return comment;
+ },
+
+ PartialStatement: function (partial) {
+ _htmlbarsSyntaxUtils.appendChild(this.currentElement(), partial);
+ return partial;
+ },
+
+ SubExpression: function (sexpr) {
+ return acceptCommonNodes(this, sexpr);
+ },
+
+ PathExpression: function (path) {
+ delete path.data;
+ delete path.depth;
+
+ return path;
+ },
+
+ Hash: function (hash) {
+ for (var i = 0; i < hash.pairs.length; i++) {
+ this.acceptNode(hash.pairs[i].value);
+ }
+
+ return hash;
+ },
+
+ StringLiteral: function () {},
+ BooleanLiteral: function () {},
+ NumberLiteral: function () {},
+ UndefinedLiteral: function () {},
+ NullLiteral: function () {}
+ };
+
+ function calculateRightStrippedOffsets(original, value) {
+ if (value === '') {
+ // if it is empty, just return the count of newlines
+ // in original
+ return {
+ lines: original.split("\n").length - 1,
+ columns: 0
+ };
+ }
+
+ // otherwise, return the number of newlines prior to
+ // `value`
+ var difference = original.split(value)[0];
+ var lines = difference.split(/\n/);
+ var lineCount = lines.length - 1;
+
+ return {
+ lines: lineCount,
+ columns: lines[lineCount].length
+ };
+ }
+
+ function updateTokenizerLocation(tokenizer, content) {
+ var line = content.loc.start.line;
+ var column = content.loc.start.column;
+
+ if (content.rightStripped) {
+ var offsets = calculateRightStrippedOffsets(content.original, content.value);
+
+ line = line + offsets.lines;
+ if (offsets.lines) {
+ column = offsets.columns;
+ } else {
+ column = column + offsets.columns;
+ }
+ }
+
+ tokenizer.line = line;
+ tokenizer.column = column;
+ }
+
+ function acceptCommonNodes(compiler, node) {
+ compiler.acceptNode(node.path);
+
+ if (node.params) {
+ for (var i = 0; i < node.params.length; i++) {
+ compiler.acceptNode(node.params[i]);
+ }
+ } else {
+ node.params = [];
+ }
+
+ if (node.hash) {
+ compiler.acceptNode(node.hash);
+ } else {
+ node.hash = _htmlbarsSyntaxBuilders.default.hash();
+ }
+
+ return node;
+ }
+
+ function addElementModifier(element, mustache) {
+ var path = mustache.path;
+ var params = mustache.params;
+ var hash = mustache.hash;
+ var loc = mustache.loc;
+
+ var modifier = _htmlbarsSyntaxBuilders.default.elementModifier(path, params, hash, loc);
+ element.modifiers.push(modifier);
+ }
+
+ function appendDynamicAttributeValuePart(attribute, part) {
+ attribute.isDynamic = true;
+ attribute.parts.push(part);
+ }
+});
+enifed("htmlbars-syntax/parser/tokenizer-event-handlers", ["exports", "htmlbars-util/void-tag-names", "htmlbars-syntax/builders", "htmlbars-syntax/utils"], function (exports, _htmlbarsUtilVoidTagNames, _htmlbarsSyntaxBuilders, _htmlbarsSyntaxUtils) {
+ "use strict";
+
+ exports.default = {
+ reset: function () {
+ this.currentNode = null;
+ },
+
+ // Comment
+
+ beginComment: function () {
+ this.currentNode = _htmlbarsSyntaxBuilders.default.comment("");
+ this.currentNode.loc = {
+ source: null,
+ start: _htmlbarsSyntaxBuilders.default.pos(this.tagOpenLine, this.tagOpenColumn),
+ end: null
+ };
+ },
+
+ appendToCommentData: function (char) {
+ this.currentNode.value += char;
+ },
+
+ finishComment: function () {
+ this.currentNode.loc.end = _htmlbarsSyntaxBuilders.default.pos(this.tokenizer.line, this.tokenizer.column);
+
+ _htmlbarsSyntaxUtils.appendChild(this.currentElement(), this.currentNode);
+ },
+
+ // Data
+
+ beginData: function () {
+ this.currentNode = _htmlbarsSyntaxBuilders.default.text();
+ this.currentNode.loc = {
+ source: null,
+ start: _htmlbarsSyntaxBuilders.default.pos(this.tokenizer.line, this.tokenizer.column),
+ end: null
+ };
+ },
+
+ appendToData: function (char) {
+ this.currentNode.chars += char;
+ },
+
+ finishData: function () {
+ this.currentNode.loc.end = _htmlbarsSyntaxBuilders.default.pos(this.tokenizer.line, this.tokenizer.column);
+
+ _htmlbarsSyntaxUtils.appendChild(this.currentElement(), this.currentNode);
+ },
+
+ // Tags - basic
+
+ tagOpen: function () {
+ this.tagOpenLine = this.tokenizer.line;
+ this.tagOpenColumn = this.tokenizer.column;
+ },
+
+ beginStartTag: function () {
+ this.currentNode = {
+ type: 'StartTag',
+ name: "",
+ attributes: [],
+ modifiers: [],
+ selfClosing: false,
+ loc: null
+ };
+ },
+
+ beginEndTag: function () {
+ this.currentNode = {
+ type: 'EndTag',
+ name: "",
+ attributes: [],
+ modifiers: [],
+ selfClosing: false,
+ loc: null
+ };
+ },
+
+ finishTag: function () {
+ var _tokenizer = this.tokenizer;
+ var line = _tokenizer.line;
+ var column = _tokenizer.column;
+
+ var tag = this.currentNode;
+ tag.loc = _htmlbarsSyntaxBuilders.default.loc(this.tagOpenLine, this.tagOpenColumn, line, column);
+
+ if (tag.type === 'StartTag') {
+ this.finishStartTag();
+
+ if (_htmlbarsUtilVoidTagNames.default.hasOwnProperty(tag.name) || tag.selfClosing) {
+ this.finishEndTag(true);
+ }
+ } else if (tag.type === 'EndTag') {
+ this.finishEndTag(false);
+ }
+ },
+
+ finishStartTag: function () {
+ var _currentNode = this.currentNode;
+ var name = _currentNode.name;
+ var attributes = _currentNode.attributes;
+ var modifiers = _currentNode.modifiers;
+
+ validateStartTag(this.currentNode, this.tokenizer);
+
+ var loc = _htmlbarsSyntaxBuilders.default.loc(this.tagOpenLine, this.tagOpenColumn);
+ var element = _htmlbarsSyntaxBuilders.default.element(name, attributes, modifiers, [], loc);
+ this.elementStack.push(element);
+ },
+
+ finishEndTag: function (isVoid) {
+ var tag = this.currentNode;
+
+ var element = this.elementStack.pop();
+ var parent = this.currentElement();
+ var disableComponentGeneration = this.options.disableComponentGeneration === true;
+
+ validateEndTag(tag, element, isVoid);
+
+ element.loc.end.line = this.tokenizer.line;
+ element.loc.end.column = this.tokenizer.column;
+
+ if (disableComponentGeneration || cannotBeComponent(element.tag)) {
+ _htmlbarsSyntaxUtils.appendChild(parent, element);
+ } else {
+ var program = _htmlbarsSyntaxBuilders.default.program(element.children);
+ _htmlbarsSyntaxUtils.parseComponentBlockParams(element, program);
+ var component = _htmlbarsSyntaxBuilders.default.component(element.tag, element.attributes, program, element.loc);
+ _htmlbarsSyntaxUtils.appendChild(parent, component);
+ }
+ },
+
+ markTagAsSelfClosing: function () {
+ this.currentNode.selfClosing = true;
+ },
+
+ // Tags - name
+
+ appendToTagName: function (char) {
+ this.currentNode.name += char;
+ },
+
+ // Tags - attributes
+
+ beginAttribute: function () {
+ var tag = this.currentNode;
+ if (tag.type === 'EndTag') {
+ throw new Error("Invalid end tag: closing tag must not have attributes, " + ("in `" + tag.name + "` (on line " + this.tokenizer.line + ")."));
+ }
+
+ this.currentAttribute = {
+ name: "",
+ parts: [],
+ isQuoted: false,
+ isDynamic: false,
+ // beginAttribute isn't called until after the first char is consumed
+ start: _htmlbarsSyntaxBuilders.default.pos(this.tokenizer.line, this.tokenizer.column),
+ valueStartLine: null,
+ valueStartColumn: null
+ };
+ },
+
+ appendToAttributeName: function (char) {
+ this.currentAttribute.name += char;
+ },
+
+ beginAttributeValue: function (isQuoted) {
+ this.currentAttribute.isQuoted = isQuoted;
+ this.currentAttribute.valueStartLine = this.tokenizer.line;
+ this.currentAttribute.valueStartColumn = this.tokenizer.column;
+ },
+
+ appendToAttributeValue: function (char) {
+ var parts = this.currentAttribute.parts;
+
+ if (typeof parts[parts.length - 1] === 'string') {
+ parts[parts.length - 1] += char;
+ } else {
+ parts.push(char);
+ }
+ },
+
+ finishAttributeValue: function () {
+ var _currentAttribute = this.currentAttribute;
+ var name = _currentAttribute.name;
+ var parts = _currentAttribute.parts;
+ var isQuoted = _currentAttribute.isQuoted;
+ var isDynamic = _currentAttribute.isDynamic;
+ var valueStartLine = _currentAttribute.valueStartLine;
+ var valueStartColumn = _currentAttribute.valueStartColumn;
+
+ var value = assembleAttributeValue(parts, isQuoted, isDynamic, this.tokenizer.line);
+ value.loc = _htmlbarsSyntaxBuilders.default.loc(valueStartLine, valueStartColumn, this.tokenizer.line, this.tokenizer.column);
+
+ var loc = _htmlbarsSyntaxBuilders.default.loc(this.currentAttribute.start.line, this.currentAttribute.start.column, this.tokenizer.line, this.tokenizer.column);
+
+ var attribute = _htmlbarsSyntaxBuilders.default.attr(name, value, loc);
+
+ this.currentNode.attributes.push(attribute);
+ }
+ };
+
+ function assembleAttributeValue(parts, isQuoted, isDynamic, line) {
+ if (isDynamic) {
+ if (isQuoted) {
+ return assembleConcatenatedValue(parts);
+ } else {
+ if (parts.length === 1 || parts.length === 2 && parts[1] === '/') {
+ return parts[0];
+ } else {
+ throw new Error("An unquoted attribute value must be a string or a mustache, " + "preceeded by whitespace or a '=' character, and " + ("followed by whitespace, a '>' character or a '/>' (on line " + line + ")"));
+ }
+ }
+ } else {
+ return _htmlbarsSyntaxBuilders.default.text(parts.length > 0 ? parts[0] : "");
+ }
+ }
+
+ function assembleConcatenatedValue(parts) {
+ for (var i = 0; i < parts.length; i++) {
+ var part = parts[i];
+
+ if (typeof part === 'string') {
+ parts[i] = _htmlbarsSyntaxBuilders.default.string(parts[i]);
+ } else {
+ if (part.type === 'MustacheStatement') {
+ parts[i] = _htmlbarsSyntaxUtils.unwrapMustache(part);
+ } else {
+ throw new Error("Unsupported node in quoted attribute value: " + part.type);
+ }
+ }
+ }
+
+ return _htmlbarsSyntaxBuilders.default.concat(parts);
+ }
+
+ function cannotBeComponent(tagName) {
+ return tagName.indexOf("-") === -1 && tagName.indexOf(".") === -1;
+ }
+
+ function validateStartTag(tag, tokenizer) {
+ // No support for <script> tags
+ if (tag.name === "script") {
+ throw new Error("`SCRIPT` tags are not allowed in HTMLBars templates (on line " + tokenizer.tagLine + ")");
+ }
+ }
+
+ function validateEndTag(tag, element, selfClosing) {
+ if (_htmlbarsUtilVoidTagNames.default[tag.name] && !selfClosing) {
+ // EngTag is also called by StartTag for void and self-closing tags (i.e.
+ // <input> or <br />, so we need to check for that here. Otherwise, we would
+ // throw an error for those cases.
+ throw new Error("Invalid end tag " + formatEndTagInfo(tag) + " (void elements cannot have end tags).");
+ } else if (element.tag === undefined) {
+ throw new Error("Closing tag " + formatEndTagInfo(tag) + " without an open tag.");
+ } else if (element.tag !== tag.name) {
+ throw new Error("Closing tag " + formatEndTagInfo(tag) + " did not match last open tag `" + element.tag + "` (on line " + element.loc.start.line + ").");
+ }
+ }
+
+ function formatEndTagInfo(tag) {
+ return "`" + tag.name + "` (on line " + tag.loc.end.line + ")";
+ }
+});
+enifed("htmlbars-syntax/traversal/errors", ["exports"], function (exports) {
+ "use strict";
+
+ exports.cannotRemoveNode = cannotRemoveNode;
+ exports.cannotReplaceNode = cannotReplaceNode;
+ exports.cannotReplaceOrRemoveInKeyHandlerYet = cannotReplaceOrRemoveInKeyHandlerYet;
+ function TraversalError(message, node, parent, key) {
+ this.name = "TraversalError";
+ this.message = message;
+ this.node = node;
+ this.parent = parent;
+ this.key = key;
+ }
+
+ TraversalError.prototype = Object.create(Error.prototype);
+ TraversalError.prototype.constructor = TraversalError;
+
+ exports.default = TraversalError;
+
+ function cannotRemoveNode(node, parent, key) {
+ return new TraversalError("Cannot remove a node unless it is part of an array", node, parent, key);
+ }
+
+ function cannotReplaceNode(node, parent, key) {
+ return new TraversalError("Cannot replace a node with multiple nodes unless it is part of an array", node, parent, key);
+ }
+
+ function cannotReplaceOrRemoveInKeyHandlerYet(node, key) {
+ return new TraversalError("Replacing and removing in key handlers is not yet supported.", node, null, key);
+ }
+});
+enifed('htmlbars-syntax/traversal/traverse', ['exports', 'htmlbars-syntax/types/visitor-keys', 'htmlbars-syntax/traversal/errors'], function (exports, _htmlbarsSyntaxTypesVisitorKeys, _htmlbarsSyntaxTraversalErrors) {
+ 'use strict';
+
+ exports.default = traverse;
+ exports.normalizeVisitor = normalizeVisitor;
+
+ function visitNode(visitor, node) {
+ var handler = visitor[node.type] || visitor.All;
+ var result = undefined;
+
+ if (handler && handler.enter) {
+ result = handler.enter.call(null, node);
+ }
+
+ if (result === undefined) {
+ var keys = _htmlbarsSyntaxTypesVisitorKeys.default[node.type];
+
+ for (var i = 0; i < keys.length; i++) {
+ visitKey(visitor, handler, node, keys[i]);
+ }
+
+ if (handler && handler.exit) {
+ result = handler.exit.call(null, node);
+ }
+ }
+
+ return result;
+ }
+
+ function visitKey(visitor, handler, node, key) {
+ var value = node[key];
+ if (!value) {
+ return;
+ }
+
+ var keyHandler = handler && (handler.keys[key] || handler.keys.All);
+ var result = undefined;
+
+ if (keyHandler && keyHandler.enter) {
+ result = keyHandler.enter.call(null, node, key);
+ if (result !== undefined) {
+ throw _htmlbarsSyntaxTraversalErrors.cannotReplaceOrRemoveInKeyHandlerYet(node, key);
+ }
+ }
+
+ if (Array.isArray(value)) {
+ visitArray(visitor, value);
+ } else {
+ var _result = visitNode(visitor, value);
+ if (_result !== undefined) {
+ assignKey(node, key, _result);
+ }
+ }
+
+ if (keyHandler && keyHandler.exit) {
+ result = keyHandler.exit.call(null, node, key);
+ if (result !== undefined) {
+ throw _htmlbarsSyntaxTraversalErrors.cannotReplaceOrRemoveInKeyHandlerYet(node, key);
+ }
+ }
+ }
+
+ function visitArray(visitor, array) {
+ for (var i = 0; i < array.length; i++) {
+ var result = visitNode(visitor, array[i]);
+ if (result !== undefined) {
+ i += spliceArray(array, i, result) - 1;
+ }
+ }
+ }
+
+ function assignKey(node, key, result) {
+ if (result === null) {
+ throw _htmlbarsSyntaxTraversalErrors.cannotRemoveNode(node[key], node, key);
+ } else if (Array.isArray(result)) {
+ if (result.length === 1) {
+ node[key] = result[0];
+ } else {
+ if (result.length === 0) {
+ throw _htmlbarsSyntaxTraversalErrors.cannotRemoveNode(node[key], node, key);
+ } else {
+ throw _htmlbarsSyntaxTraversalErrors.cannotReplaceNode(node[key], node, key);
+ }
+ }
+ } else {
+ node[key] = result;
+ }
+ }
+
+ function spliceArray(array, index, result) {
+ if (result === null) {
+ array.splice(index, 1);
+ return 0;
+ } else if (Array.isArray(result)) {
+ array.splice.apply(array, [index, 1].concat(result));
+ return result.length;
+ } else {
+ array.splice(index, 1, result);
+ return 1;
+ }
+ }
+
+ function traverse(node, visitor) {
+ visitNode(normalizeVisitor(visitor), node);
+ }
+
+ function normalizeVisitor(visitor) {
+ var normalizedVisitor = {};
+
+ for (var type in visitor) {
+ var handler = visitor[type] || visitor.All;
+ var normalizedKeys = {};
+
+ if (typeof handler === 'object') {
+ var keys = handler.keys;
+ if (keys) {
+ for (var key in keys) {
+ var keyHandler = keys[key];
+ if (typeof keyHandler === 'object') {
+ normalizedKeys[key] = {
+ enter: typeof keyHandler.enter === 'function' ? keyHandler.enter : null,
+ exit: typeof keyHandler.exit === 'function' ? keyHandler.exit : null
+ };
+ } else if (typeof keyHandler === 'function') {
+ normalizedKeys[key] = {
+ enter: keyHandler,
+ exit: null
+ };
+ }
+ }
+ }
+
+ normalizedVisitor[type] = {
+ enter: typeof handler.enter === 'function' ? handler.enter : null,
+ exit: typeof handler.exit === 'function' ? handler.exit : null,
+ keys: normalizedKeys
+ };
+ } else if (typeof handler === 'function') {
+ normalizedVisitor[type] = {
+ enter: handler,
+ exit: null,
+ keys: normalizedKeys
+ };
+ }
+ }
+
+ return normalizedVisitor;
+ }
+});
+enifed('htmlbars-syntax/traversal/walker', ['exports'], function (exports) {
+ 'use strict';
+
+ function Walker(order) {
+ this.order = order;
+ this.stack = [];
+ }
+
+ exports.default = Walker;
+
+ Walker.prototype.visit = function (node, callback) {
+ if (!node) {
+ return;
+ }
+
+ this.stack.push(node);
+
+ if (this.order === 'post') {
+ this.children(node, callback);
+ callback(node, this);
+ } else {
+ callback(node, this);
+ this.children(node, callback);
+ }
+
+ this.stack.pop();
+ };
+
+ var visitors = {
+ Program: function (walker, node, callback) {
+ for (var i = 0; i < node.body.length; i++) {
+ walker.visit(node.body[i], callback);
+ }
+ },
+
+ ElementNode: function (walker, node, callback) {
+ for (var i = 0; i < node.children.length; i++) {
+ walker.visit(node.children[i], callback);
+ }
+ },
+
+ BlockStatement: function (walker, node, callback) {
+ walker.visit(node.program, callback);
+ walker.visit(node.inverse, callback);
+ },
+
+ ComponentNode: function (walker, node, callback) {
+ walker.visit(node.program, callback);
+ }
+ };
+
+ Walker.prototype.children = function (node, callback) {
+ var visitor = visitors[node.type];
+ if (visitor) {
+ visitor(this, node, callback);
+ }
+ };
+});
+enifed('htmlbars-syntax/types/visitor-keys', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.default = {
+ Program: ['body'],
+
+ MustacheStatement: ['path', 'params', 'hash'],
+ BlockStatement: ['path', 'params', 'hash', 'program', 'inverse'],
+ ElementModifierStatement: ['path', 'params', 'hash'],
+ PartialStatement: ['name', 'params', 'hash'],
+ CommentStatement: [],
+ ElementNode: ['attributes', 'modifiers', 'children'],
+ ComponentNode: ['attributes', 'program'],
+ AttrNode: ['value'],
+ TextNode: [],
+
+ ConcatStatement: ['parts'],
+ SubExpression: ['path', 'params', 'hash'],
+ PathExpression: [],
+
+ StringLiteral: [],
+ BooleanLiteral: [],
+ NumberLiteral: [],
+ NullLiteral: [],
+ UndefinedLiteral: [],
+
+ Hash: ['pairs'],
+ HashPair: ['value']
+ };
+});
+enifed('htmlbars-syntax/utils', ['exports', 'htmlbars-util/array-utils'], function (exports, _htmlbarsUtilArrayUtils) {
+ 'use strict';
+
+ exports.parseComponentBlockParams = parseComponentBlockParams;
+ exports.childrenFor = childrenFor;
+ exports.appendChild = appendChild;
+ exports.isHelper = isHelper;
+ exports.unwrapMustache = unwrapMustache;
+
+ // Regex to validate the identifier for block parameters.
+ // Based on the ID validation regex in Handlebars.
+
+ var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/;
+
+ // Checks the component's attributes to see if it uses block params.
+ // If it does, registers the block params with the program and
+ // removes the corresponding attributes from the element.
+
+ function parseComponentBlockParams(element, program) {
+ var l = element.attributes.length;
+ var attrNames = [];
+
+ for (var i = 0; i < l; i++) {
+ attrNames.push(element.attributes[i].name);
+ }
+
+ var asIndex = _htmlbarsUtilArrayUtils.indexOfArray(attrNames, 'as');
+
+ if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
+ // Some basic validation, since we're doing the parsing ourselves
+ var paramsString = attrNames.slice(asIndex).join(' ');
+ if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
+ throw new Error('Invalid block parameters syntax: \'' + paramsString + '\'');
+ }
+
+ var params = [];
+ for (i = asIndex + 1; i < l; i++) {
+ var param = attrNames[i].replace(/\|/g, '');
+ if (param !== '') {
+ if (ID_INVERSE_PATTERN.test(param)) {
+ throw new Error('Invalid identifier for block parameters: \'' + param + '\' in \'' + paramsString + '\'');
+ }
+ params.push(param);
+ }
+ }
+
+ if (params.length === 0) {
+ throw new Error('Cannot use zero block parameters: \'' + paramsString + '\'');
+ }
+
+ element.attributes = element.attributes.slice(0, asIndex);
+ program.blockParams = params;
+ }
+ }
+
+ function childrenFor(node) {
+ if (node.type === 'Program') {
+ return node.body;
+ }
+ if (node.type === 'ElementNode') {
+ return node.children;
+ }
+ }
+
+ function appendChild(parent, node) {
+ childrenFor(parent).push(node);
+ }
+
+ function isHelper(mustache) {
+ return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0;
+ }
+
+ function unwrapMustache(mustache) {
+ if (isHelper(mustache)) {
+ return mustache;
+ } else {
+ return mustache.path;
+ }
+ }
+});
+enifed("htmlbars-test-helpers", ["exports", "simple-html-tokenizer/index", "htmlbars-util/array-utils"], function (exports, _simpleHtmlTokenizerIndex, _htmlbarsUtilArrayUtils) {
+ "use strict";
+
+ exports.equalInnerHTML = equalInnerHTML;
+ exports.equalHTML = equalHTML;
+ exports.equalTokens = equalTokens;
+ exports.normalizeInnerHTML = normalizeInnerHTML;
+ exports.isCheckedInputHTML = isCheckedInputHTML;
+ exports.getTextContent = getTextContent;
+
+ function equalInnerHTML(fragment, html) {
+ var actualHTML = normalizeInnerHTML(fragment.innerHTML);
+ QUnit.push(actualHTML === html, actualHTML, html);
+ }
+
+ function equalHTML(node, html) {
+ var fragment;
+ if (!node.nodeType && node.length) {
+ fragment = document.createDocumentFragment();
+ while (node[0]) {
+ fragment.appendChild(node[0]);
+ }
+ } else {
+ fragment = node;
+ }
+
+ var div = document.createElement("div");
+ div.appendChild(fragment.cloneNode(true));
+
+ equalInnerHTML(div, html);
+ }
+
+ function generateTokens(fragmentOrHtml) {
+ var div = document.createElement("div");
+ if (typeof fragmentOrHtml === 'string') {
+ div.innerHTML = fragmentOrHtml;
+ } else {
+ div.appendChild(fragmentOrHtml.cloneNode(true));
+ }
+
+ return { tokens: _simpleHtmlTokenizerIndex.tokenize(div.innerHTML), html: div.innerHTML };
+ }
+
+ function equalTokens(fragment, html, message) {
+ if (fragment.fragment) {
+ fragment = fragment.fragment;
+ }
+ if (html.fragment) {
+ html = html.fragment;
+ }
+
+ var fragTokens = generateTokens(fragment);
+ var htmlTokens = generateTokens(html);
+
+ function normalizeTokens(token) {
+ if (token.type === 'StartTag') {
+ token.attributes = token.attributes.sort(function (a, b) {
+ if (a[0] > b[0]) {
+ return 1;
+ }
+ if (a[0] < b[0]) {
+ return -1;
+ }
+ return 0;
+ });
+ }
+ }
+
+ _htmlbarsUtilArrayUtils.forEach(fragTokens.tokens, normalizeTokens);
+ _htmlbarsUtilArrayUtils.forEach(htmlTokens.tokens, normalizeTokens);
+
+ var msg = "Expected: " + html + "; Actual: " + fragTokens.html;
+
+ if (message) {
+ msg += " (" + message + ")";
+ }
+
+ deepEqual(fragTokens.tokens, htmlTokens.tokens, msg);
+ }
+
+ // detect side-effects of cloning svg elements in IE9-11
+ var ieSVGInnerHTML = (function () {
+ if (!document.createElementNS) {
+ return false;
+ }
+ var div = document.createElement('div');
+ var node = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
+ div.appendChild(node);
+ var clone = div.cloneNode(true);
+ return clone.innerHTML === '<svg xmlns="http://www.w3.org/2000/svg" />';
+ })();
+
+ function normalizeInnerHTML(actualHTML) {
+ if (ieSVGInnerHTML) {
+ // Replace `<svg xmlns="http://www.w3.org/2000/svg" height="50%" />` with `<svg height="50%"></svg>`, etc.
+ // drop namespace attribute
+ actualHTML = actualHTML.replace(/ xmlns="[^"]+"/, '');
+ // replace self-closing elements
+ actualHTML = actualHTML.replace(/<([^ >]+) [^\/>]*\/>/gi, function (tag, tagName) {
+ return tag.slice(0, tag.length - 3) + '></' + tagName + '>';
+ });
+ }
+
+ return actualHTML;
+ }
+
+ // detect weird IE8 checked element string
+ var checkedInput = document.createElement('input');
+ checkedInput.setAttribute('checked', 'checked');
+ var checkedInputString = checkedInput.outerHTML;
+
+ function isCheckedInputHTML(element) {
+ equal(element.outerHTML, checkedInputString);
+ }
+
+ // check which property has the node's text content
+ var textProperty = document.createElement('div').textContent === undefined ? 'innerText' : 'textContent';
+
+ function getTextContent(el) {
+ // textNode
+ if (el.nodeType === 3) {
+ return el.nodeValue;
+ } else {
+ return el[textProperty];
+ }
+ }
+});
+enifed('htmlbars-util', ['exports', 'htmlbars-util/safe-string', 'htmlbars-util/handlebars/utils', 'htmlbars-util/namespaces', 'htmlbars-util/morph-utils'], function (exports, _htmlbarsUtilSafeString, _htmlbarsUtilHandlebarsUtils, _htmlbarsUtilNamespaces, _htmlbarsUtilMorphUtils) {
+ 'use strict';
+
+ exports.SafeString = _htmlbarsUtilSafeString.default;
+ exports.escapeExpression = _htmlbarsUtilHandlebarsUtils.escapeExpression;
+ exports.getAttrNamespace = _htmlbarsUtilNamespaces.getAttrNamespace;
+ exports.validateChildMorphs = _htmlbarsUtilMorphUtils.validateChildMorphs;
+ exports.linkParams = _htmlbarsUtilMorphUtils.linkParams;
+ exports.dump = _htmlbarsUtilMorphUtils.dump;
+});
+enifed('htmlbars-util/array-utils', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.forEach = forEach;
+ exports.map = map;
+
+ function forEach(array, callback, binding) {
+ var i, l;
+ if (binding === undefined) {
+ for (i = 0, l = array.length; i < l; i++) {
+ callback(array[i], i, array);
+ }
+ } else {
+ for (i = 0, l = array.length; i < l; i++) {
+ callback.call(binding, array[i], i, array);
+ }
+ }
+ }
+
+ function map(array, callback) {
+ var output = [];
+ var i, l;
+
+ for (i = 0, l = array.length; i < l; i++) {
+ output.push(callback(array[i], i, array));
+ }
+
+ return output;
+ }
+
+ var getIdx;
+ if (Array.prototype.indexOf) {
+ getIdx = function (array, obj, from) {
+ return array.indexOf(obj, from);
+ };
+ } else {
+ getIdx = function (array, obj, from) {
+ if (from === undefined || from === null) {
+ from = 0;
+ } else if (from < 0) {
+ from = Math.max(0, array.length + from);
+ }
+ for (var i = from, l = array.length; i < l; i++) {
+ if (array[i] === obj) {
+ return i;
+ }
+ }
+ return -1;
+ };
+ }
+
+ var isArray = Array.isArray || function (array) {
+ return Object.prototype.toString.call(array) === '[object Array]';
+ };
+
+ exports.isArray = isArray;
+ var indexOfArray = getIdx;
+ exports.indexOfArray = indexOfArray;
+});
+enifed('htmlbars-util/handlebars/safe-string', ['exports'], function (exports) {
+ // Build out our basic SafeString type
+ 'use strict';
+
+ function SafeString(string) {
+ this.string = string;
+ }
+
+ SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
+ return '' + this.string;
+ };
+
+ exports.default = SafeString;
+});
+enifed('htmlbars-util/handlebars/utils', ['exports'], function (exports) {
+ 'use strict';
+
+ exports.extend = extend;
+ exports.indexOf = indexOf;
+ exports.escapeExpression = escapeExpression;
+ exports.isEmpty = isEmpty;
+ exports.blockParams = blockParams;
+ exports.appendContextPath = appendContextPath;
+ var escape = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`'
+ };
+
+ var badChars = /[&<>"'`]/g,
+ possible = /[&<>"'`]/;
+
+ function escapeChar(chr) {
+ return escape[chr];
+ }
+
+ function extend(obj /* , ...source */) {
+ for (var i = 1; i < arguments.length; i++) {
+ for (var key in arguments[i]) {
+ if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
+ obj[key] = arguments[i][key];
+ }
+ }
+ }
+
+ return obj;
+ }
+
+ var toString = Object.prototype.toString;
+
+ exports.toString = toString;
+ // Sourced from lodash
+ // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
+ /*eslint-disable func-style, no-var */
+ var isFunction = function (value) {
+ return typeof value === 'function';
+ };
+ // fallback for older versions of Chrome and Safari
+ /* istanbul ignore next */
+ if (isFunction(/x/)) {
+ exports.isFunction = isFunction = function (value) {
+ return typeof value === 'function' && toString.call(value) === '[object Function]';
+ };
+ }
+ var isFunction;
+ exports.isFunction = isFunction;
+ /*eslint-enable func-style, no-var */
+
+ /* istanbul ignore next */
+ var isArray = Array.isArray || function (value) {
+ return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
+ };
+
+ exports.isArray = isArray;
+ // Older IE versions do not directly support indexOf so we must implement our own, sadly.
+
+ function indexOf(array, value) {
+ for (var i = 0, len = array.length; i < len; i++) {
+ if (array[i] === value) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ function escapeExpression(string) {
+ if (typeof string !== 'string') {
+ // don't escape SafeStrings, since they're already safe
+ if (string && string.toHTML) {
+ return string.toHTML();
+ } else if (string == null) {
+ return '';
+ } else if (!string) {
+ return string + '';
+ }
+
+ // Force a string conversion as this will be done by the append regardless and
+ // the regex test will do this transparently behind the scenes, causing issues if
+ // an object's to string has escaped characters in it.
+ string = '' + string;
+ }
+
+ if (!possible.test(string)) {
+ return string;
+ }
+ return string.replace(badChars, escapeChar);
+ }
+
+ function isEmpty(value) {
+ if (!value && value !== 0) {
+ return true;
+ } else if (isArray(value) && value.length === 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function blockParams(params, ids) {
+ params.path = ids;
+ return params;
+ }
+
+ function appendContextPath(contextPath, id) {
+ return (contextPath ? contextPath + '.' : '') + id;
+ }
+});
+enifed("htmlbars-util/morph-utils", ["exports"], function (exports) {
+ /*globals console*/
+
+ "use strict";
+
+ exports.visitChildren = visitChildren;
+ exports.validateChildMorphs = validateChildMorphs;
+ exports.linkParams = linkParams;
+ exports.dump = dump;
+
+ function visitChildren(nodes, callback) {
+ if (!nodes || nodes.length === 0) {
+ return;
+ }
+
+ nodes = nodes.slice();
+
+ while (nodes.length) {
+ var node = nodes.pop();
+ callback(node);
+
+ if (node.childNodes) {
+ nodes.push.apply(nodes, node.childNodes);
+ } else if (node.firstChildMorph) {
+ var current = node.firstChildMorph;
+
+ while (current) {
+ nodes.push(current);
+ current = current.nextMorph;
+ }
+ } else if (node.morphList) {
+ var current = node.morphList.firstChildMorph;
+
+ while (current) {
+ nodes.push(current);
+ current = current.nextMorph;
+ }
+ }
+ }
+ }
+
+ function validateChildMorphs(env, morph, visitor) {
+ var morphList = morph.morphList;
+ if (morph.morphList) {
+ var current = morphList.firstChildMorph;
+
+ while (current) {
+ var next = current.nextMorph;
+ validateChildMorphs(env, current, visitor);
+ current = next;
+ }
+ } else if (morph.lastResult) {
+ morph.lastResult.revalidateWith(env, undefined, undefined, undefined, visitor);
+ } else if (morph.childNodes) {
+ // This means that the childNodes were wired up manually
+ for (var i = 0, l = morph.childNodes.length; i < l; i++) {
+ validateChildMorphs(env, morph.childNodes[i], visitor);
+ }
+ }
+ }
+
+ function linkParams(env, scope, morph, path, params, hash) {
+ if (morph.linkedParams) {
+ return;
+ }
+
+ if (env.hooks.linkRenderNode(morph, env, scope, path, params, hash)) {
+ morph.linkedParams = { params: params, hash: hash };
+ }
+ }
+
+ function dump(node) {
+ console.group(node, node.isDirty);
+
+ if (node.childNodes) {
+ map(node.childNodes, dump);
+ } else if (node.firstChildMorph) {
+ var current = node.firstChildMorph;
+
+ while (current) {
+ dump(current);
+ current = current.nextMorph;
+ }
+ } else if (node.morphList) {
+ dump(node.morphList);
+ }
+
+ console.groupEnd();
+ }
+
+ function map(nodes, cb) {
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ cb(nodes[i]);
+ }
+ }
+});
+enifed('htmlbars-util/namespaces', ['exports'], function (exports) {
+ // ref http://dev.w3.org/html5/spec-LC/namespaces.html
+ 'use strict';
+
+ exports.getAttrNamespace = getAttrNamespace;
+ var defaultNamespaces = {
+ html: 'http://www.w3.org/1999/xhtml',
+ mathml: 'http://www.w3.org/1998/Math/MathML',
+ svg: 'http://www.w3.org/2000/svg',
+ xlink: 'http://www.w3.org/1999/xlink',
+ xml: 'http://www.w3.org/XML/1998/namespace'
+ };
+
+ function getAttrNamespace(attrName, detectedNamespace) {
+ if (detectedNamespace) {
+ return detectedNamespace;
+ }
+
+ var namespace;
+
+ var colonIndex = attrName.indexOf(':');
+ if (colonIndex !== -1) {
+ var prefix = attrName.slice(0, colonIndex);
+ namespace = defaultNamespaces[prefix];
+ }
+
+ return namespace || null;
+ }
+});
+enifed("htmlbars-util/object-utils", ["exports"], function (exports) {
+ "use strict";
+
+ exports.merge = merge;
+ exports.shallowCopy = shallowCopy;
+ exports.keySet = keySet;
+ exports.keyLength = keyLength;
+
+ function merge(options, defaults) {
+ for (var prop in defaults) {
+ if (options.hasOwnProperty(prop)) {
+ continue;
+ }
+ options[prop] = defaults[prop];
+ }
+ return options;
+ }
+
+ function shallowCopy(obj) {
+ return merge({}, obj);
+ }
+
+ function keySet(obj) {
+ var set = {};
+
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ set[prop] = true;
+ }
+ }
+
+ return set;
+ }
+
+ function keyLength(obj) {
+ var count = 0;
+
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ count++;
+ }
+ }
+
+ return count;
+ }
+});
+enifed("htmlbars-util/quoting", ["exports"], function (exports) {
+ "use strict";
+
+ exports.hash = hash;
+ exports.repeat = repeat;
+ function escapeString(str) {
+ str = str.replace(/\\/g, "\\\\");
+ str = str.replace(/"/g, '\\"');
+ str = str.replace(/\n/g, "\\n");
+ return str;
+ }
+
+ exports.escapeString = escapeString;
+
+ function string(str) {
+ return '"' + escapeString(str) + '"';
+ }
+
+ exports.string = string;
+
+ function array(a) {
+ return "[" + a + "]";
+ }
+
+ exports.array = array;
+
+ function hash(pairs) {
+ return "{" + pairs.join(", ") + "}";
+ }
+
+ function repeat(chars, times) {
+ var str = "";
+ while (times--) {
+ str += chars;
+ }
+ return str;
+ }
+});
+enifed('htmlbars-util/safe-string', ['exports', 'htmlbars-util/handlebars/safe-string'], function (exports, _htmlbarsUtilHandlebarsSafeString) {
+ 'use strict';
+
+ exports.default = _htmlbarsUtilHandlebarsSafeString.default;
+});
+enifed("htmlbars-util/template-utils", ["exports", "htmlbars-util/morph-utils", "htmlbars-runtime/render"], function (exports, _htmlbarsUtilMorphUtils, _htmlbarsRuntimeRender) {
+ "use strict";
+
+ var _slice = Array.prototype.slice;
+ exports.RenderState = RenderState;
+ exports.blockFor = blockFor;
+ exports.renderAndCleanup = renderAndCleanup;
+ exports.clearMorph = clearMorph;
+ exports.clearMorphList = clearMorphList;
+ exports.buildStatement = buildStatement;
+
+ function RenderState(renderNode, morphList) {
+ // The morph list that is no longer needed and can be
+ // destroyed.
+ this.morphListToClear = morphList;
+
+ // The morph list that needs to be pruned of any items
+ // that were not yielded on a subsequent render.
+ this.morphListToPrune = null;
+
+ // A map of morphs for each item yielded in during this
+ // rendering pass. Any morphs in the DOM but not in this map
+ // will be pruned during cleanup.
+ this.handledMorphs = {};
+ this.collisions = undefined;
+
+ // The morph to clear once rendering is complete. By
+ // default, we set this to the previous morph (to catch
+ // the case where nothing is yielded; in that case, we
+ // should just clear the morph). Otherwise this gets set
+ // to null if anything is rendered.
+ this.morphToClear = renderNode;
+
+ this.shadowOptions = null;
+ }
+
+ function Block(render, template, blockOptions) {
+ this.render = render;
+ this.template = template;
+ this.blockOptions = blockOptions;
+ this.arity = template.arity;
+ }
+
+ Block.prototype.invoke = function (env, blockArguments, _self, renderNode, parentScope, visitor) {
+ if (renderNode.lastResult) {
+ renderNode.lastResult.revalidateWith(env, undefined, _self, blockArguments, visitor);
+ } else {
+ this._firstRender(env, blockArguments, _self, renderNode, parentScope);
+ }
+ };
+
+ Block.prototype._firstRender = function (env, blockArguments, _self, renderNode, parentScope) {
+ var options = { renderState: new RenderState(renderNode) };
+ var render = this.render;
+ var template = this.template;
+ var scope = this.blockOptions.scope;
+
+ var shadowScope = scope ? env.hooks.createChildScope(scope) : env.hooks.createFreshScope();
+
+ env.hooks.bindShadowScope(env, parentScope, shadowScope, this.blockOptions.options);
+
+ if (_self !== undefined) {
+ env.hooks.bindSelf(env, shadowScope, _self);
+ } else if (this.blockOptions.self !== undefined) {
+ env.hooks.bindSelf(env, shadowScope, this.blockOptions.self);
+ }
+
+ bindBlocks(env, shadowScope, this.blockOptions.yieldTo);
+
+ renderAndCleanup(renderNode, env, options, null, function () {
+ options.renderState.morphToClear = null;
+ var renderOptions = new _htmlbarsRuntimeRender.RenderOptions(renderNode, undefined, blockArguments);
+ render(template, env, shadowScope, renderOptions);
+ });
+ };
+
+ function blockFor(render, template, blockOptions) {
+ return new Block(render, template, blockOptions);
+ }
+
+ function bindBlocks(env, shadowScope, blocks) {
+ if (!blocks) {
+ return;
+ }
+ if (blocks instanceof Block) {
+ env.hooks.bindBlock(env, shadowScope, blocks);
+ } else {
+ for (var name in blocks) {
+ if (blocks.hasOwnProperty(name)) {
+ env.hooks.bindBlock(env, shadowScope, blocks[name], name);
+ }
+ }
+ }
+ }
+
+ function renderAndCleanup(morph, env, options, shadowOptions, callback) {
+ // The RenderState object is used to collect information about what the
+ // helper or hook being invoked has yielded. Once it has finished either
+ // yielding multiple items (via yieldItem) or a single template (via
+ // yieldTemplate), we detect what was rendered and how it differs from
+ // the previous render, cleaning up old state in DOM as appropriate.
+ var renderState = options.renderState;
+ renderState.collisions = undefined;
+ renderState.shadowOptions = shadowOptions;
+
+ // Invoke the callback, instructing it to save information about what it
+ // renders into RenderState.
+ var result = callback(options);
+
+ // The hook can opt-out of cleanup if it handled cleanup itself.
+ if (result && result.handled) {
+ return;
+ }
+
+ var morphMap = morph.morphMap;
+
+ // Walk the morph list, clearing any items that were yielded in a previous
+ // render but were not yielded during this render.
+ var morphList = renderState.morphListToPrune;
+ if (morphList) {
+ var handledMorphs = renderState.handledMorphs;
+ var item = morphList.firstChildMorph;
+
+ while (item) {
+ var next = item.nextMorph;
+
+ // If we don't see the key in handledMorphs, it wasn't
+ // yielded in and we can safely remove it from DOM.
+ if (!(item.key in handledMorphs)) {
+ morphMap[item.key] = undefined;
+ clearMorph(item, env, true);
+ item.destroy();
+ }
+
+ item = next;
+ }
+ }
+
+ morphList = renderState.morphListToClear;
+ if (morphList) {
+ clearMorphList(morphList, morph, env);
+ }
+
+ var toClear = renderState.morphToClear;
+ if (toClear) {
+ clearMorph(toClear, env);
+ }
+ }
+
+ function clearMorph(morph, env, destroySelf) {
+ var cleanup = env.hooks.cleanupRenderNode;
+ var destroy = env.hooks.destroyRenderNode;
+ var willCleanup = env.hooks.willCleanupTree;
+ var didCleanup = env.hooks.didCleanupTree;
+
+ function destroyNode(node) {
+ if (cleanup) {
+ cleanup(node);
+ }
+ if (destroy) {
+ destroy(node);
+ }
+ }
+
+ if (willCleanup) {
+ willCleanup(env, morph, destroySelf);
+ }
+ if (cleanup) {
+ cleanup(morph);
+ }
+ if (destroySelf && destroy) {
+ destroy(morph);
+ }
+
+ _htmlbarsUtilMorphUtils.visitChildren(morph.childNodes, destroyNode);
+
+ // TODO: Deal with logical children that are not in the DOM tree
+ morph.clear();
+ if (didCleanup) {
+ didCleanup(env, morph, destroySelf);
+ }
+
+ morph.lastResult = null;
+ morph.lastYielded = null;
+ morph.childNodes = null;
+ }
+
+ function clearMorphList(morphList, morph, env) {
+ var item = morphList.firstChildMorph;
+
+ while (item) {
+ var next = item.nextMorph;
+ morph.morphMap[item.key] = undefined;
+ clearMorph(item, env, true);
+ item.destroy();
+
+ item = next;
+ }
+
+ // Remove the MorphList from the morph.
+ morphList.clear();
+ morph.morphList = null;
+ }
+
+ function buildStatement() {
+ var statement = [].concat(_slice.call(arguments));
+
+ // ensure array length is 7 by padding with 0
+ for (var i = arguments.length; i < 7; i++) {
+ statement[i] = 0;
+ }
+
+ return statement;
+ }
+});
+enifed("htmlbars-util/void-tag-names", ["exports", "htmlbars-util/array-utils"], function (exports, _htmlbarsUtilArrayUtils) {
+ "use strict";
+
+ // The HTML elements in this list are speced by
+ // http://www.w3.org/TR/html-markup/syntax.html#syntax-elements,
+ // and will be forced to close regardless of if they have a
+ // self-closing /> at the end.
+ var voidTagNames = "area base br col command embed hr img input keygen link meta param source track wbr";
+ var voidMap = {};
+
+ _htmlbarsUtilArrayUtils.forEach(voidTagNames.split(" "), function (tagName) {
+ voidMap[tagName] = true;
+ });
+
+ exports.default = voidMap;
+});
+enifed('morph-range', ['exports', 'morph-range/utils'], function (exports, _morphRangeUtils) {
+ 'use strict';
+
+ // constructor just initializes the fields
+ // use one of the static initializers to create a valid morph.
+ function Morph(domHelper, contextualElement) {
+ this.domHelper = domHelper;
+ // context if content if current content is detached
+ this.contextualElement = contextualElement;
+ // inclusive range of morph
+ // these should be nodeType 1, 3, or 8
+ this.firstNode = null;
+ this.lastNode = null;
+
+ // flag to force text to setContent to be treated as html
+ this.parseTextAsHTML = false;
+
+ // morph list graph
+ this.parentMorphList = null;
+ this.previousMorph = null;
+ this.nextMorph = null;
+ }
+
+ Morph.empty = function (domHelper, contextualElement) {
+ var morph = new Morph(domHelper, contextualElement);
+ morph.clear();
+ return morph;
+ };
+
+ Morph.create = function (domHelper, contextualElement, node) {
+ var morph = new Morph(domHelper, contextualElement);
+ morph.setNode(node);
+ return morph;
+ };
+
+ Morph.attach = function (domHelper, contextualElement, firstNode, lastNode) {
+ var morph = new Morph(domHelper, contextualElement);
+ morph.setRange(firstNode, lastNode);
+ return morph;
+ };
+
+ Morph.prototype.setContent = function Morph$setContent(content) {
+ if (content === null || content === undefined) {
+ return this.clear();
+ }
+
+ var type = typeof content;
+ switch (type) {
+ case 'string':
+ if (this.parseTextAsHTML) {
+ return this.domHelper.setMorphHTML(this, content);
+ }
+ return this.setText(content);
+ case 'object':
+ if (typeof content.nodeType === 'number') {
+ return this.setNode(content);
+ }
+ /* Handlebars.SafeString */
+ if (typeof content.toHTML === 'function') {
+ return this.setHTML(content.toHTML());
+ }
+ if (this.parseTextAsHTML) {
+ return this.setHTML(content.toString());
+ }
+ /* falls through */
+ case 'boolean':
+ case 'number':
+ return this.setText(content.toString());
+ case 'function':
+ raiseCannotBindToFunction(content);
+ default:
+ throw new TypeError('unsupported content');
+ }
+ };
+
+ function raiseCannotBindToFunction(content) {
+ var functionName = content.name;
+ var message;
+
+ if (functionName) {
+ message = 'Unsupported Content: Cannot bind to function `' + functionName + '`';
+ } else {
+ message = 'Unsupported Content: Cannot bind to function';
+ }
+
+ throw new TypeError(message);
+ }
+
+ Morph.prototype.clear = function Morph$clear() {
+ var node = this.setNode(this.domHelper.createComment(''));
+ return node;
+ };
+
+ Morph.prototype.setText = function Morph$setText(text) {
+ var firstNode = this.firstNode;
+ var lastNode = this.lastNode;
+
+ if (firstNode && lastNode === firstNode && firstNode.nodeType === 3) {
+ firstNode.nodeValue = text;
+ return firstNode;
+ }
+
+ return this.setNode(text ? this.domHelper.createTextNode(text) : this.domHelper.createComment(''));
+ };
+
+ Morph.prototype.setNode = function Morph$setNode(newNode) {
+ var firstNode, lastNode;
+ switch (newNode.nodeType) {
+ case 3:
+ firstNode = newNode;
+ lastNode = newNode;
+ break;
+ case 11:
+ firstNode = newNode.firstChild;
+ lastNode = newNode.lastChild;
+ if (firstNode === null) {
+ firstNode = this.domHelper.createComment('');
+ newNode.appendChild(firstNode);
+ lastNode = firstNode;
+ }
+ break;
+ default:
+ firstNode = newNode;
+ lastNode = newNode;
+ break;
+ }
+
+ this.setRange(firstNode, lastNode);
+
+ return newNode;
+ };
+
+ Morph.prototype.setRange = function (firstNode, lastNode) {
+ var previousFirstNode = this.firstNode;
+ if (previousFirstNode !== null) {
+
+ var parentNode = previousFirstNode.parentNode;
+ if (parentNode !== null) {
+ _morphRangeUtils.insertBefore(parentNode, firstNode, lastNode, previousFirstNode);
+ _morphRangeUtils.clear(parentNode, previousFirstNode, this.lastNode);
+ }
+ }
+
+ this.firstNode = firstNode;
+ this.lastNode = lastNode;
+
+ if (this.parentMorphList) {
+ this._syncFirstNode();
+ this._syncLastNode();
+ }
+ };
+
+ Morph.prototype.destroy = function Morph$destroy() {
+ this.unlink();
+
+ var firstNode = this.firstNode;
+ var lastNode = this.lastNode;
+ var parentNode = firstNode && firstNode.parentNode;
+
+ this.firstNode = null;
+ this.lastNode = null;
+
+ _morphRangeUtils.clear(parentNode, firstNode, lastNode);
+ };
+
+ Morph.prototype.unlink = function Morph$unlink() {
+ var parentMorphList = this.parentMorphList;
+ var previousMorph = this.previousMorph;
+ var nextMorph = this.nextMorph;
+
+ if (previousMorph) {
+ if (nextMorph) {
+ previousMorph.nextMorph = nextMorph;
+ nextMorph.previousMorph = previousMorph;
+ } else {
+ previousMorph.nextMorph = null;
+ parentMorphList.lastChildMorph = previousMorph;
+ }
+ } else {
+ if (nextMorph) {
+ nextMorph.previousMorph = null;
+ parentMorphList.firstChildMorph = nextMorph;
+ } else if (parentMorphList) {
+ parentMorphList.lastChildMorph = parentMorphList.firstChildMorph = null;
+ }
+ }
+
+ this.parentMorphList = null;
+ this.nextMorph = null;
+ this.previousMorph = null;
+
+ if (parentMorphList && parentMorphList.mountedMorph) {
+ if (!parentMorphList.firstChildMorph) {
+ // list is empty
+ parentMorphList.mountedMorph.clear();
+ return;
+ } else {
+ parentMorphList.firstChildMorph._syncFirstNode();
+ parentMorphList.lastChildMorph._syncLastNode();
+ }
+ }
+ };
+
+ Morph.prototype.setHTML = function (text) {
+ var fragment = this.domHelper.parseHTML(text, this.contextualElement);
+ return this.setNode(fragment);
+ };
+
+ Morph.prototype.setMorphList = function Morph$appendMorphList(morphList) {
+ morphList.mountedMorph = this;
+ this.clear();
+
+ var originalFirstNode = this.firstNode;
+
+ if (morphList.firstChildMorph) {
+ this.firstNode = morphList.firstChildMorph.firstNode;
+ this.lastNode = morphList.lastChildMorph.lastNode;
+
+ var current = morphList.firstChildMorph;
+
+ while (current) {
+ var next = current.nextMorph;
+ current.insertBeforeNode(originalFirstNode, null);
+ current = next;
+ }
+ originalFirstNode.parentNode.removeChild(originalFirstNode);
+ }
+ };
+
+ Morph.prototype._syncFirstNode = function Morph$syncFirstNode() {
+ var morph = this;
+ var parentMorphList;
+ while (parentMorphList = morph.parentMorphList) {
+ if (parentMorphList.mountedMorph === null) {
+ break;
+ }
+ if (morph !== parentMorphList.firstChildMorph) {
+ break;
+ }
+ if (morph.firstNode === parentMorphList.mountedMorph.firstNode) {
+ break;
+ }
+
+ parentMorphList.mountedMorph.firstNode = morph.firstNode;
+
+ morph = parentMorphList.mountedMorph;
+ }
+ };
+
+ Morph.prototype._syncLastNode = function Morph$syncLastNode() {
+ var morph = this;
+ var parentMorphList;
+ while (parentMorphList = morph.parentMorphList) {
+ if (parentMorphList.mountedMorph === null) {
+ break;
+ }
+ if (morph !== parentMorphList.lastChildMorph) {
+ break;
+ }
+ if (morph.lastNode === parentMorphList.mountedMorph.lastNode) {
+ break;
+ }
+
+ parentMorphList.mountedMorph.lastNode = morph.lastNode;
+
+ morph = parentMorphList.mountedMorph;
+ }
+ };
+
+ Morph.prototype.insertBeforeNode = function Morph$insertBeforeNode(parentNode, refNode) {
+ _morphRangeUtils.insertBefore(parentNode, this.firstNode, this.lastNode, refNode);
+ };
+
+ Morph.prototype.appendToNode = function Morph$appendToNode(parentNode) {
+ _morphRangeUtils.insertBefore(parentNode, this.firstNode, this.lastNode, null);
+ };
+
+ exports.default = Morph;
+});
+enifed('morph-range/morph-list', ['exports', 'morph-range/utils'], function (exports, _morphRangeUtils) {
+ 'use strict';
+
+ function MorphList() {
+ // morph graph
+ this.firstChildMorph = null;
+ this.lastChildMorph = null;
+
+ this.mountedMorph = null;
+ }
+
+ var prototype = MorphList.prototype;
+
+ prototype.clear = function MorphList$clear() {
+ var current = this.firstChildMorph;
+
+ while (current) {
+ var next = current.nextMorph;
+ current.previousMorph = null;
+ current.nextMorph = null;
+ current.parentMorphList = null;
+ current = next;
+ }
+
+ this.firstChildMorph = this.lastChildMorph = null;
+ };
+
+ prototype.destroy = function MorphList$destroy() {};
+
+ prototype.appendMorph = function MorphList$appendMorph(morph) {
+ this.insertBeforeMorph(morph, null);
+ };
+
+ prototype.insertBeforeMorph = function MorphList$insertBeforeMorph(morph, referenceMorph) {
+ if (morph.parentMorphList !== null) {
+ morph.unlink();
+ }
+ if (referenceMorph && referenceMorph.parentMorphList !== this) {
+ throw new Error('The morph before which the new morph is to be inserted is not a child of this morph.');
+ }
+
+ var mountedMorph = this.mountedMorph;
+
+ if (mountedMorph) {
+
+ var parentNode = mountedMorph.firstNode.parentNode;
+ var referenceNode = referenceMorph ? referenceMorph.firstNode : mountedMorph.lastNode.nextSibling;
+
+ _morphRangeUtils.insertBefore(parentNode, morph.firstNode, morph.lastNode, referenceNode);
+
+ // was not in list mode replace current content
+ if (!this.firstChildMorph) {
+ _morphRangeUtils.clear(this.mountedMorph.firstNode.parentNode, this.mountedMorph.firstNode, this.mountedMorph.lastNode);
+ }
+ }
+
+ morph.parentMorphList = this;
+
+ var previousMorph = referenceMorph ? referenceMorph.previousMorph : this.lastChildMorph;
+ if (previousMorph) {
+ previousMorph.nextMorph = morph;
+ morph.previousMorph = previousMorph;
+ } else {
+ this.firstChildMorph = morph;
+ }
+
+ if (referenceMorph) {
+ referenceMorph.previousMorph = morph;
+ morph.nextMorph = referenceMorph;
+ } else {
+ this.lastChildMorph = morph;
+ }
+
+ this.firstChildMorph._syncFirstNode();
+ this.lastChildMorph._syncLastNode();
+ };
+
+ prototype.removeChildMorph = function MorphList$removeChildMorph(morph) {
+ if (morph.parentMorphList !== this) {
+ throw new Error("Cannot remove a morph from a parent it is not inside of");
+ }
+
+ morph.destroy();
+ };
+
+ exports.default = MorphList;
+});
+enifed('morph-range/morph-list.umd', ['exports', 'morph-range/morph-list'], function (exports, _morphRangeMorphList) {
+ 'use strict';
+
+ (function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], factory);
+ } else if (typeof exports === 'object') {
+ module.exports = factory();
+ } else {
+ root.MorphList = factory();
+ }
+ })(undefined, function () {
+ return _morphRangeMorphList.default;
+ });
+});
+enifed("morph-range/utils", ["exports"], function (exports) {
+ // inclusive of both nodes
+ "use strict";
+
+ exports.clear = clear;
+ exports.insertBefore = insertBefore;
+
+ function clear(parentNode, firstNode, lastNode) {
+ if (!parentNode) {
+ return;
+ }
+
+ var node = firstNode;
+ var nextNode;
+ do {
+ nextNode = node.nextSibling;
+ parentNode.removeChild(node);
+ if (node === lastNode) {
+ break;
+ }
+ node = nextNode;
+ } while (node);
+ }
+
+ function insertBefore(parentNode, firstNode, lastNode, refNode) {
+ var node = firstNode;
+ var nextNode;
+ do {
+ nextNode = node.nextSibling;
+ parentNode.insertBefore(node, refNode);
+ if (node === lastNode) {
+ break;
+ }
+ node = nextNode;
+ } while (node);
+ }
+});
enifed("simple-html-tokenizer/entity-parser", ["exports"], function (exports) {
"use strict";
function EntityParser(named) {
this.named = named;