dist/ember-template-compiler.js in ember-source-2.9.0.alpha.2 vs dist/ember-template-compiler.js in ember-source-2.9.0.beta.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 v2.9.0-alpha.2 + * @version 2.9.0-beta.1 */ var enifed, requireModule, require, Ember; var mainContext = this; @@ -110,1049 +110,2454 @@ enifed = Ember.__loader.define; require = requireModule = Ember.__loader.require; } })(); -enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'backburner/binary-search', 'backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) { - 'use strict'; +var babelHelpers; - exports.default = Backburner; +function classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError('Cannot call a class as a function'); + } +} - function Backburner(queueNames, options) { - this.queueNames = queueNames; - this.options = options || {}; - if (!this.options.defaultQueue) { - this.options.defaultQueue = queueNames[0]; +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 } - this.instanceStack = []; - this._debouncees = []; - this._throttlers = []; - this._eventCallbacks = { - end: [], - begin: [] - }; + }); - var _this = this; - this._boundClearItems = function () { - clearItems(); - }; + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : defaults(subClass, superClass); +} - this._timerTimeoutId = undefined; - this._timers = []; +function taggedTemplateLiteralLoose(strings, raw) { + strings.raw = raw; + return strings; +} - this._platform = this.options._platform || _backburnerPlatform.default; +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._boundRunExpiredTimers = function () { - _this._runExpiredTimers(); - }; +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); + } } + return obj; +} - Backburner.prototype = { - begin: function () { - var options = this.options; - var onBegin = options && options.onBegin; - var previousInstance = this.currentInstance; +babelHelpers = { + classCallCheck: classCallCheck, + inherits: inherits, + taggedTemplateLiteralLoose: taggedTemplateLiteralLoose, + slice: Array.prototype.slice, + createClass: createClass, + interopExportWildcard: interopExportWildcard, + defaults: defaults +}; - if (previousInstance) { - this.instanceStack.push(previousInstance); - } +enifed('backburner', ['exports'], function (exports) { 'use strict'; - this.currentInstance = new _backburnerDeferredActionQueues.default(this.queueNames, options); - this._trigger('begin', this.currentInstance, previousInstance); - if (onBegin) { - onBegin(this.currentInstance, previousInstance); - } - }, +var NUMBER = /\d+/; - end: function () { - var options = this.options; - var onEnd = options && options.onEnd; - var currentInstance = this.currentInstance; - var nextInstance = null; +function each(collection, callback) { + for (var i = 0; i < collection.length; i++) { + callback(collection[i]); + } +} - // 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 isString(suspect) { + return typeof suspect === 'string'; +} - this.currentInstance = null; +function isFunction(suspect) { + return typeof suspect === 'function'; +} - if (this.instanceStack.length) { - nextInstance = this.instanceStack.pop(); - this.currentInstance = nextInstance; - } - this._trigger('end', currentInstance, nextInstance); - if (onEnd) { - onEnd(currentInstance, nextInstance); - } - } - } - }, +function isNumber(suspect) { + return typeof suspect === '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 isCoercableNumber(number) { + return isNumber(number) || NUMBER.test(number); +} + +function binarySearch(time, timers) { + var start = 0; + var end = timers.length - 2; + var middle, l; + + while (start < end) { + // since timers is an array of pairs 'l' will always + // be an integer + l = (end - start) / 2; + + // compensate for the index in case even number + // of pairs inside timers + middle = start + l - (l % 2); + + if (time >= timers[middle]) { + start = middle + 2; + } else { + end = middle; + } + } + + return (time >= timers[start]) ? start + 2 : start; +} + +function Queue(name, options, globalOptions) { + this.name = name; + this.globalOptions = globalOptions || {}; + this.options = options; + this._queue = []; + this.targetQueues = {}; + this._queueBeingFlushed = undefined; +} + +Queue.prototype = { + push: function(target, method, args, stack) { + var queue = this._queue; + queue.push(target, method, args, stack); + + return { + queue: this, + target: target, + method: method + }; + }, + + pushUniqueWithoutGuid: function(target, method, args, stack) { + var queue = this._queue; + + for (var i = 0, l = queue.length; i < l; i += 4) { + var currentTarget = queue[i]; + var currentMethod = queue[i+1]; + + if (currentTarget === target && currentMethod === method) { + queue[i+2] = args; // replace args + queue[i+3] = stack; // replace stack + return; } - }, + } - on: function (eventName, callback) { - if (typeof callback !== 'function') { - throw new TypeError('Callback must be a function'); + queue.push(target, method, args, stack); + }, + + targetQueue: function(targetQueue, target, method, args, stack) { + var queue = this._queue; + + 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 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 (!callbackFound) { - throw new TypeError('Cannot off() callback that does not exist'); - } - } else { - throw new TypeError('Cannot off() event "' + eventName + '" because it does not exist'); + targetQueue.push( + method, + queue.push(target, method, args, stack) - 4 + ); + }, + + pushUniqueWithGuid: function(guid, target, method, args, stack) { + var hasLocalQueue = this.targetQueues[guid]; + + if (hasLocalQueue) { + this.targetQueue(hasLocalQueue, target, method, args, stack); + } else { + this.targetQueues[guid] = [ + method, + this._queue.push(target, method, args, stack) - 4 + ]; + } + + return { + queue: this, + target: target, + method: method + }; + }, + + pushUnique: function(target, method, args, stack) { + var KEY = this.globalOptions.GUID_KEY; + + if (target && KEY) { + var guid = target[KEY]; + if (guid) { + return this.pushUniqueWithGuid(guid, target, method, args, stack); } - }, + } - run: function () /* target, method, args */{ - var length = arguments.length; - var method, target, args; + this.pushUniqueWithoutGuid(target, method, args, stack); - if (length === 1) { - method = arguments[0]; - target = null; + return { + queue: this, + target: target, + method: method + }; + }, + + invoke: function(target, method, args /*, onError, errorRecordedForStack */) { + if (args && args.length > 0) { + method.apply(target, args); + } else { + method.call(target); + } + }, + + invokeWithOnError: function(target, method, args, onError, errorRecordedForStack) { + try { + if (args && args.length > 0) { + method.apply(target, args); } else { - target = arguments[0]; - method = arguments[1]; + method.call(target); } + } catch(error) { + onError(error, errorRecordedForStack); + } + }, - if (_backburnerUtils.isString(method)) { + flush: function(sync) { + var queue = this._queue; + var length = queue.length; + + if (length === 0) { + return; + } + + 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; + + this.targetQueues = Object.create(null); + var queueItems = this._queueBeingFlushed = this._queue.slice(); + this._queue = []; + + if (before) { + before(); + } + + 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 (isString(method)) { method = target[method]; } - 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 = []; + // 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); } + } - var onError = getOnError(this.options); + if (after) { + after(); + } - this.begin(); + this._queueBeingFlushed = undefined; - // guard against Safari 6's double-finally bug - var didFinally = false; + if (sync !== false && + this._queue.length > 0) { + // check if new items have been added + this.flush(true); + } + }, - if (onError) { - try { - return method.apply(target, args); - } catch (error) { - onError(error); - } finally { - if (!didFinally) { - didFinally = true; - this.end(); + 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); } } - } else { - try { - return method.apply(target, args); - } finally { - if (!didFinally) { - didFinally = true; - this.end(); - } - } } - }, + } - /* - 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); + for (i = 0, l = queue.length; i < l; i += 4) { + currentTarget = queue[i]; + currentMethod = queue[i+1]; + + if (currentTarget === target && + currentMethod === method) { + queue.splice(i, 4); + return true; } + } - var length = arguments.length; - var method, target; + // if not found in current queue + // could be in the queue that is being flushed + queue = this._queueBeingFlushed; - if (length === 1) { - method = arguments[0]; - target = null; - } else { - target = arguments[0]; - method = arguments[1]; - } + if (!queue) { + return; + } - if (_backburnerUtils.isString(method)) { - method = target[method]; - } + for (i = 0, l = queue.length; i < l; i += 4) { + currentTarget = queue[i]; + currentMethod = queue[i+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]; - } - return method.apply(target, args); + if (currentTarget === target && + currentMethod === method) { + // don't mess with array during flush + // just nullify the method + queue[i+1] = null; + return true; } - }, + } + } +}; - /* - 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; +function DeferredActionQueues(queueNames, options) { + var queues = this.queues = {}; + this.queueNames = queueNames = queueNames || []; - if (length === 2) { - method = arguments[1]; - target = null; - } else { - target = arguments[1]; - method = arguments[2]; - } + this.options = options; - if (_backburnerUtils.isString(method)) { - method = target[method]; - } + each(queueNames, function(queueName) { + queues[queueName] = new Queue(queueName, options[queueName], options); + }); +} - var stack = this.DEBUG ? new Error() : undefined; +function noSuchQueue(name) { + throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist'); +} - if (length > 3) { - args = new Array(length - 3); - for (var i = 3; i < length; i++) { - args[i - 3] = arguments[i]; - } - } else { - args = undefined; - } +function noSuchMethod(name) { + throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist'); +} - if (!this.currentInstance) { - createAutorun(this); - } - return this.currentInstance.schedule(queueName, target, method, args, false, stack); - }, +DeferredActionQueues.prototype = { + schedule: function(name, target, method, args, onceFlag, stack) { + var queues = this.queues; + var queue = queues[name]; - deferOnce: function (queueName /* , target, method, args */) { - var length = arguments.length; - var method, target, args; + if (!queue) { + noSuchQueue(name); + } - if (length === 2) { - method = arguments[1]; - target = null; - } else { - target = arguments[1]; - method = arguments[2]; - } + if (!method) { + noSuchMethod(name); + } - if (_backburnerUtils.isString(method)) { - method = target[method]; - } + if (onceFlag) { + return queue.pushUnique(target, method, args, stack); + } else { + return queue.push(target, method, args, stack); + } + }, - var stack = this.DEBUG ? new Error() : undefined; + flush: function() { + var queues = this.queues; + var queueNames = this.queueNames; + var queueName, queue; + var queueNameIndex = 0; + var numberOfQueues = queueNames.length; - if (length > 3) { - args = new Array(length - 3); - for (var i = 3; i < length; i++) { - args[i - 3] = arguments[i]; - } + while (queueNameIndex < numberOfQueues) { + queueName = queueNames[queueNameIndex]; + queue = queues[queueName]; + + var numberOfQueueItems = queue._queue.length; + + if (numberOfQueueItems === 0) { + queueNameIndex++; } else { - args = undefined; + queue.flush(false /* async */); + queueNameIndex = 0; } + } + } +}; - if (!this.currentInstance) { - createAutorun(this); - } - return this.currentInstance.schedule(queueName, target, method, args, true, stack); +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: [] + }; + + var _this = this; + this._boundClearItems = function() { + clearItems(); + }; + + this._timerTimeoutId = undefined; + this._timers = []; + + this._platform = this.options._platform || { + setTimeout: function (fn, ms) { + return setTimeout(fn, ms); }, + clearTimeout: function (id) { + clearTimeout(id); + } + }; - setTimeout: function () { - var l = arguments.length; - var args = new Array(l); + this._boundRunExpiredTimers = function () { + _this._runExpiredTimers(); + }; +} - for (var x = 0; x < l; x++) { - args[x] = arguments[x]; - } +Backburner.prototype = { + begin: function() { + var options = this.options; + var onBegin = options && options.onBegin; + var previousInstance = this.currentInstance; - var length = args.length, - method, - wait, - target, - methodOrTarget, - methodOrWait, - methodOrArgs; + if (previousInstance) { + this.instanceStack.push(previousInstance); + } - if (length === 0) { - return; - } else if (length === 1) { - method = args.shift(); - wait = 0; - } else if (length === 2) { - methodOrTarget = args[0]; - methodOrWait = args[1]; + this.currentInstance = new DeferredActionQueues(this.queueNames, options); + this._trigger('begin', this.currentInstance, previousInstance); + if (onBegin) { + onBegin(this.currentInstance, previousInstance); + } + }, - 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]; + end: function() { + var options = this.options; + var onEnd = options && options.onEnd; + var currentInstance = this.currentInstance; + var nextInstance = null; - if (_backburnerUtils.isCoercableNumber(last)) { - wait = args.pop(); - } else { - wait = 0; - } + // 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; - methodOrTarget = args[0]; - methodOrArgs = args[1]; + this.currentInstance = null; - if (_backburnerUtils.isFunction(methodOrArgs) || _backburnerUtils.isString(methodOrArgs) && methodOrTarget !== null && methodOrArgs in methodOrTarget) { - target = args.shift(); - method = args.shift(); - } else { - method = args.shift(); + if (this.instanceStack.length) { + nextInstance = this.instanceStack.pop(); + this.currentInstance = nextInstance; } + this._trigger('end', currentInstance, nextInstance); + if (onEnd) { + onEnd(currentInstance, nextInstance); + } } + } + }, - var executeAt = Date.now() + parseInt(wait !== wait ? 0 : wait, 10); + /** + 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. - if (_backburnerUtils.isString(method)) { - method = target[method]; + @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); } + } + }, - var onError = getOnError(this.options); + 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'); + } + }, - function fn() { - if (onError) { - try { - method.apply(target, args); - } catch (e) { - onError(e); + 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--; } - } else { - method.apply(target, args); } } + 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'); + } + }, - return this._setTimeout(fn, executeAt); - }, + run: function(/* target, method, args */) { + var length = arguments.length; + var method, target, args; - _setTimeout: function (fn, executeAt) { - if (this._timers.length === 0) { - this._timers.push(executeAt, fn); - this._installTimerTimeout(); - return fn; + if (length === 1) { + method = arguments[0]; + target = null; + } else { + target = arguments[0]; + method = arguments[1]; + } + + if (isString(method)) { + method = target[method]; + } + + 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 = []; + } - // find position to insert - var i = _backburnerBinarySearch.default(executeAt, this._timers); + var onError = getOnError(this.options); - this._timers.splice(i, 0, executeAt, fn); + this.begin(); - // we should be the new earliest timer if i == 0 - if (i === 0) { - this._reinstallTimerTimeout(); + // 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(); + } } + } else { + try { + return method.apply(target, args); + } finally { + if (!didFinally) { + didFinally = true; + this.end(); + } + } + } + }, - return fn; - }, + /* + Join the passed method with an existing queue and execute immediately, + if there isn't one use `Backburner#run`. - 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; + 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. - if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) { - wait = immediate; - immediate = true; - } else { - wait = args.pop(); + @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); + } + + var length = arguments.length; + var method, target; + + if (length === 1) { + method = arguments[0]; + target = null; + } else { + target = arguments[0]; + method = arguments[1]; + } + + if (isString(method)) { + method = target[method]; + } + + 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); + } + }, - wait = parseInt(wait, 10); - index = findThrottler(target, method, this._throttlers); - if (index > -1) { - return this._throttlers[index]; - } // throttled + /* + Defer the passed function to run inside the specified queue. - 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); + @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; - if (immediate) { - this.run.apply(this, args); + if (length === 2) { + method = arguments[1]; + target = null; + } else { + target = arguments[1]; + method = arguments[2]; + } + + if (isString(method)) { + method = target[method]; + } + + 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 { + args = undefined; + } - throttler = [target, method, timer]; + if (!this.currentInstance) { createAutorun(this); } + return this.currentInstance.schedule(queueName, target, method, args, false, stack); + }, - this._throttlers.push(throttler); + deferOnce: function(queueName /* , target, method, args */) { + var length = arguments.length; + var method, target, args; - return throttler; - }, + if (length === 2) { + method = arguments[1]; + target = null; + } else { + target = arguments[1]; + method = arguments[2]; + } - 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]; + if (isString(method)) { + method = target[method]; + } + + 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 { + args = undefined; + } - var immediate = args.pop(); - var wait, index, debouncee, timer; + if (!this.currentInstance) { + createAutorun(this); + } + return this.currentInstance.schedule(queueName, target, method, args, true, stack); + }, - if (_backburnerUtils.isNumber(immediate) || _backburnerUtils.isString(immediate)) { - wait = immediate; - immediate = false; + setTimeout: function() { + var l = arguments.length; + var args = new Array(l); + + for (var x = 0; x < l; x++) { + args[x] = arguments[x]; + } + + 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; + } + } else { + var last = args[args.length - 1]; + + if (isCoercableNumber(last)) { wait = args.pop(); + } else { + wait = 0; } - wait = parseInt(wait, 10); - // Remove debouncee - index = findDebouncee(target, method, this._debouncees); + methodOrTarget = args[0]; + methodOrArgs = args[1]; - if (index > -1) { - debouncee = this._debouncees[index]; - this._debouncees.splice(index, 1); - this._platform.clearTimeout(debouncee[2]); + if (isFunction(methodOrArgs) || (isString(methodOrArgs) && + methodOrTarget !== null && + methodOrArgs in methodOrTarget)) { + target = args.shift(); + method = args.shift(); + } else { + method = args.shift(); } + } - timer = this._platform.setTimeout(function () { - if (!immediate) { - backburner.run.apply(backburner, args); + var executeAt = Date.now() + parseInt(wait !== wait ? 0 : wait, 10); + + if (isString(method)) { + method = target[method]; + } + + var onError = getOnError(this.options); + + function fn() { + if (onError) { + try { + method.apply(target, args); + } catch (e) { + onError(e); } - var index = findDebouncee(target, method, backburner._debouncees); - if (index > -1) { - backburner._debouncees.splice(index, 1); - } - }, wait); + } else { + method.apply(target, args); + } + } - if (immediate && index === -1) { + return this._setTimeout(fn, executeAt); + }, + + _setTimeout: function (fn, executeAt) { + if (this._timers.length === 0) { + this._timers.push(executeAt, fn); + this._installTimerTimeout(); + return fn; + } + + // find position to insert + var i = binarySearch(executeAt, this._timers); + + this._timers.splice(i, 0, executeAt, fn); + + // we should be the new earliest timer if i == 0 + if (i === 0) { + this._reinstallTimerTimeout(); + } + + return fn; + }, + + 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; + + if (isNumber(immediate) || isString(immediate)) { + wait = immediate; + immediate = true; + } else { + wait = args.pop(); + } + + wait = parseInt(wait, 10); + + index = findThrottler(target, method, this._throttlers); + if (index > -1) { return this._throttlers[index]; } // throttled + + 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); - debouncee = [target, method, timer]; + if (immediate) { + this.run.apply(this, args); + } - backburner._debouncees.push(debouncee); + throttler = [target, method, timer]; - return debouncee; - }, + this._throttlers.push(throttler); - cancelTimers: function () { - _backburnerUtils.each(this._throttlers, this._boundClearItems); - this._throttlers = []; + return throttler; + }, - _backburnerUtils.each(this._debouncees, this._boundClearItems); - this._debouncees = []; + 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]; + } - this._clearTimerTimeout(); - this._timers = []; + var immediate = args.pop(); + var wait, index, debouncee, timer; - if (this._autorun) { - this._platform.clearTimeout(this._autorun); - this._autorun = null; + if (isNumber(immediate) || isString(immediate)) { + wait = immediate; + immediate = false; + } else { + wait = args.pop(); + } + + wait = parseInt(wait, 10); + // Remove debouncee + index = findDebouncee(target, method, this._debouncees); + + if (index > -1) { + debouncee = this._debouncees[index]; + this._debouncees.splice(index, 1); + this._platform.clearTimeout(debouncee[2]); + } + + 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); - hasTimers: function () { - return !!this._timers.length || !!this._debouncees.length || !!this._throttlers.length || this._autorun; - }, + if (immediate && index === -1) { + backburner.run.apply(backburner, args); + } - cancel: function (timer) { - var timerType = typeof timer; + debouncee = [ + target, + method, + timer + ]; - 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; + backburner._debouncees.push(debouncee); + + return debouncee; + }, + + cancelTimers: function() { + each(this._throttlers, this._boundClearItems); + this._throttlers = []; + + each(this._debouncees, this._boundClearItems); + this._debouncees = []; + + this._clearTimerTimeout(); + this._timers = []; + + if (this._autorun) { + this._platform.clearTimeout(this._autorun); + this._autorun = null; + } + }, + + hasTimers: function() { + return !!this._timers.length || !!this._debouncees.length || !!this._throttlers.length || this._autorun; + }, + + cancel: function (timer) { + var timerType = typeof timer; + + 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 } - }, + } 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; + _cancelItem: function(findMethod, array, timer){ + var item, index; - if (timer.length < 3) { - return false; - } + if (timer.length < 3) { return false; } - index = findMethod(timer[0], timer[1], array); + index = findMethod(timer[0], timer[1], array); - if (index > -1) { + if (index > -1) { - item = array[index]; + item = array[index]; - if (item[2] === timer[2]) { - array.splice(index, 1); - this._platform.clearTimeout(timer[2]); - return true; - } + if (item[2] === timer[2]) { + array.splice(index, 1); + this._platform.clearTimeout(timer[2]); + return true; } + } - return false; + return false; + }, + + _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; + } + } + 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); + } +}; + +Backburner.prototype.schedule = Backburner.prototype.defer; +Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce; +Backburner.prototype.later = Backburner.prototype.setTimeout; + +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; + } + } + + return index; +} + +function clearItems(item) { + this._platform.clearTimeout(item[2]); +} + +exports['default'] = Backburner; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}); +enifed('container/container', ['exports', 'ember-environment', 'ember-metal', 'container/owner'], function (exports, _emberEnvironment, _emberMetal, _containerOwner) { + 'use strict'; + + exports.default = Container; + exports.buildFakeContainerWithDeprecations = buildFakeContainerWithDeprecations; + + var CONTAINER_OVERRIDE = _emberMetal.symbol('CONTAINER_OVERRIDE'); + + /** + A container used to instantiate and cache objects. + + Every `Container` must be associated with a `Registry`, which is referenced + to determine the factory and options that should be used to instantiate + objects. + + The public API for `Container` is still in flux and should not be considered + stable. + + @private + @class Container + */ + + function Container(registry, options) { + this.registry = registry; + this.owner = options && options.owner ? options.owner : null; + this.cache = _emberMetal.dictionary(options && options.cache ? options.cache : null); + this.factoryCache = _emberMetal.dictionary(options && options.factoryCache ? options.factoryCache : null); + this.validationCache = _emberMetal.dictionary(options && options.validationCache ? options.validationCache : null); + this._fakeContainerToInject = buildFakeContainerWithDeprecations(this); + this[CONTAINER_OVERRIDE] = undefined; + this.isDestroyed = false; + } + + Container.prototype = { + /** + @private + @property owner + @type Object + */ + owner: null, + + /** + @private + @property registry + @type Registry + @since 1.11.0 + */ + registry: null, + + /** + @private + @property cache + @type InheritingDict + */ + cache: null, + + /** + @private + @property factoryCache + @type InheritingDict + */ + factoryCache: null, + + /** + @private + @property validationCache + @type InheritingDict + */ + validationCache: null, + + /** + Given a fullName return a corresponding instance. + The default behaviour is for lookup to return a singleton instance. + The singleton is scoped to the container, allowing multiple containers + to all have their own locally scoped singletons. + ```javascript + let registry = new Registry(); + let container = registry.container(); + registry.register('api:twitter', Twitter); + let twitter = container.lookup('api:twitter'); + twitter instanceof Twitter; // => true + // by default the container will return singletons + let twitter2 = container.lookup('api:twitter'); + twitter2 instanceof Twitter; // => true + twitter === twitter2; //=> true + ``` + If singletons are not wanted, an optional flag can be provided at lookup. + ```javascript + let registry = new Registry(); + let container = registry.container(); + registry.register('api:twitter', Twitter); + let twitter = container.lookup('api:twitter', { singleton: false }); + let twitter2 = container.lookup('api:twitter', { singleton: false }); + twitter === twitter2; //=> false + ``` + @private + @method lookup + @param {String} fullName + @param {Object} [options] + @param {String} [options.source] The fullname of the request source (used for local lookup) + @return {any} + */ + lookup: function (fullName, options) { + _emberMetal.assert('fullName must be a proper full name', this.registry.validateFullName(fullName)); + return lookup(this, this.registry.normalize(fullName), options); }, - _runExpiredTimers: function () { - this._timerTimeoutId = undefined; - this.run(this, this._scheduleExpiredTimers); + /** + Given a fullName, return the corresponding factory. + @private + @method lookupFactory + @param {String} fullName + @param {Object} [options] + @param {String} [options.source] The fullname of the request source (used for local lookup) + @return {any} + */ + lookupFactory: function (fullName, options) { + _emberMetal.assert('fullName must be a proper full name', this.registry.validateFullName(fullName)); + return factoryFor(this, this.registry.normalize(fullName), options); }, - _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; + /** + A depth first traversal, destroying the container, its descendant containers and all + their managed objects. + @private + @method destroy + */ + destroy: function () { + eachDestroyable(this, function (item) { + if (item.destroy) { + item.destroy(); } - } - timers.splice(0, i); - this._installTimerTimeout(); - }, + }); - _reinstallTimerTimeout: function () { - this._clearTimerTimeout(); - this._installTimerTimeout(); + this.isDestroyed = true; }, - _clearTimerTimeout: function () { - if (!this._timerTimeoutId) { - return; + /** + Clear either the entire cache or just the cache for a particular key. + @private + @method reset + @param {String} fullName optional key to reset; if missing, resets everything + */ + reset: function (fullName) { + if (arguments.length > 0) { + resetMember(this, this.registry.normalize(fullName)); + } else { + resetCache(this); } - this._platform.clearTimeout(this._timerTimeoutId); - this._timerTimeoutId = undefined; }, - _installTimerTimeout: function () { - if (!this._timers.length) { + /** + Returns an object that can be used to provide an owner to a + manually created instance. + @private + @method ownerInjection + @returns { Object } + */ + ownerInjection: function () { + var _ref; + + return _ref = {}, _ref[_containerOwner.OWNER] = this.owner, _ref; + } + }; + + function isSingleton(container, fullName) { + return container.registry.getOption(fullName, 'singleton') !== false; + } + + function lookup(container, fullName) { + var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; + + if (options.source) { + fullName = container.registry.expandLocalLookup(fullName, options); + + // if expandLocalLookup returns falsey, we do not support local lookup + if (!fullName) { 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); } - }; - Backburner.prototype.schedule = Backburner.prototype.defer; - Backburner.prototype.scheduleOnce = Backburner.prototype.deferOnce; - Backburner.prototype.later = Backburner.prototype.setTimeout; + if (container.cache[fullName] !== undefined && options.singleton !== false) { + return container.cache[fullName]; + } - function getOnError(options) { - return options.onError || options.onErrorTarget && options.onErrorTarget[options.onErrorMethod]; - } + var value = instantiate(container, fullName); - function createAutorun(backburner) { - backburner.begin(); - backburner._autorun = backburner._platform.setTimeout(function () { - backburner._autorun = null; - backburner.end(); - }); + if (value === undefined) { + return; + } + + if (isSingleton(container, fullName) && options.singleton !== false) { + container.cache[fullName] = value; + } + + return value; } - function findDebouncee(target, method, debouncees) { - return findItem(target, method, debouncees); + function markInjectionsAsDynamic(injections) { + injections._dynamic = true; } - function findThrottler(target, method, throttlers) { - return findItem(target, method, throttlers); + function areInjectionsDynamic(injections) { + return !!injections._dynamic; } - function findItem(target, method, collection) { - var item; - var index = -1; + function buildInjections() /* container, ...injections */{ + var hash = {}; - for (var i = 0, l = collection.length; i < l; i++) { - item = collection[i]; - if (item[0] === target && item[1] === method) { - index = i; - break; + if (arguments.length > 1) { + var container = arguments[0]; + var injections = []; + var injection = undefined; + + for (var i = 1; i < arguments.length; i++) { + if (arguments[i]) { + injections = injections.concat(arguments[i]); + } } + + container.registry.validateInjections(injections); + + for (var i = 0; i < injections.length; i++) { + injection = injections[i]; + hash[injection.property] = lookup(container, injection.fullName); + if (!isSingleton(container, injection.fullName)) { + markInjectionsAsDynamic(hash); + } + } } - return index; + return hash; } - function clearItems(item) { - this._platform.clearTimeout(item[2]); - } -}); -enifed("backburner/binary-search", ["exports"], function (exports) { - "use strict"; + function factoryFor(container, fullName) { + var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - exports.default = binarySearch; + var registry = container.registry; - function binarySearch(time, timers) { - var start = 0; - var end = timers.length - 2; - var middle, l; + if (options.source) { + fullName = registry.expandLocalLookup(fullName, options); - while (start < end) { - // since timers is an array of pairs 'l' will always - // be an integer - l = (end - start) / 2; + // if expandLocalLookup returns falsey, we do not support local lookup + if (!fullName) { + return; + } + } - // compensate for the index in case even number - // of pairs inside timers - middle = start + l - l % 2; + var cache = container.factoryCache; + if (cache[fullName]) { + return cache[fullName]; + } + var factory = registry.resolve(fullName); + if (factory === undefined) { + return; + } - if (time >= timers[middle]) { - start = middle + 2; - } else { - end = middle; + var type = fullName.split(':')[0]; + if (!factory || typeof factory.extend !== 'function' || !_emberEnvironment.ENV.MODEL_FACTORY_INJECTIONS && type === 'model') { + if (factory && typeof factory._onLookup === 'function') { + factory._onLookup(fullName); } - } - return time >= timers[start] ? start + 2 : start; + // TODO: think about a 'safe' merge style extension + // for now just fallback to create time injection + cache[fullName] = factory; + return factory; + } else { + var injections = injectionsFor(container, fullName); + var factoryInjections = factoryInjectionsFor(container, fullName); + var cacheable = !areInjectionsDynamic(injections) && !areInjectionsDynamic(factoryInjections); + + factoryInjections._toString = registry.makeToString(factory, fullName); + + var injectedFactory = factory.extend(injections); + + // TODO - remove all `container` injections when Ember reaches v3.0.0 + injectDeprecatedContainer(injectedFactory.prototype, container); + injectedFactory.reopenClass(factoryInjections); + + if (factory && typeof factory._onLookup === 'function') { + factory._onLookup(fullName); + } + + if (cacheable) { + cache[fullName] = injectedFactory; + } + + return injectedFactory; + } } -}); -enifed('backburner/deferred-action-queues', ['exports', 'backburner/utils', 'backburner/queue'], function (exports, _backburnerUtils, _backburnerQueue) { - 'use strict'; - exports.default = DeferredActionQueues; + function injectionsFor(container, fullName) { + var registry = container.registry; + var splitName = fullName.split(':'); + var type = splitName[0]; - function DeferredActionQueues(queueNames, options) { - var queues = this.queues = {}; - this.queueNames = queueNames = queueNames || []; + var injections = buildInjections(container, registry.getTypeInjections(type), registry.getInjections(fullName)); + injections._debugContainerKey = fullName; - this.options = options; + _containerOwner.setOwner(injections, container.owner); - _backburnerUtils.each(queueNames, function (queueName) { - queues[queueName] = new _backburnerQueue.default(queueName, options[queueName], options); - }); + return injections; } - function noSuchQueue(name) { - throw new Error('You attempted to schedule an action in a queue (' + name + ') that doesn\'t exist'); + function factoryInjectionsFor(container, fullName) { + var registry = container.registry; + var splitName = fullName.split(':'); + var type = splitName[0]; + + var factoryInjections = buildInjections(container, registry.getFactoryTypeInjections(type), registry.getFactoryInjections(fullName)); + factoryInjections._debugContainerKey = fullName; + + return factoryInjections; } - function noSuchMethod(name) { - throw new Error('You attempted to schedule an action in a queue (' + name + ') for a method that doesn\'t exist'); + function instantiate(container, fullName) { + var factory = factoryFor(container, fullName); + var lazyInjections = undefined, + validationCache = undefined; + + if (container.registry.getOption(fullName, 'instantiate') === false) { + return factory; + } + + if (factory) { + if (typeof factory.create !== 'function') { + throw new Error('Failed to create an instance of \'' + fullName + '\'. Most likely an improperly defined class or' + ' an invalid module export.'); + } + + validationCache = container.validationCache; + + _emberMetal.runInDebug(function () { + // Ensure that all lazy injections are valid at instantiation time + if (!validationCache[fullName] && typeof factory._lazyInjections === 'function') { + lazyInjections = factory._lazyInjections(); + lazyInjections = container.registry.normalizeInjectionsHash(lazyInjections); + + container.registry.validateInjections(lazyInjections); + } + }); + + validationCache[fullName] = true; + + var obj = undefined; + + if (typeof factory.extend === 'function') { + // assume the factory was extendable and is already injected + obj = factory.create(); + } else { + // assume the factory was extendable + // to create time injections + // TODO: support new'ing for instantiation and merge injections for pure JS Functions + var injections = injectionsFor(container, fullName); + + // Ensure that a container is available to an object during instantiation. + // TODO - remove when Ember reaches v3.0.0 + // This "fake" container will be replaced after instantiation with a + // property that raises deprecations every time it is accessed. + injections.container = container._fakeContainerToInject; + obj = factory.create(injections); + + // TODO - remove when Ember reaches v3.0.0 + if (!Object.isFrozen(obj) && 'container' in obj) { + injectDeprecatedContainer(obj, container); + } + } + + return obj; + } } - DeferredActionQueues.prototype = { - schedule: function (name, target, method, args, onceFlag, stack) { - var queues = this.queues; - var queue = queues[name]; + // TODO - remove when Ember reaches v3.0.0 + function injectDeprecatedContainer(object, container) { + Object.defineProperty(object, 'container', { + configurable: true, + enumerable: false, + get: function () { + _emberMetal.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper instead to access the owner of this object.', false, { id: 'ember-application.injected-container', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' }); + return this[CONTAINER_OVERRIDE] || container; + }, - if (!queue) { - noSuchQueue(name); + set: function (value) { + _emberMetal.deprecate('Providing the `container` property to ' + this + ' is deprecated. Please use `Ember.setOwner` or `owner.ownerInjection()` instead to provide an owner to the instance being created.', false, { id: 'ember-application.injected-container', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' }); + + this[CONTAINER_OVERRIDE] = value; + + return value; } + }); + } - if (!method) { - noSuchMethod(name); + function eachDestroyable(container, callback) { + var cache = container.cache; + var keys = Object.keys(cache); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = cache[key]; + + if (container.registry.getOption(key, 'instantiate') !== false) { + callback(value); } + } + } - if (onceFlag) { - return queue.pushUnique(target, method, args, stack); - } else { - return queue.push(target, method, args, stack); + function resetCache(container) { + eachDestroyable(container, function (value) { + if (value.destroy) { + value.destroy(); } - }, + }); - flush: function () { - var queues = this.queues; - var queueNames = this.queueNames; - var queueName, queue; - var queueNameIndex = 0; - var numberOfQueues = queueNames.length; + container.cache.dict = _emberMetal.dictionary(null); + } - while (queueNameIndex < numberOfQueues) { - queueName = queueNames[queueNameIndex]; - queue = queues[queueName]; + function resetMember(container, fullName) { + var member = container.cache[fullName]; - var numberOfQueueItems = queue._queue.length; + delete container.factoryCache[fullName]; - if (numberOfQueueItems === 0) { - queueNameIndex++; - } else { - queue.flush(false /* async */); - queueNameIndex = 0; - } + if (member) { + delete container.cache[fullName]; + + if (member.destroy) { + member.destroy(); } } - }; + } + + function buildFakeContainerWithDeprecations(container) { + var fakeContainer = {}; + var propertyMappings = { + lookup: 'lookup', + lookupFactory: '_lookupFactory' + }; + + for (var containerProperty in propertyMappings) { + fakeContainer[containerProperty] = buildFakeContainerFunction(container, containerProperty, propertyMappings[containerProperty]); + } + + return fakeContainer; + } + + function buildFakeContainerFunction(container, containerProperty, ownerProperty) { + return function () { + _emberMetal.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper to access the owner of this object and then call `' + ownerProperty + '` instead.', false, { + id: 'ember-application.injected-container', + until: '3.0.0', + url: 'http://emberjs.com/deprecations/v2.x#toc_injected-container-access' + }); + return container[containerProperty].apply(container, arguments); + }; + } }); -enifed('backburner/platform', ['exports'], function (exports) { +enifed('container/index', ['exports', 'container/registry', 'container/container', 'container/owner'], function (exports, _containerRegistry, _containerContainer, _containerOwner) { + /* + Public API for the container is still in flux. + The public API, specified on the application namespace should be considered the stable API. + // @module container + @private + */ + 'use strict'; - var GlobalContext; + exports.Registry = _containerRegistry.default; + exports.privatize = _containerRegistry.privatize; + exports.Container = _containerContainer.default; + exports.buildFakeContainerWithDeprecations = _containerContainer.buildFakeContainerWithDeprecations; + exports.OWNER = _containerOwner.OWNER; + exports.getOwner = _containerOwner.getOwner; + exports.setOwner = _containerOwner.setOwner; +}); +enifed('container/owner', ['exports', 'ember-metal'], function (exports, _emberMetal) { + /** + @module ember + @submodule ember-runtime + */ - /* global self */ - if (typeof self === 'object') { - GlobalContext = self; + 'use strict'; - /* global global */ - } else if (typeof global === 'object') { - GlobalContext = global; + exports.getOwner = getOwner; + exports.setOwner = setOwner; + var OWNER = _emberMetal.symbol('OWNER'); - /* global window */ - } else if (typeof window === 'object') { - GlobalContext = window; - } else { - throw new Error('no global: `self`, `global` nor `window` was found'); + 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 + */ - exports.default = GlobalContext; + function getOwner(object) { + return object[OWNER]; + } + + /** + `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 + */ + + function setOwner(object, owner) { + object[OWNER] = owner; + } }); -enifed('backburner/queue', ['exports', 'backburner/utils'], function (exports, _backburnerUtils) { +enifed('container/registry', ['exports', 'ember-metal', 'container/container'], function (exports, _emberMetal, _containerContainer) { 'use strict'; - exports.default = Queue; + exports.default = Registry; + exports.privatize = privatize; - function Queue(name, options, globalOptions) { - this.name = name; - this.globalOptions = globalOptions || {}; - this.options = options; - this._queue = []; - this.targetQueues = {}; - this._queueBeingFlushed = undefined; + var VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/; + + /** + A registry used to store factory and option information keyed + by type. + + A `Registry` stores the factory and option information needed by a + `Container` to instantiate and cache objects. + + The API for `Registry` is still in flux and should not be considered stable. + + @private + @class Registry + @since 1.11.0 + */ + + function Registry(options) { + this.fallback = options && options.fallback ? options.fallback : null; + + if (options && options.resolver) { + this.resolver = options.resolver; + + if (typeof this.resolver === 'function') { + deprecateResolverFunction(this); + } + } + + this.registrations = _emberMetal.dictionary(options && options.registrations ? options.registrations : null); + + this._typeInjections = _emberMetal.dictionary(null); + this._injections = _emberMetal.dictionary(null); + this._factoryTypeInjections = _emberMetal.dictionary(null); + this._factoryInjections = _emberMetal.dictionary(null); + + this._localLookupCache = new _emberMetal.EmptyObject(); + this._normalizeCache = _emberMetal.dictionary(null); + this._resolveCache = _emberMetal.dictionary(null); + this._failCache = _emberMetal.dictionary(null); + + this._options = _emberMetal.dictionary(null); + this._typeOptions = _emberMetal.dictionary(null); } - Queue.prototype = { - push: function (target, method, args, stack) { - var queue = this._queue; - queue.push(target, method, args, stack); + Registry.prototype = { + /** + A backup registry for resolving registrations when no matches can be found. + @private + @property fallback + @type Registry + */ + fallback: null, - return { - queue: this, - target: target, - method: method - }; + /** + An object that has a `resolve` method that resolves a name. + @private + @property resolver + @type Resolver + */ + resolver: null, + + /** + @private + @property registrations + @type InheritingDict + */ + registrations: null, + + /** + @private + @property _typeInjections + @type InheritingDict + */ + _typeInjections: null, + + /** + @private + @property _injections + @type InheritingDict + */ + _injections: null, + + /** + @private + @property _factoryTypeInjections + @type InheritingDict + */ + _factoryTypeInjections: null, + + /** + @private + @property _factoryInjections + @type InheritingDict + */ + _factoryInjections: null, + + /** + @private + @property _normalizeCache + @type InheritingDict + */ + _normalizeCache: null, + + /** + @private + @property _resolveCache + @type InheritingDict + */ + _resolveCache: null, + + /** + @private + @property _options + @type InheritingDict + */ + _options: null, + + /** + @private + @property _typeOptions + @type InheritingDict + */ + _typeOptions: null, + + /** + Creates a container based on this registry. + @private + @method container + @param {Object} options + @return {Container} created container + */ + container: function (options) { + return new _containerContainer.default(this, options); }, - pushUniqueWithoutGuid: function (target, method, args, stack) { - var queue = this._queue; + /** + Registers a factory for later injection. + Example: + ```javascript + let registry = new Registry(); + registry.register('model:user', Person, {singleton: false }); + registry.register('fruit:favorite', Orange); + registry.register('communication:main', Email, {singleton: false}); + ``` + @private + @method register + @param {String} fullName + @param {Function} factory + @param {Object} options + */ + register: function (fullName, factory) { + var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - for (var i = 0, l = queue.length; i < l; i += 4) { - var currentTarget = queue[i]; - var currentMethod = queue[i + 1]; + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); - if (currentTarget === target && currentMethod === method) { - queue[i + 2] = args; // replace args - queue[i + 3] = stack; // replace stack - return; - } + if (factory === undefined) { + throw new TypeError('Attempting to register an unknown factory: \'' + fullName + '\''); } - queue.push(target, method, args, stack); + var normalizedName = this.normalize(fullName); + + if (this._resolveCache[normalizedName]) { + throw new Error('Cannot re-register: \'' + fullName + '\', as it has already been resolved.'); + } + + delete this._failCache[normalizedName]; + this.registrations[normalizedName] = factory; + this._options[normalizedName] = options; }, - targetQueue: function (targetQueue, target, method, args, stack) { - var queue = this._queue; + /** + Unregister a fullName + ```javascript + let registry = new Registry(); + registry.register('model:user', User); + registry.resolve('model:user').create() instanceof User //=> true + registry.unregister('model:user') + registry.resolve('model:user') === undefined //=> true + ``` + @private + @method unregister + @param {String} fullName + */ + unregister: function (fullName) { + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); - for (var i = 0, l = targetQueue.length; i < l; i += 2) { - var currentMethod = targetQueue[i]; - var currentIndex = targetQueue[i + 1]; + var normalizedName = this.normalize(fullName); - if (currentMethod === method) { - queue[currentIndex + 2] = args; // replace args - queue[currentIndex + 3] = stack; // replace stack - return; - } + this._localLookupCache = new _emberMetal.EmptyObject(); + + delete this.registrations[normalizedName]; + delete this._resolveCache[normalizedName]; + delete this._failCache[normalizedName]; + delete this._options[normalizedName]; + }, + + /** + Given a fullName return the corresponding factory. + By default `resolve` will retrieve the factory from + the registry. + ```javascript + let registry = new Registry(); + registry.register('api:twitter', Twitter); + registry.resolve('api:twitter') // => Twitter + ``` + Optionally the registry can be provided with a custom resolver. + If provided, `resolve` will first provide the custom resolver + the opportunity to resolve the fullName, otherwise it will fallback + to the registry. + ```javascript + let registry = new Registry(); + registry.resolver = function(fullName) { + // lookup via the module system of choice + }; + // the twitter factory is added to the module system + registry.resolve('api:twitter') // => Twitter + ``` + @private + @method resolve + @param {String} fullName + @param {Object} [options] + @param {String} [options.source] the fullname of the request source (used for local lookups) + @return {Function} fullName's factory + */ + resolve: function (fullName, options) { + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); + var factory = resolve(this, this.normalize(fullName), options); + if (factory === undefined && this.fallback) { + var _fallback; + + factory = (_fallback = this.fallback).resolve.apply(_fallback, arguments); } + return factory; + }, - targetQueue.push(method, queue.push(target, method, args, stack) - 4); + /** + A hook that can be used to describe how the resolver will + attempt to find the factory. + For example, the default Ember `.describe` returns the full + class name (including namespace) where Ember's resolver expects + to find the `fullName`. + @private + @method describe + @param {String} fullName + @return {string} described fullName + */ + describe: function (fullName) { + if (this.resolver && this.resolver.lookupDescription) { + return this.resolver.lookupDescription(fullName); + } else if (this.fallback) { + return this.fallback.describe(fullName); + } else { + return fullName; + } }, - pushUniqueWithGuid: function (guid, target, method, args, stack) { - var hasLocalQueue = this.targetQueues[guid]; + /** + A hook to enable custom fullName normalization behaviour + @private + @method normalizeFullName + @param {String} fullName + @return {string} normalized fullName + */ + normalizeFullName: function (fullName) { + if (this.resolver && this.resolver.normalize) { + return this.resolver.normalize(fullName); + } else if (this.fallback) { + return this.fallback.normalizeFullName(fullName); + } else { + return fullName; + } + }, - if (hasLocalQueue) { - this.targetQueue(hasLocalQueue, target, method, args, stack); + /** + Normalize a fullName based on the application's conventions + @private + @method normalize + @param {String} fullName + @return {string} normalized fullName + */ + normalize: function (fullName) { + return this._normalizeCache[fullName] || (this._normalizeCache[fullName] = this.normalizeFullName(fullName)); + }, + + /** + @method makeToString + @private + @param {any} factory + @param {string} fullName + @return {function} toString function + */ + makeToString: function (factory, fullName) { + if (this.resolver && this.resolver.makeToString) { + return this.resolver.makeToString(factory, fullName); + } else if (this.fallback) { + return this.fallback.makeToString(factory, fullName); } else { - this.targetQueues[guid] = [method, this._queue.push(target, method, args, stack) - 4]; + return factory.toString(); } + }, - return { - queue: this, - target: target, - method: method - }; + /** + Given a fullName check if the container is aware of its factory + or singleton instance. + @private + @method has + @param {String} fullName + @param {Object} [options] + @param {String} [options.source] the fullname of the request source (used for local lookups) + @return {Boolean} + */ + has: function (fullName, options) { + if (!this.isValidFullName(fullName)) { + return false; + } + + var source = options && options.source && this.normalize(options.source); + + return has(this, this.normalize(fullName), source); }, - pushUnique: function (target, method, args, stack) { - var KEY = this.globalOptions.GUID_KEY; + /** + Allow registering options for all factories of a type. + ```javascript + let registry = new Registry(); + let container = registry.container(); + // if all of type `connection` must not be singletons + registry.optionsForType('connection', { singleton: false }); + registry.register('connection:twitter', TwitterConnection); + registry.register('connection:facebook', FacebookConnection); + let twitter = container.lookup('connection:twitter'); + let twitter2 = container.lookup('connection:twitter'); + twitter === twitter2; // => false + let facebook = container.lookup('connection:facebook'); + let facebook2 = container.lookup('connection:facebook'); + facebook === facebook2; // => false + ``` + @private + @method optionsForType + @param {String} type + @param {Object} options + */ + optionsForType: function (type, options) { + this._typeOptions[type] = options; + }, - if (target && KEY) { - var guid = target[KEY]; - if (guid) { - return this.pushUniqueWithGuid(guid, target, method, args, stack); - } + getOptionsForType: function (type) { + var optionsForType = this._typeOptions[type]; + if (optionsForType === undefined && this.fallback) { + optionsForType = this.fallback.getOptionsForType(type); } + return optionsForType; + }, - this.pushUniqueWithoutGuid(target, method, args, stack); + /** + @private + @method options + @param {String} fullName + @param {Object} options + */ + options: function (fullName) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - return { - queue: this, - target: target, - method: method - }; + var normalizedName = this.normalize(fullName); + this._options[normalizedName] = options; }, - invoke: function (target, method, args, _, _errorRecordedForStack) { - if (args && args.length > 0) { - method.apply(target, args); - } else { - method.call(target); + getOptions: function (fullName) { + var normalizedName = this.normalize(fullName); + var options = this._options[normalizedName]; + + if (options === undefined && this.fallback) { + options = this.fallback.getOptions(fullName); } + return options; }, - 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); + getOption: function (fullName, optionName) { + var options = this._options[fullName]; + + if (options && options[optionName] !== undefined) { + return options[optionName]; } + + var type = fullName.split(':')[0]; + options = this._typeOptions[type]; + + if (options && options[optionName] !== undefined) { + return options[optionName]; + } else if (this.fallback) { + return this.fallback.getOption(fullName, optionName); + } }, - flush: function (sync) { - var queue = this._queue; - var length = queue.length; + /** + Used only via `injection`. + Provides a specialized form of injection, specifically enabling + all objects of one type to be injected with a reference to another + object. + For example, provided each object of type `controller` needed a `router`. + one would do the following: + ```javascript + let registry = new Registry(); + let container = registry.container(); + registry.register('router:main', Router); + registry.register('controller:user', UserController); + registry.register('controller:post', PostController); + registry.typeInjection('controller', 'router', 'router:main'); + let user = container.lookup('controller:user'); + let post = container.lookup('controller:post'); + user.router instanceof Router; //=> true + post.router instanceof Router; //=> true + // both controllers share the same router + user.router === post.router; //=> true + ``` + @private + @method typeInjection + @param {String} type + @param {String} property + @param {String} fullName + */ + typeInjection: function (type, property, fullName) { + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); - if (length === 0) { - return; + var fullNameType = fullName.split(':')[0]; + if (fullNameType === type) { + throw new Error('Cannot inject a \'' + fullName + '\' on other ' + type + '(s).'); } - 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; + var injections = this._typeInjections[type] || (this._typeInjections[type] = []); - this.targetQueues = Object.create(null); - var queueItems = this._queueBeingFlushed = this._queue.slice(); - this._queue = []; + injections.push({ + property: property, + fullName: fullName + }); + }, - if (before) { - before(); + /** + Defines injection rules. + These rules are used to inject dependencies onto objects when they + are instantiated. + Two forms of injections are possible: + * Injecting one fullName on another fullName + * Injecting one fullName on a type + Example: + ```javascript + let registry = new Registry(); + let container = registry.container(); + registry.register('source:main', Source); + registry.register('model:user', User); + registry.register('model:post', Post); + // injecting one fullName on another fullName + // eg. each user model gets a post model + registry.injection('model:user', 'post', 'model:post'); + // injecting one fullName on another type + registry.injection('model', 'source', 'source:main'); + let user = container.lookup('model:user'); + let post = container.lookup('model:post'); + user.source instanceof Source; //=> true + post.source instanceof Source; //=> true + user.post instanceof Post; //=> true + // and both models share the same source + user.source === post.source; //=> true + ``` + @private + @method injection + @param {String} factoryName + @param {String} property + @param {String} injectionName + */ + injection: function (fullName, property, injectionName) { + this.validateFullName(injectionName); + var normalizedInjectionName = this.normalize(injectionName); + + if (fullName.indexOf(':') === -1) { + return this.typeInjection(fullName, property, normalizedInjectionName); } - 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 + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); + var normalizedName = this.normalize(fullName); - if (_backburnerUtils.isString(method)) { - method = target[method]; - } + var injections = this._injections[normalizedName] || (this._injections[normalizedName] = []); - // 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); + injections.push({ + property: property, + fullName: normalizedInjectionName + }); + }, + + /** + Used only via `factoryInjection`. + Provides a specialized form of injection, specifically enabling + all factory of one type to be injected with a reference to another + object. + For example, provided each factory of type `model` needed a `store`. + one would do the following: + ```javascript + let registry = new Registry(); + registry.register('store:main', SomeStore); + registry.factoryTypeInjection('model', 'store', 'store:main'); + let store = registry.lookup('store:main'); + let UserFactory = registry.lookupFactory('model:user'); + UserFactory.store instanceof SomeStore; //=> true + ``` + @private + @method factoryTypeInjection + @param {String} type + @param {String} property + @param {String} fullName + */ + factoryTypeInjection: function (type, property, fullName) { + var injections = this._factoryTypeInjections[type] || (this._factoryTypeInjections[type] = []); + + injections.push({ + property: property, + fullName: this.normalize(fullName) + }); + }, + + /** + Defines factory injection rules. + Similar to regular injection rules, but are run against factories, via + `Registry#lookupFactory`. + These rules are used to inject objects onto factories when they + are looked up. + Two forms of injections are possible: + * Injecting one fullName on another fullName + * Injecting one fullName on a type + Example: + ```javascript + let registry = new Registry(); + let container = registry.container(); + registry.register('store:main', Store); + registry.register('store:secondary', OtherStore); + registry.register('model:user', User); + registry.register('model:post', Post); + // injecting one fullName on another type + registry.factoryInjection('model', 'store', 'store:main'); + // injecting one fullName on another fullName + registry.factoryInjection('model:post', 'secondaryStore', 'store:secondary'); + let UserFactory = container.lookupFactory('model:user'); + let PostFactory = container.lookupFactory('model:post'); + let store = container.lookup('store:main'); + UserFactory.store instanceof Store; //=> true + UserFactory.secondaryStore instanceof OtherStore; //=> false + PostFactory.store instanceof Store; //=> true + PostFactory.secondaryStore instanceof OtherStore; //=> true + // and both models share the same source instance + UserFactory.store === PostFactory.store; //=> true + ``` + @private + @method factoryInjection + @param {String} factoryName + @param {String} property + @param {String} injectionName + */ + factoryInjection: function (fullName, property, injectionName) { + var normalizedName = this.normalize(fullName); + var normalizedInjectionName = this.normalize(injectionName); + + this.validateFullName(injectionName); + + if (fullName.indexOf(':') === -1) { + return this.factoryTypeInjection(normalizedName, property, normalizedInjectionName); + } + + var injections = this._factoryInjections[normalizedName] || (this._factoryInjections[normalizedName] = []); + + injections.push({ + property: property, + fullName: normalizedInjectionName + }); + }, + + /** + @private + @method knownForType + @param {String} type the type to iterate over + */ + knownForType: function (type) { + var fallbackKnown = undefined, + resolverKnown = undefined; + + var localKnown = _emberMetal.dictionary(null); + var registeredNames = Object.keys(this.registrations); + for (var index = 0; index < registeredNames.length; index++) { + var fullName = registeredNames[index]; + var itemType = fullName.split(':')[0]; + + if (itemType === type) { + localKnown[fullName] = true; } } - if (after) { - after(); + if (this.fallback) { + fallbackKnown = this.fallback.knownForType(type); } - this._queueBeingFlushed = undefined; + if (this.resolver && this.resolver.knownForType) { + resolverKnown = this.resolver.knownForType(type); + } - if (sync !== false && this._queue.length > 0) { - // check if new items have been added - this.flush(true); + return _emberMetal.assign({}, fallbackKnown, localKnown, resolverKnown); + }, + + validateFullName: function (fullName) { + if (!this.isValidFullName(fullName)) { + throw new TypeError('Invalid Fullname, expected: \'type:name\' got: ' + fullName); } + + return true; }, - 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; + isValidFullName: function (fullName) { + return !!VALID_FULL_NAME_REGEXP.test(fullName); + }, - if (GUID_KEY && this.targetQueues && target) { - var targetQueue = this.targetQueues[target[GUID_KEY]]; + validateInjections: function (injections) { + if (!injections) { + return; + } - if (targetQueue) { - for (i = 0, l = targetQueue.length; i < l; i++) { - if (targetQueue[i] === method) { - targetQueue.splice(i, 1); - } - } + var fullName = undefined; + + for (var i = 0; i < injections.length; i++) { + fullName = injections[i].fullName; + + if (!this.has(fullName)) { + throw new Error('Attempting to inject an unknown injection: \'' + fullName + '\''); } } + }, - for (i = 0, l = queue.length; i < l; i += 4) { - currentTarget = queue[i]; - currentMethod = queue[i + 1]; + normalizeInjectionsHash: function (hash) { + var injections = []; - if (currentTarget === target && currentMethod === method) { - queue.splice(i, 4); - return true; + for (var key in hash) { + if (hash.hasOwnProperty(key)) { + _emberMetal.assert('Expected a proper full name, given \'' + hash[key] + '\'', this.validateFullName(hash[key])); + + injections.push({ + property: key, + fullName: hash[key] + }); } } - // if not found in current queue - // could be in the queue that is being flushed - queue = this._queueBeingFlushed; + return injections; + }, - if (!queue) { - return; + getInjections: function (fullName) { + var injections = this._injections[fullName] || []; + if (this.fallback) { + injections = injections.concat(this.fallback.getInjections(fullName)); } + return injections; + }, - for (i = 0, l = queue.length; i < l; i += 4) { - currentTarget = queue[i]; - currentMethod = queue[i + 1]; + getTypeInjections: function (type) { + var injections = this._typeInjections[type] || []; + if (this.fallback) { + injections = injections.concat(this.fallback.getTypeInjections(type)); + } + return injections; + }, - if (currentTarget === target && currentMethod === method) { - // don't mess with array during flush - // just nullify the method - queue[i + 1] = null; - return true; - } + getFactoryInjections: function (fullName) { + var injections = this._factoryInjections[fullName] || []; + if (this.fallback) { + injections = injections.concat(this.fallback.getFactoryInjections(fullName)); } + return injections; + }, + + getFactoryTypeInjections: function (type) { + var injections = this._factoryTypeInjections[type] || []; + if (this.fallback) { + injections = injections.concat(this.fallback.getFactoryTypeInjections(type)); + } + return injections; } }; -}); -enifed('backburner/utils', ['exports'], function (exports) { - 'use strict'; - exports.each = each; - exports.isString = isString; - exports.isFunction = isFunction; - exports.isNumber = isNumber; - exports.isCoercableNumber = isCoercableNumber; - var NUMBER = /\d+/; + function deprecateResolverFunction(registry) { + _emberMetal.deprecate('Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.', false, { id: 'ember-application.registry-resolver-as-function', until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x#toc_registry-resolver-as-function' }); + registry.resolver = { + resolve: registry.resolver + }; + } - function each(collection, callback) { - for (var i = 0; i < collection.length; i++) { - callback(collection[i]); + /** + Given a fullName and a source fullName returns the fully resolved + fullName. Used to allow for local lookup. + + ```javascript + let registry = new Registry(); + + // the twitter factory is added to the module system + registry.expandLocalLookup('component:post-title', { source: 'template:post' }) // => component:post/post-title + ``` + + @private + @method expandLocalLookup + @param {String} fullName + @param {Object} [options] + @param {String} [options.source] the fullname of the request source (used for local lookups) + @return {String} fullName + */ + Registry.prototype.expandLocalLookup = function Registry_expandLocalLookup(fullName, options) { + if (this.resolver && this.resolver.expandLocalLookup) { + _emberMetal.assert('fullName must be a proper full name', this.validateFullName(fullName)); + _emberMetal.assert('options.source must be provided to expandLocalLookup', options && options.source); + _emberMetal.assert('options.source must be a proper full name', this.validateFullName(options.source)); + + var normalizedFullName = this.normalize(fullName); + var normalizedSource = this.normalize(options.source); + + return expandLocalLookup(this, normalizedFullName, normalizedSource); + } else if (this.fallback) { + return this.fallback.expandLocalLookup(fullName, options); + } else { + return null; } - } + }; - function isString(suspect) { - return typeof suspect === 'string'; + function expandLocalLookup(registry, normalizedName, normalizedSource) { + var cache = registry._localLookupCache; + var normalizedNameCache = cache[normalizedName]; + + if (!normalizedNameCache) { + normalizedNameCache = cache[normalizedName] = new _emberMetal.EmptyObject(); + } + + var cached = normalizedNameCache[normalizedSource]; + + if (cached !== undefined) { + return cached; + } + + var expanded = registry.resolver.expandLocalLookup(normalizedName, normalizedSource); + + return normalizedNameCache[normalizedSource] = expanded; } - function isFunction(suspect) { - return typeof suspect === 'function'; + function resolve(registry, normalizedName, options) { + if (options && options.source) { + // when `source` is provided expand normalizedName + // and source into the full normalizedName + normalizedName = registry.expandLocalLookup(normalizedName, options); + + // if expandLocalLookup returns falsey, we do not support local lookup + if (!normalizedName) { + return; + } + } + + var cached = registry._resolveCache[normalizedName]; + if (cached !== undefined) { + return cached; + } + if (registry._failCache[normalizedName]) { + return; + } + + var resolved = undefined; + + if (registry.resolver) { + resolved = registry.resolver.resolve(normalizedName); + } + + if (resolved === undefined) { + resolved = registry.registrations[normalizedName]; + } + + if (resolved === undefined) { + registry._failCache[normalizedName] = true; + } else { + registry._resolveCache[normalizedName] = resolved; + } + + return resolved; } - function isNumber(suspect) { - return typeof suspect === 'number'; + function has(registry, fullName, source) { + return registry.resolve(fullName, { source: source }) !== undefined; } - function isCoercableNumber(number) { - return isNumber(number) || NUMBER.test(number); + var privateNames = _emberMetal.dictionary(null); + var privateSuffix = '' + Math.random() + Date.now(); + + function privatize(_ref) { + var fullName = _ref[0]; + + var name = privateNames[fullName]; + if (name) { + return name; + } + + var _fullName$split = fullName.split(':'); + + var type = _fullName$split[0]; + var rawName = _fullName$split[1]; + + return privateNames[fullName] = _emberMetal.intern(type + ':' + rawName + '-' + privateSuffix); } }); enifed('ember-console/index', ['exports', 'ember-environment'], function (exports, _emberEnvironment) { 'use strict'; @@ -1290,16 +2695,15 @@ @public */ assert: consoleMethod('assert') || assertPolyfill }; }); -enifed('ember-debug/deprecate', ['exports', 'ember-metal/error', 'ember-console', 'ember-environment', 'ember-debug/handlers'], function (exports, _emberMetalError, _emberConsole, _emberEnvironment, _emberDebugHandlers) { +enifed('ember-debug/deprecate', ['exports', 'ember-metal', 'ember-console', 'ember-environment', 'ember-debug/handlers'], function (exports, _emberMetal, _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); @@ -1370,11 +2774,11 @@ registerHandler(function raiseOnDeprecation(message, options, next) { if (_emberEnvironment.ENV.RAISE_ON_DEPRECATION) { var updatedMessage = formatMessage(message); - throw new _emberMetalError.default(updatedMessage); + throw new _emberMetal.Error(updatedMessage); } else { next.apply(undefined, arguments); } }); @@ -1397,17 +2801,20 @@ * In a production build, this method is defined as an empty function (NOP). Uses of this method in Ember itself are stripped from the ember.prod.js build. @method deprecate @param {String} message A description of the deprecation. - @param {Boolean} test A boolean. If falsy, the deprecation - will be displayed. - @param {Object} options An object that can be used to pass - in a `url` to the transition guide on the emberjs.com website, and a unique - `id` for this deprecation. The `id` can be used by Ember debugging tools - to change the behavior (raise, log or silence) for that specific deprecation. - The `id` should be namespaced by dots, e.g. "view.helper.select". + @param {Boolean} test A boolean. If falsy, the deprecation will be displayed. + @param {Object} options + @param {String} options.id A unique id for this deprecation. The id can be + used by Ember debugging tools to change the behavior (raise, log or silence) + for that specific deprecation. The id should be namespaced by dots, e.g. + "view.helper.select". + @param {string} options.until The version of Ember when this deprecation + warning will be removed. + @param {String} [options.url] An optional url to the transition guide on the + emberjs.com website. @for Ember @public */ function deprecate(message, test, options) { @@ -1433,11 +2840,11 @@ until: '3.0.0', url: 'http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options' }); } - _emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(_slice.call(arguments))); + _emberDebugHandlers.invoke.apply(undefined, ['deprecate'].concat(babelHelpers.slice.call(arguments))); } }); enifed("ember-debug/handlers", ["exports"], function (exports) { "use strict"; @@ -1469,11 +2876,11 @@ if (handlerForType) { handlerForType(message, options); } } }); -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) { +enifed('ember-debug/index', ['exports', 'ember-metal', 'ember-environment', 'ember-console', 'ember-debug/deprecate', 'ember-debug/warn'], function (exports, _emberMetal, _emberEnvironment, _emberConsole, _emberDebugDeprecate, _emberDebugWarn) { 'use strict'; exports._warnIfUsingStrippedFeatureFlags = _warnIfUsingStrippedFeatureFlags; /** @@ -1505,13 +2912,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 */ - _emberMetalDebug.setDebugFunction('assert', function assert(desc, test) { + _emberMetal.setDebugFunction('assert', function assert(desc, test) { if (!test) { - throw new _emberMetalError.default('Assertion Failed: ' + desc); + throw new _emberMetal.Error('Assertion Failed: ' + desc); } }); /** Display a debug notice. @@ -1525,11 +2932,11 @@ @method debug @param {String} message A debug message to display. @public */ - _emberMetalDebug.setDebugFunction('debug', function debug(message) { + _emberMetal.setDebugFunction('debug', function debug(message) { _emberConsole.default.debug('DEBUG: ' + message); }); /** Display an info notice. @@ -1538,11 +2945,11 @@ Uses of this method in Ember itself are stripped from the ember.prod.js build. @method info @private */ - _emberMetalDebug.setDebugFunction('info', function info() { + _emberMetal.setDebugFunction('info', function info() { _emberConsole.default.info.apply(undefined, arguments); }); /** Alias an old, deprecated method with its new counterpart. @@ -1561,11 +2968,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 */ - _emberMetalDebug.setDebugFunction('deprecateFunc', function deprecateFunc() { + _emberMetal.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) { @@ -1574,11 +2981,11 @@ var options = args[1]; var func = args[2]; return { v: function () { - _emberMetalDebug.deprecate(message, false, options); + _emberMetal.deprecate(message, false, options); return func.apply(this, arguments); } }; })(); @@ -1588,11 +2995,11 @@ var message = args[0]; var func = args[1]; return { v: function () { - _emberMetalDebug.deprecate(message); + _emberMetal.deprecate(message); return func.apply(this, arguments); } }; })(); @@ -1619,21 +3026,21 @@ @method runInDebug @param {Function} func The function to be executed. @since 1.5.0 @public */ - _emberMetalDebug.setDebugFunction('runInDebug', function runInDebug(func) { + _emberMetal.setDebugFunction('runInDebug', function runInDebug(func) { func(); }); - _emberMetalDebug.setDebugFunction('debugSeal', function debugSeal(obj) { + _emberMetal.setDebugFunction('debugSeal', function debugSeal(obj) { Object.seal(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. @@ -1644,36 +3051,36 @@ @return {void} */ function _warnIfUsingStrippedFeatureFlags(FEATURES, knownFeatures, featuresWereStripped) { if (featuresWereStripped) { - _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' }); + _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' }); var keys = Object.keys(FEATURES || {}); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key === 'isEnabled' || !(key in knownFeatures)) { continue; } - _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' }); + _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' }); } } } - if (!_emberMetalTesting.isTesting()) { + if (!_emberMetal.isTesting()) { (function () { // Complain if they're using FEATURE flags in builds other than canary - _emberMetalFeatures.FEATURES['features-stripped-test'] = true; + _emberMetal.FEATURES['features-stripped-test'] = true; var featuresWereStripped = true; - if (false) { + if (_emberMetal.isFeatureEnabled('features-stripped-test')) { featuresWereStripped = false; } - delete _emberMetalFeatures.FEATURES['features-stripped-test']; - _warnIfUsingStrippedFeatureFlags(_emberEnvironment.ENV.FEATURES, _emberMetalFeatures.DEFAULT_FEATURES, featuresWereStripped); + delete _emberMetal.FEATURES['features-stripped-test']; + _warnIfUsingStrippedFeatureFlags(_emberEnvironment.ENV.FEATURES, _emberMetal.DEFAULT_FEATURES, featuresWereStripped); // Inform the developer about the Ember Inspector if not installed. var isFirefox = _emberEnvironment.environment.isFirefox; var isChrome = _emberEnvironment.environment.isChrome; @@ -1686,21 +3093,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/'; } - _emberMetalDebug.debug('For more advanced debugging, install the Ember Inspector from ' + downloadURL); + _emberMetal.debug('For more advanced debugging, install the Ember Inspector from ' + downloadURL); } }, false); } })(); } /** @public @class Ember.Debug */ - _emberMetalCore.default.Debug = {}; + _emberMetal.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 @@ -1733,11 +3140,11 @@ @static @method registerDeprecationHandler @param handler {Function} A function to handle deprecation calls. @since 2.1.0 */ - _emberMetalCore.default.Debug.registerDeprecationHandler = _emberDebugDeprecate.registerHandler; + _emberMetal.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. @@ -1762,11 +3169,11 @@ @static @method registerWarnHandler @param handler {Function} A function to handle warnings. @since 2.1.0 */ - _emberMetalCore.default.Debug.registerWarnHandler = _emberDebugWarn.registerHandler; + _emberMetal.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. @@ -1775,18 +3182,17 @@ used a nice helpful warning message will be printed out. */ var runningNonEmberDebugJS = false; exports.runningNonEmberDebugJS = runningNonEmberDebugJS; if (runningNonEmberDebugJS) { - _emberMetalDebug.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.'); + _emberMetal.warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.'); } }); // reexports -enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-metal/debug', 'ember-debug/handlers'], function (exports, _emberConsole, _emberMetalDebug, _emberDebugHandlers) { +enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-metal', 'ember-debug/handlers'], function (exports, _emberConsole, _emberMetal, _emberDebugHandlers) { 'use strict'; - var _slice = Array.prototype.slice; exports.registerHandler = registerHandler; exports.default = warn; function registerHandler(handler) { _emberDebugHandlers.registerHandler('warn', handler); @@ -1827,26 +3233,26 @@ @public */ function warn(message, test, options) { if (!options) { - _emberMetalDebug.deprecate(missingOptionsDeprecation, false, { + _emberMetal.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) { - _emberMetalDebug.deprecate(missingOptionsIdDeprecation, false, { + _emberMetal.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(_slice.call(arguments))); + _emberDebugHandlers.invoke.apply(undefined, ['warn'].concat(babelHelpers.slice.call(arguments))); } }); enifed('ember-environment/global', ['exports'], function (exports) { /* globals global, window, self, mainContext */ @@ -2018,444 +3424,10 @@ Function: defaultTrue(obj.Function) }; } } }); -enifed('ember-glimmer-template-compiler/index', ['exports', 'ember-glimmer-template-compiler/system/compile', 'ember-glimmer-template-compiler/system/precompile', 'ember-glimmer-template-compiler/system/compile-options'], function (exports, _emberGlimmerTemplateCompilerSystemCompile, _emberGlimmerTemplateCompilerSystemPrecompile, _emberGlimmerTemplateCompilerSystemCompileOptions) { - 'use strict'; - - exports.compile = _emberGlimmerTemplateCompilerSystemCompile.default; - exports.precompile = _emberGlimmerTemplateCompilerSystemPrecompile.default; - exports.defaultCompileOptions = _emberGlimmerTemplateCompilerSystemCompileOptions.default; - exports.registerPlugin = _emberGlimmerTemplateCompilerSystemCompileOptions.registerPlugin; -}); -enifed('ember-glimmer-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('')); - } -}); -enifed('ember-glimmer-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; - } - - /** - @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 (node.parts[0] === 'attrs') { - var path = b.path(node.original.substr(6)); - path.original = '@' + path.original; - path.data = true; - return path; - } - } - }); - - return ast; - }; -}); -enifed('ember-glimmer-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-glimmer-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-glimmer-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-glimmer-template-compiler/system/compile-options', ['exports', 'ember-template-compiler/plugins', 'ember-glimmer-template-compiler/plugins/transform-action-syntax', 'ember-glimmer-template-compiler/plugins/transform-input-type-syntax', 'ember-glimmer-template-compiler/plugins/transform-attrs-into-args', 'ember-glimmer-template-compiler/plugins/transform-each-in-into-each', 'ember-glimmer-template-compiler/plugins/transform-has-block-syntax', 'ember-metal/assign'], function (exports, _emberTemplateCompilerPlugins, _emberGlimmerTemplateCompilerPluginsTransformActionSyntax, _emberGlimmerTemplateCompilerPluginsTransformInputTypeSyntax, _emberGlimmerTemplateCompilerPluginsTransformAttrsIntoArgs, _emberGlimmerTemplateCompilerPluginsTransformEachInIntoEach, _emberGlimmerTemplateCompilerPluginsTransformHasBlockSyntax, _emberMetalAssign) { - 'use strict'; - - exports.default = compileOptions; - exports.registerPlugin = registerPlugin; - exports.removePlugin = removePlugin; - var PLUGINS = [].concat(_emberTemplateCompilerPlugins.default, [ - // the following are ember-glimmer specific - _emberGlimmerTemplateCompilerPluginsTransformActionSyntax.default, _emberGlimmerTemplateCompilerPluginsTransformInputTypeSyntax.default, _emberGlimmerTemplateCompilerPluginsTransformAttrsIntoArgs.default, _emberGlimmerTemplateCompilerPluginsTransformEachInIntoEach.default, _emberGlimmerTemplateCompilerPluginsTransformHasBlockSyntax.default]); - - exports.PLUGINS = PLUGINS; - var USER_PLUGINS = []; - - function compileOptions(options) { - options = options || {}; - 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 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; - }); - } -}); -enifed('ember-glimmer-template-compiler/system/compile', ['exports', 'require', 'ember-glimmer-template-compiler/system/compile-options'], function (exports, _require, _emberGlimmerTemplateCompilerSystemCompileOptions) { - 'use strict'; - - exports.default = compile; - - var compileSpec = undefined, - template = undefined; - - function compile(string, options) { - if (!compileSpec && _require.has('glimmer-compiler')) { - compileSpec = _require.default('glimmer-compiler').compileSpec; - } - - if (!template && _require.has('ember-glimmer')) { - template = _require.default('ember-glimmer').template; - } - - if (!compileSpec) { - 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`.'); - } - - return template(compileSpec(string, _emberGlimmerTemplateCompilerSystemCompileOptions.default(options))); - } -}); -enifed('ember-glimmer-template-compiler/system/precompile', ['exports', 'ember-glimmer-template-compiler/system/compile-options', 'require'], function (exports, _emberGlimmerTemplateCompilerSystemCompileOptions, _require) { - 'use strict'; - - exports.default = precompile; - - var compileSpec = undefined; - - function precompile(templateString, options) { - if (!compileSpec && _require.has('glimmer-compiler')) { - compileSpec = _require.default('glimmer-compiler').compileSpec; - } - - if (!compileSpec) { - throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.'); - } - - return JSON.stringify(compileSpec(templateString, _emberGlimmerTemplateCompilerSystemCompileOptions.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; @@ -3047,15 +4019,13 @@ exports.Binding = Binding; }); 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) { - _classCallCheck(this, Cache); + babelHelpers.classCallCheck(this, Cache); this.size = 0; this.misses = 0; this.hits = 0; this.limit = limit; @@ -3113,11 +4083,11 @@ function UNDEFINED() {} var DefaultStore = (function () { function DefaultStore() { - _classCallCheck(this, DefaultStore); + babelHelpers.classCallCheck(this, DefaultStore); this.data = new _emberMetalEmpty_object.default(); } DefaultStore.prototype.get = function get(key) { @@ -3145,11 +4115,11 @@ function firstKey(path) { return path.match(FIRST_KEY)[0]; } function isObject(obj) { - return obj && typeof obj === 'object'; + return typeof obj === 'object' && obj; } function isVolatile(obj) { return !(isObject(obj) && obj.isDescriptor && obj._volatile === false); } @@ -4100,11 +5070,10 @@ */ 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'; }; // .......................................................... @@ -4277,10 +5246,47 @@ return _emberMetalProperty_get.get(this, newKey); } }); } }); +enifed('ember-metal/descriptor', ['exports', 'ember-metal/properties'], function (exports, _emberMetalProperties) { + 'use strict'; + + exports.default = descriptor; + + function descriptor(desc) { + return new Descriptor(desc); + } + + /** + 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 + */ + + var Descriptor = (function (_EmberDescriptor) { + babelHelpers.inherits(Descriptor, _EmberDescriptor); + + function Descriptor(desc) { + babelHelpers.classCallCheck(this, Descriptor); + + _EmberDescriptor.call(this); + this.desc = desc; + } + + Descriptor.prototype.setup = function setup(obj, key) { + Object.defineProperty(obj, key, this.desc); + }; + + Descriptor.prototype.teardown = function teardown(obj, key) {}; + + return Descriptor; + })(_emberMetalProperties.Descriptor); +}); enifed('ember-metal/dictionary', ['exports', 'ember-metal/empty_object'], function (exports, _emberMetalEmpty_object) { 'use strict'; exports.default = makeDictionary; @@ -4375,11 +5381,11 @@ // To maintain stacktrace consistency across browsers var getStack = function (error) { var stack = error.stack; var message = error.message; - if (stack.indexOf(message) === -1) { + if (stack && stack.indexOf(message) === -1) { stack = message + '\n' + stack; } return stack; }; @@ -4933,331 +5939,163 @@ ret[propertyNames[i]] = _emberMetalProperty_get.get(obj, propertyNames[i]); } return ret; } }); -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) { +enifed('ember-metal/index', ['exports', 'require', 'ember-metal/core', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/assign', 'ember-metal/merge', 'ember-metal/debug', 'ember-metal/instrumentation', 'ember-metal/utils', '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/symbol', 'ember-metal/dictionary', 'ember-metal/empty_object', 'ember-metal/injected_property', 'ember-metal/tags', 'ember-metal/replace', 'ember-metal/transaction', 'ember-metal/descriptor'], function (exports, _require, _emberMetalCore, _emberMetalComputed, _emberMetalAlias, _emberMetalAssign, _emberMetalMerge, _emberMetalDebug, _emberMetalInstrumentation, _emberMetalUtils, _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, _emberMetalSymbol, _emberMetalDictionary, _emberMetalEmpty_object, _emberMetalInjected_property, _emberMetalTags, _emberMetalReplace, _emberMetalTransaction, _emberMetalDescriptor) { /** @module ember @submodule ember-metal */ - // BEGIN IMPORTS 'use strict'; - _emberMetalComputed.computed.alias = _emberMetalAlias.default; + exports.default = _emberMetalCore.default; + // reexports + exports.computed = _emberMetalComputed.default; + exports.cacheFor = _emberMetalComputed.cacheFor; + exports.ComputedProperty = _emberMetalComputed.ComputedProperty; + exports.alias = _emberMetalAlias.default; + exports.assign = _emberMetalAssign.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.instrument = _emberMetalInstrumentation.instrument; + exports.flaggedInstrument = _emberMetalInstrumentation.flaggedInstrument; + exports._instrumentStart = _emberMetalInstrumentation._instrumentStart; + exports.instrumentationReset = _emberMetalInstrumentation.reset; + exports.instrumentationSubscribe = _emberMetalInstrumentation.subscribe; + exports.instrumentationUnsubscribe = _emberMetalInstrumentation.unsubscribe; + exports.intern = _emberMetalUtils.intern; + exports.GUID_KEY = _emberMetalUtils.GUID_KEY; + exports.GUID_KEY_PROPERTY = _emberMetalUtils.GUID_KEY_PROPERTY; + exports.applyStr = _emberMetalUtils.applyStr; + exports.canInvoke = _emberMetalUtils.canInvoke; + exports.generateGuid = _emberMetalUtils.generateGuid; + exports.guidFor = _emberMetalUtils.guidFor; + exports.inspect = _emberMetalUtils.inspect; + exports.makeArray = _emberMetalUtils.makeArray; + exports.tryInvoke = _emberMetalUtils.tryInvoke; + exports.uuid = _emberMetalUtils.uuid; + exports.wrap = _emberMetalUtils.wrap; + 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.rewatch = _emberMetalWatching.rewatch; + 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.symbol = _emberMetalSymbol.default; + exports.dictionary = _emberMetalDictionary.default; + exports.EmptyObject = _emberMetalEmpty_object.default; + exports.InjectedProperty = _emberMetalInjected_property.default; + exports.setHasViews = _emberMetalTags.setHasViews; + 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.descriptor = _emberMetalDescriptor.default; - // 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 - + // TODO: this needs to be deleted once we refactor the build tooling // 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; }); -// 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) { +enifed('ember-metal/injected_property', ['exports', 'ember-metal/debug', 'ember-metal/computed', 'ember-metal/alias', 'ember-metal/properties', 'container'], function (exports, _emberMetalDebug, _emberMetalComputed, _emberMetalAlias, _emberMetalProperties, _container) { 'use strict'; exports.default = InjectedProperty; /** @@ -5280,11 +6118,11 @@ AliasedPropertyPrototype.oneWay.call(this); } function injectedPropertyGet(keyName) { var desc = this[keyName]; - var owner = _containerOwner.getOwner(this) || this.container; // fallback to `container` for backwards compat + var owner = _container.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)); @@ -5441,24 +6279,30 @@ finalizer(); return result; } } + function NOOP() {} + // private for now - function _instrumentStart(name, _payload) { + function _instrumentStart(name, _payload, _payloadParam) { + if (subscribers.length === 0) { + return NOOP; + } + var listeners = cache[name]; if (!listeners) { listeners = populateListeners(name); } if (listeners.length === 0) { - return; + return NOOP; } - var payload = _payload(); + var payload = _payload(_payloadParam); var STRUCTURED_PROFILE = _emberEnvironment.ENV.STRUCTURED_PROFILE; var timeName = undefined; if (STRUCTURED_PROFILE) { timeName = name + ': ' + payload.object; @@ -7351,26 +8195,26 @@ /** The `Ember.Mixin` class allows you to create mixins, whose properties can be added to other classes. For instance, ```javascript - App.Editable = Ember.Mixin.create({ - edit: function() { + const EditableMixin = Ember.Mixin.create({ + edit() { console.log('starting to edit'); this.set('isEditing', true); }, isEditing: false }); // Mix mixins into classes by passing them as the first arguments to - // .extend. - App.CommentView = Ember.View.extend(App.Editable, { - template: Ember.Handlebars.compile('{{#if view.isEditing}}...{{else}}...{{/if}}') + // `.extend.` + const Comment = Ember.Object.extend(EditableMixin, { + post: null }); - commentView = App.CommentView.create(); - commentView.edit(); // outputs 'starting to edit' + let comment = Comment.create(post: somePost); + comment.edit(); // outputs 'starting to edit' ``` Note that Mixins are created with `Ember.Mixin.create`, not `Ember.Mixin.extend`. @@ -7378,23 +8222,25 @@ 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 - App.Filterable = Ember.Mixin.create({ + // filters array will be shared amongst any object implementing mixin + const FilterableMixin = Ember.Mixin.create({ filters: 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 a separate array for every object implementing the mixin + const FilterableMixin = Ember.Mixin.create({ + filters: Ember.computed(function() { + return Ember.A(); + }) }); - //filters will be created as a separate array during the object's initialization - App.Filterable = Ember.Mixin.create({ - init: function() { + // filters will be created as a separate array during the object's initialization + const Filterable = Ember.Mixin.create({ + init() { this._super(...arguments); this.set("filters", Ember.A()); } }); ``` @@ -7777,34 +8623,10 @@ 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 @@ -7838,11 +8660,11 @@ for (var i = 0; i < _paths.length; ++i) { _emberMetalExpand_properties.default(_paths[i], addWatchedProperty); } if (typeof func !== 'function') { - throw new _emberMetalError.default('Ember.beforeObserver called without a function'); + throw new _emberMetalError.default('_beforeObserver called without a function'); } func.__ember_observesBefore__ = paths; return func; } @@ -9681,10 +10503,11 @@ exports.setHasViews = setHasViews; exports.tagFor = tagFor; var hasGlimmer = _require2.has('glimmer-reference'); + var CONSTANT_TAG = undefined, CURRENT_TAG = undefined, DirtyableTag = undefined, makeTag = undefined, run = undefined; @@ -9735,13 +10558,16 @@ makeTag = function () { return new DirtyableTag(); }; exports.markObjectAsDirty = markObjectAsDirty = function (meta) { - ensureRunloop(); - var tag = meta && meta.readableTag() || CURRENT_TAG; - tag.dirty(); + var tag = meta && meta.readableTag(); + + if (tag) { + ensureRunloop(); + tag.dirty(); + } }; } else { exports.markObjectAsDirty = markObjectAsDirty = function () {}; } }); @@ -9765,14 +10591,10 @@ var runInTransaction = undefined, didRender = undefined, assertNotRendered = undefined; - if (true || false) { - _emberMetalDebug.assert('It appears you are trying to use the backtracking rerender feature without the "ember-glimmer" flag turned on. Please make sure that "ember-glimmer" is turned on.', true); - } - var raise = _emberMetalDebug.assert; if (false) { raise = function (message, test) { _emberMetalDebug.deprecate(message, test, { id: 'ember-views.render-double-modify', until: '3.0.0' }); }; @@ -9789,14 +10611,14 @@ (function () { var counter = 0; var inTransaction = false; var shouldReflush = undefined; - exports.default = runInTransaction = function (callback) { + exports.default = runInTransaction = function (context, methodName) { shouldReflush = false; inTransaction = true; - callback(); + context[methodName](); inTransaction = false; counter++; return shouldReflush; }; @@ -9825,11 +10647,11 @@ var lastRef = ref[key]; var label = undefined; if (lastRef) { - while (lastRef && lastRef._propertyKey && lastRef._parentReference) { + while (lastRef && lastRef._propertyKey) { parts.unshift(lastRef._propertyKey); lastRef = lastRef._parentReference; } label = parts.join(); @@ -10814,110 +11636,63 @@ */ WeakMap.prototype.toString = function () { return '[object WeakMap]'; }; }); -enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-template-compiler/compiler'], function (exports, _emberMetalCore, _emberTemplateCompilerCompiler) { +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) { 'use strict'; - var EmberHandlebars = _emberMetalCore.default.Handlebars = _emberMetalCore.default.Handlebars || {}; - var EmberHTMLBars = _emberMetalCore.default.HTMLBars = _emberMetalCore.default.HTMLBars || {}; + var EmberHandlebars = _emberMetal.default.Handlebars = _emberMetal.default.Handlebars || {}; + var EmberHTMLBars = _emberMetal.default.HTMLBars = _emberMetal.default.HTMLBars || {}; - 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; + EmberHTMLBars.precompile = EmberHandlebars.precompile = _emberTemplateCompilerSystemPrecompile.default; + EmberHTMLBars.compile = EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default; + EmberHTMLBars.registerPlugin = _emberTemplateCompilerSystemCompileOptions.registerPlugin; }); // reexports -enifed('ember-template-compiler/compat/precompile', ['exports', 'require', 'ember-metal/features'], function (exports, _require, _emberMetalFeatures) { - /** - @module ember - @submodule ember-template-compiler - */ +enifed('ember-template-compiler/index', ['exports', 'container', '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, _container, _emberMetal, _emberEnvironment, _emberVersion, _emberTemplateCompilerCompat, _emberTemplateCompilerSystemBootstrap, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemCompileOptions, _emberTemplateCompilerPlugins) { 'use strict'; - var compile = undefined, - compileSpec = undefined, - compileOptions = undefined; - - // Note we don't really want to expose this from main file - if (true) { - compileOptions = _require.default('ember-glimmer-template-compiler/system/compile-options').default; - } else { - compileOptions = _require.default('ember-htmlbars-template-compiler/system/compile-options').default; + // private API used by ember-cli-htmlbars to setup ENV and FEATURES + if (!_emberMetal.default.ENV) { + _emberMetal.default.ENV = _emberEnvironment.ENV; } - - 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 (true) { - compiler = _require.default('ember-glimmer-template-compiler'); - } else { - compiler = _require.default('ember-htmlbars-template-compiler'); - } - - return compiler; + if (!_emberMetal.default.FEATURES) { + _emberMetal.default.FEATURES = _emberMetal.FEATURES; } -}); -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'; + if (!_emberMetal.default.VERSION) { + _emberMetal.default.VERSION = _emberVersion.default; + } exports._Ember = _emberMetal.default; - // Is this still needed exports.precompile = _emberTemplateCompilerSystemPrecompile.default; exports.compile = _emberTemplateCompilerSystemCompile.default; - exports.registerPlugin = _emberTemplateCompilerSystemRegisterPlugin.default; - exports.defaultCompileOptions = _emberTemplateCompilerSystemCompileOptions.default; + exports.compileOptions = _emberTemplateCompilerSystemCompileOptions.default; + exports.registerPlugin = _emberTemplateCompilerSystemCompileOptions.registerPlugin; + exports.defaultPlugins = _emberTemplateCompilerPlugins.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/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) { +enifed('ember-template-compiler/plugins/assert-reserved-named-arguments', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _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.moduleName; + var moduleName = this.options.meta.moduleName; this.syntax.traverse(ast, { PathExpression: function (node) { if (node.original[0] === '@') { - _emberMetalDebug.assert(assertMessage(moduleName, node)); + _emberMetal.assert(assertMessage(moduleName, node)); } } }); return ast; @@ -10928,22 +11703,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/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) { +enifed('ember-template-compiler/plugins/deprecate-render-model', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _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.moduleName; + var moduleName = this.options.meta.moduleName; var walker = new this.syntax.Walker(); walker.visit(ast, function (node) { if (!validate(node)) { return; @@ -10952,11 +11727,11 @@ each(node.params, function (param) { if (param.type !== 'PathExpression') { return; } - _emberMetalDebug.deprecate(deprecationMessage(moduleName, node, param), false, { + _emberMetal.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' }); }); @@ -10983,15 +11758,90 @@ 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'], function (exports, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformInlineLinkTo, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsDeprecateRenderModel, _emberTemplateCompilerPluginsAssertReservedNamedArguments) { +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) { 'use strict'; - exports.default = Object.freeze([_emberTemplateCompilerPluginsTransformOldBindingSyntax.default, _emberTemplateCompilerPluginsTransformItemClass.default, _emberTemplateCompilerPluginsTransformAngleBracketComponents.default, _emberTemplateCompilerPluginsTransformInputOnToOnEvent.default, _emberTemplateCompilerPluginsTransformTopLevelComponents.default, _emberTemplateCompilerPluginsTransformInlineLinkTo.default, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default, _emberTemplateCompilerPluginsDeprecateRenderModel.default, _emberTemplateCompilerPluginsAssertReservedNamedArguments.default]); + 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]); }); +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('')); + } +}); enifed('ember-template-compiler/plugins/transform-angle-bracket-components', ['exports'], function (exports) { 'use strict'; exports.default = TransformAngleBracketComponents; @@ -11021,10 +11871,190 @@ 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; + } + + /** + @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 (node.parts[0] === 'attrs') { + 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; @@ -11070,11 +12100,11 @@ }); return ast; }; }); -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) { +enifed('ember-template-compiler/plugins/transform-input-on-to-onEvent', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _emberTemplateCompilerSystemCalculateLocationDisplay) { 'use strict'; exports.default = TransformInputOnToOnEvent; /** @@ -11116,32 +12146,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.moduleName; + var moduleName = pluginContext.options.meta.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') { - _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' }); + _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' }); normalizedOn.key = 'onEvent'; return; // exit early, as we cannot transform further } removeFromHash(node.hash, normalizedOn); removeFromHash(node.hash, action); if (!action) { - _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' }); + _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' }); return; // exit early, if no action was available there is nothing to do } var specifiedOn = normalizedOn ? normalizedOn.key + '="' + normalizedOn.value.value + '" ' : ''; @@ -11151,11 +12181,11 @@ normalizedOn.value.value = 'key-press'; } var expected = (normalizedOn ? normalizedOn.value.value : 'enter') + '="' + action.value.original + '"'; - _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' }); + _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' }); if (!normalizedOn) { normalizedOn = b.pair('onEvent', b.string('enter')); } node.hash.pairs.push(b.pair(normalizedOn.value.value, action.value)); @@ -11191,10 +12221,85 @@ } 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; @@ -11239,22 +12344,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/debug', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalDebug, _emberTemplateCompilerSystemCalculateLocationDisplay) { +enifed('ember-template-compiler/plugins/transform-old-binding-syntax', ['exports', 'ember-metal', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetal, _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.moduleName; + var moduleName = this.options.meta.moduleName; var b = this.syntax.builders; var walker = new this.syntax.Walker(); walker.visit(ast, function (node) { if (!validate(node)) { @@ -11270,16 +12375,16 @@ if (key === 'classBinding') { return; } - _emberMetalDebug.assert('Setting \'attributeBindings\' via template helpers is not allowed ' + sourceInformation, key !== 'attributeBindings'); + _emberMetal.assert('Setting \'attributeBindings\' via template helpers is not allowed ' + sourceInformation, key !== 'attributeBindings'); if (key.substr(-7) === 'Binding') { var newKey = key.slice(0, -7); - _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' }); + _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' }); pair.key = newKey; if (value.type === 'StringLiteral') { pair.value = b.path(value.original); } @@ -11406,11 +12511,11 @@ if (inactiveClass !== undefined) { hash.pairs.push(b.pair('inactiveClass', b.string(inactiveClass))); } - params.push(b.sexpr(b.string('-normalize-class'), sexprParams, hash)); + params.push(b.sexpr(b.path('-normalize-class'), sexprParams, hash)); } if (inactiveClass || inactiveClass === '') { params.push(b.string(inactiveClass)); } @@ -11505,11 +12610,11 @@ if (lastComponentNode.type === 'ComponentNode') { componentCallback(lastComponentNode); } } }); -enifed('ember-template-compiler/system/bootstrap', ['exports', 'ember-metal/error', 'ember-template-compiler', 'ember-templates/template_registry'], function (exports, _emberMetalError, _emberTemplateCompiler, _emberTemplatesTemplate_registry) { +enifed('ember-template-compiler/system/bootstrap', ['exports', 'ember-metal', 'ember-template-compiler/system/compile'], function (exports, _emberMetal, _emberTemplateCompilerSystemCompile) { /** @module ember @submodule ember-templates */ @@ -11531,13 +12636,19 @@ @method bootstrap @for Ember.HTMLBars @static @param ctx */ - function bootstrap() { - var context = arguments.length <= 0 || arguments[0] === undefined ? document : arguments[0]; + function bootstrap(_ref) { + var context = _ref.context; + var hasTemplate = _ref.hasTemplate; + var setTemplate = _ref.setTemplate; + if (!context) { + context = document; + } + var selector = 'script[type="text/x-handlebars"]'; var elements = context.querySelectorAll(selector); for (var i = 0; i < elements.length; i++) { @@ -11547,21 +12658,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 = _emberTemplateCompiler.compile(script.innerHTML, { + template = _emberTemplateCompilerSystemCompile.default(script.innerHTML, { moduleName: templateName }); // Check if template of same name already exists. - if (_emberTemplatesTemplate_registry.has(templateName)) { - throw new _emberMetalError.default('Template named "' + templateName + '" already exists.'); + if (hasTemplate(templateName)) { + throw new _emberMetal.Error('Template named "' + templateName + '" already exists.'); } // For templates which have a name, we save them and then remove them from the DOM. - _emberTemplatesTemplate_registry.set(templateName, template); + setTemplate(templateName, template); // Remove script tag from DOM. script.parentNode.removeChild(script); } } @@ -11599,25 +12710,74 @@ } return moduleInfo; } }); -enifed('ember-template-compiler/system/compile-options', ['exports', 'ember-template-compiler/compiler'], function (exports, _emberTemplateCompilerCompiler) { +enifed('ember-template-compiler/system/compile-options', ['exports', 'ember-template-compiler/plugins', 'ember-metal'], function (exports, _emberTemplateCompilerPlugins, _emberMetal) { 'use strict'; - var _compiler = _emberTemplateCompilerCompiler.default(); + exports.default = compileOptions; + exports.registerPlugin = registerPlugin; + exports.removePlugin = removePlugin; - var defaultCompileOptions = _compiler.defaultCompileOptions; - exports.default = defaultCompileOptions; + var USER_PLUGINS = []; + + function compileOptions(_options) { + var options = _emberMetal.assign({ meta: {} }, _options); + + // move `moduleName` into `meta` property + if (options.moduleName) { + var meta = options.meta; + meta.moduleName = options.moduleName; + + delete 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; + }); + } }); -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) { +enifed('ember-template-compiler/system/compile', ['exports', 'require', 'ember-template-compiler/system/precompile'], function (exports, _require, _emberTemplateCompilerSystemPrecompile) { /** @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. @@ -11625,26 +12785,36 @@ @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. */ - exports.default = function (templateString, options) { - var _compiler = _emberTemplateCompilerCompiler.default(); + function compile(templateString, options) { + if (!template && _require.has('ember-glimmer')) { + template = _require.default('ember-glimmer').template; + } - var compile = _compiler.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`.'); + } - return compile(templateString, _emberMetalAssign.default({}, _emberTemplateCompilerSystemCompileOptions.default(), options)); - }; + var precompiledTemplateString = _emberTemplateCompilerSystemPrecompile.default(templateString, options); + var templateJS = new Function('return ' + precompiledTemplateString)(); + return template(templateJS); + } }); -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) { +enifed('ember-template-compiler/system/precompile', ['exports', 'ember-template-compiler/system/compile-options', 'require'], function (exports, _emberTemplateCompilerSystemCompileOptions, _require) { /** @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. @@ -11652,339 +12822,108 @@ @private @method precompile @param {String} templateString This is the string to be compiled by HTMLBars. */ - exports.default = function (templateString, options) { - var _compiler = _emberTemplateCompilerCompiler.default(); - - var precompile = _compiler.precompile; - - return precompile(templateString, _emberMetalAssign.default({}, _emberTemplateCompilerSystemCompileOptions.default(), options)); - }; -}); -enifed('ember-template-compiler/system/register-plugin', ['exports', 'ember-template-compiler/compiler'], function (exports, _emberTemplateCompilerCompiler) { - 'use strict'; - - var _compiler = _emberTemplateCompilerCompiler.default(); - - var registerPlugin = _compiler.registerPlugin; - exports.default = registerPlugin; -}); -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'; - - 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 || {}; - - exports.EmberHandleBarsUtils = EmberHandleBarsUtils; - Object.defineProperty(EmberHandlebars, 'SafeString', { - get: _emberTemplatesString.getSafeString - }); - - EmberHTMLBars.template = EmberHandlebars.template = _emberTemplatesTemplate.default; - EmberHandleBarsUtils.escapeExpression = _emberTemplatesString.escapeExpression; - _emberRuntimeSystemString.default.htmlSafe = _emberTemplatesString.htmlSafe; - - if (true) { - _emberRuntimeSystemString.default.isHTMLSafe = _emberTemplatesString.isHTMLSafe; - } - EmberHTMLBars.makeBoundHelper = _emberTemplatesMakeBoundHelper.default; -}); -// reexports -enifed('ember-templates/component', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - exports.default = (function () { - if (true) { - return _require.default('ember-glimmer/component').default; - } else { - return _require.default('ember-htmlbars/component').default; + function precompile(templateString, options) { + if (!glimmerPrecompile && _require.has('glimmer-compiler')) { + glimmerPrecompile = _require.default('glimmer-compiler').precompile; } - })(); -}); -enifed('ember-templates/components/checkbox', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - exports.default = (function () { - if (true) { - return _require.default('ember-glimmer/components/checkbox').default; - } else { - return _require.default('ember-htmlbars/components/checkbox').default; + if (!glimmerPrecompile) { + throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.'); } - })(); -}); -enifed('ember-templates/components/link-to', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - exports.default = (function () { - if (true) { - 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'; - - exports.default = (function () { - if (true) { - return _require.default('ember-glimmer/components/text_area').default; - } else { - return _require.default('ember-htmlbars/components/text_area').default; - } - })(); -}); -enifed('ember-templates/components/text_field', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - exports.default = (function () { - if (true) { - 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'; - - exports.default = (function () { - if (true) { - return _require.default('ember-glimmer/helper').default; - } else { - return _require.default('ember-htmlbars/helper').default; - } - })(); - - var helper = (function () { - if (true) { - return _require.default('ember-glimmer/helper').helper; - } else { - return _require.default('ember-htmlbars/helper').helper; - } - })(); - exports.helper = helper; -}); -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'; - - _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; - - if (_emberEnvironment.ENV.EXTEND_PROTOTYPES.String) { - String.prototype.htmlSafe = function () { - return _emberTemplatesString.htmlSafe(this); - }; + return glimmerPrecompile(templateString, _emberTemplateCompilerSystemCompileOptions.default(options)); } - - /** - 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. - - @property TEMPLATES - @for Ember - @type Object - @private - */ - Object.defineProperty(_emberMetalCore.default, 'TEMPLATES', { - get: _emberTemplatesTemplate_registry.getTemplates, - set: _emberTemplatesTemplate_registry.setTemplates, - configurable: false, - enumerable: false - }); - - exports.default = _emberMetalCore.default; }); -// reexports -enifed('ember-templates/make-bound-helper', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - exports.default = (function () { - if (true) { - return _require.default('ember-glimmer/make-bound-helper').default; - } else { - return _require.default('ember-htmlbars/make-bound-helper').default; - } - })(); -}); -enifed('ember-templates/renderer', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - var InteractiveRenderer = (function () { - if (true) { - return _require.default('ember-glimmer/renderer').InteractiveRenderer; - } else { - return _require.default('ember-htmlbars/renderer').InteractiveRenderer; - } - })(); - - exports.InteractiveRenderer = InteractiveRenderer; - var InertRenderer = (function () { - if (true) { - return _require.default('ember-glimmer/renderer').InertRenderer; - } else { - return _require.default('ember-htmlbars/renderer').InertRenderer; - } - })(); - - exports.InertRenderer = InertRenderer; - var Renderer = (function () { - if (true) { - return _require.default('ember-glimmer/renderer').Renderer; - } else { - return _require.default('ember-htmlbars/renderer').Renderer; - } - })(); - exports.Renderer = Renderer; -}); -enifed('ember-templates/string', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - var strings = (function () { - if (true) { - return _require.default('ember-glimmer/utils/string'); - } else { - return _require.default('ember-htmlbars/utils/string'); - } - })(); - - 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-templates/template', ['exports', 'ember-metal/features', 'require'], function (exports, _emberMetalFeatures, _require) { - 'use strict'; - - var htmlbarsTemplate = undefined, - glimmerTemplate = undefined; - if (_require.has('ember-htmlbars')) { - htmlbarsTemplate = _require.default('ember-htmlbars').template; - } - - if (_require.has('ember-glimmer')) { - glimmerTemplate = _require.default('ember-glimmer').template; - } - - var template = true ? glimmerTemplate : htmlbarsTemplate; - - exports.default = template; -}); -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.setTemplates = setTemplates; - exports.getTemplates = getTemplates; - exports.get = get; - exports.has = has; - exports.set = set; - var TEMPLATES = {}; - - function setTemplates(templates) { - TEMPLATES = templates; - } - - function getTemplates() { - return TEMPLATES; - } - - function get(name) { - if (TEMPLATES.hasOwnProperty(name)) { - return TEMPLATES[name]; - } - } - - function has(name) { - return TEMPLATES.hasOwnProperty(name); - } - - function set(name, template) { - return TEMPLATES[name] = template; - } -}); enifed("ember/features", ["exports"], function (exports) { "use strict"; - exports.default = { "features-stripped-test": false, "ember-routing-route-configured-query-params": false, "ember-libraries-isregistered": false, "ember-application-engines": true, "ember-glimmer": true, "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, "mandatory-setter": true, "ember-glimmer-detect-backtracking-rerender": true }; + exports.default = { "features-stripped-test": false, "ember-routing-route-configured-query-params": 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, "mandatory-setter": true, "ember-glimmer-detect-backtracking-rerender": true }; }); enifed("ember/version", ["exports"], function (exports) { "use strict"; - exports.default = "v2.9.0-alpha.2"; + exports.default = "2.9.0-beta.1"; }); -enifed('glimmer-compiler/index', ['exports', 'glimmer-compiler/lib/compiler', 'glimmer-compiler/lib/template-compiler', 'glimmer-compiler/lib/template-visitor'], function (exports, _glimmerCompilerLibCompiler, _glimmerCompilerLibTemplateCompiler, _glimmerCompilerLibTemplateVisitor) { - 'use strict'; +enifed("glimmer-compiler/index", ["exports", "glimmer-compiler/lib/compiler", "glimmer-compiler/lib/template-visitor"], function (exports, _glimmerCompilerLibCompiler, _glimmerCompilerLibTemplateVisitor) { + "use strict"; - exports.TemplateSpec = _glimmerCompilerLibCompiler.TemplateSpec; - exports.compileSpec = _glimmerCompilerLibCompiler.compileSpec; - exports.TemplateCompiler = _glimmerCompilerLibTemplateCompiler.default; - exports.CompileOptions = _glimmerCompilerLibTemplateCompiler.CompileOptions; + exports.precompile = _glimmerCompilerLibCompiler.precompile; + exports.PrecompileOptions = _glimmerCompilerLibCompiler.PrecompileOptions; + + // exported only for tests exports.TemplateVisitor = _glimmerCompilerLibTemplateVisitor.default; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1VBQ0UsWUFBWSwrQkFBWixZQUFZO1VBQ1osV0FBVywrQkFBWCxXQUFXO1VBSUEsZ0JBQWdCLHVDQUEzQixPQUFPO1VBQ1AsY0FBYyx1Q0FBZCxjQUFjO1VBR0ksZUFBZSxzQ0FBMUIsT0FBTyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIFRlbXBsYXRlU3BlYyxcbiAgY29tcGlsZVNwZWNcbn0gZnJvbSBcIi4vbGliL2NvbXBpbGVyXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgVGVtcGxhdGVDb21waWxlcixcbiAgQ29tcGlsZU9wdGlvbnNcbn0gZnJvbSAnLi9saWIvdGVtcGxhdGUtY29tcGlsZXInO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFRlbXBsYXRlVmlzaXRvciB9IGZyb20gJy4vbGliL3RlbXBsYXRlLXZpc2l0b3InO1xuIl19 +//# 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"; + "use strict"; - exports.compileSpec = compileSpec; + exports.precompile = precompile; - /* - * 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: - * - * let templateSpec = compileSpec("Howdy {{name}}"); - * // This next step is basically what plain compile does - * let template = new Function("return " + templateSpec)(); - * - * @method compileSpec - * @param {String} string An Glimmer template string - * @return {TemplateSpec} A template spec string - */ + 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; + }; + })(); - function compileSpec(string, options) { - var ast = _glimmerSyntax.preprocess(string, options); - var program = _glimmerCompilerLibTemplateCompiler.default.compile(options, ast); - return JSON.stringify(program); - } + function precompile(string, options) { + var opts = options || { + id: defaultId(), + meta: {} + }; + var ast = _glimmerSyntax.preprocess(string, opts); + + var _TemplateCompiler$compile = _glimmerCompilerLibTemplateCompiler.default.compile(opts, ast); + + var block = _TemplateCompiler$compile.block; + var meta = _TemplateCompiler$compile.meta; + + 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); + } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxXQUFBLFdBQUEsQ0FBNEIsTUFBYyxFQUFFLE9BQVksRUFBQTtBQUN0RCxRQUFJLEdBQUcsR0FBRyxlQXJCSCxVQUFVLENBcUJJLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0QyxRQUFJLE9BQU8sR0FBRyw0Q0FBaUIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRCxXQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDaEMiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcImdsaW1tZXItc3ludGF4XCI7XG5pbXBvcnQgVGVtcGxhdGVDb21waWxlciBmcm9tIFwiLi90ZW1wbGF0ZS1jb21waWxlclwiO1xuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZVNwZWMgPSBzdHJpbmc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBzcGVjIHN0cmluZy4gVGhlIHRlbXBsYXRlIHNwZWMgaXMgYSBzdHJpbmdcbiAqIHJlcHJlc2VudGF0aW9uIG9mIGEgdGVtcGxhdGUuIFVzdWFsbHksIHlvdSB3b3VsZCB1c2UgY29tcGlsZVNwZWMgZm9yXG4gKiBwcmUtY29tcGlsYXRpb24gb2YgYSB0ZW1wbGF0ZSBvbiB0aGUgc2VydmVyLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKlxuICogICAgIGxldCB0ZW1wbGF0ZVNwZWMgPSBjb21waWxlU3BlYyhcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIC8vIFRoaXMgbmV4dCBzdGVwIGlzIGJhc2ljYWxseSB3aGF0IHBsYWluIGNvbXBpbGUgZG9lc1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlU3BlYykoKTtcbiAqXG4gKiBAbWV0aG9kIGNvbXBpbGVTcGVjXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIEFuIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtUZW1wbGF0ZVNwZWN9IEEgdGVtcGxhdGUgc3BlYyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVTcGVjKHN0cmluZzogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBUZW1wbGF0ZVNwZWMge1xuICBsZXQgYXN0ID0gcHJlcHJvY2VzcyhzdHJpbmcsIG9wdGlvbnMpO1xuICBsZXQgcHJvZ3JhbSA9IFRlbXBsYXRlQ29tcGlsZXIuY29tcGlsZShvcHRpb25zLCBhc3QpO1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSk7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBY0EsUUFBTSxTQUFTLEdBQXVCLENBQUMsWUFBQTtBQUNyQyxZQUFJLElBQWtCLFlBQUEsQ0FBQztBQUN2QixlQUFPLFlBQUE7QUFDTCxnQkFBSSxDQUFDLElBQUksRUFBRTtBQUNULG9CQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUNqQyx3QkFBSTs7O0FBRUYsZ0NBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFakMsZ0NBQUksR0FBRyxVQUFBLEdBQUcsRUFBQTtBQUNSLG9DQUFJLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLG9DQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFekIsdUNBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUM3QyxDQUFDO0FBQ0YsZ0NBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7cUJBQ2IsQ0FBQSxPQUFPLENBQUMsRUFBRTtBQUNWLDRCQUFJLEdBQUcsSUFBSSxDQUFDO3FCQUNiO2lCQUNGO0FBQ0Qsb0JBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCx3QkFBSSxHQUFHOytCQUFNLElBQUk7cUJBQUEsQ0FBQztpQkFDbkI7YUFDRjtBQUNELG1CQUFPLElBQUksQ0FBQztTQUNiLENBQUM7S0FDSCxDQUFBLEVBQUcsQ0FBQzs7QUFpQkMsYUFBQSxVQUFBLENBQXFCLE1BQWMsRUFBRSxPQUErQixFQUFBO0FBQ3hFLFlBQUksSUFBSSxHQUFHLE9BQU8sSUFBSTtBQUNwQixjQUFFLEVBQUUsU0FBUyxFQUFFO0FBQ2YsZ0JBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztBQUNGLFlBQUksR0FBRyxHQUFHLGVBOURILFVBQVUsQ0E4REksTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDOzt3Q0FDYiw0Q0FBaUIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7O1lBQW5ELEtBQUssNkJBQUwsS0FBSztZQUFFLElBQUksNkJBQUosSUFBSTs7QUFDakIsWUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNsQyxZQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLFlBQUksa0JBQWtCLEdBQXdDO0FBQzVELGNBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDMUMsaUJBQUssRUFBRSxTQUFTO0FBQ2hCLGdCQUFJLEVBQUosSUFBSTtTQUNMLENBQUM7O0FBR0YsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDM0MiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcImdsaW1tZXItc3ludGF4XCI7XG5pbXBvcnQgVGVtcGxhdGVDb21waWxlciwgeyBDb21waWxlT3B0aW9ucyB9IGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5pbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLCBUZW1wbGF0ZUphdmFzY3JpcHQgfSBmcm9tIFwiZ2xpbW1lci13aXJlLWZvcm1hdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlSWRGbiB7XG4gIChzcmM6IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVjb21waWxlT3B0aW9uczxUPiBleHRlbmRzIENvbXBpbGVPcHRpb25zPFQ+IHtcbiAgaWQ/OiBUZW1wbGF0ZUlkRm47XG59XG5cbmRlY2xhcmUgZnVuY3Rpb24gcmVxdWlyZShpZDogc3RyaW5nKTogYW55O1xuXG5jb25zdCBkZWZhdWx0SWQ6ICgpID0+IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGxldCBpZEZuOiBUZW1wbGF0ZUlkRm47XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKCFpZEZuKSB7XG4gICAgICBpZiAodHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgICAgICBjb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLXJlcXVpcmUtaW1wb3J0cyAqL1xuICAgICAgICAgIGlkRm4gPSBzcmMgPT4ge1xuICAgICAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICAgICAgaGFzaC51cGRhdGUoc3JjLCAndXRmOCcpO1xuICAgICAgICAgICAgLy8gdHJpbSB0byA2IGJ5dGVzIG9mIGRhdGEgKDJeNDggLSAxKVxuICAgICAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCw4KTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlkRm4oXCJ0ZXN0XCIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWRGbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaWRGbikge1xuICAgICAgICBpZEZuID0gKCkgPT4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkRm47XG4gIH07XG59KSgpO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnZ2xpbW1lci1jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZTxUPihzdHJpbmc6IHN0cmluZywgb3B0aW9ucz86IFByZWNvbXBpbGVPcHRpb25zPFQ+KTogVGVtcGxhdGVKYXZhc2NyaXB0O1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBQcmVjb21waWxlT3B0aW9uczx7fT4pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgb3B0cyA9IG9wdGlvbnMgfHwge1xuICAgIGlkOiBkZWZhdWx0SWQoKSxcbiAgICBtZXRhOiB7fVxuICB9O1xuICBsZXQgYXN0ID0gcHJlcHJvY2VzcyhzdHJpbmcsIG9wdHMpO1xuICBsZXQgeyBibG9jaywgbWV0YSB9ID0gVGVtcGxhdGVDb21waWxlci5jb21waWxlKG9wdHMsIGFzdCk7XG4gIGxldCBpZEZuID0gb3B0cy5pZCB8fCBkZWZhdWx0SWQoKTtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrLnRvSlNPTigpKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazx7fT4gPSB7XG4gICAgaWQ6IGlkRm4oSlNPTi5zdHJpbmdpZnkobWV0YSkgKyBibG9ja0pTT04pLFxuICAgIGJsb2NrOiBibG9ja0pTT04sXG4gICAgbWV0YVxuICB9O1xuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcbn1cbiJdfQ== enifed("glimmer-compiler/lib/javascript-compiler", ["exports", "glimmer-util"], function (exports, _glimmerUtil) { "use strict"; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Block = (function () { function Block() { - _classCallCheck(this, Block); - this.statements = []; this.positionals = []; } Block.prototype.toJSON = function toJSON() { @@ -12001,47 +12940,57 @@ return Block; })(); exports.Block = Block; - var Template = (function (_Block) { - _inherits(Template, _Block); + var TemplateBlock = (function (_Block) { + babelHelpers.inherits(TemplateBlock, _Block); - function Template(meta) { - _classCallCheck(this, Template); - - _Block.call(this); - this.meta = null; + function TemplateBlock() { + _Block.apply(this, arguments); this.yields = new _glimmerUtil.DictSet(); this.named = new _glimmerUtil.DictSet(); this.blocks = []; - this.meta = meta; } - Template.prototype.toJSON = function toJSON() { + 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(); - }), + }) + }; + }; + + return TemplateBlock; + })(Block); + + exports.TemplateBlock = TemplateBlock; + + var Template = (function () { + function Template(meta) { + this.meta = meta; + this.block = new TemplateBlock(); + } + + Template.prototype.toJSON = function toJSON() { + return { + block: this.block.toJSON(), meta: this.meta }; }; return Template; - })(Block); + })(); exports.Template = Template; var JavaScriptCompiler = (function () { function JavaScriptCompiler(opcodes, meta) { - _classCallCheck(this, JavaScriptCompiler); - - this.template = null; this.blocks = new _glimmerUtil.Stack(); this.values = []; this.opcodes = opcodes; this.template = new Template(meta); } @@ -12079,15 +13028,15 @@ JavaScriptCompiler.prototype.endBlock = function endBlock() { var template = this.template; var blocks = this.blocks; - template.blocks.push(blocks.pop()); + template.block.blocks.push(blocks.pop()); }; JavaScriptCompiler.prototype.startProgram = function startProgram() { - this.blocks.push(this.template); + this.blocks.push(this.template.block); }; JavaScriptCompiler.prototype.endProgram = function endProgram() {}; /// Statements @@ -12115,77 +13064,81 @@ var hash = this.popValue(); this.push(['block', path, params, hash, template, inverse]); }; JavaScriptCompiler.prototype.openElement = function openElement(tag, blockParams) { - this.push(['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(['closeElement']); + this.push(['close-element']); }; JavaScriptCompiler.prototype.staticAttr = function staticAttr(name, namespace) { var value = this.popValue(); - this.push(['staticAttr', name, value, namespace]); + this.push(['static-attr', name, value, namespace]); }; JavaScriptCompiler.prototype.dynamicAttr = function dynamicAttr(name, namespace) { var value = this.popValue(); - this.push(['dynamicAttr', name, value, namespace]); + this.push(['dynamic-attr', name, value, namespace]); }; JavaScriptCompiler.prototype.trustingAttr = function trustingAttr(name, namespace) { var value = this.popValue(); - this.push(['trustingAttr', name, value, namespace]); + this.push(['trusting-attr', name, value, namespace]); }; JavaScriptCompiler.prototype.staticArg = function staticArg(name) { var value = this.popValue(); - this.push(['staticArg', name.slice(1), value]); + this.push(['static-arg', name.slice(1), value]); }; JavaScriptCompiler.prototype.dynamicArg = function dynamicArg(name) { var value = this.popValue(); - this.push(['dynamicArg', name.slice(1), value]); + 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.yields.add(to); + this.template.block.yields.add(to); }; JavaScriptCompiler.prototype.hasBlock = function hasBlock(name) { - this.pushValue(['hasBlock', name]); - this.template.yields.add(name); + this.pushValue(['has-block', name]); + this.template.block.yields.add(name); }; JavaScriptCompiler.prototype.hasBlockParams = function hasBlockParams(name) { - this.pushValue(['hasBlockParams', name]); - this.template.yields.add(name); + this.pushValue(['has-block-params', name]); + this.template.block.yields.add(name); }; /// Expressions JavaScriptCompiler.prototype.literal = function literal(value) { - this.pushValue(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.named.add(path[0]); + this.template.block.named.add(path[0]); this.pushValue(['arg', path]); }; - JavaScriptCompiler.prototype.selfGet = function selfGet(path) { - this.pushValue(['self-get', path]); - }; - JavaScriptCompiler.prototype.get = function get(path) { this.pushValue(['get', path]); }; JavaScriptCompiler.prototype.concat = function concat() { @@ -12208,15 +13161,17 @@ 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 object = _glimmerUtil.dict(); + var keys = new Array(size); + var values = new Array(size); for (var i = 0; i < size; i++) { - object[this.popValue()] = this.popValue(); + keys[i] = this.popValue(); + values[i] = this.popValue(); } - this.pushValue(object); + this.pushValue([keys, values]); }; /// Utilities JavaScriptCompiler.prototype.push = function push(args) { @@ -12238,42 +13193,33 @@ return JavaScriptCompiler; })(); exports.default = JavaScriptCompiler; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2phdmFzY3JpcHQtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBa0JBLEtBQUE7QUFBQSxpQkFBQSxLQUFBLEdBQUE7a0NBQUEsS0FBQTs7QUFDRSxnQkFBQSxDQUFBLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0FBQzdCLGdCQUFBLENBQUEsV0FBVyxHQUFhLEVBQUUsQ0FBQztTQVk1Qjs7QUFkRCxhQUFBLFdBSUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCwwQkFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLFdBQStCO2FBQzdDLENBQUM7U0FDSDs7QUFUSCxhQUFBLFdBV0UsSUFBSSxHQUFBLGNBQUMsU0FBb0IsRUFBQTtBQUN2QixnQkFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDakM7O2VBYkgsS0FBQTs7Ozs7UUFnQkEsUUFBQTtrQkFBQSxRQUFBOztBQU9FLGlCQVBGLFFBQUEsQ0FPYyxJQUFJLEVBQUE7a0NBUGxCLFFBQUE7O0FBUUksNkJBQU8sQ0FBQztBQVBILGdCQUFBLENBQUEsSUFBSSxHQUFjLElBQUksQ0FBQztBQUV2QixnQkFBQSxDQUFBLE1BQU0sR0FBRyxpQkFwQ0YsT0FBTyxFQW9DUSxDQUFDO0FBQ3ZCLGdCQUFBLENBQUEsS0FBSyxHQUFHLGlCQXJDRCxPQUFPLEVBcUNPLENBQUM7QUFDdEIsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO0FBSTFCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjs7QUFWSCxnQkFBQSxXQVlFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsMEJBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtBQUMzQixzQkFBTSxFQUFFLElBQUksQ0FBQyxXQUErQjtBQUM1QyxxQkFBSyxFQUFFLElBQUksQ0FBQyxL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ZmlsZSI6ImphdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5pbXBvcnQgeyBTdGFjaywgRGljdFNldCwgSW50ZXJuZWRTdHJpbmcsIGRpY3QgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5cbmltcG9ydCB7XG4gIEJsb2NrTWV0YSxcbiAgU2VyaWFsaXplZEJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGUsXG4gIENvcmUsXG4gIFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxudHlwZSBzdHIgPSBzdHJpbmc7XG50eXBlIFBhcmFtcyA9IENvcmUuUGFyYW1zO1xudHlwZSBIYXNoID0gQ29yZS5IYXNoO1xudHlwZSBQYXRoID0gQ29yZS5QYXRoO1xudHlwZSBTdGFja1ZhbHVlID0gRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2ggfCBzdHI7XG5cbmV4cG9ydCBjbGFzcyBCbG9jayB7XG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG4gIHBvc2l0aW9uYWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBsb2NhbHM6IHRoaXMucG9zaXRpb25hbHMgYXMgSW50ZXJuZWRTdHJpbmdbXVxuICAgIH07XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyBtZXRhOiBCbG9ja01ldGEgPSBudWxsO1xuXG4gIHB1YmxpYyB5aWVsZHMgPSBuZXcgRGljdFNldCgpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgRGljdFNldCgpO1xuICBwdWJsaWMgYmxvY2tzOiBCbG9ja1tdID0gW107XG5cbiAgY29uc3RydWN0b3IobWV0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBsb2NhbHM6IHRoaXMucG9zaXRpb25hbHMgYXMgSW50ZXJuZWRTdHJpbmdbXSxcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnRvQXJyYXkoKSxcbiAgICAgIHlpZWxkczogdGhpcy55aWVsZHMudG9BcnJheSgpLFxuICAgICAgYmxvY2tzOiB0aGlzLmJsb2Nrcy5tYXAoYiA9PiBiLnRvSlNPTigpKSxcbiAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgc3RhdGljIHByb2Nlc3Mob3Bjb2RlcywgbWV0YSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyKG9wY29kZXMsIG1ldGEpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZSA9IG51bGw7XG4gIHByaXZhdGUgYmxvY2tzID0gbmV3IFN0YWNrPEJsb2NrPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdO1xuICBwcml2YXRlIHZhbHVlczogU3RhY2tWYWx1ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3Bjb2RlcywgbWV0YSkge1xuICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShtZXRhKTtcbiAgfVxuXG4gIHByb2Nlc3MoKSB7XG4gICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkgeyB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApOyB9XG4gICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vLyBOZXN0aW5nXG5cbiAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICBsZXQgYmxvY2s6IEJsb2NrID0gbmV3IEJsb2NrKCk7XG4gICAgYmxvY2sucG9zaXRpb25hbHMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICB0ZW1wbGF0ZS5ibG9ja3MucHVzaChibG9ja3MucG9wKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZSk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFsndGV4dCcsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFsnYXBwZW5kJywgdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpLCB0cnVzdGVkXSk7XG4gIH1cblxuICBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goWydjb21tZW50JywgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKHBhdGg6IFBhdGgpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goWydtb2RpZmllcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgYmxvY2socGF0aDogUGF0aCwgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFsnYmxvY2snLCBwYXRoLCBwYXJhbXMsIGhhc2gsIHRlbXBsYXRlLCBpbnZlcnNlXSk7XG4gIH1cblxuICBvcGVuRWxlbWVudCh0YWc6IHN0ciwgYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoKFsnb3BlbkVsZW1lbnQnLCB0YWcsIGJsb2NrUGFyYW1zXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFsnY2xvc2VFbGVtZW50J10pO1xuICB9XG5cbiAgc3RhdGljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbJ3N0YXRpY0F0dHInLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbJ2R5bmFtaWNBdHRyJywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgdHJ1c3RpbmdBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsndHJ1c3RpbmdBdHRyJywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgc3RhdGljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goWydzdGF0aWNBcmcnLCBuYW1lLnNsaWNlKDEpLCB2YWx1ZV0pO1xuICB9XG5cbiAgZHluYW1pY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnZHluYW1pY0FyZycsIG5hbWUuc2xpY2UoMSksIHZhbHVlXSk7XG4gIH1cblxuICB5aWVsZCh0bzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbJ3lpZWxkJywgdG8sIHBhcmFtc10pO1xuICAgIHRoaXMudGVtcGxhdGUueWllbGRzLmFkZCh0byk7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZShbJ2hhc0Jsb2NrJywgbmFtZV0pO1xuICAgIHRoaXMudGVtcGxhdGUueWllbGRzLmFkZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaFZhbHVlKFsnaGFzQmxvY2tQYXJhbXMnLCBuYW1lXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS55aWVsZHMuYWRkKG5hbWUpO1xuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zXG5cbiAgbGl0ZXJhbCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wdXNoVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgdW5rbm93bihwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlKFsndW5rbm93bicsIHBhdGhdKTtcbiAgfVxuXG4gIGFyZyhwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudGVtcGxhdGUubmFtZWQuYWRkKHBhdGhbMF0pO1xuICAgIHRoaXMucHVzaFZhbHVlKFsnYXJnJywgcGF0aF0pO1xuICB9XG5cbiAgc2VsZkdldChwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlKFsnc2VsZi1nZXQnLCBwYXRoXSk7XG4gIH1cblxuICBnZXQocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZShbJ2dldCcsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZShbJ2NvbmNhdCcsIHRoaXMucG9wVmFsdWU8UGFyYW1zPigpXSk7XG4gIH1cblxuICBoZWxwZXIocGF0aDogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2hWYWx1ZShbJ2hlbHBlcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuXG4gIHByZXBhcmVBcnJheShzaXplOiBudW1iZXIpIHtcbiAgICBsZXQgdmFsdWVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hWYWx1ZSh2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IG9iamVjdCA9IGRpY3Q8RXhwcmVzc2lvbj4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBvYmplY3RbdGhpcy5wb3BWYWx1ZTxzdHI+KCldID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlKG9iamVjdCk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgcHVzaChhcmdzOiBTdGF0ZW1lbnQpIHtcbiAgICB3aGlsZSAoYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBudWxsKSB7XG4gICAgICBhcmdzLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tzLmN1cnJlbnQucHVzaChhcmdzKTtcbiAgfVxuXG4gIHB1c2hWYWx1ZSh2YWw6IEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoKSB7XG4gICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICB9XG5cbiAgcG9wVmFsdWU8VCBleHRlbmRzIFN0YWNrVmFsdWU+KCk6IFQge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCkgYXMgVDtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2phdmFzY3JpcHQtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBb0JNLEtBQUE7QUFBTixpQkFBTSxLQUFBLEdBQU47QUFDRSxnQkFBQSxDQUFBLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0FBQzdCLGdCQUFBLENBQUEsV0FBVyxHQUFhLEVBQUUsQ0FBQztTQVk1Qjs7QUFkSyxhQUFBLFdBSUosTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCwwQkFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDekIsQ0FBQztTQUNIOztBQVRHLGFBQUEsV0FXSixJQUFJLEdBQUEsY0FBQyxTQUFvQixFQUFBO0FBQ3ZCLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNqQzs7ZUFiRyxLQUFBOzs7OztRQWdCQSxhQUFxQjs4QkFBckIsYUFBcUI7O0FBQTNCLGlCQUFNLGFBQXFCLEdBQTNCO0FDakJRLCtCQUFTLFNBQVMsQ0FBQyxDQUFDO0FEa0JuQixnQkFBQSxDQUFBLE1BQU0sR0FBRyxpQkFwQ0YsT0FBTyxFQW9DUSxDQUFDO0FBQ3ZCLGdCQUFBLENBQUEsS0FBSyxHQUFHLGlCQXJDRCxPQUFPLEVBcUNPLENBQUM7QUFDdEIsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO1NBVzdCOztBQWRLLHFCQUFxQixXQUt6QixNQUFNLEdBQUEsa0JBQUE7QUFDSixtQkFBTztBQUNMLDBCQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7QUFDM0Isc0JBQU0sRUFBRSxJQUFJLENBQUMsV0FBVztBQUN4QixxQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDN0Isc0JBQU0sRUFBRSxJQUFJLENBQUMsTUFB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RyxFQUFFLENBQUM7YUFDWjtBQUVELGdCQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7O0FBbk1XLDBCQUFBLFdBcU1aLFNBQVMsR0FBQSxtQkFBdUMsR0FBTSxFQUFBO0FBQ3BELGdCQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2Qjs7QUF2TVcsMEJBQUEsV0F5TVosUUFBUSxHQUFBLG9CQUFBO0FBQ04seUJBM1FLLE1BQU0sQ0EyUUosSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztBQUMzRCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBTyxDQUFDO1NBQy9COztlQTVNVyxrQkFBQTs7O3NCQUFBLGtCQUFBIiwiZmlsZSI6ImphdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5pbXBvcnQgeyBTdGFjaywgRGljdFNldCB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcblxuaW1wb3J0IHtcbiAgVGVtcGxhdGVNZXRhLFxuICBTZXJpYWxpemVkQmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGUsXG4gIENvcmUsXG4gIFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbnNcbn0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5cbnR5cGUgc3RyID0gc3RyaW5nO1xudHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbnR5cGUgSGFzaCA9IENvcmUuSGFzaDtcbnR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbnR5cGUgU3RhY2tWYWx1ZSA9IEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoIHwgc3RyO1xuXG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSA9IFtdO1xuICBwb3NpdGlvbmFsczogc3RyaW5nW10gPSBbXTtcblxuICB0b0pTT04oKTogU2VyaWFsaXplZEJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgbG9jYWxzOiB0aGlzLnBvc2l0aW9uYWxzXG4gICAgfTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgeWllbGRzID0gbmV3IERpY3RTZXQoKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQoKTtcbiAgcHVibGljIGJsb2NrczogQmxvY2tbXSA9IFtdO1xuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGxvY2FsczogdGhpcy5wb3NpdGlvbmFscyxcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnRvQXJyYXkoKSxcbiAgICAgIHlpZWxkczogdGhpcy55aWVsZHMudG9BcnJheSgpLFxuICAgICAgYmxvY2tzOiB0aGlzLmJsb2Nrcy5tYXAoYiA9PiBiLnRvSlNPTigpKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgcHVibGljIGJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWV0YTogVCkge31cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlPFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYmxvY2s6IHRoaXMuYmxvY2sudG9KU09OKCksXG4gICAgICBtZXRhOiB0aGlzLm1ldGFcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlcjxUIGV4dGVuZHMgVGVtcGxhdGVNZXRhPiB7XG4gIHN0YXRpYyBwcm9jZXNzPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+KG9wY29kZXMsIG1ldGEpOiBUZW1wbGF0ZTxUPiB7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcjxUPihvcGNvZGVzLCBtZXRhKTtcbiAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogVGVtcGxhdGU8VD47XG4gIHByaXZhdGUgYmxvY2tzID0gbmV3IFN0YWNrPEJsb2NrPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdO1xuICBwcml2YXRlIHZhbHVlczogU3RhY2tWYWx1ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3Bjb2RlcywgbWV0YTogVCkge1xuICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShtZXRhKTtcbiAgfVxuXG4gIHByb2Nlc3MoKTogVGVtcGxhdGU8VD4ge1xuICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHsgdGhyb3cgbmV3IEVycm9yKGB1bmltcGxlbWVudGVkICR7b3Bjb2RlfSBvbiBKYXZhU2NyaXB0Q29tcGlsZXJgKTsgfVxuICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gIH1cblxuICAvLy8gTmVzdGluZ1xuXG4gIHN0YXJ0QmxvY2soW3Byb2dyYW1dKSB7XG4gICAgbGV0IGJsb2NrOiBCbG9jayA9IG5ldyBCbG9jaygpO1xuICAgIGJsb2NrLnBvc2l0aW9uYWxzID0gcHJvZ3JhbS5ibG9ja1BhcmFtcztcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIGxldCB7IHRlbXBsYXRlLCBibG9ja3MgfSA9IHRoaXM7XG4gICAgdGVtcGxhdGUuYmxvY2suYmxvY2tzLnB1c2goYmxvY2tzLnBvcCgpKTtcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcblxuICB9XG5cbiAgLy8vIFN0YXRlbWVudHNcblxuICB0ZXh0KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbJ3RleHQnLCBjb250ZW50XSk7XG4gIH1cblxuICBhcHBlbmQodHJ1c3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMucHVzaChbJ2FwcGVuZCcsIHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKSwgdHJ1c3RlZF0pO1xuICB9XG5cbiAgY29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFsnY29tbWVudCcsIHZhbHVlXSk7XG4gIH1cblxuICBtb2RpZmllcihwYXRoOiBQYXRoKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFsnbW9kaWZpZXInLCBwYXRoLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIGJsb2NrKHBhdGg6IFBhdGgsIHRlbXBsYXRlOiBudW1iZXIsIGludmVyc2U6IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaChbJ2Jsb2NrJywgcGF0aCwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZSwgaW52ZXJzZV0pO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBzdHIsIGJsb2NrUGFyYW1zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaChbJ29wZW4tZWxlbWVudCcsIHRhZywgYmxvY2tQYXJhbXNdKTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goWydmbHVzaC1lbGVtZW50J10pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChbJ2Nsb3NlLWVsZW1lbnQnXSk7XG4gIH1cblxuICBzdGF0aWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnc3RhdGljLWF0dHInLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbJ2R5bmFtaWMtYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHRydXN0aW5nQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbJ3RydXN0aW5nLWF0dHInLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBzdGF0aWNBcmcobmFtZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbJ3N0YXRpYy1hcmcnLCBuYW1lLnNsaWNlKDEpLCB2YWx1ZV0pO1xuICB9XG5cbiAgZHluYW1pY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnZHluYW1pYy1hcmcnLCBuYW1lLnNsaWNlKDEpLCB2YWx1ZV0pO1xuICB9XG5cbiAgeWllbGQodG86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goWyd5aWVsZCcsIHRvLCBwYXJhbXNdKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLnlpZWxkcy5hZGQodG8pO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2s+KFsnaGFzLWJsb2NrJywgbmFtZV0pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2sueWllbGRzLmFkZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrUGFyYW1zPihbJ2hhcy1ibG9jay1wYXJhbXMnLCBuYW1lXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKG5hbWUpO1xuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zXG5cbiAgbGl0ZXJhbCh2YWx1ZTogRXhwcmVzc2lvbnMuVmFsdWUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5kZWZpbmVkPihbJ3VuZGVmaW5lZCddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVmFsdWU+KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1bmtub3duKHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5rbm93bj4oWyd1bmtub3duJywgcGF0aF0pO1xuICB9XG5cbiAgYXJnKHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5uYW1lZC5hZGQocGF0aFswXSk7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuQXJnPihbJ2FyZycsIHBhdGhdKTtcbiAgfVxuXG4gIGdldChwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkdldD4oWydnZXQnLCBwYXRoXSk7XG4gIH1cblxuICBjb25jYXQoKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuQ29uY2F0PihbJ2NvbmNhdCcsIHRoaXMucG9wVmFsdWU8UGFyYW1zPigpXSk7XG4gIH1cblxuICBoZWxwZXIocGF0aDogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IZWxwZXI+KFsnaGVscGVyJywgcGF0aCwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG5cbiAgcHJlcGFyZUFycmF5KHNpemU6IG51bWJlcikge1xuICAgIGxldCB2YWx1ZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPFBhcmFtcz4odmFsdWVzKTtcbiAgfVxuXG4gIHByZXBhcmVPYmplY3Qoc2l6ZTogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcblxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShzaXplKTtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWU8c3RyPigpO1xuICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPEhhc2g+KFtrZXlzLCB2YWx1ZXNdKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBwdXNoKGFyZ3M6IFN0YXRlbWVudCkge1xuICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgIGFyZ3MucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ibG9ja3MuY3VycmVudC5wdXNoKGFyZ3MpO1xuICB9XG5cbiAgcHVzaFZhbHVlPFMgZXh0ZW5kcyBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaD4odmFsOiBTKSB7XG4gICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICB9XG5cbiAgcG9wVmFsdWU8VCBleHRlbmRzIFN0YWNrVmFsdWU+KCk6IFQge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCkgYXMgVDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbmFscyA9IFtdO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBsb2NhbHM6IHRoaXMucG9zaXRpb25hbHNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy55aWVsZHMgPSBuZXcgRGljdFNldCgpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IERpY3RTZXQoKTtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgbG9jYWxzOiB0aGlzLnBvc2l0aW9uYWxzLFxuICAgICAgICAgICAgbmFtZWQ6IHRoaXMubmFtZWQudG9BcnJheSgpLFxuICAgICAgICAgICAgeWllbGRzOiB0aGlzLnlpZWxkcy50b0FycmF5KCksXG4gICAgICAgICAgICBibG9ja3M6IHRoaXMuYmxvY2tzLm1hcChiID0+IGIudG9KU09OKCkpXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihtZXRhKSB7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jaygpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgICAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gICAgY29uc3RydWN0b3Iob3Bjb2RlcywgbWV0YSkge1xuICAgICAgICB0aGlzLmJsb2NrcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKG1ldGEpO1xuICAgIH1cbiAgICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzLCBtZXRhKSB7XG4gICAgICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2RlcywgbWV0YSk7XG4gICAgICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gICAgfVxuICAgIHByb2Nlc3MoKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gICAgfVxuICAgIC8vLyBOZXN0aW5nXG4gICAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICAgICAgbGV0IGJsb2NrID0gbmV3IEJsb2NrKCk7XG4gICAgICAgIGJsb2NrLnBvc2l0aW9uYWxzID0gcHJvZ3JhbS5ibG9ja1BhcmFtcztcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgfVxuICAgIGVuZEJsb2NrKCkge1xuICAgICAgICBsZXQgeyB0ZW1wbGF0ZSwgYmxvY2tzIH0gPSB0aGlzO1xuICAgICAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9ja3MucG9wKCkpO1xuICAgIH1cbiAgICBzdGFydFByb2dyYW0oKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gICAgfVxuICAgIGVuZFByb2dyYW0oKSB7XG4gICAgfVxuICAgIC8vLyBTdGF0ZW1lbnRzXG4gICAgdGV4dChjb250ZW50KSB7XG4gICAgICAgIHRoaXMucHVzaChbJ3RleHQnLCBjb250ZW50XSk7XG4gICAgfVxuICAgIGFwcGVuZCh0cnVzdGVkKSB7XG4gICAgICAgIHRoaXMucHVzaChbJ2FwcGVuZCcsIHRoaXMucG9wVmFsdWUoKSwgdHJ1c3RlZF0pO1xuICAgIH1cbiAgICBjb21tZW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaChbJ2NvbW1lbnQnLCB2YWx1ZV0pO1xuICAgIH1cbiAgICBtb2RpZmllcihwYXRoKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goWydtb2RpZmllcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICBibG9jayhwYXRoLCB0ZW1wbGF0ZSwgaW52ZXJzZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFsnYmxvY2snLCBwYXRoLCBwYXJhbXMsIGhhc2gsIHRlbXBsYXRlLCBpbnZlcnNlXSk7XG4gICAgfVxuICAgIG9wZW5FbGVtZW50KHRhZywgYmxvY2tQYXJhbXMpIHtcbiAgICAgICAgdGhpcy5wdXNoKFsnb3Blbi1lbGVtZW50JywgdGFnLCBibG9ja1BhcmFtc10pO1xuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaChbJ2ZsdXNoLWVsZW1lbnQnXSk7XG4gICAgfVxuICAgIGNsb3NlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKFsnY2xvc2UtZWxlbWVudCddKTtcbiAgICB9XG4gICAgc3RhdGljQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goWydzdGF0aWMtYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgZHluYW1pY0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFsnZHluYW1pYy1hdHRyJywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICAgIH1cbiAgICB0cnVzdGluZ0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFsndHJ1c3RpbmctYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgc3RhdGljQXJnKG5hbWUpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goWydzdGF0aWMtYXJnJywgbmFtZS5zbGljZSgxKSwgdmFsdWVdKTtcbiAgICB9XG4gICAgZHluYW1pY0FyZyhuYW1lKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFsnZHluYW1pYy1hcmcnLCBuYW1lLnNsaWNlKDEpLCB2YWx1ZV0pO1xuICAgIH1cbiAgICB5aWVsZCh0bykge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goWyd5aWVsZCcsIHRvLCBwYXJhbXNdKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKHRvKTtcbiAgICB9XG4gICAgaGFzQmxvY2sobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbJ2hhcy1ibG9jaycsIG5hbWVdKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKG5hbWUpO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFsnaGFzLWJsb2NrLXBhcmFtcycsIG5hbWVdKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKG5hbWUpO1xuICAgIH1cbiAgICAvLy8gRXhwcmVzc2lvbnNcbiAgICBsaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZShbJ3VuZGVmaW5lZCddKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bmtub3duKHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoWyd1bmtub3duJywgcGF0aF0pO1xuICAgIH1cbiAgICBhcmcocGF0aCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLm5hbWVkLmFkZChwYXRoWzBdKTtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoWydhcmcnLCBwYXRoXSk7XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFsnZ2V0JywgcGF0aF0pO1xuICAgIH1cbiAgICBjb25jYXQoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFsnY29uY2F0JywgdGhpcy5wb3BWYWx1ZSgpXSk7XG4gICAgfVxuICAgIGhlbHBlcihwYXRoKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbJ2hlbHBlcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG4gICAgcHJlcGFyZUFycmF5KHNpemUpIHtcbiAgICAgICAgbGV0IHZhbHVlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hWYWx1ZSh2YWx1ZXMpO1xuICAgIH1cbiAgICBwcmVwYXJlT2JqZWN0KHNpemUpIHtcbiAgICAgICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcbiAgICAgICAgbGV0IGtleXMgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtrZXlzLCB2YWx1ZXNdKTtcbiAgICB9XG4gICAgLy8vIFV0aWxpdGllc1xuICAgIHB1c2goYXJncykge1xuICAgICAgICB3aGlsZSAoYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBudWxsKSB7XG4gICAgICAgICAgICBhcmdzLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmxvY2tzLmN1cnJlbnQucHVzaChhcmdzKTtcbiAgICB9XG4gICAgcHVzaFZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHBvcFZhbHVlKCkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKTtcbiAgICB9XG59XG4iXX0= enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/lib/template-visitor", "glimmer-compiler/lib/javascript-compiler", "glimmer-util", "glimmer-syntax"], function (exports, _glimmerCompilerLibTemplateVisitor, _glimmerCompilerLibJavascriptCompiler, _glimmerUtil, _glimmerSyntax) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - function isTrustedValue(value) { return value.escaped !== undefined && !value.escaped; } var TemplateCompiler = (function () { - function TemplateCompiler() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - _classCallCheck(this, TemplateCompiler); - + function TemplateCompiler(options) { this.templateId = 0; this.templateIds = []; this.opcodes = []; this.includeMeta = false; - this.options = options; + this.options = options || {}; } 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); - var meta = { - moduleName: options.moduleName - }; - return _glimmerCompilerLibJavascriptCompiler.default.process(opcodes, meta); + return _glimmerCompilerLibJavascriptCompiler.default.process(opcodes, options.meta); }; TemplateCompiler.prototype.process = function process(actions) { var _this = this; @@ -12328,10 +13274,11 @@ 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); }; @@ -12412,12 +13359,10 @@ } else if (isArg(expr)) { this.arg([expr.path]); } else if (_glimmerSyntax.isHelper(expr)) { this.prepareHelper(expr); this.opcode('helper', expr, expr.path.parts); - } else if (_glimmerSyntax.isSelfGet(expr)) { - this.opcode('selfGet', expr, expr.path.parts); } else { this.opcode('unknown', expr, expr.path.parts); } }; @@ -12664,21 +13609,17 @@ } else { throw new Error("has-block-params only takes a single positional argument"); } } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0EsYUFBQSxjQUFBLENBQXdCLEtBQUssRUFBQTtBQUMzQixlQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztLQUN0RDs7UUFFRCxnQkFBQTtBQW1CRSxpQkFuQkYsZ0JBQUEsR0FtQjBDO2dCQUE1QixPQUFPLHlEQUFtQixFQUFFOztrQ0FuQjFDLGdCQUFBOztBQWNVLGdCQUFBLENBQUEsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNmLGdCQUFBLENBQUEsV0FBVyxHQUFhLEVBQUUsQ0FBQztBQUMzQixnQkFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQUM7QUFDcEIsZ0JBQUEsQ0FBQSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRzFCLGdCQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN4Qjs7QUFyQkgsd0JBQUEsQ0FDUyxPQUFPLEdBQUEsaUJBQUMsT0FBdUIsRUFBRSxHQUFHLEVBQUE7QUFDekMsZ0JBQUksZUFBZSxHQUFHLGdEQUFxQixDQUFDO0FBQzVDLDJCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTNCLGdCQUFJLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLGdCQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RCxnQkFBSSxJQUFJLEdBQUc7QUFDVCwwQkFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2FBQy9CLENBQUM7QUFDRixtQkFBTyw4Q0FBbUIsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRDs7QUFYSCx3QkFBQSxXQXVCRSxPQUFPLEdBQUEsaUJBQUMsT0FBTyxFQUFBOzs7QUFDYixtQkFBTyxD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QUFDLEtBQUssQ0FBQzthQUN4QixNQUFNO0FBQ0wsc0JBQU0sSUFBSSxLQUFLLHlDQUF5QyxDQUFDO2FBQzFEO1NBQ0YsTUFBTTtBQUNMLGtCQUFNLElBQUksS0FBSyw0REFBNEQsQ0FBQztTQUM3RTtLQUNGIiwiZmlsZSI6InRlbXBsYXRlLWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgSmF2YVNjcmlwdENvbXBpbGVyIGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IEZJWE1FLCBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgaXNIZWxwZXIsIGlzU2VsZkdldCB9IGZyb20gXCJnbGltbWVyLXN5bnRheFwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgYnVpbGRNZXRhPzogRklYTUU8J2N1cnJlbnRseSBkb2VzIG5vdGhpbmcnPjtcbiAgbW9kdWxlTmFtZT86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNUcnVzdGVkVmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLmVzY2FwZWQgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUuZXNjYXBlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVDb21waWxlciB7XG4gIHN0YXRpYyBjb21waWxlKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zLCBhc3QpIHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICBsZXQgbWV0YSA9IHtcbiAgICAgIG1vZHVsZU5hbWU6IG9wdGlvbnMubW9kdWxlTmFtZVxuICAgIH07XG4gICAgcmV0dXJuIEphdmFTY3JpcHRDb21waWxlci5wcm9jZXNzKG9wY29kZXMsIG1ldGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9ucztcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnMpOiBhbnlbXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbbmFtZV0oLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtKSB7XG4gICAgdGhpcy50ZW1wbGF0ZUlkKys7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0QmxvY2snLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMudGVtcGxhdGVJZHMucHVzaCh0aGlzLnRlbXBsYXRlSWQgLSAxKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kQmxvY2snLCBudWxsKTtcbiAgfVxuXG4gIHRleHQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dKSB7XG4gICAgdGhpcy5vcGNvZGUoJ29wZW5FbGVtZW50JywgYWN0aW9uLCBhY3Rpb24udGFnLCBhY3Rpb24uYmxvY2tQYXJhbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlKFthY3Rpb24uYXR0cmlidXRlc1tpXV0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLm1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5tb2RpZmllcihbYWN0aW9uLm1vZGlmaWVyc1tpXV0pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm9wY29kZSgnY2xvc2VFbGVtZW50JywgbnVsbCk7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYWN0aW9uO1xuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UobmFtZSk7XG5cbiAgICBsZXQgaXNTdGF0aWMgPSB0aGlzLnByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgLy8gQXJndW1lbnRzXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzVHJ1c3RpbmcgPSBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUcnVzdGluZykge1xuICAgICAgICB0aGlzLm9wY29kZSgndHJ1c3RpbmdBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmaWVyKFthY3Rpb25dKSB7XG4gICAgbGV0IHsgcGF0aDogeyBwYXJ0cyB9IH0gPSBhY3Rpb247XG5cbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICB0aGlzLm9wY29kZSgnbW9kaWZpZXInLCBhY3Rpb24sIHBhcnRzKTtcbiAgfVxuXG4gIG11c3RhY2hlKFthY3Rpb25dKSB7XG4gICAgaWYgKGlzWWllbGQoYWN0aW9uKSkge1xuICAgICAgbGV0IHRvID0gYXNzZXJ0VmFsaWRZaWVsZChhY3Rpb24pO1xuICAgICAgdGhpcy55aWVsZCh0bywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL10pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0cywgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXSkge1xuICAgIGxldCB7IHBhcnRzIH0gPSBwYXRoO1xuICAgIHRoaXMub3Bjb2RlKCdhcmcnLCBwYXRoLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzTGl0ZXJhbChleHByKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBleHByLnBhdGgudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcoZXhwcikpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByLnBhdGhdKTtcbiAgICB9IGVsc2UgaWYgKGlzSGVscGVyKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgZXhwci5wYXRoLnBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzU2VsZkdldChleHByKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ3NlbGZHZXQnLCBleHByLCBleHByLnBhdGgucGFydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgndW5rbm93bicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgLy8vIEludGVybmFsIFN5bnRheFxuXG4gIHlpZWxkKHRvOiBzdHJpbmcsIGFjdGlvbikge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgneWllbGQnLCBhY3Rpb24sIHRvKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IHN0cmluZywgYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrJywgYWN0aW9uLCBuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IHN0cmluZywgYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrUGFyYW1zJywgYWN0aW9uLCBuYW1lKTtcbiAgfVxuXG4gIGJ1aWx0SW5IZWxwZXIoZXhwcikge1xuICAgIGlmIChpc0hhc0Jsb2NrKGV4cHIpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2soZXhwcik7XG4gICAgICB0aGlzLmhhc0Jsb2NrKG5hbWUsIGV4cHIpO1xuICAgIH0gZWxzZSBpZiAoaXNIYXNCbG9ja1BhcmFtcyhleHByKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrUGFyYW1zKGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChleHByLmRhdGEpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBleHByLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgb3Bjb2RlKG5hbWUsIGFjdGlvbiwgLi4uYXJncykge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoeyBwYXJhbXMsIGhhc2ggfSkge1xuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBwYXRoLCBwYXRoLnBhcnRzKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgdGhpc1twYXJhbS50eXBlXShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgICBpZiAoIXBhaXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB7IGtleSwgdmFsdWUgfSA9IHBhaXJzW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1t2YWx1ZS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHt2YWx1ZS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICB0aGlzW3ZhbHVlLnR5cGVdKHZhbHVlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIG51bGwsIHBhaXJzLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0cykge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICB9XG5cbiAgbWV0YShub2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNZaWVsZCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNBcmcoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGguZGF0YTtcbn1cblxuZnVuY3Rpb24gaXNMaXRlcmFsKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLnR5cGUgPT09ICdTdHJpbmdMaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnQm9vbGVhbkxpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdOdW1iZXJMaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnTnVsbExpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdVbmRlZmluZWRMaXRlcmFsJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jayc7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2tQYXJhbXMoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2stcGFyYW1zJztcbn1cblxuZnVuY3Rpb24gaXNCdWlsdEluSGVscGVyKGV4cHIpIHtcbiAgcmV0dXJuIGlzSGFzQmxvY2soZXhwcilcbiAgICAgIHx8IGlzSGFzQmxvY2tQYXJhbXMoZXhwcik7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoeyBoYXNoIH0pOiBzdHJpbmcge1xuICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzO1xuXG4gIGlmICgocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLmtleSAhPT0gJ3RvJykgfHwgcGFpcnMubGVuZ3RoID4gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgeWllbGQgb25seSB0YWtlcyBhIHNpbmdsZSBuYW1lZCBhcmd1bWVudDogJ3RvJ2ApO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS52YWx1ZS50eXBlICE9PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWVgKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYWlyc1swXS52YWx1ZS52YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZEhhc0Jsb2NrKHsgcGFyYW1zIH0pOiBzdHJpbmcge1xuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmIChwYXJhbXNbMF0udHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgICByZXR1cm4gcGFyYW1zWzBdLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWVgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBoYXMtYmxvY2sgb25seSB0YWtlcyBhIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3VtZW50YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRIYXNCbG9ja1BhcmFtcyh7IHBhcmFtcyB9KTogc3RyaW5nIHtcbiAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAocGFyYW1zWzBdLnR5cGUgPT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgICAgcmV0dXJuIHBhcmFtc1swXS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgaGFzLWJsb2NrLXBhcmFtcyBvbmx5IHRha2VzIGEgc2luZ2xlIHBvc2l0aW9uYWwgYXJndW1lbnRgKTtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLGFBQUEsY0FBQSxDQUF3QixLQUFLLEVBQUE7QUFDM0IsZUFBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7S0FDdEQ7O1FBRWEsZ0JBQUE7QUFnQlosaUJBaEJZLGdCQUFBLENBZ0JBLE9BQTBCLEVBQUE7QUFMOUIsZ0JBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsZ0JBQUEsQ0FBQSxXQUFXLEdBQWEsRUFBRSxDQUFDO0FBQzNCLGdCQUFBLENBQUEsT0FBTyxHQUFVLEVBQUUsQ0FBQztBQUNwQixnQkFBQSxDQUFBLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFHMUIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUM5Qjs7QUFsQlcsd0JBQUEsQ0FDTCxPQUFPLEdBQUEsaUJBQUksT0FBMEIsRUFBRSxHQUFHLEVBQUE7QUFDL0MsZ0JBQUksZUFBZSxHQUFHLGdEQUFxQixDQUFDO0FBQzVDLDJCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTNCLGdCQUFJLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLGdCQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RCxtQkFBTyw4Q0FBbUIsT0FBTyxDQUFJLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0Q7O0FBUlcsd0JBQUEsV0FvQlosT0FBTyxHQUFBLGlCQUFDLE9BQU8sRUFBQTs7O0FBQ2IsbUJBQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFlLEVBQUE7b0JBQWQsSUFBSSxHQUFMLElBQWU7O29CQUFMLElBQUksR0FBZCxJQUFlOztB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dXJjZXNDb250ZW50IjpbImltcG9ydCBUZW1wbGF0ZVZpc2l0b3IgZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciwgeyBUZW1wbGF0ZSB9IGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5pbXBvcnQgeyBpc0hlbHBlciB9IGZyb20gXCJnbGltbWVyLXN5bnRheFwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNZXRhIH0gZnJvbSBcImdsaW1tZXItd2lyZS1mb3JtYXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9uczxUIGV4dGVuZHMgVGVtcGxhdGVNZXRhPiB7XG4gIG1ldGE/OiBUO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuZXNjYXBlZCAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS5lc2NhcGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZUNvbXBpbGVyPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgc3RhdGljIGNvbXBpbGU8VD4ob3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD4sIGFzdCk6IFRlbXBsYXRlPFQ+IHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3M8VD4ob3Bjb2Rlcywgb3B0aW9ucy5tZXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD47XG4gIHByaXZhdGUgdGVtcGxhdGVJZCA9IDA7XG4gIHByaXZhdGUgdGVtcGxhdGVJZHM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBpbmNsdWRlTWV0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIHByb2Nlc3MoYWN0aW9ucyk6IGFueVtdIHtcbiAgICBhY3Rpb25zLmZvckVhY2goKFtuYW1lLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW25hbWVdKSB7IHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCAke25hbWV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTsgfVxuICAgICAgdGhpc1tuYW1lXSguLi5hcmdzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5vcGNvZGVzO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKHByb2dyYW0pIHtcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRQcm9ncmFtJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuICAgIHRoaXMub3Bjb2RlKCdlbmRQcm9ncmFtJywgbnVsbCk7XG4gIH1cblxuICBzdGFydEJsb2NrKHByb2dyYW0pIHtcbiAgICB0aGlzLnRlbXBsYXRlSWQrKztcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRCbG9jaycsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgdGhpcy50ZW1wbGF0ZUlkcy5wdXNoKHRoaXMudGVtcGxhdGVJZCAtIDEpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRCbG9jaycsIG51bGwpO1xuICB9XG5cbiAgdGV4dChbYWN0aW9uXSkge1xuICAgIHRoaXMub3Bjb2RlKCd0ZXh0JywgYWN0aW9uLCBhY3Rpb24uY2hhcnMpO1xuICB9XG5cbiAgY29tbWVudChbYWN0aW9uXSkge1xuICAgIHRoaXMub3Bjb2RlKCdjb21tZW50JywgYWN0aW9uLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgnb3BlbkVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbi50YWcsIGFjdGlvbi5ibG9ja1BhcmFtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUoW2FjdGlvbi5hdHRyaWJ1dGVzW2ldXSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24ubW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLm1vZGlmaWVyKFthY3Rpb24ubW9kaWZpZXJzW2ldXSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdmbHVzaEVsZW1lbnQnLCBudWxsKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm9wY29kZSgnY2xvc2VFbGVtZW50JywgbnVsbCk7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYWN0aW9uO1xuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UobmFtZSk7XG5cbiAgICBsZXQgaXNTdGF0aWMgPSB0aGlzLnByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgLy8gQXJndW1lbnRzXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzVHJ1c3RpbmcgPSBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUcnVzdGluZykge1xuICAgICAgICB0aGlzLm9wY29kZSgndHJ1c3RpbmdBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmaWVyKFthY3Rpb25dKSB7XG4gICAgbGV0IHsgcGF0aDogeyBwYXJ0cyB9IH0gPSBhY3Rpb247XG5cbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICB0aGlzLm9wY29kZSgnbW9kaWZpZXInLCBhY3Rpb24sIHBhcnRzKTtcbiAgfVxuXG4gIG11c3RhY2hlKFthY3Rpb25dKSB7XG4gICAgaWYgKGlzWWllbGQoYWN0aW9uKSkge1xuICAgICAgbGV0IHRvID0gYXNzZXJ0VmFsaWRZaWVsZChhY3Rpb24pO1xuICAgICAgdGhpcy55aWVsZCh0bywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL10pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0cywgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXSkge1xuICAgIGxldCB7IHBhcnRzIH0gPSBwYXRoO1xuICAgIHRoaXMub3Bjb2RlKCdhcmcnLCBwYXRoLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzTGl0ZXJhbChleHByKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBleHByLnBhdGgudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcoZXhwcikpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByLnBhdGhdKTtcbiAgICB9IGVsc2UgaWYgKGlzSGVscGVyKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgZXhwci5wYXRoLnBhcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ3Vua25vd24nLCBleHByLCBleHByLnBhdGgucGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBTeW50YXhcblxuICB5aWVsZCh0bzogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3lpZWxkJywgYWN0aW9uLCB0byk7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBzdHJpbmcsIGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9jaycsIGFjdGlvbiwgbmFtZSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBzdHJpbmcsIGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9ja1BhcmFtcycsIGFjdGlvbiwgbmFtZSk7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHIpIHtcbiAgICBpZiAoaXNIYXNCbG9jayhleHByKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrKGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9jayhuYW1lLCBleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzSGFzQmxvY2tQYXJhbXMoZXhwcikpIHtcbiAgICAgIGxldCBuYW1lID0gYXNzZXJ0VmFsaWRIYXNCbG9ja1BhcmFtcyhleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2tQYXJhbXMobmFtZSwgZXhwcik7XG4gICAgfVxuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zLCBpbnZva2VkIHJlY3Vyc2l2ZWx5IGZyb20gcHJlcGFyZVBhcmFtcyBhbmQgcHJlcGFyZUhhc2hcblxuICBTdWJFeHByZXNzaW9uKGV4cHIpIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIpKSB7XG4gICAgICB0aGlzLmJ1aWx0SW5IZWxwZXIoZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJlcGFyZUhlbHBlcihleHByKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdoZWxwZXInLCBleHByLCBleHByLnBhdGgucGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIFBhdGhFeHByZXNzaW9uKGV4cHIpIHtcbiAgICBpZiAoZXhwci5kYXRhKSB7XG4gICAgICB0aGlzLmFyZyhbZXhwcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgZXhwci5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bGxMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIG9wY29kZShuYW1lLCBhY3Rpb24sIC4uLmFyZ3MpIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKHsgcGFyYW1zLCBoYXNoIH0pIHtcbiAgICB0aGlzLnByZXBhcmVIYXNoKGhhc2gpO1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJlcGFyZVBhdGgocGF0aCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgcGF0aCwgcGF0aC5wYXJ0cyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgIHRoaXNbcGFyYW0udHlwZV0ocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2gpIHtcbiAgICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzO1xuXG4gICAgaWYgKCFwYWlycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHBhaXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSBwYWlyc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbdmFsdWUudHlwZV0sIGBVbmltcGxlbWVudGVkICR7dmFsdWUudHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgdGhpc1t2YWx1ZS50eXBlXSh2YWx1ZSk7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGtleSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVPYmplY3QnLCBudWxsLCBwYWlycy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHMpIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dKSB7XG4gICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgfVxuXG4gIG1ldGEobm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzWWllbGQoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICd5aWVsZCc7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLmRhdGE7XG59XG5cbmZ1bmN0aW9uIGlzTGl0ZXJhbCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ0Jvb2xlYW5MaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnTnVtYmVyTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ051bGxMaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnVW5kZWZpbmVkTGl0ZXJhbCc7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2soeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrLXBhcmFtcyc7XG59XG5cbmZ1bmN0aW9uIGlzQnVpbHRJbkhlbHBlcihleHByKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKGV4cHIpXG4gICAgICB8fCBpc0hhc0Jsb2NrUGFyYW1zKGV4cHIpO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFlpZWxkKHsgaGFzaCB9KTogc3RyaW5nIHtcbiAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICBpZiAoKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS5rZXkgIT09ICd0bycpIHx8IHBhaXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHlpZWxkIG9ubHkgdGFrZXMgYSBzaW5nbGUgbmFtZWQgYXJndW1lbnQ6ICd0bydgKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0udmFsdWUudHlwZSAhPT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFpcnNbMF0udmFsdWUudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRIYXNCbG9jayh7IHBhcmFtcyB9KTogc3RyaW5nIHtcbiAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAocGFyYW1zWzBdLnR5cGUgPT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgICAgcmV0dXJuIHBhcmFtc1swXS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgaGFzLWJsb2NrIG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudGApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tQYXJhbXMoeyBwYXJhbXMgfSk6IHN0cmluZyB7XG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKHBhcmFtc1swXS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbXNbMF0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGhhcy1ibG9jay1wYXJhbXMgb25seSB0YWtlcyBhIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3VtZW50YCk7XG4gIH1cbn1cbiJdfQ== enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports) { 'use strict'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var push = Array.prototype.push; var Frame = function Frame() { - _classCallCheck(this, Frame); - this.parentNode = null; this.children = null; this.childIndex = null; this.childCount = null; this.childTemplateCount = 0; @@ -12870,11 +13811,11 @@ } } return -1; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLXZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxRQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzs7UUFFaEMsS0FBQSxHQUFBLFNBQUEsS0FBQSxHQUFBOzhCQUFBLEtBQUE7O0FBQ1MsWUFBQSxDQUFBLFVBQVUsR0FBVyxJQUFJLENBQUM7QUFDMUIsWUFBQSxDQUFBLFFBQVEsR0FBVyxJQUFJLENBQUM7QUFDeEIsWUFBQSxDQUFBLFVBQVUsR0FBVyxJQUFJLENBQUM7QUFDMUIsWUFBQSxDQUFBLFVBQVUsR0FBVyxJQUFJLENBQUM7QUFDMUIsWUFBQSxDQUFBLGtCQUFrQixHQUFXLENBQUMsQ0FBQztBQUMvQixZQUFBLENBQUEsYUFBYSxHQUFXLENBQUMsQ0FBQztBQUMxQixZQUFBLENBQUEsT0FBTyxHQUFVLEVBQUUsQ0FBQztBQUNwQixZQUFBLENBQUEsbUJBQW1CLEdBQWEsSUFBSSxDQUFDO0tBQzdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0RELGFBQUEsZUFBQSxHQUFBO0FBQ0UsWUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDckIsWUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDbEIsWUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN4Qjs7QUFJRCxtQkFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBUyxJQUFJLEVBQUE7QUFDN0MsWUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QixDQUFDO0FBRUYsbUJBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsT0FBTyxFQUFBO0FBQ2xELFlBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUVwQixZQUFJLFdBQVcsR0FBRyxJ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LGVBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM5QixDQUFDO3NCQUVhLGVBQWU7Ozs7QUFJOUIsYUFBQSxVQUFBLENBQW9CLEtBQUssRUFBRSxPQUFPLEVBQUE7QUFDaEMsWUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFZixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxnQkFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXBCLGdCQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQzNELHlCQUFTO2FBQ1YsTUFBTTtBQUNMLHFCQUFLLEVBQUUsQ0FBQzthQUNUO0FBRUQsZ0JBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNwQix1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0FBRUQsZUFBTyxDQUFDLENBQUMsQ0FBQztLQUNYIiwiZmlsZSI6InRlbXBsYXRlLXZpc2l0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoO1xuXG5jbGFzcyBGcmFtZSB7XG4gIHB1YmxpYyBwYXJlbnROb2RlOiBPYmplY3QgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IE9iamVjdCA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZEluZGV4OiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRDb3VudDogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGNoaWxkVGVtcGxhdGVDb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIG11c3RhY2hlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgYmxhbmtDaGlsZFRleHROb2RlczogbnVtYmVyW10gPSBudWxsO1xufVxuXG4vKipcbiAqIFRha2VzIGluIGFuIEFTVCBhbmQgb3V0cHV0cyBhIGxpc3Qgb2YgYWN0aW9ucyB0byBiZSBjb25zdW1lZFxuICogYnkgYSBjb21waWxlci4gRm9yIGV4YW1wbGUsIHRoZSB0ZW1wbGF0ZVxuICpcbiAqICAgICBmb297e2Jhcn19PGRpdj5iYXo8L2Rpdj5cbiAqXG4gKiBwcm9kdWNlcyB0aGUgYWN0aW9uc1xuICpcbiAqICAgICBbWydzdGFydFByb2dyYW0nLCBbcHJvZ3JhbU5vZGUsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAzXV0sXG4gKiAgICAgIFsnbXVzdGFjaGUnLCBbbXVzdGFjaGVOb2RlLCAxLCAzXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDIsIDMsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAyLCAzXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhpcyB2aXNpdG9yIHdhbGtzIHRoZSBBU1QgZGVwdGggZmlyc3QgYW5kIGJhY2t3YXJkcy4gQXNcbiAqIGEgcmVzdWx0IHRoZSBib3R0b20tbW9zdCBjaGlsZCB0ZW1wbGF0ZSB3aWxsIGFwcGVhciBhdCB0aGVcbiAqIHRvcCBvZiB0aGUgYWN0aW9ucyBsaXN0IHdoZXJlYXMgdGhlIHJvb3QgdGVtcGxhdGUgd2lsbCBhcHBlYXJcbiAqIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuIEZvciBleGFtcGxlLFxuICpcbiAqICAgICA8ZGl2Pnt7I2lmfX1mb297e2Vsc2V9fWJhcjxiPjwvYj57ey9pZn19PC9kaXY+XG4gKlxuICogcHJvZHVjZXMgdGhlIGFjdGlvbnNcbiAqXG4gKiAgICAgW1snc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgMiwgMF1dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyLCAwXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dLFxuICogICAgICBbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMF1dLFxuICogICAgICBbJ3RleHQnLCBbdGV4dE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV0sXG4gKiAgICAgIFsnc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAyXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDEsIDFdXSxcbiAqICAgICAgWydibG9jaycsIFtibG9ja05vZGUsIDAsIDFdXSxcbiAqICAgICAgWydjbG9zZUVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgaXMgbWFpbnRhaW5lZCBieSBhIHN0YWNrIG9mIGZyYW1lcy5cbiAqIFdoZW5ldmVyIGEgbm9kZSB3aXRoIGNoaWxkcmVuIGlzIGVudGVyZWQgKGVpdGhlciBhIFByb2dyYW1Ob2RlXG4gKiBvciBhbiBFbGVtZW50Tm9kZSkgYSBmcmFtZSBpcyBwdXNoZWQgb250byB0aGUgc3RhY2suIFRoZSBmcmFtZVxuICogY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgb2YgdGhhdFxuICogbm9kZS4gRm9yIGV4YW1wbGUsXG4gKlxuICogICAtIGluZGV4IG9mIHRoZSBjdXJyZW50IGNoaWxkIG5vZGUgYmVpbmcgdmlzaXRlZFxuICogICAtIHRoZSBudW1iZXIgb2YgbXVzdGFjaGVzIGNvbnRhaW5lZCB3aXRoaW4gaXRzIGNoaWxkIG5vZGVzXG4gKiAgIC0gdGhlIGxpc3Qgb2YgYWN0aW9ucyBnZW5lcmF0ZWQgYnkgaXRzIGNoaWxkIG5vZGVzXG4gKi9cblxuZnVuY3Rpb24gVGVtcGxhdGVWaXNpdG9yKCkge1xuICB0aGlzLmZyYW1lU3RhY2sgPSBbXTtcbiAgdGhpcy5hY3Rpb25zID0gW107XG4gIHRoaXMucHJvZ3JhbURlcHRoID0gLTE7XG59XG5cbi8vIFRyYXZlcnNhbCBtZXRob2RzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbihub2RlKSB7XG4gIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgdGhpcy5wcm9ncmFtRGVwdGgrKztcblxuICBsZXQgcGFyZW50RnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBsZXQgcHJvZ3JhbUZyYW1lID0gdGhpcy5wdXNoRnJhbWUoKTtcblxuICBsZXQgc3RhcnRUeXBlLCBlbmRUeXBlO1xuXG4gIGlmICh0aGlzLnByb2dyYW1EZXB0aCA9PT0gMCkge1xuICAgIHN0YXJ0VHlwZSA9ICdzdGFydFByb2dyYW0nO1xuICAgIGVuZFR5cGUgPSAnZW5kUHJvZ3JhbSc7XG4gIH0gZWxzZSB7XG4gICAgc3RhcnRUeXBlID0gJ3N0YXJ0QmxvY2snO1xuICAgIGVuZFR5cGUgPSAnZW5kQmxvY2snO1xuICB9XG5cbiAgcHJvZ3JhbUZyYW1lLnBhcmVudE5vZGUgPSBwcm9ncmFtO1xuICBwcm9ncmFtRnJhbWUuY2hpbGRyZW4gPSBwcm9ncmFtLmJvZHk7XG4gIHByb2dyYW1GcmFtZS5jaGlsZENvdW50ID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aDtcbiAgcHJvZ3JhbUZyYW1lLmJsYW5rQ2hpbGRUZXh0Tm9kZXMgPSBbXTtcbiAgcHJvZ3JhbUZyYW1lLmFjdGlvbnMucHVzaChbZW5kVHlwZSwgW3Byb2dyYW0sIHRoaXMucHJvZ3JhbURlcHRoXV0pO1xuXG4gIGZvciAobGV0IGkgPSBwcm9ncmFtLmJvZHkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwcm9ncmFtRnJhbWUuY2hpbGRJbmRleCA9IGk7XG4gICAgdGhpcy52aXNpdChwcm9ncmFtLmJvZHlbaV0pO1xuICB9XG5cbiAgcHJvZ3JhbUZyYW1lLmFjdGlvbnMucHVzaChbc3RhcnRUeXBlLCBbXG4gICAgcHJvZ3JhbSwgcHJvZ3JhbUZyYW1lLmNoaWxkVGVtcGxhdGVDb3VudCxcbiAgICBwcm9ncmFtRnJhbWUuYmxhbmtDaGlsZFRleHROb2Rlcy5yZXZlcnNlKClcbiAgXV0pO1xuICB0aGlzLnBvcEZyYW1lKCk7XG5cbiAgdGhpcy5wcm9ncmFtRGVwdGgtLTtcblxuICAvLyBQdXNoIHRoZSBjb21wbGV0ZWQgdGVtcGxhdGUgaW50byB0aGUgZ2xvYmFsIGFjdGlvbnMgbGlzdFxuICBpZiAocGFyZW50RnJhbWUpIHsgcGFyZW50RnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50Kys7IH1cbiAgcHVzaC5hcHBseSh0aGlzLmFjdGlvbnMsIHByb2dyYW1GcmFtZS5hY3Rpb25zLnJldmVyc2UoKSk7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLkVsZW1lbnROb2RlID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICBsZXQgcGFyZW50RnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBsZXQgZWxlbWVudEZyYW1lID0gdGhpcy5wdXNoRnJhbWUoKTtcblxuICBlbGVtZW50RnJhbWUucGFyZW50Tm9kZSA9IGVsZW1lbnQ7XG4gIGVsZW1lbnRGcmFtZS5jaGlsZHJlbiA9IGVsZW1lbnQuY2hpbGRyZW47XG4gIGVsZW1lbnRGcmFtZS5jaGlsZENvdW50ID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XG4gIGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50ICs9IGVsZW1lbnQubW9kaWZpZXJzLmxlbmd0aDtcbiAgZWxlbWVudEZyYW1lLmJsYW5rQ2hpbGRUZXh0Tm9kZXMgPSBbXTtcblxuICBsZXQgYWN0aW9uQXJncyA9IFtcbiAgICBlbGVtZW50LFxuICAgIHBhcmVudEZyYW1lLmNoaWxkSW5kZXgsXG4gICAgcGFyZW50RnJhbWUuY2hpbGRDb3VudFxuICBdO1xuXG4gIGVsZW1lbnRGcmFtZS5hY3Rpb25zLnB1c2goWydjbG9zZUVsZW1lbnQnLCBhY3Rpb25BcmdzXSk7XG5cbiAgZm9yIChsZXQgaSA9IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHRoaXMudmlzaXQoZWxlbWVudC5hdHRyaWJ1dGVzW2ldKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgZWxlbWVudEZyYW1lLmNoaWxkSW5kZXggPSBpO1xuICAgIHRoaXMudmlzaXQoZWxlbWVudC5jaGlsZHJlbltpXSk7XG4gIH1cblxuICBlbGVtZW50RnJhbWUuYWN0aW9ucy5wdXNoKFsnb3BlbkVsZW1lbnQnLCBhY3Rpb25BcmdzLmNvbmNhdChbXG4gICAgZWxlbWVudEZyYW1lLm11c3RhY2hlQ291bnQsIGVsZW1lbnRGcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnJldmVyc2UoKSBdKV0pO1xuICB0aGlzLnBvcEZyYW1lKCk7XG5cbiAgLy8gUHJvcGFnYXRlIHRoZSBlbGVtZW50J3MgZnJhbWUgc3RhdGUgdG8gdGhlIHBhcmVudCBmcmFtZVxuICBpZiAoZWxlbWVudEZyYW1lLm11c3RhY2hlQ291bnQgPiAwKSB7IHBhcmVudEZyYW1lLm11c3RhY2hlQ291bnQrKzsgfVxuICBwYXJlbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQgKz0gZWxlbWVudEZyYW1lLmNoaWxkVGVtcGxhdGVDb3VudDtcbiAgcHVzaC5hcHBseShwYXJlbnRGcmFtZS5hY3Rpb25zLCBlbGVtZW50RnJhbWUuYWN0aW9ucyk7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLkF0dHJOb2RlID0gZnVuY3Rpb24oYXR0cikge1xuICBpZiAoYXR0ci52YWx1ZS50eXBlICE9PSAnVGV4dE5vZGUnKSB7XG4gICAgdGhpcy5nZXRDdXJyZW50RnJhbWUoKS5tdXN0YWNoZUNvdW50Kys7XG4gIH1cbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuVGV4dE5vZGUgPSBmdW5jdGlvbih0ZXh0KSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGlmICh0ZXh0LmNoYXJzID09PSAnJykge1xuICAgIGZyYW1lLmJsYW5rQ2hpbGRUZXh0Tm9kZXMucHVzaChkb21JbmRleE9mKGZyYW1lLmNoaWxkcmVuLCB0ZXh0KSk7XG4gIH1cbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsndGV4dCcsIFt0ZXh0LCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcblxuICBmcmFtZS5tdXN0YWNoZUNvdW50Kys7XG4gIGZyYW1lLmFjdGlvbnMucHVzaChbJ2Jsb2NrJywgW25vZGUsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG5cbiAgaWYgKG5vZGUuaW52ZXJzZSkgeyB0aGlzLnZpc2l0KG5vZGUuaW52ZXJzZSk7IH1cbiAgaWYgKG5vZGUucHJvZ3JhbSkgeyB0aGlzLnZpc2l0KG5vZGUucHJvZ3JhbSk7IH1cbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydtdXN0YWNoZScsIFtub2RlLCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgZnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydjb21tZW50JywgW3RleHQsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydtdXN0YWNoZScsIFttdXN0YWNoZSwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cbi8vIEZyYW1lIGhlbHBlcnNcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5nZXRDdXJyZW50RnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZnJhbWVTdGFja1t0aGlzLmZyYW1lU3RhY2subGVuZ3RoIC0gMV07XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLnB1c2hGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICBsZXQgZnJhbWUgPSBuZXcgRnJhbWUoKTtcbiAgdGhpcy5mcmFtZVN0YWNrLnB1c2goZnJhbWUpO1xuICByZXR1cm4gZnJhbWU7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLnBvcEZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVZpc2l0b3I7XG5cbi8vIFJldHVybnMgdGhlIGluZGV4IG9mIGBkb21Ob2RlYCBpbiB0aGUgYG5vZGVzYCBhcnJheSwgc2tpcHBpbmdcbi8vIG92ZXIgYW55IG5vZGVzIHdoaWNoIGRvIG5vdCByZXByZXNlbnQgRE9NIG5vZGVzLlxuZnVuY3Rpb24gZG9tSW5kZXhPZihub2RlcywgZG9tTm9kZSkge1xuICBsZXQgaW5kZXggPSAtMTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmIChub2RlLnR5cGUgIT09ICdUZXh0Tm9kZScgJiYgbm9kZS50eXBlICE9PSAnRWxlbWVudE5vZGUnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG5cbiAgICBpZiAobm9kZSA9PT0gZG9tTm9kZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLXZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7O1FBRWhDLEtBQUEsR0FBQSxTQUFBLEtBQUEsR0FBQTtBQUNTLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxRQUFRLEdBQVcsSUFBSSxDQUFDO0FBQ3hCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxrQkFBa0IsR0FBVyxDQUFDLENBQUM7QUFDL0IsWUFBQSxDQUFBLGFBQWEsR0FBVyxDQUFDLENBQUM7QUFDMUIsWUFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQUM7QUFDcEIsWUFBQSxDQUFBLG1CQUFtQixHQUFhLElBQUksQ0FBQztLQUM3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9ERCxhQUFBLGVBQUEsR0FBQTtBQUNFLFlBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLFlBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLFlBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDeEI7O0FBSUQsbUJBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVMsSUFBSSxFQUFBO0FBQzdDLFlBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkIsQ0FBQztBQUVGLG1CQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBQTtBQUNsRCxZQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFFcEIsWUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUs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QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDOUIsQ0FBQztzQkFFYSxlQUFlOzs7O0FBSTlCLGFBQUEsVUFBQSxDQUFvQixLQUFLLEVBQUUsT0FBTyxFQUFBO0FBQ2hDLFlBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWYsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDckMsZ0JBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVwQixnQkFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtBQUMzRCx5QkFBUzthQUNWLE1BQU07QUFDTCxxQkFBSyxFQUFFLENBQUM7YUFDVDtBQUVELGdCQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDcEIsdUJBQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtBQUVELGVBQU8sQ0FBQyxDQUFDLENBQUM7S0FDWCIsImZpbGUiOiJ0ZW1wbGF0ZS12aXNpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDtcblxuY2xhc3MgRnJhbWUge1xuICBwdWJsaWMgcGFyZW50Tm9kZTogT2JqZWN0ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBPYmplY3QgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRJbmRleDogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGNoaWxkQ291bnQ6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZFRlbXBsYXRlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBtdXN0YWNoZUNvdW50OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgYWN0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGJsYW5rQ2hpbGRUZXh0Tm9kZXM6IG51bWJlcltdID0gbnVsbDtcbn1cblxuLyoqXG4gKiBUYWtlcyBpbiBhbiBBU1QgYW5kIG91dHB1dHMgYSBsaXN0IG9mIGFjdGlvbnMgdG8gYmUgY29uc3VtZWRcbiAqIGJ5IGEgY29tcGlsZXIuIEZvciBleGFtcGxlLCB0aGUgdGVtcGxhdGVcbiAqXG4gKiAgICAgZm9ve3tiYXJ9fTxkaXY+YmF6PC9kaXY+XG4gKlxuICogcHJvZHVjZXMgdGhlIGFjdGlvbnNcbiAqXG4gKiAgICAgW1snc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgM11dLFxuICogICAgICBbJ211c3RhY2hlJywgW211c3RhY2hlTm9kZSwgMSwgM11dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAyLCAzLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgMV1dLFxuICogICAgICBbJ2Nsb3NlRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMiwgM10sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dXVxuICpcbiAqIFRoaXMgdmlzaXRvciB3YWxrcyB0aGUgQVNUIGRlcHRoIGZpcnN0IGFuZCBiYWNrd2FyZHMuIEFzXG4gKiBhIHJlc3VsdCB0aGUgYm90dG9tLW1vc3QgY2hpbGQgdGVtcGxhdGUgd2lsbCBhcHBlYXIgYXQgdGhlXG4gKiB0b3Agb2YgdGhlIGFjdGlvbnMgbGlzdCB3aGVyZWFzIHRoZSByb290IHRlbXBsYXRlIHdpbGwgYXBwZWFyXG4gKiBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LiBGb3IgZXhhbXBsZSxcbiAqXG4gKiAgICAgPGRpdj57eyNpZn19Zm9ve3tlbHNlfX1iYXI8Yj48L2I+e3svaWZ9fTwvZGl2PlxuICpcbiAqIHByb2R1Y2VzIHRoZSBhY3Rpb25zXG4gKlxuICogICAgIFtbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMF1dLFxuICogICAgICBbJ3RleHQnLCBbdGV4dE5vZGUsIDAsIDIsIDBdXSxcbiAqICAgICAgWydvcGVuRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMSwgMiwgMF1dLFxuICogICAgICBbJ2Nsb3NlRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMSwgMl1dLFxuICogICAgICBbJ2VuZFByb2dyYW0nLCBbcHJvZ3JhbU5vZGVdXSxcbiAqICAgICAgWydzdGFydFByb2dyYW0nLCBbcHJvZ3JhbU5vZGUsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dLFxuICogICAgICBbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMl1dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAwLCAxLCAxXV0sXG4gKiAgICAgIFsnYmxvY2snLCBbYmxvY2tOb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dXVxuICpcbiAqIFRoZSBzdGF0ZSBvZiB0aGUgdHJhdmVyc2FsIGlzIG1haW50YWluZWQgYnkgYSBzdGFjayBvZiBmcmFtZXMuXG4gKiBXaGVuZXZlciBhIG5vZGUgd2l0aCBjaGlsZHJlbiBpcyBlbnRlcmVkIChlaXRoZXIgYSBQcm9ncmFtTm9kZVxuICogb3IgYW4gRWxlbWVudE5vZGUpIGEgZnJhbWUgaXMgcHVzaGVkIG9udG8gdGhlIHN0YWNrLiBUaGUgZnJhbWVcbiAqIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgdHJhdmVyc2FsIG9mIHRoYXRcbiAqIG5vZGUuIEZvciBleGFtcGxlLFxuICpcbiAqICAgLSBpbmRleCBvZiB0aGUgY3VycmVudCBjaGlsZCBub2RlIGJlaW5nIHZpc2l0ZWRcbiAqICAgLSB0aGUgbnVtYmVyIG9mIG11c3RhY2hlcyBjb250YWluZWQgd2l0aGluIGl0cyBjaGlsZCBub2Rlc1xuICogICAtIHRoZSBsaXN0IG9mIGFjdGlvbnMgZ2VuZXJhdGVkIGJ5IGl0cyBjaGlsZCBub2Rlc1xuICovXG5cbmZ1bmN0aW9uIFRlbXBsYXRlVmlzaXRvcigpIHtcbiAgdGhpcy5mcmFtZVN0YWNrID0gW107XG4gIHRoaXMuYWN0aW9ucyA9IFtdO1xuICB0aGlzLnByb2dyYW1EZXB0aCA9IC0xO1xufVxuXG4vLyBUcmF2ZXJzYWwgbWV0aG9kc1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzW25vZGUudHlwZV0obm9kZSk7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlByb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFtKSB7XG4gIHRoaXMucHJvZ3JhbURlcHRoKys7XG5cbiAgbGV0IHBhcmVudEZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgbGV0IHByb2dyYW1GcmFtZSA9IHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgbGV0IHN0YXJ0VHlwZSwgZW5kVHlwZTtcblxuICBpZiAodGhpcy5wcm9ncmFtRGVwdGggPT09IDApIHtcbiAgICBzdGFydFR5cGUgPSAnc3RhcnRQcm9ncmFtJztcbiAgICBlbmRUeXBlID0gJ2VuZFByb2dyYW0nO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0VHlwZSA9ICdzdGFydEJsb2NrJztcbiAgICBlbmRUeXBlID0gJ2VuZEJsb2NrJztcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5wYXJlbnROb2RlID0gcHJvZ3JhbTtcbiAgcHJvZ3JhbUZyYW1lLmNoaWxkcmVuID0gcHJvZ3JhbS5ib2R5O1xuICBwcm9ncmFtRnJhbWUuY2hpbGRDb3VudCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG4gIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW2VuZFR5cGUsIFtwcm9ncmFtLCB0aGlzLnByb2dyYW1EZXB0aF1dKTtcblxuICBmb3IgKGxldCBpID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgcHJvZ3JhbUZyYW1lLmNoaWxkSW5kZXggPSBpO1xuICAgIHRoaXMudmlzaXQocHJvZ3JhbS5ib2R5W2ldKTtcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW3N0YXJ0VHlwZSwgW1xuICAgIHByb2dyYW0sIHByb2dyYW1GcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQsXG4gICAgcHJvZ3JhbUZyYW1lLmJsYW5rQ2hpbGRUZXh0Tm9kZXMucmV2ZXJzZSgpXG4gIF1dKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIHRoaXMucHJvZ3JhbURlcHRoLS07XG5cbiAgLy8gUHVzaCB0aGUgY29tcGxldGVkIHRlbXBsYXRlIGludG8gdGhlIGdsb2JhbCBhY3Rpb25zIGxpc3RcbiAgaWYgKHBhcmVudEZyYW1lKSB7IHBhcmVudEZyYW1lLmNoaWxkVGVtcGxhdGVDb3VudCsrOyB9XG4gIHB1c2guYXBwbHkodGhpcy5hY3Rpb25zLCBwcm9ncmFtRnJhbWUuYWN0aW9ucy5yZXZlcnNlKCkpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5FbGVtZW50Tm9kZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgbGV0IHBhcmVudEZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgbGV0IGVsZW1lbnRGcmFtZSA9IHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgZWxlbWVudEZyYW1lLnBhcmVudE5vZGUgPSBlbGVtZW50O1xuICBlbGVtZW50RnJhbWUuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuO1xuICBlbGVtZW50RnJhbWUuY2hpbGRDb3VudCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICBlbGVtZW50RnJhbWUubXVzdGFjaGVDb3VudCArPSBlbGVtZW50Lm1vZGlmaWVycy5sZW5ndGg7XG4gIGVsZW1lbnRGcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG5cbiAgbGV0IGFjdGlvbkFyZ3MgPSBbXG4gICAgZWxlbWVudCxcbiAgICBwYXJlbnRGcmFtZS5jaGlsZEluZGV4LFxuICAgIHBhcmVudEZyYW1lLmNoaWxkQ291bnRcbiAgXTtcblxuICBlbGVtZW50RnJhbWUuYWN0aW9ucy5wdXNoKFsnY2xvc2VFbGVtZW50JywgYWN0aW9uQXJnc10pO1xuXG4gIGZvciAobGV0IGkgPSBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuYXR0cmlidXRlc1tpXSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGVsZW1lbnRGcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuY2hpbGRyZW5baV0pO1xuICB9XG5cbiAgZWxlbWVudEZyYW1lLmFjdGlvbnMucHVzaChbJ29wZW5FbGVtZW50JywgYWN0aW9uQXJncy5jb25jYXQoW1xuICAgIGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50LCBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2Rlcy5yZXZlcnNlKCkgXSldKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgZWxlbWVudCdzIGZyYW1lIHN0YXRlIHRvIHRoZSBwYXJlbnQgZnJhbWVcbiAgaWYgKGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50ID4gMCkgeyBwYXJlbnRGcmFtZS5tdXN0YWNoZUNvdW50Kys7IH1cbiAgcGFyZW50RnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50ICs9IGVsZW1lbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQ7XG4gIHB1c2guYXBwbHkocGFyZW50RnJhbWUuYWN0aW9ucywgZWxlbWVudEZyYW1lLmFjdGlvbnMpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5BdHRyTm9kZSA9IGZ1bmN0aW9uKGF0dHIpIHtcbiAgaWYgKGF0dHIudmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgIHRoaXMuZ2V0Q3VycmVudEZyYW1lKCkubXVzdGFjaGVDb3VudCsrO1xuICB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlRleHROb2RlID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgZnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBpZiAodGV4dC5jaGFycyA9PT0gJycpIHtcbiAgICBmcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnB1c2goZG9tSW5kZXhPZihmcmFtZS5jaGlsZHJlbiwgdGV4dCkpO1xuICB9XG4gIGZyYW1lLmFjdGlvbnMucHVzaChbJ3RleHQnLCBbdGV4dCwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG5cbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydibG9jaycsIFtub2RlLCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xuXG4gIGlmIChub2RlLmludmVyc2UpIHsgdGhpcy52aXNpdChub2RlLmludmVyc2UpOyB9XG4gIGlmIChub2RlLnByb2dyYW0pIHsgdGhpcy52aXNpdChub2RlLnByb2dyYW0pOyB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbm9kZSwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnY29tbWVudCcsIFt0ZXh0LCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbXVzdGFjaGUsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG59O1xuXG4vLyBGcmFtZSBoZWxwZXJzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuZ2V0Q3VycmVudEZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZyYW1lU3RhY2tbdGhpcy5mcmFtZVN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wdXNoRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgbGV0IGZyYW1lID0gbmV3IEZyYW1lKCk7XG4gIHRoaXMuZnJhbWVTdGFjay5wdXNoKGZyYW1lKTtcbiAgcmV0dXJuIGZyYW1lO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wb3BGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVWaXNpdG9yO1xuXG4vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgZG9tTm9kZWAgaW4gdGhlIGBub2Rlc2AgYXJyYXksIHNraXBwaW5nXG4vLyBvdmVyIGFueSBub2RlcyB3aGljaCBkbyBub3QgcmVwcmVzZW50IERPTSBub2Rlcy5cbmZ1bmN0aW9uIGRvbUluZGV4T2Yobm9kZXMsIGRvbU5vZGUpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiAobm9kZS50eXBlICE9PSAnVGV4dE5vZGUnICYmIG5vZGUudHlwZSAhPT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgPT09IGRvbU5vZGUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXX0= enifed("glimmer-compiler/lib/utils", ["exports"], function (exports) { "use strict"; exports.processOpcodes = processOpcodes; @@ -12888,25 +13829,19 @@ compiler[method].call(compiler); } } } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsYUFBQSxjQUFBLENBQStCLFFBQVEsRUFBRSxPQUFPLEVBQUE7QUFDOUMsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxnQkFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLGdCQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsZ0JBQUksTUFBTSxFQUFFO0FBQ1Ysd0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzFDLE1BQU07QUFDTCx3QkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcHJvY2Vzc09wY29kZXMoY29tcGlsZXIsIG9wY29kZXMpIHtcbiAgZm9yIChsZXQgaT0wLCBsPW9wY29kZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIGxldCBtZXRob2QgPSBvcGNvZGVzW2ldWzBdO1xuICAgIGxldCBwYXJhbXMgPSBvcGNvZGVzW2ldWzFdO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uYXBwbHkoY29tcGlsZXIsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uY2FsbChjb21waWxlcik7XG4gICAgfVxuICB9XG59Il19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU0sYUFBQSxjQUFBLENBQXlCLFFBQVEsRUFBRSxPQUFPLEVBQUE7QUFDOUMsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxnQkFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLGdCQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsZ0JBQUksTUFBTSxFQUFFO0FBQ1Ysd0JBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzFDLE1BQU07QUFDTCx3QkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqQztTQUNGO0tBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcHJvY2Vzc09wY29kZXMoY29tcGlsZXIsIG9wY29kZXMpIHtcbiAgZm9yIChsZXQgaT0wLCBsPW9wY29kZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIGxldCBtZXRob2QgPSBvcGNvZGVzW2ldWzBdO1xuICAgIGxldCBwYXJhbXMgPSBvcGNvZGVzW2ldWzFdO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uYXBwbHkoY29tcGlsZXIsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uY2FsbChjb21waWxlcik7XG4gICAgfVxuICB9XG59Il19 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'; - 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); } } return obj; } - exports.BasicReference = _glimmerReferenceLibReference.Reference; exports.BasicPathReference = _glimmerReferenceLibReference.PathReference; exports.ConstReference = _glimmerReferenceLibConst.ConstReference; exports.isConst = _glimmerReferenceLibConst.isConst; - - _defaults(exports, _interopExportWildcard(_glimmerReferenceLibValidators, _defaults)); - + 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; @@ -12918,28 +13853,20 @@ exports.IterationArtifacts = _glimmerReferenceLibIterable.IterationArtifacts; exports.ReferenceIterator = _glimmerReferenceLibIterable.ReferenceIterator; exports.IteratorSynchronizer = _glimmerReferenceLibIterable.IteratorSynchronizer; exports.IteratorSynchronizerDelegate = _glimmerReferenceLibIterable.IteratorSynchronizerDelegate; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7VUFDZSxjQUFjLGlDQUEzQixTQUFTO1VBQ1Esa0JBQWtCLGlDQUFuQyxhQUFhO1VBSWIsY0FBYyw2QkFBZCxjQUFjO1VBQ2QsT0FBTyw2QkFBUCxPQUFPOzs7O1VBTWUsU0FBUyxrQ0FBL0Isa0JBQWtCO1VBQ1EsYUFBYSxrQ0FBdkMsc0JBQXNCO1VBSXRCLGtCQUFrQiw2QkFBbEIsa0JBQWtCO1VBSWxCLGFBQWEsZ0NBQWIsYUFBYTtVQUNiLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGtCQUFrQixnQ0FBbEIsa0JBQWtCO1VBQ2xCLGlCQUFpQixnQ0FBakIsaUJBQWlCO1VBQ2pCLG9CQUFvQixnQ0FBcEIsb0JBQW9CO1VBQ3BCLDRCQUE0QixnQ0FBNUIsNEJBQTRCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVmZXJlbmNlIGFzIEJhc2ljUmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlIGFzIEJhc2ljUGF0aFJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9yZWZlcmVuY2UnO1xuXG5leHBvcnQge1xuICBDb25zdFJlZmVyZW5jZSxcbiAgaXNDb25zdFxufSBmcm9tICcuL2xpYi9jb25zdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQge1xuICBWZXJzaW9uZWRSZWZlcmVuY2UgYXMgUmVmZXJlbmNlLFxuICBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIGFzIFBhdGhSZWZlcmVuY2Vcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7XG4gIHJlZmVyZW5jZUZyb21QYXJ0c1xufSBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIEl0ZXJhdGlvbkl0ZW0sXG4gIEl0ZXJhdG9yLFxuICBJdGVyYWJsZSxcbiAgT3BhcXVlSXRlcmF0b3IsXG4gIE9wYXF1ZUl0ZXJhYmxlLFxuICBBYnN0cmFjdEl0ZXJhdG9yLFxuICBBYnN0cmFjdEl0ZXJhYmxlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIFJlZmVyZW5jZUl0ZXJhdG9yLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZVxufSBmcm9tICcuL2xpYi9pdGVyYWJsZSc7XG4iXX0= -enifed("glimmer-reference/lib/const", ["exports", "glimmer-reference/lib/validators"], function (exports, _glimmerReferenceLibValidators) { - "use strict"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztVQUNlLGNBQWMsaUNBQTNCLFNBQVM7VUFDUSxrQkFBa0IsaUNBQW5DLGFBQWE7VUFJYixjQUFjLDZCQUFkLGNBQWM7VUFDZCxPQUFPLDZCQUFQLE9BQU87O1VBTWUsU0FBUyxrQ0FBL0Isa0JBQWtCO1VBQ1EsYUFBYSxrQ0FBdkMsc0JBQXNCO1VBSXRCLGtCQUFrQiw2QkFBbEIsa0JBQWtCO1VBSWxCLGFBQWEsZ0NBQWIsYUFBYTtVQUNiLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLFFBQVEsZ0NBQVIsUUFBUTtVQUNSLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGNBQWMsZ0NBQWQsY0FBYztVQUNkLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGdCQUFnQixnQ0FBaEIsZ0JBQWdCO1VBQ2hCLGtCQUFrQixnQ0FBbEIsa0JBQWtCO1VBQ2xCLGlCQUFpQixnQ0FBakIsaUJBQWlCO1VBQ2pCLG9CQUFvQixnQ0FBcEIsb0JBQW9CO1VBQ3BCLDRCQUE0QixnQ0FBNUIsNEJBQTRCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVmZXJlbmNlIGFzIEJhc2ljUmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlIGFzIEJhc2ljUGF0aFJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9yZWZlcmVuY2UnO1xuXG5leHBvcnQge1xuICBDb25zdFJlZmVyZW5jZSxcbiAgaXNDb25zdFxufSBmcm9tICcuL2xpYi9jb25zdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQge1xuICBWZXJzaW9uZWRSZWZlcmVuY2UgYXMgUmVmZXJlbmNlLFxuICBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlIGFzIFBhdGhSZWZlcmVuY2Vcbn0gZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCB7XG4gIHJlZmVyZW5jZUZyb21QYXJ0c1xufSBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIEl0ZXJhdGlvbkl0ZW0sXG4gIEl0ZXJhdG9yLFxuICBJdGVyYWJsZSxcbiAgT3BhcXVlSXRlcmF0b3IsXG4gIE9wYXF1ZUl0ZXJhYmxlLFxuICBBYnN0cmFjdEl0ZXJhdG9yLFxuICBBYnN0cmFjdEl0ZXJhYmxlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIFJlZmVyZW5jZUl0ZXJhdG9yLFxuICBJdGVyYXRvclN5bmNocm9uaXplcixcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXJEZWxlZ2F0ZVxufSBmcm9tICcuL2xpYi9pdGVyYWJsZSc7XG4iXX0= +enifed('glimmer-reference/lib/const', ['exports', 'glimmer-reference/lib/validators'], function (exports, _glimmerReferenceLibValidators) { + 'use strict'; exports.isConst = isConst; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var CONST_REFERENCE = "503c5a44-e4a9-4bb5-85bc-102d35af6985"; - exports.CONST_REFERENCE = CONST_REFERENCE; - var ConstReference = (function () { function ConstReference(inner) { - _classCallCheck(this, ConstReference); - - this.tag = _glimmerReferenceLibValidators.CONSTANT_TAG; - this["503c5a44-e4a9-4bb5-85bc-102d35af6985"] = true; this.inner = inner; + this.tag = _glimmerReferenceLibValidators.CONSTANT_TAG; } ConstReference.prototype.value = function value() { return this.inner; }; @@ -12948,29 +13875,21 @@ })(); exports.ConstReference = ConstReference; function isConst(reference) { - return !!reference[CONST_REFERENCE]; + return reference.tag === _glimmerReferenceLibValidators.CONSTANT_TAG; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSU8sUUFBTSxlQUFlLEdBQUcsc0NBQXNDLENBQUM7OztRQUV0RSxjQUFBO0FBTUUsaUJBTkYsY0FBQSxDQU1jLEtBQVEsRUFBQTtrQ0FOdEIsY0FBQTs7QUFFUyxnQkFBQSxDQUFBLEdBQUcsa0NBUkgsWUFBWSxBQVFNLENBQUM7QUFFbkIsZ0JBQUEsQ0FBQSxzQ0FBQSxDQUFzQyxHQUFHLElBQUksQ0FBQztBQUduRCxnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7O0FBUkgsc0JBQUEsV0FVRSxLQUFLLEdBQUEsaUJBQUE7QUFBUSxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUU7O2VBVm5DLGNBQUE7Ozs7O0FBYUEsYUFBQSxPQUFBLENBQXdCLFNBQTRCLEVBQUE7QUFDbEQsZUFBTyxDQUFDLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3JDIiwiZmlsZSI6ImNvbnN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBWZXJzaW9uZWRSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IFJlZmVyZW5jZSBmcm9tICcuL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY29uc3QgQ09OU1RfUkVGRVJFTkNFID0gXCI1MDNjNWE0NC1lNGE5LTRiYjUtODViYy0xMDJkMzVhZjY5ODVcIjtcblxuZXhwb3J0IGNsYXNzIENvbnN0UmVmZXJlbmNlPFQ+IGltcGxlbWVudHMgVmVyc2lvbmVkUmVmZXJlbmNlPFQ+IHtcbiAgcHJvdGVjdGVkIGlubmVyOiBUO1xuICBwdWJsaWMgdGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIHB1YmxpYyBcIjUwM2M1YTQ0LWU0YTktNGJiNS04NWJjLTEwMmQzNWFmNjk4NVwiID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihpbm5lcjogVCkge1xuICAgIHRoaXMuaW5uZXIgPSBpbm5lcjtcbiAgfVxuXG4gIHZhbHVlKCk6IFQgeyByZXR1cm4gdGhpcy5pbm5lcjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25zdChyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogYm9vbGVhbiB7XG4gIHJldHVybiAhIXJlZmVyZW5jZVtDT05TVF9SRUZFUkVOQ0VdO1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQUdNLGNBQUE7QUFHSixpQkFISSxjQUFBLENBR2tCLEtBQVEsRUFBQTtBQUFSLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBRztBQUZ2QixnQkFBQSxDQUFBLEdBQUcsa0NBSkgsWUFBWSxBQUlNLENBQUM7U0FFUzs7QUFIL0Isc0JBQUEsV0FLSixLQUFLLEdBQUEsaUJBQUE7QUFBUSxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUU7O2VBTDdCLGNBQUE7Ozs7O0FBUUEsYUFBQSxPQUFBLENBQWtCLFNBQXFDLEVBQUE7QUFDM0QsZUFBTyxTQUFTLENBQUMsR0FBRyxvQ0FaYixZQUFZLEFBWWtCLENBQUM7S0FDdkMiLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT05TVEFOVF9UQUcsIFZlcnNpb25lZFJlZmVyZW5jZSB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ29uc3RSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBWZXJzaW9uZWRSZWZlcmVuY2U8VD4ge1xuICBwdWJsaWMgdGFnID0gQ09OU1RBTlRfVEFHO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbm5lcjogVCkgeyB9XG5cbiAgdmFsdWUoKTogVCB7IHJldHVybiB0aGlzLmlubmVyOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0KHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPE9wYXF1ZT4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZmVyZW5jZS50YWcgPT09IENPTlNUQU5UX1RBRztcbn1cbiJdfQ== enifed("glimmer-reference/lib/iterable", ["exports", "glimmer-util"], function (exports, _glimmerUtil) { "use strict"; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var ListItem = (function (_ListNode) { - _inherits(ListItem, _ListNode); + babelHelpers.inherits(ListItem, _ListNode); function ListItem(iterable, result) { - _classCallCheck(this, ListItem); - _ListNode.call(this, iterable.valueReferenceFor(result)); this.retained = false; this.seen = false; this.key = result.key; this.iterable = iterable; @@ -12995,12 +13914,10 @@ return ListItem; })(_glimmerUtil.ListNode); var IterationArtifacts = (function () { function IterationArtifacts(iterable) { - _classCallCheck(this, IterationArtifacts); - this.map = _glimmerUtil.dict(); this.list = new _glimmerUtil.LinkedList(); this.tag = iterable.tag; this.iterable = iterable; } @@ -13081,12 +13998,10 @@ var ReferenceIterator = (function () { // if anyone needs to construct this object with something other than // an iterable, let @wycats know. function ReferenceIterator(iterable) { - _classCallCheck(this, ReferenceIterator); - this.iterator = null; var artifacts = new IterationArtifacts(iterable); this.artifacts = artifacts; } @@ -13114,12 +14029,10 @@ var IteratorSynchronizer = (function () { function IteratorSynchronizer(_ref) { var target = _ref.target; var artifacts = _ref.artifacts; - _classCallCheck(this, IteratorSynchronizer); - this.target = target; this.artifacts = artifacts; this.iterator = artifacts.iterate(); this.current = artifacts.head(); } @@ -13239,11 +14152,11 @@ return IteratorSynchronizer; })(); exports.IteratorSynchronizer = IteratorSynchronizer; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9pdGVyYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFnQ0EsUUFBQTtrQkFBQSxRQUFBOztBQU9FLGlCQVBGLFFBQUEsQ0FPYyxRQUF3QixFQUFFLE1BQTJCLEVBQUE7a0NBUG5FLFFBQUE7O0FBUUksaUNBQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFMckMsZ0JBQUEsQ0FBQSxRQUFRLEdBQVksS0FBSyxDQUFDO0FBQzFCLGdCQUFBLENBQUEsSUFBSSxHQUFZLEtBQUssQ0FBQztBQUszQixnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBNkMsQ0FBQztBQUNoRSxnQkFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9DOztBQVpILGdCQUFBLFdBY0UsTUFBTSxHQUFBLGdCQUFDLElBQXlCLEVBQUE7QUFDOUIsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLGdCQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckQsZ0JBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwRDs7QUFsQkgsZ0JBQUEsV0FvQkUsWUFBWSxHQUFBLHdCQUFBO0FBQ1YsbUJBQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZCOztBQXRCSCxnQkFBQSxXQXdCRSxLQUFLLEdBQUEsaUJBQUE7QUFDSCxnQkFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25COztlQTNCSCxRQUFBO29CQWhDNEIs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Z0JBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV4QyxnQkFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7QUFDdkIseUJBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsc0JBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCLE1BQU07QUFDTCxvQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7QUFFRCxtQkFBTyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3BCOztBQWpISCw0QkFBQSxXQW1IVSxRQUFRLEdBQUEsb0JBQUE7QUFDZCxnQkFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjs7ZUFySEgsb0JBQUEiLCJmaWxlIjoiaXRlcmFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGSVhNRSwgTGlua2VkTGlzdCwgTGlzdE5vZGUsIEludGVybmVkU3RyaW5nLCBPcGFxdWUsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSBhcyBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0aW9uSXRlbTxULCBVPiB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogVDtcbiAgbWVtbzogVTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEl0ZXJhdG9yPFQsIFUsIFYgZXh0ZW5kcyBJdGVyYXRpb25JdGVtPFQsIFU+PiB7XG4gIGlzRW1wdHkoKTogYm9vbGVhbjtcbiAgbmV4dCgpOiBWO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0SXRlcmFibGU8VCwgVSwgSXRlbVR5cGUgZXh0ZW5kcyBJdGVyYXRpb25JdGVtPFQsIFU+LCBWYWx1ZVJlZmVyZW5jZVR5cGUgZXh0ZW5kcyBQYXRoUmVmZXJlbmNlPFQ+LCBNZW1vUmVmZXJlbmNlVHlwZSBleHRlbmRzIFBhdGhSZWZlcmVuY2U8VT4+IHtcbiAgdGFnOiBSZXZpc2lvblRhZztcbiAgaXRlcmF0ZSgpOiBBYnN0cmFjdEl0ZXJhdG9yPFQsIFUsIEl0ZW1UeXBlPjtcblxuICB2YWx1ZVJlZmVyZW5jZUZvcihpdGVtOiBJdGVtVHlwZSk6IFZhbHVlUmVmZXJlbmNlVHlwZTtcbiAgdXBkYXRlVmFsdWVSZWZlcmVuY2UocmVmZXJlbmNlOiBWYWx1ZVJlZmVyZW5jZVR5cGUsIGl0ZW06IEl0ZW1UeXBlKTtcblxuICBtZW1vUmVmZXJlbmNlRm9yKGl0ZW06IEl0ZW1UeXBlKTogTWVtb1JlZmVyZW5jZVR5cGU7XG4gIHVwZGF0ZU1lbW9SZWZlcmVuY2UocmVmZXJlbmNlOiBNZW1vUmVmZXJlbmNlVHlwZSwgaXRlbTogSXRlbVR5cGUpO1xufVxuXG5leHBvcnQgdHlwZSBJdGVyYXRvcjxULCBVPiA9IEFic3RyYWN0SXRlcmF0b3I8VCwgVSwgSXRlcmF0aW9uSXRlbTxULCBVPj47XG5leHBvcnQgdHlwZSBJdGVyYWJsZTxULCBVPiA9IEFic3RyYWN0SXRlcmFibGU8VCwgVSwgSXRlcmF0aW9uSXRlbTxULCBVPiwgUGF0aFJlZmVyZW5jZTxUPiwgUGF0aFJlZmVyZW5jZTxVPj47XG5cbnR5cGUgT3BhcXVlSXRlcmF0aW9uSXRlbSA9IEl0ZXJhdGlvbkl0ZW08T3BhcXVlLCBPcGFxdWU+O1xuZXhwb3J0IHR5cGUgT3BhcXVlSXRlcmF0b3IgPSBBYnN0cmFjdEl0ZXJhdG9yPE9wYXF1ZSwgT3BhcXVlLCBPcGFxdWVJdGVyYXRpb25JdGVtPjtcbmV4cG9ydCB0eXBlIE9wYXF1ZUl0ZXJhYmxlID0gQWJzdHJhY3RJdGVyYWJsZTxPcGFxdWUsIE9wYXF1ZSwgT3BhcXVlSXRlcmF0aW9uSXRlbSwgUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+O1xuXG5jbGFzcyBMaXN0SXRlbSBleHRlbmRzIExpc3ROb2RlPFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4gaW1wbGVtZW50cyBJdGVyYXRpb25JdGVtPFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgUGF0aFJlZmVyZW5jZTxPcGFxdWU+PiB7XG4gIHB1YmxpYyBrZXk6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBwdWJsaWMgcmV0YWluZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNlZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpdGVyYWJsZTogT3BhcXVlSXRlcmFibGU7XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IE9wYXF1ZUl0ZXJhYmxlLCByZXN1bHQ6IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pIHtcbiAgICBzdXBlcihpdGVyYWJsZS52YWx1ZVJlZmVyZW5jZUZvcihyZXN1bHQpKTtcbiAgICB0aGlzLmtleSA9IHJlc3VsdC5rZXkgYXMgRklYTUU8J3VzZXIgc3RyaW5nIHRvIEludGVybmVkU3RyaW5nJz47XG4gICAgdGhpcy5pdGVyYWJsZSA9IGl0ZXJhYmxlO1xuICAgIHRoaXMubWVtbyA9IGl0ZXJhYmxlLm1lbW9SZWZlcmVuY2VGb3IocmVzdWx0KTtcbiAgfVxuXG4gIHVwZGF0ZShpdGVtOiBPcGFxdWVJdGVyYXRpb25JdGVtKSB7XG4gICAgdGhpcy5yZXRhaW5lZCA9IHRydWU7XG4gICAgdGhpcy5pdGVyYWJsZS51cGRhdGVWYWx1ZVJlZmVyZW5jZSh0aGlzLnZhbHVlLCBpdGVtKTtcbiAgICB0aGlzLml0ZXJhYmxlLnVwZGF0ZU1lbW9SZWZlcmVuY2UodGhpcy5tZW1vLCBpdGVtKTtcbiAgfVxuXG4gIHNob3VsZFJlbW92ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucmV0YWluZWQ7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnJldGFpbmVkID0gZmFsc2U7XG4gICAgdGhpcy5zZWVuID0gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEl0ZXJhdGlvbkFydGlmYWN0cyB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgaXRlcmFibGU6IE9wYXF1ZUl0ZXJhYmxlO1xuICBwcml2YXRlIGl0ZXJhdG9yOiBPcGFxdWVJdGVyYXRvcjtcbiAgcHJpdmF0ZSBtYXAgPSBkaWN0PExpc3RJdGVtPigpO1xuICBwcml2YXRlIGxpc3QgPSBuZXcgTGlua2VkTGlzdDxMaXN0SXRlbT4oKTtcblxuICBjb25zdHJ1Y3RvcihpdGVyYWJsZTogT3BhcXVlSXRlcmFibGUpIHtcbiAgICB0aGlzLnRhZyA9IGl0ZXJhYmxlLnRhZztcbiAgICB0aGlzLml0ZXJhYmxlID0gaXRlcmFibGU7XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGxldCBpdGVyYXRvciA9IHRoaXMuaXRlcmF0b3IgPSB0aGlzLml0ZXJhYmxlLml0ZXJhdGUoKTtcbiAgICByZXR1cm4gaXRlcmF0b3IuaXNFbXB0eSgpO1xuICB9XG5cbiAgaXRlcmF0ZSgpOiBPcGFxdWVJdGVyYXRvciB7XG4gICAgbGV0IGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvciB8fCB0aGlzLml0ZXJhYmxlLml0ZXJhdGUoKTtcbiAgICB0aGlzLml0ZXJhdG9yID0gbnVsbDtcblxuICAgIHJldHVybiBpdGVyYXRvcjtcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubWFwW2tleV07XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBMaXN0SXRlbSB7XG4gICAgcmV0dXJuIHRoaXMubWFwW2tleV07XG4gIH1cblxuICB3YXNTZWVuKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLm1hcFtrZXldO1xuICAgIHJldHVybiBub2RlICYmIG5vZGUuc2VlbjtcbiAgfVxuXG4gIGFwcGVuZChpdGVtOiBPcGFxdWVJdGVyYXRpb25JdGVtKTogTGlzdEl0ZW0ge1xuICAgIGxldCB7IG1hcCwgbGlzdCwgaXRlcmFibGUgfSA9IHRoaXM7XG4gICAgbGV0IG5vZGUgPSBtYXBbaXRlbS5rZXldID0gbmV3IExpc3RJdGVtKGl0ZXJhYmxlLCBpdGVtKTtcblxuICAgIGxpc3QuYXBwZW5kKG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0sIHJlZmVyZW5jZTogTGlzdEl0ZW0pOiBMaXN0SXRlbSB7XG4gICAgbGV0IHsgbWFwLCBsaXN0LCBpdGVyYWJsZSB9ID0gdGhpcztcblxuICAgIGxldCBub2RlID0gbWFwW2l0ZW0ua2V5XSA9IG5ldyBMaXN0SXRlbShpdGVyYWJsZSwgaXRlbSk7XG4gICAgbm9kZS5yZXRhaW5lZCA9IHRydWU7XG4gICAgbGlzdC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIG1vdmUoaXRlbTogTGlzdEl0ZW0sIHJlZmVyZW5jZTogTGlzdEl0ZW0pIHtcbiAgICBsZXQgeyBsaXN0IH0gPSB0aGlzO1xuXG4gICAgaXRlbS5yZXRhaW5lZCA9IHRydWU7XG4gICAgbGlzdC5yZW1vdmUoaXRlbSk7XG4gICAgbGlzdC5pbnNlcnRCZWZvcmUoaXRlbSwgcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBMaXN0SXRlbSkge1xuICAgIGxldCB7IGxpc3QgfSA9IHRoaXM7XG5cbiAgICBsaXN0LnJlbW92ZShpdGVtKTtcbiAgICBkZWxldGUgdGhpcy5tYXBbPHN0cmluZz5pdGVtLmtleV07XG4gIH1cblxuICBuZXh0Tm9kZShpdGVtOiBMaXN0SXRlbSkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubmV4dE5vZGUoaXRlbSk7XG4gIH1cblxuICBoZWFkKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QuaGVhZCgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VJdGVyYXRvciB7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcbiAgcHJpdmF0ZSBpdGVyYXRvcjogT3BhcXVlSXRlcmF0b3IgPSBudWxsO1xuXG4gIC8vIGlmIGFueW9uZSBuZWVkcyB0byBjb25zdHJ1Y3QgdGhpcyBvYmplY3Qgd2l0aCBzb21ldGhpbmcgb3RoZXIgdGhhblxuICAvLyBhbiBpdGVyYWJsZSwgbGV0IEB3eWNhdHMga25vdy5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IE9wYXF1ZUl0ZXJhYmxlKSB7XG4gICAgbGV0IGFydGlmYWN0cyA9IG5ldyBJdGVyYXRpb25BcnRpZmFjdHMoaXRlcmFibGUpO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICB9XG5cbiAgbmV4dCgpOiBMaXN0SXRlbSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzIH0gPSB0aGlzO1xuXG4gICAgbGV0IGl0ZXJhdG9yID0gKHRoaXMuaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yIHx8IGFydGlmYWN0cy5pdGVyYXRlKCkpO1xuXG4gICAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGFydGlmYWN0cy5hcHBlbmQoaXRlbSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcmV0YWluKGtleTogSW50ZXJuZWRTdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KTtcbiAgaW5zZXJ0KGtleTogSW50ZXJuZWRTdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IEludGVybmVkU3RyaW5nKTtcbiAgbW92ZShrZXk6IEludGVybmVkU3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBJbnRlcm5lZFN0cmluZyk7XG4gIGRlbGV0ZShrZXk6IEludGVybmVkU3RyaW5nKTtcbiAgZG9uZSgpO1xufVxuXG5pbnRlcmZhY2UgSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zIHtcbiAgdGFyZ2V0OiBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlO1xuICBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcbn1cblxuZW51bSBQaGFzZSB7XG4gIEFwcGVuZCxcbiAgUHJ1bmUsXG4gIERvbmVcbn1cblxuZXhwb3J0IGNsYXNzIEl0ZXJhdG9yU3luY2hyb25pemVyIHtcbiAgcHJpdmF0ZSB0YXJnZXQ6IEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGU7XG4gIHByaXZhdGUgaXRlcmF0b3I6IE9wYXF1ZUl0ZXJhdG9yO1xuICBwcml2YXRlIGN1cnJlbnQ6IExpc3RJdGVtO1xuICBwcml2YXRlIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGFyZ2V0LCBhcnRpZmFjdHMgfTogSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zKSB7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgdGhpcy5hcnRpZmFjdHMgPSBhcnRpZmFjdHM7XG4gICAgdGhpcy5pdGVyYXRvciA9IGFydGlmYWN0cy5pdGVyYXRlKCk7XG4gICAgdGhpcy5jdXJyZW50ID0gYXJ0aWZhY3RzLmhlYWQoKTtcbiAgfVxuXG4gIHN5bmMoKSB7XG4gICAgbGV0IHBoYXNlOiBQaGFzZSA9IFBoYXNlLkFwcGVuZDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgICAgIGNhc2UgUGhhc2UuQXBwZW5kOiBwaGFzZSA9IHRoaXMubmV4dEFwcGVuZCgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5QcnVuZTogcGhhc2UgPSB0aGlzLm5leHRQcnVuZSgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5Eb25lOiB0aGlzLm5leHREb25lKCk7IHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkdmFuY2VUb0tleShrZXk6IEludGVybmVkU3RyaW5nKSB7XG4gICAgbGV0IHsgY3VycmVudCwgYXJ0aWZhY3RzIH0gPSB0aGlzO1xuXG4gICAgbGV0IHNlZWsgPSBjdXJyZW50O1xuXG4gICAgd2hpbGUgKHNlZWsgJiYgc2Vlay5rZXkgIT09IGtleSkge1xuICAgICAgc2Vlay5zZWVuID0gdHJ1ZTtcbiAgICAgIHNlZWsgPSBhcnRpZmFjdHMubmV4dE5vZGUoc2Vlayk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50ID0gc2VlayAmJiBhcnRpZmFjdHMubmV4dE5vZGUoc2Vlayk7XG4gIH1cblxuICBwcml2YXRlIG5leHRBcHBlbmQoKTogUGhhc2Uge1xuICAgIGxldCB7IGl0ZXJhdG9yLCBjdXJyZW50LCBhcnRpZmFjdHMgfSA9IHRoaXM7XG5cbiAgICBsZXQgaXRlbSA9IGl0ZXJhdG9yLm5leHQoKTtcblxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydFBydW5lKCk7XG4gICAgfVxuXG4gICAgbGV0IHsga2V5IH0gPSBpdGVtO1xuXG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudC5rZXkgPT09IGtleSkge1xuICAgICAgdGhpcy5uZXh0UmV0YWluKGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAoYXJ0aWZhY3RzLmhhcyhrZXkpKSB7XG4gICAgICB0aGlzLm5leHRNb3ZlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRJbnNlcnQoaXRlbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFBoYXNlLkFwcGVuZDtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFJldGFpbihpdGVtOiBPcGFxdWVJdGVyYXRpb25JdGVtKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBjdXJyZW50IH0gPSB0aGlzO1xuXG4gICAgY3VycmVudC51cGRhdGUoaXRlbSk7XG4gICAgdGhpcy5jdXJyZW50ID0gYXJ0aWZhY3RzLm5leHROb2RlKGN1cnJlbnQpO1xuICAgIHRoaXMudGFyZ2V0LnJldGFpbihpdGVtLmtleSBhcyBGSVhNRTwndXNlciBzdHJpbmcgdG8gSW50ZXJuZWRTdHJpbmcnPiwgY3VycmVudC52YWx1ZSwgY3VycmVudC5tZW1vKTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dE1vdmUoaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIGxldCB7IGN1cnJlbnQsIGFydGlmYWN0cywgdGFyZ2V0IH0gPSB0aGlzO1xuICAgIGxldCB7IGtleSB9ID0gaXRlbTtcblxuICAgIGxldCBmb3VuZCA9IGFydGlmYWN0cy5nZXQoaXRlbS5rZXkpO1xuICAgIGZvdW5kLnVwZGF0ZShpdGVtKTtcblxuICAgIGlmIChhcnRpZmFjdHMud2FzU2VlbihpdGVtLmtleSkpIHtcbiAgICAgIGFydGlmYWN0cy5tb3ZlKGZvdW5kLCBjdXJyZW50KTtcbiAgICAgIHRhcmdldC5tb3ZlKGZvdW5kLmtleSwgZm91bmQudmFsdWUsIGZvdW5kLm1lbW8sIGN1cnJlbnQgPyBjdXJyZW50LmtleSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkdmFuY2VUb0tleShrZXkgYXMgRklYTUU8J3VzZXIgc3RyaW5nIHRvIEludGVybmVkU3RyaW5nJz4pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmV4dEluc2VydChpdGVtOiBPcGFxdWVJdGVyYXRpb25JdGVtKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCB0YXJnZXQsIGN1cnJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgbm9kZSA9IGFydGlmYWN0cy5pbnNlcnRCZWZvcmUoaXRlbSwgY3VycmVudCk7XG4gICAgdGFyZ2V0Lmluc2VydChub2RlLmtleSwgbm9kZS52YWx1ZSwgbm9kZS5tZW1vLCBjdXJyZW50ID8gY3VycmVudC5rZXkgOiBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQcnVuZSgpOiBQaGFzZSB7XG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5hcnRpZmFjdHMuaGVhZCgpO1xuICAgIHJldHVybiBQaGFzZS5QcnVuZTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFBydW5lKCk6IFBoYXNlIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMsIHRhcmdldCwgY3VycmVudCB9ID0gdGhpcztcblxuICAgIGlmIChjdXJyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gUGhhc2UuRG9uZTtcbiAgICB9XG5cbiAgICBsZXQgbm9kZSA9IGN1cnJlbnQ7XG4gICAgdGhpcy5jdXJyZW50ID0gYXJ0aWZhY3RzLm5leHROb2RlKG5vZGUpO1xuXG4gICAgaWYgKG5vZGUuc2hvdWxkUmVtb3ZlKCkpIHtcbiAgICAgIGFydGlmYWN0cy5yZW1vdmUobm9kZSk7XG4gICAgICB0YXJnZXQuZGVsZXRlKG5vZGUua2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHJldHVybiBQaGFzZS5QcnVuZTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dERvbmUoKSB7XG4gICAgdGhpcy50YXJnZXQuZG9uZSgpO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9pdGVyYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFnQ0EsUUFBZTs4QkFBZixRQUFlOztBQU9iLGlCQVBGLFFBQWUsQ0FPRCxRQUF3QixFQUFFLE1BQTJCLEVBQUE7QUFDL0QsaUNBQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFMckMsZ0JBQUEsQ0FBQSxRQUFRLEdBQVksS0FBSyxDQUFDO0FBQzFCLGdCQUFBLENBQUEsSUFBSSxHQUFZLEtBQUssQ0FBQztBQUszQixnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3RCLGdCQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUN6QixnQkFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0M7O0FBWkgsZ0JBQWUsV0FjYixNQUFNLEdBQUEsZ0JBQUMsSUFBeUIsRUFBQTtBQUM5QixnQkFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDckIsZ0JBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxnQkFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BEOztBQWxCSCxnQkFBZSxXQW9CYixZQUFZLEdBQUEsd0JBQUE7QUFDVixtQkFBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkI7O0FBdEJILGdCQUFlLFdBd0JiLEtBQUssR0FBQSxpQkFBQTtBQUNILGdCQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN0QixnQkFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7O2VBM0JILFFBQWU7b0JBaENNLFFBQVE7O1FBOER2QixrQkFBQTtB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QkFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7QUFDdkIseUJBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsc0JBQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCLE1BQU07QUFDTCxvQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7QUFFRCxtQkFBTyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3BCOztBQWpIRyw0QkFBQSxXQW1ISSxRQUFRLEdBQUEsb0JBQUE7QUFDZCxnQkFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjs7ZUFySEcsb0JBQUEiLCJmaWxlIjoiaXRlcmFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rZWRMaXN0LCBMaXN0Tm9kZSwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgYXMgUGF0aFJlZmVyZW5jZSwgUmV2aXNpb25UYWcgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkl0ZW08VCwgVT4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IFQ7XG4gIG1lbW86IFU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RJdGVyYXRvcjxULCBVLCBWIGV4dGVuZHMgSXRlcmF0aW9uSXRlbTxULCBVPj4ge1xuICBpc0VtcHR5KCk6IGJvb2xlYW47XG4gIG5leHQoKTogVjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEl0ZXJhYmxlPFQsIFUsIEl0ZW1UeXBlIGV4dGVuZHMgSXRlcmF0aW9uSXRlbTxULCBVPiwgVmFsdWVSZWZlcmVuY2VUeXBlIGV4dGVuZHMgUGF0aFJlZmVyZW5jZTxUPiwgTWVtb1JlZmVyZW5jZVR5cGUgZXh0ZW5kcyBQYXRoUmVmZXJlbmNlPFU+PiB7XG4gIHRhZzogUmV2aXNpb25UYWc7XG4gIGl0ZXJhdGUoKTogQWJzdHJhY3RJdGVyYXRvcjxULCBVLCBJdGVtVHlwZT47XG5cbiAgdmFsdWVSZWZlcmVuY2VGb3IoaXRlbTogSXRlbVR5cGUpOiBWYWx1ZVJlZmVyZW5jZVR5cGU7XG4gIHVwZGF0ZVZhbHVlUmVmZXJlbmNlKHJlZmVyZW5jZTogVmFsdWVSZWZlcmVuY2VUeXBlLCBpdGVtOiBJdGVtVHlwZSk7XG5cbiAgbWVtb1JlZmVyZW5jZUZvcihpdGVtOiBJdGVtVHlwZSk6IE1lbW9SZWZlcmVuY2VUeXBlO1xuICB1cGRhdGVNZW1vUmVmZXJlbmNlKHJlZmVyZW5jZTogTWVtb1JlZmVyZW5jZVR5cGUsIGl0ZW06IEl0ZW1UeXBlKTtcbn1cblxuZXhwb3J0IHR5cGUgSXRlcmF0b3I8VCwgVT4gPSBBYnN0cmFjdEl0ZXJhdG9yPFQsIFUsIEl0ZXJhdGlvbkl0ZW08VCwgVT4+O1xuZXhwb3J0IHR5cGUgSXRlcmFibGU8VCwgVT4gPSBBYnN0cmFjdEl0ZXJhYmxlPFQsIFUsIEl0ZXJhdGlvbkl0ZW08VCwgVT4sIFBhdGhSZWZlcmVuY2U8VD4sIFBhdGhSZWZlcmVuY2U8VT4+O1xuXG50eXBlIE9wYXF1ZUl0ZXJhdGlvbkl0ZW0gPSBJdGVyYXRpb25JdGVtPE9wYXF1ZSwgT3BhcXVlPjtcbmV4cG9ydCB0eXBlIE9wYXF1ZUl0ZXJhdG9yID0gQWJzdHJhY3RJdGVyYXRvcjxPcGFxdWUsIE9wYXF1ZSwgT3BhcXVlSXRlcmF0aW9uSXRlbT47XG5leHBvcnQgdHlwZSBPcGFxdWVJdGVyYWJsZSA9IEFic3RyYWN0SXRlcmFibGU8T3BhcXVlLCBPcGFxdWUsIE9wYXF1ZUl0ZXJhdGlvbkl0ZW0sIFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgUGF0aFJlZmVyZW5jZTxPcGFxdWU+PjtcblxuY2xhc3MgTGlzdEl0ZW0gZXh0ZW5kcyBMaXN0Tm9kZTxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+IGltcGxlbWVudHMgSXRlcmF0aW9uSXRlbTxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4ge1xuICBwdWJsaWMga2V5OiBzdHJpbmc7XG4gIHB1YmxpYyBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIHB1YmxpYyByZXRhaW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGl0ZXJhYmxlOiBPcGFxdWVJdGVyYWJsZTtcblxuICBjb25zdHJ1Y3RvcihpdGVyYWJsZTogT3BhcXVlSXRlcmFibGUsIHJlc3VsdDogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIHN1cGVyKGl0ZXJhYmxlLnZhbHVlUmVmZXJlbmNlRm9yKHJlc3VsdCkpO1xuICAgIHRoaXMua2V5ID0gcmVzdWx0LmtleTtcbiAgICB0aGlzLml0ZXJhYmxlID0gaXRlcmFibGU7XG4gICAgdGhpcy5tZW1vID0gaXRlcmFibGUubWVtb1JlZmVyZW5jZUZvcihyZXN1bHQpO1xuICB9XG5cbiAgdXBkYXRlKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pIHtcbiAgICB0aGlzLnJldGFpbmVkID0gdHJ1ZTtcbiAgICB0aGlzLml0ZXJhYmxlLnVwZGF0ZVZhbHVlUmVmZXJlbmNlKHRoaXMudmFsdWUsIGl0ZW0pO1xuICAgIHRoaXMuaXRlcmFibGUudXBkYXRlTWVtb1JlZmVyZW5jZSh0aGlzLm1lbW8sIGl0ZW0pO1xuICB9XG5cbiAgc2hvdWxkUmVtb3ZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yZXRhaW5lZDtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmV0YWluZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlZW4gPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSXRlcmF0aW9uQXJ0aWZhY3RzIHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgcHJpdmF0ZSBpdGVyYWJsZTogT3BhcXVlSXRlcmFibGU7XG4gIHByaXZhdGUgaXRlcmF0b3I6IE9wYXF1ZUl0ZXJhdG9yO1xuICBwcml2YXRlIG1hcCA9IGRpY3Q8TGlzdEl0ZW0+KCk7XG4gIHByaXZhdGUgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PExpc3RJdGVtPigpO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZXJhYmxlOiBPcGFxdWVJdGVyYWJsZSkge1xuICAgIHRoaXMudGFnID0gaXRlcmFibGUudGFnO1xuICAgIHRoaXMuaXRlcmFibGUgPSBpdGVyYWJsZTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgbGV0IGl0ZXJhdG9yID0gdGhpcy5pdGVyYXRvciA9IHRoaXMuaXRlcmFibGUuaXRlcmF0ZSgpO1xuICAgIHJldHVybiBpdGVyYXRvci5pc0VtcHR5KCk7XG4gIH1cblxuICBpdGVyYXRlKCk6IE9wYXF1ZUl0ZXJhdG9yIHtcbiAgICBsZXQgaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yIHx8IHRoaXMuaXRlcmFibGUuaXRlcmF0ZSgpO1xuICAgIHRoaXMuaXRlcmF0b3IgPSBudWxsO1xuXG4gICAgcmV0dXJuIGl0ZXJhdG9yO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tYXBba2V5XTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IExpc3RJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5tYXBba2V5XTtcbiAgfVxuXG4gIHdhc1NlZW4oa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMubWFwW2tleV07XG4gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5zZWVuO1xuICB9XG5cbiAgYXBwZW5kKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pOiBMaXN0SXRlbSB7XG4gICAgbGV0IHsgbWFwLCBsaXN0LCBpdGVyYWJsZSB9ID0gdGhpcztcbiAgICBsZXQgbm9kZSA9IG1hcFtpdGVtLmtleV0gPSBuZXcgTGlzdEl0ZW0oaXRlcmFibGUsIGl0ZW0pO1xuXG4gICAgbGlzdC5hcHBlbmQobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpbnNlcnRCZWZvcmUoaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSwgcmVmZXJlbmNlOiBMaXN0SXRlbSk6IExpc3RJdGVtIHtcbiAgICBsZXQgeyBtYXAsIGxpc3QsIGl0ZXJhYmxlIH0gPSB0aGlzO1xuXG4gICAgbGV0IG5vZGUgPSBtYXBbaXRlbS5rZXldID0gbmV3IExpc3RJdGVtKGl0ZXJhYmxlLCBpdGVtKTtcbiAgICBub2RlLnJldGFpbmVkID0gdHJ1ZTtcbiAgICBsaXN0Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgbW92ZShpdGVtOiBMaXN0SXRlbSwgcmVmZXJlbmNlOiBMaXN0SXRlbSkge1xuICAgIGxldCB7IGxpc3QgfSA9IHRoaXM7XG5cbiAgICBpdGVtLnJldGFpbmVkID0gdHJ1ZTtcbiAgICBsaXN0LnJlbW92ZShpdGVtKTtcbiAgICBsaXN0Lmluc2VydEJlZm9yZShpdGVtLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgcmVtb3ZlKGl0ZW06IExpc3RJdGVtKSB7XG4gICAgbGV0IHsgbGlzdCB9ID0gdGhpcztcblxuICAgIGxpc3QucmVtb3ZlKGl0ZW0pO1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtpdGVtLmtleV07XG4gIH1cblxuICBuZXh0Tm9kZShpdGVtOiBMaXN0SXRlbSkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubmV4dE5vZGUoaXRlbSk7XG4gIH1cblxuICBoZWFkKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QuaGVhZCgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VJdGVyYXRvciB7XG4gIHB1YmxpYyBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcbiAgcHJpdmF0ZSBpdGVyYXRvcjogT3BhcXVlSXRlcmF0b3IgPSBudWxsO1xuXG4gIC8vIGlmIGFueW9uZSBuZWVkcyB0byBjb25zdHJ1Y3QgdGhpcyBvYmplY3Qgd2l0aCBzb21ldGhpbmcgb3RoZXIgdGhhblxuICAvLyBhbiBpdGVyYWJsZSwgbGV0IEB3eWNhdHMga25vdy5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IE9wYXF1ZUl0ZXJhYmxlKSB7XG4gICAgbGV0IGFydGlmYWN0cyA9IG5ldyBJdGVyYXRpb25BcnRpZmFjdHMoaXRlcmFibGUpO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICB9XG5cbiAgbmV4dCgpOiBMaXN0SXRlbSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzIH0gPSB0aGlzO1xuXG4gICAgbGV0IGl0ZXJhdG9yID0gKHRoaXMuaXRlcmF0b3IgPSB0aGlzLml0ZXJhdG9yIHx8IGFydGlmYWN0cy5pdGVyYXRlKCkpO1xuXG4gICAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGFydGlmYWN0cy5hcHBlbmQoaXRlbSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcmV0YWluKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPik7XG4gIGluc2VydChrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKTtcbiAgbW92ZShrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKTtcbiAgZGVsZXRlKGtleTogc3RyaW5nKTtcbiAgZG9uZSgpO1xufVxuXG5pbnRlcmZhY2UgSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zIHtcbiAgdGFyZ2V0OiBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlO1xuICBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cztcbn1cblxuZW51bSBQaGFzZSB7XG4gIEFwcGVuZCxcbiAgUHJ1bmUsXG4gIERvbmVcbn1cblxuZXhwb3J0IGNsYXNzIEl0ZXJhdG9yU3luY2hyb25pemVyIHtcbiAgcHJpdmF0ZSB0YXJnZXQ6IEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGU7XG4gIHByaXZhdGUgaXRlcmF0b3I6IE9wYXF1ZUl0ZXJhdG9yO1xuICBwcml2YXRlIGN1cnJlbnQ6IExpc3RJdGVtO1xuICBwcml2YXRlIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGFyZ2V0LCBhcnRpZmFjdHMgfTogSXRlcmF0b3JTeW5jaHJvbml6ZXJPcHRpb25zKSB7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgdGhpcy5hcnRpZmFjdHMgPSBhcnRpZmFjdHM7XG4gICAgdGhpcy5pdGVyYXRvciA9IGFydGlmYWN0cy5pdGVyYXRlKCk7XG4gICAgdGhpcy5jdXJyZW50ID0gYXJ0aWZhY3RzLmhlYWQoKTtcbiAgfVxuXG4gIHN5bmMoKSB7XG4gICAgbGV0IHBoYXNlOiBQaGFzZSA9IFBoYXNlLkFwcGVuZDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgICAgIGNhc2UgUGhhc2UuQXBwZW5kOiBwaGFzZSA9IHRoaXMubmV4dEFwcGVuZCgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5QcnVuZTogcGhhc2UgPSB0aGlzLm5leHRQcnVuZSgpOyBicmVhaztcbiAgICAgICAgY2FzZSBQaGFzZS5Eb25lOiB0aGlzLm5leHREb25lKCk7IHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkdmFuY2VUb0tleShrZXk6IHN0cmluZykge1xuICAgIGxldCB7IGN1cnJlbnQsIGFydGlmYWN0cyB9ID0gdGhpcztcblxuICAgIGxldCBzZWVrID0gY3VycmVudDtcblxuICAgIHdoaWxlIChzZWVrICYmIHNlZWsua2V5ICE9PSBrZXkpIHtcbiAgICAgIHNlZWsuc2VlbiA9IHRydWU7XG4gICAgICBzZWVrID0gYXJ0aWZhY3RzLm5leHROb2RlKHNlZWspO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudCA9IHNlZWsgJiYgYXJ0aWZhY3RzLm5leHROb2RlKHNlZWspO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0QXBwZW5kKCk6IFBoYXNlIHtcbiAgICBsZXQgeyBpdGVyYXRvciwgY3VycmVudCwgYXJ0aWZhY3RzIH0gPSB0aGlzO1xuXG4gICAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQcnVuZSgpO1xuICAgIH1cblxuICAgIGxldCB7IGtleSB9ID0gaXRlbTtcblxuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQua2V5ID09PSBrZXkpIHtcbiAgICAgIHRoaXMubmV4dFJldGFpbihpdGVtKTtcbiAgICB9IGVsc2UgaWYgKGFydGlmYWN0cy5oYXMoa2V5KSkge1xuICAgICAgdGhpcy5uZXh0TW92ZShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZXh0SW5zZXJ0KGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiBQaGFzZS5BcHBlbmQ7XG4gIH1cblxuICBwcml2YXRlIG5leHRSZXRhaW4oaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIGxldCB7IGFydGlmYWN0cywgY3VycmVudCB9ID0gdGhpcztcblxuICAgIGN1cnJlbnQudXBkYXRlKGl0ZW0pO1xuICAgIHRoaXMuY3VycmVudCA9IGFydGlmYWN0cy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICB0aGlzLnRhcmdldC5yZXRhaW4oaXRlbS5rZXksIGN1cnJlbnQudmFsdWUsIGN1cnJlbnQubWVtbyk7XG4gIH1cblxuICBwcml2YXRlIG5leHRNb3ZlKGl0ZW06IE9wYXF1ZUl0ZXJhdGlvbkl0ZW0pIHtcbiAgICBsZXQgeyBjdXJyZW50LCBhcnRpZmFjdHMsIHRhcmdldCB9ID0gdGhpcztcbiAgICBsZXQgeyBrZXkgfSA9IGl0ZW07XG5cbiAgICBsZXQgZm91bmQgPSBhcnRpZmFjdHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICBmb3VuZC51cGRhdGUoaXRlbSk7XG5cbiAgICBpZiAoYXJ0aWZhY3RzLndhc1NlZW4oaXRlbS5rZXkpKSB7XG4gICAgICBhcnRpZmFjdHMubW92ZShmb3VuZCwgY3VycmVudCk7XG4gICAgICB0YXJnZXQubW92ZShmb3VuZC5rZXksIGZvdW5kLnZhbHVlLCBmb3VuZC5tZW1vLCBjdXJyZW50ID8gY3VycmVudC5rZXkgOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZHZhbmNlVG9LZXkoa2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHRJbnNlcnQoaXRlbTogT3BhcXVlSXRlcmF0aW9uSXRlbSkge1xuICAgIGxldCB7IGFydGlmYWN0cywgdGFyZ2V0LCBjdXJyZW50IH0gPSB0aGlzO1xuXG4gICAgbGV0IG5vZGUgPSBhcnRpZmFjdHMuaW5zZXJ0QmVmb3JlKGl0ZW0sIGN1cnJlbnQpO1xuICAgIHRhcmdldC5pbnNlcnQobm9kZS5rZXksIG5vZGUudmFsdWUsIG5vZGUubWVtbywgY3VycmVudCA/IGN1cnJlbnQua2V5IDogbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UHJ1bmUoKTogUGhhc2Uge1xuICAgIHRoaXMuY3VycmVudCA9IHRoaXMuYXJ0aWZhY3RzLmhlYWQoKTtcbiAgICByZXR1cm4gUGhhc2UuUHJ1bmU7XG4gIH1cblxuICBwcml2YXRlIG5leHRQcnVuZSgpOiBQaGFzZSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCB0YXJnZXQsIGN1cnJlbnQgfSA9IHRoaXM7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFBoYXNlLkRvbmU7XG4gICAgfVxuXG4gICAgbGV0IG5vZGUgPSBjdXJyZW50O1xuICAgIHRoaXMuY3VycmVudCA9IGFydGlmYWN0cy5uZXh0Tm9kZShub2RlKTtcblxuICAgIGlmIChub2RlLnNob3VsZFJlbW92ZSgpKSB7XG4gICAgICBhcnRpZmFjdHMucmVtb3ZlKG5vZGUpO1xuICAgICAgdGFyZ2V0LmRlbGV0ZShub2RlLmtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUucmVzZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUGhhc2UuUHJ1bmU7XG4gIH1cblxuICBwcml2YXRlIG5leHREb25lKCkge1xuICAgIHRoaXMudGFyZ2V0LmRvbmUoKTtcbiAgfVxufVxuIl19 enifed("glimmer-reference/lib/reference", ["exports"], function (exports) { "use strict"; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi9yZWZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJyZWZlcmVuY2UuanMiLCJzb3VyY2VzQ29udGVudCI6W119 enifed("glimmer-reference/lib/utils", ["exports"], function (exports) { @@ -13257,37 +14170,28 @@ reference = reference.get(parts[i]); } return reference; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLGFBQUEsa0JBQUEsQ0FBbUMsSUFBb0MsRUFBRSxLQUF1QixFQUFBO0FBQzlGLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUVyQixhQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNqQyxxQkFBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckM7QUFFRCxlQUFPLFNBQVMsQ0FBQztLQUNsQiIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb25lZFBhdGhSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgSW50ZXJuZWRTdHJpbmcsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tUGFydHMocm9vdDogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBwYXJ0czogSW50ZXJuZWRTdHJpbmdbXSk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gIGxldCByZWZlcmVuY2UgPSByb290O1xuXG4gIGZvciAobGV0IGk9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZS5nZXQocGFydHNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdNLGFBQUEsa0JBQUEsQ0FBNkIsSUFBb0MsRUFBRSxLQUFlLEVBQUE7QUFDdEYsWUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBRXJCLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pDLHFCQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQztBQUVELGVBQU8sU0FBUyxDQUFDO0tBQ2xCIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZSB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlRnJvbVBhcnRzKHJvb3Q6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgcGFydHM6IHN0cmluZ1tdKTogVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IHJvb3Q7XG5cbiAgZm9yIChsZXQgaT0wOyBpPHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLmdldChwYXJ0c1tpXSk7XG4gIH1cblxuICByZXR1cm4gcmVmZXJlbmNlO1xufVxuIl19 enifed("glimmer-reference/lib/validators", ["exports"], function (exports) { "use strict"; exports.combineTagged = combineTagged; exports.combineSlice = combineSlice; exports.combine = combine; exports.map = map; exports.isModified = isModified; - - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var CONSTANT = 0; exports.CONSTANT = CONSTANT; var INITIAL = 1; exports.INITIAL = INITIAL; var VOLATILE = NaN; exports.VOLATILE = VOLATILE; var RevisionTag = (function () { - function RevisionTag() { - _classCallCheck(this, RevisionTag); - } + function RevisionTag() {} RevisionTag.prototype.validate = function validate(snapshot) { return this.value() === snapshot; }; @@ -13297,17 +14201,15 @@ exports.RevisionTag = RevisionTag; var $REVISION = INITIAL; var DirtyableTag = (function (_RevisionTag) { - _inherits(DirtyableTag, _RevisionTag); + babelHelpers.inherits(DirtyableTag, _RevisionTag); function DirtyableTag() { var revision = arguments.length <= 0 || arguments[0] === undefined ? $REVISION : arguments[0]; - _classCallCheck(this, DirtyableTag); - _RevisionTag.call(this); this.revision = revision; } DirtyableTag.prototype.value = function value() { @@ -13370,20 +14272,14 @@ } ; } var CachedTag = (function (_RevisionTag2) { - _inherits(CachedTag, _RevisionTag2); + babelHelpers.inherits(CachedTag, _RevisionTag2); function CachedTag() { - _classCallCheck(this, CachedTag); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _RevisionTag2.call.apply(_RevisionTag2, [this].concat(args)); + _RevisionTag2.apply(this, arguments); this.lastChecked = null; this.lastValue = null; } CachedTag.prototype.value = function value() { @@ -13405,15 +14301,13 @@ })(RevisionTag); exports.CachedTag = CachedTag; var TagsPair = (function (_CachedTag) { - _inherits(TagsPair, _CachedTag); + babelHelpers.inherits(TagsPair, _CachedTag); function TagsPair(first, second) { - _classCallCheck(this, TagsPair); - _CachedTag.call(this); this.first = first; this.second = second; } @@ -13423,15 +14317,13 @@ return TagsPair; })(CachedTag); var TagsCombinator = (function (_CachedTag2) { - _inherits(TagsCombinator, _CachedTag2); + babelHelpers.inherits(TagsCombinator, _CachedTag2); function TagsCombinator(tags) { - _classCallCheck(this, TagsCombinator); - _CachedTag2.call(this); this.tags = tags; } TagsCombinator.prototype.compute = function compute() { @@ -13447,15 +14339,13 @@ return TagsCombinator; })(CachedTag); var UpdatableTag = (function (_CachedTag3) { - _inherits(UpdatableTag, _CachedTag3); + babelHelpers.inherits(UpdatableTag, _CachedTag3); function UpdatableTag(tag) { - _classCallCheck(this, UpdatableTag); - _CachedTag3.call(this); this.tag = tag; this.lastUpdated = INITIAL; } @@ -13476,15 +14366,13 @@ return UpdatableTag; })(CachedTag); exports.UpdatableTag = UpdatableTag; var CONSTANT_TAG = new ((function (_RevisionTag3) { - _inherits(ConstantTag, _RevisionTag3); + babelHelpers.inherits(ConstantTag, _RevisionTag3); function ConstantTag() { - _classCallCheck(this, ConstantTag); - _RevisionTag3.apply(this, arguments); } ConstantTag.prototype.value = function value() { return CONSTANT; @@ -13492,15 +14380,13 @@ return ConstantTag; })(RevisionTag))(); exports.CONSTANT_TAG = CONSTANT_TAG; var VOLATILE_TAG = new ((function (_RevisionTag4) { - _inherits(VolatileTag, _RevisionTag4); + babelHelpers.inherits(VolatileTag, _RevisionTag4); function VolatileTag() { - _classCallCheck(this, VolatileTag); - _RevisionTag4.apply(this, arguments); } VolatileTag.prototype.value = function value() { return VOLATILE; @@ -13508,15 +14394,13 @@ return VolatileTag; })(RevisionTag))(); exports.VOLATILE_TAG = VOLATILE_TAG; var CURRENT_TAG = new ((function (_DirtyableTag) { - _inherits(CurrentTag, _DirtyableTag); + babelHelpers.inherits(CurrentTag, _DirtyableTag); function CurrentTag() { - _classCallCheck(this, CurrentTag); - _DirtyableTag.apply(this, arguments); } CurrentTag.prototype.value = function value() { return $REVISION; @@ -13526,12 +14410,10 @@ })(DirtyableTag))(); exports.CURRENT_TAG = CURRENT_TAG; var CachedReference = (function () { function CachedReference() { - _classCallCheck(this, CachedReference); - this.lastRevision = null; this.lastValue = null; } CachedReference.prototype.value = function value() { @@ -13554,15 +14436,13 @@ })(); exports.CachedReference = CachedReference; var MapperReference = (function (_CachedReference) { - _inherits(MapperReference, _CachedReference); + babelHelpers.inherits(MapperReference, _CachedReference); function MapperReference(reference, mapper) { - _classCallCheck(this, MapperReference); - _CachedReference.call(this); this.tag = reference.tag; this.reference = reference; this.mapper = mapper; } @@ -13583,12 +14463,10 @@ ////////// var ReferenceCache = (function () { function ReferenceCache(reference) { - _classCallCheck(this, ReferenceCache); - this.lastValue = null; this.lastRevision = null; this.initialized = false; this.tag = reference.tag; this.reference = reference; @@ -13637,23 +14515,25 @@ function isModified(value) { return value !== NOT_MODIFIED; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWtCTyxRQUFNLFFBQVEsR0FBYSxDQUFDLENBQUM7O0FBQzdCLFFBQU0sT0FBTyxHQUFjLENBQUMsQ0FBQzs7QUFDN0IsUUFBTSxRQUFRLEdBQWEsR0FBRyxDQUFDOzs7UUFFdEMsV0FBQTtpQkFBQSxXQUFBO2tDQUFBLFdBQUE7OztBQUFBLG1CQUFBLFdBR0UsUUFBUSxHQUFBLGtCQUFDLFFBQWtCLEVBQUE7QUFDekIsbUJBQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLFFBQVEsQ0FBQztTQUNsQzs7ZUFMSCxXQUFBOzs7OztBQVFBLFFBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQzs7UUFFeEIsWUFBQTtrQkFBQSxZQUFBOztBQUdFLGlCQUhGLFlBQUEsR0FHa0M7Z0JBQXBCLFFBQVEseURBQUcsU0FBUzs7a0NBSGxDLFlBQUE7O0FBSUksbUNBQU8sQ0FBQztBQUNSLGdCQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUMxQjs7QUFOSCxvQkFBQSxXQVFFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7O0FBVkgsb0JBQUEsV0FZRSxLQUFLLEdBQUEsaUJBQUE7QUFDSCxnQkFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLFNBQVMsQ0FBQztTQUM3Qjs7ZUFkSCxZQUFBO09BQWtDLFdBQVc7Ozs7QUFpQjdDLGFBQUEsYUFBQSxDQUE4QixNQUEwQixFQUFBO0FBQ3RELFlBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUVuQixhQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLGdCQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENB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QUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxZQUFZLENBQUM7QUFDcEQsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUUxQixTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUNmLGdCQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDOUIsZ0JBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxPQUFPLFlBQVksQ0FBQztBQUM3QyxnQkFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFFdkIsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7O0FBdENILHNCQUFBLFdBd0NVLFVBQVUsR0FBQSxzQkFBQTtnQkFDVixTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVmLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQyxnQkFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFDLGdCQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUV4QixtQkFBTyxLQUFLLENBQUM7U0FDZDs7ZUFoREgsY0FBQTs7Ozs7QUF1REEsUUFBTSxZQUFZLEdBQWdCLHNDQUFzQyxDQUFDOztBQUV6RSxhQUFBLFVBQUEsQ0FBOEIsS0FBb0IsRUFBQTtBQUNoRCxlQUFPLEtBQUssS0FBSyxZQUFZLENBQUM7S0FDL0IiLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWZlcmVuY2UsIHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJy4vcmVmZXJlbmNlJztcbmltcG9ydCB7IEludGVybmVkU3RyaW5nLCBPcGFxdWUsIFNsaWNlLCBMaW5rZWRMaXN0Tm9kZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUYWc8VD4gZXh0ZW5kcyBSZWZlcmVuY2U8VD4ge1xuICB2YWx1ZSgpOiBUO1xuICB2YWxpZGF0ZShzbmFwc2hvdDogVCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnZ2VkPFQ+IHtcbiAgdGFnOiBFbnRpdHlUYWc8VD47XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUmV2aXNpb24gPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVDogUmV2aXNpb24gPSAwO1xuZXhwb3J0IGNvbnN0IElOSVRJQUw6ICBSZXZpc2lvbiA9IDE7XG5leHBvcnQgY29uc3QgVk9MQVRJTEU6IFJldmlzaW9uID0gTmFOO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmV2aXNpb25UYWcgaW1wbGVtZW50cyBSZXZpc2lvblRhZyB7XG4gIGFic3RyYWN0IHZhbHVlKCk6IFJldmlzaW9uO1xuXG4gIHZhbGlkYXRlKHNuYXBzaG90OiBSZXZpc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlKCkgPT09IHNuYXBzaG90O1xuICB9XG59XG5cbmxldCAkUkVWSVNJT04gPSBJTklUSUFMO1xuXG5leHBvcnQgY2xhc3MgRGlydHlhYmxlVGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICBwcml2YXRlIHJldmlzaW9uOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3RvcihyZXZpc2lvbiA9ICRSRVZJU0lPTikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZXZpc2lvbiA9IHJldmlzaW9uO1xuICB9XG5cbiAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgIHJldHVybiB0aGlzLnJldmlzaW9uO1xuICB9XG5cbiAgZGlydHkoKSB7XG4gICAgdGhpcy5yZXZpc2lvbiA9ICsrJFJFVklTSU9OO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lVGFnZ2VkKHRhZ2dlZDogVGFnZ2VkPFJldmlzaW9uPltdKTogUmV2aXNpb25UYWcge1xuICBsZXQgb3B0aW1pemVkID0gW107XG5cbiAgZm9yIChsZXQgaT0wLCBsPXRhZ2dlZC5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgbGV0IHRhZyA9IHRhZ2dlZFtpXS50YWc7XG4gICAgaWYgKHRhZyA9PT0gVk9MQVRJTEVfVEFHKSByZXR1cm4gVk9MQVRJTEVfVEFHO1xuICAgIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykgY29udGludWU7XG4gICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgfVxuXG4gIHJldHVybiBfY29tYmluZShvcHRpbWl6ZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVNsaWNlKHNsaWNlOiBTbGljZTxUYWdnZWQ8UmV2aXNpb24+ICYgTGlua2VkTGlzdE5vZGU+KTogUmV2aXNpb25UYWcge1xuICBsZXQgb3B0aW1pemVkID0gW107XG5cbiAgbGV0IG5vZGUgPSBzbGljZS5oZWFkKCk7XG5cbiAgd2hpbGUobm9kZSAhPT0gbnVsbCkge1xuICAgIGxldCB0YWcgPSBub2RlLnRhZztcblxuICAgIGlmICh0YWcgPT09IFZPTEFUSUxFX1RBRykgcmV0dXJuIFZPTEFUSUxFX1RBRztcbiAgICBpZiAodGFnICE9PSBDT05TVEFOVF9UQUcpIG9wdGltaXplZC5wdXNoKHRhZyk7XG5cbiAgICBub2RlID0gc2xpY2UubmV4dE5vZGUobm9kZSk7XG4gIH1cblxuICByZXR1cm4gX2NvbWJpbmUob3B0aW1pemVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUodGFnczogUmV2aXNpb25UYWdbXSk6IFJldmlzaW9uVGFnIHtcbiAgbGV0IG9wdGltaXplZCA9IFtdO1xuXG4gIGZvciAobGV0IGk9MCwgbD10YWdzLmxlbmd0aDsgaTxsOyBpKyspIHtcbiAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICBpZiAodGFnID09PSBWT0xBVElMRV9UQUcpIHJldHVybiBWT0xBVElMRV9UQUc7XG4gICAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKSBjb250aW51ZTtcbiAgICBvcHRpbWl6ZWQucHVzaCh0YWcpO1xuICB9XG5cbiAgcmV0dXJuIF9jb21iaW5lKG9wdGltaXplZCk7XG59XG5cbmZ1bmN0aW9uIF9jb21iaW5lKHRhZ3M6IFJldmlzaW9uVGFnW10pOiBSZXZpc2lvblRhZyB7XG4gIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gQ09OU1RBTlRfVEFHO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB0YWdzWzBdO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBuZXcgVGFnc1BhaXIodGFnc1swXSwgdGFnc1sxXSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBuZXcgVGFnc0NvbWJpbmF0b3IodGFncyk7XG4gIH07XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZWRUYWcgZXh0ZW5kcyBSZXZpc2lvblRhZyB7XG4gIHByaXZhdGUgbGFzdENoZWNrZWQ6IFJldmlzaW9uID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0VmFsdWU6IFJldmlzaW9uID0gbnVsbDtcblxuICB2YWx1ZSgpOiBSZXZpc2lvbiB7XG4gICAgbGV0IHsgbGFzdENoZWNrZWQsIGxhc3RWYWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChsYXN0Q2hlY2tlZCAhPT0gJFJFVklTSU9OKSB7XG4gICAgICB0aGlzLmxhc3RDaGVja2VkID0gJFJFVklTSU9OO1xuICAgICAgdGhpcy5sYXN0VmFsdWUgPSBsYXN0VmFsdWUgPSB0aGlzLmNvbXB1dGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW52YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmxhc3RDaGVja2VkID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb21wdXRlKCk6IFJldmlzaW9uO1xufVxuXG5jbGFzcyBUYWdzUGFpciBleHRlbmRzIENhY2hlZFRhZyB7XG4gIHByaXZhdGUgZmlyc3Q6IFJldmlzaW9uVGFnO1xuICBwcml2YXRlIHNlY29uZDogUmV2aXNpb25UYWc7XG5cbiAgY29uc3RydWN0b3IoZmlyc3Q6IFJldmlzaW9uVGFnLCBzZWNvbmQ6IFJldmlzaW9uVGFnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmZpcnN0ID0gZmlyc3Q7XG4gICAgdGhpcy5zZWNvbmQgPSBzZWNvbmQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBSZXZpc2lvbiB7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuZmlyc3QudmFsdWUoKSwgdGhpcy5zZWNvbmQudmFsdWUoKSk7XG4gIH1cbn1cblxuY2xhc3MgVGFnc0NvbWJpbmF0b3IgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICBwcml2YXRlIHRhZ3M6IFJldmlzaW9uVGFnW107XG5cbiAgY29uc3RydWN0b3IodGFnczogUmV2aXNpb25UYWdbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWdzID0gdGFncztcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlKCk6IFJldmlzaW9uIHtcbiAgICBsZXQgeyB0YWdzIH0gPSB0aGlzO1xuXG4gICAgbGV0IG1heCA9IC0xO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB2YWx1ZSA9IHRhZ3NbaV0udmFsdWUoKTtcbiAgICAgIG1heCA9IE1hdGgubWF4KHZhbHVlLCBtYXgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXg7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZVRhZyBleHRlbmRzIENhY2hlZFRhZyB7XG4gIHByaXZhdGUgdGFnOiBSZXZpc2lvblRhZztcbiAgcHJpdmF0ZSBsYXN0VXBkYXRlZDogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IodGFnOiBSZXZpc2lvblRhZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSB0YWc7XG4gICAgdGhpcy5sYXN0VXBkYXRlZCA9IElOSVRJQUw7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBSZXZpc2lvbiB7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMubGFzdFVwZGF0ZWQsIHRoaXMudGFnLnZhbHVlKCkpO1xuICB9XG5cbiAgdXBkYXRlKHRhZzogUmV2aXNpb25UYWcpIHtcbiAgICBpZiAodGFnICE9PSB0aGlzLnRhZykge1xuICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gJFJFVklTSU9OO1xuICAgICAgdGhpcy5pbnZhbGlkYXRlKCk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNvbnN0IENPTlNUQU5UX1RBRzogUmV2aXNpb25UYWcgPSBuZXcgKFxuICBjbGFzcyBDb25zdGFudFRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgICB2YWx1ZSgpOiBSZXZpc2lvbiB7XG4gICAgICByZXR1cm4gQ09OU1RBTlQ7XG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgVk9MQVRJTEVfVEFHOiBSZXZpc2lvblRhZyA9IG5ldyAoXG4gIGNsYXNzIFZvbGF0aWxlVGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICAgIHZhbHVlKCk6IFJldmlzaW9uIHtcbiAgICAgIHJldHVybiBWT0xBVElMRTtcbiAgICB9XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX1RBRzogRGlydHlhYmxlVGFnID0gbmV3IChcbiAgY2xhc3MgQ3VycmVudFRhZyBleHRlbmRzIERpcnR5YWJsZVRhZyB7XG4gICAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgICAgcmV0dXJuICRSRVZJU0lPTjtcbiAgICB9XG4gIH1cbik7XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uZWRSZWZlcmVuY2U8VD4gZXh0ZW5kcyBSZWZlcmVuY2U8VD4sIFRhZ2dlZDxSZXZpc2lvbj4ge31cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPFQ+IGV4dGVuZHMgUGF0aFJlZmVyZW5jZTxUPiwgVGFnZ2VkPFJldmlzaW9uPiB7XG4gIGdldChwcm9wZXJ0eTogSW50ZXJuZWRTdHJpbmcpOiBWZXJzaW9uZWRQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZWRSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBWZXJzaW9uZWRSZWZlcmVuY2U8VD4ge1xuICBwdWJsaWMgYWJzdHJhY3QgdGFnOiBSZXZpc2lvblRhZztcblxuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb24gPSBudWxsO1xuICBwcml2YXRlIGxhc3RWYWx1ZTogVCA9IG51bGw7XG5cbiAgdmFsdWUoKTogVCB7XG4gICAgbGV0IHsgdGFnLCBsYXN0UmV2aXNpb24sIGxhc3RWYWx1ZSB9ID0gdGhpcztcblxuICAgIGlmICghbGFzdFJldmlzaW9uIHx8ICF0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgbGFzdFZhbHVlID0gdGhpcy5sYXN0VmFsdWUgPSB0aGlzLmNvbXB1dGUoKTtcbiAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RWYWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb21wdXRlKCk6IFQ7XG5cbiAgcHJvdGVjdGVkIGludmFsaWRhdGUoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSBudWxsO1xuICB9XG59XG5cbi8vLy8vLy8vLy9cblxudHlwZSBNYXBwZXI8VCwgVT4gPSAodmFsdWU6IFQpID0+IFU7XG5cbmNsYXNzIE1hcHBlclJlZmVyZW5jZTxULCBVPiBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxVPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD47XG4gIHByaXZhdGUgbWFwcGVyOiBNYXBwZXI8VCwgVT47XG5cbiAgY29uc3RydWN0b3IocmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD4sIG1hcHBlcjogTWFwcGVyPFQsIFU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5tYXBwZXIgPSBtYXBwZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBVIHtcbiAgICBsZXQgeyByZWZlcmVuY2UsIG1hcHBlciB9ID0gdGhpcztcbiAgICByZXR1cm4gbWFwcGVyKHJlZmVyZW5jZS52YWx1ZSgpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwPFQsIFU+KHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPFQ+LCBtYXBwZXI6IE1hcHBlcjxULCBVPikge1xuICByZXR1cm4gbmV3IE1hcHBlclJlZmVyZW5jZShyZWZlcmVuY2UsIG1hcHBlcik7XG59XG5cbi8vLy8vLy8vLy9cblxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUNhY2hlPFQ+IGltcGxlbWVudHMgVGFnZ2VkPFJldmlzaW9uPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD47XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBUID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0UmV2aXNpb246IFJldmlzaW9uID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHJlZmVyZW5jZTogVmVyc2lvbmVkUmVmZXJlbmNlPFQ+KSB7XG4gICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgcGVlaygpOiBUIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gIH1cblxuICByZXZhbGlkYXRlKCk6IFZhbGlkYXRpb248VD4ge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIGxldCB7IHJlZmVyZW5jZSwgbGFzdFJldmlzaW9uIH0gPSB0aGlzO1xuICAgIGxldCB0YWcgPSByZWZlcmVuY2UudGFnO1xuXG4gICAgaWYgKHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSByZXR1cm4gTk9UX01PRElGSUVEO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG5cbiAgICBsZXQgeyBsYXN0VmFsdWUgfSA9IHRoaXM7XG4gICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgaWYgKHZhbHVlID09PSBsYXN0VmFsdWUpIHJldHVybiBOT1RfTU9ESUZJRUQ7XG4gICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiBUIHtcbiAgICBsZXQgeyByZWZlcmVuY2UgfSA9IHRoaXM7XG5cbiAgICBsZXQgdmFsdWUgPSB0aGlzLmxhc3RWYWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gcmVmZXJlbmNlLnRhZy52YWx1ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb248VD4gPSBUIHwgTm90TW9kaWZpZWQ7XG5cbnR5cGUgTm90TW9kaWZpZWQgPSBcImFkYjNiNzhlLTNkMjItNGU0Yi04NzdhLTYzMTdjMmM1YzE0NVwiO1xuXG5jb25zdCBOT1RfTU9ESUZJRUQ6IE5vdE1vZGlmaWVkID0gXCJhZGIzYjc4ZS0zZDIyLTRlNGItODc3YS02MzE3YzJjNWMxNDVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kaWZpZWQ8VD4odmFsdWU6IFZhbGlkYXRpb248VD4pOiB2YWx1ZSBpcyBUIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBOT1RfTU9ESUZJRUQ7XG59XG4iXX0= -enifed('glimmer-runtime/index', ['exports', '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/compiler', 'glimmer-runtime/lib/opcode-builder', 'glimmer-runtime/lib/compiled/opcodes/builder', 'glimmer-runtime/lib/compiled/blocks', '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/dom/change-lists', '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/compiled/opcodes/lists', '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'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibTemplate, _glimmerRuntimeLibSymbolTable, _glimmerRuntimeLibReferences, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibCompiler, _glimmerRuntimeLibOpcodeBuilder, _glimmerRuntimeLibCompiledOpcodesBuilder, _glimmerRuntimeLibCompiledBlocks, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibDomChangeLists, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsFunction, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibVm, _glimmerRuntimeLibUpsert, _glimmerRuntimeLibEnvironment, _glimmerRuntimeLibPartial, _glimmerRuntimeLibComponentInterfaces, _glimmerRuntimeLibModifierInterfaces, _glimmerRuntimeLibDomHelper, _glimmerRuntimeLibBuilder) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcmVmZXJlbmNlL2xpYi92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBa0JPLFFBQU0sUUFBUSxHQUFhLENBQUMsQ0FBQzs7QUFDN0IsUUFBTSxPQUFPLEdBQWMsQ0FBQyxDQUFDOztBQUM3QixRQUFNLFFBQVEsR0FBYSxHQUFHLENBQUM7OztRQUVoQyxXQUFBO2lCQUFBLFdBQUE7O0FBQUEsbUJBQUEsV0FHSixRQUFRLEdBQUEsa0JBQUMsUUFBa0IsRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssUUFBUSxDQUFDO1NBQ2xDOztlQUxHLFdBQUE7Ozs7O0FBUU4sUUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDOztRQUVsQixZQUFvQjs4QkFBcEIsWUFBb0I7O0FBR3hCLGlCQUhJLFlBQW9CLEdBR1E7Z0JBQXBCLFFBQVEseURBQUcsU0FBUzs7QUFDOUIsbUNBQU8sQ0FBQztBQUNSLGdCQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUMxQjs7QUFORyxvQkFBb0IsV0FReEIsS0FBSyxHQUFBLGlCQUFBO0FBQ0gsbUJBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0Qjs7QUFWRyxvQkFBb0IsV0FZeEIsS0FBSyxHQUFBLGlCQUFBO0FBQ0gsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxTQUFTLENBQUM7U0FDN0I7O2VBZEcsWUFBb0I7T0FBUSxXQUFXOzs7O0FBaUJ2QyxhQUFBLGFBQUEsQ0FBd0IsTUFBMEIsRUFBQTtBQUN0RCxZQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFbkIsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxnQkFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN4QixnQkFB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LFNBQVM7O0FBQ2YsZ0JBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM5QixnQkFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLE9BQU8sWUFBWSxDQUFDO0FBQzdDLGdCQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUV2QixtQkFBTyxLQUFLLENBQUM7U0FDZDs7QUF0Q0csc0JBQUEsV0F3Q0ksVUFBVSxHQUFBLHNCQUFBO2dCQUNWLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRWYsZ0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9DLGdCQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUMsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXhCLG1CQUFPLEtBQUssQ0FBQztTQUNkOztlQWhERyxjQUFBOzs7OztBQXVETixRQUFNLFlBQVksR0FBZ0Isc0NBQXNDLENBQUM7O0FBRW5FLGFBQUEsVUFBQSxDQUF3QixLQUFvQixFQUFBO0FBQ2hELGVBQU8sS0FBSyxLQUFLLFlBQVksQ0FBQztLQUMvQiIsImZpbGUiOiJ2YWxpZGF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlZmVyZW5jZSwgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnLi9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlLCBTbGljZSwgTGlua2VkTGlzdE5vZGUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VGFnPFQ+IGV4dGVuZHMgUmVmZXJlbmNlPFQ+IHtcbiAgdmFsdWUoKTogVDtcbiAgdmFsaWRhdGUoc25hcHNob3Q6IFQpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ2dlZDxUPiB7XG4gIHRhZzogRW50aXR5VGFnPFQ+O1xufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJldmlzaW9uID0gbnVtYmVyO1xuXG5leHBvcnQgY29uc3QgQ09OU1RBTlQ6IFJldmlzaW9uID0gMDtcbmV4cG9ydCBjb25zdCBJTklUSUFMOiAgUmV2aXNpb24gPSAxO1xuZXhwb3J0IGNvbnN0IFZPTEFUSUxFOiBSZXZpc2lvbiA9IE5hTjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJldmlzaW9uVGFnIGltcGxlbWVudHMgUmV2aXNpb25UYWcge1xuICBhYnN0cmFjdCB2YWx1ZSgpOiBSZXZpc2lvbjtcblxuICB2YWxpZGF0ZShzbmFwc2hvdDogUmV2aXNpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSgpID09PSBzbmFwc2hvdDtcbiAgfVxufVxuXG5sZXQgJFJFVklTSU9OID0gSU5JVElBTDtcblxuZXhwb3J0IGNsYXNzIERpcnR5YWJsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgcHJpdmF0ZSByZXZpc2lvbjogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IocmV2aXNpb24gPSAkUkVWSVNJT04pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmV2aXNpb24gPSByZXZpc2lvbjtcbiAgfVxuXG4gIHZhbHVlKCk6IFJldmlzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5yZXZpc2lvbjtcbiAgfVxuXG4gIGRpcnR5KCkge1xuICAgIHRoaXMucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVRhZ2dlZCh0YWdnZWQ6IFRhZ2dlZDxSZXZpc2lvbj5bXSk6IFJldmlzaW9uVGFnIHtcbiAgbGV0IG9wdGltaXplZCA9IFtdO1xuXG4gIGZvciAobGV0IGk9MCwgbD10YWdnZWQubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIGxldCB0YWcgPSB0YWdnZWRbaV0udGFnO1xuICAgIGlmICh0YWcgPT09IFZPTEFUSUxFX1RBRykgcmV0dXJuIFZPTEFUSUxFX1RBRztcbiAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpIGNvbnRpbnVlO1xuICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gIH1cblxuICByZXR1cm4gX2NvbWJpbmUob3B0aW1pemVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVTbGljZShzbGljZTogU2xpY2U8VGFnZ2VkPFJldmlzaW9uPiAmIExpbmtlZExpc3ROb2RlPik6IFJldmlzaW9uVGFnIHtcbiAgbGV0IG9wdGltaXplZCA9IFtdO1xuXG4gIGxldCBub2RlID0gc2xpY2UuaGVhZCgpO1xuXG4gIHdoaWxlKG5vZGUgIT09IG51bGwpIHtcbiAgICBsZXQgdGFnID0gbm9kZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBWT0xBVElMRV9UQUcpIHJldHVybiBWT0xBVElMRV9UQUc7XG4gICAgaWYgKHRhZyAhPT0gQ09OU1RBTlRfVEFHKSBvcHRpbWl6ZWQucHVzaCh0YWcpO1xuXG4gICAgbm9kZSA9IHNsaWNlLm5leHROb2RlKG5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIF9jb21iaW5lKG9wdGltaXplZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKHRhZ3M6IFJldmlzaW9uVGFnW10pOiBSZXZpc2lvblRhZyB7XG4gIGxldCBvcHRpbWl6ZWQgPSBbXTtcblxuICBmb3IgKGxldCBpPTAsIGw9dGFncy5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgbGV0IHRhZyA9IHRhZ3NbaV07XG4gICAgaWYgKHRhZyA9PT0gVk9MQVRJTEVfVEFHKSByZXR1cm4gVk9MQVRJTEVfVEFHO1xuICAgIGlmICh0YWcgPT09IENPTlNUQU5UX1RBRykgY29udGludWU7XG4gICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgfVxuXG4gIHJldHVybiBfY29tYmluZShvcHRpbWl6ZWQpO1xufVxuXG5mdW5jdGlvbiBfY29tYmluZSh0YWdzOiBSZXZpc2lvblRhZ1tdKTogUmV2aXNpb25UYWcge1xuICBzd2l0Y2ggKHRhZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIENPTlNUQU5UX1RBRztcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gdGFnc1swXTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IFRhZ3NQYWlyKHRhZ3NbMF0sIHRhZ3NbMV0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbmV3IFRhZ3NDb21iaW5hdG9yKHRhZ3MpO1xuICB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2FjaGVkVGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICBwcml2YXRlIGxhc3RDaGVja2VkOiBSZXZpc2lvbiA9IG51bGw7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBSZXZpc2lvbiA9IG51bGw7XG5cbiAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgIGxldCB7IGxhc3RDaGVja2VkLCBsYXN0VmFsdWUgfSA9IHRoaXM7XG5cbiAgICBpZiAobGFzdENoZWNrZWQgIT09ICRSRVZJU0lPTikge1xuICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9ICRSRVZJU0lPTjtcbiAgICAgIHRoaXMubGFzdFZhbHVlID0gbGFzdFZhbHVlID0gdGhpcy5jb21wdXRlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludmFsaWRhdGUoKSB7XG4gICAgdGhpcy5sYXN0Q2hlY2tlZCA9IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZSgpOiBSZXZpc2lvbjtcbn1cblxuY2xhc3MgVGFnc1BhaXIgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICBwcml2YXRlIGZpcnN0OiBSZXZpc2lvblRhZztcbiAgcHJpdmF0ZSBzZWNvbmQ6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKGZpcnN0OiBSZXZpc2lvblRhZywgc2Vjb25kOiBSZXZpc2lvblRhZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5maXJzdCA9IGZpcnN0O1xuICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogUmV2aXNpb24ge1xuICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmZpcnN0LnZhbHVlKCksIHRoaXMuc2Vjb25kLnZhbHVlKCkpO1xuICB9XG59XG5cbmNsYXNzIFRhZ3NDb21iaW5hdG9yIGV4dGVuZHMgQ2FjaGVkVGFnIHtcbiAgcHJpdmF0ZSB0YWdzOiBSZXZpc2lvblRhZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHRhZ3M6IFJldmlzaW9uVGFnW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFncyA9IHRhZ3M7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBSZXZpc2lvbiB7XG4gICAgbGV0IHsgdGFncyB9ID0gdGhpcztcblxuICAgIGxldCBtYXggPSAtMTtcblxuICAgIGZvciAobGV0IGk9MDsgaTx0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdmFsdWUgPSB0YWdzW2ldLnZhbHVlKCk7XG4gICAgICBtYXggPSBNYXRoLm1heCh2YWx1ZSwgbWF4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF4O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGFibGVUYWcgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICBwcml2YXRlIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHRhZzogUmV2aXNpb25UYWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSBJTklUSUFMO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogUmV2aXNpb24ge1xuICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmxhc3RVcGRhdGVkLCB0aGlzLnRhZy52YWx1ZSgpKTtcbiAgfVxuXG4gIHVwZGF0ZSh0YWc6IFJldmlzaW9uVGFnKSB7XG4gICAgaWYgKHRhZyAhPT0gdGhpcy50YWcpIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9ICRSRVZJU0lPTjtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUc6IFJldmlzaW9uVGFnID0gbmV3IChcbiAgY2xhc3MgQ29uc3RhbnRUYWcgZXh0ZW5kcyBSZXZpc2lvblRhZyB7XG4gICAgdmFsdWUoKTogUmV2aXNpb24ge1xuICAgICAgcmV0dXJuIENPTlNUQU5UO1xuICAgIH1cbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IFZPTEFUSUxFX1RBRzogUmV2aXNpb25UYWcgPSBuZXcgKFxuICBjbGFzcyBWb2xhdGlsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgICB2YWx1ZSgpOiBSZXZpc2lvbiB7XG4gICAgICByZXR1cm4gVk9MQVRJTEU7XG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgQ1VSUkVOVF9UQUc6IERpcnR5YWJsZVRhZyA9IG5ldyAoXG4gIGNsYXNzIEN1cnJlbnRUYWcgZXh0ZW5kcyBEaXJ0eWFibGVUYWcge1xuICAgIHZhbHVlKCk6IFJldmlzaW9uIHtcbiAgICAgIHJldHVybiAkUkVWSVNJT047XG4gICAgfVxuICB9XG4pO1xuXG4vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmVkUmVmZXJlbmNlPFQ+IGV4dGVuZHMgUmVmZXJlbmNlPFQ+LCBUYWdnZWQ8UmV2aXNpb24+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmVkUGF0aFJlZmVyZW5jZTxUPiBleHRlbmRzIFBhdGhSZWZlcmVuY2U8VD4sIFRhZ2dlZDxSZXZpc2lvbj4ge1xuICBnZXQocHJvcGVydHk6IHN0cmluZyk6IFZlcnNpb25lZFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhY2hlZFJlZmVyZW5jZTxUPiBpbXBsZW1lbnRzIFZlcnNpb25lZFJlZmVyZW5jZTxUPiB7XG4gIHB1YmxpYyBhYnN0cmFjdCB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbiA9IG51bGw7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBUID0gbnVsbDtcblxuICB2YWx1ZSgpOiBUIHtcbiAgICBsZXQgeyB0YWcsIGxhc3RSZXZpc2lvbiwgbGFzdFZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsYXN0UmV2aXNpb24gfHwgIXRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICBsYXN0VmFsdWUgPSB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuY29tcHV0ZSgpO1xuICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbXB1dGUoKTogVDtcblxuICBwcm90ZWN0ZWQgaW52YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IG51bGw7XG4gIH1cbn1cblxuLy8vLy8vLy8vL1xuXG50eXBlIE1hcHBlcjxULCBVPiA9ICh2YWx1ZTogVCkgPT4gVTtcblxuY2xhc3MgTWFwcGVyUmVmZXJlbmNlPFQsIFU+IGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlPFU+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgcHJpdmF0ZSByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxUPjtcbiAgcHJpdmF0ZSBtYXBwZXI6IE1hcHBlcjxULCBVPjtcblxuICBjb25zdHJ1Y3RvcihyZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxUPiwgbWFwcGVyOiBNYXBwZXI8VCwgVT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLm1hcHBlciA9IG1hcHBlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlKCk6IFUge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgbWFwcGVyIH0gPSB0aGlzO1xuICAgIHJldHVybiBtYXBwZXIocmVmZXJlbmNlLnZhbHVlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXA8VCwgVT4ocmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD4sIG1hcHBlcjogTWFwcGVyPFQsIFU+KSB7XG4gIHJldHVybiBuZXcgTWFwcGVyUmVmZXJlbmNlKHJlZmVyZW5jZSwgbWFwcGVyKTtcbn1cblxuLy8vLy8vLy8vL1xuXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlQ2FjaGU8VD4gaW1wbGVtZW50cyBUYWdnZWQ8UmV2aXNpb24+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgcHJpdmF0ZSByZWZlcmVuY2U6IFZlcnNpb25lZFJlZmVyZW5jZTxUPjtcbiAgcHJpdmF0ZSBsYXN0VmFsdWU6IFQgPSBudWxsO1xuICBwcml2YXRlIGxhc3RSZXZpc2lvbjogUmV2aXNpb24gPSBudWxsO1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocmVmZXJlbmNlOiBWZXJzaW9uZWRSZWZlcmVuY2U8VD4pIHtcbiAgICB0aGlzLnRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gIH1cblxuICBwZWVrKCk6IFQge1xuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgfVxuXG4gIHJldmFsaWRhdGUoKTogVmFsaWRhdGlvbjxUPiB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgbGV0IHsgcmVmZXJlbmNlLCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG4gICAgbGV0IHRhZyA9IHJlZmVyZW5jZS50YWc7XG5cbiAgICBpZiAodGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHJldHVybiBOT1RfTU9ESUZJRUQ7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0YWcudmFsdWUoKTtcblxuICAgIGxldCB7IGxhc3RWYWx1ZSB9ID0gdGhpcztcbiAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBpZiAodmFsdWUgPT09IGxhc3RWYWx1ZSkgcmV0dXJuIE5PVF9NT0RJRklFRDtcbiAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IFQge1xuICAgIGxldCB7IHJlZmVyZW5jZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IHRoaXMubGFzdFZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSByZWZlcmVuY2UudGFnLnZhbHVlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbjxUPiA9IFQgfCBOb3RNb2RpZmllZDtcblxudHlwZSBOb3RNb2RpZmllZCA9IFwiYWRiM2I3OGUtM2QyMi00ZTRiLTg3N2EtNjMxN2MyYzVjMTQ1XCI7XG5cbmNvbnN0IE5PVF9NT0RJRklFRDogTm90TW9kaWZpZWQgPSBcImFkYjNiNzhlLTNkMjItNGU0Yi04NzdhLTYzMTdjMmM1YzE0NVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNb2RpZmllZDxUPih2YWx1ZTogVmFsaWRhdGlvbjxUPik6IHZhbHVlIGlzIFQge1xuICByZXR1cm4gdmFsdWUgIT09IE5PVF9NT0RJRklFRDtcbn1cbiIsImV4cG9ydCBjb25zdCBDT05TVEFOVCA9IDA7XG5leHBvcnQgY29uc3QgSU5JVElBTCA9IDE7XG5leHBvcnQgY29uc3QgVk9MQVRJTEUgPSBOYU47XG5leHBvcnQgY2xhc3MgUmV2aXNpb25UYWcge1xuICAgIHZhbGlkYXRlKHNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKCkgPT09IHNuYXBzaG90O1xuICAgIH1cbn1cbmxldCAkUkVWSVNJT04gPSBJTklUSUFMO1xuZXhwb3J0IGNsYXNzIERpcnR5YWJsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgICBjb25zdHJ1Y3RvcihyZXZpc2lvbiA9ICRSRVZJU0lPTikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJldmlzaW9uID0gcmV2aXNpb247XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZpc2lvbjtcbiAgICB9XG4gICAgZGlydHkoKSB7XG4gICAgICAgIHRoaXMucmV2aXNpb24gPSArKyRSRVZJU0lPTjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVRhZ2dlZCh0YWdnZWQpIHtcbiAgICBsZXQgb3B0aW1pemVkID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0YWdnZWQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGxldCB0YWcgPSB0YWdnZWRbaV0udGFnO1xuICAgICAgICBpZiAodGFnID09PSBWT0xBVElMRV9UQUcpXG4gICAgICAgICAgICByZXR1cm4gVk9MQVRJTEVfVEFHO1xuICAgICAgICBpZiAodGFnID09PSBDT05TVEFOVF9UQUcpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIF9jb21iaW5lKG9wdGltaXplZCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVNsaWNlKHNsaWNlKSB7XG4gICAgbGV0IG9wdGltaXplZCA9IFtdO1xuICAgIGxldCBub2RlID0gc2xpY2UuaGVhZCgpO1xuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgIGxldCB0YWcgPSBub2RlLnRhZztcbiAgICAgICAgaWYgKHRhZyA9PT0gVk9MQVRJTEVfVEFHKVxuICAgICAgICAgICAgcmV0dXJuIFZPTEFUSUxFX1RBRztcbiAgICAgICAgaWYgKHRhZyAhPT0gQ09OU1RBTlRfVEFHKVxuICAgICAgICAgICAgb3B0aW1pemVkLnB1c2godGFnKTtcbiAgICAgICAgbm9kZSA9IHNsaWNlLm5leHROb2RlKG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gX2NvbWJpbmUob3B0aW1pemVkKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lKHRhZ3MpIHtcbiAgICBsZXQgb3B0aW1pemVkID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0YWdzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBsZXQgdGFnID0gdGFnc1tpXTtcbiAgICAgICAgaWYgKHRhZyA9PT0gVk9MQVRJTEVfVEFHKVxuICAgICAgICAgICAgcmV0dXJuIFZPTEFUSUxFX1RBRztcbiAgICAgICAgaWYgKHRhZyA9PT0gQ09OU1RBTlRfVEFHKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIG9wdGltaXplZC5wdXNoKHRhZyk7XG4gICAgfVxuICAgIHJldHVybiBfY29tYmluZShvcHRpbWl6ZWQpO1xufVxuZnVuY3Rpb24gX2NvbWJpbmUodGFncykge1xuICAgIHN3aXRjaCAodGFncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgcmV0dXJuIENPTlNUQU5UX1RBRztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIHRhZ3NbMF07XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFnc1BhaXIodGFnc1swXSwgdGFnc1sxXSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhZ3NDb21iaW5hdG9yKHRhZ3MpO1xuICAgIH1cbiAgICA7XG59XG5leHBvcnQgY2xhc3MgQ2FjaGVkVGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmxhc3RDaGVja2VkID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBudWxsO1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IHsgbGFzdENoZWNrZWQsIGxhc3RWYWx1ZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGxhc3RDaGVja2VkICE9PSAkUkVWSVNJT04pIHtcbiAgICAgICAgICAgIHRoaXMubGFzdENoZWNrZWQgPSAkUkVWSVNJT047XG4gICAgICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IGxhc3RWYWx1ZSA9IHRoaXMuY29tcHV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgICB9XG4gICAgaW52YWxpZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2hlY2tlZCA9IG51bGw7XG4gICAgfVxufVxuY2xhc3MgVGFnc1BhaXIgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICAgIGNvbnN0cnVjdG9yKGZpcnN0LCBzZWNvbmQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5maXJzdCA9IGZpcnN0O1xuICAgICAgICB0aGlzLnNlY29uZCA9IHNlY29uZDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuZmlyc3QudmFsdWUoKSwgdGhpcy5zZWNvbmQudmFsdWUoKSk7XG4gICAgfVxufVxuY2xhc3MgVGFnc0NvbWJpbmF0b3IgZXh0ZW5kcyBDYWNoZWRUYWcge1xuICAgIGNvbnN0cnVjdG9yKHRhZ3MpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWdzID0gdGFncztcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgbGV0IHsgdGFncyB9ID0gdGhpcztcbiAgICAgICAgbGV0IG1heCA9IC0xO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRhZ3NbaV0udmFsdWUoKTtcbiAgICAgICAgICAgIG1heCA9IE1hdGgubWF4KHZhbHVlLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZVRhZyBleHRlbmRzIENhY2hlZFRhZyB7XG4gICAgY29uc3RydWN0b3IodGFnKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gSU5JVElBTDtcbiAgICB9XG4gICAgY29tcHV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMubGFzdFVwZGF0ZWQsIHRoaXMudGFnLnZhbHVlKCkpO1xuICAgIH1cbiAgICB1cGRhdGUodGFnKSB7XG4gICAgICAgIGlmICh0YWcgIT09IHRoaXMudGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgICAgIHRoaXMubGFzdFVwZGF0ZWQgPSAkUkVWSVNJT047XG4gICAgICAgICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vLy8vLy8vLy9cbmV4cG9ydCBjb25zdCBDT05TVEFOVF9UQUcgPSBuZXcgKGNsYXNzIENvbnN0YW50VGFnIGV4dGVuZHMgUmV2aXNpb25UYWcge1xuICAgIHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gQ09OU1RBTlQ7XG4gICAgfVxufSk7XG5leHBvcnQgY29uc3QgVk9MQVRJTEVfVEFHID0gbmV3IChjbGFzcyBWb2xhdGlsZVRhZyBleHRlbmRzIFJldmlzaW9uVGFnIHtcbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIFZPTEFUSUxFO1xuICAgIH1cbn0pO1xuZXhwb3J0IGNvbnN0IENVUlJFTlRfVEFHID0gbmV3IChjbGFzcyBDdXJyZW50VGFnIGV4dGVuZHMgRGlydHlhYmxlVGFnIHtcbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuICRSRVZJU0lPTjtcbiAgICB9XG59KTtcbmV4cG9ydCBjbGFzcyBDYWNoZWRSZWZlcmVuY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMubGFzdFZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IHRhZywgbGFzdFJldmlzaW9uLCBsYXN0VmFsdWUgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGFzdFJldmlzaW9uIHx8ICF0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgICAgICAgbGFzdFZhbHVlID0gdGhpcy5sYXN0VmFsdWUgPSB0aGlzLmNvbXB1dGUoKTtcbiAgICAgICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZTtcbiAgICB9XG4gICAgaW52YWxpZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSBudWxsO1xuICAgIH1cbn1cbmNsYXNzIE1hcHBlclJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZSB7XG4gICAgY29uc3RydWN0b3IocmVmZXJlbmNlLCBtYXBwZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5tYXBwZXIgPSBtYXBwZXI7XG4gICAgfVxuICAgIGNvbXB1dGUoKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZSwgbWFwcGVyIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gbWFwcGVyKHJlZmVyZW5jZS52YWx1ZSgpKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbWFwKHJlZmVyZW5jZSwgbWFwcGVyKSB7XG4gICAgcmV0dXJuIG5ldyBNYXBwZXJSZWZlcmVuY2UocmVmZXJlbmNlLCBtYXBwZXIpO1xufVxuLy8vLy8vLy8vL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUNhY2hlIHtcbiAgICBjb25zdHJ1Y3RvcihyZWZlcmVuY2UpIHtcbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB9XG4gICAgcGVlaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICAgIH1cbiAgICByZXZhbGlkYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyByZWZlcmVuY2UsIGxhc3RSZXZpc2lvbiB9ID0gdGhpcztcbiAgICAgICAgbGV0IHRhZyA9IHJlZmVyZW5jZS50YWc7XG4gICAgICAgIGlmICh0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSlcbiAgICAgICAgICAgIHJldHVybiBOT1RfTU9ESUZJRUQ7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgICAgIGxldCB7IGxhc3RWYWx1ZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbGFzdFZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIE5PVF9NT0RJRklFRDtcbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICBsZXQgeyByZWZlcmVuY2UgfSA9IHRoaXM7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMubGFzdFZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gcmVmZXJlbmNlLnRhZy52YWx1ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbmNvbnN0IE5PVF9NT0RJRklFRCA9IFwiYWRiM2I3OGUtM2QyMi00ZTRiLTg3N2EtNjMxN2MyYzVjMTQ1XCI7XG5leHBvcnQgZnVuY3Rpb24gaXNNb2RpZmllZCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gTk9UX01PRElGSUVEO1xufVxuIl19 +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/compiler', 'glimmer-runtime/lib/opcode-builder', 'glimmer-runtime/lib/compiled/opcodes/builder', 'glimmer-runtime/lib/compiled/blocks', '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/dom/change-lists', '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/compiled/opcodes/lists', 'glimmer-runtime/lib/helpers/get-dynamic-var', 'glimmer-runtime/lib/syntax/builtins/with-dynamic-vars', '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, _glimmerRuntimeLibCompiler, _glimmerRuntimeLibOpcodeBuilder, _glimmerRuntimeLibCompiledOpcodesBuilder, _glimmerRuntimeLibCompiledBlocks, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibDomChangeLists, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsFunction, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibHelpersGetDynamicVar, _glimmerRuntimeLibSyntaxBuiltinsWithDynamicVars, _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.Template = _glimmerRuntimeLibTemplate.default; + 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; @@ -13676,21 +14556,18 @@ exports.CloseElementSyntax = _glimmerRuntimeLibSyntaxCore.CloseElement; exports.Compiler = _glimmerRuntimeLibCompiler.default; exports.Compilable = _glimmerRuntimeLibCompiler.Compilable; exports.CompileIntoList = _glimmerRuntimeLibCompiler.CompileIntoList; exports.compileLayout = _glimmerRuntimeLibCompiler.compileLayout; - exports.OpcodeBuilder = _glimmerRuntimeLibOpcodeBuilder.default; - exports.DynamicComponentOptions = _glimmerRuntimeLibOpcodeBuilder.DynamicComponentOptions; - exports.StaticComponentOptions = _glimmerRuntimeLibOpcodeBuilder.StaticComponentOptions; + exports.ComponentBuilder = _glimmerRuntimeLibOpcodeBuilder.ComponentBuilder; + exports.StaticDefinition = _glimmerRuntimeLibOpcodeBuilder.StaticDefinition; + exports.DynamicDefinition = _glimmerRuntimeLibOpcodeBuilder.DynamicDefinition; exports.OpcodeBuilderDSL = _glimmerRuntimeLibCompiledOpcodesBuilder.default; exports.Block = _glimmerRuntimeLibCompiledBlocks.Block; - exports.BlockOptions = _glimmerRuntimeLibCompiledBlocks.BlockOptions; exports.CompiledBlock = _glimmerRuntimeLibCompiledBlocks.CompiledBlock; exports.Layout = _glimmerRuntimeLibCompiledBlocks.Layout; - exports.LayoutOptions = _glimmerRuntimeLibCompiledBlocks.LayoutOptions; exports.InlineBlock = _glimmerRuntimeLibCompiledBlocks.InlineBlock; - exports.InlineBlockOptions = _glimmerRuntimeLibCompiledBlocks.InlineBlockOptions; exports.EntryPoint = _glimmerRuntimeLibCompiledBlocks.EntryPoint; exports.Opcode = _glimmerRuntimeLibOpcodes.Opcode; exports.OpSeq = _glimmerRuntimeLibOpcodes.OpSeq; exports.OpSeqBuilder = _glimmerRuntimeLibOpcodes.OpSeqBuilder; exports.inspectOpcodes = _glimmerRuntimeLibOpcodes.inspect; @@ -13709,11 +14586,10 @@ exports.JumpOpcode = _glimmerRuntimeLibCompiledOpcodesVm.JumpOpcode; exports.JumpIfOpcode = _glimmerRuntimeLibCompiledOpcodesVm.JumpIfOpcode; exports.JumpUnlessOpcode = _glimmerRuntimeLibCompiledOpcodesVm.JumpUnlessOpcode; exports.BindNamedArgsOpcode = _glimmerRuntimeLibCompiledOpcodesVm.BindNamedArgsOpcode; exports.BindDynamicScopeOpcode = _glimmerRuntimeLibCompiledOpcodesVm.BindDynamicScopeOpcode; - exports.OpenComponentOptions = _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOptions; exports.OpenComponentOpcode = _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOpcode; exports.CloseComponentOpcode = _glimmerRuntimeLibCompiledOpcodesComponent.CloseComponentOpcode; exports.ShadowAttributesOpcode = _glimmerRuntimeLibCompiledOpcodesComponent.ShadowAttributesOpcode; exports.OpenPrimitiveElementOpcode = _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode; exports.CloseElementOpcode = _glimmerRuntimeLibCompiledOpcodesDom.CloseElementOpcode; @@ -13739,10 +14615,12 @@ exports.FunctionExpression = _glimmerRuntimeLibCompiledExpressionsFunction.FunctionExpression; exports.EnterListOpcode = _glimmerRuntimeLibCompiledOpcodesLists.EnterListOpcode; exports.ExitListOpcode = _glimmerRuntimeLibCompiledOpcodesLists.ExitListOpcode; exports.EnterWithKeyOpcode = _glimmerRuntimeLibCompiledOpcodesLists.EnterWithKeyOpcode; exports.NextIterOpcode = _glimmerRuntimeLibCompiledOpcodesLists.NextIterOpcode; + exports.getDynamicVar = _glimmerRuntimeLibHelpersGetDynamicVar.default; + exports.WithDynamicVarsSyntax = _glimmerRuntimeLibSyntaxBuiltinsWithDynamicVars.default; exports.VM = _glimmerRuntimeLibVm.PublicVM; exports.UpdatingVM = _glimmerRuntimeLibVm.UpdatingVM; exports.RenderResult = _glimmerRuntimeLibVm.RenderResult; exports.SafeString = _glimmerRuntimeLibUpsert.SafeString; exports.isSafeString = _glimmerRuntimeLibUpsert.isSafeString; @@ -13756,42 +14634,63 @@ 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.DOMHelper = _glimmerRuntimeLibDomHelper.default; - exports.IDOMHelper = _glimmerRuntimeLibDomHelper.DOMHelper; + 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; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7VUFDZSxnQkFBZ0IsNEJBQTdCLFNBQVM7VUFDSSxlQUFlLDRCQUE1QixTQUFTO1VBQ0ssZ0JBQWdCLDRCQUE5QixVQUFVO1VBQ0csZUFBZSw0QkFBNUIsU0FBUztVQUNULDBCQUEwQiw0QkFBMUIsMEJBQTBCO1VBQzFCLFlBQVksNEJBQVosWUFBWTtVQUNaLFdBQVcsNEJBQVgsV0FBVztVQUNYLFdBQVcsNEJBQVgsV0FBVztVQUdPLFFBQVEsOEJBQW5CLE9BQU87VUFFSSxXQUFXLGlDQUF0QixPQUFPO1VBRVAsb0JBQW9CLGdDQUFwQixvQkFBb0I7VUFBRSxjQUFjLGdDQUFkLGNBQWM7VUFBRSxtQkFBbUIsZ0NBQW5CLG1CQUFtQjtVQUdoRSxTQUFTLGdDQUFULFNBQVM7VUFDVCxlQUFlLGdDQUFmLGVBQWU7VUFDZixpQkFBaUIsZ0NBQWpCLGlCQUFpQjtVQUNqQixPQUFPLGdDQUFQLE9BQU87VUFDUCxVQUFVLGdDQUFWLFVBQVU7VUFDVixXQUFXLGdDQUFYLFdBQVc7VUFDSCxVQUFVLGdDQUFsQixJQUFJO1VBQ1MsZUFBZSxnQ0FBNUIsU0FBUztVQUNTLG9CQUFvQixnQ0FBdEMsY0FBYztVQUNQLFNBQVMsZ0NBQWhCLEdBQUc7VUFDWSx1QkFBdUIsZ0NBQXRDLFdBQVc7VUFDSixTQUFTLGdDQUFoQixHQUFHO1VBQ00sV0FBVyxnQ0FBcEIsS0FBSztVQUNMLFdBQVcsZ0NBQVgsV0FBVztVQUNELFlBQVksZ0NBQXRCLE1BQU07VUFDRyxXQUFXLGdDQUFwQixLQUFLO1VBQ21CLDBCQUEwQixnQ0FBbEQsb0JBQW9CO1VBQ0osa0JBQWtCLGdDQUFsQyxZQUFZO1VBSUQsUUFBUSw4QkFBbkIsT0FBTztVQUNQLFVBQVUsOEJBQVYsVUFBVTtVQUNWLGVBQWUsOEJBQWYsZUFBZTtVQUNmLGFBQWEsOEJBQWIsYUFBYTtVQUlGLGFBQWEsbUNBQXhCLE9BQU87VUFDUCx1QkFB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bUIseUNBQW5CLG1CQUFtQjtVQUNuQixzQkFBc0IseUNBQXRCLHNCQUFzQjtVQUN0QixxQkFBcUIseUNBQXJCLHFCQUFxQjtVQUlyQixlQUFlLHdDQUFmLGVBQWU7VUFHRyxTQUFTLCtCQUFwQixPQUFPO1VBQTRCLFVBQVUsK0JBQXZCLFNBQVM7VUFBZ0IsWUFBWSwrQkFBWixZQUFZO1VBQzNELFlBQVksNkJBQVosWUFBWTtVQUFFLGlCQUFpQiw2QkFBakIsaUJBQWlCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgQVRUUklCVVRFIGFzIEFUVFJJQlVURV9TWU5UQVgsXG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEV4cHJlc3Npb24gYXMgRXhwcmVzc2lvblN5bnRheCxcbiAgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCxcbiAgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsXG4gIFN5bWJvbExvb2t1cCxcbiAgQ29tcGlsZUludG8sXG4gIGlzQXR0cmlidXRlXG59IGZyb20gJy4vbGliL3N5bnRheCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGVtcGxhdGUgfSBmcm9tICcuL2xpYi90ZW1wbGF0ZSc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3ltYm9sVGFibGUgfSBmcm9tICcuL2xpYi9zeW1ib2wtdGFibGUnO1xuXG5leHBvcnQgeyBDb25kaXRpb25hbFJlZmVyZW5jZSwgTlVMTF9SRUZFUkVOQ0UsIFVOREVGSU5FRF9SRUZFUkVOQ0UgfSBmcm9tICcuL2xpYi9yZWZlcmVuY2VzJztcblxuZXhwb3J0IHtcbiAgVGVtcGxhdGVzLFxuICBPcHRpbWl6ZWRBcHBlbmQsXG4gIFVub3B0aW1pemVkQXBwZW5kLFxuICBVbmtub3duLFxuICBTdGF0aWNBdHRyLFxuICBEeW5hbWljQXR0cixcbiAgQXJncyBhcyBBcmdzU3ludGF4LFxuICBOYW1lZEFyZ3MgYXMgTmFtZWRBcmdzU3ludGF4LFxuICBQb3NpdGlvbmFsQXJncyBhcyBQb3NpdGlvbmFsQXJnc1N5bnRheCxcbiAgUmVmIGFzIFJlZlN5bnRheCxcbiAgR2V0QXJndW1lbnQgYXMgR2V0TmFtZWRQYXJhbWV0ZXJTeW50YXgsXG4gIEdldCBhcyBHZXRTeW50YXgsXG4gIFZhbHVlIGFzIFZhbHVlU3ludGF4LFxuICBPcGVuRWxlbWVudCxcbiAgSGVscGVyIGFzIEhlbHBlclN5bnRheCxcbiAgQmxvY2sgYXMgQmxvY2tTeW50YXgsXG4gIE9wZW5QcmltaXRpdmVFbGVtZW50IGFzIE9wZW5QcmltaXRpdmVFbGVtZW50U3ludGF4LFxuICBDbG9zZUVsZW1lbnQgYXMgQ2xvc2VFbGVtZW50U3ludGF4XG59IGZyb20gJy4vbGliL3N5bnRheC9jb3JlJztcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBDb21waWxlcixcbiAgQ29tcGlsYWJsZSxcbiAgQ29tcGlsZUludG9MaXN0LFxuICBjb21waWxlTGF5b3V0XG59IGZyb20gJy4vbGliL2NvbXBpbGVyJztcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyLFxuICBEeW5hbWljQ29tcG9uZW50T3B0aW9ucyxcbiAgU3RhdGljQ29tcG9uZW50T3B0aW9uc1xufSBmcm9tICcuL2xpYi9vcGNvZGUtYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgT3Bjb2RlQnVpbGRlckRTTFxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5leHBvcnQge1xuICBCbG9jayxcbiAgQmxvY2tPcHRpb25zLFxuICBDb21waWxlZEJsb2NrLFxuICBMYXlvdXQsXG4gIExheW91dE9wdGlvbnMsXG4gIElubGluZUJsb2NrLFxuICBJbmxpbmVCbG9ja09wdGlvbnMsXG4gIEVudHJ5UG9pbnRcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvYmxvY2tzJztcblxuZXhwb3J0IHtcbiAgT3Bjb2RlLFxuICBPcFNlcSxcbiAgT3BTZXFCdWlsZGVyLFxuICBpbnNwZWN0IGFzIGluc3BlY3RPcGNvZGVzXG59IGZyb20gJy4vbGliL29wY29kZXMnO1xuXG5leHBvcnQge1xuICBQdXNoQ2hpbGRTY29wZU9wY29kZSxcbiAgUG9wU2NvcGVPcGNvZGUsXG4gIFB1c2hEeW5hbWljU2NvcGVPcGNvZGUsXG4gIFBvcER5bmFtaWNTY29wZU9wY29kZSxcbiAgUHV0VmFsdWVPcGNvZGUsXG4gIFB1dE51bGxPcGNvZGUsXG4gIFB1dEFyZ3NPcGNvZGUsXG4gIExhYmVsT3Bjb2RlLFxuICBFbnRlck9wY29kZSxcbiAgRXhpdE9wY29kZSxcbiAgRXZhbHVhdGVPcGNvZGUsXG4gIFRlc3RPcGNvZGUsXG4gIEp1bXBPcGNvZGUsXG4gIEp1bXBJZk9wY29kZSxcbiAgSnVtcFVubGVzc09wY29kZSxcbiAgQmluZE5hbWVkQXJnc09wY29kZSxcbiAgQmluZER5bmFtaWNTY29wZU9wY29kZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL3ZtJztcblxuZXhwb3J0IHtcbiAgT3BlbkNvbXBvbmVudE9wdGlvbnMsXG4gIE9wZW5Db21wb25lbnRPcGNvZGUsXG4gIENsb3NlQ29tcG9uZW50T3Bjb2RlLFxuICBTaGFkb3dBdHRyaWJ1dGVzT3Bjb2RlXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50JztcblxuZXhwb3J0IHtcbiAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUsXG4gIENsb3NlRWxlbWVudE9wY29kZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmV4cG9ydCB7XG4gIElDaGFuZ2VMaXN0LFxuICBBdHRyaWJ1dGVDaGFuZ2VMaXN0LFxuICBQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIFNhZmVIcmVmQXR0cmlidXRlQ2hhbmdlTGlzdCxcbiAgU2FmZUhyZWZQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIElucHV0VmFsdWVQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIGRlZmF1bHRDaGFuZ2VMaXN0cyxcbiAgZGVmYXVsdEF0dHJpYnV0ZUNoYW5nZUxpc3RzLFxuICBkZWZhdWx0UHJvcGVydHlDaGFuZ2VMaXN0cyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2NoYW5nZS1saXN0cyc7XG5cbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVRleHRWYWx1ZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEFyZ3MsXG4gIENvbXBpbGVkTmFtZWRBcmdzLFxuICBDb21waWxlZFBvc2l0aW9uYWxBcmdzLFxuICBFdmFsdWF0ZWRBcmdzLFxuICBFdmFsdWF0ZWROYW1lZEFyZ3MsXG4gIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuXG5leHBvcnQge1xuICBWYWx1ZVJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5cbmV4cG9ydCB7XG4gIEZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy9mdW5jdGlvbic7XG5cbmV4cG9ydCB7XG4gIEVudGVyTGlzdE9wY29kZSxcbiAgRXhpdExpc3RPcGNvZGUsXG4gIEVudGVyV2l0aEtleU9wY29kZSxcbiAgTmV4dEl0ZXJPcGNvZGVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9saXN0cyc7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQgfSBmcm9tICcuL2xpYi92bSc7XG5cbmV4cG9ydCB7IFNhZmVTdHJpbmcsIGlzU2FmZVN0cmluZyB9IGZyb20gJy4vbGliL3Vwc2VydCc7XG5cbmV4cG9ydCB7XG4gIFNjb3BlLFxuICBkZWZhdWx0IGFzIEVudmlyb25tZW50LFxuICBIZWxwZXIsXG4gIFBhcnNlZFN0YXRlbWVudCxcbiAgRHluYW1pY1Njb3BlLFxufSBmcm9tICcuL2xpYi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vbGliL3BhcnRpYWwnO1xuXG5leHBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudENsYXNzLFxuICBDb21wb25lbnRNYW5hZ2VyLFxuICBDb21wb25lbnREZWZpbml0aW9uLFxuICBDb21wb25lbnRMYXlvdXRCdWlsZGVyLFxuICBDb21wb25lbnRBdHRyc0J1aWxkZXJcbn0gZnJvbSAnLi9saWIvY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5leHBvcnQge1xuICBNb2RpZmllck1hbmFnZXJcbn0gZnJvbSAnLi9saWIvbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRE9NSGVscGVyLCBET01IZWxwZXIgYXMgSURPTUhlbHBlciwgaXNXaGl0ZXNwYWNlIH0gZnJvbSAnLi9saWIvZG9tL2hlbHBlcic7XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7VUFDZSxnQkFBZ0IsNEJBQTdCLFNBQVM7VUFDSSxlQUFlLDRCQUE1QixTQUFTO1VBQ0ssZ0JBQWdCLDRCQUE5QixVQUFVO1VBQ0csZUFBZSw0QkFBNUIsU0FBUztVQUNULDBCQUEwQiw0QkFBMUIsMEJBQTBCO1VBQzFCLFlBQVksNEJBQVosWUFBWTtVQUNaLFdBQVcsNEJBQVgsV0FBVztVQUNYLFdBQVcsNEJBQVgsV0FBVztVQUdPLGVBQWUsOEJBQTFCLE9BQU87VUFBcUIsZUFBZSw4QkFBZixlQUFlO1VBQUUsUUFBUSw4QkFBUixRQUFRO1VBRTFDLFdBQVcsaUNBQXRCLE9BQU87VUFFUCxvQkFBb0IsZ0NBQXBCLG9CQUFvQjtVQUFFLGNBQWMsZ0NBQWQsY0FBYztVQUFFLG1CQUFtQixnQ0FBbkIsbUJBQW1CO1VBR2hFLFNBQVMsZ0NBQVQsU0FBUztVQUNULGVBQWUsZ0NBQWYsZUFBZTtVQUNmLGlCQUFpQixnQ0FBakIsaUJBQWlCO1VBQ2pCLE9BQU8sZ0NBQVAsT0FBTztVQUNQLFVBQVUsZ0NBQVYsVUFBVTtVQUNWLFdBQVcsZ0NBQVgsV0FBVztVQUNILFVBQVUsZ0NBQWxCLElBQUk7VUFDUyxlQUFlLGdDQUE1QixTQUFTO1VBQ1Msb0JBQW9CLGdDQUF0QyxjQUFjO1VBQ1AsU0FBUyxnQ0FBaEIsR0FBRztVQUNZLHVCQUF1QixnQ0FBdEMsV0FBVztVQUNKLFNBQVMsZ0NBQWhCLEdBQUc7VUFDTSxXQUFXLGdDQUFwQixLQUFLO1VBQ0wsV0FBVyxnQ0FBWCxXQUFXO1VBQ0QsWUFBWSxnQ0FBdEIsTUFBTTtVQUNHLFdBQVcsZ0NBQXBCLEtBQUs7VUFDbUIsMEJBQTBCLGdDQUFsRCxvQkFBb0I7VUFDSixrQkFBa0IsZ0NBQWxDLFlBQVk7VUFJRCxRQUFRLDhCQUFuQixPQUFPO1VBQ1AsVUFBVSw4QkFBVixVQUFVO1VBQ1YsZUFBZSw4QkFBZixlQUFlO1VBQ2YsYUFB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Qix5Q0FBbkIsbUJBQW1CO1VBQ25CLHNCQUFzQix5Q0FBdEIsc0JBQXNCO1VBQ3RCLHFCQUFxQix5Q0FBckIscUJBQXFCO1VBQ3JCLHFCQUFxQix5Q0FBckIscUJBQXFCO1VBSXJCLGVBQWUsd0NBQWYsZUFBZTtVQUdHLFVBQVUsK0JBQXJCLE9BQU87VUFBOEIsV0FBVywrQkFBekIsVUFBVTtVQUFpQixtQkFBbUIsK0JBQW5CLG1CQUFtQjtVQUFFLFlBQVksK0JBQVosWUFBWTtVQUFFLGdCQUFnQiwrQkFBaEIsZ0JBQWdCO1VBRXJHLE1BQU07VUFDTixZQUFZLDZCQUFaLFlBQVk7VUFBRSxpQkFBaUIsNkJBQWpCLGlCQUFpQjtVQUNwQixNQUFNLDRCQUFqQixPQUFPIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgQVRUUklCVVRFIGFzIEFUVFJJQlVURV9TWU5UQVgsXG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEV4cHJlc3Npb24gYXMgRXhwcmVzc2lvblN5bnRheCxcbiAgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCxcbiAgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsXG4gIFN5bWJvbExvb2t1cCxcbiAgQ29tcGlsZUludG8sXG4gIGlzQXR0cmlidXRlXG59IGZyb20gJy4vbGliL3N5bnRheCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVGYWN0b3J5LCBUZW1wbGF0ZUZhY3RvcnksIFRlbXBsYXRlIH0gZnJvbSAnLi9saWIvdGVtcGxhdGUnO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFN5bWJvbFRhYmxlIH0gZnJvbSAnLi9saWIvc3ltYm9sLXRhYmxlJztcblxuZXhwb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UsIE5VTExfUkVGRVJFTkNFLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi9saWIvcmVmZXJlbmNlcyc7XG5cbmV4cG9ydCB7XG4gIFRlbXBsYXRlcyxcbiAgT3B0aW1pemVkQXBwZW5kLFxuICBVbm9wdGltaXplZEFwcGVuZCxcbiAgVW5rbm93bixcbiAgU3RhdGljQXR0cixcbiAgRHluYW1pY0F0dHIsXG4gIEFyZ3MgYXMgQXJnc1N5bnRheCxcbiAgTmFtZWRBcmdzIGFzIE5hbWVkQXJnc1N5bnRheCxcbiAgUG9zaXRpb25hbEFyZ3MgYXMgUG9zaXRpb25hbEFyZ3NTeW50YXgsXG4gIFJlZiBhcyBSZWZTeW50YXgsXG4gIEdldEFyZ3VtZW50IGFzIEdldE5hbWVkUGFyYW1ldGVyU3ludGF4LFxuICBHZXQgYXMgR2V0U3ludGF4LFxuICBWYWx1ZSBhcyBWYWx1ZVN5bnRheCxcbiAgT3BlbkVsZW1lbnQsXG4gIEhlbHBlciBhcyBIZWxwZXJTeW50YXgsXG4gIEJsb2NrIGFzIEJsb2NrU3ludGF4LFxuICBPcGVuUHJpbWl0aXZlRWxlbWVudCBhcyBPcGVuUHJpbWl0aXZlRWxlbWVudFN5bnRheCxcbiAgQ2xvc2VFbGVtZW50IGFzIENsb3NlRWxlbWVudFN5bnRheFxufSBmcm9tICcuL2xpYi9zeW50YXgvY29yZSc7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgQ29tcGlsZXIsXG4gIENvbXBpbGFibGUsXG4gIENvbXBpbGVJbnRvTGlzdCxcbiAgY29tcGlsZUxheW91dFxufSBmcm9tICcuL2xpYi9jb21waWxlcic7XG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudEJ1aWxkZXIsXG4gIFN0YXRpY0RlZmluaXRpb24sXG4gIER5bmFtaWNEZWZpbml0aW9uXG59IGZyb20gJy4vbGliL29wY29kZS1idWlsZGVyJztcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBPcGNvZGVCdWlsZGVyRFNMXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCB7XG4gIEJsb2NrLFxuICBDb21waWxlZEJsb2NrLFxuICBMYXlvdXQsXG4gIElubGluZUJsb2NrLFxuICBFbnRyeVBvaW50XG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCB7XG4gIE9wY29kZSxcbiAgT3BTZXEsXG4gIE9wU2VxQnVpbGRlcixcbiAgaW5zcGVjdCBhcyBpbnNwZWN0T3Bjb2Rlc1xufSBmcm9tICcuL2xpYi9vcGNvZGVzJztcblxuZXhwb3J0IHtcbiAgUHVzaENoaWxkU2NvcGVPcGNvZGUsXG4gIFBvcFNjb3BlT3Bjb2RlLFxuICBQdXNoRHluYW1pY1Njb3BlT3Bjb2RlLFxuICBQb3BEeW5hbWljU2NvcGVPcGNvZGUsXG4gIFB1dFZhbHVlT3Bjb2RlLFxuICBQdXROdWxsT3Bjb2RlLFxuICBQdXRBcmdzT3Bjb2RlLFxuICBMYWJlbE9wY29kZSxcbiAgRW50ZXJPcGNvZGUsXG4gIEV4aXRPcGNvZGUsXG4gIEV2YWx1YXRlT3Bjb2RlLFxuICBUZXN0T3Bjb2RlLFxuICBKdW1wT3Bjb2RlLFxuICBKdW1wSWZPcGNvZGUsXG4gIEp1bXBVbmxlc3NPcGNvZGUsXG4gIEJpbmROYW1lZEFyZ3NPcGNvZGUsXG4gIEJpbmREeW5hbWljU2NvcGVPcGNvZGVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5cbmV4cG9ydCB7XG4gIE9wZW5Db21wb25lbnRPcGNvZGUsXG4gIENsb3NlQ29tcG9uZW50T3Bjb2RlLFxuICBTaGFkb3dBdHRyaWJ1dGVzT3Bjb2RlXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50JztcblxuZXhwb3J0IHtcbiAgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUsXG4gIENsb3NlRWxlbWVudE9wY29kZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmV4cG9ydCB7XG4gIElDaGFuZ2VMaXN0LFxuICBBdHRyaWJ1dGVDaGFuZ2VMaXN0LFxuICBQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIFNhZmVIcmVmQXR0cmlidXRlQ2hhbmdlTGlzdCxcbiAgU2FmZUhyZWZQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIElucHV0VmFsdWVQcm9wZXJ0eUNoYW5nZUxpc3QsXG4gIGRlZmF1bHRDaGFuZ2VMaXN0cyxcbiAgZGVmYXVsdEF0dHJpYnV0ZUNoYW5nZUxpc3RzLFxuICBkZWZhdWx0UHJvcGVydHlDaGFuZ2VMaXN0cyxcbiAgcmVhZERPTUF0dHJcbn0gZnJvbSAnLi9saWIvZG9tL2NoYW5nZS1saXN0cyc7XG5cbmV4cG9ydCB7XG4gIG5vcm1hbGl6ZVRleHRWYWx1ZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEV4cHJlc3Npb25cbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuXG5leHBvcnQge1xuICBDb21waWxlZEFyZ3MsXG4gIENvbXBpbGVkTmFtZWRBcmdzLFxuICBDb21waWxlZFBvc2l0aW9uYWxBcmdzLFxuICBFdmFsdWF0ZWRBcmdzLFxuICBFdmFsdWF0ZWROYW1lZEFyZ3MsXG4gIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzXG59IGZyb20gJy4vbGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuXG5leHBvcnQge1xuICBWYWx1ZVJlZmVyZW5jZVxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5cbmV4cG9ydCB7XG4gIEZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2xpYi9jb21waWxlZC9leHByZXNzaW9ucy9mdW5jdGlvbic7XG5cbmV4cG9ydCB7XG4gIEVudGVyTGlzdE9wY29kZSxcbiAgRXhpdExpc3RPcGNvZGUsXG4gIEVudGVyV2l0aEtleU9wY29kZSxcbiAgTmV4dEl0ZXJPcGNvZGVcbn0gZnJvbSAnLi9saWIvY29tcGlsZWQvb3Bjb2Rlcy9saXN0cyc7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgZ2V0RHluYW1pY1ZhclxufSBmcm9tICcuL2xpYi9oZWxwZXJzL2dldC1keW5hbWljLXZhcic7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgV2l0aER5bmFtaWNWYXJzU3ludGF4XG59IGZyb20gJy4vbGliL3N5bnRheC9idWlsdGlucy93aXRoLWR5bmFtaWMtdmFycyc7XG5cbmV4cG9ydCB7IFB1YmxpY1ZNIGFzIFZNLCBVcGRhdGluZ1ZNLCBSZW5kZXJSZXN1bHQgfSBmcm9tICcuL2xpYi92bSc7XG5cbmV4cG9ydCB7IFNhZmVTdHJpbmcsIGlzU2FmZVN0cmluZyB9IGZyb20gJy4vbGliL3Vwc2VydCc7XG5cbmV4cG9ydCB7XG4gIFNjb3BlLFxuICBkZWZhdWx0IGFzIEVudmlyb25tZW50LFxuICBIZWxwZXIsXG4gIFBhcnNlZFN0YXRlbWVudCxcbiAgRHluYW1pY1Njb3BlLFxufSBmcm9tICcuL2xpYi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vbGliL3BhcnRpYWwnO1xuXG5leHBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudENsYXNzLFxuICBDb21wb25lbnRNYW5hZ2VyLFxuICBDb21wb25lbnREZWZpbml0aW9uLFxuICBDb21wb25lbnRMYXlvdXRCdWlsZGVyLFxuICBDb21wb25lbnRBdHRyc0J1aWxkZXIsXG4gIGlzQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2xpYi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL2xpYi9tb2RpZmllci9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBET01DaGFuZ2VzLCBET01DaGFuZ2VzIGFzIElET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uLCBpc1doaXRlc3BhY2UsIGluc2VydEhUTUxCZWZvcmUgfSBmcm9tICcuL2xpYi9kb20vaGVscGVyJztcbmltcG9ydCAgKiBhcyBTaW1wbGUgZnJvbSAnLi9saWIvZG9tL2ludGVyZmFjZXMnO1xuZXhwb3J0IHsgU2ltcGxlIH07XG5leHBvcnQgeyBFbGVtZW50U3RhY2ssIEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9saWIvYnVpbGRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJvdW5kcyB9IGZyb20gJy4vbGliL2JvdW5kcyc7XG4iXX0= enifed("glimmer-runtime/lib/bounds", ["exports"], function (exports) { "use strict"; exports.bounds = bounds; exports.single = single; exports.move = move; exports.clear = clear; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Cursor = function Cursor(element, nextSibling) { - _classCallCheck(this, Cursor); - this.element = element; this.nextSibling = nextSibling; }; exports.Cursor = Cursor; - var ConcreteBounds = (function () { - function ConcreteBounds(parent, first, last) { - _classCallCheck(this, ConcreteBounds); + var RealDOMBounds = (function () { + function RealDOMBounds(bounds) { + this.bounds = bounds; + } - this.parentNode = parent; + 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() { @@ -13811,12 +14710,10 @@ exports.ConcreteBounds = ConcreteBounds; var SingleNodeBounds = (function () { function SingleNodeBounds(parentNode, node) { - _classCallCheck(this, SingleNodeBounds); - this.parentNode = parentNode; this.node = node; } SingleNodeBounds.prototype.parentElement = function parentElement() { @@ -13870,20 +14767,16 @@ node = next; } return null; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYm91bmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7UUFPQSxNQUFBLEdBQ0UsU0FERixNQUFBLENBQ3FCLE9BQWdCLEVBQVMsV0FBaUIsRUFBQTs4QkFEL0QsTUFBQTs7QUFDcUIsWUFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQVM7QUFBUyxZQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBTTtLQUFJOzs7O1FBS25FLGNBQUE7QUFLRSxpQkFMRixjQUFBLENBS2MsTUFBZSxFQUFFLEtBQVcsRUFBRSxJQUFVLEVBQUE7a0NBTHRELGNBQUE7O0FBTUksZ0JBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBVEgsc0JBQUEsV0FXRSxhQUFhLEdBQUEseUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUU7O0FBWDdDLHNCQUFBLFdBWUUsU0FBUyxHQUFBLHFCQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFFOztBQVpwQyxzQkFBQSxXQWFFLFFBQVEsR0FBQSxvQkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBRTs7ZUFibEMsY0FBQTs7Ozs7UUFnQkEsZ0JBQUE7QUFJRSxpQkFKRixnQkFBQSxDQUljLFVBQW1CLEVBQUUsSUFBVSxFQUFBO2tDQUo3QyxnQkFBQTs7QUFLSSxnQkFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7QUFDN0IsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVBILHdCQUFBLFdBU0UsYUFBYSxHQUFBLHlCQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFFOztBQVQ3Qyx3QkFBQSxXQVVFLFNBQVMsR0FBQSxxQkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBRTs7QUFWbkMsd0JBQUEsV0FXRSxRQUFRLEdBQUEsb0JBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQUU7O2VBWGxDLGdCQUFBOzs7OztBQWNBLGFBQUEsTUFBQSxDQUF1QixNQUFlLEVBQUUsS0FBVyxFQUFFLElBQVUsRUFBQTtBQUM3RCxlQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEQ7O0FBRUQsYUFBQSxNQUFBLENBQXVCLE1BQWUsRUFBRSxJQUFVLEVBQUE7QUFDaEQsZUFBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMzQzs7QUFFRCxhQUFBLElBQUEsQ0FBcUIsTUFBYyxFQUFFLFNBQWUsRUFBQTtBQUNsRCxZQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDcEMsWUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQy9CLFlBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUU3QixZQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsZUFBTyxJQUFJLEVBQUU7QUFDWCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUM1QixrQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckMsZ0JBQUksSUFBSSxLQUFLLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQztBQUMvQixnQkFBSSxHQUFHLElBQUksQ0FBQztTQUNiO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYjs7QUFFRCxhQUFBLEtBQUEsQ0FBc0IsTUFBYyxFQUFBO0FBQ2xDLFlBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNwQyxZQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDL0IsWUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRTdCLFlBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztBQUVqQixlQUFPLElBQUksRUFBRTtBQUNYLGdCQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQzVCLGtCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLGdCQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDL0IsZ0JBQUksR0FBRyxJQUFJLENBQUM7U0FDYjtBQUVELGVBQU8sSUFBSSxDQUFDO0tBQ2IiLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCb3VuZHMge1xuICAvLyBhIG1ldGhvZCB0byBmdXR1cmUtcHJvb2YgZm9yIHdvcm1ob2xpbmc7IG1heSBub3QgYmUgbmVlZGVkIHVsdGltYXRlbHlcbiAgcGFyZW50RWxlbWVudCgpOiBFbGVtZW50O1xuICBmaXJzdE5vZGUoKTogTm9kZTtcbiAgbGFzdE5vZGUoKTogTm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEN1cnNvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50LCBwdWJsaWMgbmV4dFNpYmxpbmc6IE5vZGUpIHt9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJvdW5kcztcblxuZXhwb3J0IGNsYXNzIENvbmNyZXRlQm91bmRzIGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHVibGljIHBhcmVudE5vZGU6IEVsZW1lbnQ7XG4gIHByaXZhdGUgZmlyc3Q6IE5vZGU7XG4gIHByaXZhdGUgbGFzdDogTm9kZTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IEVsZW1lbnQsIGZpcnN0OiBOb2RlLCBsYXN0OiBOb2RlKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50O1xuICAgIHRoaXMuZmlyc3QgPSBmaXJzdDtcbiAgICB0aGlzLmxhc3QgPSBsYXN0O1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsgfVxuICBmaXJzdE5vZGUoKSB7IHJldHVybiB0aGlzLmZpcnN0OyB9XG4gIGxhc3ROb2RlKCkgeyByZXR1cm4gdGhpcy5sYXN0OyB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVOb2RlQm91bmRzIGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBwYXJlbnROb2RlOiBFbGVtZW50O1xuICBwcml2YXRlIG5vZGU6IE5vZGU7XG5cbiAgY29uc3RydWN0b3IocGFyZW50Tm9kZTogRWxlbWVudCwgbm9kZTogTm9kZSkge1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiB0aGlzLnBhcmVudE5vZGU7IH1cbiAgZmlyc3ROb2RlKCkgeyByZXR1cm4gdGhpcy5ub2RlOyB9XG4gIGxhc3ROb2RlKCkgeyByZXR1cm4gdGhpcy5ub2RlOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib3VuZHMocGFyZW50OiBFbGVtZW50LCBmaXJzdDogTm9kZSwgbGFzdDogTm9kZSk6IEJvdW5kcyB7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5nbGUocGFyZW50OiBFbGVtZW50LCBub2RlOiBOb2RlKTogQm91bmRzIHtcbiAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHBhcmVudCwgbm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlKGJvdW5kczogQm91bmRzLCByZWZlcmVuY2U6IE5vZGUpIHtcbiAgbGV0IHBhcmVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIGxldCBmaXJzdCA9IGJvdW5kcy5maXJzdE5vZGUoKTtcbiAgbGV0IGxhc3QgPSBib3VuZHMubGFzdE5vZGUoKTtcblxuICBsZXQgbm9kZSA9IGZpcnN0O1xuXG4gIHdoaWxlIChub2RlKSB7XG4gICAgbGV0IG5leHQgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICBpZiAobm9kZSA9PT0gbGFzdCkgcmV0dXJuIG5leHQ7XG4gICAgbm9kZSA9IG5leHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyKGJvdW5kczogQm91bmRzKTogTm9kZSB7XG4gIGxldCBwYXJlbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICBsZXQgZmlyc3QgPSBib3VuZHMuZmlyc3ROb2RlKCk7XG4gIGxldCBsYXN0ID0gYm91bmRzLmxhc3ROb2RlKCk7XG5cbiAgbGV0IG5vZGUgPSBmaXJzdDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGxldCBuZXh0ID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgaWYgKG5vZGUgPT09IGxhc3QpIHJldHVybiBuZXh0O1xuICAgIG5vZGUgPSBuZXh0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYm91bmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O1FBVU0sTUFBQSxHQUNKLFNBREksTUFBQSxDQUNlLE9BQXVCLEVBQVMsV0FBd0IsRUFBQTtBQUF4RCxZQUFBLENBQUEsT0FBTyxHQUFQLE9BQU8sQ0FBZ0I7QUFBUyxZQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBYTtLQUFJOzs7O1FBTzNFLGFBQUE7QUFDSixpQkFESSxhQUFBLENBQ2dCLE1BQWMsRUFBQTtBQUFkLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBUTtTQUFJOztBQURsQyxxQkFBQSxXQUdKLGFBQWEsR0FBQSx5QkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFhLENBQUM7U0FBRTs7QUFIOUQscUJBQUEsV0FJSixTQUFTLEdBQUEscUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBVSxDQUFDO1NBQUU7O0FBSm5ELHFCQUFBLFdBS0osUUFBUSxHQUFBLG9CQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQVUsQ0FBQztTQUFFOztlQUxqRCxhQUFBOzs7OztRQVFBLGNBQUE7QUFDSixpQkFESSxjQUFBLENBQ2UsVUFBMEIsRUFBVSxLQUFrQixFQUFVLElBQWlCLEVBQUE7QUFBakYsZ0JBQUEsQ0FBQSxVQUFVLEdBQVYsVUFBVSxDQUFnQjtBQUFVLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBYTtBQUFVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBYTtTQUFJOztBQURwRyxzQkFBQSxXQUdKLGFBQWEsR0FBQSx5QkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBRTs7QUFIdkMsc0JBQUEsV0FJSixTQUFTLEdBQUEscUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUU7O0FBSjlCLHNCQUFBLFdBS0osUUFBUSxHQUFBLG9CQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUFFOztlQUw1QixjQUFBOzs7OztRQVFBLGdCQUFBO0FBSUosaUJBSkksZ0JBQUEsQ0FJUSxVQUEwQixFQUFFLElBQWlCLEVBQUE7QUFDdkQsZ0JBQUksQ0FBQyxVQUFVLEdBQUcsVUFBcUIsQ0FBQztBQUN4QyxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFZLENBQUM7U0FDMUI7O0FBUEcsd0JBQUEsV0FTSixhQUFhLEdBQUEseUJBQUE7QUFBSyxtQkFBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUU7O0FBVHZDLHdCQUFBLFdBVUosU0FBUyxHQUFBLHFCQUFBO0FBQUssbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUFFOztBQVY3Qix3QkFBQSxXQVdKLFFBQVEsR0FBQSxvQkFBQTtBQUFLLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBRTs7ZUFYNUIsZ0JBQUE7Ozs7O0FBY0EsYUFBQSxNQUFBLENBQWlCLE1BQXNCLEVBQUUsS0FBa0IsRUFBRSxJQUFpQixFQUFBO0FBQ2xGLGVBQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoRDs7QUFFSyxhQUFBLE1BQUEsQ0FBaUIsTUFBc0IsRUFBRSxJQUFpQixFQUFBO0FBQzlELGVBQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDM0M7O0FBRUssYUFBQSxJQUFBLENBQWUsTUFBYyxFQUFFLFNBQXNCLEVBQUE7QUFDekQsWUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ3BDLFlBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUMvQixZQUFJLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFN0IsWUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBRWpCLGVBQU8sSUFBSSxFQUFFO0FBQ1gsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDNUIsa0JBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLGdCQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDL0IsZ0JBQUksR0FBRyxJQUFJLENBQUM7U0FDYjtBQUVELGVBQU8sSUFBSSxDQUFDO0tBQ2I7O0FBRUssYUFBQSxLQUFBLENBQWdCLE1BQWMsRUFBQTtBQUNsQyxZQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDcEMsWUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQy9CLFlBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUU3QixZQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsZUFBTyxJQUFJLEVBQUU7QUFDWCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUM1QixrQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixnQkFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQy9CLGdCQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2I7QUFFRCxlQUFPLElBQUksQ0FBQztLQUNiIiwiZmlsZSI6ImJvdW5kcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBCb3VuZHMge1xuICAvLyBhIG1ldGhvZCB0byBmdXR1cmUtcHJvb2YgZm9yIHdvcm1ob2xpbmc7IG1heSBub3QgYmUgbmVlZGVkIHVsdGltYXRlbHlcbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGUuRWxlbWVudDtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZS5Ob2RlO1xuICBsYXN0Tm9kZSgpOiBTaW1wbGUuTm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEN1cnNvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgcHVibGljIG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgQm91bmRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlQm91bmRzIGV4dGVuZHMgQm91bmRzLCBEZXN0cm95YWJsZSB7fVxuXG5leHBvcnQgY2xhc3MgUmVhbERPTUJvdW5kcyBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYm91bmRzOiBCb3VuZHMpIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKSBhcyBFbGVtZW50OyB9XG4gIGZpcnN0Tm9kZSgpIHsgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpIGFzIE5vZGU7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpIGFzIE5vZGU7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmNyZXRlQm91bmRzIGltcGxlbWVudHMgQm91bmRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBwcml2YXRlIGZpcnN0OiBTaW1wbGUuTm9kZSwgcHJpdmF0ZSBsYXN0OiBTaW1wbGUuTm9kZSkge31cblxuICBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5wYXJlbnROb2RlOyB9XG4gIGZpcnN0Tm9kZSgpIHsgcmV0dXJuIHRoaXMuZmlyc3Q7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLmxhc3Q7IH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbmdsZU5vZGVCb3VuZHMgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIHBhcmVudE5vZGU6IEVsZW1lbnQ7XG4gIHByaXZhdGUgbm9kZTogTm9kZTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbm9kZTogU2ltcGxlLk5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlIGFzIEVsZW1lbnQ7XG4gICAgdGhpcy5ub2RlID0gbm9kZSBhcyBOb2RlO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsgfVxuICBmaXJzdE5vZGUoKSB7IHJldHVybiB0aGlzLm5vZGU7IH1cbiAgbGFzdE5vZGUoKSB7IHJldHVybiB0aGlzLm5vZGU7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5kcyhwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBmaXJzdDogU2ltcGxlLk5vZGUsIGxhc3Q6IFNpbXBsZS5Ob2RlKTogQm91bmRzIHtcbiAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpbmdsZShwYXJlbnQ6IFNpbXBsZS5FbGVtZW50LCBub2RlOiBTaW1wbGUuTm9kZSk6IEJvdW5kcyB7XG4gIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZShib3VuZHM6IEJvdW5kcywgcmVmZXJlbmNlOiBTaW1wbGUuTm9kZSkge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBub2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBsZXQgbmV4dCA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIGlmIChub2RlID09PSBsYXN0KSByZXR1cm4gbmV4dDtcbiAgICBub2RlID0gbmV4dDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYm91bmRzOiBCb3VuZHMpOiBTaW1wbGUuTm9kZSB7XG4gIGxldCBwYXJlbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICBsZXQgZmlyc3QgPSBib3VuZHMuZmlyc3ROb2RlKCk7XG4gIGxldCBsYXN0ID0gYm91bmRzLmxhc3ROb2RlKCk7XG5cbiAgbGV0IG5vZGUgPSBmaXJzdDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGxldCBuZXh0ID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgaWYgKG5vZGUgPT09IGxhc3QpIHJldHVybiBuZXh0O1xuICAgIG5vZGUgPSBuZXh0O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0= 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'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var First = (function () { function First(node) { - _classCallCheck(this, First); - this.node = node; } First.prototype.firstNode = function firstNode() { return this.node; @@ -13892,63 +14785,22 @@ return First; })(); var Last = (function () { function Last(node) { - _classCallCheck(this, Last); - this.node = node; } Last.prototype.lastNode = function lastNode() { return this.node; }; return Last; })(); - var BlockStackElement = function BlockStackElement() { - _classCallCheck(this, BlockStackElement); - - this.firstNode = null; - this.lastNode = null; - }; - - var GroupedElementOperations = (function () { - function GroupedElementOperations(element, env) { - _classCallCheck(this, GroupedElementOperations); - - this.env = env; - this.element = element; - var group = this.group = []; - this.groups = [group]; - } - - GroupedElementOperations.prototype.startGroup = function startGroup() { - var group = this.group = []; - this.groups.push(group); - }; - - GroupedElementOperations.prototype.addAttribute = function addAttribute(name, reference, isTrusting) { - var attributeManager = this.env.attributeFor(this.element, name, reference, isTrusting); - var attribute = new _glimmerRuntimeLibCompiledOpcodesDom.Attribute(this.element, attributeManager, name, reference); - this.group.push(attribute); - }; - - GroupedElementOperations.prototype.addAttributeNS = function addAttributeNS(namespace, name, reference, isTrusting) { - var attributeManager = this.env.attributeFor(this.element, name, reference, isTrusting, namespace); - var nsAttribute = new _glimmerRuntimeLibCompiledOpcodesDom.Attribute(this.element, attributeManager, name, reference, namespace); - this.group.push(nsAttribute); - }; - - return GroupedElementOperations; - })(); - var Fragment = (function () { function Fragment(bounds) { - _classCallCheck(this, Fragment); - this.bounds = bounds; } Fragment.prototype.parentElement = function parentElement() { return this.bounds.parentElement(); @@ -13971,21 +14823,21 @@ exports.Fragment = Fragment; var ElementStack = (function () { function ElementStack(env, parentNode, nextSibling) { - _classCallCheck(this, ElementStack); - - this.elementOperations = null; + this.constructing = null; + this.operations = null; this.elementStack = new _glimmerUtil.Stack(); this.nextSiblingStack = new _glimmerUtil.Stack(); - this.elementOperationsStack = new _glimmerUtil.Stack(); this.blockStack = new _glimmerUtil.Stack(); this.env = env; - this.dom = env.getDOM(); + 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); } ElementStack.forInitialRender = function forInitialRender(env, parentNode, nextSibling) { @@ -14001,42 +14853,33 @@ ElementStack.prototype.block = function block() { return this.blockStack.current; }; - ElementStack.prototype.pushElement = function pushElement(tag) { - var element = this.dom.createElement(tag, this.element); - var elementOperations = new GroupedElementOperations(element, this.env); - this.elementOperations = elementOperations; - this.element = element; - this.nextSibling = null; - this.elementStack.push(element); - this.elementOperationsStack.push(elementOperations); - this.nextSiblingStack.push(null); - return element; - }; - ElementStack.prototype.popElement = function popElement() { var elementStack = this.elementStack; var nextSiblingStack = this.nextSiblingStack; - var elementOperationsStack = this.elementOperationsStack; var topElement = elementStack.pop(); nextSiblingStack.pop(); - elementOperationsStack.pop(); this.element = elementStack.current; this.nextSibling = nextSiblingStack.current; - this.elementOperations = elementOperationsStack.current; return topElement; }; - ElementStack.prototype.pushBlock = function pushBlock() { - var tracker = new BlockTracker(this.element); + 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 current = this.blockStack.current; if (current !== null) { current.newDestroyable(tracker); current.newBounds(tracker); @@ -14060,15 +14903,30 @@ this.blockStack.current.finalize(this); return this.blockStack.pop(); }; ElementStack.prototype.openElement = function openElement(tag) { - var element = this.pushElement(tag); - this.blockStack.current.openElement(element); + 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.element = this.constructing; + this.dom.insertBefore(parent, element, this.nextSibling); + this.constructing = null; + this.operations = null; + this.nextSibling = null; + this.elementStack.push(element); + this.nextSiblingStack.push(null); + this.blockStack.current.openElement(element); + }; + ElementStack.prototype.newDestroyable = function newDestroyable(d) { this.blockStack.current.newDestroyable(d); }; ElementStack.prototype.newBounds = function newBounds(bounds) { @@ -14091,99 +14949,117 @@ dom.insertBefore(this.element, comment, this.nextSibling); this.blockStack.current.newNode(comment); return comment; }; - ElementStack.prototype.setAttribute = function setAttribute(name, reference, isTrusting) { - this.elementOperations.addAttribute(name, reference, isTrusting); + ElementStack.prototype.setStaticAttribute = function setStaticAttribute(name, value) { + this.operations.addStaticAttribute(this.constructing, name, value); }; - ElementStack.prototype.setAttributeNS = function setAttributeNS(namespace, name, reference, isTrusting) { - this.elementOperations.addAttributeNS(namespace, name, reference, isTrusting); + 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(); - var child = this.popElement(); - this.dom.insertBefore(this.element, child, this.nextSibling); + this.popElement(); }; return ElementStack; })(); exports.ElementStack = ElementStack; - var BlockTracker = (function () { - function BlockTracker(parent) { - _classCallCheck(this, BlockTracker); - + var SimpleBlockTracker = (function () { + function SimpleBlockTracker(parent) { + this.parent = parent; this.first = null; this.last = null; this.destroyables = null; this.nesting = 0; this.parent = parent; } - BlockTracker.prototype.destroy = function destroy() { + SimpleBlockTracker.prototype.destroy = function destroy() { var destroyables = this.destroyables; if (destroyables && destroyables.length) { for (var i = 0; i < destroyables.length; i++) { destroyables[i].destroy(); } } }; - BlockTracker.prototype.parentElement = function parentElement() { + SimpleBlockTracker.prototype.parentElement = function parentElement() { return this.parent; }; - BlockTracker.prototype.firstNode = function firstNode() { + SimpleBlockTracker.prototype.firstNode = function firstNode() { return this.first && this.first.firstNode(); }; - BlockTracker.prototype.lastNode = function lastNode() { + SimpleBlockTracker.prototype.lastNode = function lastNode() { return this.last && this.last.lastNode(); }; - BlockTracker.prototype.openElement = function openElement(element) { + SimpleBlockTracker.prototype.openElement = function openElement(element) { this.newNode(element); this.nesting++; }; - BlockTracker.prototype.closeElement = function closeElement() { + SimpleBlockTracker.prototype.closeElement = function closeElement() { this.nesting--; }; - BlockTracker.prototype.newNode = function newNode(node) { + SimpleBlockTracker.prototype.newNode = function newNode(node) { if (this.nesting !== 0) return; if (!this.first) { this.first = new First(node); } this.last = new Last(node); }; - BlockTracker.prototype.newBounds = function newBounds(bounds) { + SimpleBlockTracker.prototype.newBounds = function newBounds(bounds) { if (this.nesting !== 0) return; if (!this.first) { this.first = bounds; } this.last = bounds; }; - BlockTracker.prototype.newDestroyable = function newDestroyable(d) { + SimpleBlockTracker.prototype.newDestroyable = function newDestroyable(d) { this.destroyables = this.destroyables || []; this.destroyables.push(d); }; - BlockTracker.prototype.finalize = function finalize(stack) { + SimpleBlockTracker.prototype.finalize = function finalize(stack) { if (!this.first) { stack.appendComment(''); } }; - BlockTracker.prototype.reset = function reset(env) { + return SimpleBlockTracker; + })(); + + exports.SimpleBlockTracker = SimpleBlockTracker; + + var UpdatableBlockTracker = (function (_SimpleBlockTracker) { + babelHelpers.inherits(UpdatableBlockTracker, _SimpleBlockTracker); + + function UpdatableBlockTracker() { + _SimpleBlockTracker.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]); @@ -14194,21 +15070,21 @@ this.first = null; this.last = null; return nextSibling; }; - return BlockTracker; - })(); + return UpdatableBlockTracker; + })(SimpleBlockTracker); - exports.BlockTracker = BlockTracker; + exports.UpdatableBlockTracker = UpdatableBlockTracker; var BlockListTracker = (function () { function BlockListTracker(parent, boundList) { - _classCallCheck(this, BlockListTracker); - 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(); @@ -14243,105 +15119,129 @@ BlockListTracker.prototype.newDestroyable = function newDestroyable(d) {}; BlockListTracker.prototype.finalize = function finalize(stack) {}; - BlockListTracker.prototype.reset = function reset() {}; - return BlockListTracker; })(); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQXdCQSxLQUFBO0FBR0UsaUJBSEYsS0FBQSxDQUdjLElBQUksRUFBQTtrQ0FIbEIsS0FBQTs7QUFJSSxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBTEgsYUFBQSxXQU9FLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7O2VBVEgsS0FBQTs7O1FBWUEsSUFBQTtBQUdFLGlCQUhGLElBQUEsQ0FHYyxJQUFJLEVBQUE7a0NBSGxCLElBQUE7O0FBSUksZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQUxILFlBQUEsV0FPRSxRQUFRLEdBQUEsb0JBQUE7QUFDTixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCOztlQVRILElBQUE7OztRQXNCQSxpQkFBQSxHQUFBLFNBQUEsaUJBQUEsR0FBQTs4QkFBQSxpQkFBQTs7QUFDUyxZQUFBLENBQUEsU0FBUyxHQUFTLElBQUksQ0FBQztBQUN2QixZQUFBLENBQUEsUUFBUSxHQUFTLElBQUksQ0FBQztLQUM5Qjs7UUFPRCx3QkFBQTtBQU9FLGlCQVBGLHdCQUFBLENBT2MsT0FBZ0IsRUFBRSxHQUFnQixFQUFBO2tDQVBoRCx3QkFBQTs7QUFRSSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdkIsZ0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkI7O0FBWkgsZ0NBQUEsV0FjRSxVQUFVLEdBQUEsc0JBQUE7QUFDUixnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFD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QUEsd0JBQUMsQ0FBYyxFQUFBLEVBQzVCOztBQXpDSCx3QkFBQSxXQTJDRSxRQUFRLEdBQUEsa0JBQUMsS0FBbUIsRUFBQSxFQUMzQjs7QUE1Q0gsd0JBQUEsV0E4Q0UsS0FBSyxHQUFBLGlCQUFBLEVBQUs7O2VBOUNaLGdCQUFBIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQm91bmRzLCB7IGNsZWFyLCBDdXJzb3IgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmltcG9ydCB7IERPTUhlbHBlciB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IERlc3Ryb3lhYmxlLCBJbnRlcm5lZFN0cmluZywgU3RhY2ssIExpbmtlZExpc3QsIExpbmtlZExpc3ROb2RlLCBhc3NlcnQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5pbXBvcnQge1xuICBQYXRoUmVmZXJlbmNlXG59IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuaW1wb3J0IHtcbiAgQXR0cmlidXRlXG59IGZyb20gJy4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuXG5pbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IE5vZGU7XG59XG5cbmludGVyZmFjZSBMYXN0Tm9kZSB7XG4gIGxhc3ROb2RlKCk6IE5vZGU7XG59XG5cbmNsYXNzIEZpcnN0IHtcbiAgcHJpdmF0ZSBub2RlOiBOb2RlO1xuXG4gIGNvbnN0cnVjdG9yKG5vZGUpIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGFzdCB7XG4gIHByaXZhdGUgbm9kZTogTm9kZTtcblxuICBjb25zdHJ1Y3Rvcihub2RlKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEVsZW1lbnRTdGFja09wdGlvbnMge1xuICBwYXJlbnROb2RlOiBFbGVtZW50O1xuICBuZXh0U2libGluZzogTm9kZTtcbiAgZG9tOiBET01IZWxwZXI7XG59XG5cbmludGVyZmFjZSBFbGVtZW50U3RhY2tDbGFzczxUIGV4dGVuZHMgRWxlbWVudFN0YWNrPiB7XG4gIG5ldyAob3B0aW9uczogRWxlbWVudFN0YWNrT3B0aW9ucyk6IFQ7XG59XG5cbmNsYXNzIEJsb2NrU3RhY2tFbGVtZW50IHtcbiAgcHVibGljIGZpcnN0Tm9kZTogTm9kZSA9IG51bGw7XG4gIHB1YmxpYyBsYXN0Tm9kZTogTm9kZSA9IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wZXJhdGlvbnMge1xuICBhZGRBdHRyaWJ1dGUobmFtZTogSW50ZXJuZWRTdHJpbmcsIHZhbHVlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pO1xuICBhZGRBdHRyaWJ1dGVOUyhuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nLCBuYW1lOiBJbnRlcm5lZFN0cmluZywgdmFsdWU6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik7XG59XG5cbmNsYXNzIEdyb3VwZWRFbGVtZW50T3BlcmF0aW9ucyBpbXBsZW1lbnRzIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgcHVibGljIGdyb3VwczogQXR0cmlidXRlW11bXTtcbiAgcHVibGljIGdyb3VwOiBBdHRyaWJ1dGVbXTtcblxuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgZWxlbWVudDogRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50LCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmdyb3VwID0gW107XG4gICAgdGhpcy5ncm91cHMgPSBbZ3JvdXBdO1xuICB9XG5cbiAgc3RhcnRHcm91cCgpIHtcbiAgICBsZXQgZ3JvdXAgPSB0aGlzLmdyb3VwID0gW107XG4gICAgdGhpcy5ncm91cHMucHVzaChncm91cCk7XG4gIH1cblxuICBhZGRBdHRyaWJ1dGUobmFtZTogSW50ZXJuZWRTdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IodGhpcy5lbGVtZW50LCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgQXR0cmlidXRlKHRoaXMuZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlKTtcbiAgICB0aGlzLmdyb3VwLnB1c2goYXR0cmlidXRlKTtcbiAgfVxuXG4gIGFkZEF0dHJpYnV0ZU5TKG5hbWVzcGFjZTogSW50ZXJuZWRTdHJpbmcsIG5hbWU6IEludGVybmVkU3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKHRoaXMuZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSwgbmFtZXNwYWNlKTtcblxuICAgIHRoaXMuZ3JvdXAucHVzaChuc0F0dHJpYnV0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50IGltcGxlbWVudHMgQm91bmRzIHtcbiAgcHJpdmF0ZSBib3VuZHM6IEJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IE5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgdXBkYXRlKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEluaXRpYWxSZW5kZXJPcHRpb25zIHtcbiAgcGFyZW50Tm9kZTogRWxlbWVudDtcbiAgbmV4dFNpYmxpbmc6IE5vZGU7XG4gIGRvbTogRE9NSGVscGVyO1xufVxuXG5pbnRlcmZhY2UgVXBkYXRlVHJhY2tlck9wdGlvbnMge1xuICB0cmFja2VyOiBUcmFja2VyO1xuICBuZXh0U2libGluZzogTm9kZTtcbiAgZG9tOiBET01IZWxwZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50U3RhY2sgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBwdWJsaWMgbmV4dFNpYmxpbmc6IE5vZGU7XG4gIHB1YmxpYyBkb206IERPTUhlbHBlcjtcbiAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnQ7XG4gIHB1YmxpYyBlbGVtZW50T3BlcmF0aW9uczogR3JvdXBlZEVsZW1lbnRPcGVyYXRpb25zID0gbnVsbDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBlbGVtZW50U3RhY2sgPSBuZXcgU3RhY2s8RWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBuZXh0U2libGluZ1N0YWNrID0gbmV3IFN0YWNrPE5vZGU+KCk7XG4gIHByaXZhdGUgZWxlbWVudE9wZXJhdGlvbnNTdGFjayA9IG5ldyBTdGFjazxHcm91cGVkRWxlbWVudE9wZXJhdGlvbnM+KCk7XG4gIHByaXZhdGUgYmxvY2tTdGFjayA9IG5ldyBTdGFjazxUcmFja2VyPigpO1xuXG4gIHN0YXRpYyBmb3JJbml0aWFsUmVuZGVyKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlKSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIHRyYWNrZXI6IFRyYWNrZXIsIG5leHRTaWJsaW5nOiBOb2RlKSB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0cmFja2VyLnBhcmVudEVsZW1lbnQoKTtcblxuICAgIGxldCBzdGFjayA9IG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gICAgc3RhY2sucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5lbGVtZW50ID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2godGhpcy5uZXh0U2libGluZyk7XG4gIH1cblxuICBibG9jaygpOiBUcmFja2VyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwcml2YXRlIHB1c2hFbGVtZW50KHRhZzogSW50ZXJuZWRTdHJpbmcpOiBFbGVtZW50IHtcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQodGFnLCB0aGlzLmVsZW1lbnQpO1xuICAgIGxldCBlbGVtZW50T3BlcmF0aW9ucyA9IG5ldyBHcm91cGVkRWxlbWVudE9wZXJhdGlvbnMoZWxlbWVudCwgdGhpcy5lbnYpO1xuXG4gICAgdGhpcy5lbGVtZW50T3BlcmF0aW9ucyA9IGVsZW1lbnRPcGVyYXRpb25zO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgIHRoaXMuZWxlbWVudE9wZXJhdGlvbnNTdGFjay5wdXNoKGVsZW1lbnRPcGVyYXRpb25zKTtcbiAgICB0aGlzLm5leHRTaWJsaW5nU3RhY2sucHVzaChudWxsKTtcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBwb3BFbGVtZW50KCkge1xuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgbmV4dFNpYmxpbmdTdGFjaywgZWxlbWVudE9wZXJhdGlvbnNTdGFjayB9ICA9IHRoaXM7XG5cbiAgICBsZXQgdG9wRWxlbWVudCA9IGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBuZXh0U2libGluZ1N0YWNrLnBvcCgpO1xuICAgIGVsZW1lbnRPcGVyYXRpb25zU3RhY2sucG9wKCk7XG5cbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50U3RhY2suY3VycmVudDtcbiAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmdTdGFjay5jdXJyZW50O1xuICAgIHRoaXMuZWxlbWVudE9wZXJhdGlvbnMgPSBlbGVtZW50T3BlcmF0aW9uc1N0YWNrLmN1cnJlbnQ7XG5cbiAgICByZXR1cm4gdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1c2hCbG9jaygpOiBUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwcml2YXRlIHB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcjogVHJhY2tlcikge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgQmxvY2tMaXN0VHJhY2tlcih0aGlzLmVsZW1lbnQsIGxpc3QpO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcG9wQmxvY2soKTogVHJhY2tlciB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBJbnRlcm5lZFN0cmluZyk6IEVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5wdXNoRWxlbWVudCh0YWcpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50Lm9wZW5FbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50Lm5ld0JvdW5kcyhib3VuZHMpO1xuICB9XG5cbiAgYXBwZW5kVGV4dChzdHJpbmc6IHN0cmluZyk6IFRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IENvbW1lbnQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgY29tbWVudCA9IGRvbS5jcmVhdGVDb21tZW50KHN0cmluZyk7XG4gICAgZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIGNvbW1lbnQsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50Lm5ld05vZGUoY29tbWVudCk7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGUobmFtZTogSW50ZXJuZWRTdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5lbGVtZW50T3BlcmF0aW9ucy5hZGRBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZTogSW50ZXJuZWRTdHJpbmcsIG5hbWU6IEludGVybmVkU3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuZWxlbWVudE9wZXJhdGlvbnMuYWRkQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50LmNsb3NlRWxlbWVudCgpO1xuICAgIGxldCBjaGlsZCA9IHRoaXMucG9wRWxlbWVudCgpO1xuICAgIHRoaXMuZG9tLmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIGNoaWxkLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrZXIgZXh0ZW5kcyBCb3VuZHMsIERlc3Ryb3lhYmxlIHtcbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk7XG4gIGNsb3NlRWxlbWVudCgpO1xuICBuZXdOb2RlKG5vZGU6IE5vZGUpO1xuICBuZXdCb3VuZHMoYm91bmRzOiBCb3VuZHMpO1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk7XG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spO1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTtcbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcml2YXRlIGZpcnN0OiBGaXJzdE5vZGUgPSBudWxsO1xuICBwcml2YXRlIGxhc3Q6IExhc3ROb2RlID0gbnVsbDtcbiAgcHJpdmF0ZSBkZXN0cm95YWJsZXM6IERlc3Ryb3lhYmxlW10gPSBudWxsO1xuICBwcml2YXRlIG5lc3RpbmcgPSAwO1xuXG4gIHByaXZhdGUgcGFyZW50OiBFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogRWxlbWVudCl7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IGRlc3Ryb3lhYmxlcyB9ID0gdGhpcztcblxuICAgIGlmIChkZXN0cm95YWJsZXMgJiYgZGVzdHJveWFibGVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaT0wOyBpPGRlc3Ryb3lhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkZXN0cm95YWJsZXNbaV0uZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICB9XG5cbiAgZmlyc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmZpcnN0ICYmIHRoaXMuZmlyc3QuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0ICYmIHRoaXMubGFzdC5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHRoaXMubmV3Tm9kZShlbGVtZW50KTtcbiAgICB0aGlzLm5lc3RpbmcrKztcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLm5lc3RpbmctLTtcbiAgfVxuXG4gIG5ld05vZGUobm9kZTogTm9kZSkge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IG5ldyBGaXJzdChub2RlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBuZXcgTGFzdChub2RlKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICAgIGlmICh0aGlzLm5lc3RpbmcgIT09IDApIHJldHVybjtcblxuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgdGhpcy5maXJzdCA9IGJvdW5kcztcbiAgICB9XG5cbiAgICB0aGlzLmxhc3QgPSBib3VuZHM7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuZGVzdHJveWFibGVzID0gdGhpcy5kZXN0cm95YWJsZXMgfHwgW107XG4gICAgdGhpcy5kZXN0cm95YWJsZXMucHVzaChkKTtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgICBpZiAoIXRoaXMuZmlyc3QpIHtcbiAgICAgIHN0YWNrLmFwcGVuZENvbW1lbnQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBkZXN0cm95YWJsZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVzdHJveWFibGVzICYmIGRlc3Ryb3lhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkZXN0cm95YWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZW52LmRpZERlc3Ryb3koZGVzdHJveWFibGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcih0aGlzKTtcblxuICAgIHRoaXMuZGVzdHJveWFibGVzID0gbnVsbDtcbiAgICB0aGlzLmZpcnN0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3QgPSBudWxsO1xuXG4gICAgcmV0dXJuIG5leHRTaWJsaW5nO1xuICB9XG59XG5cbmNsYXNzIEJsb2NrTGlzdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcHJpdmF0ZSBwYXJlbnQ6IEVsZW1lbnQ7XG4gIHByaXZhdGUgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogRWxlbWVudCwgYm91bmRMaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5ib3VuZExpc3QgPSBib3VuZExpc3Q7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRMaXN0LmZvckVhY2hOb2RlKG5vZGUgPT4gbm9kZS5kZXN0cm95KCkpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRMaXN0LmhlYWQoKS5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kTGlzdC50YWlsKCkubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3Qgb3BlbkVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBjbG9zZUVsZW1lbnQgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Tm9kZShub2RlOiBOb2RlKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNyZWF0ZSBhIG5ldyBub2RlIGRpcmVjdGx5IGluc2lkZSBhIGJsb2NrIGxpc3QnKTtcbiAgfVxuXG4gIG5ld0JvdW5kcyhib3VuZHM6IEJvdW5kcykge1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgfVxuXG4gIGZpbmFsaXplKHN0YWNrOiBFbGVtZW50U3RhY2spIHtcbiAgfVxuXG4gIHJlc2V0KCkge31cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUE0QkEsS0FBQTtBQUdFLGlCQUhGLEtBQUEsQ0FHYyxJQUFJLEVBQUE7QUFDZCxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBTEgsYUFBQSxXQU9FLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7O2VBVEgsS0FBQTs7O1FBWUEsSUFBQTtBQUdFLGlCQUhGLElBQUEsQ0FHYyxJQUFJLEVBQUE7QUFDZCxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBTEgsWUFBQSxXQU9FLFFBQVEsR0FBQSxvQkFBQTtBQUNOLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7O2VBVEgsSUFBQTs7O1FBb0JNLFFBQUE7QUFHSixpQkFISSxRQUFBLENBR1EsTUFBYyxFQUFBO0FBQ3hCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7QUFMRyxnQkFBQSxXQU9KLGFBQWEsR0FBQSx5QkFBQTtBQUNYLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDcEM7O0FBVEcsZ0JBQUEsV0FXSixTQUFTLEdBQUEscUJBQUE7QUFDUCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2hDOztBQWJHLGdCQUFBLFdBZUosUUFBUSxHQUFBLG9CQUFBO0FBQ04sbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMvQjs7QUFqQkcsZ0JBQUEsV0FtQkosTUFBTSxHQUFBLGdCQUFDLE1BQWMsRUFBQTtBQUNuQixnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7O2VBckJHLFFBQUE7Ozs7O1FBd0JBLFlBQUE7QUE0QkosaUJBNUJJLFlBQUEsQ0E0QlEsR0FBZ0Is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OztBQXhCSCx3QkFBQSxXQTBCRSxZQUFZLEdBQUEsd0JBQUE7QUFDVix5QkE5WHFELE1BQU0sQ0E4WHBELEtBQUssRUFBRSxrREFBa0QsQ0FBQyxDQUFDO1NBQ25FOztBQTVCSCx3QkFBQSxXQThCRSxPQUFPLEdBQUEsaUJBQUMsSUFBVSxFQUFBO0FBQ2hCLHlCQWxZcUQsTUFBTSxDQWtZcEQsS0FBSyxFQUFFLHVEQUF1RCxDQUFDLENBQUM7U0FDeEU7O0FBaENILHdCQUFBLFdBa0NFLFNBQVMsR0FBQSxtQkFBQyxNQUFjLEVBQUEsRUFDdkI7O0FBbkNILHdCQUFBLFdBcUNFLGNBQWMsR0FBQSx3QkFBQyxDQUFjLEVBQUEsRUFDNUI7O0FBdENILHdCQUFBLFdBd0NFLFFBQVEsR0FBQSxrQkFBQyxLQUFtQixFQUFBLEVBQzNCOztlQXpDSCxnQkFBQSIsImZpbGUiOiJidWlsZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJvdW5kcywgeyBDdXJzb3IsIERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciB9IGZyb20gJy4vYm91bmRzJztcblxuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5cbmltcG9ydCB7IERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlua2VkTGlzdE5vZGUsIGFzc2VydCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5cbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5cbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2Vcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuXG5pbXBvcnQge1xuICBTaW1wbGVFbGVtZW50T3BlcmF0aW9uc1xufSBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbnRlcmZhY2UgRmlyc3ROb2RlIHtcbiAgZmlyc3ROb2RlKCk6IFNpbXBsZS5Ob2RlO1xufVxuXG5pbnRlcmZhY2UgTGFzdE5vZGUge1xuICBsYXN0Tm9kZSgpOiBTaW1wbGUuTm9kZTtcbn1cblxuY2xhc3MgRmlyc3Qge1xuICBwcml2YXRlIG5vZGU6IE5vZGU7XG5cbiAgY29uc3RydWN0b3Iobm9kZSkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBmaXJzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMYXN0IHtcbiAgcHJpdmF0ZSBub2RlOiBOb2RlO1xuXG4gIGNvbnN0cnVjdG9yKG5vZGUpIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpO1xuICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik7XG4gIGFkZER5bmFtaWNBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbik7XG4gIGZsdXNoKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCB2bTogVk0pO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhZ21lbnQgaW1wbGVtZW50cyBCb3VuZHMge1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzO1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCk6IFNpbXBsZS5FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZS5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpOiBTaW1wbGUuTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICB1cGRhdGUoYm91bmRzOiBCb3VuZHMpIHtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudFN0YWNrIGltcGxlbWVudHMgQ3Vyc29yIHtcbiAgcHVibGljIG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZTtcbiAgcHVibGljIGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbjtcbiAgcHVibGljIHVwZGF0ZU9wZXJhdGlvbnM6IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rpbmc6IFNpbXBsZS5FbGVtZW50ID0gbnVsbDtcbiAgcHVibGljIG9wZXJhdGlvbnM6IEVsZW1lbnRPcGVyYXRpb25zID0gbnVsbDtcbiAgcHVibGljIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50O1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwcml2YXRlIGVsZW1lbnRTdGFjayA9IG5ldyBTdGFjazxTaW1wbGUuRWxlbWVudD4oKTtcbiAgcHJpdmF0ZSBuZXh0U2libGluZ1N0YWNrID0gbmV3IFN0YWNrPFNpbXBsZS5Ob2RlPigpO1xuICBwcml2YXRlIGJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8VHJhY2tlcj4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcGVyYXRpb25zOiBFbGVtZW50T3BlcmF0aW9ucztcblxuICBzdGF0aWMgZm9ySW5pdGlhbFJlbmRlcihlbnY6IEVudmlyb25tZW50LCBwYXJlbnROb2RlOiBTaW1wbGUuRWxlbWVudCwgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlKSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gIH1cblxuICBzdGF0aWMgcmVzdW1lKGVudjogRW52aXJvbm1lbnQsIHRyYWNrZXI6IFRyYWNrZXIsIG5leHRTaWJsaW5nOiBOb2RlKSB7XG4gICAgbGV0IHBhcmVudE5vZGUgPSB0cmFja2VyLnBhcmVudEVsZW1lbnQoKTtcblxuICAgIGxldCBzdGFjayA9IG5ldyBFbGVtZW50U3RhY2soZW52LCBwYXJlbnROb2RlLCBuZXh0U2libGluZyk7XG4gICAgc3RhY2sucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcblxuICAgIHJldHVybiBzdGFjaztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHBhcmVudE5vZGU6IFNpbXBsZS5FbGVtZW50LCBuZXh0U2libGluZzogU2ltcGxlLk5vZGUpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVPcGVyYXRpb25zID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuZWxlbWVudCA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nO1xuXG4gICAgdGhpcy5kZWZhdWx0T3BlcmF0aW9ucyA9IG5ldyBTaW1wbGVFbGVtZW50T3BlcmF0aW9ucyhlbnYpO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubmV4dFNpYmxpbmdTdGFjay5wdXNoKHRoaXMubmV4dFNpYmxpbmcpO1xuICB9XG5cbiAgYmxvY2soKTogVHJhY2tlciB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBwb3BFbGVtZW50KCkge1xuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgbmV4dFNpYmxpbmdTdGFjayB9ICA9IHRoaXM7XG5cbiAgICBsZXQgdG9wRWxlbWVudCA9IGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBuZXh0U2libGluZ1N0YWNrLnBvcCgpO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudFN0YWNrLmN1cnJlbnQ7XG4gICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nU3RhY2suY3VycmVudDtcblxuICAgIHJldHVybiB0b3BFbGVtZW50O1xuICB9XG5cbiAgcHVzaFNpbXBsZUJsb2NrKCk6IFRyYWNrZXIge1xuICAgIGxldCB0cmFja2VyID0gbmV3IFNpbXBsZUJsb2NrVHJhY2tlcih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucHVzaEJsb2NrVHJhY2tlcih0cmFja2VyKTtcbiAgICByZXR1cm4gdHJhY2tlcjtcbiAgfVxuXG4gIHB1c2hVcGRhdGFibGVCbG9jaygpOiBVcGRhdGFibGVUcmFja2VyIHtcbiAgICBsZXQgdHJhY2tlciA9IG5ldyBVcGRhdGFibGVCbG9ja1RyYWNrZXIodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcik7XG4gICAgcmV0dXJuIHRyYWNrZXI7XG4gIH1cblxuICBwcml2YXRlIHB1c2hCbG9ja1RyYWNrZXIodHJhY2tlcjogVHJhY2tlcikge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcHVzaEJsb2NrTGlzdChsaXN0OiBMaW5rZWRMaXN0PExpbmtlZExpc3ROb2RlICYgQm91bmRzICYgRGVzdHJveWFibGU+KTogVHJhY2tlciB7XG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgQmxvY2tMaXN0VHJhY2tlcih0aGlzLmVsZW1lbnQsIGxpc3QpO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQ7XG5cbiAgICBpZiAoY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY3VycmVudC5uZXdEZXN0cm95YWJsZSh0cmFja2VyKTtcbiAgICAgIGN1cnJlbnQubmV3Qm91bmRzKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYmxvY2tTdGFjay5wdXNoKHRyYWNrZXIpO1xuICAgIHJldHVybiB0cmFja2VyO1xuICB9XG5cbiAgcG9wQmxvY2soKTogVHJhY2tlciB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQuZmluYWxpemUodGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcy5ibG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQodGFnOiBzdHJpbmcsIG9wZXJhdGlvbnMgPSB0aGlzLmRlZmF1bHRPcGVyYXRpb25zKTogU2ltcGxlLkVsZW1lbnQge1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5kb20uY3JlYXRlRWxlbWVudCh0YWcsIHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnN0cnVjdGluZyA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gb3BlcmF0aW9ucztcblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIGxldCBwYXJlbnQgID0gdGhpcy5lbGVtZW50O1xuICAgIGxldCBlbGVtZW50ID0gdGhpcy5lbGVtZW50ID0gdGhpcy5jb25zdHJ1Y3Rpbmc7XG5cbiAgICB0aGlzLmRvbS5pbnNlcnRCZWZvcmUocGFyZW50LCBlbGVtZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMuY29uc3RydWN0aW5nID0gbnVsbDtcbiAgICB0aGlzLm9wZXJhdGlvbnMgPSBudWxsO1xuICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsO1xuICAgIHRoaXMuZWxlbWVudFN0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgdGhpcy5uZXh0U2libGluZ1N0YWNrLnB1c2gobnVsbCk7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQub3BlbkVsZW1lbnQoZWxlbWVudCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuYmxvY2tTdGFjay5jdXJyZW50Lm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQubmV3Qm91bmRzKGJvdW5kcyk7XG4gIH1cblxuICBhcHBlbmRUZXh0KHN0cmluZzogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB7IGRvbSB9ID0gdGhpcztcbiAgICBsZXQgdGV4dCA9IGRvbS5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCB0ZXh0LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdOb2RlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgYXBwZW5kQ29tbWVudChzdHJpbmc6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICBsZXQgeyBkb20gfSA9IHRoaXM7XG4gICAgbGV0IGNvbW1lbnQgPSBkb20uY3JlYXRlQ29tbWVudChzdHJpbmcpO1xuICAgIGRvbS5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBjb21tZW50LCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICB0aGlzLmJsb2NrU3RhY2suY3VycmVudC5uZXdOb2RlKGNvbW1lbnQpO1xuICAgIHJldHVybiBjb21tZW50O1xuICB9XG5cbiAgc2V0U3RhdGljQXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMub3BlcmF0aW9ucy5hZGRTdGF0aWNBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wZXJhdGlvbnMuYWRkU3RhdGljQXR0cmlidXRlTlModGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcGVyYXRpb25zLmFkZER5bmFtaWNBdHRyaWJ1dGUodGhpcy5jb25zdHJ1Y3RpbmcsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBzZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZXJhdGlvbnMuYWRkRHluYW1pY0F0dHJpYnV0ZU5TKHRoaXMuY29uc3RydWN0aW5nLCBuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5ibG9ja1N0YWNrLmN1cnJlbnQuY2xvc2VFbGVtZW50KCk7XG4gICAgdGhpcy5wb3BFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja2VyIGV4dGVuZHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBvcGVuRWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk7XG4gIGNsb3NlRWxlbWVudCgpO1xuICBuZXdOb2RlKG5vZGU6IFNpbXBsZS5Ob2RlKTtcbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKTtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpO1xuICBmaW5hbGl6ZShzdGFjazogRWxlbWVudFN0YWNrKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFRyYWNrZXIge1xuICBwcm90ZWN0ZWQgZmlyc3Q6IEZpcnN0Tm9kZSA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXN0OiBMYXN0Tm9kZSA9IG51bGw7XG4gIHByb3RlY3RlZCBkZXN0cm95YWJsZXM6IERlc3Ryb3lhYmxlW10gPSBudWxsO1xuICBwcm90ZWN0ZWQgbmVzdGluZyA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFNpbXBsZS5FbGVtZW50KXtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGRlc3Ryb3lhYmxlc1tpXS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3QgJiYgdGhpcy5maXJzdC5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmxhc3QgJiYgdGhpcy5sYXN0Lmxhc3ROb2RlKCk7XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgdGhpcy5uZXdOb2RlKGVsZW1lbnQpO1xuICAgIHRoaXMubmVzdGluZysrO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMubmVzdGluZy0tO1xuICB9XG5cbiAgbmV3Tm9kZShub2RlOiBOb2RlKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbmV3IEZpcnN0KG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IG5ldyBMYXN0KG5vZGUpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gICAgaWYgKHRoaXMubmVzdGluZyAhPT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0KSB7XG4gICAgICB0aGlzLmZpcnN0ID0gYm91bmRzO1xuICAgIH1cblxuICAgIHRoaXMubGFzdCA9IGJvdW5kcztcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cm95YWJsZXMgPSB0aGlzLmRlc3Ryb3lhYmxlcyB8fCBbXTtcbiAgICB0aGlzLmRlc3Ryb3lhYmxlcy5wdXNoKGQpO1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICAgIGlmICghdGhpcy5maXJzdCkge1xuICAgICAgc3RhY2suYXBwZW5kQ29tbWVudCgnJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRhYmxlVHJhY2tlciBleHRlbmRzIFRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KTtcbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0YWJsZUJsb2NrVHJhY2tlciBleHRlbmRzIFNpbXBsZUJsb2NrVHJhY2tlciBpbXBsZW1lbnRzIFVwZGF0YWJsZVRyYWNrZXIge1xuICByZXNldChlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHsgZGVzdHJveWFibGVzIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlc3Ryb3lhYmxlcyAmJiBkZXN0cm95YWJsZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpPTA7IGk8ZGVzdHJveWFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVudi5kaWREZXN0cm95KGRlc3Ryb3lhYmxlc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIodGhpcyk7XG5cbiAgICB0aGlzLmRlc3Ryb3lhYmxlcyA9IG51bGw7XG4gICAgdGhpcy5maXJzdCA9IG51bGw7XG4gICAgdGhpcy5sYXN0ID0gbnVsbDtcblxuICAgIHJldHVybiBuZXh0U2libGluZztcbiAgfVxufVxuXG5jbGFzcyBCbG9ja0xpc3RUcmFja2VyIGltcGxlbWVudHMgVHJhY2tlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTaW1wbGUuRWxlbWVudCwgcHJpdmF0ZSBib3VuZExpc3Q6IExpbmtlZExpc3Q8TGlua2VkTGlzdE5vZGUgJiBCb3VuZHMgJiBEZXN0cm95YWJsZT4pIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmJvdW5kTGlzdCA9IGJvdW5kTGlzdDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZExpc3QuZm9yRWFjaE5vZGUobm9kZSA9PiBub2RlLmRlc3Ryb3koKSk7XG4gIH1cblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZExpc3QuaGVhZCgpLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRMaXN0LnRhaWwoKS5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudCkge1xuICAgIGFzc2VydChmYWxzZSwgJ0Nhbm5vdCBvcGVuRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCAnQ2Fubm90IGNsb3NlRWxlbWVudCBkaXJlY3RseSBpbnNpZGUgYSBibG9jayBsaXN0Jyk7XG4gIH1cblxuICBuZXdOb2RlKG5vZGU6IE5vZGUpIHtcbiAgICBhc3NlcnQoZmFsc2UsICdDYW5ub3QgY3JlYXRlIGEgbmV3IG5vZGUgZGlyZWN0bHkgaW5zaWRlIGEgYmxvY2sgbGlzdCcpO1xuICB9XG5cbiAgbmV3Qm91bmRzKGJvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICB9XG5cbiAgZmluYWxpemUoc3RhY2s6IEVsZW1lbnRTdGFjaykge1xuICB9XG59XG4iXX0= 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.default = applyInnerHTMLFix; + exports.domChanges = domChanges; + exports.treeConstruction = treeConstruction; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - + 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 applyInnerHTMLFix(document, DOMHelperClass) { - if (!document) return DOMHelperClass; - 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 DOMHelperClass; - } + function domChanges(document, DOMChangesClass) { + if (!document) return DOMChangesClass; + if (!shouldApplyFix(document)) { + return DOMChangesClass; } - table = null; - 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>' } - }; var div = document.createElement('div'); - return (function (_DOMHelperClass) { - _inherits(DOMHelperWithInnerHTMLFix, _DOMHelperClass); + return (function (_DOMChangesClass) { + babelHelpers.inherits(DOMChangesWithInnerHTMLFix, _DOMChangesClass); - function DOMHelperWithInnerHTMLFix() { - _classCallCheck(this, DOMHelperWithInnerHTMLFix); - - _DOMHelperClass.apply(this, arguments); + function DOMChangesWithInnerHTMLFix() { + _DOMChangesClass.apply(this, arguments); } - DOMHelperWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) { + DOMChangesWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) { if (html === null || html === '') { - return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); } var parentTag = parent.tagName.toLowerCase(); var wrapper = innerHTMLWrapper[parentTag]; if (wrapper === undefined) { - return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); } - 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]; - } + return fixInnerHTML(parent, wrapper, div, html, nextSibling); + }; - var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(parentNode, parent, nextSibling); + return DOMChangesWithInnerHTMLFix; + })(DOMChangesClass); + } - var first = _moveNodesBefore[0]; - var last = _moveNodesBefore[1]; + 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); - return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last); + 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 DOMHelperWithInnerHTMLFix; - })(DOMHelperClass); + return DOMTreeConstructionWithInnerHTMLFix; + })(DOMTreeConstructionClass); } -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L2lubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFVQSxpQkFBQTs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQUEsaUJBQUEsQ0FBMEMsUUFBa0IsRUFBRSxjQUFnQyxFQUFBO0FBQzVGLFlBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxjQUFjLENBQUM7QUFFckMsWUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUU1QyxZQUFJO0FBQ0YsaUJBQUssQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7U0FDcEMsQ0FBQSxPQUFPLENBQUMsRUFBRSxFQUNYLFNBQVM7QUFDUixnQkFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRWpDLHVCQUFPLGNBQWMsQ0FBQzthQUN2QjtTQUNGO0FBRUQsYUFBSyxHQUFHLElBQUksQ0FBQztBQUViLFlBQUksZ0JBQWdCLEdBQUc7QUFDckIsb0JBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtBQUNqRixpQkFBSyxFQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7QUFDNUQsaUJBQUssRUFBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtBQUMzRSxpQkFBSyxFQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO0FBQzNFLGlCQUFLLEVBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7QUFDM0UsY0FBRSxFQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO1NBQ3JGLENBQUM7QUFFRixZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXhDO3NCQUFPLHlCQUFBOztxQkFBQSx5QkFBQTtzQ0FBQSx5QkFBQTs7Ozs7QUFBQSxxQ0FBQSxXQUNMLGdCQUFnQixHQUFBLDBCQUFDLE1BQW1CLEVBQUUsV0FBaUIsRUFBRSxJQUFZLEVBQUE7QUFDbkUsb0JBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2hDLDJCQUFPLDBCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7QUFFRCxvQkFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM3QyxvQkFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFMUMsb0JBQUcsT0FBTyxLQUFLLFNBQVMsRUFBRTtBQUN4QiwyQkFBTywwQkFBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzFEO0FBRUQsb0JBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFeEQsbUJBQUcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBRTVCLG9CQUFJLFVBQVUsR0FBUyxHQUFHLENBQUM7QUFFM0IscUJBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xDLDhCQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdkM7O3VDQUVtQiw0QkE1RGpCLGVBQWUsQ0E0RGtCLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDOztvQkFBL0QsS0FBSztvQkFBRSxJQUFJOztBQUNoQix1QkFBTyw2QkE5REksY0FBYyxDQThEQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hEOzttQkF6QkkseUJBQUE7V0FBd0MsY0FBYyxFQTBCM0Q7S0FDSCIsImZpbGUiOiJpbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01IZWxwZXIgfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuLy8gUGF0Y2g6ICAgIGlubmVySFRNTCBGaXhcbi8vIEJyb3dzZXJzOiBJRTlcbi8vIFJlYXNvbjogICBJRTkgZG9uJ3QgYWxsb3cgdXMgdG8gc2V0IGlubmVySFRNTCBvbiBjb2wsIGNvbGdyb3VwLCBmcmFtZXNldCxcbi8vICAgICAgICAgICBodG1sLCBzdHlsZSwgdGFibGUsIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRpdGxlLCB0ci5cbi8vIEZpeDogICAgICBXcmFwIHRoZSBpbm5lckhUTUwgd2UgYXJlIGFib3V0IHRvIHNldCBpbiBpdHMgcGFyZW50cywgYXBwbHkgdGhlXG4vLyAgICAgICAgICAgd3JhcHBlZCBpbm5lckhUTUwgb24gYSBkaXYsIHRoZW4gbW92ZSB0aGUgdW53cmFwcGVkIG5vZGVzIGludG8gdGhlXG4vLyAgICAgICAgICAgdGFyZ2V0IHBvc2l0aW9uLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwbHlJbm5lckhUTUxGaXgoZG9jdW1lbnQ6IERvY3VtZW50LCBET01IZWxwZXJDbGFzczogdHlwZW9mIERPTUhlbHBlcik6IHR5cGVvZiBET01IZWxwZXIge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NSGVscGVyQ2xhc3M7XG5cbiAgbGV0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcblxuICB0cnkge1xuICAgIHRhYmxlLmlubmVySFRNTCA9ICc8dGJvZHk+PC90Ym9keT4nO1xuICB9IGNhdGNoIChlKSB7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIERPTUhlbHBlckNsYXNzO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlID0gbnVsbDtcblxuICBsZXQgaW5uZXJIVE1MV3JhcHBlciA9IHtcbiAgICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gICAgdGFibGU6ICAgIHsgZGVwdGg6IDEsIGJlZm9yZTogJzx0YWJsZT4nLCBhZnRlcjogJzwvdGFibGU+JyB9LFxuICAgIHRib2R5OiAgICB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5PicsIGFmdGVyOiAnPC90Ym9keT48L3RhYmxlPicgfSxcbiAgICB0Zm9vdDogICAgeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gICAgdGhlYWQ6ICAgIHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGhlYWQ+JywgYWZ0ZXI6ICc8L3RoZWFkPjwvdGFibGU+JyB9LFxuICAgIHRyOiAgICAgICB7IGRlcHRoOiAzLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5Pjx0cj4nLCBhZnRlcjogJzwvdHI+PC90Ym9keT48L3RhYmxlPicgfVxuICB9O1xuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgRE9NSGVscGVyV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUhlbHBlckNsYXNzIHtcbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJlbnRUYWcgPSBwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgbGV0IHdyYXBwZXIgPSBpbm5lckhUTUxXcmFwcGVyW3BhcmVudFRhZ107XG5cbiAgICAgIGlmKHdyYXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHdyYXBwZWRIdG1sID0gd3JhcHBlci5iZWZvcmUgKyBodG1sICsgd3JhcHBlci5hZnRlcjtcblxuICAgICAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuXG4gICAgICBsZXQgcGFyZW50Tm9kZTogTm9kZSA9IGRpdjtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPHdyYXBwZXIuZGVwdGg7IGkrKykge1xuICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgICAgfVxuXG4gICAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShwYXJlbnROb2RlLCBwYXJlbnQsIG5leHRTaWJsaW5nKTtcbiAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG4gICAgfVxuICB9O1xufVxuIl19 -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'; - exports.default = applyInnerHTMLFix; + 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]; + } - 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); } } return obj; } + var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(parentNode, parent, reference); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + var first = _moveNodesBefore[0]; + var last = _moveNodesBefore[1]; - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } + return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last); + } + 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; + } +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L2lubmVyLWh0bWwtZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLFFBQUksZ0JBQWdCLEdBQUc7QUFDckIsZ0JBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtBQUNqRixhQUFLLEVBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtBQUM1RCxhQUFLLEVBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7QUFDM0UsYUFBSyxFQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO0FBQzNFLGFBQUssRUFBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtBQUMzRSxVQUFFLEVBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7S0FDckYsQ0FBQzs7Ozs7Ozs7O0FBU0ksYUFBQSxVQUFBLENBQXFCLFFBQWtCLEVBQUUsZUFBa0MsRUFBQTtBQUMvRSxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sZUFBZSxDQUFDO0FBRXRDLFlBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDN0IsbUJBQU8sZUFBZSxDQUFDO1NBQ3hCO0FBRUQsWUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV4QztrQ0FBTywwQkFBaUM7O3FCQUFqQywwQkFBaUM7Ozs7QUFBakMs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S0FDaEQ7QUFFRCxhQUFBLGNBQUEsQ0FBd0IsUUFBUSxFQUFBO0FBQzlCLFlBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUMsWUFBSTtBQUNGLGlCQUFLLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDO1NBQ3BDLENBQUEsT0FBTyxDQUFDLEVBQUUsRUFDWCxTQUFTO0FBQ1IsZ0JBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOztBQUVqQyx1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYiIsImZpbGUiOiJpbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01DaGFuZ2VzLCBET01UcmVlQ29uc3RydWN0aW9uIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5cbmludGVyZmFjZSBXcmFwcGVyIHtcbiAgZGVwdGg6IG51bWJlcjtcbiAgYmVmb3JlOiBzdHJpbmc7XG4gIGFmdGVyOiBzdHJpbmc7XG59XG5cbmxldCBpbm5lckhUTUxXcmFwcGVyID0ge1xuICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gIHRhYmxlOiAgICB7IGRlcHRoOiAxLCBiZWZvcmU6ICc8dGFibGU+JywgYWZ0ZXI6ICc8L3RhYmxlPicgfSxcbiAgdGJvZHk6ICAgIHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+JywgYWZ0ZXI6ICc8L3Rib2R5PjwvdGFibGU+JyB9LFxuICB0Zm9vdDogICAgeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gIHRoZWFkOiAgICB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRoZWFkPicsIGFmdGVyOiAnPC90aGVhZD48L3RhYmxlPicgfSxcbiAgdHI6ICAgICAgIHsgZGVwdGg6IDMsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+PHRyPicsIGFmdGVyOiAnPC90cj48L3Rib2R5PjwvdGFibGU+JyB9XG59O1xuXG4vLyBQYXRjaDogICAgaW5uZXJIVE1MIEZpeFxuLy8gQnJvd3NlcnM6IElFOVxuLy8gUmVhc29uOiAgIElFOSBkb24ndCBhbGxvdyB1cyB0byBzZXQgaW5uZXJIVE1MIG9uIGNvbCwgY29sZ3JvdXAsIGZyYW1lc2V0LFxuLy8gICAgICAgICAgIGh0bWwsIHN0eWxlLCB0YWJsZSwgdGJvZHksIHRmb290LCB0aGVhZCwgdGl0bGUsIHRyLlxuLy8gRml4OiAgICAgIFdyYXAgdGhlIGlubmVySFRNTCB3ZSBhcmUgYWJvdXQgdG8gc2V0IGluIGl0cyBwYXJlbnRzLCBhcHBseSB0aGVcbi8vICAgICAgICAgICB3cmFwcGVkIGlubmVySFRNTCBvbiBhIGRpdiwgdGhlbiBtb3ZlIHRoZSB1bndyYXBwZWQgbm9kZXMgaW50byB0aGVcbi8vICAgICAgICAgICB0YXJnZXQgcG9zaXRpb24uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogRG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzczogdHlwZW9mIERPTUNoYW5nZXMpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQ6IEhUTUxFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHtcbiAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuXG4gICAgICBpZih3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaXhJbm5lckhUTUwocGFyZW50LCB3cmFwcGVyLCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50OiBEb2N1bWVudCwgRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzOiB0eXBlb2YgRE9NVHJlZUNvbnN0cnVjdGlvbikge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgRE9NVHJlZUNvbnN0cnVjdGlvbldpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuXG4gICAgICBpZih3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZml4SW5uZXJIVE1MKHBhcmVudDogSFRNTEVsZW1lbnQsIHdyYXBwZXI6IFdyYXBwZXIsIGRpdjogSFRNTEVsZW1lbnQsIGh0bWw6IHN0cmluZywgcmVmZXJlbmNlOiBOb2RlKTogQm91bmRzIHtcbiAgbGV0IHdyYXBwZWRIdG1sID0gd3JhcHBlci5iZWZvcmUgKyBodG1sICsgd3JhcHBlci5hZnRlcjtcblxuICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG5cbiAgbGV0IHBhcmVudE5vZGU6IE5vZGUgPSBkaXY7XG5cbiAgZm9yIChsZXQgaT0wOyBpPHdyYXBwZXIuZGVwdGg7IGkrKykge1xuICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbMF07XG4gIH1cblxuICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShwYXJlbnROb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gIGxldCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gIHRyeSB7XG4gICAgdGFibGUuaW5uZXJIVE1MID0gJzx0Ym9keT48L3Rib2R5Pic7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAodGFibGUuY2hpbGROb2Rlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIC8vIEl0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0= +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'; + exports.domChanges = domChanges; + exports.treeConstruction = treeConstruction; + 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 @@ -14351,58 +15251,93 @@ // 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. - function applyInnerHTMLFix(document, DOMHelperClass, svgNamespace) { - if (!document) return DOMHelperClass; - 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 DOMHelperClass; - } - svg = null; + function domChanges(document, DOMChangesClass, svgNamespace) { + if (!document) return DOMChangesClass; + if (!shouldApplyFix(document, svgNamespace)) { + return DOMChangesClass; } var div = document.createElement('div'); - return (function (_DOMHelperClass) { - _inherits(DOMHelperWithSVGInnerHTMLFix, _DOMHelperClass); + return (function (_DOMChangesClass) { + babelHelpers.inherits(DOMChangesWithSVGInnerHTMLFix, _DOMChangesClass); - function DOMHelperWithSVGInnerHTMLFix() { - _classCallCheck(this, DOMHelperWithSVGInnerHTMLFix); - - _DOMHelperClass.apply(this, arguments); + function DOMChangesWithSVGInnerHTMLFix() { + _DOMChangesClass.apply(this, arguments); } - DOMHelperWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) { + DOMChangesWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) { if (html === null || html === '') { - return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); } if (parent.namespaceURI !== svgNamespace) { - return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + return _DOMChangesClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); } - // 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; + return fixSVG(parent, div, html, nextSibling); + }; - var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(div.firstChild, parent, nextSibling); + return DOMChangesWithSVGInnerHTMLFix; + })(DOMChangesClass); + } - var first = _moveNodesBefore[0]; - var last = _moveNodesBefore[1]; + 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); - return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last); + 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 DOMHelperWithSVGInnerHTMLFix; - })(DOMHelperClass); + return TreeConstructionWithSVGInnerHTMLFix; + })(TreeConstructionClass); } + + 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; + + var _moveNodesBefore = _glimmerRuntimeLibDomHelper.moveNodesBefore(div.firstChild, parent, reference); + + var first = _moveNodesBefore[0]; + var last = _moveNodesBefore[1]; + + return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last); + } + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7c0JBZ0JBLGlCQUFBOzs7Ozs7OztBQWJBLFFBQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBYW5ELGFBQUEsaUJBQUEsQ0FBMEMsUUFBa0IsRUFBRSxjQUFnQyxFQUFFLFlBQW9CLEVBQUE7QUFDbEgsWUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLGNBQWMsQ0FBQztBQUVyQyxZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV4RCxZQUFJO0FBQ0YsZUFBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDNUQsQ0FBQSxPQUFPLENBQUMsRUFBRSxFQUdYLFNBQVM7O0FBRVIsZ0JBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBRTs7QUFFaEYsdUJBQU8sY0FBYyxDQUFDO2FBQ3ZCO0FBQ0QsZUFBRyxHQUFHLElBQUksQ0FBQztTQUNaO0FBRUQsWUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV4QztzQkFBTyw0QkFBQTs7cUJBQUEsNEJBQUE7c0NBQUEsNEJBQUE7Ozs7O0FBQUEsd0NBQUEsV0FDTCxnQkFBZ0IsR0FBQSwwQkFBQyxNQUFtQixFQUFFLFdBQWlCLEVBQUUsSUFBWSxFQUFBO0FBQ25FLG9CQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUNoQywyQkFBTywwQkFBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzFEO0FBRUQsb0JBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUU7QUFDeEMsMkJBQU8sMEJBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUMxRDs7O0FBSUQsb0JBQUksV0FBVyxHQUFHLE9BQU8sR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBRTVDLG1CQUFHLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQzs7dUNBRVIsNEJBcERqQixlQUFlLENBb0RrQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUM7O29CQUFuRSxLQUFLO29CQUFFLElBQUk7O0FBQ2hCLHVCQUFPLDZCQXRESSxjQUFjLENBc0RDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDaEQ7O21CQWxCSSw0QkFBQTtXQUEyQyxjQUFjLEVBbUI5RDtLQUNIIiwiZmlsZSI6InN2Zy1pbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kcywgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlLCBET01IZWxwZXIgfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbi8vIFBhdGNoOiAgICBpbnNlcnRBZGphY2VudEhUTUwgb24gU1ZHIEZpeFxuLy8gQnJvd3NlcnM6IFNhZmFyaSwgSUUsIEVkZ2UsIEZpcmVmb3ggfjMzLTM0XG4vLyBSZWFzb246ICAgaW5zZXJ0QWRqYWNlbnRIVE1MIGRvZXMgbm90IGV4aXN0IG9uIFNWRyBlbGVtZW50cyBpbiBTYWZhcmkuIEl0IGlzXG4vLyAgICAgICAgICAgcHJlc2VudCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBJRSBhbmQgRWRnZS4gT2xkIHZlcnNpb25zIG9mXG4vLyAgICAgICAgICAgRmlyZWZveCBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdCBuYW1lc3BhY2UuXG4vLyBGaXg6ICAgICAgU2luY2UgSUUgYW5kIEVkZ2Ugc2lsZW50bHkgZmFpbCB0byBjcmVhdGUgU1ZHIG5vZGVzIHVzaW5nXG4vLyAgICAgICAgICAgaW5uZXJIVE1MLCBhbmQgYmVjYXVzZSBGaXJlZm94IG1heSBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdFxuLy8gICAgICAgICAgIG5hbWVzcGFjZSB1c2luZyBpbm5lckhUTUwgb24gU1ZHIGVsZW1lbnRzLCBhbiBIVE1MLXN0cmluZyB3cmFwcGluZ1xuLy8gICAgICAgICAgIGFwcHJvYWNoIGlzIHVzZWQuIEEgcHJlL3Bvc3QgU1ZHIHRhZyBpcyBhZGRlZCB0byB0aGUgc3RyaW5nLCB0aGVuXG4vLyAgICAgICAgICAgdGhhdCB3aG9sZSBzdHJpbmcgaXMgYWRkZWQgdG8gYSBkaXYuIFRoZSBjcmVhdGVkIG5vZGVzIGFyZSBwbHVja2VkXG4vLyAgICAgICAgICAgb3V0IGFuZCBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24gb24gRE9NLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwbHlJbm5lckhUTUxGaXgoZG9jdW1lbnQ6IERvY3VtZW50LCBET01IZWxwZXJDbGFzczogdHlwZW9mIERPTUhlbHBlciwgc3ZnTmFtZXNwYWNlOiBzdHJpbmcpOiB0eXBlb2YgRE9NSGVscGVyIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUhlbHBlckNsYXNzO1xuXG4gIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG5cbiAgdHJ5IHtcbiAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgIGlmIChzdmcuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiYgc3ZnLmZpcnN0Q2hpbGQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgcmV0dXJuIERPTUhlbHBlckNsYXNzO1xuICAgIH1cbiAgICBzdmcgPSBudWxsO1xuICB9XG5cbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIHJldHVybiBjbGFzcyBET01IZWxwZXJXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NSGVscGVyQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgbmV4dFNpYmxpbmc6IE5vZGUsIGh0bWw6IHN0cmluZyk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgLy8gSUUsIEVkZ2U6IGFsc28gZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHVzaW5nIGBpbm5lckhUTUxgIG9uIFNWR1xuICAgICAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgICAgIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5cbiAgICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcblxuICAgICAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUoZGl2LmZpcnN0Q2hpbGQsIHBhcmVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbiAgICB9XG4gIH07XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxRQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWE3QyxhQUFBLFVBQUEsQ0FBcUIsUUFBa0IsRUFBRSxlQUFrQyxFQUFFLFlBQW9CLEVBQUE7QUFDckcsWUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLGVBQWUsQ0FBQztBQUV0QyxZQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRTtBQUMzQyxtQkFBTyxlQUFlLENBQUM7U0FDeEI7QUFFRCxZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXhDO2tDQUFPLDZCQUFvQzs7cUJBQXBDLDZCQUFvQzs7OztBQUFwQyx5Q0FBb0MsV0FDekMsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxXQUFpQixFQUFFLElBQVksRUFBQTtBQUNuRSxvQkFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7QUFDaEMsMkJBQU8sMkJBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUMxRDtBQUVELG9CQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFO0FBQ3hDLDJCQUFPLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7QUFFRCx1QkFBTyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDL0M7O21CQVhJLDZCQUFvQztXQUFRLGVBQWUsRUFZaEU7S0FDSDs7QUFFSyxhQUFBLGdCQUFBLENBQTJCLFFBQWtCLEVBQUUscUJBQWlELEVBQUUsWUFBb0IsRUFBQTtBQUMxSCxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8scUJBQXFCLENBQUM7QUFFNUMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEVBQUU7QUFDM0MsbUJBQU8scUJBQXFCLENBQUM7U0FDOUI7QUFFRCxZQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXhDO2tDQUFPLG1DQUEwQzs7cUJBQTFDLG1DQUEwQzs7OztBQUExQywrQ0FBMEMsV0FDL0MsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxJQUFZLEVBQUcsU0FBZSxFQUFBO0FBQ2xFLG9CQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUNoQywyQkFBTyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3hEO0FBRUQsb0JBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUU7QUFDeEMsMkJBQU8saUNBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUN4RDtBQUVELHVCQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQzthQUM3Qzs7bUJBWEksbUNBQTBDO1dBQVEscUJBQXFCLEVBWTVFO0tBQ0g7O0FBRUQsYUFBQSxNQUFBLENBQWdCLE1BQWUsRUFBRSxHQUFnQixFQUFFLElBQVksRUFBRSxTQUFlLEVBQUE7OztBQUc5RSxZQUFJLFdBQVcsR0FBRyxPQUFPLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUU1QyxXQUFHLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQzs7K0JBRVIsNEJBdEViLGVBQWUsQ0FzRWMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDOztZQUFqRSxLQUFLO1lBQUUsSUFBSTs7QUFDaEIsZUFBTyw2QkF4RVEsY0FBYyxDQXdFSCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2hEO0FBRUQsYUFBQSxjQUFBLENBQXdCLFFBQVEsRUFBRSxZQUFZLEVBQUE7QUFDNUMsWUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFeEQsWUFBSTtBQUNGLGVBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQzVELENBQUEsT0FBTyxDQUFDLEVBQUUsRUFHWCxTQUFTOztBQUVSLGdCQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7O0FBRWhGLHVCQUFPLEtBQUssQ0FBQzthQUNkO0FBQ0QsZUFBRyxHQUFHLElBQUksQ0FBQztBQUVYLG1CQUFPLElBQUksQ0FBQztTQUNiO0tBQ0YiLCJmaWxlIjoic3ZnLWlubmVyLWh0bWwtZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUsIERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbi8vIFBhdGNoOiAgICBpbnNlcnRBZGphY2VudEhUTUwgb24gU1ZHIEZpeFxuLy8gQnJvd3NlcnM6IFNhZmFyaSwgSUUsIEVkZ2UsIEZpcmVmb3ggfjMzLTM0XG4vLyBSZWFzb246ICAgaW5zZXJ0QWRqYWNlbnRIVE1MIGRvZXMgbm90IGV4aXN0IG9uIFNWRyBlbGVtZW50cyBpbiBTYWZhcmkuIEl0IGlzXG4vLyAgICAgICAgICAgcHJlc2VudCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBJRSBhbmQgRWRnZS4gT2xkIHZlcnNpb25zIG9mXG4vLyAgICAgICAgICAgRmlyZWZveCBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdCBuYW1lc3BhY2UuXG4vLyBGaXg6ICAgICAgU2luY2UgSUUgYW5kIEVkZ2Ugc2lsZW50bHkgZmFpbCB0byBjcmVhdGUgU1ZHIG5vZGVzIHVzaW5nXG4vLyAgICAgICAgICAgaW5uZXJIVE1MLCBhbmQgYmVjYXVzZSBGaXJlZm94IG1heSBjcmVhdGUgbm9kZXMgaW4gdGhlIGluY29ycmVjdFxuLy8gICAgICAgICAgIG5hbWVzcGFjZSB1c2luZyBpbm5lckhUTUwgb24gU1ZHIGVsZW1lbnRzLCBhbiBIVE1MLXN0cmluZyB3cmFwcGluZ1xuLy8gICAgICAgICAgIGFwcHJvYWNoIGlzIHVzZWQuIEEgcHJlL3Bvc3QgU1ZHIHRhZyBpcyBhZGRlZCB0byB0aGUgc3RyaW5nLCB0aGVuXG4vLyAgICAgICAgICAgdGhhdCB3aG9sZSBzdHJpbmcgaXMgYWRkZWQgdG8gYSBkaXYuIFRoZSBjcmVhdGVkIG5vZGVzIGFyZSBwbHVja2VkXG4vLyAgICAgICAgICAgb3V0IGFuZCBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24gb24gRE9NLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQ6IERvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3M6IHR5cGVvZiBET01DaGFuZ2VzLCBzdmdOYW1lc3BhY2U6IHN0cmluZyk6IHR5cGVvZiBET01DaGFuZ2VzIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgbmV4dFNpYmxpbmc6IE5vZGUsIGh0bWw6IHN0cmluZyk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQ6IERvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uLCBzdmdOYW1lc3BhY2U6IHN0cmluZyk6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcblxuICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpKSB7XG4gICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICByZXR1cm4gY2xhc3MgVHJlZUNvbnN0cnVjdGlvbldpdGhTVkdJbm5lckhUTUxGaXggZXh0ZW5kcyBUcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCAgcmVmZXJlbmNlOiBOb2RlLCk6IEJvdW5kcyB7XG4gICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudDogRWxlbWVudCwgZGl2OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gIC8vIG5hbWVzcGFjZWQgZWxlbWVudHMuIFNvIGhlcmUgYSB3cmFwcGVyIGlzIHVzZWQuXG4gIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG5cbiAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuXG4gIGxldCBbZmlyc3QsIGxhc3RdID0gbW92ZU5vZGVzQmVmb3JlKGRpdi5maXJzdENoaWxkLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpIHtcbiAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcblxuICB0cnkge1xuICAgIHN2Z1snaW5zZXJ0QWRqYWNlbnRIVE1MJ10oJ2JlZm9yZUVuZCcsICc8Y2lyY2xlPjwvY2lyY2xlPicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSUUsIEVkZ2U6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyB1bnN1cHBvcnRlZCBvbiBTVkdcbiAgICAvLyBTYWZhcmk6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyBub3QgcHJlc2VudCBvbiBTVkdcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBGRjogT2xkIHZlcnNpb25zIHdpbGwgY3JlYXRlIGEgbm9kZSBpbiB0aGUgd3JvbmcgbmFtZXNwYWNlXG4gICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBzdmcuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgIC8vIFRoZSB0ZXN0IHdvcmtlZCBhcyBleHBlY3RlZCwgbm8gZml4IHJlcXVpcmVkXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHN2ZyA9IG51bGw7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19 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 @@ -14414,98 +15349,121 @@ // 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'; - exports.default = applyTextNodeMergingFix; + exports.domChanges = domChanges; + exports.treeConstruction = treeConstruction; - 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); } } return obj; } + function domChanges(document, DOMChangesClass) { + if (!document) return DOMChangesClass; + if (!shouldApplyFix(document)) { + return DOMChangesClass; + } + return (function (_DOMChangesClass) { + babelHelpers.inherits(DOMChangesWithTextNodeMergingFix, _DOMChangesClass); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function DOMChangesWithTextNodeMergingFix(document) { + _DOMChangesClass.call(this, document); + this.uselessComment = document.createComment(''); + } - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } + 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; + }; - function applyTextNodeMergingFix(document, DOMHelperClass) { - if (!document) return DOMHelperClass; - var mergingTextDiv = document.createElement('div'); - mergingTextDiv.innerHTML = 'first'; - mergingTextDiv.insertAdjacentHTML('beforeEnd', 'second'); - if (mergingTextDiv.childNodes.length === 2) { - // It worked as expected, no fix required - return DOMHelperClass; + return DOMChangesWithTextNodeMergingFix; + })(DOMChangesClass); + } + + function treeConstruction(document, TreeConstructionClass) { + if (!document) return TreeConstructionClass; + if (!shouldApplyFix(document)) { + return TreeConstructionClass; } - mergingTextDiv = null; - return (function (_DOMHelperClass) { - _inherits(DOMHelperWithTextNodeMergingFix, _DOMHelperClass); + return (function (_TreeConstructionClass) { + babelHelpers.inherits(TreeConstructionWithTextNodeMergingFix, _TreeConstructionClass); - function DOMHelperWithTextNodeMergingFix(document) { - _classCallCheck(this, DOMHelperWithTextNodeMergingFix); - - _DOMHelperClass.call(this, document); + function TreeConstructionWithTextNodeMergingFix(document) { + _TreeConstructionClass.call(this, document); this.uselessComment = this.createComment(''); } - DOMHelperWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) { + TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) { if (html === null) { - return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + return _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference); } var didSetUselessComment = false; - var nextPrevious = nextSibling ? nextSibling.previousSibling : parent.lastChild; + var nextPrevious = reference ? reference.previousSibling : parent.lastChild; if (nextPrevious && nextPrevious instanceof Text) { didSetUselessComment = true; - parent.insertBefore(this.uselessComment, nextSibling); + parent.insertBefore(this.uselessComment, reference); } - var bounds = _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html); + var bounds = _TreeConstructionClass.prototype.insertHTMLBefore.call(this, parent, html, reference); if (didSetUselessComment) { parent.removeChild(this.uselessComment); } return bounds; }; - return DOMHelperWithTextNodeMergingFix; - })(DOMHelperClass); + return TreeConstructionWithTextNodeMergingFix; + })(TreeConstructionClass); } + + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7c0JBZUEsdUJBQUE7Ozs7Ozs7O0FBQUEsYUFBQSx1QkFBQSxDQUFnRCxRQUFrQixFQUFFLGNBQWdDLEVBQUE7QUFDbEcsWUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLGNBQWMsQ0FBQztBQUVyQyxZQUFJLGNBQWMsR0FBaUIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVqRSxzQkFBYyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDbkMsc0JBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFekQsWUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFDLG1CQUFPLGNBQWMsQ0FBQztTQUN2QjtBQUVELHNCQUFjLEdBQUcsSUFBSSxDQUFDO0FBRXRCO3NCQUFPLCtCQUFBOztBQUdMLHFCQUhLLCtCQUFBLENBR08sUUFBUSxFQUFBO3NDQUhmLCtCQUFBOztBQUlILDJDQUFNLFFBQVEsQ0FBQyxDQUFDO0FBQ2hCLG9CQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDOUM7O0FBTkksMkNBQUEsV0FRTCxnQkFBZ0IsR0FBQSwwQkFBQyxNQUFtQixFQUFFLFdBQWlCLEVBQUUsSUFBWSxFQUFBO0FBQ25FLG9CQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDakIsMkJBQU8sMEJBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUMxRDtBQUVELG9CQUFJLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUVqQyxvQkFBSSxZQUFZLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztBQUNoRixvQkFBSSxZQUFZLElBQUksWUFBWSxZQUFZLElBQUksRUFBRTtBQUNoRCx3Q0FBb0IsR0FBRyxJQUFJLENBQUM7QUFDNUIsMEJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDdkQ7QUFFRCxvQkFBSSxNQUFNLEdBQUcsMEJBQU0sZ0JBQWdCLEtBQUEsT0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRS9ELG9CQUFJLG9CQUFvQixFQUFFO0FBQ3hCLDBCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDekM7QUFFRCx1QkFBTyxNQUFNLENBQUM7YUFDZjs7bUJBNUJJLCtCQUFBO1dBQThDLGNBQWMsRUE2QmpFO0tBQ0giLCJmaWxlIjoidGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IERPTUhlbHBlciB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuXG4vLyBQYXRjaDogICAgQWRqYWNlbnQgdGV4dCBub2RlIG1lcmdpbmcgZml4XG4vLyBCcm93c2VyczogSUUsIEVkZ2UsIEZpcmVmb3ggdy9vIGluc3BlY3RvciBvcGVuXG4vLyBSZWFzb246ICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzLiBGb3IgZXhtYXBsZSBnaXZlblxuLy8gICAgICAgICAgIDxkaXY+SGVsbG88L2Rpdj4gd2l0aCBkaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCcgd29ybGQnKSBicm93c2Vyc1xuLy8gICAgICAgICAgIHdpdGggcHJvcGVyIGJlaGF2aW9yIHdpbGwgcG9wdWxhdGUgZGl2LmNoaWxkTm9kZXMgd2l0aCB0d28gaXRlbXMuXG4vLyAgICAgICAgICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBtZXJnZWQgbm9kZSBpbnN0ZWFkLlxuLy8gRml4OiAgICAgIEFkZCB0aGVzZSBub2RlcyB0byBhIHdyYXBwZXIgZWxlbWVudCwgdGhlbiBpdGVyYXRlIHRoZSBjaGlsZE5vZGVzXG4vLyAgICAgICAgICAgb2YgdGhhdCB3cmFwcGVyIGFuZCBtb3ZlIHRoZSBub2RlcyB0byB0aGVpciB0YXJnZXQgbG9jYXRpb24uIE5vdGVcbi8vICAgICAgICAgICB0aGF0IHBvdGVudGlhbCBTVkcgYnVncyB3aWxsIGhhdmUgYmVlbiBoYW5kbGVkIGJlZm9yZSB0aGlzIGZpeC5cbi8vICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBmaXggbXVzdCBvbmx5IGFwcGx5IHRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUsIGFzXG4vLyAgICAgICAgICAgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGluc2VydEhUTUxCZWZvcmVgIGFscmVhZHkgaGFuZGxlc1xuLy8gICAgICAgICAgIGZvbGxvd2luZyB0ZXh0IG5vZGVzIGNvcnJlY3RseS5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwcGx5VGV4dE5vZGVNZXJnaW5nRml4KGRvY3VtZW50OiBEb2N1bWVudCwgRE9NSGVscGVyQ2xhc3M6IHR5cGVvZiBET01IZWxwZXIpOiB0eXBlb2YgRE9NSGVscGVyIHtcbiAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUhlbHBlckNsYXNzO1xuXG4gIGxldCBtZXJnaW5nVGV4dERpdiA9IDxIVE1MRWxlbWVudD4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgbWVyZ2luZ1RleHREaXYuaW5uZXJIVE1MID0gJ2ZpcnN0JztcbiAgbWVyZ2luZ1RleHREaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCAnc2Vjb25kJyk7XG5cbiAgaWYgKG1lcmdpbmdUZXh0RGl2LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyKSB7XG4gICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICByZXR1cm4gRE9NSGVscGVyQ2xhc3M7XG4gIH1cblxuICBtZXJnaW5nVGV4dERpdiA9IG51bGw7XG5cbiAgcmV0dXJuIGNsYXNzIERPTUhlbHBlcldpdGhUZXh0Tm9kZU1lcmdpbmdGaXggZXh0ZW5kcyBET01IZWxwZXJDbGFzcyB7XG4gICAgcHJpdmF0ZSB1c2VsZXNzQ29tbWVudDogQ29tbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICB9XG5cbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuXG4gICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLnVzZWxlc3NDb21tZW50LCBuZXh0U2libGluZyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuXG4gICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudXNlbGVzc0NvbW1lbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYm91bmRzO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== -enifed('glimmer-runtime/lib/compiled/blocks', ['exports', 'glimmer-runtime/lib/symbol-table', 'glimmer-runtime/lib/compiler'], function (exports, _glimmerRuntimeLibSymbolTable, _glimmerRuntimeLibCompiler) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlTSxhQUFBLFVBQUEsQ0FBcUIsUUFBa0IsRUFBRSxlQUFrQyxFQUFBO0FBQy9FLFlBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxlQUFlLENBQUM7QUFFdEMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM3QixtQkFBTyxlQUFlLENBQUM7U0FDeEI7QUFFRDtrQ0FBTyxnQ0FBdUM7O0FBRzVDLHFCQUhLLGdDQUF1QyxDQUdoQyxRQUFRLEVBQUE7QUFDbEIsNENBQU0sUUFBUSxDQUFDLENBQUM7QUFDaEIsb0JBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNsRDs7QUFOSSw0Q0FBdUMsV0FRNUMsZ0JBQWdCLEdBQUEsMEJBQUMsTUFBbUIsRUFBRSxXQUFpQixFQUFFLElBQVksRUFBQTtBQUNuRSxvQkFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQ2pCLDJCQUFPLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7QUFFRCxvQkFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFFakMsb0JBQUksWUFBWSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7QUFDaEYsb0JBQUksWUFBWSxJQUFJLFlBQVksWUFBWSxJQUFJLEVBQUU7QUFDaEQsd0NBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQzVCLDBCQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQ3ZEO0FBRUQsb0JBQUksTUFBTSxHQUFHLDJCQUFNLGdCQUFnQixLQUFBLE9BQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUUvRCxvQkFBSSxvQkFBb0IsRUFBRTtBQUN4QiwwQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pDO0FBRUQsdUJBQU8sTUFBTSxDQUFDO2FBQ2Y7O21CQTVCSSxnQ0FBdUM7V0FBUSxlQUFlLEVBNkJuRTtLQUNIOztBQUVLLGFBQUEsZ0JBQUEsQ0FBMkIsUUFBa0IsRUFBRSxxQkFBaUQsRUFBQTtBQUNwRyxZQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8scUJBQXFCLENBQUM7QUFFNUMsWUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM3QixtQkFBTyxxQkFBcUIsQ0FBQztTQUM5QjtBQUVEO2tDQUFPLHNDQUE2Qzs7QUFHbEQscUJBSEssc0NBQTZDLENBR3RDLFFBQVEsRUFBQTtBQUNsQixrREFBTSxRQUFRLENBQUMsQ0FBQztBQUNoQixvQkFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBWSxDQUFDO2FBQ3pEOztBQU5JLGtEQUE2QyxXQVFsRCxnQkFBZ0IsR0FBQSwwQkFBQyxNQUFtQixFQUFFLElBQVksRUFBRSxTQUFlLEVBQUE7QUFDakUsb0JBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNqQiwyQkFBTyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3hEO0FBRUQsb0JBQUksb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBRWpDLG9CQUFJLFlBQVksR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0FBQzVFLG9CQUFJLFlBQVksSUFBSSxZQUFZLFlBQVksSUFBSSxFQUFFO0FBQ2hELHdDQUFvQixHQUFHLElBQUksQ0FBQztBQUM1QiwwQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUNyRDtBQUVELG9CQUFJLE1BQU0sR0FBRyxpQ0FBTSxnQkFBZ0IsS0FBQSxPQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFN0Qsb0JBQUksb0JBQW9CLEVBQUU7QUFDeEIsMEJBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUN6QztBQUVELHVCQUFPLE1BQU0sQ0FBQzthQUNmOzttQkE1Qkksc0NBQTZDO1dBQVEscUJBQXFCLEVBNkIvRTtLQUNIOztBQUVELGFBQUEsY0FBQSxDQUF3QixRQUFRLEVBQUE7QUFDOUIsWUFBSSxjQUFjLEdBQWlCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFakUsc0JBQWMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBQ25DLHNCQUFjLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXpELFlBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzFDLDBCQUFjLEdBQUcsSUFBSSxDQUFDOztBQUV0QixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUVELHNCQUFjLEdBQUcsSUFBSSxDQUFDO0FBRXRCLGVBQU8sSUFBSSxDQUFDO0tBQ2IiLCJmaWxlIjoidGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IERPTUNoYW5nZXMsIERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi9kb20vaGVscGVyJztcblxuLy8gUGF0Y2g6ICAgIEFkamFjZW50IHRleHQgbm9kZSBtZXJnaW5nIGZpeFxuLy8gQnJvd3NlcnM6IElFLCBFZGdlLCBGaXJlZm94IHcvbyBpbnNwZWN0b3Igb3BlblxuLy8gUmVhc29uOiAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlcy4gRm9yIGV4bWFwbGUgZ2l2ZW5cbi8vICAgICAgICAgICA8ZGl2PkhlbGxvPC9kaXY+IHdpdGggZGl2Lmluc2VydEFkamFjZW50SFRNTCgnIHdvcmxkJykgYnJvd3NlcnNcbi8vICAgICAgICAgICB3aXRoIHByb3BlciBiZWhhdmlvciB3aWxsIHBvcHVsYXRlIGRpdi5jaGlsZE5vZGVzIHdpdGggdHdvIGl0ZW1zLlxuLy8gICAgICAgICAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgcG9wdWxhdGUgaXQgd2l0aCBvbmUgbWVyZ2VkIG5vZGUgaW5zdGVhZC5cbi8vIEZpeDogICAgICBBZGQgdGhlc2Ugbm9kZXMgdG8gYSB3cmFwcGVyIGVsZW1lbnQsIHRoZW4gaXRlcmF0ZSB0aGUgY2hpbGROb2Rlc1xuLy8gICAgICAgICAgIG9mIHRoYXQgd3JhcHBlciBhbmQgbW92ZSB0aGUgbm9kZXMgdG8gdGhlaXIgdGFyZ2V0IGxvY2F0aW9uLiBOb3RlXG4vLyAgICAgICAgICAgdGhhdCBwb3RlbnRpYWwgU1ZHIGJ1Z3Mgd2lsbCBoYXZlIGJlZW4gaGFuZGxlZCBiZWZvcmUgdGhpcyBmaXguXG4vLyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZml4IG11c3Qgb25seSBhcHBseSB0byB0aGUgcHJldmlvdXMgdGV4dCBub2RlLCBhc1xuLy8gICAgICAgICAgIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBpbnNlcnRIVE1MQmVmb3JlYCBhbHJlYWR5IGhhbmRsZXNcbi8vICAgICAgICAgICBmb2xsb3dpbmcgdGV4dCBub2RlcyBjb3JyZWN0bHkuXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudDogRG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzczogdHlwZW9mIERPTUNoYW5nZXMpOiB0eXBlb2YgRE9NQ2hhbmdlcyB7XG4gIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG5cbiAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICB9XG5cbiAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoVGV4dE5vZGVNZXJnaW5nRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICBwcml2YXRlIHVzZWxlc3NDb21tZW50OiBDb21tZW50O1xuXG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgIHN1cGVyKGRvY3VtZW50KTtcbiAgICAgIHRoaXMudXNlbGVzc0NvbW1lbnQgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKTtcbiAgICB9XG5cbiAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudDogSFRNTEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuXG4gICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLnVzZWxlc3NDb21tZW50LCBuZXh0U2libGluZyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuXG4gICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudXNlbGVzc0NvbW1lbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYm91bmRzO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQ6IERvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3M6IHR5cGVvZiBET01UcmVlQ29uc3RydWN0aW9uKTogdHlwZW9mIERPTVRyZWVDb25zdHJ1Y3Rpb24ge1xuICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuXG4gIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgfVxuXG4gIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgcHJpdmF0ZSB1c2VsZXNzQ29tbWVudDogQ29tbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKSBhcyBDb21tZW50O1xuICAgIH1cblxuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCByZWZlcmVuY2U6IE5vZGUpOiBCb3VuZHMge1xuICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBsZXQgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSBmYWxzZTtcblxuICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLnVzZWxlc3NDb21tZW50LCByZWZlcmVuY2UpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYm91bmRzID0gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBib3VuZHM7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICBsZXQgbWVyZ2luZ1RleHREaXYgPSA8SFRNTEVsZW1lbnQ+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIG1lcmdpbmdUZXh0RGl2LmlubmVySFRNTCA9ICdmaXJzdCc7XG4gIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuXG4gIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgIG1lcmdpbmdUZXh0RGl2ID0gbnVsbDtcbiAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG1lcmdpbmdUZXh0RGl2ID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ== +enifed('glimmer-runtime/lib/compiled/blocks', ['exports', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/compiler'], function (exports, _glimmerRuntimeLibUtils, _glimmerRuntimeLibCompiler) { 'use strict'; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var CompiledBlock = function CompiledBlock(ops, symbols) { - _classCallCheck(this, CompiledBlock); - this.ops = ops; this.symbols = symbols; }; exports.CompiledBlock = CompiledBlock; - var Block = function Block(options) { - _classCallCheck(this, Block); - + var Block = function Block(program, symbolTable) { + this.program = program; + this.symbolTable = symbolTable; this.compiled = null; - this.symbolTable = options.symbolTable || null; - this.children = options.children; - this.program = options.program; - this.meta = options.meta; }; exports.Block = Block; var InlineBlock = (function (_Block) { - _inherits(InlineBlock, _Block); + babelHelpers.inherits(InlineBlock, _Block); - function InlineBlock(options) { - _classCallCheck(this, InlineBlock); + function InlineBlock(program, symbolTable) { + var locals = arguments.length <= 2 || arguments[2] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[2]; - _Block.call(this, options); - this.locals = options.locals; + _Block.call(this, program, symbolTable); + this.locals = locals; } InlineBlock.prototype.hasPositionalParameters = function hasPositionalParameters() { return !!this.locals.length; }; @@ -14521,78 +15479,40 @@ })(Block); exports.InlineBlock = InlineBlock; var PartialBlock = (function (_InlineBlock) { - _inherits(PartialBlock, _InlineBlock); + babelHelpers.inherits(PartialBlock, _InlineBlock); function PartialBlock() { - _classCallCheck(this, PartialBlock); - _InlineBlock.apply(this, arguments); } - PartialBlock.prototype.initBlocks = function initBlocks() { - var _this = this; - - var blocks = arguments.length <= 0 || arguments[0] === undefined ? this['children'] : arguments[0]; - var parentTable = arguments.length <= 1 || arguments[1] === undefined ? this['symbolTable'] : arguments[1]; - - blocks.forEach(function (block) { - var table = _glimmerRuntimeLibSymbolTable.default.initForBlock({ parent: parentTable, block: block }); - _this.initBlocks(block['children'], table); - }); - return this; - }; - return PartialBlock; })(InlineBlock); exports.PartialBlock = PartialBlock; var TopLevelTemplate = (function (_Block2) { - _inherits(TopLevelTemplate, _Block2); + babelHelpers.inherits(TopLevelTemplate, _Block2); function TopLevelTemplate() { - _classCallCheck(this, TopLevelTemplate); - _Block2.apply(this, arguments); } - TopLevelTemplate.prototype.initBlocks = function initBlocks() { - var _this2 = this; - - var blocks = arguments.length <= 0 || arguments[0] === undefined ? this['children'] : arguments[0]; - var parentTable = arguments.length <= 1 || arguments[1] === undefined ? this['symbolTable'] : arguments[1]; - - blocks.forEach(function (block) { - var table = _glimmerRuntimeLibSymbolTable.default.initForBlock({ parent: parentTable, block: block }); - _this2.initBlocks(block['children'], table); - }); - return this; - }; - return TopLevelTemplate; })(Block); exports.TopLevelTemplate = TopLevelTemplate; var EntryPoint = (function (_TopLevelTemplate) { - _inherits(EntryPoint, _TopLevelTemplate); + babelHelpers.inherits(EntryPoint, _TopLevelTemplate); function EntryPoint() { - _classCallCheck(this, EntryPoint); - _TopLevelTemplate.apply(this, arguments); } - EntryPoint.create = function create(options) { - var top = new EntryPoint(options); - _glimmerRuntimeLibSymbolTable.default.initForEntryPoint(top); - return top; - }; - 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); @@ -14602,31 +15522,18 @@ })(TopLevelTemplate); exports.EntryPoint = EntryPoint; var Layout = (function (_TopLevelTemplate2) { - _inherits(Layout, _TopLevelTemplate2); + babelHelpers.inherits(Layout, _TopLevelTemplate2); - function Layout(options) { - _classCallCheck(this, Layout); - - _TopLevelTemplate2.call(this, options); - var named = options.named; - var yields = options.yields; - - // positional params in Ember may want this - // this.locals = locals; + function Layout(program, symbolTable, named, yields) { + _TopLevelTemplate2.call(this, program, symbolTable); this.named = named; this.yields = yields; } - Layout.create = function create(options) { - var layout = new Layout(options); - _glimmerRuntimeLibSymbolTable.default.initForLayout(layout); - return layout; - }; - Layout.prototype.hasNamedParameters = function hasNamedParameters() { return !!this.named.length; }; Layout.prototype.hasYields = function hasYields() { @@ -14636,207 +15543,113 @@ return Layout; })(TopLevelTemplate); exports.Layout = Layout; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvYmxvY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQXFCQSxhQUFBLEdBSUUsU0FKRixhQUFBLENBSWMsR0FBVSxFQUFFLE9BQWUsRUFBQTs4QkFKekMsYUFBQTs7QUFLSSxZQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLFlBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0tBQ3hCOzs7O1FBR0gsS0FBQSxHQU9FLFNBUEYsS0FBQSxDQU9jLE9BQXFCLEVBQUE7OEJBUG5DLEtBQUE7O0FBS1ksWUFBQSxDQUFBLFFBQVEsR0FBa0IsSUFBSSxDQUFDO0FBR3ZDLFlBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUM7QUFDL0MsWUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUMvQixZQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDMUI7Ozs7UUFPSCxXQUFBO2tCQUFBLFdBQUE7O0FBR0UsaUJBSEYsV0FBQSxDQUdjLE9BQTJCLEVBQUE7a0NBSHpDLFdBQUE7O0FBSUksOEJBQU0sT0FBTyxDQUFDLENBQUM7QUFDZixnQkFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzlCOztBQU5ILG1CQUFBLFdBUUUsdUJBQXVCLEdBQUEsbUNBQUE7QUFDckIsbUJBQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQzdCOztBQVZILG1CQUFBLFdBWUUsT0FBTyxHQUFBLGlCQUFDLEdBQWdCLEVBQUE7QUFDdEIsZ0JBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDN0IsZ0JBQUksUUFBUSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBRTlCLGdCQUFJLEdBQUcsR0FBRywrQkF2RFosbUJBQW1CLENBdURpQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdkQsbUJBQU8sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RTs7ZUFsQkgsV0FBQTtPQUFpQyxLQUFLOzs7O1FBcUJ0QyxZQUFBO2tCQUFBLFlBQUE7O2lCQUFBLFlBQUE7a0NBQUEsWUFBQTs7Ozs7QUFBQSxvQkFBQSxXQUNFLFVBQVUsR0FBQSxzQkFBNkQ7OztnQkFBNUQsTUFBTSx5REFBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUFFLFdBQVcseURBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzs7QUFDckUsa0JBQU0sQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLLEVBQUE7QUFDbEIsb0JBQUksS0FBSyxHQUFHLHNDQUFZLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFMLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDckUsc0JBQUssVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzQyxDQUFDLENBQUM7QUFDSCxtQkFBTyxJQUFJLENBQUM7U0FDYjs7ZUFQSCxZQUFBO09BQWtDLFdBQVc7Ozs7UUFVN0MsZ0JBQUE7a0JBQUEsZ0JBQUE7O2lCQUFBLGdCQUFBO2tDQUFBLGdCQUFBOzs7OztBQUFBLHdCQUFBLFdBQ0UsVUFBVSxHQUFBLHNCQUE2RDs7O2dCQUE1RCxNQUFNLHlEQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQUUsV0FBVyx5REFBRyxJQUFJLENBQUMsYUFBYSxDQUFDOztBQUNyRSxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUssRUFBQTtBQUNsQixvQkFBSSxLQUFLLEdBQUcsc0NBQVksWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNyRSx1QkFBSyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzNDLENBQUMsQ0FBQztBQUNILG1CQUFPLElBQUksQ0FBQztTQUNiOztlQVBILGdCQUFBO09BQStDLEtBQUs7Ozs7UUFVcEQsVUFBQTtrQkFBQSxVQUFBOztpQkFBQSxVQUFBO2tDQUFBLFVBQUE7Ozs7O0FBQUEsa0JBQUEsQ0FDUyxNQUFNLEdBQUEsZ0JBQUMsT0FBcUIsRUFBQTtBQUNqQyxnQkFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsa0RBQVksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsbUJBQU8sR0FBRyxDQUFDO1NBQ1o7O0FBTEgsa0JBQUEsV0FPRSxPQUFPLEdBQUEsaUJBQUMsR0FBZ0IsRUFBQTtBQUN0QixnQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixnQkFBSSxRQUFRLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFFOUIsZ0JBQUksR0FBRyxHQUFHLCtCQTVGWixrQkFBa0IsQ0E0RmlCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0RCxtQkFBTyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RFOztlQWJILFVBQUE7T0FBZ0MsZ0JBQWdCOzs7O1FBc0JoRCxNQUFBO2tCQUFBLE1BQUE7O0FBVUUsaUJBVkYsTUFBQSxDQVVjLE9BQXNCLEVBQUE7a0NBVnBDLE1BQUE7O0FBV0ksMENBQU0sT0FBTyxDQUFDLENBQUM7Z0JBRVQsS0FBSyxHQUFhLE9BQU8sQ0FBekIsS0FBSztnQkFBRSxNQUFNLEdBQUssT0FBTyxDQUFsQixNQUFNOzs7O0FBSW5CLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7O0FBbkJILGNBQUEsQ0FDUyxNQUFNLEdBQUEsZ0JBQUMsT0FBc0IsRUFBQTtBQUNsQyxnQkFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsa0RBQVksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLG1CQUFPLE1BQU0sQ0FBQztTQUNmOztBQUxILGNBQUEsV0FxQkUsa0JBQWtCLEdBQUEsOEJBQUE7QUFDaEIsbUJBQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQzVCOztBQXZCSCxjQUFBLFdBeUJFLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUM3Qjs7ZUEzQkgsTUFBQTtPQUE0QixnQkFBZ0IiLCJmaWxlIjoiYmxvY2tzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuZWRTdHJpbmcgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFByb2dyYW0gfSBmcm9tICcuLi9zeW50YXgnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7XG4gIEJsb2NrTWV0YVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuaW1wb3J0IHtcbiAgRW50cnlQb2ludENvbXBpbGVyLFxuICBJbmxpbmVCbG9ja0NvbXBpbGVyXG59IGZyb20gJy4uL2NvbXBpbGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja09wdGlvbnMge1xuICBjaGlsZHJlbjogSW5saW5lQmxvY2tbXTtcbiAgcHJvZ3JhbTogUHJvZ3JhbTtcbiAgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlO1xuICBtZXRhOiBCbG9ja01ldGE7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZEJsb2NrIHtcbiAgcHVibGljIG9wczogT3BTZXE7XG4gIHB1YmxpYyBzeW1ib2xzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3BzOiBPcFNlcSwgc3ltYm9sczogbnVtYmVyKSB7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5zeW1ib2xzID0gc3ltYm9scztcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2sge1xuICBwdWJsaWMgbWV0YTogQmxvY2tNZXRhO1xuICBwdWJsaWMgY2hpbGRyZW46IElubGluZUJsb2NrW107XG4gIHB1YmxpYyBwcm9ncmFtOiBQcm9ncmFtO1xuICBwdWJsaWMgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlO1xuICBwcm90ZWN0ZWQgY29tcGlsZWQ6IENvbXBpbGVkQmxvY2sgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEJsb2NrT3B0aW9ucykge1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBvcHRpb25zLnN5bWJvbFRhYmxlIHx8IG51bGw7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG9wdGlvbnMuY2hpbGRyZW47XG4gICAgdGhpcy5wcm9ncmFtID0gb3B0aW9ucy5wcm9ncmFtO1xuICAgIHRoaXMubWV0YSA9IG9wdGlvbnMubWV0YTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElubGluZUJsb2NrT3B0aW9ucyBleHRlbmRzIEJsb2NrT3B0aW9ucyB7XG4gIGxvY2FsczogSW50ZXJuZWRTdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgbG9jYWxzOiBJbnRlcm5lZFN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElubGluZUJsb2NrT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMubG9jYWxzID0gb3B0aW9ucy5sb2NhbHM7XG4gIH1cblxuICBoYXNQb3NpdGlvbmFsUGFyYW1ldGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmxvY2Fscy5sZW5ndGg7XG4gIH1cblxuICBjb21waWxlKGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmNvbXBpbGVkO1xuICAgIGlmIChjb21waWxlZCkgcmV0dXJuIGNvbXBpbGVkO1xuXG4gICAgbGV0IG9wcyA9IG5ldyBJbmxpbmVCbG9ja0NvbXBpbGVyKHRoaXMsIGVudikuY29tcGlsZSgpO1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVkID0gbmV3IENvbXBpbGVkQmxvY2sob3BzLCB0aGlzLnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJ0aWFsQmxvY2sgZXh0ZW5kcyBJbmxpbmVCbG9jayB7XG4gIGluaXRCbG9ja3MoYmxvY2tzID0gdGhpc1snY2hpbGRyZW4nXSwgcGFyZW50VGFibGUgPSB0aGlzWydzeW1ib2xUYWJsZSddKTogdGhpcyB7XG4gICAgYmxvY2tzLmZvckVhY2goYmxvY2sgPT4ge1xuICAgICAgbGV0IHRhYmxlID0gU3ltYm9sVGFibGUuaW5pdEZvckJsb2NrKHsgcGFyZW50OiBwYXJlbnRUYWJsZSwgYmxvY2sgfSk7XG4gICAgICB0aGlzLmluaXRCbG9ja3MoYmxvY2tbJ2NoaWxkcmVuJ10sIHRhYmxlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9wTGV2ZWxUZW1wbGF0ZSBleHRlbmRzIEJsb2NrIHtcbiAgaW5pdEJsb2NrcyhibG9ja3MgPSB0aGlzWydjaGlsZHJlbiddLCBwYXJlbnRUYWJsZSA9IHRoaXNbJ3N5bWJvbFRhYmxlJ10pOiB0aGlzIHtcbiAgICBibG9ja3MuZm9yRWFjaChibG9jayA9PiB7XG4gICAgICBsZXQgdGFibGUgPSBTeW1ib2xUYWJsZS5pbml0Rm9yQmxvY2soeyBwYXJlbnQ6IHBhcmVudFRhYmxlLCBibG9jayB9KTtcbiAgICAgIHRoaXMuaW5pdEJsb2NrcyhibG9ja1snY2hpbGRyZW4nXSwgdGFibGUpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50IGV4dGVuZHMgVG9wTGV2ZWxUZW1wbGF0ZSB7XG4gIHN0YXRpYyBjcmVhdGUob3B0aW9uczogQmxvY2tPcHRpb25zKTogRW50cnlQb2ludCB7XG4gICAgbGV0IHRvcCA9IG5ldyBFbnRyeVBvaW50KG9wdGlvbnMpO1xuICAgIFN5bWJvbFRhYmxlLmluaXRGb3JFbnRyeVBvaW50KHRvcCk7XG4gICAgcmV0dXJuIHRvcDtcbiAgfVxuXG4gIGNvbXBpbGUoZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCBjb21waWxlZCA9IHRoaXMuY29tcGlsZWQ7XG4gICAgaWYgKGNvbXBpbGVkKSByZXR1cm4gY29tcGlsZWQ7XG5cbiAgICBsZXQgb3BzID0gbmV3IEVudHJ5UG9pbnRDb21waWxlcih0aGlzLCBlbnYpLmNvbXBpbGUoKTtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlZCA9IG5ldyBDb21waWxlZEJsb2NrKG9wcywgdGhpcy5zeW1ib2xUYWJsZS5zaXplKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE9wdGlvbnMgZXh0ZW5kcyBCbG9ja09wdGlvbnMge1xuICBuYW1lZDogSW50ZXJuZWRTdHJpbmdbXTtcbiAgeWllbGRzOiBJbnRlcm5lZFN0cmluZ1tdO1xuICBwcm9ncmFtOiBQcm9ncmFtO1xufVxuXG5leHBvcnQgY2xhc3MgTGF5b3V0IGV4dGVuZHMgVG9wTGV2ZWxUZW1wbGF0ZSB7XG4gIHN0YXRpYyBjcmVhdGUob3B0aW9uczogTGF5b3V0T3B0aW9ucyk6IExheW91dCB7XG4gICAgbGV0IGxheW91dCA9IG5ldyBMYXlvdXQob3B0aW9ucyk7XG4gICAgU3ltYm9sVGFibGUuaW5pdEZvckxheW91dChsYXlvdXQpO1xuICAgIHJldHVybiBsYXlvdXQ7XG4gIH1cblxuICBwdWJsaWMgbmFtZWQ6IEludGVybmVkU3RyaW5nW107XG4gIHB1YmxpYyB5aWVsZHM6IEludGVybmVkU3RyaW5nW107XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTGF5b3V0T3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgbGV0IHsgbmFtZWQsIHlpZWxkcyB9ID0gb3B0aW9ucztcblxuICAgIC8vIHBvc2l0aW9uYWwgcGFyYW1zIGluIEVtYmVyIG1heSB3YW50IHRoaXNcbiAgICAvLyB0aGlzLmxvY2FscyA9IGxvY2FscztcbiAgICB0aGlzLm5hbWVkID0gbmFtZWQ7XG4gICAgdGhpcy55aWVsZHMgPSB5aWVsZHM7XG4gIH1cblxuICBoYXNOYW1lZFBhcmFtZXRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5uYW1lZC5sZW5ndGg7XG4gIH1cblxuICBoYXNZaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy55aWVsZHMubGVuZ3RoO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvYmxvY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVdNLGFBQUEsR0FJSixTQUpJLGFBQUEsQ0FJUSxHQUFVLEVBQUUsT0FBZSxFQUFBO0FBQ3JDLFlBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsWUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7S0FDeEI7Ozs7UUFHRyxLQUFBLEdBR0osU0FISSxLQUFBLENBR2UsT0FBZ0IsRUFBUyxXQUF3QixFQUFBO0FBQWpELFlBQUEsQ0FBQSxPQUFPLEdBQVAsT0FBTyxDQUFTO0FBQVMsWUFBQSxDQUFBLFdBQVcsR0FBWCxXQUFXLENBQWE7QUFGMUQsWUFBQSxDQUFBLFFBQVEsR0FBa0IsSUFBSSxDQUFDO0tBRStCOzs7O1FBR3BFLFdBQW1COzhCQUFuQixXQUFtQjs7QUFDdkIsaUJBREksV0FBbUIsQ0FDWCxPQUFnQixFQUFFLFdBQXdCLEVBQXVDO2dCQUE5QixNQUFBLGlGQXhCeEQsV0FBVzs7QUF5QmhCLDhCQUFNLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQURpQyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQXdCO1NBRTVGOztBQUhHLG1CQUFtQixXQUt2Qix1QkFBdUIsR0FBQSxtQ0FBQTtBQUNyQixtQkFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7O0FBUEcsbUJBQW1CLFdBU3ZCLE9BQU8sR0FBQSxpQkFBQyxHQUFnQixFQUFBO0FBQ3RCLGdCQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzdCLGdCQUFJLFFBQVEsRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUU5QixnQkFBSSxHQUFHLEdBQUcsK0JBaENaLG1CQUFtQixDQWdDaUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3ZELG1CQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEU7O2VBZkcsV0FBbUI7T0FBUSxLQUFLOzs7O1FBa0JoQyxZQUFvQjs4QkFBcEIsWUFBb0I7O2lCQUFwQixZQUFvQjs7OztlQUFwQixZQUFvQjtPQUFRLFdBQVc7Ozs7UUFHdkMsZ0JBQWlDOzhCQUFqQyxnQkFBaUM7O2lCQUFqQyxnQkFBaUM7Ozs7ZUFBakMsZ0JBQWlDO09BQVEsS0FBSzs7OztRQUc5QyxVQUFrQjs4QkFBbEIsVUFBa0I7O2lCQUFsQixVQUFrQjs7OztBQUFsQixrQkFBa0IsV0FDdEIsT0FBTyxHQUFBLGlCQUFDLEdBQWdCLEVBQUE7QUFDdEIsZ0JBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDN0IsZ0JBQUksUUFBUSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBRTlCLGdCQUFJLEdBQUcsR0FBRywrQkFqRFosa0JBQWtCLENBaURpQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEQsbUJBQU8sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RTs7ZUFQRyxVQUFrQjtPQUFRLGdCQUFnQjs7OztRQVUxQyxNQUFjOzhCQUFkLE1BQWM7O0FBQ2xCLGlCQURJLE1BQWMsQ0FDTixPQUFnQixFQUFFLFdBQXdCLEVBQVMsS0FBZSxFQUFTLE1BQWdCLEVBQUE7QUFDckcsMENBQU0sT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRGlDLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBVTtBQUFTLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBVTtTQUV0Rzs7QUFIRyxjQUFjLFdBS2xCLGtCQUFrQixHQUFBLDhCQUFBO0FBQ2hCLG1CQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUM1Qjs7QUFQRyxjQUFjLFdBU2xCLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUM3Qjs7ZUFYRyxNQUFjO09BQVEsZ0JBQWdCIiwiZmlsZSI6ImJsb2Nrcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBQcm9ncmFtIH0gZnJvbSAnLi4vc3ludGF4JztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgRW50cnlQb2ludENvbXBpbGVyLFxuICBJbmxpbmVCbG9ja0NvbXBpbGVyXG59IGZyb20gJy4uL2NvbXBpbGVyJztcblxuZXhwb3J0IGNsYXNzIENvbXBpbGVkQmxvY2sge1xuICBwdWJsaWMgb3BzOiBPcFNlcTtcbiAgcHVibGljIHN5bWJvbHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzeW1ib2xzOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLnN5bWJvbHMgPSBzeW1ib2xzO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9jayB7XG4gIHByb3RlY3RlZCBjb21waWxlZDogQ29tcGlsZWRCbG9jayA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb2dyYW06IFByb2dyYW0sIHB1YmxpYyBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgY29uc3RydWN0b3IocHJvZ3JhbTogUHJvZ3JhbSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgbG9jYWxzOiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgc3VwZXIocHJvZ3JhbSwgc3ltYm9sVGFibGUpO1xuICB9XG5cbiAgaGFzUG9zaXRpb25hbFBhcmFtZXRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sb2NhbHMubGVuZ3RoO1xuICB9XG5cbiAgY29tcGlsZShlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRCbG9jayB7XG4gICAgbGV0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlZDtcbiAgICBpZiAoY29tcGlsZWQpIHJldHVybiBjb21waWxlZDtcblxuICAgIGxldCBvcHMgPSBuZXcgSW5saW5lQmxvY2tDb21waWxlcih0aGlzLCBlbnYpLmNvbXBpbGUoKTtcbiAgICByZXR1cm4gdGhpcy5jb21waWxlZCA9IG5ldyBDb21waWxlZEJsb2NrKG9wcywgdGhpcy5zeW1ib2xUYWJsZS5zaXplKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydGlhbEJsb2NrIGV4dGVuZHMgSW5saW5lQmxvY2sge1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9wTGV2ZWxUZW1wbGF0ZSBleHRlbmRzIEJsb2NrIHtcbn1cblxuZXhwb3J0IGNsYXNzIEVudHJ5UG9pbnQgZXh0ZW5kcyBUb3BMZXZlbFRlbXBsYXRlIHtcbiAgY29tcGlsZShlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IGNvbXBpbGVkID0gdGhpcy5jb21waWxlZDtcbiAgICBpZiAoY29tcGlsZWQpIHJldHVybiBjb21waWxlZDtcblxuICAgIGxldCBvcHMgPSBuZXcgRW50cnlQb2ludENvbXBpbGVyKHRoaXMsIGVudikuY29tcGlsZSgpO1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGVkID0gbmV3IENvbXBpbGVkQmxvY2sob3BzLCB0aGlzLnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXlvdXQgZXh0ZW5kcyBUb3BMZXZlbFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IocHJvZ3JhbTogUHJvZ3JhbSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgbmFtZWQ6IHN0cmluZ1tdLCBwdWJsaWMgeWllbGRzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKHByb2dyYW0sIHN5bWJvbFRhYmxlKTtcbiAgfVxuXG4gIGhhc05hbWVkUGFyYW1ldGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm5hbWVkLmxlbmd0aDtcbiAgfVxuXG4gIGhhc1lpZWxkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnlpZWxkcy5sZW5ndGg7XG4gIH1cbn1cbiJdfQ== enifed("glimmer-runtime/lib/compiled/expressions", ["exports"], function (exports) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var CompiledExpression = (function () { - function CompiledExpression() { - _classCallCheck(this, CompiledExpression); - } + function CompiledExpression() {} CompiledExpression.prototype.toJSON = function toJSON() { return "UNIMPL: " + this.type.toUpperCase(); }; return CompiledExpression; })(); exports.CompiledExpression = CompiledExpression; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFHQSxrQkFBQTtpQkFBQSxrQkFBQTtrQ0FBQSxrQkFBQTs7O0FBQUEsMEJBQUEsV0FJRSxNQUFNLEdBQUEsa0JBQUE7QUFDSixnQ0FBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBRztTQUM3Qzs7ZUFOSCxrQkFBQSIsImZpbGUiOiJleHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gIHR5cGU6IHN0cmluZztcbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxUPjtcblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFVOSU1QTDogJHt0aGlzLnR5cGUudG9VcHBlckNhc2UoKX1gO1xuICB9XG59XG4iXX0= -enifed('glimmer-runtime/lib/compiled/expressions/args', ['exports', 'glimmer-runtime/lib/compiled/expressions/positional-args', 'glimmer-runtime/lib/compiled/expressions/named-args', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibCompiledExpressionsPositionalArgs, _glimmerRuntimeLibCompiledExpressionsNamedArgs, _glimmerReference, _glimmerUtil) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBR00sa0JBQUE7aUJBQUEsa0JBQUE7O0FBQUEsMEJBQUEsV0FJSixNQUFNLEdBQUEsa0JBQUE7QUFDSixnQ0FBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBRztTQUM3Qzs7ZUFORyxrQkFBQSIsImZpbGUiOiJleHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gIHR5cGU6IHN0cmluZztcbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxUPjtcblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFVOSU1QTDogJHt0aGlzLnR5cGUudG9VcHBlckNhc2UoKX1gO1xuICB9XG59XG4iXX0= +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 _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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var CompiledArgs = (function () { - function CompiledArgs() { - _classCallCheck(this, CompiledArgs); + function CompiledArgs(positional, named) { + this.positional = positional; + this.named = named; } - CompiledArgs.create = function create(_ref) { - var positional = _ref.positional; - var named = _ref.named; - + CompiledArgs.create = function create(positional, named) { if (positional === _glimmerRuntimeLibCompiledExpressionsPositionalArgs.COMPILED_EMPTY_POSITIONAL_ARGS && named === _glimmerRuntimeLibCompiledExpressionsNamedArgs.COMPILED_EMPTY_NAMED_ARGS) { - return COMPILED_EMPTY_ARGS; + return this.empty(); } else { - return new CompiledNonEmptyArgs({ positional: positional, named: named }); + return new this(positional, named); } }; CompiledArgs.empty = function empty() { return COMPILED_EMPTY_ARGS; }; + CompiledArgs.prototype.evaluate = function evaluate(vm) { + return EvaluatedArgs.create(this.positional.evaluate(vm), this.named.evaluate(vm)); + }; + return CompiledArgs; })(); exports.CompiledArgs = CompiledArgs; - var CompiledNonEmptyArgs = (function (_CompiledArgs) { - _inherits(CompiledNonEmptyArgs, _CompiledArgs); + var COMPILED_EMPTY_ARGS = new ((function (_CompiledArgs) { + babelHelpers.inherits(_class, _CompiledArgs); - function CompiledNonEmptyArgs(_ref2) { - var positional = _ref2.positional; - var named = _ref2.named; - - _classCallCheck(this, CompiledNonEmptyArgs); - - _CompiledArgs.call(this); - this.type = "args"; - this.positional = positional; - this.named = named; - } - - CompiledNonEmptyArgs.prototype.evaluate = function evaluate(vm) { - return EvaluatedArgs.create({ - positional: this.positional.evaluate(vm), - named: this.named.evaluate(vm) - }); - }; - - return CompiledNonEmptyArgs; - })(CompiledArgs); - - var COMPILED_EMPTY_ARGS = new ((function (_CompiledArgs2) { - _inherits(_class, _CompiledArgs2); - function _class() { - _classCallCheck(this, _class); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _CompiledArgs2.call.apply(_CompiledArgs2, [this].concat(args)); - this.type = "empty-args"; + _CompiledArgs.call(this, _glimmerRuntimeLibCompiledExpressionsPositionalArgs.COMPILED_EMPTY_POSITIONAL_ARGS, _glimmerRuntimeLibCompiledExpressionsNamedArgs.COMPILED_EMPTY_NAMED_ARGS); } _class.prototype.evaluate = function evaluate(vm) { - return EvaluatedArgs.empty(); + return EMPTY_EVALUATED_ARGS; }; return _class; })(CompiledArgs))(); - exports.COMPILED_EMPTY_ARGS = COMPILED_EMPTY_ARGS; var EvaluatedArgs = (function () { - function EvaluatedArgs() { - _classCallCheck(this, EvaluatedArgs); + function EvaluatedArgs(positional, named) { + this.positional = positional; + this.named = named; + this.tag = _glimmerReference.combineTagged([positional, named]); } EvaluatedArgs.empty = function empty() { return EMPTY_EVALUATED_ARGS; }; - EvaluatedArgs.create = function create(options) { - return new NonEmptyEvaluatedArgs(options); + EvaluatedArgs.create = function create(positional, named) { + return new this(positional, named); }; EvaluatedArgs.positional = function positional(values) { - return new NonEmptyEvaluatedArgs({ positional: _glimmerRuntimeLibCompiledExpressionsPositionalArgs.EvaluatedPositionalArgs.create({ values: values }), named: _glimmerRuntimeLibCompiledExpressionsNamedArgs.EvaluatedNamedArgs.empty() }); + return new this(_glimmerRuntimeLibCompiledExpressionsPositionalArgs.EvaluatedPositionalArgs.create(values), _glimmerRuntimeLibCompiledExpressionsNamedArgs.EVALUATED_EMPTY_NAMED_ARGS); }; - EvaluatedArgs.prototype.withInternal = function withInternal() { - if (!this.internal) { - this.internal = _glimmerUtil.dict(); - } - return this; + EvaluatedArgs.named = function named(map) { + return new this(_glimmerRuntimeLibCompiledExpressionsPositionalArgs.EVALUATED_EMPTY_POSITIONAL_ARGS, _glimmerRuntimeLibCompiledExpressionsNamedArgs.EvaluatedNamedArgs.create(map)); }; return EvaluatedArgs; })(); exports.EvaluatedArgs = EvaluatedArgs; - var NonEmptyEvaluatedArgs = (function (_EvaluatedArgs) { - _inherits(NonEmptyEvaluatedArgs, _EvaluatedArgs); - - function NonEmptyEvaluatedArgs(_ref3) { - var positional = _ref3.positional; - var named = _ref3.named; - - _classCallCheck(this, NonEmptyEvaluatedArgs); - - _EvaluatedArgs.call(this); - this.tag = _glimmerReference.combine([positional.tag, named.tag]); - this.positional = positional; - this.named = named; - this.internal = null; - } - - return NonEmptyEvaluatedArgs; - })(EvaluatedArgs); - - var EMPTY_EVALUATED_ARGS = new ((function (_EvaluatedArgs2) { - _inherits(_class2, _EvaluatedArgs2); - - function _class2() { - _classCallCheck(this, _class2); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _EvaluatedArgs2.call.apply(_EvaluatedArgs2, [this].concat(args)); - this.tag = _glimmerReference.CONSTANT_TAG; - this.positional = _glimmerRuntimeLibCompiledExpressionsPositionalArgs.EVALUATED_EMPTY_POSITIONAL_ARGS; - this.named = _glimmerRuntimeLibCompiledExpressionsNamedArgs.EVALUATED_EMPTY_NAMED_ARGS; - this.internal = null; - } - - _class2.prototype.withInternal = function withInternal() { - var args = new NonEmptyEvaluatedArgs(this); - args.internal = _glimmerUtil.dict(); - return args; - }; - - return _class2; - })(EvaluatedArgs))(); - exports.EMPTY_EVALUATED_ARGS = EMPTY_EVALUATED_ARGS; + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFZQSxZQUFBO2lCQUFBLFlBQUE7a0NBQUEsWUFBQTs7O0FBQUEsb0JBQUEsQ0FLUyxNQUFNLEdBQUEsZ0JBQUMsSUFBeUMsRUFBQTtnQkFBdkMsVUFBVSxHQUFaLElBQXlDLENBQXZDLFVBQVU7Z0JBQUUsS0FBSyxHQUFuQixJQUF5QyxDQUEzQixLQUFLOztBQUMvQixnQkFBSSxVQUFVLHlEQWxCVCw4QkFBOEIsQUFrQmMsSUFBSSxLQUFLLG9EQWpCckQseUJBQXlCLEFBaUIyRCxFQUFFO0FBQ3pGLHVCQUFPLG1CQUFtQixDQUFDO2FBQzVCLE1BQU07QUFDTCx1QkFBTyxJQUFJLG9CQUFvQixDQUFDLEVBQUUsVUFBVSxFQUFWLFVBQVUsRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUN4RDtTQUNGOztBQVhILG9CQUFBLENBYVMsS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8sbUJBQW1CLENBQUM7U0FDNUI7O2VBZkgsWUFBQTs7Ozs7UUFvQkEsb0JBQUE7a0JBQUEsb0JBQUE7O0FBS0UsaUJBTEYsb0JBQUEsQ0FLYyxLQUF5QyxFQUFBO2dCQUF2QyxVQUFVLEdBQVosS0FBeUMsQ0FBdkMsVUFBVTtnQkFBRSxLQUFLLEdBQW5CLEtBQXlDLENBQTNCLEtBQUs7O2tDQUxqQyxvQkFBQTs7QUFNSSxvQ0FBTyxDQUFDO0FBTEgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBTW5CLGdCQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztBQUM3QixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7O0FBVEgsNEJBQUEsV0FXRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztBQUMxQiwwQkFBVSxFQUFFLElB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O1lBRU0sc0JBQXNCLHVEQXBIMkMsc0JBQXNCO1lBb0gvRCx1QkFBdUIsdURBcEgwQyx1QkFBdUI7WUFvSC9ELGlCQUFpQixrREFuSFgsaUJBQWlCO1lBbUhKLGtCQUFrQixrREFuSFosa0JBQWtCIiwiZmlsZSI6ImFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01QSUxFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1MsIEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1MsIENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIH0gZnJvbSAnLi9wb3NpdGlvbmFsLWFyZ3MnO1xuaW1wb3J0IHsgQ09NUElMRURfRU1QVFlfTkFNRURfQVJHUywgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MsIENvbXBpbGVkTmFtZWRBcmdzLCBFdmFsdWF0ZWROYW1lZEFyZ3MgfSBmcm9tICcuL25hbWVkLWFyZ3MnO1xuaW1wb3J0IFZNIGZyb20gJy4uLy4uL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBCbG9jayAgfSBmcm9tICcuLi9ibG9ja3MnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZXZpc2lvblRhZywgUGF0aFJlZmVyZW5jZSwgY29tYmluZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmludGVyZmFjZSBDb21waWxlZEFyZ09wdGlvbnMge1xuICBwb3NpdGlvbmFsOiBDb21waWxlZFBvc2l0aW9uYWxBcmdzO1xuICBuYW1lZDogQ29tcGlsZWROYW1lZEFyZ3M7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21waWxlZEFyZ3Mge1xuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgcG9zaXRpb25hbDogQ29tcGlsZWRQb3NpdGlvbmFsQXJncztcbiAgcHVibGljIG5hbWVkOiBDb21waWxlZE5hbWVkQXJncztcblxuICBzdGF0aWMgY3JlYXRlKHsgcG9zaXRpb25hbCwgbmFtZWQgfTogQ29tcGlsZWRBcmdPcHRpb25zKTogQ29tcGlsZWRBcmdzIHtcbiAgICBpZiAocG9zaXRpb25hbCA9PT0gQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTICYmIG5hbWVkID09PSAgQ09NUElMRURfRU1QVFlfTkFNRURfQVJHUykge1xuICAgICAgcmV0dXJuIENPTVBJTEVEX0VNUFRZX0FSR1M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWROb25FbXB0eUFyZ3MoeyBwb3NpdGlvbmFsLCBuYW1lZCB9KTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoKTogQ29tcGlsZWRBcmdzIHtcbiAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfQVJHUztcbiAgfVxuXG4gIGFic3RyYWN0IGV2YWx1YXRlKHZtOiBWTSk6IEV2YWx1YXRlZEFyZ3M7XG59XG5cbmNsYXNzIENvbXBpbGVkTm9uRW1wdHlBcmdzIGV4dGVuZHMgQ29tcGlsZWRBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcImFyZ3NcIjtcbiAgcHVibGljIHBvc2l0aW9uYWw6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3M7XG4gIHB1YmxpYyBuYW1lZDogQ29tcGlsZWROYW1lZEFyZ3M7XG5cbiAgY29uc3RydWN0b3IoeyBwb3NpdGlvbmFsLCBuYW1lZCB9OiBDb21waWxlZEFyZ09wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucG9zaXRpb25hbCA9IHBvc2l0aW9uYWw7XG4gICAgdGhpcy5uYW1lZCA9IG5hbWVkO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIEV2YWx1YXRlZEFyZ3MuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5ldmFsdWF0ZSh2bSksXG4gICAgICBuYW1lZDogdGhpcy5uYW1lZC5ldmFsdWF0ZSh2bSlcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ09NUElMRURfRU1QVFlfQVJHUyA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBDb21waWxlZEFyZ3Mge1xuICBwdWJsaWMgdHlwZSA9IFwiZW1wdHktYXJnc1wiO1xuXG4gIGV2YWx1YXRlKHZtKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIEV2YWx1YXRlZEFyZ3MuZW1wdHkoKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBFdmFsdWF0ZWRBcmdzT3B0aW9ucyB7XG4gIHBvc2l0aW9uYWw6IEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzO1xuICBuYW1lZDogRXZhbHVhdGVkTmFtZWRBcmdzO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXZhbHVhdGVkQXJncyB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICByZXR1cm4gRU1QVFlfRVZBTFVBVEVEX0FSR1M7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKG9wdGlvbnM6IEV2YWx1YXRlZEFyZ3NPcHRpb25zKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIG5ldyBOb25FbXB0eUV2YWx1YXRlZEFyZ3Mob3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgcG9zaXRpb25hbCh2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8YW55PltdKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIG5ldyBOb25FbXB0eUV2YWx1YXRlZEFyZ3MoeyBwb3NpdGlvbmFsOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncy5jcmVhdGUoeyB2YWx1ZXMgfSksIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3MuZW1wdHkoKSB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0eXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBwb3NpdGlvbmFsOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncztcbiAgcHVibGljIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3M7XG4gIHB1YmxpYyBibG9ja3M6IEJsb2NrW107XG4gIHB1YmxpYyBpbnRlcm5hbDogRGljdDxPcGFxdWU+O1xuXG4gIHB1YmxpYyB3aXRoSW50ZXJuYWwoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgaWYgKCF0aGlzLmludGVybmFsKSB7XG4gICAgICB0aGlzLmludGVybmFsID0gZGljdDxPcGFxdWU+KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIE5vbkVtcHR5RXZhbHVhdGVkQXJncyBleHRlbmRzIEV2YWx1YXRlZEFyZ3Mge1xuICBjb25zdHJ1Y3Rvcih7IHBvc2l0aW9uYWwsIG5hbWVkIH06IEV2YWx1YXRlZEFyZ3NPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3Bvc2l0aW9uYWwudGFnLCBuYW1lZC50YWddKTtcbiAgICB0aGlzLnBvc2l0aW9uYWwgPSBwb3NpdGlvbmFsO1xuICAgIHRoaXMubmFtZWQgPSBuYW1lZDtcbiAgICB0aGlzLmludGVybmFsID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRU1QVFlfRVZBTFVBVEVEX0FSR1MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgRXZhbHVhdGVkQXJncyB7XG4gIHB1YmxpYyB0YWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyBwb3NpdGlvbmFsID0gRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUztcbiAgcHVibGljIG5hbWVkID0gRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1M7XG4gIHB1YmxpYyBpbnRlcm5hbCA9IG51bGw7XG5cbiAgcHVibGljIHdpdGhJbnRlcm5hbCgpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICBsZXQgYXJncyA9IG5ldyBOb25FbXB0eUV2YWx1YXRlZEFyZ3ModGhpcyk7XG4gICAgYXJncy5pbnRlcm5hbCA9IGRpY3Q8T3BhcXVlPigpO1xuICAgIHJldHVybiBhcmdzO1xuICB9XG59KTtcblxuZXhwb3J0IHsgQ29tcGlsZWRQb3NpdGlvbmFsQXJncywgRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MsIENvbXBpbGVkTmFtZWRBcmdzLCBFdmFsdWF0ZWROYW1lZEFyZ3MgfTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFNTSxZQUFBO0FBYUosaUJBYkksWUFBQSxDQWNLLFVBQWtDLEVBQ2xDLEtBQXdCLEVBQUE7QUFEeEIsZ0JBQUEsQ0FBQSxVQUFVLEdBQVYsVUFBVSxDQUF3QjtBQUNsQyxnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQW1CO1NBRWhDOztBQWpCRyxvQkFBQSxDQUNHLE1BQU0sR0FBQSxnQkFBQyxVQUFrQyxFQUFFLEtBQXdCLEVBQUE7QUFDeEUsZ0JBQUksVUFBVSx5REFQVCw4QkFBOEIsQUFPYyxJQUFJLEtBQUssb0RBTnJELHlCQUF5QixBQU0yRCxFQUFFO0FBQ3pGLHVCQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNyQixNQUFNO0FBQ0wsdUJBQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7O0FBUEcsb0JBQUEsQ0FTRyxLQUFLLEdBQUEsaUJBQUE7QUFDVixtQkFBTyxtQkFBbUIsQ0FBQztTQUM1Qjs7QUFYRyxvQkFBQSxXQW1CSixRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BGOztlQXJCRyxZQUFBOzs7OztBQXdCTixRQUFNLG1CQUFtQixHQUFpQjs7O0FBQ3hDLDBCQUFBO0FBQ0UseUZBL0JLLDhCQUE4QixpREFDOUIseUJBQXlCLENBOEJrQyxDQUFDO1NBQ2xFOzt5QkFFRCxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsbUJBQU8sb0JBQW9CLENBQUM7U0FDN0I7OztPQVAwRCxZQUFZLElBUXZFLENBQUM7O1FBRUcsYUFBQTtBQW1CSixpQkFuQkksYUFBQSxDQW9CSyxVQUFtQyxFQUNuQyxLQUF5QixFQUFBO0FBRHpCLGdCQUFBLENBQUEsVUFBVSxHQUFWLFVBQVUsQ0FBeUI7QUFDbkMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFvQjtBQUVoQyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxrQkE1RHNCLGFBQWEsQ0E0RHJCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0M7O0FBeEJHLHFCQUFBLENBQ0csS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8sb0JBQW9CLENBQUM7U0FDN0I7O0FBSEcscUJBQUEsQ0FLRyxNQUFNLEdBQUEsZ0JBQUMsVUFBbUMsRUFBRSxLQUF5QixFQUFBO0FBQzFFLG1CQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNwQzs7QUFQRyxxQkFBQSxDQVNHLFVBQVUsR0FBQSxvQkFBQyxNQUErQixFQUFBO0FBQy9DLG1CQUFPLElBQUksSUFBSSxDQUFDLG9EQWpEOEUsdUJBQXVCLENBaUQ3RSxNQUFNLENBQUMsTUFBTSxDQUFDLGlEQWhEdEIsMEJBQTBCLENBZ0R5QixDQUFDO1NBQ3JGOztBQVhHLHFCQUFBLENBYUcsS0FBSyxHQUFBLGVBQUMsR0FBZ0MsRUFBQTtBQUMzQyxtQkFBTyxJQUFJLElBQUkscURBckRzQiwrQkFBK0IsRUFxRG5CLCtDQXBEOEIsa0JBQWtCLENBb0Q3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsRjs7ZUFmRyxhQUFBOzs7OztBQTJCTixRQUFNLG9CQUFvQixHQUFHLElBQUksYUFBYSxxREFsRUwsK0JBQStCLGlEQUNwQywwQkFBMEIsQ0FpRTZDLENBQUM7WUFFbkcsc0JBQXNCLHVEQXBFMkMsc0JBQXNCO1lBb0UvRCx1QkFBdUIsdURBcEUwQyx1QkFBdUI7WUFvRS9ELGlCQUFpQixrREFuRVgsaUJBQWlCO1lBbUVKLGtCQUFrQixrREFuRVosa0JBQWtCIiwiZmlsZSI6ImFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IENPTVBJTEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgQ29tcGlsZWRQb3NpdGlvbmFsQXJncywgRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MgfSBmcm9tICcuL3Bvc2l0aW9uYWwtYXJncyc7XG5pbXBvcnQgeyBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTLCBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUywgQ29tcGlsZWROYW1lZEFyZ3MsIEV2YWx1YXRlZE5hbWVkQXJncyB9IGZyb20gJy4vbmFtZWQtYXJncyc7XG5pbXBvcnQgeyBSZXZpc2lvblRhZywgUGF0aFJlZmVyZW5jZSwgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSwgRGljdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZEFyZ3Mge1xuICBzdGF0aWMgY3JlYXRlKHBvc2l0aW9uYWw6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBDb21waWxlZE5hbWVkQXJncyk6IENvbXBpbGVkQXJncyB7XG4gICAgaWYgKHBvc2l0aW9uYWwgPT09IENPTVBJTEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUyAmJiBuYW1lZCA9PT0gIENPTVBJTEVEX0VNUFRZX05BTUVEX0FSR1MpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhwb3NpdGlvbmFsLCBuYW1lZCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGVtcHR5KCk6IENvbXBpbGVkQXJncyB7XG4gICAgcmV0dXJuIENPTVBJTEVEX0VNUFRZX0FSR1M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogQ29tcGlsZWRQb3NpdGlvbmFsQXJncyxcbiAgICBwdWJsaWMgbmFtZWQ6IENvbXBpbGVkTmFtZWRBcmdzXG4gICkge1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIEV2YWx1YXRlZEFyZ3MuY3JlYXRlKHRoaXMucG9zaXRpb25hbC5ldmFsdWF0ZSh2bSksIHRoaXMubmFtZWQuZXZhbHVhdGUodm0pKTtcbiAgfVxufVxuXG5jb25zdCBDT01QSUxFRF9FTVBUWV9BUkdTOiBDb21waWxlZEFyZ3MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgQ29tcGlsZWRBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTLCBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9FVkFMVUFURURfQVJHUztcbiAgfVxufSk7XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZWRBcmdzIHtcbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9FVkFMVUFURURfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUocG9zaXRpb25hbDogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICByZXR1cm4gbmV3IHRoaXMocG9zaXRpb25hbCwgbmFtZWQpO1xuICB9XG5cbiAgc3RhdGljIHBvc2l0aW9uYWwodmFsdWVzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiBuZXcgdGhpcyhFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncy5jcmVhdGUodmFsdWVzKSwgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MpO1xuICB9XG5cbiAgc3RhdGljIG5hbWVkKG1hcDogRGljdDxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1MsIEV2YWx1YXRlZE5hbWVkQXJncy5jcmVhdGUobWFwKSk7XG4gIH1cblxuICBwdWJsaWMgdGFnOiBSZXZpc2lvblRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcG9zaXRpb25hbDogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MsXG4gICAgcHVibGljIG5hbWVkOiBFdmFsdWF0ZWROYW1lZEFyZ3NcbiAgKSB7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKFtwb3NpdGlvbmFsLCBuYW1lZF0pO1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX0VWQUxVQVRFRF9BUkdTID0gbmV3IEV2YWx1YXRlZEFyZ3MoRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUywgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MpO1xuXG5leHBvcnQgeyBDb21waWxlZFBvc2l0aW9uYWxBcmdzLCBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncywgQ29tcGlsZWROYW1lZEFyZ3MsIEV2YWx1YXRlZE5hbWVkQXJncyB9O1xuIl19 enifed('glimmer-runtime/lib/compiled/expressions/concat', ['exports', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-reference'], function (exports, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerReference) { 'use strict'; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var CompiledConcat = (function () { function CompiledConcat(_ref) { var parts = _ref.parts; - _classCallCheck(this, CompiledConcat); - this.type = "concat"; this.parts = parts; } CompiledConcat.prototype.evaluate = function evaluate(vm) { @@ -14857,15 +15670,13 @@ })(); exports.default = CompiledConcat; var ConcatReference = (function (_CachedReference) { - _inherits(ConcatReference, _CachedReference); + babelHelpers.inherits(ConcatReference, _CachedReference); function ConcatReference(parts) { - _classCallCheck(this, ConcatReference); - _CachedReference.call(this); this.tag = _glimmerReference.combineTagged(parts); this.parts = parts; } @@ -14878,59 +15689,52 @@ }; return ConcatReference; })(_glimmerReference.CachedReference); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQU1BLGNBQUE7QUFJRSxpQkFKRixjQUFBLENBSWMsSUFBa0QsRUFBQTtnQkFBaEQsS0FBSyxHQUFQLElBQWtELENBQWhELEtBQUs7O2tDQUpyQixjQUFBOztBQUNTLGdCQUFBLENBQUEsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUlyQixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7O0FBTkgsc0JBQUEsV0FRRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksS0FBSyxHQUE0QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUMscUJBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2QztBQUNELG1CQUFPLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DOztBQWRILHNCQUFBLFdBZ0JFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLCtCQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUk7dUJBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTthQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQUk7U0FDdEU7O2VBbEJILGNBQUE7OztzQkFBQSxjQUFBOztRQXFCQSxlQUFBO2tCQUFBLGVBQUE7O0FBSUUsaUJBSkYsZUFBQSxDQUljLEtBQThCLEVBQUE7a0NBSjVDLGVBQUE7O0FBS0ksdUNBQU8sQ0FBQztBQUNSLGdCQUFJLENBQUMsR0FBRyxHQUFHLGtCQTlCdUMsYUFBYSxDQThCdEMsS0FBSyxDQUFDLENBQUM7QUFDaEMsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCOztBQVJILHVCQUFBLFdBVVksT0FBTyxHQUFBLG1CQUFBO0FBQ2YsZ0JBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxxQkFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLHlDQXZDUixrQkFBa0IsQ0F1Q1MsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3REO0FBQ0QsbUJBQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2Qjs7ZUFoQkgsZUFBQTt5QkF4QndCLGVBQWUiLCJmaWxlIjoiY29uY2F0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgbm9ybWFsaXplVGV4dFZhbHVlIH0gZnJvbSAnLi4vb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgQ2FjaGVkUmVmZXJlbmNlLCBSZXZpc2lvblRhZywgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGVkQ29uY2F0IHtcbiAgcHVibGljIHR5cGUgPSBcImNvbmNhdFwiO1xuICBwdWJsaWMgcGFydHM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W107XG5cbiAgY29uc3RydWN0b3IoeyBwYXJ0cyB9OiB7IHBhcnRzOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPltdIH0pIHtcbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBDb25jYXRSZWZlcmVuY2Uge1xuICAgIGxldCBwYXJ0czogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkodGhpcy5wYXJ0cy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFydHNbaV0gPSB0aGlzLnBhcnRzW2ldLmV2YWx1YXRlKHZtKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb25jYXRSZWZlcmVuY2UocGFydHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjb25jYXQoJHt0aGlzLnBhcnRzLm1hcChleHByID0+IGV4cHIudG9KU09OKCkpLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxufVxuXG5jbGFzcyBDb25jYXRSZWZlcmVuY2UgZXh0ZW5kcyBDYWNoZWRSZWZlcmVuY2U8c3RyaW5nPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuICBwcml2YXRlIHBhcnRzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXTtcblxuICBjb25zdHJ1Y3RvcihwYXJ0czogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChwYXJ0cyk7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogc3RyaW5nIHtcbiAgICBsZXQgcGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPih0aGlzLnBhcnRzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwYXJ0c1tpXSA9IG5vcm1hbGl6ZVRleHRWYWx1ZSh0aGlzLnBhcnRzW2ldLnZhbHVlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvY29uY2F0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQU1jLGNBQUE7QUFJWixpQkFKWSxjQUFBLENBSUEsSUFBa0QsRUFBQTtnQkFBaEQsS0FBSyxHQUFQLElBQWtELENBQWhELEtBQUs7O0FBSFosZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBSXJCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFOVyxzQkFBQSxXQVFaLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxLQUFLLEdBQTRCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEUsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxxQkFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO0FBQ0QsbUJBQU8sSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7O0FBZFcsc0JBQUEsV0FnQlosTUFBTSxHQUFBLGtCQUFBO0FBQ0osK0JBQWlCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSTt1QkFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2FBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBSTtTQUN0RTs7ZUFsQlcsY0FBQTs7O3NCQUFBLGNBQUE7O1FBcUJkLGVBQXNCOzhCQUF0QixlQUFzQjs7QUFJcEIsaUJBSkYsZUFBc0IsQ0FJUixLQUE4QixFQUFBO0FBQ3hDLHVDQUFPLENBQUM7QUFDUixnQkFBSSxDQUFDLEdBQUcsR0FBRyxrQkE5QnVDLGFBQWEsQ0E4QnRDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFSSCx1QkFBc0IsV0FVVixPQUFPLEdBQUEsbUJBQUE7QUFDZixnQkFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRCxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLHFCQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcseUNBdkNSLGtCQUFrQixDQXVDUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdEQ7QUFDRCxtQkFBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZCOztlQWhCSCxlQUFzQjt5QkF4QkUsZUFBZSIsImZpbGUiOiJjb25jYXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBub3JtYWxpemVUZXh0VmFsdWUgfSBmcm9tICcuLi9vcGNvZGVzL2NvbnRlbnQnO1xuaW1wb3J0IFZNIGZyb20gJy4uLy4uL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBDYWNoZWRSZWZlcmVuY2UsIFJldmlzaW9uVGFnLCBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRDb25jYXQge1xuICBwdWJsaWMgdHlwZSA9IFwiY29uY2F0XCI7XG4gIHB1YmxpYyBwYXJ0czogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT5bXTtcblxuICBjb25zdHJ1Y3Rvcih7IHBhcnRzIH06IHsgcGFydHM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W10gfSkge1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IENvbmNhdFJlZmVyZW5jZSB7XG4gICAgbGV0IHBhcnRzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheSh0aGlzLnBhcnRzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwYXJ0c1tpXSA9IHRoaXMucGFydHNbaV0uZXZhbHVhdGUodm0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbmNhdFJlZmVyZW5jZShwYXJ0cyk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGNvbmNhdCgke3RoaXMucGFydHMubWFwKGV4cHIgPT4gZXhwci50b0pTT04oKSkuam9pbihcIiwgXCIpfSlgO1xuICB9XG59XG5cbmNsYXNzIENvbmNhdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgcGFydHM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcnRzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKHBhcnRzKTtcbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZSgpOiBzdHJpbmcge1xuICAgIGxldCBwYXJ0cyA9IG5ldyBBcnJheTxzdHJpbmc+KHRoaXMucGFydHMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhcnRzW2ldID0gbm9ybWFsaXplVGV4dFZhbHVlKHRoaXMucGFydHNbaV0udmFsdWUoKSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxufVxuIl19 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 _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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - function make(func) { return new FunctionExpressionSyntax(func); } var FunctionExpressionSyntax = (function (_ExpressionSyntax) { - _inherits(FunctionExpressionSyntax, _ExpressionSyntax); + babelHelpers.inherits(FunctionExpressionSyntax, _ExpressionSyntax); function FunctionExpressionSyntax(func) { - _classCallCheck(this, FunctionExpressionSyntax); - _ExpressionSyntax.call(this); this.type = "function-expression"; this.func = func; } - FunctionExpressionSyntax.prototype.compile = function compile() { - return new CompiledFunctionExpression(this.func); + FunctionExpressionSyntax.prototype.compile = function compile(lookup, env, symbolTable) { + return new CompiledFunctionExpression(this.func, symbolTable); }; return FunctionExpressionSyntax; })(_glimmerRuntimeLibSyntax.Expression); var CompiledFunctionExpression = (function (_CompiledExpression) { - _inherits(CompiledFunctionExpression, _CompiledExpression); + babelHelpers.inherits(CompiledFunctionExpression, _CompiledExpression); - function CompiledFunctionExpression(func) { - _classCallCheck(this, CompiledFunctionExpression); - + function CompiledFunctionExpression(func, symbolTable) { _CompiledExpression.call(this); + this.func = func; + this.symbolTable = symbolTable; this.type = "function"; this.func = func; } CompiledFunctionExpression.prototype.evaluate = function evaluate(vm) { var func = this.func; + var symbolTable = this.symbolTable; - return func(vm); + return func(vm, symbolTable); }; CompiledFunctionExpression.prototype.toJSON = function toJSON() { var func = this.func; @@ -14942,29 +15746,21 @@ }; return CompiledFunctionExpression; })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQU9BLElBQUE7Ozs7Ozs7O0FBQUEsYUFBQSxJQUFBLENBQWdDLElBQTJCLEVBQUE7QUFDekQsZUFBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzNDOztRQUVELHdCQUFBO2tCQUFBLHdCQUFBOztBQUlFLGlCQUpGLHdCQUFBLENBSWMsSUFBMkIsRUFBQTtrQ0FKekMsd0JBQUE7O0FBS0ksd0NBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0FBS2xDLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjs7QUFQSCxnQ0FBQSxXQVNFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xEOztlQVhILHdCQUFBO2dDQVZTLFVBQVU7O1FBd0JuQiwwQkFBQTtrQkFBQSwwQkFBQTs7QUFJRSxpQkFKRiwwQkFBQSxDQUljLElBQTJCLEVBQUE7a0NBSnpDLDBCQUFBOztBQUtJLDBDQUFPLENBQUM7QUFKSCxnQkFBQSxDQUFBLElBQUksR0FBRyxVQUFVLENBQUM7QUFLdkIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVBILGtDQUFBLFdBU0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxJQUFJLEdBQUssSUFBSSxDQUFiLElBQUk7O0FBQ1YsbUJBQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pCOztBQVpILGtDQUFBLFdBY0UsTUFBTSxHQUFBLGtCQUFBO2dCQUNFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFVixnQkFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2IsNkJBQVksSUFBSSxDQUFDLElBQUksWUFBVTthQUNoQyxNQUFNO0FBQ0wsdUJBQU8sYUFBYSxDQUFDO2FBQ3RCO1NBQ0Y7O2VBdEJILDBCQUFBOzZDQXZCUyxrQkFBa0IiLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4IH0gZnJvbSAnLi4vLi4vc3ludGF4JztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IFB1YmxpY1ZNIGFzIFZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuXG5leHBvcnQgdHlwZSBGdW5jdGlvbkV4cHJlc3Npb248VD4gPSAoVk0pID0+IFBhdGhSZWZlcmVuY2U8VD47XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1ha2U8VD4oZnVuYzogRnVuY3Rpb25FeHByZXNzaW9uPFQ+KTogRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHJldHVybiBuZXcgRnVuY3Rpb25FeHByZXNzaW9uU3ludGF4KGZ1bmMpO1xufVxuXG5jbGFzcyBGdW5jdGlvbkV4cHJlc3Npb25TeW50YXg8VD4gZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PFQ+IHtcbiAgcHVibGljIHR5cGUgPSBcImZ1bmN0aW9uLWV4cHJlc3Npb25cIjtcbiAgcHJpdmF0ZSBmdW5jOiBGdW5jdGlvbkV4cHJlc3Npb248VD47XG5cbiAgY29uc3RydWN0b3IoZnVuYzogRnVuY3Rpb25FeHByZXNzaW9uPFQ+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmZ1bmMgPSBmdW5jO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEV4cHJlc3Npb248VD4ge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRGdW5jdGlvbkV4cHJlc3Npb24odGhpcy5mdW5jKTtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlZEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJmdW5jdGlvblwiO1xuICBwcml2YXRlIGZ1bmM6IEZ1bmN0aW9uRXhwcmVzc2lvbjxUPjtcblxuICBjb25zdHJ1Y3RvcihmdW5jOiBGdW5jdGlvbkV4cHJlc3Npb248VD4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZnVuYyA9IGZ1bmM7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICBsZXQgeyBmdW5jIH0gPSB0aGlzO1xuICAgIHJldHVybiBmdW5jKHZtKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIGxldCB7IGZ1bmMgfSA9IHRoaXM7XG5cbiAgICBpZiAoZnVuYy5uYW1lKSB7XG4gICAgICByZXR1cm4gYFxcYCR7ZnVuYy5uYW1lfSguLi4pXFxgYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiYGZ1bmMoLi4uKWBcIjtcbiAgICB9XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQVFjLElBQUE7O0FBQUEsYUFBQSxJQUFBLENBQWtCLElBQTJCLEVBQUE7QUFDekQsZUFBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzNDOztRQUVELHdCQUFrQzs4QkFBbEMsd0JBQWtDOztBQUloQyxpQkFKRix3QkFBa0MsQ0FJcEIsSUFBMkIsRUFBQTtBQUNyQyx3Q0FBTyxDQUFDO0FBSkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcscUJBQXFCLENBQUM7QUFLbEMsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVBILGdDQUFrQyxXQVNoQyxPQUFPLEdBQUEsaUJBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUF3QixFQUFBO0FBQzNDLG1CQUFPLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMvRDs7ZUFYSCx3QkFBa0M7Z0NBWHpCLFVBQVU7O1FBeUJuQiwwQkFBb0M7OEJBQXBDLDBCQUFvQzs7QUFHbEMsaUJBSEYsMEJBQW9DLENBR2QsSUFBMkIsRUFBVSxXQUF3QixFQUFBO0FBQy9FLDBDQUFPLENBQUM7QUFEVSxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQXVCO0FBQVUsZ0JBQUEsQ0FBQSxXQUFXLEdBQVgsV0FBVyxDQUFhO0FBRjFFLGdCQUFBLENBQUEsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUl2QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBTkgsa0NBQW9DLFdBUWxDLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7Z0JBQ1AsSUFBSSxHQUFrQixJQUFJLENBQTFCLElBQUk7Z0JBQUUsV0FBVyxHQUFLLElBQUksQ0FBcEIsV0FBVzs7QUFDdkIsbUJBQU8sSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUM5Qjs7QUFYSCxrQ0FBb0MsV0FhbEMsTUFBTSxHQUFBLGtCQUFBO2dCQUNFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFVixnQkFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2IsNkJBQVksSUFBSSxDQUFDLElBQUksWUFBVTthQUNoQyxNQUFNO0FBQ0wsdUJBQU8sYUFBYSxDQUFDO2FBQ3RCO1NBQ0Y7O2VBckJILDBCQUFvQzs2Q0F4QjNCLGtCQUFrQiIsImZpbGUiOiJmdW5jdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIGFzIEV4cHJlc3Npb25TeW50YXggfSBmcm9tICcuLi8uLi9zeW50YXgnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgUHVibGljVk0gYXMgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25FeHByZXNzaW9uPFQ+ID0gKFZNOiBWTSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSA9PiBQYXRoUmVmZXJlbmNlPFQ+O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYWtlPFQ+KGZ1bmM6IEZ1bmN0aW9uRXhwcmVzc2lvbjxUPik6IEV4cHJlc3Npb25TeW50YXg8VD4ge1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvblN5bnRheChmdW5jKTtcbn1cblxuY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uU3ludGF4PFQ+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJmdW5jdGlvbi1leHByZXNzaW9uXCI7XG4gIHByaXZhdGUgZnVuYzogRnVuY3Rpb25FeHByZXNzaW9uPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKGZ1bmM6IEZ1bmN0aW9uRXhwcmVzc2lvbjxUPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mdW5jID0gZnVuYztcbiAgfVxuXG4gIGNvbXBpbGUobG9va3VwLCBlbnYsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZEZ1bmN0aW9uRXhwcmVzc2lvbih0aGlzLmZ1bmMsIHN5bWJvbFRhYmxlKTtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlZEZ1bmN0aW9uRXhwcmVzc2lvbjxUPiBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJmdW5jdGlvblwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnVuYzogRnVuY3Rpb25FeHByZXNzaW9uPFQ+LCBwcml2YXRlIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mdW5jID0gZnVuYztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IFBhdGhSZWZlcmVuY2U8VD4ge1xuICAgIGxldCB7IGZ1bmMsIHN5bWJvbFRhYmxlIH0gPSB0aGlzO1xuICAgIHJldHVybiBmdW5jKHZtLCBzeW1ib2xUYWJsZSk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICBsZXQgeyBmdW5jIH0gPSB0aGlzO1xuXG4gICAgaWYgKGZ1bmMubmFtZSkge1xuICAgICAgcmV0dXJuIGBcXGAke2Z1bmMubmFtZX0oLi4uKVxcYGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcImBmdW5jKC4uLilgXCI7XG4gICAgfVxuICB9XG59XG4iXX0= 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'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var CompiledHasBlockParams = (function (_CompiledExpression) { - _inherits(CompiledHasBlockParams, _CompiledExpression); + babelHelpers.inherits(CompiledHasBlockParams, _CompiledExpression); function CompiledHasBlockParams(_ref) { var blockName = _ref.blockName; var blockSymbol = _ref.blockSymbol; - _classCallCheck(this, CompiledHasBlockParams); - _CompiledExpression.call(this); this.type = "has-block-params"; this.blockName = blockName; this.blockSymbol = blockSymbol; } @@ -14981,29 +15777,21 @@ return CompiledHasBlockParams; })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); exports.default = CompiledHasBlockParams; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFLQSxzQkFBQTtrQkFBQSxzQkFBQTs7QUFLRSxpQkFMRixzQkFBQSxDQUtjLElBQThFLEVBQUE7Z0JBQTVFLFNBQVMsR0FBWCxJQUE4RSxDQUE1RSxTQUFTO2dCQUFFLFdBQVcsR0FBeEIsSUFBOEUsQ0FBakUsV0FBVzs7a0NBTHRDLHNCQUFBOztBQU1JLDBDQUFPLENBQUM7QUFMSCxnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztBQU0vQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1NBQ2hDOztBQVRILDhCQUFBLFdBV0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyRCxtQkFBTywrQ0FoQkYsY0FBYyxDQWdCTyxDQUFDLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxBQUFDLENBQUMsQ0FBQztTQUN2RTs7QUFkSCw4QkFBQSxXQWdCRSxNQUFNLEdBQUEsa0JBQUE7QUFDSix5Q0FBMkIsSUFBSSxDQUFDLFNBQVMsT0FBSTtTQUM5Qzs7ZUFsQkgsc0JBQUE7NkNBSlMsa0JBQWtCOztzQkFJM0Isc0JBQUEiLCJmaWxlIjoiaGFzLWJsb2NrLXBhcmFtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcbmltcG9ydCB7IEludGVybmVkU3RyaW5nIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2stcGFyYW1zXCI7XG4gIHB1YmxpYyBibG9ja05hbWU6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgYmxvY2tTeW1ib2w6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSwgYmxvY2tTeW1ib2wgfTogeyBibG9ja05hbWU6IEludGVybmVkU3RyaW5nLCBibG9ja1N5bWJvbDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYmxvY2tOYW1lID0gYmxvY2tOYW1lO1xuICAgIHRoaXMuYmxvY2tTeW1ib2wgPSBibG9ja1N5bWJvbDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IFZhbHVlUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICBsZXQgYmxvY2tSZWYgPSB2bS5zY29wZSgpLmdldEJsb2NrKHRoaXMuYmxvY2tTeW1ib2wpO1xuICAgIHJldHVybiBuZXcgVmFsdWVSZWZlcmVuY2UoISEoYmxvY2tSZWYgJiYgYmxvY2tSZWYubG9jYWxzLmxlbmd0aCA+IDApKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaGFzLWJsb2NrLXBhcmFtcygke3RoaXMuYmxvY2tOYW1lfSlgO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFJYyxzQkFBOEI7OEJBQTlCLHNCQUE4Qjs7QUFLMUMsaUJBTFksc0JBQThCLENBSzlCLElBQXNFLEVBQUE7Z0JBQXBFLFNBQVMsR0FBWCxJQUFzRSxDQUFwRSxTQUFTO2dCQUFFLFdBQVcsR0FBeEIsSUFBc0UsQ0FBekQsV0FBVzs7QUFDbEMsMENBQU8sQ0FBQztBQUxILGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBTS9CLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDaEM7O0FBVFcsOEJBQThCLFdBVzFDLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQsbUJBQU8sK0NBZkYsY0FBYyxDQWVPLENBQUMsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxDQUFDO1NBQ3ZFOztBQWRXLDhCQUE4QixXQWdCMUMsTUFBTSxHQUFBLGtCQUFBO0FBQ0oseUNBQTJCLElBQUksQ0FBQyxTQUFTLE9BQUk7U0FDOUM7O2VBbEJXLHNCQUE4Qjs2Q0FIbkMsa0JBQWtCOztzQkFHYixzQkFBOEIiLCJmaWxlIjoiaGFzLWJsb2NrLXBhcmFtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2stcGFyYW1zXCI7XG4gIHB1YmxpYyBibG9ja05hbWU6IHN0cmluZztcbiAgcHVibGljIGJsb2NrU3ltYm9sOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoeyBibG9ja05hbWUsIGJsb2NrU3ltYm9sIH06IHsgYmxvY2tOYW1lOiBzdHJpbmcsIGJsb2NrU3ltYm9sOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gICAgdGhpcy5ibG9ja1N5bWJvbCA9IGJsb2NrU3ltYm9sO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogVmFsdWVSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIGxldCBibG9ja1JlZiA9IHZtLnNjb3BlKCkuZ2V0QmxvY2sodGhpcy5ibG9ja1N5bWJvbCk7XG4gICAgcmV0dXJuIG5ldyBWYWx1ZVJlZmVyZW5jZSghIShibG9ja1JlZiAmJiBibG9ja1JlZi5sb2NhbHMubGVuZ3RoID4gMCkpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBoYXMtYmxvY2stcGFyYW1zKCR7dGhpcy5ibG9ja05hbWV9KWA7XG4gIH1cbn1cbiJdfQ== 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'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var CompiledHasBlock = (function (_CompiledExpression) { - _inherits(CompiledHasBlock, _CompiledExpression); + babelHelpers.inherits(CompiledHasBlock, _CompiledExpression); function CompiledHasBlock(_ref) { var blockName = _ref.blockName; var blockSymbol = _ref.blockSymbol; - _classCallCheck(this, CompiledHasBlock); - _CompiledExpression.call(this); this.type = "has-block"; this.blockName = blockName; this.blockSymbol = blockSymbol; } @@ -15020,41 +15808,30 @@ return CompiledHasBlock; })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); exports.default = CompiledHasBlock; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQUtBLGdCQUFBO2tCQUFBLGdCQUFBOztBQUtFLGlCQUxGLGdCQUFBLENBS2MsSUFBOEUsRUFBQTtnQkFBNUUsU0FBUyxHQUFYLElBQThFLENBQTVFLFNBQVM7Z0JBQUUsV0FBVyxHQUF4QixJQUE4RSxDQUFqRSxXQUFXOztrQ0FMdEMsZ0JBQUE7O0FBTUksMENBQU8sQ0FBQztBQUxILGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQU14QixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1NBQ2hDOztBQVRILHdCQUFBLFdBV0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyRCxtQkFBTywrQ0FoQkYsY0FBYyxDQWdCTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7O0FBZEgsd0JBQUEsV0FnQkUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osa0NBQW9CLElBQUksQ0FBQyxTQUFTLE9BQUk7U0FDdkM7O2VBbEJILGdCQUFBOzZDQUpTLGtCQUFrQjs7c0JBSTNCLGdCQUFBIiwiZmlsZSI6Imhhcy1ibG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcbmltcG9ydCB7IEludGVybmVkU3RyaW5nIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9jayBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2tcIjtcbiAgcHVibGljIGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIHB1YmxpYyBibG9ja1N5bWJvbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgYmxvY2tOYW1lLCBibG9ja1N5bWJvbCB9OiB7IGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmcsIGJsb2NrU3ltYm9sOiBudW1iZXIgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gICAgdGhpcy5ibG9ja1N5bWJvbCA9IGJsb2NrU3ltYm9sO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogVmFsdWVSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIGxldCBibG9ja1JlZiA9IHZtLnNjb3BlKCkuZ2V0QmxvY2sodGhpcy5ibG9ja1N5bWJvbCk7XG4gICAgcmV0dXJuIG5ldyBWYWx1ZVJlZmVyZW5jZSghIWJsb2NrUmVmKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaGFzLWJsb2NrKCR7dGhpcy5ibG9ja05hbWV9KWA7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGFzLWJsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQUljLGdCQUF3Qjs4QkFBeEIsZ0JBQXdCOztBQUtwQyxpQkFMWSxnQkFBd0IsQ0FLeEIsSUFBc0UsRUFBQTtnQkFBcEUsU0FBUyxHQUFYLElBQXNFLENBQXBFLFNBQVM7Z0JBQUUsV0FBVyxHQUF4QixJQUFzRSxDQUF6RCxXQUFXOztBQUNsQywwQ0FBTyxDQUFDO0FBTEgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBTXhCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDaEM7O0FBVFcsd0JBQXdCLFdBV3BDLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckQsbUJBQU8sK0NBZkYsY0FBYyxDQWVPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2Qzs7QUFkVyx3QkFBd0IsV0FnQnBDLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGtDQUFvQixJQUFJLENBQUMsU0FBUyxPQUFJO1NBQ3ZDOztlQWxCVyxnQkFBd0I7NkNBSDdCLGtCQUFrQjs7c0JBR2IsZ0JBQXdCIiwiZmlsZSI6Imhhcy1ibG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuL3ZhbHVlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIYXNCbG9jayBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxib29sZWFuPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoYXMtYmxvY2tcIjtcbiAgcHVibGljIGJsb2NrTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYmxvY2tTeW1ib2w6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSwgYmxvY2tTeW1ib2wgfTogeyBibG9ja05hbWU6IHN0cmluZywgYmxvY2tTeW1ib2w6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmJsb2NrTmFtZSA9IGJsb2NrTmFtZTtcbiAgICB0aGlzLmJsb2NrU3ltYm9sID0gYmxvY2tTeW1ib2w7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBWYWx1ZVJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgbGV0IGJsb2NrUmVmID0gdm0uc2NvcGUoKS5nZXRCbG9jayh0aGlzLmJsb2NrU3ltYm9sKTtcbiAgICByZXR1cm4gbmV3IFZhbHVlUmVmZXJlbmNlKCEhYmxvY2tSZWYpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBoYXMtYmxvY2soJHt0aGlzLmJsb2NrTmFtZX0pYDtcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/compiled/expressions/helper', ['exports', 'glimmer-runtime/lib/compiled/expressions'], function (exports, _glimmerRuntimeLibCompiledExpressions) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var CompiledHelper = (function (_CompiledExpression) { - _inherits(CompiledHelper, _CompiledExpression); + babelHelpers.inherits(CompiledHelper, _CompiledExpression); - function CompiledHelper(_ref) { - var name = _ref.name; - var helper = _ref.helper; - var args = _ref.args; - - _classCallCheck(this, CompiledHelper); - + function CompiledHelper(name, helper, args, symbolTable) { _CompiledExpression.call(this); - this.type = "helper"; 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)); + return helper(vm, this.args.evaluate(vm), this.symbolTable); }; CompiledHelper.prototype.toJSON = function toJSON() { return '`' + this.name.join('.') + '($ARGS)`'; }; @@ -15062,94 +15839,136 @@ return CompiledHelper; })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); exports.default = CompiledHelper; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQU9BLGNBQUE7a0JBQUEsY0FBQTs7QUFNRSxpQkFORixjQUFBLENBTWMsSUFBc0YsRUFBQTtnQkFBcEYsSUFBSSxHQUFOLElBQXNGLENBQXBGLElBQUk7Z0JBQUUsTUFBTSxHQUFkLElBQXNGLENBQTlFLE1BQU07Z0JBQUUsSUFBSSxHQUFwQixJQUFzRixDQUF0RSxJQUFJOztrQ0FObEMsY0FBQTs7QUFPSSwwQ0FBTyxDQUFDO0FBTkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBT3JCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVhILHNCQUFBLFdBYUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ1osbUJBQU8sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzNDOztBQWhCSCxzQkFBQSxXQWtCRSxNQUFNLEdBQUEsa0JBQUE7QUFDSix5QkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBWTtTQUM1Qzs7ZUFwQkgsY0FBQTs2Q0FQUyxrQkFBa0I7O3NCQU8zQixjQUFBIiwiZmlsZSI6ImhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbXBpbGVkQXJncyB9IGZyb20gJy4vYXJncyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBJbnRlcm5lZFN0cmluZywgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRIZWxwZXIgZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gIHB1YmxpYyB0eXBlID0gXCJoZWxwZXJcIjtcbiAgcHVibGljIG5hbWU6IEludGVybmVkU3RyaW5nW107XG4gIHB1YmxpYyBoZWxwZXI6IEhlbHBlcjtcbiAgcHVibGljIGFyZ3M6IENvbXBpbGVkQXJncztcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIGhlbHBlciwgYXJncyB9OiB7IG5hbWU6IEludGVybmVkU3RyaW5nW10sIGhlbHBlcjogSGVscGVyLCBhcmdzOiBDb21waWxlZEFyZ3MgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmhlbHBlciA9IGhlbHBlcjtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICBsZXQgeyBoZWxwZXIgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGhlbHBlcih2bSwgdGhpcy5hcmdzLmV2YWx1YXRlKHZtKSk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcYCR7dGhpcy5uYW1lLmpvaW4oJy4nKX0oJEFSR1MpXFxgYDtcbiAgfVxufVxuIl19 -enifed('glimmer-runtime/lib/compiled/expressions/named-args', ['exports', 'glimmer-runtime/lib/references', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibReferences, _glimmerReference, _glimmerUtil) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFjLGNBQXNCOzhCQUF0QixjQUFzQjs7QUFHbEMsaUJBSFksY0FBc0IsQ0FHZixJQUFjLEVBQVMsTUFBYyxFQUFTLElBQWtCLEVBQVMsV0FBd0IsRUFBQTtBQUNsSCwwQ0FBTyxDQUFDO0FBRFMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFVO0FBQVMsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFRO0FBQVMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFjO0FBQVMsZ0JBQUEsQ0FBQSxXQUFXLEdBQVgsV0FBVyxDQUFhO0FBRjdHLGdCQUFBLENBQUEsSUFBSSxHQUFHLFFBQVEsQ0FBQztTQUl0Qjs7QUFMVyxzQkFBc0IsV0FPbEMsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ1osbUJBQU8sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0Q7O0FBVlcsc0JBQXNCLFdBWWxDLE1BQU0sR0FBQSxrQkFBQTtBQUNKLHlCQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFZO1NBQzVDOztlQWRXLGNBQXNCOzZDQVIzQixrQkFBa0I7O3NCQVFiLGNBQXNCIiwiZmlsZSI6ImhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbXBpbGVkQXJncyB9IGZyb20gJy4vYXJncyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGVkSGVscGVyIGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4ge1xuICBwdWJsaWMgdHlwZSA9IFwiaGVscGVyXCI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZ1tdLCBwdWJsaWMgaGVscGVyOiBIZWxwZXIsIHB1YmxpYyBhcmdzOiBDb21waWxlZEFyZ3MsIHB1YmxpYyBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICBsZXQgeyBoZWxwZXIgfSA9IHRoaXM7XG4gICAgcmV0dXJuIGhlbHBlcih2bSwgdGhpcy5hcmdzLmV2YWx1YXRlKHZtKSwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcYCR7dGhpcy5uYW1lLmpvaW4oJy4nKX0oJEFSR1MpXFxgYDtcbiAgfVxufVxuIl19 +enifed('glimmer-runtime/lib/compiled/expressions/lookups', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-reference'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerReference) { 'use strict'; - 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); } } return obj; } + var CompiledLocalLookup = (function (_CompiledExpression) { + babelHelpers.inherits(CompiledLocalLookup, _CompiledExpression); - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var CompiledNamedArgs = (function () { - function CompiledNamedArgs() { - _classCallCheck(this, CompiledNamedArgs); + function CompiledLocalLookup(symbol, path, debug) { + _CompiledExpression.call(this); + this.symbol = symbol; + this.path = path; + this.debug = debug; + this.type = "local-lookup"; } - CompiledNamedArgs.create = function create(_ref) { - var map = _ref.map; + CompiledLocalLookup.prototype.evaluate = function evaluate(vm) { + var base = vm.referenceForSymbol(this.symbol); + return _glimmerReference.referenceFromParts(base, this.path); + }; - if (Object.keys(map).length) { - return new CompiledNonEmptyNamedArgs({ map: map }); + CompiledLocalLookup.prototype.toJSON = function toJSON() { + var debug = this.debug; + var symbol = this.symbol; + var path = this.path; + + if (path.length) { + return '$' + symbol + '(' + debug + ').' + path.join('.'); } else { - return COMPILED_EMPTY_NAMED_ARGS; + return '$' + symbol + '(' + debug + ')'; } }; - return CompiledNamedArgs; - })(); + return CompiledLocalLookup; + })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); - exports.CompiledNamedArgs = CompiledNamedArgs; + exports.CompiledLocalLookup = CompiledLocalLookup; - var CompiledNonEmptyNamedArgs = (function (_CompiledNamedArgs) { - _inherits(CompiledNonEmptyNamedArgs, _CompiledNamedArgs); + var CompiledSelfLookup = (function (_CompiledExpression2) { + babelHelpers.inherits(CompiledSelfLookup, _CompiledExpression2); - function CompiledNonEmptyNamedArgs(_ref2) { - var map = _ref2.map; + function CompiledSelfLookup(parts) { + _CompiledExpression2.call(this); + this.parts = parts; + this.type = "self-lookup"; + } - _classCallCheck(this, CompiledNonEmptyNamedArgs); + CompiledSelfLookup.prototype.evaluate = function evaluate(vm) { + return _glimmerReference.referenceFromParts(vm.getSelf(), this.parts); + }; - _CompiledNamedArgs.call(this); - this.type = "named-args"; - this.map = map; + CompiledSelfLookup.prototype.toJSON = function toJSON() { + var path = ['self']; + path.push.apply(path, this.parts); + return path.join('.'); + }; + + return CompiledSelfLookup; + })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); + + exports.CompiledSelfLookup = CompiledSelfLookup; +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvbG9va3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFLTSxtQkFBMkI7OEJBQTNCLG1CQUEyQjs7QUFHL0IsaUJBSEksbUJBQTJCLENBSXJCLE1BQWMsRUFDZCxJQUFjLEVBQ2QsS0FBYSxFQUFBO0FBRXJCLDBDQUFPLENBQUM7QUFKQSxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVE7QUFDZCxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQVU7QUFDZCxnQkFBQSxDQUFBLEtBQUssR0FBTCxLQUFLLENBQVE7QUFMaEIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO1NBUTVCOztBQVRHLDJCQUEyQixXQVcvQixRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsbUJBQU8sa0JBZkYsa0JBQWtCLENBZUcsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1Qzs7QUFkRywyQkFBMkIsV0FnQi9CLE1BQU0sR0FBQSxrQkFBQTtnQkFDRSxLQUFLLEdBQW1CLElBQUksQ0FBNUIsS0FBSztnQkFBRSxNQUFNLEdBQVcsSUFBSSxDQUFyQixNQUFNO2dCQUFFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFekIsZ0JBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNmLDZCQUFXLE1BQU0sU0FBSSxLQUFLLFVBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBRzthQUNqRCxNQUFNO0FBQ0wsNkJBQVcsTUFBTSxTQUFJLEtBQUssT0FBSTthQUMvQjtTQUNGOztlQXhCRyxtQkFBMkI7NkNBTHhCLGtCQUFrQjs7OztRQWdDckIsa0JBQTBCOzhCQUExQixrQkFBMEI7O0FBRzlCLGlCQUhJLGtCQUEwQixDQUdWLEtBQWUsRUFBQTtBQUNqQywyQ0FBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFVO0FBRjVCLGdCQUFBLENBQUEsSUFBSSxHQUFHLGFBQWEsQ0FBQztTQUkzQjs7QUFMRywwQkFBMEIsV0FPOUIsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLG1CQUFPLGtCQXJDRixrQkFBa0IsQ0FxQ0csRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDs7QUFURywwQkFBMEIsV0FXOUIsTUFBTSxHQUFBLGtCQUFBO0FBQ0osZ0JBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsZ0JBQUksQ0FBQyxJQUFJLE1BQUEsQ0FBVCxJQUFJLEVBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7O2VBZkcsa0JBQTBCOzZDQWhDdkIsa0JBQWtCIiwiZmlsZSI6Imxvb2t1cHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyByZWZlcmVuY2VGcm9tUGFydHMgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZExvY2FsTG9va3VwIGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPGFueT4ge1xuICBwdWJsaWMgdHlwZSA9IFwibG9jYWwtbG9va3VwXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzeW1ib2w6IG51bWJlcixcbiAgICBwcml2YXRlIHBhdGg6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgZGVidWc6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICBsZXQgYmFzZSA9IHZtLnJlZmVyZW5jZUZvclN5bWJvbCh0aGlzLnN5bWJvbCk7XG4gICAgcmV0dXJuIHJlZmVyZW5jZUZyb21QYXJ0cyhiYXNlLCB0aGlzLnBhdGgpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHsgZGVidWcsIHN5bWJvbCwgcGF0aCB9ID0gdGhpcztcblxuICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGAkJHtzeW1ib2x9KCR7ZGVidWd9KS4ke3BhdGguam9pbignLicpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJCR7c3ltYm9sfSgke2RlYnVnfSlgO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZWRTZWxmTG9va3VwIGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPGFueT4ge1xuICBwdWJsaWMgdHlwZSA9IFwic2VsZi1sb29rdXBcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcnRzOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiByZWZlcmVuY2VGcm9tUGFydHModm0uZ2V0U2VsZigpLCB0aGlzLnBhcnRzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIGxldCBwYXRoID0gWydzZWxmJ107XG4gICAgcGF0aC5wdXNoKC4uLnRoaXMucGFydHMpO1xuICAgIHJldHVybiBwYXRoLmpvaW4oJy4nKTtcbiAgfVxufVxuIl19 +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'; + + 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'); } - CompiledNonEmptyNamedArgs.prototype.evaluate = function evaluate(vm) { - var map = this.map; + CompiledNamedArgs.empty = function empty() { + return COMPILED_EMPTY_NAMED_ARGS; + }; - var compiledMap = _glimmerUtil.dict(); - var compiledKeys = Object.keys(map); - for (var i = 0; i < compiledKeys.length; i++) { - var key = compiledKeys[i]; - compiledMap[key] = map[key].evaluate(vm); + 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; } - return EvaluatedNamedArgs.create({ map: compiledMap }); }; - CompiledNonEmptyNamedArgs.prototype.toJSON = function toJSON() { - var map = this.map; + CompiledNamedArgs.prototype.evaluate = function evaluate(vm) { + var keys = this.keys; + var values = this.values; + var length = this.length; - var inner = Object.keys(map).map(function (key) { - return key + ': ' + map[key].toJSON(); + var evaluated = new Array(length); + for (var i = 0; i < length; i++) { + evaluated[i] = values[i].evaluate(vm); + } + return new EvaluatedNamedArgs(keys, evaluated); + }; + + CompiledNamedArgs.prototype.toJSON = function toJSON() { + var keys = this.keys; + var values = this.values; + + var inner = keys.map(function (key, i) { + return key + ': ' + values[i].toJSON(); }).join(", "); return '{' + inner + '}'; }; - return CompiledNonEmptyNamedArgs; - })(CompiledNamedArgs); + return CompiledNamedArgs; + })(); - var COMPILED_EMPTY_NAMED_ARGS = new ((function (_CompiledNamedArgs2) { - _inherits(_class, _CompiledNamedArgs2); + exports.CompiledNamedArgs = CompiledNamedArgs; + var COMPILED_EMPTY_NAMED_ARGS = new ((function (_CompiledNamedArgs) { + babelHelpers.inherits(_class, _CompiledNamedArgs); function _class() { - _classCallCheck(this, _class); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _CompiledNamedArgs2.call.apply(_CompiledNamedArgs2, [this].concat(args)); - this.type = "empty-named-args"; - this.map = _glimmerUtil.dict(); + _CompiledNamedArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_ARRAY); } _class.prototype.evaluate = function evaluate(vm) { - return EvaluatedNamedArgs.empty(); + return EVALUATED_EMPTY_NAMED_ARGS; }; _class.prototype.toJSON = function toJSON() { return '<EMPTY>'; }; @@ -15157,94 +15976,92 @@ return _class; })(CompiledNamedArgs))(); exports.COMPILED_EMPTY_NAMED_ARGS = COMPILED_EMPTY_NAMED_ARGS; var EvaluatedNamedArgs = (function () { - function EvaluatedNamedArgs() { - _classCallCheck(this, EvaluatedNamedArgs); + 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.create = function create(_ref3) { - var map = _ref3.map; + EvaluatedNamedArgs.prototype.get = function get(key) { + var keys = this.keys; + var values = this.values; - return new NonEmptyEvaluatedNamedArgs({ map: map }); + var index = keys.indexOf(key); + return index === -1 ? _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE : values[index]; }; - EvaluatedNamedArgs.prototype.forEach = function forEach(callback) { - var map = this.map; - - var mapKeys = Object.keys(map); - for (var i = 0; i < mapKeys.length; i++) { - var key = mapKeys[i]; - callback(key, map[key]); - } + EvaluatedNamedArgs.prototype.has = function has(key) { + return this.keys.indexOf(key) !== -1; }; - return EvaluatedNamedArgs; - })(); - - exports.EvaluatedNamedArgs = EvaluatedNamedArgs; - - var NonEmptyEvaluatedNamedArgs = (function (_EvaluatedNamedArgs) { - _inherits(NonEmptyEvaluatedNamedArgs, _EvaluatedNamedArgs); - - function NonEmptyEvaluatedNamedArgs(_ref4) { - var map = _ref4.map; - - _classCallCheck(this, NonEmptyEvaluatedNamedArgs); - - _EvaluatedNamedArgs.call(this); - var keys = this.keys = Object.keys(map); - this.map = map; - var tags = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - tags.push(map[key].tag); - } - this.tag = _glimmerReference.combine(tags); - } - - NonEmptyEvaluatedNamedArgs.prototype.get = function get(key) { - return this.map[key] || _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE; - }; - - NonEmptyEvaluatedNamedArgs.prototype.has = function has(key) { - return !!this.map[key]; - }; - - NonEmptyEvaluatedNamedArgs.prototype.value = function value() { - var map = this.map; + 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]; - out[key] = map[key].value(); + var ref = values[i]; + out[key] = ref.value(); } return out; }; - return NonEmptyEvaluatedNamedArgs; - })(EvaluatedNamedArgs); + babelHelpers.createClass(EvaluatedNamedArgs, [{ + key: 'map', + get: function () { + var map = this._map; - var EVALUATED_EMPTY_NAMED_ARGS = new ((function (_EvaluatedNamedArgs2) { - _inherits(_class2, _EvaluatedNamedArgs2); + if (map) { + return map; + } + map = this._map = _glimmerUtil.dict(); + var keys = this.keys; + var values = this.values; + var length = this.length; - function _class2() { - _classCallCheck(this, _class2); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + for (var i = 0; i < length; i++) { + map[keys[i]] = values[i]; + } + return map; } + }]); + return EvaluatedNamedArgs; + })(); - _EvaluatedNamedArgs2.call.apply(_EvaluatedNamedArgs2, [this].concat(args)); - this.tag = _glimmerReference.CONSTANT_TAG; - this.keys = []; + 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; }; @@ -15252,97 +16069,69 @@ _class2.prototype.has = function has(key) { return false; }; _class2.prototype.value = function value() { - return {}; + return _glimmerRuntimeLibUtils.EMPTY_DICT; }; return _class2; })(EvaluatedNamedArgs))(); exports.EVALUATED_EMPTY_NAMED_ARGS = EVALUATED_EMPTY_NAMED_ARGS; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvbmFtZWQtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFNQSxpQkFBQTtpQkFBQSxpQkFBQTtrQ0FBQSxpQkFBQTs7O0FBQUEseUJBQUEsQ0FDUyxNQUFNLEdBQUEsZ0JBQUMsSUFBK0MsRUFBQTtnQkFBN0MsR0FBRyxHQUFMLElBQStDLENBQTdDLEdBQUc7O0FBQ2pCLGdCQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQzNCLHVCQUFPLElBQUkseUJBQXlCLENBQUMsRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUMvQyxNQUFNO0FBQ0wsdUJBQU8seUJBQXlCLENBQUM7YUFDbEM7U0FDRjs7ZUFQSCxpQkFBQTs7Ozs7UUFlQSx5QkFBQTtrQkFBQSx5QkFBQTs7QUFJRSxpQkFKRix5QkFBQSxDQUljLEtBQStDLEVBQUE7Z0JBQTdDLEdBQUcsR0FBTCxLQUErQyxDQUE3QyxHQUFHOztrQ0FKbkIseUJBQUE7O0FBS0kseUNBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQUt6QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDaEI7O0FBUEgsaUNBQUEsV0FTRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO2dCQUNQLEdBQUcsR0FBSyxJQUFJLENBQVosR0FBRzs7QUFFVCxnQkFBSSxXQUFXLEdBQUcsYUE3QlMsSUFBSSxFQTZCYSxDQUFDO0FBQzdDLGdCQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXBDLGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxvQkFBSSxHQUFHLEdBQUcsWUFBWSxDQUFD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LGdCQUFBLENBQUEsSUFBSSxHQUFHLEVBQUUsQ0FBQztTQWFsQjs7MEJBWEMsR0FBRyxHQUFBLGVBQUE7QUFDRCxnREE3SUssbUJBQW1CLENBNklHO1NBQzVCOzswQkFFRCxHQUFHLEdBQUEsYUFBQyxHQUFtQixFQUFBO0FBQ3JCLG1CQUFPLEtBQUssQ0FBQztTQUNkOzswQkFFRCxLQUFLLEdBQUEsaUJBQUE7QUFDSCxtQkFBTyxFQUFFLENBQUM7U0FDWDs7O09BZDBELGtCQUFrQixJQWU3RSxDQUFDIiwiZmlsZSI6Im5hbWVkLWFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUGF0aFJlZmVyZW5jZSwgUmV2aXNpb25UYWcsIGNvbWJpbmUgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBJbnRlcm5lZFN0cmluZywgRGljdCwgZGljdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21waWxlZE5hbWVkQXJncyB7XG4gIHN0YXRpYyBjcmVhdGUoeyBtYXAgfTogeyBtYXA6IERpY3Q8Q29tcGlsZWRFeHByZXNzaW9uPGFueT4+IH0pOiBDb21waWxlZE5hbWVkQXJncyB7XG4gICAgaWYgKE9iamVjdC5rZXlzKG1hcCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkTm9uRW1wdHlOYW1lZEFyZ3MoeyBtYXAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0eXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXA6IERpY3Q8Q29tcGlsZWRFeHByZXNzaW9uPGFueT4+O1xuICBhYnN0cmFjdCBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWROYW1lZEFyZ3M7XG4gIGFic3RyYWN0IHRvSlNPTigpOiBzdHJpbmc7XG59XG5cbmNsYXNzIENvbXBpbGVkTm9uRW1wdHlOYW1lZEFyZ3MgZXh0ZW5kcyBDb21waWxlZE5hbWVkQXJncyB7XG4gIHB1YmxpYyB0eXBlID0gXCJuYW1lZC1hcmdzXCI7XG4gIHB1YmxpYyBtYXA6IERpY3Q8Q29tcGlsZWRFeHByZXNzaW9uPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKHsgbWFwIH06IHsgbWFwOiBEaWN0PENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+PiB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1hcCA9IG1hcDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IEV2YWx1YXRlZE5hbWVkQXJncyB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuXG4gICAgbGV0IGNvbXBpbGVkTWFwID0gZGljdDxQYXRoUmVmZXJlbmNlPGFueT4+KCk7XG4gICAgbGV0IGNvbXBpbGVkS2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBpbGVkS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGtleSA9IGNvbXBpbGVkS2V5c1tpXTtcbiAgICAgIGNvbXBpbGVkTWFwW2tleV0gPSBtYXBba2V5XS5ldmFsdWF0ZSh2bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEV2YWx1YXRlZE5hbWVkQXJncy5jcmVhdGUoeyBtYXA6IGNvbXBpbGVkTWFwIH0pO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBpbm5lciA9IE9iamVjdC5rZXlzKG1hcCkubWFwKGtleSA9PiBgJHtrZXl9OiAke21hcFtrZXldLnRvSlNPTigpfWApLmpvaW4oXCIsIFwiKTtcbiAgICByZXR1cm4gYHske2lubmVyfX1gO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcImVtcHR5LW5hbWVkLWFyZ3NcIjtcbiAgcHVibGljIG1hcCA9IGRpY3Q8Q29tcGlsZWRFeHByZXNzaW9uPGFueT4+KCk7XG5cbiAgZXZhbHVhdGUodm0pOiBFdmFsdWF0ZWROYW1lZEFyZ3Mge1xuICAgIHJldHVybiBFdmFsdWF0ZWROYW1lZEFyZ3MuZW1wdHkoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgPEVNUFRZPmA7XG4gIH1cbn0pO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHB1YmxpYyBrZXlzOiBJbnRlcm5lZFN0cmluZ1tdO1xuXG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0ZWROYW1lZEFyZ3Mge1xuICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoeyBtYXAgfTogeyBtYXA6IERpY3Q8UGF0aFJlZmVyZW5jZTxhbnk+PiB9KSB7XG4gICAgcmV0dXJuIG5ldyBOb25FbXB0eUV2YWx1YXRlZE5hbWVkQXJncyh7IG1hcCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0eXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXA6IERpY3Q8UGF0aFJlZmVyZW5jZTxhbnk+PjtcblxuICBmb3JFYWNoKGNhbGxiYWNrOiAoa2V5OiBJbnRlcm5lZFN0cmluZywgdmFsdWU6IFBhdGhSZWZlcmVuY2U8YW55PikgPT4gdm9pZCkge1xuICAgIGxldCB7IG1hcCB9ID0gdGhpcztcbiAgICBsZXQgbWFwS2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBrZXkgPSBtYXBLZXlzW2ldO1xuICAgICAgY2FsbGJhY2soa2V5IGFzIEludGVybmVkU3RyaW5nLCBtYXBba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgZ2V0KGtleTogSW50ZXJuZWRTdHJpbmcpOiBQYXRoUmVmZXJlbmNlPGFueT47XG4gIGFic3RyYWN0IGhhcyhrZXk6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgdmFsdWUoKTogRGljdDxhbnk+O1xufVxuXG5jbGFzcyBOb25FbXB0eUV2YWx1YXRlZE5hbWVkQXJncyBleHRlbmRzIEV2YWx1YXRlZE5hbWVkQXJncyB7XG4gIHB1YmxpYyB2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8YW55PltdO1xuICBwdWJsaWMgbWFwOiBEaWN0PFBhdGhSZWZlcmVuY2U8YW55Pj47XG5cbiAgY29uc3RydWN0b3IoeyBtYXAgfTogeyBtYXA6IERpY3Q8UGF0aFJlZmVyZW5jZTxhbnk+PiB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBrZXlzID0gdGhpcy5rZXlzID0gT2JqZWN0LmtleXMobWFwKSBhcyBJbnRlcm5lZFN0cmluZ1tdO1xuICAgIHRoaXMubWFwID0gbWFwO1xuXG4gICAgbGV0IHRhZ3MgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGtleSA9IGtleXNbaV07XG4gICAgICB0YWdzLnB1c2gobWFwW2tleV0udGFnKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUodGFncyk7XG4gIH1cblxuICBnZXQoa2V5OiBJbnRlcm5lZFN0cmluZyk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMubWFwWzxzdHJpbmc+a2V5XSB8fCBVTkRFRklORURfUkVGRVJFTkNFO1xuICB9XG5cbiAgaGFzKGtleTogSW50ZXJuZWRTdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1hcFs8c3RyaW5nPmtleV07XG4gIH1cblxuICB2YWx1ZSgpOiBEaWN0PGFueT4ge1xuICAgIGxldCB7IG1hcCwga2V5cyB9ID0gdGhpcztcblxuICAgIGxldCBvdXQgPSBkaWN0KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBrZXkgPSBrZXlzW2ldO1xuICAgICAgb3V0W2tleV0gPSBtYXBba2V5XS52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVWQUxVQVRFRF9FTVBUWV9OQU1FRF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIEV2YWx1YXRlZE5hbWVkQXJncyB7XG4gIHB1YmxpYyB0YWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyBrZXlzID0gW107XG5cbiAgZ2V0KCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gIH1cblxuICBoYXMoa2V5OiBJbnRlcm5lZFN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhbHVlKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59KTtcbiJdfQ== -enifed('glimmer-runtime/lib/compiled/expressions/positional-args', ['exports', 'glimmer-runtime/lib/references', 'glimmer-reference'], function (exports, _glimmerRuntimeLibReferences, _glimmerReference) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvbmFtZWQtYXJncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFPTSxpQkFBQTtBQXdCSixpQkF4QkksaUJBQUEsQ0F5QkssSUFBYyxFQUNkLE1BQW9DLEVBQUE7QUFEcEMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFVO0FBQ2QsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUE4QjtBQUUzQyxnQkFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzFCLHlCQS9CbUIsTUFBTSxDQStCbEIsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLDZDQUE2QyxDQUFDLENBQUM7U0FDdEY7O0FBOUJHLHlCQUFBLENBQ0csS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8seUJBQXlCLENBQUM7U0FDbEM7O0FBSEcseUJBQUEsQ0FLRyxNQUFNLEdBQUEsZ0JBQUMsR0FBcUMsRUFBQTtBQUNqRCxnQkFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixnQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUV6QixnQkFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2Qsb0JBQUksTUFBTSxHQUFpQyxFQUFFLENBQUM7QUFFOUMscUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDL0IsMEJBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCO0FBRUQsdUJBQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQy9CLE1BQU07QUFDTCx1QkFBTyx5QkFBeUIsQ0FBQzthQUNsQztTQUNGOztBQXBCRyx5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O0FBRVYsb0JBQUksR0FBRyxFQUFFO0FBQ1AsMkJBQU8sR0FBRyxDQUFDO2lCQUNaO0FBRUQsbUJBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLGFBNUdTLElBQUksRUE0R2dCLENBQUM7b0JBRTFDLElBQUksR0FBcUIsSUFBSSxDQUE3QixJQUFJO29CQUFFLE1BQU0sR0FBYSxJQUFJLENBQXZCLE1BQU07b0JBQUUsTUFBTSxHQUFLLElBQUksQ0FBZixNQUFNOztBQUUxQixxQkFBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQix1QkFBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDMUI7QUFFRCx1QkFBTyxHQUFHLENBQUM7YUFDWjs7ZUFuREcsa0JBQUE7Ozs7QUE4RUMsUUFBTSwwQkFBMEIsR0FBRzs7O0FBQ3hDLDJCQUFBO0FBQ0UsbUVBcEpLLFdBQVcsMEJBQVgsV0FBVywwQkFBRSxVQUFVLENBb0plLENBQUM7U0FDN0M7OzBCQUVELEdBQUcsR0FBQSxlQUFBO0FBQ0QsZ0RBM0pLLG1CQUFtQixDQTJKRztTQUM1Qjs7MEJBRUQsR0FBRyxHQUFBLGFBQUMsR0FBVyxFQUFBO0FBQ2IsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7OzBCQUVELEtBQUssR0FBQSxpQkFBQTtBQUNILDJDQWhLa0IsVUFBVSxDQWdLVjtTQUNuQjs7O09BZjBELGtCQUFrQixJQWdCN0UsQ0FBQyIsImZpbGUiOiJuYW1lZC1hcmdzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IFZNIGZyb20gJy4uLy4uL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSwgRU1QVFlfRElDVCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UsIFJldmlzaW9uVGFnLCBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgT3BhcXVlLCBhc3NlcnQsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZWROYW1lZEFyZ3Mge1xuICBzdGF0aWMgZW1wdHkoKTogQ29tcGlsZWROYW1lZEFyZ3Mge1xuICAgIHJldHVybiBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShtYXA6IERpY3Q8Q29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4+KTogQ29tcGlsZWROYW1lZEFyZ3Mge1xuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMobWFwKTtcbiAgICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHZhbHVlczogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT5bXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlc1tpXSA9IG1hcFtrZXlzW2ldXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKGtleXMsIHZhbHVlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMga2V5czogc3RyaW5nW10sXG4gICAgcHVibGljIHZhbHVlczogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT5bXVxuICApIHtcbiAgICB0aGlzLmxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGFzc2VydChrZXlzLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aCwgJ0tleXMgYW5kIHZhbHVlcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGgnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IEV2YWx1YXRlZE5hbWVkQXJncyB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgbGV0IGV2YWx1YXRlZDogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrKykge1xuICAgICAgZXZhbHVhdGVkW2ldID0gdmFsdWVzW2ldLmV2YWx1YXRlKHZtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEV2YWx1YXRlZE5hbWVkQXJncyhrZXlzLCBldmFsdWF0ZWQpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgIGxldCBpbm5lciA9IGtleXMubWFwKChrZXksIGkpID0+IGAke2tleX06ICR7dmFsdWVzW2ldLnRvSlNPTigpfWApLmpvaW4oXCIsIFwiKTtcbiAgICByZXR1cm4gYHske2lubmVyfX1gO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDT01QSUxFRF9FTVBUWV9OQU1FRF9BUkdTOiBDb21waWxlZE5hbWVkQXJncyA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBDb21waWxlZE5hbWVkQXJncyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVNUFRZX0FSUkFZLCBFTVBUWV9BUlJBWSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWROYW1lZEFyZ3Mge1xuICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUztcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgPEVNUFRZPmA7XG4gIH1cbn0pO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgc3RhdGljIGNyZWF0ZShtYXA6IERpY3Q8UGF0aFJlZmVyZW5jZTxPcGFxdWU+Pikge1xuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMobWFwKTtcbiAgICBsZXQgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHZhbHVlczogUGF0aFJlZmVyZW5jZTxPcGFxdWU+W10gPSBuZXcgQXJyYXkobGVuZ3RoKTtcblxuICAgICAgZm9yIChsZXQgaT0wOyBpPGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlc1tpXSA9IG1hcFtrZXlzW2ldXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKGtleXMsIHZhbHVlcywgbWFwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVWQUxVQVRFRF9FTVBUWV9OQU1FRF9BUkdTO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBlbXB0eSgpOiBFdmFsdWF0ZWROYW1lZEFyZ3Mge1xuICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfTkFNRURfQVJHUztcbiAgfVxuXG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtleXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyB2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdLFxuICAgIHByaXZhdGUgX21hcDogRGljdDxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+ID0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZCh2YWx1ZXMpO1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgYXNzZXJ0KGtleXMubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoLCAnS2V5cyBhbmQgdmFsdWVzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICB9XG5cbiAgZ2V0IG1hcCgpOiBEaWN0PFBhdGhSZWZlcmVuY2U8T3BhcXVlPj4ge1xuICAgIGxldCB7IF9tYXA6IG1hcCB9ID0gdGhpcztcblxuICAgIGlmIChtYXApIHtcbiAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuXG4gICAgbWFwID0gdGhpcy5fbWFwID0gZGljdDxQYXRoUmVmZXJlbmNlPE9wYXF1ZT4+KCk7XG5cbiAgICBsZXQgeyBrZXlzLCB2YWx1ZXMsIGxlbmd0aCB9ID0gdGhpcztcblxuICAgIGZvcihsZXQgaT0wOyBpPGxlbmd0aDsgaSsrKSB7XG4gICAgICBtYXBba2V5c1tpXV0gPSB2YWx1ZXNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgIGxldCBpbmRleCA9IGtleXMuaW5kZXhPZihrZXkpO1xuICAgIHJldHVybiAoaW5kZXggPT09IC0xKSA/IFVOREVGSU5FRF9SRUZFUkVOQ0UgOiB2YWx1ZXNbaW5kZXhdO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMua2V5cy5pbmRleE9mKGtleSkgIT09IC0xO1xuICB9XG5cbiAgdmFsdWUoKTogRGljdDxPcGFxdWU+IHtcbiAgICBsZXQgeyBrZXlzLCB2YWx1ZXMgfSA9IHRoaXM7XG5cbiAgICBsZXQgb3V0ID0gZGljdDxPcGFxdWU+KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBrZXkgPSBrZXlzW2ldO1xuICAgICAgbGV0IHJlZiA9IHZhbHVlc1tpXTtcbiAgICAgIG91dFtrZXldID0gcmVmLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRVZBTFVBVEVEX0VNUFRZX05BTUVEX0FSR1MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgRXZhbHVhdGVkTmFtZWRBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZLCBFTVBUWV9ESUNUKTtcbiAgfVxuXG4gIGdldCgpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFsdWUoKTogRGljdDxPcGFxdWU+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'; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var CompiledPositionalArgs = (function () { - function CompiledPositionalArgs() { - _classCallCheck(this, CompiledPositionalArgs); + function CompiledPositionalArgs(values) { + this.values = values; + this.length = values.length; } - CompiledPositionalArgs.create = function create(_ref) { - var values = _ref.values; - + CompiledPositionalArgs.create = function create(values) { if (values.length) { - return new CompiledNonEmptyPositionalArgs({ values: values }); + return new this(values); } else { return COMPILED_EMPTY_POSITIONAL_ARGS; } }; - return CompiledPositionalArgs; - })(); + CompiledPositionalArgs.empty = function empty() { + return COMPILED_EMPTY_POSITIONAL_ARGS; + }; - exports.CompiledPositionalArgs = CompiledPositionalArgs; - - var CompiledNonEmptyPositionalArgs = (function (_CompiledPositionalArgs) { - _inherits(CompiledNonEmptyPositionalArgs, _CompiledPositionalArgs); - - function CompiledNonEmptyPositionalArgs(_ref2) { - var values = _ref2.values; - - _classCallCheck(this, CompiledNonEmptyPositionalArgs); - - _CompiledPositionalArgs.call(this); - this.type = "positional-args"; - this.length = values.length; - this.values = values; - } - - CompiledNonEmptyPositionalArgs.prototype.evaluate = function evaluate(vm) { + CompiledPositionalArgs.prototype.evaluate = function evaluate(vm) { var values = this.values; + var length = this.length; - var valueReferences = new Array(values.length); - for (var i = 0; i < values.length; i++) { - valueReferences[i] = values[i].evaluate(vm); + var references = new Array(length); + for (var i = 0; i < length; i++) { + references[i] = values[i].evaluate(vm); } - return EvaluatedPositionalArgs.create({ values: valueReferences }); + return EvaluatedPositionalArgs.create(references); }; - CompiledNonEmptyPositionalArgs.prototype.toJSON = function toJSON() { + CompiledPositionalArgs.prototype.toJSON = function toJSON() { return '[' + this.values.map(function (value) { return value.toJSON(); }).join(", ") + ']'; }; - return CompiledNonEmptyPositionalArgs; - })(CompiledPositionalArgs); + return CompiledPositionalArgs; + })(); - var COMPILED_EMPTY_POSITIONAL_ARGS = new ((function (_CompiledPositionalArgs2) { - _inherits(_class, _CompiledPositionalArgs2); + exports.CompiledPositionalArgs = CompiledPositionalArgs; + var COMPILED_EMPTY_POSITIONAL_ARGS = new ((function (_CompiledPositionalArgs) { + babelHelpers.inherits(_class, _CompiledPositionalArgs); function _class() { - _classCallCheck(this, _class); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _CompiledPositionalArgs2.call.apply(_CompiledPositionalArgs2, [this].concat(args)); - this.type = "empty-positional-args"; - this.length = 0; + _CompiledPositionalArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY); } _class.prototype.evaluate = function evaluate(vm) { - return EvaluatedPositionalArgs.empty(); + return EVALUATED_EMPTY_POSITIONAL_ARGS; }; _class.prototype.toJSON = function toJSON() { return '<EMPTY>'; }; @@ -15350,244 +16139,75 @@ return _class; })(CompiledPositionalArgs))(); exports.COMPILED_EMPTY_POSITIONAL_ARGS = COMPILED_EMPTY_POSITIONAL_ARGS; var EvaluatedPositionalArgs = (function () { - function EvaluatedPositionalArgs() { - _classCallCheck(this, EvaluatedPositionalArgs); + function EvaluatedPositionalArgs(values) { + this.values = values; + this.tag = _glimmerReference.combineTagged(values); + this.length = values.length; } + EvaluatedPositionalArgs.create = function create(values) { + return new this(values); + }; + EvaluatedPositionalArgs.empty = function empty() { return EVALUATED_EMPTY_POSITIONAL_ARGS; }; - EvaluatedPositionalArgs.create = function create(_ref3) { - var values = _ref3.values; + EvaluatedPositionalArgs.prototype.at = function at(index) { + var values = this.values; + var length = this.length; - return new NonEmptyEvaluatedPositionalArgs({ values: values }); + return index < length ? values[index] : _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE; }; - EvaluatedPositionalArgs.prototype.forEach = function forEach(callback) { + EvaluatedPositionalArgs.prototype.value = function value() { var values = this.values; - for (var i = 0; i < values.length; i++) { - callback(values[i]); + var length = this.length; + + var ret = new Array(length); + for (var i = 0; i < length; i++) { + ret[i] = values[i].value(); } + return ret; }; return EvaluatedPositionalArgs; })(); exports.EvaluatedPositionalArgs = EvaluatedPositionalArgs; + var EVALUATED_EMPTY_POSITIONAL_ARGS = new ((function (_EvaluatedPositionalArgs) { + babelHelpers.inherits(_class2, _EvaluatedPositionalArgs); - var NonEmptyEvaluatedPositionalArgs = (function (_EvaluatedPositionalArgs) { - _inherits(NonEmptyEvaluatedPositionalArgs, _EvaluatedPositionalArgs); - - function NonEmptyEvaluatedPositionalArgs(_ref4) { - var values = _ref4.values; - - _classCallCheck(this, NonEmptyEvaluatedPositionalArgs); - - _EvaluatedPositionalArgs.call(this); - this.tag = _glimmerReference.combineTagged(values); - this.length = values.length; - this.values = values; - } - - NonEmptyEvaluatedPositionalArgs.prototype.at = function at(index) { - return this.values[index]; - }; - - NonEmptyEvaluatedPositionalArgs.prototype.value = function value() { - var ret = new Array(this.values.length); - for (var i = 0; i < this.values.length; i++) { - ret[i] = this.values[i].value(); - } - return ret; - }; - - return NonEmptyEvaluatedPositionalArgs; - })(EvaluatedPositionalArgs); - - var EVALUATED_EMPTY_POSITIONAL_ARGS = new ((function (_EvaluatedPositionalArgs2) { - _inherits(_class2, _EvaluatedPositionalArgs2); - function _class2() { - _classCallCheck(this, _class2); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _EvaluatedPositionalArgs2.call.apply(_EvaluatedPositionalArgs2, [this].concat(args)); - this.tag = _glimmerReference.CONSTANT_TAG; - this.length = 0; - this.values = []; + _EvaluatedPositionalArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY); } _class2.prototype.at = function at() { - return _glimmerRuntimeLibReferences.NULL_REFERENCE; + return _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE; }; _class2.prototype.value = function value() { - return []; + return this.values; }; return _class2; })(EvaluatedPositionalArgs))(); exports.EVALUATED_EMPTY_POSITIONAL_ARGS = EVALUATED_EMPTY_POSITIONAL_ARGS; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvcG9zaXRpb25hbC1hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQUtBLHNCQUFBO2lCQUFBLHNCQUFBO2tDQUFBLHNCQUFBOzs7QUFBQSw4QkFBQSxDQUNTLE1BQU0sR0FBQSxnQkFBQyxJQUFpRCxFQUFBO2dCQUEvQyxNQUFNLEdBQVIsSUFBaUQsQ0FBL0MsTUFBTTs7QUFDcEIsZ0JBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUNqQix1QkFBTyxJQUFJLDhCQUE4QixDQUFDLEVBQUUsTUFBTSxFQUFOLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDdkQsTUFBTTtBQUNMLHVCQUFPLDhCQUE4QixDQUFDO2FBQ3ZDO1NBQ0Y7O2VBUEgsc0JBQUE7Ozs7O1FBZUEsOEJBQUE7a0JBQUEsOEJBQUE7O0FBSUUsaUJBSkYsOEJBQUEsQ0FJYyxLQUFpRCxFQUFBO2dCQUEvQyxNQUFNLEdBQVIsS0FBaUQsQ0FBL0MsTUFBTTs7a0NBSnRCLDhCQUFBOztBQUtJLDhDQUFPLENBQUM7QUFKSCxnQkFBQSxDQUFBLElBQUksR0FBRyxpQkFBaUIsQ0FBQztBQUs5QixnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7QUFSSCxzQ0FBQSxXQVVFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7Z0JBQ1AsTUFBTSxHQUFLLElBQUksQ0FBZixNQUFNOztBQUNaLGdCQUFJLGVBQWUsR0FBRyxJQUFJLEtBQUssQ0FBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFcEQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RDLCtCQUFlLENBQUMsQ0FBQyxDQUFDLEdBQXVCLE1BQU0sQ0FB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K0JBQUE7T0FBOEMsdUJBQXVCOztBQXdCOUQsUUFBTSwrQkFBK0IsR0FBRzs7O0FBQUssMkJBQUE7OzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUFjLDBGQUFBLElBQUEsRUFBQSxDQUF1QjtBQUNoRixnQkFBQSxDQUFBLEdBQUcscUJBNUdILFlBQVksQUE0R00sQ0FBQztBQUNuQixnQkFBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDWCxnQkFBQSxDQUFBLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FTcEI7OzBCQVBDLEVBQUUsR0FBQSxjQUFBO0FBQ0EsZ0RBcEhLLGNBQWMsQ0FvSEc7U0FDdkI7OzBCQUVELEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLEVBQUUsQ0FBQztTQUNYOzs7T0FYK0QsdUJBQXVCLElBWXZGLENBQUMiLCJmaWxlIjoicG9zaXRpb25hbC1hcmdzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTlVMTF9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCBWTSBmcm9tICcuLi8uLi92bS9hcHBlbmQnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZywgY29tYmluZVRhZ2dlZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICBzdGF0aWMgY3JlYXRlKHsgdmFsdWVzIH06IHsgdmFsdWVzOiBDb21waWxlZEV4cHJlc3Npb248YW55PltdIH0pOiBDb21waWxlZFBvc2l0aW9uYWxBcmdzIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBDb21waWxlZE5vbkVtcHR5UG9zaXRpb25hbEFyZ3MoeyB2YWx1ZXMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDT01QSUxFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1M7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuICBhYnN0cmFjdCBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncztcbiAgYWJzdHJhY3QgdG9KU09OKCk6IHN0cmluZztcbn1cblxuY2xhc3MgQ29tcGlsZWROb25FbXB0eVBvc2l0aW9uYWxBcmdzIGV4dGVuZHMgQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gIHB1YmxpYyB0eXBlID0gXCJwb3NpdGlvbmFsLWFyZ3NcIjtcbiAgcHVibGljIHZhbHVlczogQ29tcGlsZWRFeHByZXNzaW9uPGFueT5bXTtcblxuICBjb25zdHJ1Y3Rvcih7IHZhbHVlcyB9OiB7IHZhbHVlczogQ29tcGlsZWRFeHByZXNzaW9uPGFueT5bXSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgbGV0IHsgdmFsdWVzIH0gPSB0aGlzO1xuICAgIGxldCB2YWx1ZVJlZmVyZW5jZXMgPSBuZXcgQXJyYXk8YW55Pih2YWx1ZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWx1ZVJlZmVyZW5jZXNbaV0gPSA8UGF0aFJlZmVyZW5jZTxhbnk+PnZhbHVlc1tpXS5ldmFsdWF0ZSh2bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzLmNyZWF0ZSh7IHZhbHVlczogdmFsdWVSZWZlcmVuY2VzIH0pO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudG9KU09OKCkpLmpvaW4oXCIsIFwiKX1dYDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICBwdWJsaWMgdHlwZSA9IFwiZW1wdHktcG9zaXRpb25hbC1hcmdzXCI7XG5cbiAgcHVibGljIGxlbmd0aCA9IDA7XG5cbiAgZXZhbHVhdGUodm0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzLmVtcHR5KCk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYDxFTVBUWT5gO1xuICB9XG59KTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgc3RhdGljIGVtcHR5KCk6IEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gRVZBTFVBVEVEX0VNUFRZX1BPU0lUSU9OQUxfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoeyB2YWx1ZXMgfTogeyB2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8YW55PltdIH0pIHtcbiAgICByZXR1cm4gbmV3IE5vbkVtcHR5RXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MoeyB2YWx1ZXMgfSk7XG4gIH1cblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgdmFsdWVzOiBQYXRoUmVmZXJlbmNlPGFueT5bXTtcbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGZvckVhY2goY2FsbGJhY2s6ICh2YWx1ZTogUGF0aFJlZmVyZW5jZTxhbnk+KSA9PiB2b2lkKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMudmFsdWVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYWxsYmFjayh2YWx1ZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IGF0KGluZGV4OiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT47XG4gIGFic3RyYWN0IHZhbHVlKCk6IGFueVtdO1xufVxuXG5jbGFzcyBOb25FbXB0eUV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIGV4dGVuZHMgRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3Mge1xuICBwdWJsaWMgdmFsdWVzOiBQYXRoUmVmZXJlbmNlPGFueT5bXTtcblxuICBjb25zdHJ1Y3Rvcih7IHZhbHVlcyB9OiB7IHZhbHVlczogUGF0aFJlZmVyZW5jZTxhbnk+W10gfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjb21iaW5lVGFnZ2VkKHZhbHVlcyk7XG4gICAgdGhpcy5sZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XTtcbiAgfVxuXG4gIHZhbHVlKCk6IGFueVtdIHtcbiAgICBsZXQgcmV0ID0gbmV3IEFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2ldID0gdGhpcy52YWx1ZXNbaV0udmFsdWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFVkFMVUFURURfRU1QVFlfUE9TSVRJT05BTF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgcHVibGljIHRhZyA9IENPTlNUQU5UX1RBRztcbiAgcHVibGljIGxlbmd0aCA9IDA7XG4gIHB1YmxpYyB2YWx1ZXMgPSBbXTtcblxuICBhdCgpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiBOVUxMX1JFRkVSRU5DRTtcbiAgfVxuXG4gIHZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn0pO1xuIl19 -enifed('glimmer-runtime/lib/compiled/expressions/ref', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-reference'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerReference) { - 'use strict'; - - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - var CompiledSymbolRef = (function (_CompiledExpression) { - _inherits(CompiledSymbolRef, _CompiledExpression); - - function CompiledSymbolRef(_ref) { - var debug = _ref.debug; - var symbol = _ref.symbol; - var path = _ref.path; - - _classCallCheck(this, CompiledSymbolRef); - - _CompiledExpression.call(this); - this.debug = debug; - this.symbol = symbol; - this.path = path; - } - - CompiledSymbolRef.prototype.evaluate = function evaluate(vm) { - var base = this.referenceForSymbol(vm); - return _glimmerReference.referenceFromParts(base, this.path); - }; - - CompiledSymbolRef.prototype.toJSON = function toJSON() { - var debug = this.debug; - var symbol = this.symbol; - var path = this.path; - - if (path.length) { - return '$' + symbol + '(' + debug + ').' + path.join('.'); - } else { - return '$' + symbol + '(' + debug + ')'; - } - }; - - return CompiledSymbolRef; - })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); - - exports.CompiledSymbolRef = CompiledSymbolRef; - - var CompiledKeywordRef = (function () { - function CompiledKeywordRef(_ref2) { - var name = _ref2.name; - var path = _ref2.path; - - _classCallCheck(this, CompiledKeywordRef); - - this.type = "keyword-ref"; - this.name = name; - this.path = path; - } - - CompiledKeywordRef.prototype.evaluate = function evaluate(vm) { - var base = vm.dynamicScope()[this.name]; - ; - return _glimmerReference.referenceFromParts(base, this.path); - }; - - CompiledKeywordRef.prototype.toJSON = function toJSON() { - var name = this.name; - var path = this.path; - - if (path.length) { - return '$KEYWORDS[' + name + '].' + path.join('.'); - } else { - return '$KEYWORDS[' + name + ']'; - } - }; - - return CompiledKeywordRef; - })(); - - exports.CompiledKeywordRef = CompiledKeywordRef; - - var CompiledLocalRef = (function (_CompiledSymbolRef) { - _inherits(CompiledLocalRef, _CompiledSymbolRef); - - function CompiledLocalRef() { - _classCallCheck(this, CompiledLocalRef); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _CompiledSymbolRef.call.apply(_CompiledSymbolRef, [this].concat(args)); - this.type = "local-ref"; - } - - CompiledLocalRef.prototype.referenceForSymbol = function referenceForSymbol(vm) { - return vm.referenceForSymbol(this.symbol); - }; - - return CompiledLocalRef; - })(CompiledSymbolRef); - - exports.CompiledLocalRef = CompiledLocalRef; - - var CompiledSelfRef = (function (_CompiledExpression2) { - _inherits(CompiledSelfRef, _CompiledExpression2); - - function CompiledSelfRef(_ref3) { - var parts = _ref3.parts; - - _classCallCheck(this, CompiledSelfRef); - - _CompiledExpression2.call(this); - this.type = "self-ref"; - this.parts = parts; - } - - CompiledSelfRef.prototype.evaluate = function evaluate(vm) { - return _glimmerReference.referenceFromParts(vm.getSelf(), this.parts); - }; - - CompiledSelfRef.prototype.toJSON = function toJSON() { - var path = ['self']; - path.push.apply(path, this.parts); - return path.join('.'); - }; - - return CompiledSelfRef; - })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); - - exports.CompiledSelfRef = CompiledSelfRef; -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQU1BLGlCQUFBO2tCQUFBLGlCQUFBOztBQUtFLGlCQUxGLGlCQUFBLENBS2MsSUFBa0YsRUFBQTtnQkFBaEYsS0FBSyxHQUFQLElBQWtGLENBQWhGLEtBQUs7Z0JBQUUsTUFBTSxHQUFmLElBQWtGLENBQXpFLE1BQU07Z0JBQUUsSUFBSSxHQUFyQixJQUFrRixDQUFqRSxJQUFJOztrQ0FMbkMsaUJBQUE7O0FBTUksMENBQU8sQ0FBQztBQUNSLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVZILHlCQUFBLFdBWUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkMsbUJBQU8sa0JBaEJGLGtCQUFrQixDQWdCRyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVDOztBQWZILHlCQUFBLFdBbUJFLE1BQU0sR0FBQSxrQkFBQTtnQkFDRSxLQUFLLEdBQW1CLElBQUksQ0FBNUIsS0FBSztnQkFBRSxNQUFNLEdBQVcsSUFBSSxDQUFyQixNQUFNO2dCQUFFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFekIsZ0JBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNmLDZCQUFXLE1BQU0sU0FBSSxLQUFLLFVBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBRzthQUNqRCxNQUFNO0FBQ0wsNkJBQVcsTUFBTSxTQUFJLEtBQUssT0FBSTthQUMvQjtTQUNGOztlQTNCSCxpQkFBQTs2Q0FOUyxrQkFBa0I7Ozs7UUFvQzNCLGtCQUFBO0FBS0UsaUJBTEYsa0JBQUEsQ0FLYyxLQUFnRSxFQUFBO2dCQUE5RCxJQUFJLEdBQU4sS0FBZ0UsQ0FBOUQsSUFBSTtnQkFBRSxJQUFJLEdBQVosS0FBZ0UsQ0FBeEQsSUFBSTs7a0NBTDFCLGtCQUFBOztBQUNTLGdCQUFBLENBQUEsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUsxQixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVJILDBCQUFBLFdBVUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQVMsSUFBSSxDQUFDLElBQUksQ0FBdUIsQ0FBQztBQUFBLGFBQUM7QUFDdkUsbUJBQU8sa0JBNUNGLGtCQUFrQixDQTRDRyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVDOztBQWJILDBCQUFBLFdBZUUsTUFBTSxHQUFBLGtCQUFBO2dCQUNFLElBQUksR0FBVyxJQUFJLENBQW5CLElBQUk7Z0JBQUUsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUVoQixnQkFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2Ysc0NBQW9CLElBQUksVUFBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFHO2FBQy9DLE1BQU07QUFDTCxzQ0FBb0IsSUFBSSxPQUFJO2FBQzdCO1NBQ0Y7O2VBdkJILGtCQUFBOzs7OztRQTJCQSxnQkFBQTtrQkFBQSxnQkFBQTs7QUFBQSxpQkFBQSxnQkFBQSxHQUFBO2tDQUFBLGdCQUFBOzs4Q0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUFzQyw0RUFBQSxJQUFBLEVBQUEsQ0FBaUI7QUFDOUMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBSzNCOztBQU5ELHdCQUFBLFdBR0Usa0JBQWtCLEdBQUEsNEJBQUMsRUFBTSxFQUFBO0FBQ3ZCLG1CQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0M7O2VBTEgsZ0JBQUE7T0FBc0MsaUJBQWlCOzs7O1FBUXZELGVBQUE7a0JBQUEsZUFBQTs7QUFJRSxpQkFKRixlQUFBLENBSWMsS0FBc0MsRUFBQTtnQkFBcEMsS0FBSyxHQUFQLEtBQXNDLENBQXBDLEtBQUs7O2tDQUpyQixlQUFBOztBQUtJLDJDQUFPLENBQUM7QUFKSCxnQkFBQSxDQUFBLElBQUksR0FBRyxVQUFVLENBQUM7QUFLdkIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCOztBQVBILHVCQUFBLFdBU0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLG1CQUFPLGtCQTdFRixrQkFBa0IsQ0E2RUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyRDs7QUFYSCx1QkFBQSxXQWFFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGdCQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BCLGdCQUFJLENBQUMsSUFBSSxNQUFBLENBQVQsSUFBSSxFQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCOztlQWpCSCxlQUFBOzZDQXZFUyxrQkFBa0IiLCJmaWxlIjoicmVmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IFZNIGZyb20gJy4uLy4uL3ZtL2FwcGVuZCc7XG5pbXBvcnQgeyBJbnRlcm5lZFN0cmluZyB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgcmVmZXJlbmNlRnJvbVBhcnRzIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcGlsZWRTeW1ib2xSZWYgZXh0ZW5kcyBDb21waWxlZEV4cHJlc3Npb248YW55PiB7XG4gIHByb3RlY3RlZCBkZWJ1Zzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc3ltYm9sOiBudW1iZXI7XG4gIHByb3RlY3RlZCBwYXRoOiBJbnRlcm5lZFN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHsgZGVidWcsIHN5bWJvbCwgcGF0aCB9OiB7IGRlYnVnOiBzdHJpbmcsIHN5bWJvbDogbnVtYmVyLCBwYXRoOiBJbnRlcm5lZFN0cmluZ1tdIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLnN5bWJvbCA9IHN5bWJvbDtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICBsZXQgYmFzZSA9IHRoaXMucmVmZXJlbmNlRm9yU3ltYm9sKHZtKTtcbiAgICByZXR1cm4gcmVmZXJlbmNlRnJvbVBhcnRzKGJhc2UsIHRoaXMucGF0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVmZXJlbmNlRm9yU3ltYm9sKHZtOiBWTSk6IFBhdGhSZWZlcmVuY2U8YW55PjtcblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICBsZXQgeyBkZWJ1Zywgc3ltYm9sLCBwYXRoIH0gPSB0aGlzO1xuXG4gICAgaWYgKHBhdGgubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCQke3N5bWJvbH0oJHtkZWJ1Z30pLiR7cGF0aC5qb2luKCcuJyl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAkJHtzeW1ib2x9KCR7ZGVidWd9KWA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZEtleXdvcmRSZWYge1xuICBwdWJsaWMgdHlwZSA9IFwia2V5d29yZC1yZWZcIjtcbiAgcHVibGljIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgcGF0aDogSW50ZXJuZWRTdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIHBhdGggfTogeyBuYW1lOiBJbnRlcm5lZFN0cmluZywgcGF0aDogSW50ZXJuZWRTdHJpbmdbXSB9KSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICBsZXQgYmFzZSA9IHZtLmR5bmFtaWNTY29wZSgpWzxzdHJpbmc+dGhpcy5uYW1lXSBhcyBQYXRoUmVmZXJlbmNlPGFueT47O1xuICAgIHJldHVybiByZWZlcmVuY2VGcm9tUGFydHMoYmFzZSwgdGhpcy5wYXRoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIGxldCB7IG5hbWUsIHBhdGggfSA9IHRoaXM7XG5cbiAgICBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBgJEtFWVdPUkRTWyR7bmFtZX1dLiR7cGF0aC5qb2luKCcuJyl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAkS0VZV09SRFNbJHtuYW1lfV1gO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlZExvY2FsUmVmIGV4dGVuZHMgQ29tcGlsZWRTeW1ib2xSZWYge1xuICBwdWJsaWMgdHlwZSA9IFwibG9jYWwtcmVmXCI7XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHZtOiBWTSk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHZtLnJlZmVyZW5jZUZvclN5bWJvbCh0aGlzLnN5bWJvbCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVkU2VsZlJlZiBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+IHtcbiAgcHVibGljIHR5cGUgPSBcInNlbGYtcmVmXCI7XG4gIHByaXZhdGUgcGFydHM6IEludGVybmVkU3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoeyBwYXJ0cyB9OiB7IHBhcnRzOiBJbnRlcm5lZFN0cmluZ1tdIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZUZyb21QYXJ0cyh2bS5nZXRTZWxmKCksIHRoaXMucGFydHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgbGV0IHBhdGggPSBbJ3NlbGYnXTtcbiAgICBwYXRoLnB1c2goLi4udGhpcy5wYXJ0cyk7XG4gICAgcmV0dXJuIHBhdGguam9pbignLicpO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvcG9zaXRpb25hbC1hcmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQU9NLHNCQUFBO0FBZUosaUJBZkksc0JBQUEsQ0FlZSxNQUFvQyxFQUFBO0FBQXBDLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBOEI7QUFDckQsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUM3Qjs7QUFqQkcsOEJBQUEsQ0FDRyxNQUFNLEdBQUEsZ0JBQUMsTUFBb0MsRUFBQTtBQUNoRCxnQkFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQ2pCLHVCQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3pCLE1BQU07QUFDTCx1QkFBTyw4QkFBOEIsQ0FBQzthQUN2QztTQUNGOztBQVBHLDhCQUFBLENBU0csS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8sOEJBQThCLENBQUM7U0FDdkM7O0FBWEcsOEJBQUEsV0FtQkosUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtnQkFDUCxNQUFNLEdBQWEsSUFBSSxDQUF2QixNQUFNO2dCQUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFDcEIsZ0JBQUksVUFBVSxHQUE0QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1RCxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvQiwwQkFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEM7QUFFRCxtQkFBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkQ7O0FBNUJHLDhCQUFBLFdBOEJKLE1BQU0sR0FBQSxrQkFBQTtBQUNKLHlCQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsS0FBSzt1QkFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO2FBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBSTtTQUNuRTs7ZUFoQ0csc0JBQUE7Ozs7QUFtQ0MsUUFBTSw4QkFBOEIsR0FBMkI7OztBQUNwRSwwQkFBQTtBQUNFLHVFQXpDSyxXQUFXLENBeUNFLENBQUM7U0FDcEI7O3lCQUVELFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixtQkFBTywrQkFBK0IsQ0FBQztTQUN4Qzs7eUJBRUQsTUFBTSxHQUFBLGtCQUFBO0FBQ0osNkJBQWlCO1NBQ2xCOzs7T0FYc0Ysc0JBQXNCLElBWTdHLENBQUM7OztRQUVHLHVCQUFBO0FBWUosaUJBWkksdUJBQUEsQ0FZZSxNQUErQixFQUFBO0FBQS9CLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBeUI7QUFDaEQsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsa0JBakVzQixhQUFhLENBaUVyQixNQUFNLENBQUMsQ0FBQztBQUNqQyxnQkFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQzdCOztBQWZHLCtCQUFBLENBQ0csTUFBTSxHQUFBLGdCQUFDLE1BQStCLEVBQUE7QUFDM0MsbUJBQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekI7O0FBSEcsK0JBQUEsQ0FLRyxLQUFLLEdBQUEsaUJBQUE7QUFDVixtQkFBTywrQkFBK0IsQ0FBQztTQUN4Qzs7QUFQRywrQkFBQSxXQWlCSixFQUFFLEdBQUEsWUFBQyxLQUFhLEVBQUE7Z0JBQ1IsTUFBTSxHQUFhLElBQUksQ0FBdkIsTUFBTTtnQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ3BCLG1CQUFPLEFBQUMsS0FBSyxHQUFHLE1BQU0sR0FBSSxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQTNFbEMsbUJBQW1CLEFBMkVxQyxDQUFDO1NBQy9EOztBQXBCRywrQkFBQSxXQXNCSixLQUFLLEdBQUEsaUJBQUE7Z0JBQ0csTUFBTSxHQUFhLElBQUksQ0FBdkIsTUFBTTtnQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ3BCLGdCQUFJLEdBQUcsR0FBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV0QyxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvQixtQkFBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUM1QjtBQUVELG1CQUFPLEdBQUcsQ0FBQztTQUNaOztlQS9CRyx1QkFBQTs7OztBQWtDQyxRQUFNLCtCQUErQixHQUFHOzs7QUFDN0MsMkJBQUE7QUFDRSx3RUF6RkssV0FBVyxDQXlGRSxDQUFDO1NBQ3BCOzswQkFFRCxFQUFFLEdBQUEsY0FBQTtBQUNBLGdEQWhHSyxtQkFBbUIsQ0FnR0c7U0FDNUI7OzBCQUVELEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDcEI7OztPQVgrRCx1QkFBdUIsSUFZdkYsQ0FBQyIsImZpbGUiOiJwb3NpdGlvbmFsLWFyZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgVk0gZnJvbSAnLi4vLi4vdm0vYXBwZW5kJztcbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgUmV2aXNpb25UYWcsIGNvbWJpbmVUYWdnZWQgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gIHN0YXRpYyBjcmVhdGUodmFsdWVzOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPltdKTogQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh2YWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBlbXB0eSgpIHtcbiAgICByZXR1cm4gQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICB9XG5cbiAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZXM6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+W10pIHtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgbGV0IHsgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgbGV0IHJlZmVyZW5jZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICByZWZlcmVuY2VzW2ldID0gdmFsdWVzW2ldLmV2YWx1YXRlKHZtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3MuY3JlYXRlKHJlZmVyZW5jZXMpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudG9KU09OKCkpLmpvaW4oXCIsIFwiKX1dYDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ09NUElMRURfRU1QVFlfUE9TSVRJT05BTF9BUkdTOiBDb21waWxlZFBvc2l0aW9uYWxBcmdzID0gbmV3IChjbGFzcyBleHRlbmRzIENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFTVBUWV9BUlJBWSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBFdmFsdWF0ZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1M7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYDxFTVBUWT5gO1xuICB9XG59KTtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRlZFBvc2l0aW9uYWxBcmdzIHtcbiAgc3RhdGljIGNyZWF0ZSh2YWx1ZXM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHZhbHVlcyk7XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoKTogRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBFVkFMVUFURURfRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICB9XG5cbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSkge1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZCh2YWx1ZXMpO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIGxldCB7IHZhbHVlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgIHJldHVybiAoaW5kZXggPCBsZW5ndGgpID8gdmFsdWVzW2luZGV4XSA6IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gIH1cblxuICB2YWx1ZSgpOiBPcGFxdWVbXSB7XG4gICAgbGV0IHsgdmFsdWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgbGV0IHJldDogT3BhcXVlW10gPSBuZXcgQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHZhbHVlc1tpXS52YWx1ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVWQUxVQVRFRF9FTVBUWV9QT1NJVElPTkFMX0FSR1MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgRXZhbHVhdGVkUG9zaXRpb25hbEFyZ3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFTVBUWV9BUlJBWSk7XG4gIH1cblxuICBhdCgpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICB9XG5cbiAgdmFsdWUoKTogT3BhcXVlW10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxufSk7XG4iXX0= enifed('glimmer-runtime/lib/compiled/expressions/value', ['exports', 'glimmer-runtime/lib/compiled/expressions', 'glimmer-reference', 'glimmer-util'], function (exports, _glimmerRuntimeLibCompiledExpressions, _glimmerReference, _glimmerUtil) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var CompiledValue = (function (_CompiledExpression) { - _inherits(CompiledValue, _CompiledExpression); + babelHelpers.inherits(CompiledValue, _CompiledExpression); function CompiledValue(_ref) { var value = _ref.value; - _classCallCheck(this, CompiledValue); - _CompiledExpression.call(this); this.type = "value"; this.reference = new ValueReference(value); } @@ -15603,20 +16223,14 @@ })(_glimmerRuntimeLibCompiledExpressions.CompiledExpression); exports.default = CompiledValue; var ValueReference = (function (_ConstReference) { - _inherits(ValueReference, _ConstReference); + babelHelpers.inherits(ValueReference, _ConstReference); function ValueReference() { - _classCallCheck(this, ValueReference); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _ConstReference.call.apply(_ConstReference, [this].concat(args)); + _ConstReference.apply(this, arguments); this.children = _glimmerUtil.dict(); } ValueReference.prototype.get = function get(key) { var children = this.children; @@ -15635,26 +16249,16 @@ return ValueReference; })(_glimmerReference.ConstReference); exports.ValueReference = ValueReference; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBS0EsYUFBQTtrQkFBQSxhQUFBOztBQUlFLGlCQUpGLGFBQUEsQ0FJYyxJQUF5QixFQUFBO2dCQUF2QixLQUFLLEdBQVAsSUFBeUIsQ0FBdkIsS0FBSzs7a0NBSnJCLGFBQUE7O0FBS0ksMENBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUtwQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1Qzs7QUFQSCxxQkFBQSxXQVNFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixtQkFBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCOztBQVhILHFCQUFBLFdBYUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDL0M7O2VBZkgsYUFBQTs2Q0FKUyxrQkFBa0I7O3NCQUkzQixhQUFBOztRQWtCQSxjQUFBO2tCQUFBLGNBQUE7O0FBQUEsaUJBQUEsY0FBQSxHQUFBO2tDQUFBLGNBQUE7OzhDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQXVDLHNFQUFBLElBQUEsRUFBQSxDQUFpQjtBQUU1QyxnQkFBQSxDQUFBLFFBQVEsR0FBRyxhQXRCRSxJQUFJLEVBc0JxQixDQUFDO1NBY2xEOztBQWhCRCxzQkFBQSxXQUlFLEdBQUcsR0FBQSxhQUFDLEdBQW1CLEVBQUE7Z0JBQ2YsUUFBUSxHQUFLLElBQUksQ0FBakIsUUFBUTs7QUFDZCxnQkFBSSxLQUFLLEdBQUcsUUFBUSxDQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRWxDLGdCQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YscUJBQUssR0FBRyxRQUFRLENBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzdFO0FBRUQsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7O0FBYkgsc0JBQUEsV0FlRSxLQUFLLEdBQUEsaUJBQUE7QUFBVSxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUU7O2VBZnJDLGNBQUE7eUJBckJTLGNBQWMiLCJmaWxlIjoidmFsdWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbnN0UmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgSW50ZXJuZWRTdHJpbmcsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlZFZhbHVlPFQ+IGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgcHVibGljIHR5cGUgPSBcInZhbHVlXCI7XG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWYWx1ZVJlZmVyZW5jZTxUPjtcblxuICBjb25zdHJ1Y3Rvcih7IHZhbHVlIH06IHsgdmFsdWU6IGFueSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5yZWZlcmVuY2UudmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlUmVmZXJlbmNlPFQ+IGV4dGVuZHMgQ29uc3RSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgcHJvdGVjdGVkIGlubmVyOiBUO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW4gPSBkaWN0PFZhbHVlUmVmZXJlbmNlPGFueT4+KCk7XG5cbiAgZ2V0KGtleTogSW50ZXJuZWRTdHJpbmcpIHtcbiAgICBsZXQgeyBjaGlsZHJlbiB9ID0gdGhpcztcbiAgICBsZXQgY2hpbGQgPSBjaGlsZHJlbls8c3RyaW5nPmtleV07XG5cbiAgICBpZiAoIWNoaWxkKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkcmVuWzxzdHJpbmc+a2V5XSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh0aGlzLmlubmVyWzxzdHJpbmc+a2V5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgdmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuaW5uZXI7IH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBS2MsYUFBd0I7OEJBQXhCLGFBQXdCOztBQUlwQyxpQkFKWSxhQUF3QixDQUl4QixJQUF5QixFQUFBO2dCQUF2QixLQUFLLEdBQVAsSUFBeUIsQ0FBdkIsS0FBSzs7QUFDakIsMENBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUtwQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1Qzs7QUFQVyxxQkFBd0IsV0FTcEMsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLG1CQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkI7O0FBWFcscUJBQXdCLFdBYXBDLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9DOztlQWZXLGFBQXdCOzZDQUo3QixrQkFBa0I7O3NCQUliLGFBQXdCOztRQWtCaEMsY0FBeUI7OEJBQXpCLGNBQXlCOztBQUEvQixpQkFBTSxjQUF5QixHQUEvQjtBQ0xRLHdDQUFTLFNBQVMsQ0FBQyxDQUFDO0FET2hCLGdCQUFBLENBQUEsUUFBUSxHQUFHLGFBdEJkLElBQUksRUFzQnFDLENBQUM7U0FjbEQ7O0FBaEJLLHNCQUF5QixXQUk3QixHQUFHLEdBQUEsYUFBQyxHQUFXLEVBQUE7Z0JBQ1AsUUFBUSxHQUFLLElBQUksQ0FBakIsUUFBUTs7QUFDZCxnQkFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLGdCQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YscUJBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzdEO0FBRUQsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7O0FBYkcsc0JBQXlCLFdBZTdCLEtBQUssR0FBQSxpQkFBQTtBQUFVLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBRTs7ZUFmL0IsY0FBeUI7eUJBckJ0QixjQUFjIiwiZmlsZSI6InZhbHVlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlZFZhbHVlPFQ+IGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgcHVibGljIHR5cGUgPSBcInZhbHVlXCI7XG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWYWx1ZVJlZmVyZW5jZTxUPjtcblxuICBjb25zdHJ1Y3Rvcih7IHZhbHVlIH06IHsgdmFsdWU6IGFueSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5yZWZlcmVuY2UudmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlUmVmZXJlbmNlPFQ+IGV4dGVuZHMgQ29uc3RSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgcHJvdGVjdGVkIGlubmVyOiBUO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW4gPSBkaWN0PFZhbHVlUmVmZXJlbmNlPGFueT4+KCk7XG5cbiAgZ2V0KGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgY2hpbGRyZW4gfSA9IHRoaXM7XG4gICAgbGV0IGNoaWxkID0gY2hpbGRyZW5ba2V5XTtcblxuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5ba2V5XSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh0aGlzLmlubmVyW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLmlubmVyOyB9XG59XG4iLCJpbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcGlsZWRWYWx1ZSBleHRlbmRzIENvbXBpbGVkRXhwcmVzc2lvbiB7XG4gICAgY29uc3RydWN0b3IoeyB2YWx1ZSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwidmFsdWVcIjtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSBuZXcgVmFsdWVSZWZlcmVuY2UodmFsdWUpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMucmVmZXJlbmNlLnZhbHVlKCkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBWYWx1ZVJlZmVyZW5jZSBleHRlbmRzIENvbnN0UmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGRpY3QoKTtcbiAgICB9XG4gICAgZ2V0KGtleSkge1xuICAgICAgICBsZXQgeyBjaGlsZHJlbiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGNoaWxkID0gY2hpbGRyZW5ba2V5XTtcbiAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZHJlbltrZXldID0gbmV3IFZhbHVlUmVmZXJlbmNlKHRoaXMuaW5uZXJba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuaW5uZXI7IH1cbn1cbiJdfQ== enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runtime/lib/compiled/opcodes/component', '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, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerUtil, _glimmerRuntimeLibUtils) { 'use strict'; - var _createClass = (function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var StatementCompilationBufferProxy = (function () { function StatementCompilationBufferProxy(inner) { - _classCallCheck(this, StatementCompilationBufferProxy); - this.inner = inner; } StatementCompilationBufferProxy.prototype.toOpSeq = function toOpSeq() { return this.inner.toOpSeq(); @@ -15686,34 +16290,25 @@ StatementCompilationBufferProxy.prototype.hasBlockSymbol = function hasBlockSymbol(name) { return this.inner.hasBlockSymbol(name); }; - // only used for {{view.name}} - - StatementCompilationBufferProxy.prototype.hasKeyword = function hasKeyword(name) { - return this.inner.hasKeyword(name); - }; - - _createClass(StatementCompilationBufferProxy, [{ + babelHelpers.createClass(StatementCompilationBufferProxy, [{ key: 'component', get: function () { return this.inner.component; } }]); - return StatementCompilationBufferProxy; })(); var BasicOpcodeBuilder = (function (_StatementCompilationBufferProxy) { - _inherits(BasicOpcodeBuilder, _StatementCompilationBufferProxy); + babelHelpers.inherits(BasicOpcodeBuilder, _StatementCompilationBufferProxy); - function BasicOpcodeBuilder(inner, _block, env) { - _classCallCheck(this, BasicOpcodeBuilder); - + function BasicOpcodeBuilder(inner, symbolTable, env) { _StatementCompilationBufferProxy.call(this, inner); - this._block = _block; + this.symbolTable = symbolTable; this.env = env; this.labelsStack = new _glimmerUtil.Stack(); this.templatesStack = new _glimmerUtil.Stack(); } @@ -15746,32 +16341,36 @@ return label; }; // components - BasicOpcodeBuilder.prototype.putComponentDefinition = function putComponentDefinition(args, definition) { - this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutComponentDefinitionOpcode({ args: this.compile(args), definition: definition })); + BasicOpcodeBuilder.prototype.putComponentDefinition = function putComponentDefinition(definition) { + this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutComponentDefinitionOpcode(definition)); }; - BasicOpcodeBuilder.prototype.putDynamicComponentDefinition = function putDynamicComponentDefinition(args) { - this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutDynamicComponentDefinitionOpcode({ args: this.compile(args) })); + BasicOpcodeBuilder.prototype.putDynamicComponentDefinition = function putDynamicComponentDefinition() { + this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutDynamicComponentDefinitionOpcode()); }; - BasicOpcodeBuilder.prototype.openComponent = function openComponent() { - var shadow = arguments.length <= 0 || arguments[0] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[0]; + BasicOpcodeBuilder.prototype.openComponent = function openComponent(args) { + var shadow = arguments.length <= 1 || arguments[1] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[1]; - this.append(new _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOpcode({ shadow: shadow, templates: this.templates })); + 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 @@ -15789,17 +16388,25 @@ BasicOpcodeBuilder.prototype.text = function text(_text) { this.append(new _glimmerRuntimeLibCompiledOpcodesDom.TextOpcode({ text: _text })); }; BasicOpcodeBuilder.prototype.openPrimitiveElement = function openPrimitiveElement(tag) { - this.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode({ tag: 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(options) { @@ -15872,24 +16479,24 @@ BasicOpcodeBuilder.prototype.putArgs = function putArgs(args) { this.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutArgsOpcode({ args: this.compile(args) })); }; - BasicOpcodeBuilder.prototype.bindPositionalArgs = function bindPositionalArgs(block) { - this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindPositionalArgsOpcode({ block: block })); + BasicOpcodeBuilder.prototype.bindDynamicScope = function bindDynamicScope(names) { + this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindDynamicScopeOpcode(names)); }; - BasicOpcodeBuilder.prototype.bindNamedArgs = function bindNamedArgs(named) { - this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindNamedArgsOpcode({ named: named })); + BasicOpcodeBuilder.prototype.bindPositionalArgs = function bindPositionalArgs(names, symbols) { + this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindPositionalArgsOpcode(names, symbols)); }; - BasicOpcodeBuilder.prototype.bindBlocks = function bindBlocks(blocks) { - this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindBlocksOpcode({ blocks: blocks })); + BasicOpcodeBuilder.prototype.bindNamedArgs = function bindNamedArgs(names, symbols) { + this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindNamedArgsOpcode(names, symbols)); }; - BasicOpcodeBuilder.prototype.bindDynamicScope = function bindDynamicScope(callback) { - this.append(new _glimmerRuntimeLibCompiledOpcodesVm.BindDynamicScopeOpcode(callback)); + 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({ begin: this.labelFor(_enter), end: this.labelFor(exit) })); }; @@ -15929,22 +16536,21 @@ BasicOpcodeBuilder.prototype.jumpUnless = function jumpUnless(target) { this.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpUnlessOpcode({ target: this.labelFor(target) })); }; - _createClass(BasicOpcodeBuilder, [{ + 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; @@ -15952,29 +16558,26 @@ return expr && typeof expr['compile'] === 'function'; } var SIMPLE_BLOCK = { templates: null }; var OpcodeBuilder = (function (_BasicOpcodeBuilder) { - _inherits(OpcodeBuilder, _BasicOpcodeBuilder); + babelHelpers.inherits(OpcodeBuilder, _BasicOpcodeBuilder); function OpcodeBuilder() { - _classCallCheck(this, OpcodeBuilder); - _BasicOpcodeBuilder.apply(this, arguments); } OpcodeBuilder.prototype.compile = function compile(expr) { if (isCompilableExpression(expr)) { - return expr.compile(this, this.env, this._block); + return expr.compile(this, this.env, this.symbolTable); } else { return expr; } }; - OpcodeBuilder.prototype.setupDynamicScope = function setupDynamicScope(callback) { - this.pushDynamicScope(); - this.bindDynamicScope(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)); }; @@ -16036,40 +16639,27 @@ return OpcodeBuilder; })(BasicOpcodeBuilder); exports.default = OpcodeBuilder; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBeUJBLCtCQUFBO0FBRUUsaUJBRkYsK0JBQUEsQ0FFd0IsS0FBaUMsRUFBQTtrQ0FGekQsK0JBQUE7O0FBRXdCLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBNEI7U0FBSTs7QUFGN0QsdUNBQUEsV0FRRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzdCOztBQVZILHVDQUFBLFdBWUUsTUFBTSxHQUFBLGdCQUFtQixNQUFTLEVBQUE7QUFDaEMsZ0JBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCOztBQWRILHVDQUFBLFdBZ0JFLGNBQWMsR0FBQSx3QkFBQyxJQUFvQixFQUFBO0FBQ2pDLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDOztBQWxCSCx1Q0FBQSxXQW9CRSxjQUFjLEdBQUEsd0JBQUMsSUFBb0IsRUFBQTtBQUNqQyxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUF0QkgsdUNBQUEsV0F3QkUsY0FBYyxHQUFBLHdCQUFDLElBQW9CLEVBQUE7QUFDakMsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7O0FBMUJILHVDQUFBLFdBNEJFLGNBQWMsR0FBQSx3QkFBQyxJQUFvQixFQUFBO0FBQ2pDLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDOztBQTlCSCx1Q0FBQSxXQWdDRSxjQUFjLEdBQUEsd0JBQUMsSUFBb0IsRUFBQTtBQUNqQyxtQkFBTyxJQUFJLENB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dCAqIGFzIGNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyBkb20gZnJvbSAnLi9kb20nO1xuaW1wb3J0ICogYXMgbGlzdHMgZnJvbSAnLi9saXN0cyc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi8uLi9zeW50YXgvY29yZSc7XG5cbmltcG9ydCB7IFN0YWNrLCBEaWN0LCBPcGFxdWUsIEludGVybmVkU3RyaW5nLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vLi4vc3ludGF4JztcbmltcG9ydCB7IE9wY29kZSwgT3BTZXEgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbXBpbGVkQXJncyB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jaywgTGF5b3V0LCBCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIENvbXBpbGVzSW50bzxUPiB7XG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyLCBlbnY6IEVudmlyb25tZW50LCBibG9jazogQmxvY2spOiBUO1xufVxuXG50eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxuY2xhc3MgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXJQcm94eSBpbXBsZW1lbnRzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5uZXI6IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyKSB7fVxuXG4gIGdldCBjb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcG9uZW50O1xuICB9XG5cbiAgdG9PcFNlcSgpOiBPcFNlcSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudG9PcFNlcSgpO1xuICB9XG5cbiAgYXBwZW5kPFQgZXh0ZW5kcyBPcGNvZGU+KG9wY29kZTogVCkge1xuICAgIHRoaXMuaW5uZXIuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0TG9jYWxTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNMb2NhbFN5bWJvbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0xvY2FsU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmdldE5hbWVkU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgaGFzTmFtZWRTeW1ib2wobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNOYW1lZFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldEJsb2NrU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRCbG9ja1N5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuaGFzQmxvY2tTeW1ib2wobmFtZSk7XG4gIH1cblxuICAvLyBvbmx5IHVzZWQgZm9yIHt7dmlldy5uYW1lfX1cbiAgaGFzS2V5d29yZChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0tleXdvcmQobmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciBleHRlbmRzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyUHJveHkge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPERpY3Q8dm0uTGFiZWxPcGNvZGU+PigpO1xuICBwcml2YXRlIHRlbXBsYXRlc1N0YWNrID0gbmV3IFN0YWNrPFN5bnRheC5UZW1wbGF0ZXM+KCk7XG5cbiAgY29uc3RydWN0b3IoaW5uZXI6IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBwdWJsaWMgX2Jsb2NrOiBCbG9jaywgcHVibGljIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcihpbm5lcik7XG4gIH1cblxuICBhYnN0cmFjdCBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFO1xuXG4gIC8vIGhlbHBlcnNcblxuICBnZXQgbGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBnZXQgdGVtcGxhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBzdGFydEJsb2NrKHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICB0aGlzLnRlbXBsYXRlc1N0YWNrLnB1c2godGVtcGxhdGVzKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMudGVtcGxhdGVzU3RhY2sucG9wKCk7XG4gIH1cblxuICBzdGFydExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2goZGljdDx2bS5MYWJlbE9wY29kZT4oKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gIH1cblxuICBsYWJlbEZvcihuYW1lOiBzdHJpbmcpOiB2bS5MYWJlbE9wY29kZSB7XG4gICAgbGV0IGxhYmVscyA9IHRoaXMubGFiZWxzO1xuICAgIGxldCBsYWJlbCA9IGxhYmVsc1tuYW1lXTtcblxuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIGxhYmVsID0gbGFiZWxzW25hbWVdID0gbmV3IHZtLkxhYmVsT3Bjb2RlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXRDb21wb25lbnREZWZpbml0aW9uKGFyZ3M6IFJlcHJlc2VudHM8Q29tcGlsZWRBcmdzPiwgZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5QdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKHsgYXJnczogdGhpcy5jb21waWxlKGFyZ3MpLCBkZWZpbml0aW9uIH0pKTtcbiAgfVxuXG4gIHB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKGFyZ3M6IFJlcHJlc2VudHM8Q29tcGlsZWRBcmdzPikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGUoeyBhcmdzOiB0aGlzLmNvbXBpbGUoYXJncykgfSkpO1xuICB9XG5cbiAgb3BlbkNvbXBvbmVudChzaGFkb3c6IEludGVybmVkU3RyaW5nW10gPSBFTVBUWV9BUlJBWSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuT3BlbkNvbXBvbmVudE9wY29kZSh7IHNoYWRvdywgdGVtcGxhdGVzOiB0aGlzLnRlbXBsYXRlcyB9KSk7XG4gIH1cblxuICBkaWRDcmVhdGVFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuRGlkQ3JlYXRlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIHNoYWRvd0F0dHJpYnV0ZXMoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5TaGFkb3dBdHRyaWJ1dGVzT3Bjb2RlKCkpO1xuICB9XG5cbiAgY2xvc2VDb21wb25lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5DbG9zZUNvbXBvbmVudE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGNvbnRlbnRcblxuICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIHRydXN0aW5nQXBwZW5kKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb250ZW50Lk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgLy8gZG9tXG5cbiAgdGV4dCh0ZXh0OiBJbnRlcm5lZFN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uVGV4dE9wY29kZSh7IHRleHQgfSkpO1xuICB9XG5cbiAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnOiBJbnRlcm5lZFN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUoeyB0YWcgfSkpO1xuICB9XG5cbiAgb3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uQ2xvc2VFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgc3RhdGljQXR0cihvcHRpb25zOiBkb20uU3RhdGljQXR0ck9wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlN0YXRpY0F0dHJPcGNvZGUob3B0aW9ucykpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhvcHRpb25zOiBkb20uRHluYW1pY0F0dHJOU09wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyTlNPcGNvZGUob3B0aW9ucykpO1xuICB9XG5cbiAgZHluYW1pY0F0dHIob3B0aW9uczogZG9tLlNpbXBsZUF0dHJPcHRpb25zKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5EeW5hbWljQXR0ck9wY29kZShvcHRpb25zKSk7XG4gIH1cblxuICBjb21tZW50KGNvbW1lbnQ6IEludGVybmVkU3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5Db21tZW50T3Bjb2RlKHsgY29tbWVudCB9KSk7XG4gIH1cblxuICAvLyBsaXN0c1xuXG4gIHB1dEl0ZXJhdG9yKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5QdXRJdGVyYXRvck9wY29kZSgpKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogc3RyaW5nLCBlbmQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5FbnRlckxpc3RPcGNvZGUodGhpcy5sYWJlbEZvcihzdGFydCksIHRoaXMubGFiZWxGb3IoZW5kKSkpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkV4aXRMaXN0T3Bjb2RlKCkpO1xuICB9XG5cbiAgZW50ZXJXaXRoS2V5KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkVudGVyV2l0aEtleU9wY29kZSh0aGlzLmxhYmVsRm9yKHN0YXJ0KSwgdGhpcy5sYWJlbEZvcihlbmQpKSk7XG4gIH1cblxuICBuZXh0SXRlcihlbmQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5OZXh0SXRlck9wY29kZSh0aGlzLmxhYmVsRm9yKGVuZCkpKTtcbiAgfVxuXG4gIC8vIHZtXG5cbiAgbGFiZWwobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQodGhpcy5sYWJlbEZvcihuYW1lKSk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHVzaENoaWxkU2NvcGVPcGNvZGUoKSk7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUG9wU2NvcGVPcGNvZGUoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5QdXNoRHluYW1pY1Njb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5Qb3BEeW5hbWljU2NvcGVPcGNvZGUoKSk7XG4gIH1cblxuICBwdXROdWxsKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5QdXROdWxsT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHV0VmFsdWUoZXhwcmVzc2lvbjogUmVwcmVzZW50czxDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPj4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0VmFsdWVPcGNvZGUoeyBleHByZXNzaW9uOiB0aGlzLmNvbXBpbGUoZXhwcmVzc2lvbikgfSkpO1xuICB9XG5cbiAgcHV0QXJncyhhcmdzOiBSZXByZXNlbnRzPENvbXBpbGVkQXJncz4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0QXJnc09wY29kZSh7IGFyZ3M6IHRoaXMuY29tcGlsZShhcmdzKSB9KSk7XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3MoYmxvY2s6IElubGluZUJsb2NrKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmRQb3NpdGlvbmFsQXJnc09wY29kZSh7IGJsb2NrIH0pKTtcbiAgfVxuXG4gIGJpbmROYW1lZEFyZ3MobmFtZWQ6IERpY3Q8bnVtYmVyPikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kTmFtZWRBcmdzT3Bjb2RlKHsgbmFtZWQgfSkpO1xuICB9XG5cbiAgYmluZEJsb2NrcyhibG9ja3M6IERpY3Q8bnVtYmVyPikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kQmxvY2tzT3Bjb2RlKHsgYmxvY2tzIH0pKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUoY2FsbGJhY2s6IHZtLkJpbmREeW5hbWljU2NvcGVDYWxsYmFjaykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kRHluYW1pY1Njb3BlT3Bjb2RlKGNhbGxiYWNrKSk7XG4gIH1cblxuICBlbnRlcihlbnRlcjogTGFiZWwsIGV4aXQ6IExhYmVsKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkVudGVyT3Bjb2RlKHsgYmVnaW46IHRoaXMubGFiZWxGb3IoZW50ZXIpLCBlbmQ6IHRoaXMubGFiZWxGb3IoZXhpdCkgfSkpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uRXhpdE9wY29kZSgpKTtcbiAgfVxuXG4gIGV2YWx1YXRlKG5hbWU6IHN0cmluZywgYmxvY2sgPSB0aGlzLnRlbXBsYXRlc1tuYW1lXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FdmFsdWF0ZU9wY29kZSh7IGRlYnVnOiBuYW1lLCBibG9jayB9KSk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh2bS5Db25zdFRlc3QpKTtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodm0uU2ltcGxlVGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHZtLkVudmlyb25tZW50VGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh0ZXN0RnVuYykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5KdW1wT3Bjb2RlKHsgdGFyZ2V0OiB0aGlzLmxhYmVsRm9yKHRhcmdldCkgfSkpO1xuICB9XG5cbiAganVtcElmKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkp1bXBJZk9wY29kZSh7IHRhcmdldDogdGhpcy5sYWJlbEZvcih0YXJnZXQpIH0pKTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uSnVtcFVubGVzc09wY29kZSh7IHRhcmdldDogdGhpcy5sYWJlbEZvcih0YXJnZXQpIH0pKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbnR5cGUgQmxvY2tBcmdzID0geyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMsIGFyZ3M/OiBTeW50YXguQXJncyB9O1xuXG5jb25zdCBTSU1QTEVfQkxPQ0s6IEJsb2NrQXJncyA9IHsgdGVtcGxhdGVzOiBudWxsIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFIHtcbiAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzLCB0aGlzLmVudiwgdGhpcy5fYmxvY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG4gIH1cblxuICBzZXR1cER5bmFtaWNTY29wZShjYWxsYmFjazogdm0uQmluZER5bmFtaWNTY29wZUNhbGxiYWNrKSB7XG4gICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgdGhpcy5iaW5kRHluYW1pY1Njb3BlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGJpbmROYW1lZEFyZ3NGb3JMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kTmFtZWRBcmdzT3Bjb2RlLmNyZWF0ZShsYXlvdXQpKTtcbiAgfVxuXG4gIGJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kQmxvY2tzT3Bjb2RlLmNyZWF0ZShsYXlvdXQpKTtcbiAgfVxuXG4gIHNpbXBsZUJsb2NrKGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgdGhpcy5ibG9jayhTSU1QTEVfQkxPQ0ssIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGJsb2NrKHsgdGVtcGxhdGVzLCBhcmdzIH06IEJsb2NrQXJncywgY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgdGhpcy5zdGFydEJsb2NrKHsgdGVtcGxhdGVzIH0pO1xuICAgIHRoaXMuZW50ZXIoJ0JFR0lOJywgJ0VORCcpO1xuICAgIHRoaXMubGFiZWwoJ0JFR0lOJyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5wdXRBcmdzKGFyZ3MpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgaXRlcih7IHRlbXBsYXRlcyB9OiB7IHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9LCBjYWxsYmFjazogQmxvY2tDYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2soeyB0ZW1wbGF0ZXMgfSk7XG4gICAgdGhpcy5lbnRlckxpc3QoJ0JFR0lOJywgJ0VORCcpO1xuICAgIHRoaXMubGFiZWwoJ0lURVInKTtcbiAgICB0aGlzLm5leHRJdGVyKCdCUkVBSycpO1xuICAgIHRoaXMuZW50ZXJXaXRoS2V5KCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5qdW1wKCdJVEVSJyk7XG4gICAgdGhpcy5sYWJlbCgnQlJFQUsnKTtcbiAgICB0aGlzLmV4aXRMaXN0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgdW5pdCh7IHRlbXBsYXRlcyB9OiB7IHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9LCBjYWxsYmFjazogKGJ1aWxkZXI6IE9wY29kZUJ1aWxkZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgdGhpcy5zdGFydEJsb2NrKHsgdGVtcGxhdGVzIH0pO1xuICAgIGNhbGxiYWNrKHRoaXMpO1xuICAgIHRoaXMuZW5kQmxvY2soKTtcbiAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuaXRPcHRpb25zIHtcbiAgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrT3B0aW9ucyBleHRlbmRzIFVuaXRPcHRpb25zIHtcbiAgYXJnczogU3ludGF4LkFyZ3M7XG59XG5leHBvcnQgdHlwZSBCbG9ja0NhbGxiYWNrID0gKGRzbDogT3Bjb2RlQnVpbGRlciwgQkVHSU46IExhYmVsLCBFTkQ6IExhYmVsKSA9PiB2b2lkO1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXNCQSwrQkFBQTtBQUVFLGlCQUZGLCtCQUFBLENBRXdCLEtBQWlDLEVBQUE7QUFBakMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUE0QjtTQUFJOztBQUY3RCx1Q0FBQSxXQVFFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7O0FBVkgsdUNBQUEsV0FZRSxNQUFNLEdBQUEsZ0JBQW1CLE1BQVMsRUFBQTtBQUNoQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7O0FBZEgsdUNBQUEsV0FnQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUFsQkgsdUNBQUEsV0FvQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUF0QkgsdUNBQUEsV0F3QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUExQkgsdUNBQUEsV0E0QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUE5QkgsdUNBQUEsV0FnQ0UsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJ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QUUsQ0FBQztBQUNoQixnQkFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25COztlQW5FVyxhQUFxQjtPQUFRLGtCQUFrQjs7c0JBQS9DLGFBQXFCIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgY29udGVudCBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0ICogYXMgZG9tIGZyb20gJy4vZG9tJztcbmltcG9ydCAqIGFzIGxpc3RzIGZyb20gJy4vbGlzdHMnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdGFjaywgRGljdCwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBDb21waWxlc0ludG8gfSBmcm9tICcuLi8uLi9zeW50YXgnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElubGluZUJsb2NrLCBMYXlvdXQgfSBmcm9tICcuLi9ibG9ja3MnO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcblxudHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbmNsYXNzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyUHJveHkgaW1wbGVtZW50cyBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlciB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGlubmVyOiBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlcikge31cblxuICBnZXQgY29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBvbmVudDtcbiAgfVxuXG4gIHRvT3BTZXEoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzLmlubmVyLnRvT3BTZXEoKTtcbiAgfVxuXG4gIGFwcGVuZDxUIGV4dGVuZHMgT3Bjb2RlPihvcGNvZGU6IFQpIHtcbiAgICB0aGlzLmlubmVyLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgZ2V0TG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRMb2NhbFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc0xvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0xvY2FsU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXROYW1lZFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc05hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc05hbWVkU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRCbG9ja1N5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0Jsb2NrU3ltYm9sKG5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIgZXh0ZW5kcyBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlclByb3h5IHtcbiAgcHJpdmF0ZSBsYWJlbHNTdGFjayA9IG5ldyBTdGFjazxEaWN0PHZtLkxhYmVsT3Bjb2RlPj4oKTtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXNTdGFjayA9IG5ldyBTdGFjazxTeW50YXguVGVtcGxhdGVzPigpO1xuXG4gIGNvbnN0cnVjdG9yKGlubmVyOiBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlciwgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgcHVibGljIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcihpbm5lcik7XG4gIH1cblxuICBhYnN0cmFjdCBjb21waWxlPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBFO1xuXG4gIC8vIGhlbHBlcnNcblxuICBnZXQgbGFiZWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBnZXQgdGVtcGxhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc1N0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBzdGFydEJsb2NrKHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICB0aGlzLnRlbXBsYXRlc1N0YWNrLnB1c2godGVtcGxhdGVzKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMudGVtcGxhdGVzU3RhY2sucG9wKCk7XG4gIH1cblxuICBzdGFydExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2goZGljdDx2bS5MYWJlbE9wY29kZT4oKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gIH1cblxuICBsYWJlbEZvcihuYW1lOiBzdHJpbmcpOiB2bS5MYWJlbE9wY29kZSB7XG4gICAgbGV0IGxhYmVscyA9IHRoaXMubGFiZWxzO1xuICAgIGxldCBsYWJlbCA9IGxhYmVsc1tuYW1lXTtcblxuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIGxhYmVsID0gbGFiZWxzW25hbWVdID0gbmV3IHZtLkxhYmVsT3Bjb2RlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXRDb21wb25lbnREZWZpbml0aW9uKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbigpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LlB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKCkpO1xuICB9XG5cbiAgb3BlbkNvbXBvbmVudChhcmdzOiBSZXByZXNlbnRzPENvbXBpbGVkQXJncz4sIHNoYWRvdzogc3RyaW5nW10gPSBFTVBUWV9BUlJBWSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuT3BlbkNvbXBvbmVudE9wY29kZSh0aGlzLmNvbXBpbGUoYXJncyksIHNoYWRvdywgdGhpcy50ZW1wbGF0ZXMpKTtcbiAgfVxuXG4gIGRpZENyZWF0ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5EaWRDcmVhdGVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgc2hhZG93QXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LlNoYWRvd0F0dHJpYnV0ZXNPcGNvZGUoKSk7XG4gIH1cblxuICBkaWRSZW5kZXJMYXlvdXQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5EaWRSZW5kZXJMYXlvdXRPcGNvZGUoKSk7XG4gIH1cblxuICBjbG9zZUNvbXBvbmVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkNsb3NlQ29tcG9uZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgLy8gY29udGVudFxuXG4gIGNhdXRpb3VzQXBwZW5kKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb250ZW50Lk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBkb21cblxuICB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uVGV4dE9wY29kZSh7IHRleHQgfSkpO1xuICB9XG5cbiAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLk9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlKHRhZykpO1xuICB9XG5cbiAgb3BlbkNvbXBvbmVudEVsZW1lbnQodGFnOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLk9wZW5Db21wb25lbnRFbGVtZW50T3Bjb2RlKHRhZykpO1xuICB9XG5cbiAgb3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uRmx1c2hFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uQ2xvc2VFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgc3RhdGljQXR0cihvcHRpb25zOiBkb20uU3RhdGljQXR0ck9wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlN0YXRpY0F0dHJPcGNvZGUob3B0aW9ucykpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhvcHRpb25zOiBkb20uRHluYW1pY0F0dHJOU09wdGlvbnMpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyTlNPcGNvZGUob3B0aW9ucykpO1xuICB9XG5cbiAgZHluYW1pY0F0dHIob3B0aW9uczogZG9tLlNpbXBsZUF0dHJPcHRpb25zKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5EeW5hbWljQXR0ck9wY29kZShvcHRpb25zKSk7XG4gIH1cblxuICBjb21tZW50KGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uQ29tbWVudE9wY29kZSh7IGNvbW1lbnQgfSkpO1xuICB9XG5cbiAgLy8gbGlzdHNcblxuICBwdXRJdGVyYXRvcigpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuUHV0SXRlcmF0b3JPcGNvZGUoKSk7XG4gIH1cblxuICBlbnRlckxpc3Qoc3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuRW50ZXJMaXN0T3Bjb2RlKHRoaXMubGFiZWxGb3Ioc3RhcnQpLCB0aGlzLmxhYmVsRm9yKGVuZCkpKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5FeGl0TGlzdE9wY29kZSgpKTtcbiAgfVxuXG4gIGVudGVyV2l0aEtleShzdGFydDogc3RyaW5nLCBlbmQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5FbnRlcldpdGhLZXlPcGNvZGUodGhpcy5sYWJlbEZvcihzdGFydCksIHRoaXMubGFiZWxGb3IoZW5kKSkpO1xuICB9XG5cbiAgbmV4dEl0ZXIoZW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuTmV4dEl0ZXJPcGNvZGUodGhpcy5sYWJlbEZvcihlbmQpKSk7XG4gIH1cblxuICAvLyB2bVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKHRoaXMubGFiZWxGb3IobmFtZSkpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1c2hDaGlsZFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlBvcFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHVzaER5bmFtaWNTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUG9wRHluYW1pY1Njb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHV0TnVsbCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0TnVsbE9wY29kZSgpKTtcbiAgfVxuXG4gIHB1dFZhbHVlKGV4cHJlc3Npb246IFJlcHJlc2VudHM8Q29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dFZhbHVlT3Bjb2RlKHsgZXhwcmVzc2lvbjogdGhpcy5jb21waWxlKGV4cHJlc3Npb24pIH0pKTtcbiAgfVxuXG4gIHB1dEFyZ3MoYXJnczogUmVwcmVzZW50czxDb21waWxlZEFyZ3M+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dEFyZ3NPcGNvZGUoeyBhcmdzOiB0aGlzLmNvbXBpbGUoYXJncykgfSkpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uQmluZER5bmFtaWNTY29wZU9wY29kZShuYW1lcykpO1xuICB9XG5cbiAgYmluZFBvc2l0aW9uYWxBcmdzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uQmluZFBvc2l0aW9uYWxBcmdzT3Bjb2RlKG5hbWVzLCBzeW1ib2xzKSk7XG4gIH1cblxuICBiaW5kTmFtZWRBcmdzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uQmluZE5hbWVkQXJnc09wY29kZShuYW1lcywgc3ltYm9scykpO1xuICB9XG5cbiAgYmluZEJsb2NrcyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmRCbG9ja3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpKTtcbiAgfVxuXG4gIGVudGVyKGVudGVyOiBMYWJlbCwgZXhpdDogTGFiZWwpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uRW50ZXJPcGNvZGUoeyBiZWdpbjogdGhpcy5sYWJlbEZvcihlbnRlciksIGVuZDogdGhpcy5sYWJlbEZvcihleGl0KSB9KSk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FeGl0T3Bjb2RlKCkpO1xuICB9XG5cbiAgZXZhbHVhdGUobmFtZTogc3RyaW5nLCBibG9jayA9IHRoaXMudGVtcGxhdGVzW25hbWVdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkV2YWx1YXRlT3Bjb2RlKHsgZGVidWc6IG5hbWUsIGJsb2NrIH0pKTtcbiAgfVxuXG4gIHRlc3QodGVzdEZ1bmM6ICdjb25zdCcgfCAnc2ltcGxlJyB8ICdlbnZpcm9ubWVudCcgfCB2bS5UZXN0RnVuY3Rpb24pIHtcbiAgICBpZiAodGVzdEZ1bmMgPT09ICdjb25zdCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHZtLkNvbnN0VGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh2bS5TaW1wbGVUZXN0KSk7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodm0uRW52aXJvbm1lbnRUZXN0KSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGVzdEZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHRlc3RGdW5jKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBqdW1wKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkp1bXBPcGNvZGUoeyB0YXJnZXQ6IHRoaXMubGFiZWxGb3IodGFyZ2V0KSB9KSk7XG4gIH1cblxuICBqdW1wSWYodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uSnVtcElmT3Bjb2RlKHsgdGFyZ2V0OiB0aGlzLmxhYmVsRm9yKHRhcmdldCkgfSkpO1xuICB9XG5cbiAganVtcFVubGVzcyh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5KdW1wVW5sZXNzT3Bjb2RlKHsgdGFyZ2V0OiB0aGlzLmxhYmVsRm9yKHRhcmdldCkgfSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcGlsYWJsZUV4cHJlc3Npb248RT4oZXhwcjogUmVwcmVzZW50czxFPik6IGV4cHIgaXMgQ29tcGlsZXNJbnRvPEU+IHtcbiAgcmV0dXJuIGV4cHIgJiYgdHlwZW9mIGV4cHJbJ2NvbXBpbGUnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxudHlwZSBCbG9ja0FyZ3MgPSB7IHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgYXJncz86IFN5bnRheC5BcmdzIH07XG5cbmNvbnN0IFNJTVBMRV9CTE9DSzogQmxvY2tBcmdzID0geyB0ZW1wbGF0ZXM6IG51bGwgfTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3Bjb2RlQnVpbGRlciBleHRlbmRzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEUge1xuICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMsIHRoaXMuZW52LCB0aGlzLnN5bWJvbFRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuICB9XG5cbiAgYmluZFBvc2l0aW9uYWxBcmdzRm9yQmxvY2soYmxvY2s6IElubGluZUJsb2NrKSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZFBvc2l0aW9uYWxBcmdzT3Bjb2RlLmNyZWF0ZShibG9jaykpO1xuICB9XG5cbiAgYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuYXBwZW5kKHZtLkJpbmROYW1lZEFyZ3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgYmluZEJsb2Nrc0ZvckxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuYXBwZW5kKHZtLkJpbmRCbG9ja3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgc2ltcGxlQmxvY2soY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLmJsb2NrKFNJTVBMRV9CTE9DSywgY2FsbGJhY2spO1xuICB9XG5cbiAgYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfTogQmxvY2tBcmdzLCBjYWxsYmFjazogQmxvY2tDYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2soeyB0ZW1wbGF0ZXMgfSk7XG4gICAgdGhpcy5lbnRlcignQkVHSU4nLCAnRU5EJyk7XG4gICAgdGhpcy5sYWJlbCgnQkVHSU4nKTtcblxuICAgIGlmIChhcmdzKSB0aGlzLnB1dEFyZ3MoYXJncyk7XG5cbiAgICBjYWxsYmFjayh0aGlzLCAnQkVHSU4nLCAnRU5EJyk7XG5cbiAgICB0aGlzLmxhYmVsKCdFTkQnKTtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmVuZEJsb2NrKCk7XG4gICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gIH1cblxuICBpdGVyKHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0sIGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgIHRoaXMuc3RhcnRCbG9jayh7IHRlbXBsYXRlcyB9KTtcbiAgICB0aGlzLmVudGVyTGlzdCgnQkVHSU4nLCAnRU5EJyk7XG4gICAgdGhpcy5sYWJlbCgnSVRFUicpO1xuICAgIHRoaXMubmV4dEl0ZXIoJ0JSRUFLJyk7XG4gICAgdGhpcy5lbnRlcldpdGhLZXkoJ0JFR0lOJywgJ0VORCcpO1xuICAgIHRoaXMubGFiZWwoJ0JFR0lOJyk7XG5cbiAgICBjYWxsYmFjayh0aGlzLCAnQkVHSU4nLCAnRU5EJyk7XG5cbiAgICB0aGlzLmxhYmVsKCdFTkQnKTtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmp1bXAoJ0lURVInKTtcbiAgICB0aGlzLmxhYmVsKCdCUkVBSycpO1xuICAgIHRoaXMuZXhpdExpc3QoKTtcbiAgICB0aGlzLmVuZEJsb2NrKCk7XG4gICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gIH1cblxuICB1bml0KHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0sIGNhbGxiYWNrOiAoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2soeyB0ZW1wbGF0ZXMgfSk7XG4gICAgY2FsbGJhY2sodGhpcyk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5pdE9wdGlvbnMge1xuICB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tPcHRpb25zIGV4dGVuZHMgVW5pdE9wdGlvbnMge1xuICBhcmdzOiBTeW50YXguQXJncztcbn1cbmV4cG9ydCB0eXBlIEJsb2NrQ2FsbGJhY2sgPSAoZHNsOiBPcGNvZGVCdWlsZGVyLCBCRUdJTjogTGFiZWwsIEVORDogTGFiZWwpID0+IHZvaWQ7XG4iXX0= 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'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var PutDynamicComponentDefinitionOpcode = (function (_Opcode) { - _inherits(PutDynamicComponentDefinitionOpcode, _Opcode); + babelHelpers.inherits(PutDynamicComponentDefinitionOpcode, _Opcode); - function PutDynamicComponentDefinitionOpcode(_ref) { - var args = _ref.args; - - _classCallCheck(this, PutDynamicComponentDefinitionOpcode); - - _Opcode.call(this); + function PutDynamicComponentDefinitionOpcode() { + _Opcode.apply(this, arguments); this.type = "put-dynamic-component-definition"; - this.args = args; } PutDynamicComponentDefinitionOpcode.prototype.evaluate = function evaluate(vm) { - var definitionRef = vm.frame.getOperand(); - var cache = _glimmerReference.isConst(definitionRef) ? undefined : new _glimmerReference.ReferenceCache(definitionRef); - var definition = cache ? cache.peek() : definitionRef.value(); - var args = this.args.evaluate(vm).withInternal(); - vm.frame.setArgs(args); - args.internal["definition"] = definition; + var reference = vm.frame.getOperand(); + var cache = _glimmerReference.isConst(reference) ? undefined : new _glimmerReference.ReferenceCache(reference); + var definition = cache ? cache.peek() : reference.value(); + vm.frame.setComponentDefinition(definition); if (cache) { vm.updateWith(new _glimmerRuntimeLibCompiledOpcodesVm.Assert(cache)); } }; @@ -16077,124 +16667,92 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutDynamicComponentDefinitionOpcode = PutDynamicComponentDefinitionOpcode; var PutComponentDefinitionOpcode = (function (_Opcode2) { - _inherits(PutComponentDefinitionOpcode, _Opcode2); + babelHelpers.inherits(PutComponentDefinitionOpcode, _Opcode2); - function PutComponentDefinitionOpcode(_ref2) { - var args = _ref2.args; - var definition = _ref2.definition; - - _classCallCheck(this, PutComponentDefinitionOpcode); - + function PutComponentDefinitionOpcode(definition) { _Opcode2.call(this); - this.type = "put-component-definition"; - this.args = args; this.definition = definition; + this.type = "put-component-definition"; } PutComponentDefinitionOpcode.prototype.evaluate = function evaluate(vm) { - var args = this.args.evaluate(vm).withInternal(); - args.internal["definition"] = this.definition; - vm.frame.setArgs(args); + vm.frame.setComponentDefinition(this.definition); }; return PutComponentDefinitionOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutComponentDefinitionOpcode = PutComponentDefinitionOpcode; var OpenComponentOpcode = (function (_Opcode3) { - _inherits(OpenComponentOpcode, _Opcode3); + babelHelpers.inherits(OpenComponentOpcode, _Opcode3); - function OpenComponentOpcode(_ref3) { - var shadow = _ref3.shadow; - var templates = _ref3.templates; - - _classCallCheck(this, OpenComponentOpcode); - + function OpenComponentOpcode(args, shadow, templates) { _Opcode3.call(this); - this.type = "open-component"; + 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 args = vm.frame.getArgs(); - var definition = args.internal["definition"]; - vm.pushDynamicScope(); - var dynamicScope = vm.dynamicScope(); + var definition = vm.frame.getComponentDefinition(); + var dynamicScope = vm.pushDynamicScope(); + var callerScope = vm.scope(); var manager = definition.manager; var hasDefaultBlock = templates && !!templates.default; // TODO Cleanup? - var preparedArgs = manager.prepareArgs(definition, args); - var component = manager.create(definition, preparedArgs, dynamicScope, hasDefaultBlock); + var args = manager.prepareArgs(definition, rawArgs.evaluate(vm)); + var component = manager.create(vm.env, definition, args, dynamicScope, vm.getSelf(), hasDefaultBlock); var destructor = manager.getDestructor(component); if (destructor) vm.newDestroyable(destructor); - preparedArgs.internal["component"] = component; - preparedArgs.internal["definition"] = definition; - preparedArgs.internal["shadow"] = shadow; - vm.beginCacheGroup(); var layout = manager.layoutFor(definition, component, vm.env); - var callerScope = vm.scope(); var selfRef = manager.getSelf(component); + vm.beginCacheGroup(); + vm.stack().pushSimpleBlock(); vm.pushRootScope(selfRef, layout.symbols); - vm.invokeLayout({ templates: templates, args: preparedArgs, shadow: shadow, layout: layout, callerScope: callerScope }); - vm.env.didCreate(component, manager); - vm.updateWith(new UpdateComponentOpcode({ name: definition.name, component: component, manager: manager, args: preparedArgs, dynamicScope: dynamicScope })); + vm.invokeLayout(args, layout, templates, callerScope, component, manager, shadow); + vm.updateWith(new UpdateComponentOpcode(definition.name, component, manager, args, dynamicScope)); }; return OpenComponentOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.OpenComponentOpcode = OpenComponentOpcode; var UpdateComponentOpcode = (function (_UpdatingOpcode) { - _inherits(UpdateComponentOpcode, _UpdatingOpcode); + babelHelpers.inherits(UpdateComponentOpcode, _UpdatingOpcode); - function UpdateComponentOpcode(_ref4) { - var name = _ref4.name; - var component = _ref4.component; - var manager = _ref4.manager; - var args = _ref4.args; - var dynamicScope = _ref4.dynamicScope; - - _classCallCheck(this, UpdateComponentOpcode); - + function UpdateComponentOpcode(name, component, manager, args, dynamicScope) { _UpdatingOpcode.call(this); - this.type = "update-component"; - var tag = undefined; - var componentTag = manager.getTag(component); - if (componentTag) { - tag = this.tag = _glimmerReference.combine([args.tag, componentTag]); - } else { - tag = this.tag = args.tag; - } this.name = name; this.component = component; this.manager = manager; this.args = args; this.dynamicScope = dynamicScope; - this.lastUpdated = tag.value(); + 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 tag = this.tag; var args = this.args; var dynamicScope = this.dynamicScope; - var lastUpdated = this.lastUpdated; - if (!tag.validate(lastUpdated)) { - manager.update(component, args, dynamicScope); - vm.env.didUpdate(component, manager); - this.lastUpdated = tag.value(); - } + manager.update(component, args, dynamicScope); }; UpdateComponentOpcode.prototype.toJSON = function toJSON() { return { guid: this._guid, @@ -16207,33 +16765,24 @@ })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.UpdateComponentOpcode = UpdateComponentOpcode; var DidCreateElementOpcode = (function (_Opcode4) { - _inherits(DidCreateElementOpcode, _Opcode4); + babelHelpers.inherits(DidCreateElementOpcode, _Opcode4); function DidCreateElementOpcode() { - _classCallCheck(this, DidCreateElementOpcode); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _Opcode4.call.apply(_Opcode4, [this].concat(args)); + _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 args = vm.frame.getArgs(); - var internal = args.internal; - var definition = internal['definition']; - var manager = definition.manager; - var component = internal['component']; - manager.didCreateElement(component, vm.stack().element, vm.stack().elementOperations); + 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, @@ -16246,31 +16795,27 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.DidCreateElementOpcode = DidCreateElementOpcode; var ShadowAttributesOpcode = (function (_Opcode5) { - _inherits(ShadowAttributesOpcode, _Opcode5); + babelHelpers.inherits(ShadowAttributesOpcode, _Opcode5); function ShadowAttributesOpcode() { - _classCallCheck(this, ShadowAttributesOpcode); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _Opcode5.call.apply(_Opcode5, [this].concat(args)); + _Opcode5.apply(this, arguments); this.type = "shadow-attributes"; } ShadowAttributesOpcode.prototype.evaluate = function evaluate(vm) { - var args = vm.frame.getArgs(); - var internal = args.internal; - var shadow = internal['shadow']; - var named = args.named; + 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().setAttribute(name, named.get(name), false); + vm.stack().setDynamicAttribute(name, named.get(name), false); }); }; ShadowAttributesOpcode.prototype.toJSON = function toJSON() { return { @@ -16283,21 +16828,63 @@ return ShadowAttributesOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.ShadowAttributesOpcode = ShadowAttributesOpcode; - var CloseComponentOpcode = (function (_Opcode6) { - _inherits(CloseComponentOpcode, _Opcode6); + var DidRenderLayoutOpcode = (function (_Opcode6) { + babelHelpers.inherits(DidRenderLayoutOpcode, _Opcode6); - function CloseComponentOpcode() { - _classCallCheck(this, CloseComponentOpcode); + function DidRenderLayoutOpcode() { + _Opcode6.apply(this, arguments); + this.type = "did-render-layout"; + } - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } + 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)); + }; - _Opcode6.call.apply(_Opcode6, [this].concat(args)); + 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(); @@ -16308,24 +16895,18 @@ return CloseComponentOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.CloseComponentOpcode = CloseComponentOpcode; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBVUEsbUNBQUE7a0JBQUEsbUNBQUE7O0FBS0UsaUJBTEYsbUNBQUEsQ0FLYyxJQUFnQyxFQUFBO2dCQUE5QixJQUFJLEdBQU4sSUFBZ0MsQ0FBOUIsSUFBSTs7a0NBTHBCLG1DQUFBOztBQU1JLDhCQUFPLENBQUM7QUFMSCxnQkFBQSxDQUFBLElBQUksR0FBRyxrQ0FBa0MsQ0FBQztBQU0vQyxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBUkgsMkNBQUEsV0FVRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUMsZ0JBQUksS0FBSyxHQUFHLGtCQWQ0QixPQUFPLENBYzNCLGFBQWEsQ0FBQyxHQUFHLFNBQVMsR0FBRyxzQkFkNUMsY0FBYyxDQWNpRCxhQUFhLENBQUMsQ0FBQztBQUNuRixnQkFBSSxVQUFVLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFOUQsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2pELGNBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLGdCQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUV6QyxnQkFBSSxLQUFLLEVBQUU7QUFDVCxrQkFBRSxDQUFDLFVBQVUsQ0FBQyx3Q0E3QlgsTUFBTSxDQTZCZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNsQztTQUNGOztlQXRCSCxtQ0FBQTtpQ0FWUyxNQUFNOzs7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QTs7QUFBQSxpQkFBQSxvQkFBQSxHQUFBO2tDQUFBLG9CQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUEwQyx3REFBQSxJQUFBLEVBQUEsQ0FBTTtBQUN2QyxnQkFBQSxDQUFBLElBQUksR0FBRyxpQkFBaUIsQ0FBQztTQU9qQzs7QUFSRCw0QkFBQSxXQUdFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDZCxjQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDckIsY0FBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDdkI7O2VBUEgsb0JBQUE7aUNBN01TLE1BQU0iLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3Bjb2RlLCBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IENvbXBpbGVkQXJncywgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgVGVtcGxhdGVzIH0gZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSW50ZXJuZWRTdHJpbmcsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDYWNoZSwgUmV2aXNpb24sIGNvbWJpbmUsIGlzQ29uc3QgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5cbmV4cG9ydCBjbGFzcyBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXQtZHluYW1pYy1jb21wb25lbnQtZGVmaW5pdGlvblwiO1xuXG4gIHByaXZhdGUgYXJnczogQ29tcGlsZWRBcmdzO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncyB9OiB7IGFyZ3M6IENvbXBpbGVkQXJncyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGRlZmluaXRpb25SZWYgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgbGV0IGNhY2hlID0gaXNDb25zdChkZWZpbml0aW9uUmVmKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShkZWZpbml0aW9uUmVmKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogZGVmaW5pdGlvblJlZi52YWx1ZSgpO1xuXG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pLndpdGhJbnRlcm5hbCgpO1xuICAgIHZtLmZyYW1lLnNldEFyZ3MoYXJncyk7XG4gICAgYXJncy5pbnRlcm5hbFtcImRlZmluaXRpb25cIl0gPSBkZWZpbml0aW9uO1xuXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXRDb21wb25lbnREZWZpbml0aW9uT3B0aW9ucyB7XG4gIGFyZ3M6IENvbXBpbGVkQXJncztcbiAgZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xufVxuXG5leHBvcnQgY2xhc3MgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXQtY29tcG9uZW50LWRlZmluaXRpb25cIjtcbiAgcHJpdmF0ZSBhcmdzOiBDb21waWxlZEFyZ3M7XG4gIHByaXZhdGUgZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgZGVmaW5pdGlvbiB9OiBQdXRDb21wb25lbnREZWZpbml0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pLndpdGhJbnRlcm5hbCgpO1xuICAgIGFyZ3MuaW50ZXJuYWxbXCJkZWZpbml0aW9uXCJdID0gdGhpcy5kZWZpbml0aW9uO1xuICAgIHZtLmZyYW1lLnNldEFyZ3MoYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuQ29tcG9uZW50T3B0aW9ucyB7XG4gIHNoYWRvdzogSW50ZXJuZWRTdHJpbmdbXTtcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZXM7XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm9wZW4tY29tcG9uZW50XCI7XG4gIHB1YmxpYyBkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT47XG4gIHB1YmxpYyBhcmdzOiBDb21waWxlZEFyZ3M7XG4gIHB1YmxpYyBzaGFkb3c6IEludGVybmVkU3RyaW5nW107XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFRlbXBsYXRlcztcblxuICBjb25zdHJ1Y3Rvcih7IHNoYWRvdywgdGVtcGxhdGVzIH06IE9wZW5Db21wb25lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNoYWRvdyA9IHNoYWRvdztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IHNoYWRvdywgdGVtcGxhdGVzIH0gPSB0aGlzO1xuICAgIGxldCBhcmdzID0gdm0uZnJhbWUuZ2V0QXJncygpO1xuICAgIGxldCBkZWZpbml0aW9uID0gYXJncy5pbnRlcm5hbFtcImRlZmluaXRpb25cIl0gYXMgQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gICAgdm0ucHVzaER5bmFtaWNTY29wZSgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcblxuICAgIGxldCBtYW5hZ2VyID0gZGVmaW5pdGlvbi5tYW5hZ2VyO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSB0ZW1wbGF0ZXMgJiYgISF0ZW1wbGF0ZXMuZGVmYXVsdDsgLy8gVE9ETyBDbGVhbnVwP1xuICAgIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZShkZWZpbml0aW9uLCBwcmVwYXJlZEFyZ3MsIGR5bmFtaWNTY29wZSwgaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbiAgICBwcmVwYXJlZEFyZ3MuaW50ZXJuYWxbXCJjb21wb25lbnRcIl0gPSBjb21wb25lbnQ7XG4gICAgcHJlcGFyZWRBcmdzLmludGVybmFsW1wiZGVmaW5pdGlvblwiXSA9IGRlZmluaXRpb247XG4gICAgcHJlcGFyZWRBcmdzLmludGVybmFsW1wic2hhZG93XCJdID0gc2hhZG93O1xuXG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgbGV0IGxheW91dCA9IG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KTtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB2bS5zY29wZSgpO1xuICAgIGxldCBzZWxmUmVmID0gbWFuYWdlci5nZXRTZWxmKGNvbXBvbmVudCk7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzZWxmUmVmLCBsYXlvdXQuc3ltYm9scyk7XG4gICAgdm0uaW52b2tlTGF5b3V0KHsgdGVtcGxhdGVzLCBhcmdzOiBwcmVwYXJlZEFyZ3MsIHNoYWRvdywgbGF5b3V0LCBjYWxsZXJTY29wZSB9KTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoeyBuYW1lOiBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgYXJnczogcHJlcGFyZWRBcmdzLCBkeW5hbWljU2NvcGUgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJ1cGRhdGUtY29tcG9uZW50XCI7XG5cbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY29tcG9uZW50OiBDb21wb25lbnQ7XG4gIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxPcGFxdWU+O1xuICBwcml2YXRlIGFyZ3M6IEV2YWx1YXRlZEFyZ3M7XG4gIHByaXZhdGUgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByaXZhdGUgbGFzdFVwZGF0ZWQ6IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHsgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBhcmdzLCBkeW5hbWljU2NvcGUgfSA6IHsgbmFtZTogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxhbnk+LCBhcmdzOiBFdmFsdWF0ZWRBcmdzLCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCB0YWc7XG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0YWcgPSB0aGlzLnRhZyA9IGNvbWJpbmUoW2FyZ3MudGFnLCBjb21wb25lbnRUYWddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFnID0gdGhpcy50YWcgPSBhcmdzLnRhZztcbiAgICB9XG5cbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgdGFnLCBhcmdzLCBkeW5hbWljU2NvcGUsIGxhc3RVcGRhdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF0YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGFyZ3MsIGR5bmFtaWNTY29wZSk7XG4gICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgICB0aGlzLmxhc3RVcGRhdGVkID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkQ3JlYXRlRWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtY3JlYXRlLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgYXJncyA9IHZtLmZyYW1lLmdldEFyZ3MoKTtcbiAgICBsZXQgaW50ZXJuYWwgPSBhcmdzLmludGVybmFsO1xuICAgIGxldCBkZWZpbml0aW9uID0gaW50ZXJuYWxbJ2RlZmluaXRpb24nXSBhcyBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT47XG4gICAgbGV0IG1hbmFnZXIgPSBkZWZpbml0aW9uLm1hbmFnZXI7XG4gICAgbGV0IGNvbXBvbmVudDogQ29tcG9uZW50ID0gaW50ZXJuYWxbJ2NvbXBvbmVudCddO1xuXG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uc3RhY2soKS5lbGVtZW50LCB2bS5zdGFjaygpLmVsZW1lbnRPcGVyYXRpb25zKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRBUkdTXCJdXG4gICAgfTtcbiAgfVxufVxuXG4vLyBTbG93IHBhdGggZm9yIG5vbi1zcGVjaWFsaXplZCBjb21wb25lbnQgaW52b2NhdGlvbnMuIFVzZXMgYW4gaW50ZXJuYWxcbi8vIG5hbWVkIGxvb2t1cCBvbiB0aGUgYXJncy5cbmV4cG9ydCBjbGFzcyBTaGFkb3dBdHRyaWJ1dGVzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInNoYWRvdy1hdHRyaWJ1dGVzXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGFyZ3MgPSB2bS5mcmFtZS5nZXRBcmdzKCk7XG4gICAgbGV0IGludGVybmFsID0gYXJncy5pbnRlcm5hbDtcbiAgICBsZXQgc2hhZG93OiBJbnRlcm5lZFN0cmluZ1tdID0gaW50ZXJuYWxbJ3NoYWRvdyddIGFzIEludGVybmVkU3RyaW5nW107XG5cbiAgICBsZXQgbmFtZWQgPSBhcmdzLm5hbWVkO1xuXG4gICAgaWYgKCFzaGFkb3cpIHJldHVybjtcblxuICAgIHNoYWRvdy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgdm0uc3RhY2soKS5zZXRBdHRyaWJ1dGUobmFtZSwgbmFtZWQuZ2V0KG5hbWUpLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkQVJHU1wiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsb3NlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImNsb3NlLWNvbXBvbmVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcFNjb3BlKCk7XG4gICAgdm0ucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgdm0uY29tbWl0Q2FjaGVHcm91cCgpO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBV00sbUNBQTJDOzhCQUEzQyxtQ0FBMkM7O0FBQWpELGlCQUFNLG1DQUEyQyxHQUFqRDtBQ05RLGdDQUFTLFNBQVMsQ0FBQyxDQUFDO0FET25CLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtDQUFrQyxDQUFDO1NBYWxEOztBQWRLLDJDQUEyQyxXQUcvQyxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdEMsZ0JBQUksS0FBSyxHQUFHLGtCQVIrQyxPQUFPLENBUTlDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxzQkFSWCxjQUFjLENBUWdCLFNBQVMsQ0FBQyxDQUFDO0FBQzNFLGdCQUFJLFVBQVUsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUUxRCxjQUFFLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRTVDLGdCQUFJLEtBQUssRUFBRTtBQUNULGtCQUFFLENBQUMsVUFBVSxDQUFDLHdDQXJCWCxNQUFNLENBcUJnQixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7O2VBYkcsbUNBQTJDO2lDQVh4QyxNQUFNOzs7O1FBMkJULDRCQUFvQzs4QkFBcEMsNEJBQW9DOztBQUd4QyxpQkFISSw0QkFBb0MsQ0FHcEIsVUFBMEMsRUFBQTtBQUM1RCwrQkFBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxVQUFVLEdBQVYsVUFBVSxDQUFnQztBQUZ2RCxnQkFBQSxDQUFBLElBQUksR0FBRywwQkFBMEIsQ0FBQztTQUl4Qzs7QUFMRyxvQ0FBb0MsV0FPeEMsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNB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RyxvQkFBNEI7aUNBbE16QixNQUFNIiwiZmlsZSI6ImNvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyLCBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi8uLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IFRlbXBsYXRlcyB9IGZyb20gJy4uLy4uL3N5bnRheC9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNTY29wZSB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCBCb3VuZHMgZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIGNvbWJpbmUsIGlzQ29uc3QgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBGSVhNRSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXQtZHluYW1pYy1jb21wb25lbnQtZGVmaW5pdGlvblwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgbGV0IGNhY2hlID0gaXNDb25zdChyZWZlcmVuY2UpID8gdW5kZWZpbmVkIDogbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBjYWNoZSA/IGNhY2hlLnBlZWsoKSA6IHJlZmVyZW5jZS52YWx1ZSgpO1xuXG4gICAgdm0uZnJhbWUuc2V0Q29tcG9uZW50RGVmaW5pdGlvbihkZWZpbml0aW9uKTtcblxuICAgIGlmIChjYWNoZSkge1xuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1jb21wb25lbnQtZGVmaW5pdGlvblwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxDb21wb25lbnQ+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmZyYW1lLnNldENvbXBvbmVudERlZmluaXRpb24odGhpcy5kZWZpbml0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbkNvbXBvbmVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJvcGVuLWNvbXBvbmVudFwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXJnczogQ29tcGlsZWRBcmdzLFxuICAgIHByaXZhdGUgc2hhZG93OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHRlbXBsYXRlczogVGVtcGxhdGVzXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgeyBhcmdzOiByYXdBcmdzLCBzaGFkb3csIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGxldCBkZWZpbml0aW9uID0gdm0uZnJhbWUuZ2V0Q29tcG9uZW50RGVmaW5pdGlvbigpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gdm0uc2NvcGUoKTtcblxuICAgIGxldCBtYW5hZ2VyID0gZGVmaW5pdGlvbi5tYW5hZ2VyO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSB0ZW1wbGF0ZXMgJiYgISF0ZW1wbGF0ZXMuZGVmYXVsdDsgLy8gVE9ETyBDbGVhbnVwP1xuICAgIGxldCBhcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCByYXdBcmdzLmV2YWx1YXRlKHZtKSk7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksIGhhc0RlZmF1bHRCbG9jayk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG5cbiAgICBsZXQgbGF5b3V0ID0gbWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpO1xuICAgIGxldCBzZWxmUmVmID0gbWFuYWdlci5nZXRTZWxmKGNvbXBvbmVudCk7XG5cbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5zdGFjaygpLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgIHZtLnB1c2hSb290U2NvcGUoc2VsZlJlZiwgbGF5b3V0LnN5bWJvbHMpO1xuICAgIHZtLmludm9rZUxheW91dChhcmdzLCBsYXlvdXQsIHRlbXBsYXRlcywgY2FsbGVyU2NvcGUsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgYXJncywgZHluYW1pY1Njb3BlKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1jb21wb25lbnRcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FyZ3MudGFnLCBjb21wb25lbnRUYWddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWcgPSBhcmdzLnRhZztcbiAgICB9XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgYXJncywgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBhcmdzLCBkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkQ3JlYXRlRWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkaWQtY3JlYXRlLWVsZW1lbnRcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgbWFuYWdlciA9IHZtLmZyYW1lLmdldE1hbmFnZXIoKTtcbiAgICBsZXQgY29tcG9uZW50ID0gdm0uZnJhbWUuZ2V0Q29tcG9uZW50KCk7XG5cbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5zdGFjaygpLmNvbnN0cnVjdGluZywgdm0uc3RhY2soKS5vcGVyYXRpb25zKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRBUkdTXCJdXG4gICAgfTtcbiAgfVxufVxuXG4vLyBTbG93IHBhdGggZm9yIG5vbi1zcGVjaWFsaXplZCBjb21wb25lbnQgaW52b2NhdGlvbnMuIFVzZXMgYW4gaW50ZXJuYWxcbi8vIG5hbWVkIGxvb2t1cCBvbiB0aGUgYXJncy5cbmV4cG9ydCBjbGFzcyBTaGFkb3dBdHRyaWJ1dGVzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInNoYWRvdy1hdHRyaWJ1dGVzXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHNoYWRvdyA9IHZtLmZyYW1lLmdldFNoYWRvdygpO1xuXG4gICAgaWYgKCFzaGFkb3cpIHJldHVybjtcblxuICAgIGxldCB7IG5hbWVkIH0gPSB2bS5mcmFtZS5nZXRBcmdzKCk7XG5cbiAgICBzaGFkb3cuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIHZtLnN0YWNrKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCBuYW1lZC5nZXQobmFtZSkgYXMgRklYTUU8UGF0aFJlZmVyZW5jZTxzdHJpbmc+LCAnc2V0RHluYW1pY0F0dHJpYnV0ZSBzaG91bGQgdGFrZSBhbiBSZWY8T3BhcXVlPiBpbnN0ZWFkJz4sIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRBUkdTXCJdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkUmVuZGVyTGF5b3V0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC1yZW5kZXItbGF5b3V0XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IG1hbmFnZXIgPSB2bS5mcmFtZS5nZXRNYW5hZ2VyKCk7XG4gICAgbGV0IGNvbXBvbmVudCA9IHZtLmZyYW1lLmdldENvbXBvbmVudCgpO1xuICAgIGxldCBib3VuZHMgPSB2bS5zdGFjaygpLnBvcEJsb2NrKCk7XG5cbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG5cbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgcHVibGljIHRhZyA9IENPTlNUQU5UX1RBRztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBwcml2YXRlIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIHByaXZhdGUgYm91bmRzOiBCb3VuZHNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG5cbiAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsb3NlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImNsb3NlLWNvbXBvbmVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcFNjb3BlKCk7XG4gICAgdm0ucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgdm0uY29tbWl0Q2FjaGVHcm91cCgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGNvZGUsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIGNvbWJpbmUsIGlzQ29uc3QgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5leHBvcnQgY2xhc3MgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInB1dC1keW5hbWljLWNvbXBvbmVudC1kZWZpbml0aW9uXCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICAgIHZtLmZyYW1lLnNldENvbXBvbmVudERlZmluaXRpb24oZGVmaW5pdGlvbik7XG4gICAgICAgIGlmIChjYWNoZSkge1xuICAgICAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInB1dC1jb21wb25lbnQtZGVmaW5pdGlvblwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5mcmFtZS5zZXRDb21wb25lbnREZWZpbml0aW9uKHRoaXMuZGVmaW5pdGlvbik7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wZW5Db21wb25lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKGFyZ3MsIHNoYWRvdywgdGVtcGxhdGVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgICAgIHRoaXMuc2hhZG93ID0gc2hhZG93O1xuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgICAgICAgdGhpcy50eXBlID0gXCJvcGVuLWNvbXBvbmVudFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBhcmdzOiByYXdBcmdzLCBzaGFkb3csIHRlbXBsYXRlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGRlZmluaXRpb24gPSB2bS5mcmFtZS5nZXRDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGxldCBjYWxsZXJTY29wZSA9IHZtLnNjb3BlKCk7XG4gICAgICAgIGxldCBtYW5hZ2VyID0gZGVmaW5pdGlvbi5tYW5hZ2VyO1xuICAgICAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gdGVtcGxhdGVzICYmICEhdGVtcGxhdGVzLmRlZmF1bHQ7IC8vIFRPRE8gQ2xlYW51cD9cbiAgICAgICAgbGV0IGFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIHJhd0FyZ3MuZXZhbHVhdGUodm0pKTtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksIGhhc0RlZmF1bHRCbG9jayk7XG4gICAgICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChkZXN0cnVjdG9yKVxuICAgICAgICAgICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gICAgICAgIGxldCBsYXlvdXQgPSBtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudik7XG4gICAgICAgIGxldCBzZWxmUmVmID0gbWFuYWdlci5nZXRTZWxmKGNvbXBvbmVudCk7XG4gICAgICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgICAgICB2bS5zdGFjaygpLnB1c2hTaW1wbGVCbG9jaygpO1xuICAgICAgICB2bS5wdXNoUm9vdFNjb3BlKHNlbGZSZWYsIGxheW91dC5zeW1ib2xzKTtcbiAgICAgICAgdm0uaW52b2tlTGF5b3V0KGFyZ3MsIGxheW91dCwgdGVtcGxhdGVzLCBjYWxsZXJTY29wZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBzaGFkb3cpO1xuICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGFyZ3MsIGR5bmFtaWNTY29wZSkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBhcmdzLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInVwZGF0ZS1jb21wb25lbnRcIjtcbiAgICAgICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gY29tYmluZShbYXJncy50YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBhcmdzLnRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGFyZ3MsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBhcmdzLCBkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZENyZWF0ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImRpZC1jcmVhdGUtZWxlbWVudFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgbWFuYWdlciA9IHZtLmZyYW1lLmdldE1hbmFnZXIoKTtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHZtLmZyYW1lLmdldENvbXBvbmVudCgpO1xuICAgICAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5zdGFjaygpLmNvbnN0cnVjdGluZywgdm0uc3RhY2soKS5vcGVyYXRpb25zKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtcIiRBUkdTXCJdXG4gICAgICAgIH07XG4gICAgfVxufVxuLy8gU2xvdyBwYXRoIGZvciBub24tc3BlY2lhbGl6ZWQgY29tcG9uZW50IGludm9jYXRpb25zLiBVc2VzIGFuIGludGVybmFsXG4vLyBuYW1lZCBsb29rdXAgb24gdGhlIGFyZ3MuXG5leHBvcnQgY2xhc3MgU2hhZG93QXR0cmlidXRlc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwic2hhZG93LWF0dHJpYnV0ZXNcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHNoYWRvdyA9IHZtLmZyYW1lLmdldFNoYWRvdygpO1xuICAgICAgICBpZiAoIXNoYWRvdylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHsgbmFtZWQgfSA9IHZtLmZyYW1lLmdldEFyZ3MoKTtcbiAgICAgICAgc2hhZG93LmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICB2bS5zdGFjaygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgbmFtZWQuZ2V0KG5hbWUpLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW1wiJEFSR1NcIl1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkUmVuZGVyTGF5b3V0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJkaWQtcmVuZGVyLWxheW91dFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgbWFuYWdlciA9IHZtLmZyYW1lLmdldE1hbmFnZXIoKTtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHZtLmZyYW1lLmdldENvbXBvbmVudCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gdm0uc3RhY2soKS5wb3BCbG9jaygpO1xuICAgICAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZGlkLXVwZGF0ZS1sYXlvdXRcIjtcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2xvc2VDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImNsb3NlLWNvbXBvbmVudFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5wb3BTY29wZSgpO1xuICAgICAgICB2bS5wb3BEeW5hbWljU2NvcGUoKTtcbiAgICAgICAgdm0uY29tbWl0Q2FjaGVHcm91cCgpO1xuICAgIH1cbn1cbiJdfQ== 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; exports.normalizeTrustedValue = normalizeTrustedValue; exports.normalizeValue = normalizeValue; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - function isEmpty(value) { return value === null || value === undefined || typeof value['toString'] !== 'function'; } function normalizeTextValue(value) { @@ -16363,15 +16944,13 @@ } return String(value); } var AppendOpcode = (function (_Opcode) { - _inherits(AppendOpcode, _Opcode); + babelHelpers.inherits(AppendOpcode, _Opcode); function AppendOpcode() { - _classCallCheck(this, AppendOpcode); - _Opcode.apply(this, arguments); } AppendOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.frame.getOperand(); @@ -16383,11 +16962,11 @@ } else { cache = new _glimmerReference.ReferenceCache(normalized); value = cache.peek(); } var stack = vm.stack(); - var upsert = this.insert(stack.dom, stack, value); + 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)); } @@ -16405,18 +16984,17 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.AppendOpcode = AppendOpcode; var GuardedAppendOpcode = (function (_AppendOpcode) { - _inherits(GuardedAppendOpcode, _AppendOpcode); + babelHelpers.inherits(GuardedAppendOpcode, _AppendOpcode); - function GuardedAppendOpcode(expression) { - _classCallCheck(this, GuardedAppendOpcode); - + function GuardedAppendOpcode(expression, symbolTable) { _AppendOpcode.call(this); - this.deopted = null; this.expression = expression; + this.symbolTable = symbolTable; + this.deopted = null; } GuardedAppendOpcode.prototype.evaluate = function evaluate(vm) { if (this.deopted) { vm.pushEvalFrame(this.deopted); @@ -16476,18 +17054,18 @@ // 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, null, env); + var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, this.symbolTable, env); dsl.block({ templates: null }, function (dsl, BEGIN, END) { dsl.putValue(_this.expression); dsl.test(IsComponentDefinitionReference.create); dsl.jumpUnless('VALUE'); dsl.label('COMPONENT'); - dsl.putDynamicComponentDefinition(_glimmerRuntimeLibSyntaxCore.Args.empty()); - dsl.openComponent(); + dsl.putDynamicComponentDefinition(); + dsl.openComponent(_glimmerRuntimeLibSyntaxCore.Args.empty()); dsl.closeComponent(); dsl.jump(END); dsl.label('VALUE'); dsl.append(new _this.AppendOpcode()); }); @@ -16527,15 +17105,13 @@ })(AppendOpcode); exports.GuardedAppendOpcode = GuardedAppendOpcode; var IsComponentDefinitionReference = (function (_ConditionalReference) { - _inherits(IsComponentDefinitionReference, _ConditionalReference); + babelHelpers.inherits(IsComponentDefinitionReference, _ConditionalReference); function IsComponentDefinitionReference() { - _classCallCheck(this, IsComponentDefinitionReference); - _ConditionalReference.apply(this, arguments); } IsComponentDefinitionReference.create = function create(inner) { return new IsComponentDefinitionReference(inner); @@ -16547,15 +17123,13 @@ return IsComponentDefinitionReference; })(_glimmerRuntimeLibReferences.ConditionalReference); var UpdateOpcode = (function (_UpdatingOpcode) { - _inherits(UpdateOpcode, _UpdatingOpcode); + babelHelpers.inherits(UpdateOpcode, _UpdatingOpcode); function UpdateOpcode(cache, bounds, upsert) { - _classCallCheck(this, UpdateOpcode); - _UpdatingOpcode.call(this); this.cache = cache; this.bounds = bounds; this.upsert = upsert; this.tag = cache.tag; @@ -16568,11 +17142,11 @@ 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(dom, cursor, value); + upsert = this.upsert = this.insert(vm.env.getAppendOperations(), cursor, value); } bounds.update(upsert.bounds); } }; @@ -16590,22 +17164,19 @@ return UpdateOpcode; })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); var GuardedUpdateOpcode = (function (_UpdateOpcode) { - _inherits(GuardedUpdateOpcode, _UpdateOpcode); + babelHelpers.inherits(GuardedUpdateOpcode, _UpdateOpcode); function GuardedUpdateOpcode(reference, cache, bounds, upsert, appendOpcode, state) { - _classCallCheck(this, GuardedUpdateOpcode); - _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); - this.state.block = null; } GuardedUpdateOpcode.prototype.evaluate = function evaluate(vm) { if (this.deopted) { vm.evaluateOpcode(this.deopted); @@ -16653,14 +17224,14 @@ var state = this.state; var appendOps = appendOpcode.deopt(vm.env); var enter = appendOps.head(); var ops = enter.slice; - var tracker = state.block = new _glimmerRuntimeLibBuilder.BlockTracker(bounds.parentElement()); + var tracker = new _glimmerRuntimeLibBuilder.UpdatableBlockTracker(bounds.parentElement()); tracker.newBounds(this.bounds); var children = new _glimmerUtil.LinkedList(); - var deopted = this.deopted = new _glimmerRuntimeLibVmUpdate.TryOpcode({ ops: ops, state: state, children: children }); + 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 @@ -16696,20 +17267,14 @@ })(UpdateOpcode); exports.GuardedUpdateOpcode = GuardedUpdateOpcode; var OptimizedCautiousAppendOpcode = (function (_AppendOpcode2) { - _inherits(OptimizedCautiousAppendOpcode, _AppendOpcode2); + babelHelpers.inherits(OptimizedCautiousAppendOpcode, _AppendOpcode2); function OptimizedCautiousAppendOpcode() { - _classCallCheck(this, OptimizedCautiousAppendOpcode); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _AppendOpcode2.call.apply(_AppendOpcode2, [this].concat(args)); + _AppendOpcode2.apply(this, arguments); this.type = 'optimized-cautious-append'; } OptimizedCautiousAppendOpcode.prototype.normalize = function normalize(reference) { return _glimmerReference.map(reference, normalizeValue); @@ -16727,20 +17292,14 @@ })(AppendOpcode); exports.OptimizedCautiousAppendOpcode = OptimizedCautiousAppendOpcode; var OptimizedCautiousUpdateOpcode = (function (_UpdateOpcode2) { - _inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode2); + babelHelpers.inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode2); function OptimizedCautiousUpdateOpcode() { - _classCallCheck(this, OptimizedCautiousUpdateOpcode); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _UpdateOpcode2.call.apply(_UpdateOpcode2, [this].concat(args)); + _UpdateOpcode2.apply(this, arguments); this.type = 'optimized-cautious-update'; } OptimizedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value); @@ -16748,20 +17307,14 @@ return OptimizedCautiousUpdateOpcode; })(UpdateOpcode); var GuardedCautiousAppendOpcode = (function (_GuardedAppendOpcode) { - _inherits(GuardedCautiousAppendOpcode, _GuardedAppendOpcode); + babelHelpers.inherits(GuardedCautiousAppendOpcode, _GuardedAppendOpcode); function GuardedCautiousAppendOpcode() { - _classCallCheck(this, GuardedCautiousAppendOpcode); - - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - _GuardedAppendOpcode.call.apply(_GuardedAppendOpcode, [this].concat(args)); + _GuardedAppendOpcode.apply(this, arguments); this.type = 'guarded-cautious-append'; this.AppendOpcode = OptimizedCautiousAppendOpcode; } GuardedCautiousAppendOpcode.prototype.normalize = function normalize(reference) { @@ -16780,20 +17333,14 @@ })(GuardedAppendOpcode); exports.GuardedCautiousAppendOpcode = GuardedCautiousAppendOpcode; var GuardedCautiousUpdateOpcode = (function (_GuardedUpdateOpcode) { - _inherits(GuardedCautiousUpdateOpcode, _GuardedUpdateOpcode); + babelHelpers.inherits(GuardedCautiousUpdateOpcode, _GuardedUpdateOpcode); function GuardedCautiousUpdateOpcode() { - _classCallCheck(this, GuardedCautiousUpdateOpcode); - - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - _GuardedUpdateOpcode.call.apply(_GuardedUpdateOpcode, [this].concat(args)); + _GuardedUpdateOpcode.apply(this, arguments); this.type = 'guarded-cautious-update'; } GuardedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return _glimmerRuntimeLibUpsert.cautiousInsert(dom, cursor, value); @@ -16801,20 +17348,14 @@ return GuardedCautiousUpdateOpcode; })(GuardedUpdateOpcode); var OptimizedTrustingAppendOpcode = (function (_AppendOpcode3) { - _inherits(OptimizedTrustingAppendOpcode, _AppendOpcode3); + babelHelpers.inherits(OptimizedTrustingAppendOpcode, _AppendOpcode3); function OptimizedTrustingAppendOpcode() { - _classCallCheck(this, OptimizedTrustingAppendOpcode); - - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - _AppendOpcode3.call.apply(_AppendOpcode3, [this].concat(args)); + _AppendOpcode3.apply(this, arguments); this.type = 'optimized-trusting-append'; } OptimizedTrustingAppendOpcode.prototype.normalize = function normalize(reference) { return _glimmerReference.map(reference, normalizeTrustedValue); @@ -16832,20 +17373,14 @@ })(AppendOpcode); exports.OptimizedTrustingAppendOpcode = OptimizedTrustingAppendOpcode; var OptimizedTrustingUpdateOpcode = (function (_UpdateOpcode3) { - _inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode3); + babelHelpers.inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode3); function OptimizedTrustingUpdateOpcode() { - _classCallCheck(this, OptimizedTrustingUpdateOpcode); - - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - _UpdateOpcode3.call.apply(_UpdateOpcode3, [this].concat(args)); + _UpdateOpcode3.apply(this, arguments); this.type = 'optimized-trusting-update'; } OptimizedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return _glimmerRuntimeLibUpsert.trustingInsert(dom, cursor, value); @@ -16853,20 +17388,14 @@ return OptimizedTrustingUpdateOpcode; })(UpdateOpcode); var GuardedTrustingAppendOpcode = (function (_GuardedAppendOpcode2) { - _inherits(GuardedTrustingAppendOpcode, _GuardedAppendOpcode2); + babelHelpers.inherits(GuardedTrustingAppendOpcode, _GuardedAppendOpcode2); function GuardedTrustingAppendOpcode() { - _classCallCheck(this, GuardedTrustingAppendOpcode); - - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - _GuardedAppendOpcode2.call.apply(_GuardedAppendOpcode2, [this].concat(args)); + _GuardedAppendOpcode2.apply(this, arguments); this.type = 'guarded-trusting-append'; this.AppendOpcode = OptimizedTrustingAppendOpcode; } GuardedTrustingAppendOpcode.prototype.normalize = function normalize(reference) { @@ -16885,48 +17414,34 @@ })(GuardedAppendOpcode); exports.GuardedTrustingAppendOpcode = GuardedTrustingAppendOpcode; var GuardedTrustingUpdateOpcode = (function (_GuardedUpdateOpcode2) { - _inherits(GuardedTrustingUpdateOpcode, _GuardedUpdateOpcode2); + babelHelpers.inherits(GuardedTrustingUpdateOpcode, _GuardedUpdateOpcode2); function GuardedTrustingUpdateOpcode() { - _classCallCheck(this, GuardedTrustingUpdateOpcode); - - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - _GuardedUpdateOpcode2.call.apply(_GuardedUpdateOpcode2, [this].concat(args)); + _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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUE4QkEsYUFBQSxPQUFBLENBQWlCLEtBQWEsRUFBQTtBQUM1QixlQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxVQUFVLENBQUM7S0FDekY7O0FBRUQsYUFBQSxrQkFBQSxDQUFtQyxLQUFhLEVBQUE7QUFDOUMsWUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsbUJBQU8sRUFBRSxDQUFDO1NBQ1g7QUFDRCxlQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0Qjs7QUFFRCxhQUFBLHFCQUFBLENBQXNDLEtBQWEsRUFBQTtBQUNqRCxZQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixtQkFBTyxFQUFFLENBQUM7U0FDWDtBQUNELFlBQUkseUJBdENKLFFBQVEsQ0FzQ0ssS0FBSyxDQUFDLEVBQUU7QUFDbkIsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7QUFDRCxZQUFJLHlCQTNDSixZQUFZLENBMkNLLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLG1CQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2QjtBQUNELFlBQUkseUJBN0NKLE1BQU0sQ0E2Q0ssS0FBSyxDQUFDLEVBQUU7QUFDakIsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7QUFDRCxlQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0Qjs7QUFFRCxhQUFBLGNBQUEsQ0FBK0IsS0FBYSxFQUFBO0FBQzFDLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBSSx5QkF0REosUUFBUSxDQXNESyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNELFlBQUkseUJBM0RKLFlBQVksQ0EyREssS0FBSyxDQUFDLElBQUkseUJBMUQzQixNQUFNLENBMEQ0QixLQUFLLENBQUMsRUFBRTtBQUN4QyxtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNELGVBQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCOztRQUVELFlBQUE7a0JBQUEsWUFBQTs7aUJBQUEsWUFBQTtrQ0FBQSxZQUFBOzs7OztBQUFBLG9CQUFBLFdBS0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLFNBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RDLGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTNDLGdCQUFJLEtBQUssWUFBQTtnQkFBRSxLQUFLLFlBQUEsQ0FBQztBQUVqQixnQkFBSSxrQkE5RHNELE9BQU8sQ0E4RHJELFNBQVMsQ0FBQyxFQUFFO0FBQ3RCLHFCQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzVCLE1BQU07QUFDTCxxQkFBSyxHQUFHLHNCQWpFTSxjQUFjLENBaUVELFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLHFCQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RCO0FBRUQsZ0JBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN2QixnQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxnQkFBSSxNQUFNLEdBQUcsOEJBcEVSLFFBQVEsQ0FvRWEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXpDLGlCQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhCLGdCQUFJLEtBQUssaUNBQWlDO0FBQ3hDLHNCQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ3RFO1NBQ0Y7O0FBM0JILG9CQUFBLFdBNkJFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2Ysb0JBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUNuQixDQUFDO1NBQ0g7O2VBbkNILFlBQUE7aUNBeERnQixNQUFNOzs7O1FBOEZ0QixtQkFBQTtrQkFBQSxtQkFBQTs7QUFLRSxpQkFMRixtQkFBQSxDQUtjLFVBQW1DLEVBQUE7a0NBTGpELG1CQUFBOztBQU1JLG9DQUFPLENBQUM7QUFIRixnQkFBQSxDQUFBLE9BQU8sR0FBVSxJQUFJLENBQUM7QUFJNUIsZ0JBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1NBQzlCOztBQVJILDJCQUFBLFdBVUUsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsa0JBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2hDLE1BQU07QUFDTCxrQkFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFcEMsb0JBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFMUMsb0JBQUcsc0NBbEhBLHFCQUFxQixDQWtIQyxLQUFLLENBQUMsRUFBRTtBQUMvQixzQkFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxNQUFNO0FBQ0wsNENBQU0sUUFBUSxLQUFBLE9BQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BCO2FBQ0Y7U0FDRjs7QUF4QkgsMkJBQUEsV0EwQlMsS0FBSyxHQUFBLGVBQUMsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZDM0IsZ0JBQUksTUFBTSxHQUFHLCtCQTVKUixlQUFlLENBNEphLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QyxnQkFBSSxHQUFHLEdBQUcscURBQXFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFbEQsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQzdDLG1CQUFHLENBQUMsUUFBUSxDQUFDLE1BQUssVUFBVSxDQUFDLENBQUM7QUFDOUIsbUJBQUcsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEQsbUJBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEIsbUJBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkIsbUJBQUcsQ0FBQyw2QkFBNkIsQ0FBQyw2QkFqSy9CLElBQUksQ0FpS2dDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDaEQsbUJBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUNwQixtQkFBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JCLG1CQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsbUJBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkIsbUJBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFLLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDckMsQ0FBQyxDQUFDO0FBRUgsZ0JBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDOzs7OztBQU8zQyxnQkFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFFdkIsbUJBQU8sT0FBTyxDQUFDO1NBQ2hCOztBQWpHSCwyQkFBQSxXQW1HRSxNQUFNLEdBQUEsa0JBQUE7Z0JBQ1MsSUFBSSxHQUFvQixJQUFJLENBQW5DLEtBQUs7Z0JBQVEsSUFBSSxHQUFjLElBQUksQ0FBdEIsSUFBSTtnQkFBRSxPQUFPLEdBQUssSUFBSSxDQUFoQixPQUFPOztBQUVoQyxnQkFBSSxPQUFPLEVBQUU7QUFDWCx1QkFBTztBQUNMLHdCQUFJLEVBQUosSUFBSTtBQUNKLHdCQUFJLEVBQUosSUFBSTtBQUNKLDJCQUFPLEVBQUUsSUFBSTtBQUNiLDRCQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEVBQUU7K0JBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtxQkFBQSxDQUFDO2lCQUNuRCxDQUFDO2FBQ0gsTUFBTTtBQUNMLHVCQUFPO0FBQ0wsd0JBQUksRUFBSixJQUFJO0FBQ0osd0JBQUksRUFBSixJQUFJO0FBQ0osd0JBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2pDLENBQUM7YUFDSDtTQUNGOztlQXBISCxtQkFBQTtPQUF1RSxZQUFZOzs7O1FBdUhuRiw4QkFBQTtrQkFBQSw4QkFBQTs7aUJBQUEsOEJBQUE7a0NBQUEsOEJBQUE7Ozs7O0FBQUEsc0NBQUEsQ0FDUyxNQUFNLEdBQUEsZ0JBQUMsS0FBd0IsRUFBQTtBQUNwQyxtQkFBTyxJQUFJLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xEOztBQUhILHNDQUFBLFdBS0UsTUFBTSxHQUFBLGdCQUFDLEtBQWEsRUFBQTtBQUNsQixtQkFBTyxzQ0E3TkYscUJBQXFCLENBNk5HLEtBQUssQ0FBQyxDQUFDO1NBQ3JDOztlQVBILDhCQUFBO29DQTFNUyxvQkFBb0I7O1FBb043QixZQUFBO2tCQUFBLFlBQUE7O0FBQ0UsaUJBREYsWUFBQSxDQUVjLEtBQXdCLEVBQ3hCLE1BQWdCLEVBQ2hCLE1BQWMsRUFBQTtrQ0FKNUIsWUFBQTs7QUFNSSxzQ0FBTyxDQUFDO0FBSkUsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFtQjtBQUN4QixnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVU7QUFDaEIsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFRO0FBR3hCLGdCQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDdEI7O0FBUkgsb0JBQUEsV0FZRSxRQUFRLEdBQUEsa0JBQUMsRUFBYyxFQUFBO0FBQ3JCLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRXBDLGdCQUFJLGtCQXpPMEMsVUFBVSxDQXlPekMsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsTUFBTSxHQUFhLElBQUksQ0FBdkIsTUFBTTtvQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07b0JBQ2QsR0FBRyxHQUFLLEVBQUUsQ0FBVixHQUFHOztBQUVULG9CQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLHdCQUFJLE1BQU0sR0FBRyw2QkE1T1osTUFBTSxDQTRPaUIsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLHlCQTVPdkMsS0FBSyxDQTRPd0MsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRCwwQkFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN4RDtBQUVELHNCQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM5QjtTQUNGOztBQTFCSCxvQkFBQSxXQTRCRSxNQUFNLEdBQUEsa0JBQUE7Z0JBQ1MsSUFBSSxHQUFrQixJQUFJLENBQWpDLEtBQUs7Z0JBQVEsSUFBSSxHQUFZLElBQUksQ0FBcEIsSUFBSTtnQkFBRSxLQUFLLEdBQUssSUFBSSxDQUFkLEtBQUs7O0FBRTlCLG1CQUFPO0FBQ0wsb0JBQUksRUFBSixJQUFJO0FBQ0osb0JBQUksRUFBSixJQUFJO0FBQ0osdUJBQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQ3JELENBQUM7U0FDSDs7ZUFwQ0gsWUFBQTtpQ0EvTm9DLGNBQWM7O1FBc1FsRCxtQkFBQTtrQkFBQSxtQkFBQTs7QUFJRSxpQkFKRixtQkFBQSxDQUtZLFNBQTRCLEVBQ3BDLEtBQXdCLEVBQ3hCLE1BQWdCLEVBQ2hCLE1BQWMsRUFDTixZQUFvQyxFQUNwQyxLQUFjLEVBQUE7a0NBVjFCLG1CQUFBOztBQVlJLHFDQUFNLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFQckIsZ0JBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFtQjtBQUk1QixnQkFBQSxDQUFBLFlBQVksR0FBWixZQUFZLENBQXdCO0FBQ3BDLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBUztBQVJoQixnQkFBQSxDQUFBLE9BQU8sR0FBYyxJQUFJLENBQUM7QUFXaEMsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxzQkE5UVMsWUFBWSxDQThRSixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEQsZ0JBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUN6Qjs7QUFmSCwyQkFBQSxXQWlCRSxRQUFRLEdBQUEsa0JBQUMsRUFBYyxFQUFBO0FBQ3JCLGdCQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsa0JBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2pDLE1BQU07QUFDTCxvQkFBSSxzQ0E3UkQscUJBQXFCLENBNlJFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUNqRCx3QkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEIsTUFBTTtBQUNMLDRDQUFNLFFBQVEsS0FBQSxPQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwQjthQUNGO1NBQ0Y7O0FBM0JILDJCQUFBLFdBNkJVLFNBQVMsR0FBQSxtQkFBQyxFQUFjLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkErQnhCLE1BQU0sR0FBMEIsSUFBSSxDQUFwQyxNQUFNO2dCQUFFLFlBQVksR0FBWSxJQUFJLENBQTVCLFlBQVk7Z0JBQUUsS0FBSyxHQUFLLElBQUksQ0FBZCxLQUFLOztBQUVqQyxnQkFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsZ0JBQUksS0FBSyxHQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQWlCLENBQUM7QUFDaEQsZ0JBQUksR0FBRyxHQUFTLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFFNUIsZ0JBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsOEJBMVR2QixZQUFZLENBMFQ0QixNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUNyRSxtQkFBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFL0IsZ0JBQUksUUFBUSxHQUFHLGlCQXJVRixVQUFVLEVBcVV3QixDQUFDO0FBRWhELGdCQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLCtCQTFVeEIsU0FBUyxDQTBVNkIsRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFFLEtBQUssRUFBTCxLQUFLLEVBQUUsUUFBUSxFQUFSLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFFckUsZ0JBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU5QixjQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNCLGNBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Ozs7QUFPWCxnQkFBSSxDQUFDLElBQUksR0FBVyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxTQUFTLEdBQU0sSUFBSSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsS0FBSyxHQUFVLElBQUksQ0FBQztBQUN6QixnQkFBSSxDQUFDLE1BQU0sR0FBUyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxNQUFNLEdBQVMsSUFBSSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QixnQkFBSSxDQUFDLEtBQUssR0FBVSxJQUFJLENBQUM7U0FDMUI7O0FBMUZILDJCQUFBLFdBNEZFLE1BQU0sR0FBQSxrQkFBQTtnQkFDUyxJQUFJLEdBQW9CLElBQUksQ0FBbkMsS0FBSztnQkFBUSxJQUFJLEdBQWMsSUFBSSxDQUF0QixJQUFJO2dCQUFFLE9BQU8sR0FBSyxJQUFJLENBQWhCLE9BQU87O0FBRWhDLGdCQUFJLE9BQU8sRUFBRTtBQUNYLHVCQUFPO0FBQ0wsd0JBQUksRUFBSixJQUFJO0FBQ0osd0JBQUksRUFBSixJQUFJO0FBQ0osMkJBQU8sRUFBRSxJQUFJO0FBQ2IsNEJBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDN0IsQ0FBQzthQUNILE1BQU07QUFDTCx1QkFBTyx3QkFBTSxNQUFNLEtBQUEsTUFBRSxDQUFDO2FBQ3ZCO1NBQ0Y7O2VBekdILG1CQUFBO09BQXVFLFlBQVk7Ozs7UUE0R25GLDZCQUFBO2tCQUFBLDZCQUFBOztBQUFBLGlCQUFBLDZCQUFBLEdBQUE7a0NBQUEsNkJBQUE7OzhDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQW1ELG9FQUFBLElBQUEsRUFBQSxDQUErQjtBQUNoRixnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQWFwQzs7QUFkRCxxQ0FBQSxXQUdZLFNBQVMsR0FBQSxtQkFBQyxTQUE0QixFQUFBO0FBQzlDLG1CQUFPLGtCQWpYNEQsR0FBRyxDQWlYM0QsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDOztBQUxILHFDQUFBLFdBT1ksTUFBTSxHQUFBLGdCQUFDLEdBQWMsRUFBRSxNQUFjLEVBQUUsS0FBd0IsRUFBQTtBQUN2RSxtQkFBTyx5QkEvWFQsY0FBYyxDQStYVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDOztBQVRILHFDQUFBLFdBV1ksVUFBVSxHQUFBLG9CQUFDLEVBQU0sRUFBRSxTQUE0QixFQUFFLEtBQXdDLEVBQUUsTUFBZ0IsRUFBRSxNQUFjLEVBQUE7QUFDbkksbUJBQU8sSUFBSSw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2pFOztlQWJILDZCQUFBO09BQW1ELFlBQVk7Ozs7UUFnQi9ELDZCQUFBO2tCQUFBLDZCQUFBOztBQUFBLGlCQUFBLDZCQUFBLEdBQUE7a0NBQUEsNkJBQUE7OytDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQTRDLG9FQUFBLElBQUEsRUFBQSxDQUErQjtBQUN6RSxnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQUtwQzs7QUFORCxxQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUFjLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDdkUsbUJBQU8seUJBM1lULGNBQWMsQ0EyWVUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7ZUFMSCw2QkFBQTtPQUE0QyxZQUFZOztRQVF4RCwyQkFBQTtrQkFBQSwyQkFBQTs7QUFBQSxpQkFBQSwyQkFBQSxHQUFBO2tDQUFBLDJCQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUFpRCxnRkFBQSxJQUFBLEVBQUEsQ0FBc0M7QUFDckYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7QUFFdkIsZ0JBQUEsQ0FBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7U0FheEQ7O0FBaEJELG1DQUFBLFdBS1ksU0FBUyxHQUFBLG1CQUFDLFNBQTRCLEVBQUE7QUFDOUMsbUJBQU8sa0JBM1k0RCxHQUFHLENBMlkzRCxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDdkM7O0FBUEgsbUNBQUEsV0FTWSxNQUFNLEdBQUEsZ0JBQUMsR0FBYyxFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ3ZFLG1CQUFPLHlCQXpaVCxjQUFjLENBeVpVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O0FBWEgsbUNBQUEsV0FhWSxVQUFVLEdBQUEsb0JBQUMsRUFBTSxFQUFFLFNBQTRCLEVBQUUsS0FBd0MsRUFBRSxNQUFnQixFQUFFLE1BQWMsRUFBQTtBQUNuSSxtQkFBTyxJQUFJLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUY7O2VBZkgsMkJBQUE7T0FBaUQsbUJBQW1COzs7O1FBa0JwRSwyQkFBQTtrQkFBQSwyQkFBQTs7QUFBQSxpQkFBQSwyQkFBQSxHQUFBO2tDQUFBLDJCQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUEwQyxnRkFBQSxJQUFBLEVBQUEsQ0FBc0M7QUFDOUUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7U0FLbEM7O0FBTkQsbUNBQUEsV0FHWSxNQUFNLEdBQUEsZ0JBQUMsR0FBYyxFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ3ZFLG1CQUFPLHlCQXJhVCxjQUFjLENBcWFVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsMkJBQUE7T0FBMEMsbUJBQW1COztRQVE3RCw2QkFBQTtrQkFBQSw2QkFBQTs7QUFBQSxpQkFBQSw2QkFBQSxHQUFBO2tDQUFBLDZCQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUFtRCxvRUFBQSxJQUFBLEVBQUEsQ0FBK0I7QUFDaEYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsMkJBQTJCLENBQUM7U0FhcEM7O0FBZEQscUNBQUEsV0FHWSxTQUFTLEdBQUEsbUJBQUMsU0FBNEIsRUFBQTtBQUM5QyxtQkFBTyxrQkFuYTRELEdBQUcsQ0FtYTNELFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQzlDOztBQUxILHFDQUFBLFdBT1ksTUFBTSxHQUFBLGdCQUFDLEdBQWMsRUFBRSxNQUFjLEVBQUUsS0FBd0IsRUFBQTtBQUN2RSxtQkFBTyx5QkFoYlQsY0FBYyxDQWdiVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDOztBQVRILHFDQUFBLFdBV1ksVUFBVSxHQUFBLG9CQUFDLEVBQU0sRUFBRSxTQUE0QixFQUFFLEtBQXdDLEVBQUUsTUFBZ0IsRUFBRSxNQUFjLEVBQUE7QUFDbkksbUJBQU8sSUFBSSw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2pFOztlQWJILDZCQUFBO09BQW1ELFlBQVk7Ozs7UUFnQi9ELDZCQUFBO2tCQUFBLDZCQUFBOztBQUFBLGlCQUFBLDZCQUFBLEdBQUE7a0NBQUEsNkJBQUE7OytDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQTRDLG9FQUFBLElBQUEsRUFBQSxDQUErQjtBQUN6RSxnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQUtwQzs7QUFORCxxQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUFjLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDdkUsbUJBQU8seUJBNWJULGNBQWMsQ0E0YlUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7ZUFMSCw2QkFBQTtPQUE0QyxZQUFZOztRQVF4RCwyQkFBQTtrQkFBQSwyQkFBQTs7QUFBQSxpQkFBQSwyQkFBQSxHQUFBO2tDQUFBLDJCQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUFpRCxrRkFBQSxJQUFBLEVBQUEsQ0FBc0M7QUFDckYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7QUFFdkIsZ0JBQUEsQ0FBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7U0FheEQ7O0FBaEJELG1DQUFBLFdBS1ksU0FBUyxHQUFBLG1CQUFDLFNBQTRCLEVBQUE7QUFDOUMsbUJBQU8sa0JBN2I0RCxHQUFHLENBNmIzRCxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztTQUM5Qzs7QUFQSCxtQ0FBQSxXQVNZLE1BQU0sR0FBQSxnQkFBQyxHQUFjLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDdkUsbUJBQU8seUJBMWNULGNBQWMsQ0EwY1UsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7QUFYSCxtQ0FBQSxXQWFZLFVBQVUsR0FBQSxvQkFBQyxFQUFNLEVBQUUsU0FBNEIsRUFBRSxLQUF3QyxFQUFFLE1BQWdCLEVBQUUsTUFBYyxFQUFBO0FBQ25JLG1CQUFPLElBQUksMkJBQTJCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUM5Rjs7ZUFmSCwyQkFBQTtPQUFpRCxtQkFBbUI7Ozs7UUFrQnBFLDJCQUFBO2tCQUFBLDJCQUFBOztBQUFBLGlCQUFBLDJCQUFBLEdBQUE7a0NBQUEsMkJBQUE7OytDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQTBDLGtGQUFBLElBQUEsRUFBQSxDQUFzQztBQUM5RSxnQkFBQSxDQUFBLElBQUksR0FBRyxpQkFBaUIsQ0FBQztTQUsxQjs7QUFORCxtQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUFjLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDdkUsbUJBQU8seUJBdGRULGNBQWMsQ0FzZFUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7ZUFMSCwyQkFBQTtPQUEwQyxtQkFBbUIiLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcHNlcnQsIHtcbiAgSW5zZXJ0aW9uLFxuICBDYXV0aW91c0luc2VydGlvbixcbiAgVHJ1c3RpbmdJbnNlcnRpb24sXG5cbiAgaXNTYWZlU3RyaW5nLFxuICBpc05vZGUsXG4gIGlzU3RyaW5nLFxuXG4gIGNhdXRpb3VzSW5zZXJ0LFxuICB0cnVzdGluZ0luc2VydFxufSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NSGVscGVyIH0gZnJvbSAnLi4vLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBPcFNlcSwgT3Bjb2RlLCBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBUcnlPcGNvZGUsIFZNU3RhdGUgfSBmcm9tICcuLi8uLi92bS91cGRhdGUnO1xuaW1wb3J0IHsgRW50ZXJPcGNvZGUgfSBmcm9tICcuL3ZtJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIFVwZGF0YWJsZVRhZywgaXNNb2RpZmllZCwgaXNDb25zdCwgbWFwIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgT3BhcXVlLCBMaW5rZWRMaXN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IEN1cnNvciwgY2xlYXIgfSBmcm9tICcuLi8uLi9ib3VuZHMnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCB7IENvbXBpbGVJbnRvTGlzdCB9IGZyb20gJy4uLy4uL2NvbXBpbGVyJztcbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgeyBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHsgQXJncyB9IGZyb20gJy4uLy4uL3N5bnRheC9jb3JlJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQmxvY2tUcmFja2VyIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlOiBPcGFxdWUpOiBDYXV0aW91c0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpIHx8IGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBPcGNvZGUge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VD47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRlT3Bjb2RlPFQ+O1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuXG4gICAgbGV0IHZhbHVlLCBjYWNoZTtcblxuICAgIGlmIChpc0NvbnN0KHJlZmVyZW5jZSkpIHtcbiAgICAgIHZhbHVlID0gbm9ybWFsaXplZC52YWx1ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgIH1cblxuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrKCk7XG4gICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHN0YWNrLmRvbSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT47XG4gIHByaXZhdGUgZGVvcHRlZDogT3BTZXEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGV4cHJlc3Npb246IENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0ucHVzaEV2YWxGcmFtZSh0aGlzLmRlb3B0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5ldmFsdWF0ZU9wZXJhbmQodGhpcy5leHByZXNzaW9uKTtcblxuICAgICAgbGV0IHZhbHVlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpLnZhbHVlKCk7XG5cbiAgICAgIGlmKGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgdm0ucHVzaEV2YWxGcmFtZSh0aGlzLmRlb3B0KHZtLmVudikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZW9wdChlbnY6IEVudmlyb25tZW50KTogT3BTZXEgeyAvLyBQdWJsaWMgYmVjYXVzZSBpdCdzIHVzZWQgaW4gdGhlIGxhenkgZGVvcHRcbiAgICAvLyBBdCBjb21waWxlIHRpbWUsIHdlIGRldGVybWluZWQgdGhhdCB0aGlzIGFwcGVuZCBjYWxsc2l0ZSBtaWdodCByZWZlclxuICAgIC8vIHRvIGEgbG9jYWwgdmFyaWFibGUvcHJvcGVydHkgbG9va3VwIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIGF0IHJ1bnRpbWUuXG4gICAgLy9cbiAgICAvLyBXZSBjb3VsZCBoYXZlIGVhZ2VybHkgY29tcGlsZWQgdGhpcyBjYWxsc2l0ZSBpbnRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgIHt7I2lmIChpcy1jb21wb25lbnQtZGVmaW5pdGlvbiBmb28pfX1cbiAgICAvLyAgICAge3tjb21wb25lbnQgZm9vfX1cbiAgICAvLyAgIHt7ZWxzZX19XG4gICAgLy8gICAgIHt7Zm9vfX1cbiAgICAvLyAgIHt7L2lmfX1cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGVyZSBtaWdodCBiZSBhIGxhcmdlIGFtb3V0IG9mIHRoZXNlIGNhbGxzaXRlc1xuICAgIC8vIGFuZCBtb3N0IG9mIHRoZW0gd291bGQgcmVzb2x2ZSB0byBhIHNpbXBsZSB2YWx1ZSBsb29rdXAuIFRoZXJlZm9yZSwgd2VcbiAgICAvLyB0cmllZCB0byBiZSBvcHRpbWlzdGljIGFuZCBhc3N1bWVkIHRoYXQgdGhlIGNhbGxzaXRlIHdpbGwgcmVzb2x2ZSB0b1xuICAgIC8vIGFwcGVuZGluZyBhIHNpbXBsZSB2YWx1ZS5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHdlIGhhdmUgcmVhY2hlZCBoZXJlIGJlY2F1c2UgYXQgcnVudGltZSwgdGhlIGd1YXJkIGNvbmRpdGlvbmFsXG4gICAgLy8gaGF2ZSBkZXRlY3RlZCB0aGF0IHRoaXMgY2FsbHNpdGUgaXMgaW5kZWVkIHJlZmVycmluZyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0LiBTaW5jZSB0aGlzIGlzIGxpa2VseSBnb2luZyB0byBiZSB0cnVlIGZvciBvdGhlclxuICAgIC8vIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjYWxsc2l0ZSwgaXQgaXMgbm93IGFwcHJvcGlhdGUgdG8gZGVvcHQgaW50byB0aGVcbiAgICAvLyBleHBhbmRlZCB2ZXJzaW9uIHRoYXQgaGFuZGxlcyBib3RoIGNhc2VzLiBUaGUgY29tcGlsYXRpb24gd291bGQgbG9va1xuICAgIC8vIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIFRlc3QoaXMtY29tcG9uZW50LWRlZmluaXRpb24pXG4gICAgLy8gICAgICAgICAgICAgICBKdW1wVW5sZXNzKFZBTFVFKVxuICAgIC8vICAgQ09NUE9ORU5UOiAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGVcbiAgICAvLyAgICAgICAgICAgICAgIE9wZW5Db21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBKdW1wKEVORClcbiAgICAvLyAgIFZBTFVFOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgIC8vICAgRU5EOiAgICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZXZlbiBpZiB3ZSAqZG9uJ3QqIHJlYWNoIGhlcmUgYXQgaW5pdGlhbCByZW5kZXIgdGltZSxcbiAgICAvLyBpdCBpcyBzdGlsbCBwb3NzaWJsZSAoYWx0aG91Z2ggcXVpdGUgcmFyZSkgdGhhdCB0aGUgc2ltcGxlIHZhbHVlIHdlXG4gICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0IGF0IHVwZGF0ZSB0aW1lLiBUaGF0IGlzIGhhbmRsZWQgYnkgdGhlIFwibGF6eSBkZW9wdFwiXG4gICAgLy8gY29kZSBvbiB0aGUgdXBkYXRlIHNpZGUgKHNjcm9sbCBkb3duIGZvciB0aGUgbmV4dCBiaWcgYmxvY2sgb2YgY29tbWVudCkuXG5cbiAgICBsZXQgYnVmZmVyID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIG51bGwpO1xuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChidWZmZXIsIG51bGwsIGVudik7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXM6IG51bGwgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnB1dFZhbHVlKHRoaXMuZXhwcmVzc2lvbik7XG4gICAgICBkc2wudGVzdChJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UuY3JlYXRlKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdWQUxVRScpO1xuICAgICAgZHNsLmxhYmVsKCdDT01QT05FTlQnKTtcbiAgICAgIGRzbC5wdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbihBcmdzLmVtcHR5KCkpO1xuICAgICAgZHNsLm9wZW5Db21wb25lbnQoKTtcbiAgICAgIGRzbC5jbG9zZUNvbXBvbmVudCgpO1xuICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgIGRzbC5sYWJlbCgnVkFMVUUnKTtcbiAgICAgIGRzbC5hcHBlbmQobmV3IHRoaXMuQXBwZW5kT3Bjb2RlKCkpO1xuICAgIH0pO1xuXG4gICAgbGV0IGRlb3B0ZWQgPSB0aGlzLmRlb3B0ZWQgPSBkc2wudG9PcFNlcSgpO1xuXG4gICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBoYXZlIGVzc2VudGlhbGx5IHJlcGxhY2VkIG91cnNlbHZlIHdpdGggYSBuZXcgc2V0XG4gICAgLy8gb2Ygb3Bjb2Rlcy4gU2luY2Ugd2Ugd2lsbCBhbHdheXMgYmUgZXhlY3V0aW5nIHRoZSBuZXcvZGVvcHRlZCBjb2RlLCBpdCdzXG4gICAgLy8gYSBnb29kIGlkZWEgKGFzIGEgcGF0dGVybikgdG8gbnVsbCBvdXQgYW55IHVubmVlZGVkIGZpZWxkcyBoZXJlIHRvIGF2b2lkXG4gICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuXG4gICAgdGhpcy5leHByZXNzaW9uID0gbnVsbDtcblxuICAgIHJldHVybiBkZW9wdGVkO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBkZW9wdGVkLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBndWlkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBhcmdzOiBbdGhpcy5leHByZXNzaW9uLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIGV4dGVuZHMgQ29uZGl0aW9uYWxSZWZlcmVuY2Uge1xuICBzdGF0aWMgY3JlYXRlKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPik6IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIG5ldyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UoaW5uZXIpO1xuICB9XG5cbiAgdG9Cb29sKHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgcHJvdGVjdGVkIGJvdW5kczogRnJhZ21lbnQsXG4gICAgcHJvdGVjdGVkIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NSGVscGVyLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG4gIHByaXZhdGUgZGVvcHRlZDogVHJ5T3Bjb2RlID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIGJvdW5kczogRnJhZ21lbnQsXG4gICAgdXBzZXJ0OiBVcHNlcnQsXG4gICAgcHJpdmF0ZSBhcHBlbmRPcGNvZGU6IEd1YXJkZWRBcHBlbmRPcGNvZGU8VD4sXG4gICAgcHJpdmF0ZSBzdGF0ZTogVk1TdGF0ZVxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyh0aGlzLnRhZyk7XG4gICAgdGhpcy5zdGF0ZS5ibG9jayA9IG51bGw7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICBsZXQgeyBib3VuZHMsIGFwcGVuZE9wY29kZSwgc3RhdGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgYXBwZW5kT3BzID0gYXBwZW5kT3Bjb2RlLmRlb3B0KHZtLmVudik7XG4gICAgbGV0IGVudGVyICAgICA9IGFwcGVuZE9wcy5oZWFkKCkgYXMgRW50ZXJPcGNvZGU7XG4gICAgbGV0IG9wcyAgICAgICA9IGVudGVyLnNsaWNlO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBzdGF0ZS5ibG9jayA9IG5ldyBCbG9ja1RyYWNrZXIoYm91bmRzLnBhcmVudEVsZW1lbnQoKSk7XG4gICAgdHJhY2tlci5uZXdCb3VuZHModGhpcy5ib3VuZHMpO1xuXG4gICAgbGV0IGNoaWxkcmVuID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgZGVvcHRlZCA9IHRoaXMuZGVvcHRlZCA9IG5ldyBUcnlPcGNvZGUoeyBvcHMsIHN0YXRlLCBjaGlsZHJlbiB9KTtcblxuICAgIHRoaXMuX3RhZy51cGRhdGUoZGVvcHRlZC50YWcpO1xuXG4gICAgdm0uZXZhbHVhdGVPcGNvZGUoZGVvcHRlZCk7XG4gICAgdm0udGhyb3coKTtcblxuICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgd2UgaGF2ZSBlc3NlbnRpYWxseSByZXBsYWNlZCBvdXJzZWx2ZSB3aXRoIGEgbmV3XG4gICAgLy8gb3Bjb2RlLiBTaW5jZSB3ZSB3aWxsIGFsd2F5cyBiZSBleGVjdXRpbmcgdGhlIG5ldy9kZW9wdGVkIGNvZGUsIGl0J3MgYVxuICAgIC8vIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAvLyBob2xkaW5nIG9uIHRvIHVubmVlZGVkL3N0YWxlIG9iamVjdHM6XG5cbiAgICB0aGlzLl90YWcgICAgICAgICA9IG51bGw7XG4gICAgdGhpcy5yZWZlcmVuY2UgICAgPSBudWxsO1xuICAgIHRoaXMuY2FjaGUgICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmJvdW5kcyAgICAgICA9IG51bGw7XG4gICAgdGhpcy51cHNlcnQgICAgICAgPSBudWxsO1xuICAgIHRoaXMuYXBwZW5kT3Bjb2RlID0gbnVsbDtcbiAgICB0aGlzLnN0YXRlICAgICAgICA9IG51bGw7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtkZW9wdGVkLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCwgdGhpcywgdm0uY2FwdHVyZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZE9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUcnVzdGluZ0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUge1xuICAgIHJldHVybiBuZXcgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KTtcbiAgfVxufVxuXG5jbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQsIHRoaXMsIHZtLmNhcHR1cmUoKSk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ3RydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUErQkEsYUFBQSxPQUFBLENBQWlCLEtBQWEsRUFBQTtBQUM1QixlQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxVQUFVLENBQUM7S0FDekY7O0FBRUssYUFBQSxrQkFBQSxDQUE2QixLQUFhLEVBQUE7QUFDOUMsWUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsbUJBQU8sRUFBRSxDQUFDO1NBQ1g7QUFDRCxlQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0Qjs7QUFFSyxhQUFBLHFCQUFBLENBQWdDLEtBQWEsRUFBQTtBQUNqRCxZQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixtQkFBTyxFQUFFLENBQUM7U0FDWDtBQUNELFlBQUkseUJBdkNKLFFBQVEsQ0F1Q0ssS0FBSyxDQUFDLEVBQUU7QUFDbkIsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7QUFDRCxZQUFJLHlCQTVDSixZQUFZLENBNENLLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLG1CQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2QjtBQUNELFlBQUkseUJBOUNKLE1BQU0sQ0E4Q0ssS0FBSyxDQUFDLEVBQUU7QUFDakIsbUJBQU8sS0FBSyxDQUFDO1NBQ2Q7QUFDRCxlQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0Qjs7QUFFSyxhQUFBLGNBQUEsQ0FBeUIsS0FBYSxFQUFBO0FBQzFDLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBSSx5QkF2REosUUFBUSxDQXVESyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxLQUFLLENBQUM7U0FDZDtB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QUMzQzs7QUFYRyxtQ0FBbUMsV0FhN0IsVUFBVSxHQUFBLG9CQUFDLEVBQU0sRUFBRSxTQUE0QixFQUFFLEtBQXdDLEVBQUUsTUFBZ0IsRUFBRSxNQUFjLEVBQUE7QUFDbkksbUJBQU8sSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlGOztlQWZHLDJCQUFtQztPQUFRLG1CQUFzQzs7OztRQWtCdkYsMkJBQWtDOzhCQUFsQywyQkFBa0M7O0FBQWxDLGlCQUFBLDJCQUFrQyxHQUFsQztBQ3hFUSw4Q0FBUyxTQUFTLENBQUMsQ0FBQztBRHlFMUIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7U0FLMUI7O0FBTkQsbUNBQWtDLFdBR3RCLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQXBkVCxjQUFjLENBb2RVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsMkJBQWtDO09BQVEsbUJBQXNDIiwiZmlsZSI6ImNvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXBzZXJ0LCB7XG4gIEluc2VydGlvbixcbiAgQ2F1dGlvdXNJbnNlcnRpb24sXG4gIFRydXN0aW5nSW5zZXJ0aW9uLFxuXG4gIGlzU2FmZVN0cmluZyxcbiAgaXNOb2RlLFxuICBpc1N0cmluZyxcblxuICBjYXV0aW91c0luc2VydCxcbiAgdHJ1c3RpbmdJbnNlcnRcbn0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFRyeU9wY29kZSwgVk1TdGF0ZSB9IGZyb20gJy4uLy4uL3ZtL3VwZGF0ZSc7XG5pbXBvcnQgeyBFbnRlck9wY29kZSB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUsIExpbmtlZExpc3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcGlsZUludG9MaXN0IH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBcmdzIH0gZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBzdHJpbmcge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWU6IE9wYXF1ZSk6IFRydXN0aW5nSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZTogT3BhcXVlKTogQ2F1dGlvdXNJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwZW5kT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGVPcGNvZGU8VD47XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2soKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgZGVvcHRlZDogT3BTZXEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4sIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uZXZhbHVhdGVPcGVyYW5kKHRoaXMuZXhwcmVzc2lvbik7XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKS52YWx1ZSgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdCh2bS5lbnYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVvcHQoZW52OiBFbnZpcm9ubWVudCk6IE9wU2VxIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gICBCRUdJTjogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgSnVtcFVubGVzcyhWQUxVRSlcbiAgICAvLyAgIENPTVBPTkVOVDogIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIFB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlXG4gICAgLy8gICAgICAgICAgICAgICBPcGVuQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBDbG9zZUNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gICBWQUxVRTogICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBPcHRpbWl6ZWRBcHBlbmRcbiAgICAvLyAgIEVORDogICAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEV4aXRcbiAgICAvL1xuICAgIC8vIEtlZXAgaW4gbWluZCB0aGF0IGV2ZW4gaWYgd2UgKmRvbid0KiByZWFjaCBoZXJlIGF0IGluaXRpYWwgcmVuZGVyIHRpbWUsXG4gICAgLy8gaXQgaXMgc3RpbGwgcG9zc2libGUgKGFsdGhvdWdoIHF1aXRlIHJhcmUpIHRoYXQgdGhlIHNpbXBsZSB2YWx1ZSB3ZVxuICAgIC8vIGVuY291bnRlciBkdXJpbmcgaW5pdGlhbCByZW5kZXIgY291bGQgbGF0ZXIgY2hhbmdlIGludG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdCBhdCB1cGRhdGUgdGltZS4gVGhhdCBpcyBoYW5kbGVkIGJ5IHRoZSBcImxhenkgZGVvcHRcIlxuICAgIC8vIGNvZGUgb24gdGhlIHVwZGF0ZSBzaWRlIChzY3JvbGwgZG93biBmb3IgdGhlIG5leHQgYmlnIGJsb2NrIG9mIGNvbW1lbnQpLlxuXG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBudWxsKTtcbiAgICBsZXQgZHNsID0gbmV3IE9wY29kZUJ1aWxkZXJEU0woYnVmZmVyLCB0aGlzLnN5bWJvbFRhYmxlLCBlbnYpO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzOiBudWxsIH0sIChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGRzbC5wdXRWYWx1ZSh0aGlzLmV4cHJlc3Npb24pO1xuICAgICAgZHNsLnRlc3QoSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZSk7XG4gICAgICBkc2wuanVtcFVubGVzcygnVkFMVUUnKTtcbiAgICAgIGRzbC5sYWJlbCgnQ09NUE9ORU5UJyk7XG4gICAgICBkc2wucHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24oKTtcbiAgICAgIGRzbC5vcGVuQ29tcG9uZW50KEFyZ3MuZW1wdHkoKSk7XG4gICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICAgIGRzbC5qdW1wKEVORCk7XG4gICAgICBkc2wubGFiZWwoJ1ZBTFVFJyk7XG4gICAgICBkc2wuYXBwZW5kKG5ldyB0aGlzLkFwcGVuZE9wY29kZSgpKTtcbiAgICB9KTtcblxuICAgIGxldCBkZW9wdGVkID0gdGhpcy5kZW9wdGVkID0gZHNsLnRvT3BTZXEoKTtcblxuICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgd2UgaGF2ZSBlc3NlbnRpYWxseSByZXBsYWNlZCBvdXJzZWx2ZSB3aXRoIGEgbmV3IHNldFxuICAgIC8vIG9mIG9wY29kZXMuIFNpbmNlIHdlIHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGluZyB0aGUgbmV3L2Rlb3B0ZWQgY29kZSwgaXQnc1xuICAgIC8vIGEgZ29vZCBpZGVhIChhcyBhIHBhdHRlcm4pIHRvIG51bGwgb3V0IGFueSB1bm5lZWRlZCBmaWVsZHMgaGVyZSB0byBhdm9pZFxuICAgIC8vIGhvbGRpbmcgb24gdG8gdW5uZWVkZWQvc3RhbGUgb2JqZWN0czpcblxuICAgIHRoaXMuZXhwcmVzc2lvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gZGVvcHRlZDtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVvcHRlZCB9ID0gdGhpcztcblxuICAgIGlmIChkZW9wdGVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBndWlkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBkZW9wdGVkOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogZGVvcHRlZC50b0FycmF5KCkubWFwKG9wID0+IG9wLnRvSlNPTigpKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgYXJnczogW3RoaXMuZXhwcmVzc2lvbi50b0pTT04oKV1cbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgc3RhdGljIGNyZWF0ZShpbm5lcjogUmVmZXJlbmNlPE9wYXF1ZT4pOiBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2Uge1xuICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgfVxuXG4gIHRvQm9vbCh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIHByb3RlY3RlZCBib3VuZHM6IEZyYWdtZW50LFxuICAgIHByb3RlY3RlZCB1cHNlcnQ6IFVwc2VydFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuY2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgIGxldCB7IGRvbSB9ID0gdm07XG5cbiAgICAgIGlmKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgbGV0IGN1cnNvciA9IG5ldyBDdXJzb3IoYm91bmRzLnBhcmVudEVsZW1lbnQoKSwgY2xlYXIoYm91bmRzKSk7XG4gICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG4gIHByaXZhdGUgZGVvcHRlZDogVHJ5T3Bjb2RlID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIGJvdW5kczogRnJhZ21lbnQsXG4gICAgdXBzZXJ0OiBVcHNlcnQsXG4gICAgcHJpdmF0ZSBhcHBlbmRPcGNvZGU6IEd1YXJkZWRBcHBlbmRPcGNvZGU8VD4sXG4gICAgcHJpdmF0ZSBzdGF0ZTogVk1TdGF0ZVxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyh0aGlzLnRhZyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICBsZXQgeyBib3VuZHMsIGFwcGVuZE9wY29kZSwgc3RhdGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgYXBwZW5kT3BzID0gYXBwZW5kT3Bjb2RlLmRlb3B0KHZtLmVudik7XG4gICAgbGV0IGVudGVyICAgICA9IGFwcGVuZE9wcy5oZWFkKCkgYXMgRW50ZXJPcGNvZGU7XG4gICAgbGV0IG9wcyAgICAgICA9IGVudGVyLnNsaWNlO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCkpO1xuICAgIHRyYWNrZXIubmV3Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuICAgIGxldCBjaGlsZHJlbiA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IGRlb3B0ZWQgPSB0aGlzLmRlb3B0ZWQgPSBuZXcgVHJ5T3Bjb2RlKG9wcywgc3RhdGUsIHRyYWNrZXIsIGNoaWxkcmVuKTtcblxuICAgIHRoaXMuX3RhZy51cGRhdGUoZGVvcHRlZC50YWcpO1xuXG4gICAgdm0uZXZhbHVhdGVPcGNvZGUoZGVvcHRlZCk7XG4gICAgdm0udGhyb3coKTtcblxuICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgd2UgaGF2ZSBlc3NlbnRpYWxseSByZXBsYWNlZCBvdXJzZWx2ZSB3aXRoIGEgbmV3XG4gICAgLy8gb3Bjb2RlLiBTaW5jZSB3ZSB3aWxsIGFsd2F5cyBiZSBleGVjdXRpbmcgdGhlIG5ldy9kZW9wdGVkIGNvZGUsIGl0J3MgYVxuICAgIC8vIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAvLyBob2xkaW5nIG9uIHRvIHVubmVlZGVkL3N0YWxlIG9iamVjdHM6XG5cbiAgICB0aGlzLl90YWcgICAgICAgICA9IG51bGw7XG4gICAgdGhpcy5yZWZlcmVuY2UgICAgPSBudWxsO1xuICAgIHRoaXMuY2FjaGUgICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmJvdW5kcyAgICAgICA9IG51bGw7XG4gICAgdGhpcy51cHNlcnQgICAgICAgPSBudWxsO1xuICAgIHRoaXMuYXBwZW5kT3Bjb2RlID0gbnVsbDtcbiAgICB0aGlzLnN0YXRlICAgICAgICA9IG51bGw7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtkZW9wdGVkLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCwgdGhpcywgdm0uY2FwdHVyZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0LCB0aGlzLCB2bS5jYXB0dXJlKCkpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTYWZlU3RyaW5nLCBpc05vZGUsIGlzU3RyaW5nLCBjYXV0aW91c0luc2VydCwgdHJ1c3RpbmdJbnNlcnQgfSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3Bjb2RlLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVHJ5T3Bjb2RlIH0gZnJvbSAnLi4vLi4vdm0vdXBkYXRlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNhY2hlLCBVcGRhdGFibGVUYWcsIGlzTW9kaWZpZWQsIGlzQ29uc3QsIG1hcCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IExpbmtlZExpc3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcGlsZUludG9MaXN0IH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBcmdzIH0gZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgVXBkYXRhYmxlQmxvY2tUcmFja2VyIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgdmFsdWUsIGNhY2hlO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0YWNrID0gdm0uc3RhY2soKTtcbiAgICAgICAgbGV0IHVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIHN0YWNrLCB2YWx1ZSk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG4gICAgICAgIHN0YWNrLm5ld0JvdW5kcyhib3VuZHMpO1xuICAgICAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICAgICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW1wiJE9QRVJBTkRcIl1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgR3VhcmRlZEFwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoZXhwcmVzc2lvbiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLmRlb3B0ZWQgPSBudWxsO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICAgICAgICB2bS5wdXNoRXZhbEZyYW1lKHRoaXMuZGVvcHRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2bS5ldmFsdWF0ZU9wZXJhbmQodGhpcy5leHByZXNzaW9uKTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKS52YWx1ZSgpO1xuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2bS5wdXNoRXZhbEZyYW1lKHRoaXMuZGVvcHQodm0uZW52KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVvcHQoZW52KSB7XG4gICAgICAgIC8vIEF0IGNvbXBpbGUgdGltZSwgd2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgYXBwZW5kIGNhbGxzaXRlIG1pZ2h0IHJlZmVyXG4gICAgICAgIC8vIHRvIGEgbG9jYWwgdmFyaWFibGUvcHJvcGVydHkgbG9va3VwIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21wb25lbnRcbiAgICAgICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgICAgICAvL1xuICAgICAgICAvLyBXZSBjb3VsZCBoYXZlIGVhZ2VybHkgY29tcGlsZWQgdGhpcyBjYWxsc2l0ZSBpbnRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAge3sjaWYgKGlzLWNvbXBvbmVudC1kZWZpbml0aW9uIGZvbyl9fVxuICAgICAgICAvLyAgICAge3tjb21wb25lbnQgZm9vfX1cbiAgICAgICAgLy8gICB7e2Vsc2V9fVxuICAgICAgICAvLyAgICAge3tmb299fVxuICAgICAgICAvLyAgIHt7L2lmfX1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gSG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoZXJlIG1pZ2h0IGJlIGEgbGFyZ2UgYW1vdXQgb2YgdGhlc2UgY2FsbHNpdGVzXG4gICAgICAgIC8vIGFuZCBtb3N0IG9mIHRoZW0gd291bGQgcmVzb2x2ZSB0byBhIHNpbXBsZSB2YWx1ZSBsb29rdXAuIFRoZXJlZm9yZSwgd2VcbiAgICAgICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAgICAgLy8gYXBwZW5kaW5nIGEgc2ltcGxlIHZhbHVlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgICAgICAvLyBoYXZlIGRldGVjdGVkIHRoYXQgdGhpcyBjYWxsc2l0ZSBpcyBpbmRlZWQgcmVmZXJyaW5nIHRvIGEgY29tcG9uZW50XG4gICAgICAgIC8vIGRlZmluaXRpb24gb2JqZWN0LiBTaW5jZSB0aGlzIGlzIGxpa2VseSBnb2luZyB0byBiZSB0cnVlIGZvciBvdGhlclxuICAgICAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgICAgIC8vIGV4cGFuZGVkIHZlcnNpb24gdGhhdCBoYW5kbGVzIGJvdGggY2FzZXMuIFRoZSBjb21waWxhdGlvbiB3b3VsZCBsb29rXG4gICAgICAgIC8vIGxpa2UgdGhpczpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgICAgICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgICAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAgICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgICAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgICAgIC8vICAgQ09NUE9ORU5UOiAgTm9vcFxuICAgICAgICAvLyAgICAgICAgICAgICAgIFB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlXG4gICAgICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgICAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgICAgIC8vICAgICAgICAgICAgICAgSnVtcChFTkQpXG4gICAgICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgICAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgICAgICAvLyAgIEVORDogICAgICAgIE5vb3BcbiAgICAgICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgICAgIC8vXG4gICAgICAgIC8vIEtlZXAgaW4gbWluZCB0aGF0IGV2ZW4gaWYgd2UgKmRvbid0KiByZWFjaCBoZXJlIGF0IGluaXRpYWwgcmVuZGVyIHRpbWUsXG4gICAgICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAgICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgICAgICAvLyBkZWZpbml0aW9uIG9iamVjdCBhdCB1cGRhdGUgdGltZS4gVGhhdCBpcyBoYW5kbGVkIGJ5IHRoZSBcImxhenkgZGVvcHRcIlxuICAgICAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cbiAgICAgICAgbGV0IGJ1ZmZlciA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBudWxsKTtcbiAgICAgICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgdGhpcy5zeW1ib2xUYWJsZSwgZW52KTtcbiAgICAgICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzOiBudWxsIH0sIChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgICAgICAgIGRzbC5wdXRWYWx1ZSh0aGlzLmV4cHJlc3Npb24pO1xuICAgICAgICAgICAgZHNsLnRlc3QoSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZSk7XG4gICAgICAgICAgICBkc2wuanVtcFVubGVzcygnVkFMVUUnKTtcbiAgICAgICAgICAgIGRzbC5sYWJlbCgnQ09NUE9ORU5UJyk7XG4gICAgICAgICAgICBkc2wucHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24oKTtcbiAgICAgICAgICAgIGRzbC5vcGVuQ29tcG9uZW50KEFyZ3MuZW1wdHkoKSk7XG4gICAgICAgICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICAgICAgICAgIGRzbC5qdW1wKEVORCk7XG4gICAgICAgICAgICBkc2wubGFiZWwoJ1ZBTFVFJyk7XG4gICAgICAgICAgICBkc2wuYXBwZW5kKG5ldyB0aGlzLkFwcGVuZE9wY29kZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBkZW9wdGVkID0gdGhpcy5kZW9wdGVkID0gZHNsLnRvT3BTZXEoKTtcbiAgICAgICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBoYXZlIGVzc2VudGlhbGx5IHJlcGxhY2VkIG91cnNlbHZlIHdpdGggYSBuZXcgc2V0XG4gICAgICAgIC8vIG9mIG9wY29kZXMuIFNpbmNlIHdlIHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGluZyB0aGUgbmV3L2Rlb3B0ZWQgY29kZSwgaXQnc1xuICAgICAgICAvLyBhIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAgICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBudWxsO1xuICAgICAgICByZXR1cm4gZGVvcHRlZDtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVvcHRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3VpZCxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGRlb3B0ZWQudG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGd1aWQsXG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICBhcmdzOiBbdGhpcy5leHByZXNzaW9uLnRvSlNPTigpXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSBleHRlbmRzIENvbmRpdGlvbmFsUmVmZXJlbmNlIHtcbiAgICBzdGF0aWMgY3JlYXRlKGlubmVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlKGlubmVyKTtcbiAgICB9XG4gICAgdG9Cb29sKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICAgIH1cbn1cbmNsYXNzIFVwZGF0ZU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy51cHNlcnQgPSB1cHNlcnQ7XG4gICAgICAgIHRoaXMudGFnID0gY2FjaGUudGFnO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMsIHVwc2VydCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IGRvbSB9ID0gdm07XG4gICAgICAgICAgICBpZiAoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICAgICAgICAgIHVwc2VydCA9IHRoaXMudXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBkZXRhaWxzOiB7IGxhc3RWYWx1ZTogSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKSB9XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0LCBhcHBlbmRPcGNvZGUsIHN0YXRlKSB7XG4gICAgICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgICAgICB0aGlzLmFwcGVuZE9wY29kZSA9IGFwcGVuZE9wY29kZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLmRlb3B0ZWQgPSBudWxsO1xuICAgICAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcodGhpcy50YWcpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBpZiAodGhpcy5kZW9wdGVkKSB7XG4gICAgICAgICAgICB2bS5ldmFsdWF0ZU9wY29kZSh0aGlzLmRlb3B0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGF6eURlb3B0KHZtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBsYXp5RGVvcHQodm0pIHtcbiAgICAgICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAgICAgLy8gY29tcG9uZW50IGRlZmluaXRpb24sIHNvIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZWQgdGhhdCB0aGlzIGFwcGVuZFxuICAgICAgICAvLyBpcyBqdXN0IGEgbm9ybWFsIGFwcGVuZC4gSG93ZXZlciwgYXQgdXBkYXRlIHRpbWUsIHdlIGRpc2NvdmVyZWQgdGhhdFxuICAgICAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAgICAgLy8gd2UgbmVlZCB0byBkbyBhIFwibGF6eSBkZW9wdFwiLCBzaW11bGF0aW5nIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpZlxuICAgICAgICAvLyB3ZSBoYWQgZGVjaWRlZCB0byBwZXJmb3JtIHRoZSBkZW9wdCBpbiB0aGUgZmlyc3QgcGxhY2UgZHVyaW5nIGluaXRpYWxcbiAgICAgICAgLy8gcmVuZGVyLlxuICAgICAgICAvL1xuICAgICAgICAvLyBNb3JlIGNvbmNyZXRlbHksIHdlIHdvdWxkIGhhdmUgZXhwYW5kZWQgdGhlIGN1cmx5IGludG8gYSBpZi9lbHNlLCBhbmRcbiAgICAgICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgICAgIC8vIGhhdmUgZW50ZXJlZCBlaXRoZXIgdGhlIGR5bmFtaWMgY29tcG9uZW50IGJyYW5jaCBvciB0aGUgc2ltcGxlIHZhbHVlXG4gICAgICAgIC8vIGJyYW5jaC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gU2luY2Ugd2UgcmVuZGVyZWQgYSBzaW1wbGUgdmFsdWUgZHVyaW5nIGluaXRpYWwgcmVuZGVyIChhbmQgYWxsIHRoZVxuICAgICAgICAvLyB1cGRhdGVzIHVwIHVudGlsIHRoaXMgcG9pbnQpLCB3ZSBuZWVkIHRvIHByZXRlbmQgdGhhdCB0aGUgcmVzdWx0IGlzXG4gICAgICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgVHJ5KEJFR0lOLCBFTkQpXG4gICAgICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAgICAgLy8gICAgIE9wdGltaXplZFVwZGF0ZVxuICAgICAgICAvL1xuICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgICAgICAvLyB2YWx1ZSBpbnRvIGEgY29tcG9uZW50IGRlZmluaXRpb24sIHdoYXQgd291bGQgaGF2ZSBoYXBwZW5lZCBpcyB0aGF0XG4gICAgICAgIC8vIHRoZSBhc3NlcnQgd291bGQgdGhyb3csIGNhdXNpbmcgdGhlIFRyeSBvcGNvZGUgdG8gdGVhcmRvd24gdGhlIGJvdW5kc1xuICAgICAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFNpbmNlIHRoZSBUcnkgb3Bjb2RlIHdvdWxkIGhhdmUgbnVrZWQgdGhlIHVwZGF0aW5nIG9wY29kZXMgYW55d2F5LCB3ZVxuICAgICAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgICAgIC8vIGV4ZWN1dGUgdGhlIFRyeSBvcGNvZGUgYW5kIGltbWVkaWF0ZWx5IHRocm93LlxuICAgICAgICBsZXQgeyBib3VuZHMsIGFwcGVuZE9wY29kZSwgc3RhdGUgfSA9IHRoaXM7XG4gICAgICAgIGxldCBhcHBlbmRPcHMgPSBhcHBlbmRPcGNvZGUuZGVvcHQodm0uZW52KTtcbiAgICAgICAgbGV0IGVudGVyID0gYXBwZW5kT3BzLmhlYWQoKTtcbiAgICAgICAgbGV0IG9wcyA9IGVudGVyLnNsaWNlO1xuICAgICAgICBsZXQgdHJhY2tlciA9IG5ldyBVcGRhdGFibGVCbG9ja1RyYWNrZXIoYm91bmRzLnBhcmVudEVsZW1lbnQoKSk7XG4gICAgICAgIHRyYWNrZXIubmV3Qm91bmRzKHRoaXMuYm91bmRzKTtcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IGRlb3B0ZWQgPSB0aGlzLmRlb3B0ZWQgPSBuZXcgVHJ5T3Bjb2RlKG9wcywgc3RhdGUsIHRyYWNrZXIsIGNoaWxkcmVuKTtcbiAgICAgICAgdGhpcy5fdGFnLnVwZGF0ZShkZW9wdGVkLnRhZyk7XG4gICAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKGRlb3B0ZWQpO1xuICAgICAgICB2bS50aHJvdygpO1xuICAgICAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHdlIGhhdmUgZXNzZW50aWFsbHkgcmVwbGFjZWQgb3Vyc2VsdmUgd2l0aCBhIG5ld1xuICAgICAgICAvLyBvcGNvZGUuIFNpbmNlIHdlIHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGluZyB0aGUgbmV3L2Rlb3B0ZWQgY29kZSwgaXQncyBhXG4gICAgICAgIC8vIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAgICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IG51bGw7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hcHBlbmRPcGNvZGUgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVvcHRlZCB9ID0gdGhpcztcbiAgICAgICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3VpZCxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtkZW9wdGVkLnRvSlNPTigpXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuICAgICAgICB0aGlzLkFwcGVuZE9wY29kZSA9IE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlO1xuICAgIH1cbiAgICBub3JtYWxpemUocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZVdpdGgodm0sIHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHJldHVybiBuZXcgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0LCB0aGlzLCB2bS5jYXB0dXJlKCkpO1xuICAgIH1cbn1cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIH1cbn1cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ29wdGltaXplZC10cnVzdGluZy11cGRhdGUnO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2d1YXJkZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICAgICAgdGhpcy5BcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQsIHRoaXMsIHZtLmNhcHR1cmUoKSk7XG4gICAgfVxufVxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICd0cnVzdGluZy11cGRhdGUnO1xuICAgIH1cbiAgICBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbn1cbiJdfQ== 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'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibReferences, _glimmerRuntimeLibCompiledExpressionsValue) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var TextOpcode = (function (_Opcode) { - _inherits(TextOpcode, _Opcode); + babelHelpers.inherits(TextOpcode, _Opcode); function TextOpcode(_ref) { var text = _ref.text; - _classCallCheck(this, TextOpcode); - _Opcode.call(this); this.type = "text"; this.text = text; } @@ -16946,20 +17461,16 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.TextOpcode = TextOpcode; var OpenPrimitiveElementOpcode = (function (_Opcode2) { - _inherits(OpenPrimitiveElementOpcode, _Opcode2); + babelHelpers.inherits(OpenPrimitiveElementOpcode, _Opcode2); - function OpenPrimitiveElementOpcode(_ref2) { - var tag = _ref2.tag; - - _classCallCheck(this, OpenPrimitiveElementOpcode); - + function OpenPrimitiveElementOpcode(tag) { _Opcode2.call(this); - this.type = "open-primitive-element"; this.tag = tag; + this.type = "open-primitive-element"; } OpenPrimitiveElementOpcode.prototype.evaluate = function evaluate(vm) { vm.stack().openElement(this.tag); }; @@ -16975,21 +17486,41 @@ return OpenPrimitiveElementOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.OpenPrimitiveElementOpcode = OpenPrimitiveElementOpcode; - var OpenDynamicPrimitiveElementOpcode = (function (_Opcode3) { - _inherits(OpenDynamicPrimitiveElementOpcode, _Opcode3); + var OpenComponentElementOpcode = (function (_Opcode3) { + babelHelpers.inherits(OpenComponentElementOpcode, _Opcode3); - function OpenDynamicPrimitiveElementOpcode() { - _classCallCheck(this, OpenDynamicPrimitiveElementOpcode); + function OpenComponentElementOpcode(tag) { + _Opcode3.call(this); + this.tag = tag; + this.type = "open-component-element"; + } - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } + OpenComponentElementOpcode.prototype.evaluate = function evaluate(vm) { + vm.stack().openElement(this.tag, new ComponentElementOperations(vm.env)); + }; - _Opcode3.call.apply(_Opcode3, [this].concat(args)); + 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 (_Opcode4) { + babelHelpers.inherits(OpenDynamicPrimitiveElementOpcode, _Opcode4); + + function OpenDynamicPrimitiveElementOpcode() { + _Opcode4.apply(this, arguments); this.type = "open-dynamic-primitive-element"; } OpenDynamicPrimitiveElementOpcode.prototype.evaluate = function evaluate(vm) { var tagName = vm.frame.getOperand().value(); @@ -17009,12 +17540,10 @@ exports.OpenDynamicPrimitiveElementOpcode = OpenDynamicPrimitiveElementOpcode; var ClassList = (function () { function ClassList() { - _classCallCheck(this, ClassList); - this.list = null; this.isConst = true; } ClassList.prototype.append = function append(reference) { @@ -17037,15 +17566,13 @@ return ClassList; })(); var ClassListReference = (function (_CachedReference) { - _inherits(ClassListReference, _CachedReference); + babelHelpers.inherits(ClassListReference, _CachedReference); function ClassListReference(list) { - _classCallCheck(this, ClassListReference); - _CachedReference.call(this); this.list = []; this.tag = _glimmerReference.combineTagged(list); this.list = list; } @@ -17064,96 +17591,242 @@ if (value !== false && value !== null && value !== undefined) ret.push(value); } return ret.length === 0 ? null : ret.join(' '); } - var CloseElementOpcode = (function (_Opcode4) { - _inherits(CloseElementOpcode, _Opcode4); + var SimpleElementOperations = (function () { + function SimpleElementOperations(env) { + this.env = env; + this.opcodes = null; + this.classList = null; + } - function CloseElementOpcode() { - _classCallCheck(this, CloseElementOpcode); + 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); + } + }; - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + 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); } + }; - _Opcode4.call.apply(_Opcode4, [this].concat(args)); - this.type = "close-element"; - } + 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); + }; - CloseElementOpcode.prototype.evaluate = function evaluate(vm) { - var dom = vm.env.getDOM(); - var stack = vm.stack(); - var element = stack.element; - var groups = stack.elementOperations.groups; + SimpleElementOperations.prototype.flush = function flush(element, vm) { + var env = vm.env; + var opcodes = this.opcodes; + var classList = this.classList; - var classList = new ClassList(); - var flattened = _glimmerUtil.dict(); - var flattenedKeys = []; - // This is a hardcoded merge strategy: - // 1. Classes are merged together split by whitespace - // 2. Other attributes are first-write-wins (which means invocation - // wins over top-level element in components) - for (var i = 0; i < groups.length; i++) { - for (var j = 0; j < groups[i].length; j++) { - var op = groups[i][j]; - var _name = op['name']; - var reference = op['reference']; - if (_name === 'class') { - classList.append(reference); - } else if (!flattened[_name]) { - flattenedKeys.push(_name); - flattened[_name] = op; - } + 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); } } - var className = classList.toReference(); - var attr = 'class'; - var attributeManager = vm.env.attributeFor(element, attr, className, false); - var attribute = new Attribute(element, attributeManager, attr, className); - var opcode = attribute.flush(dom); + 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) { - vm.updateWith(opcode); + var opcodes = this.opcodes; + + if (!opcodes) { + opcodes = this.opcodes = []; + } + opcodes.push(opcode); } - for (var k = 0; k < flattenedKeys.length; k++) { - var _opcode = flattened[flattenedKeys[k]].flush(dom); - if (_opcode) vm.updateWith(_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)); } - stack.closeElement(); }; + 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 (_Opcode5) { + babelHelpers.inherits(FlushElementOpcode, _Opcode5); + + function FlushElementOpcode() { + _Opcode5.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 (_Opcode6) { + babelHelpers.inherits(CloseElementOpcode, _Opcode6); + + function CloseElementOpcode() { + _Opcode6.apply(this, arguments); + this.type = "close-element"; + } + + CloseElementOpcode.prototype.evaluate = function evaluate(vm) { + vm.stack().closeElement(); + }; + return CloseElementOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.CloseElementOpcode = CloseElementOpcode; - var StaticAttrOpcode = (function (_Opcode5) { - _inherits(StaticAttrOpcode, _Opcode5); + var StaticAttrOpcode = (function (_Opcode7) { + babelHelpers.inherits(StaticAttrOpcode, _Opcode7); - function StaticAttrOpcode(_ref3) { - var namespace = _ref3.namespace; - var name = _ref3.name; - var value = _ref3.value; + function StaticAttrOpcode(_ref2) { + var namespace = _ref2.namespace; + var name = _ref2.name; + var value = _ref2.value; - _classCallCheck(this, StaticAttrOpcode); - - _Opcode5.call(this); + _Opcode7.call(this); this.type = "static-attr"; this.namespace = namespace; this.name = name; - this.value = new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(value); + this.value = value; } StaticAttrOpcode.prototype.evaluate = function evaluate(vm) { var name = this.name; var value = this.value; var namespace = this.namespace; if (namespace) { - vm.stack().setAttributeNS(namespace, name, value, false); + vm.stack().setStaticAttributeNS(namespace, name, value); } else { - vm.stack().setAttribute(name, value, false); + vm.stack().setStaticAttribute(name, value); } }; StaticAttrOpcode.prototype.toJSON = function toJSON() { var guid = this._guid; @@ -17165,57 +17838,46 @@ var details = _glimmerUtil.dict(); if (namespace) { details["namespace"] = JSON.stringify(namespace); } details["name"] = JSON.stringify(name); - details["value"] = JSON.stringify(value.value()); + details["value"] = JSON.stringify(value); return { guid: guid, type: type, details: details }; }; return StaticAttrOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.StaticAttrOpcode = StaticAttrOpcode; - var ModifierOpcode = (function (_Opcode6) { - _inherits(ModifierOpcode, _Opcode6); + var ModifierOpcode = (function (_Opcode8) { + babelHelpers.inherits(ModifierOpcode, _Opcode8); - function ModifierOpcode(_ref4) { - var name = _ref4.name; - var manager = _ref4.manager; - var args = _ref4.args; - - _classCallCheck(this, ModifierOpcode); - - _Opcode6.call(this); - this.type = "modifier"; + function ModifierOpcode(name, manager, args) { + _Opcode8.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.element; - var dom = stack.dom; + var element = stack.constructing; + var updateOperations = stack.updateOperations; var args = this.args.evaluate(vm); var dynamicScope = vm.dynamicScope(); - var modifier = manager.install(element, args, dom, 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: manager, - modifier: modifier, - element: element, - dynamicScope: dynamicScope, - args: args - })); + vm.updateWith(new UpdateModifierOpcode(manager, modifier, args)); }; ModifierOpcode.prototype.toJSON = function toJSON() { var guid = this._guid; var type = this.type; @@ -17233,43 +17895,31 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.ModifierOpcode = ModifierOpcode; var UpdateModifierOpcode = (function (_UpdatingOpcode) { - _inherits(UpdateModifierOpcode, _UpdatingOpcode); + babelHelpers.inherits(UpdateModifierOpcode, _UpdatingOpcode); - function UpdateModifierOpcode(_ref5) { - var manager = _ref5.manager; - var modifier = _ref5.modifier; - var element = _ref5.element; - var dynamicScope = _ref5.dynamicScope; - var args = _ref5.args; - - _classCallCheck(this, UpdateModifierOpcode); - + function UpdateModifierOpcode(manager, modifier, args) { _UpdatingOpcode.call(this); - this.type = "update-modifier"; - this.modifier = modifier; this.manager = manager; - this.element = element; - this.dynamicScope = dynamicScope; + 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 element = this.element; - var dynamicScope = this.dynamicScope; - var args = this.args; + var tag = this.tag; var lastUpdated = this.lastUpdated; - if (!args.tag.validate(lastUpdated)) { - manager.update(modifier, element, args, vm.dom, dynamicScope); - this.lastUpdated = args.tag.value(); + if (!tag.validate(lastUpdated)) { + vm.env.scheduleUpdateModifier(modifier, manager); + this.lastUpdated = tag.value(); } }; UpdateModifierOpcode.prototype.toJSON = function toJSON() { return { @@ -17282,49 +17932,71 @@ return UpdateModifierOpcode; })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.UpdateModifierOpcode = UpdateModifierOpcode; - var Attribute = (function () { - function Attribute(element, changeList, name, reference, namespace) { - _classCallCheck(this, Attribute); + 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, changeList, name, reference, namespace) { this.element = element; + this.changeList = changeList; + this.name = name; this.reference = reference; + this.namespace = namespace; + this.element = element; + this.reference = reference; this.changeList = changeList; this.tag = reference.tag; this.name = name; this.cache = null; this.namespace = namespace; } - Attribute.prototype.patch = function patch(dom) { + DynamicAttribute.prototype.patch = function patch(env) { var element = this.element; var cache = this.cache; var value = cache.revalidate(); if (_glimmerReference.isModified(value)) { - this.changeList.updateAttribute(dom, element, this.name, value, this.namespace); + this.changeList.updateAttribute(env, element, this.name, value, this.namespace); } }; - Attribute.prototype.flush = function flush(dom) { + DynamicAttribute.prototype.flush = function flush(env) { var reference = this.reference; var element = this.element; if (_glimmerReference.isConst(reference)) { var value = reference.value(); - this.changeList.setAttribute(dom, element, this.name, value, this.namespace); + this.changeList.setAttribute(env, element, this.name, value, this.namespace); + return null; } else { var cache = this.cache = new _glimmerReference.ReferenceCache(reference); var value = cache.peek(); - this.changeList.setAttribute(dom, element, this.name, value, this.namespace); + this.changeList.setAttribute(env, element, this.name, value, this.namespace); return new PatchElementOpcode(this); } }; - Attribute.prototype.toJSON = function toJSON() { + DynamicAttribute.prototype.toJSON = function toJSON() { var element = this.element; var namespace = this.namespace; var name = this.name; var cache = this.cache; @@ -17346,30 +18018,28 @@ name: name, lastValue: lastValue }; }; - return Attribute; + return DynamicAttribute; })(); - exports.Attribute = Attribute; + exports.DynamicAttribute = DynamicAttribute; function formatElement(element) { return JSON.stringify('<' + element.tagName.toLowerCase() + ' />'); } - var DynamicAttrNSOpcode = (function (_Opcode7) { - _inherits(DynamicAttrNSOpcode, _Opcode7); + var DynamicAttrNSOpcode = (function (_Opcode9) { + babelHelpers.inherits(DynamicAttrNSOpcode, _Opcode9); - function DynamicAttrNSOpcode(_ref6) { - var name = _ref6.name; - var namespace = _ref6.namespace; - var isTrusting = _ref6.isTrusting; + function DynamicAttrNSOpcode(_ref3) { + var name = _ref3.name; + var namespace = _ref3.namespace; + var isTrusting = _ref3.isTrusting; - _classCallCheck(this, DynamicAttrNSOpcode); - - _Opcode7.call(this); + _Opcode9.call(this); this.type = "dynamic-attr"; this.name = name; this.namespace = namespace; this.isTrusting = isTrusting; } @@ -17378,11 +18048,11 @@ var name = this.name; var namespace = this.namespace; var isTrusting = this.isTrusting; var reference = vm.frame.getOperand(); - vm.stack().setAttributeNS(namespace, name, reference, isTrusting); + vm.stack().setDynamicAttributeNS(namespace, name, reference, isTrusting); }; DynamicAttrNSOpcode.prototype.toJSON = function toJSON() { var guid = this._guid; var type = this.type; @@ -17401,31 +18071,29 @@ return DynamicAttrNSOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.DynamicAttrNSOpcode = DynamicAttrNSOpcode; - var DynamicAttrOpcode = (function (_Opcode8) { - _inherits(DynamicAttrOpcode, _Opcode8); + var DynamicAttrOpcode = (function (_Opcode10) { + babelHelpers.inherits(DynamicAttrOpcode, _Opcode10); - function DynamicAttrOpcode(_ref7) { - var name = _ref7.name; - var isTrusting = _ref7.isTrusting; + function DynamicAttrOpcode(_ref4) { + var name = _ref4.name; + var isTrusting = _ref4.isTrusting; - _classCallCheck(this, DynamicAttrOpcode); - - _Opcode8.call(this); + _Opcode10.call(this); this.type = "dynamic-attr"; this.name = name; this.isTrusting = isTrusting; } DynamicAttrOpcode.prototype.evaluate = function evaluate(vm) { var name = this.name; var isTrusting = this.isTrusting; var reference = vm.frame.getOperand(); - vm.stack().setAttribute(name, reference, isTrusting); + vm.stack().setDynamicAttribute(name, reference, isTrusting); }; DynamicAttrOpcode.prototype.toJSON = function toJSON() { var guid = this._guid; var type = this.type; @@ -17441,23 +18109,21 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.DynamicAttrOpcode = DynamicAttrOpcode; var PatchElementOpcode = (function (_UpdatingOpcode2) { - _inherits(PatchElementOpcode, _UpdatingOpcode2); + babelHelpers.inherits(PatchElementOpcode, _UpdatingOpcode2); function PatchElementOpcode(operation) { - _classCallCheck(this, PatchElementOpcode); - _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.getDOM()); + this.operation.patch(vm.env); }; PatchElementOpcode.prototype.toJSON = function toJSON() { var _guid = this._guid; var type = this.type; @@ -17473,19 +18139,17 @@ return PatchElementOpcode; })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.PatchElementOpcode = PatchElementOpcode; - var CommentOpcode = (function (_Opcode9) { - _inherits(CommentOpcode, _Opcode9); + var CommentOpcode = (function (_Opcode11) { + babelHelpers.inherits(CommentOpcode, _Opcode11); - function CommentOpcode(_ref8) { - var comment = _ref8.comment; + function CommentOpcode(_ref5) { + var comment = _ref5.comment; - _classCallCheck(this, CommentOpcode); - - _Opcode9.call(this); + _Opcode11.call(this); this.type = "comment"; this.comment = comment; } CommentOpcode.prototype.evaluate = function evaluate(vm) { @@ -17503,24 +18167,16 @@ return CommentOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.CommentOpcode = CommentOpcode; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBcUJBLFVBQUE7a0JBQUEsVUFBQTs7QUFJRSxpQkFKRixVQUFBLENBSWMsSUFBa0MsRUFBQTtnQkFBaEMsSUFBSSxHQUFOLElBQWtDLENBQWhDLElBQUk7O2tDQUpwQixVQUFBOztBQUtJLDhCQUFPLENBQUM7QUFKSCxnQkFBQSxDQUFBLElBQUksR0FBRyxNQUFNLENBQUM7QUFLbkIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVBILGtCQUFBLFdBU0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDOztBQVhILGtCQUFBLFdBYUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCxvQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2hCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixvQkFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEMsQ0FBQztTQUNIOztlQW5CSCxVQUFBO2lDQXJCUyxNQUFNOzs7O1FBMkNmLDBCQUFBO2tCQUFBLDBCQUFBOztBQUlFLGlCQUpGLDBCQUFBLENBSWMsS0FBZ0MsRUFBQTtnQkFBOUIsR0FBRyxHQUFMLEtBQWdDLENBQTlCLEdBQUc7O2tDQUpuQiwwQkFBQTs7QUFLSSwrQkFBTyxDQUFDO0FBSkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFLckMsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ2hCOztBQVBILGtDQUFBLFdBU0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxLQUFLLEVB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LGtCQUFBO2dCQUNFLEtBQUssR0FBc0IsSUFBSSxDQUEvQixLQUFLO2dCQUFFLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRTVCLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxLQUFLO0FBQ1gsb0JBQUksRUFBSixJQUFJO0FBQ0osdUJBQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFO2FBQzVCLENBQUM7U0FDSDs7ZUF2Qkgsa0JBQUE7aUNBamQ2QixjQUFjOzs7O1FBK2UzQyxhQUFBO2tCQUFBLGFBQUE7O0FBSUUsaUJBSkYsYUFBQSxDQUljLEtBQTJCLEVBQUE7Z0JBQXpCLE9BQU8sR0FBVCxLQUEyQixDQUF6QixPQUFPOztrQ0FKdkIsYUFBQTs7QUFLSSwrQkFBTyxDQUFDO0FBSkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBS3RCLGdCQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN4Qjs7QUFQSCxxQkFBQSxXQVNFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4Qzs7QUFYSCxxQkFBQSxXQWFFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2Ysb0JBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDLENBQUM7U0FDSDs7ZUFuQkgsYUFBQTtpQ0EvZVMsTUFBTSIsImZpbGUiOiJkb20uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGNvZGUsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IER5bmFtaWNTY29wZSB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEZJWE1FLCBJbnRlcm5lZFN0cmluZywgT3BhcXVlLCBEaWN0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7XG4gIENhY2hlZFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlLFxuICBSZWZlcmVuY2VDYWNoZSxcbiAgUmV2aXNpb25UYWcsXG4gIFJldmlzaW9uLFxuICBjb21iaW5lVGFnZ2VkLFxuICBpc0NvbnN0IGFzIGlzQ29uc3RSZWZlcmVuY2UsXG4gIGlzTW9kaWZpZWRcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTW9kaWZpZXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBET01IZWxwZXIgfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBWYWx1ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL3ZhbHVlJztcbmltcG9ydCB7IENvbXBpbGVkQXJncywgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgSUNoYW5nZUxpc3QgfSBmcm9tICcuLi8uLi9kb20vY2hhbmdlLWxpc3RzJztcblxuZXhwb3J0IGNsYXNzIFRleHRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidGV4dFwiO1xuICBwdWJsaWMgdGV4dDogSW50ZXJuZWRTdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyB0ZXh0IH06IHsgdGV4dDogSW50ZXJuZWRTdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuYXBwZW5kVGV4dCh0aGlzLnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGV4dCldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwib3Blbi1wcmltaXRpdmUtZWxlbWVudFwiO1xuICBwdWJsaWMgdGFnOiBJbnRlcm5lZFN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IHRhZyB9OiB7IHRhZzogSW50ZXJuZWRTdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSB0YWc7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5zdGFjaygpLm9wZW5FbGVtZW50KHRoaXMudGFnKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhZyldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm9wZW4tZHluYW1pYy1wcmltaXRpdmUtZWxlbWVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB0YWdOYW1lID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpLnZhbHVlKCkgYXMgRklYTUU8J3VzZXIgc3RyaW5nIHRvIEludGVybmVkU3RyaW5nJz47XG4gICAgdm0uc3RhY2soKS5vcGVuRWxlbWVudCh0YWdOYW1lKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10gPSBudWxsO1xuICBwcml2YXRlIGlzQ29uc3QgPSB0cnVlO1xuXG4gIGFwcGVuZChyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG5cbiAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHRvUmVmZXJlbmNlKCk6IFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gTlVMTF9SRUZFUkVOQ0U7XG5cbiAgICBpZiAoaXNDb25zdCkgcmV0dXJuIG5ldyBWYWx1ZVJlZmVyZW5jZSh0b0NsYXNzTmFtZShsaXN0KSk7XG5cbiAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgfVxuXG59XG5cbmNsYXNzIENsYXNzTGlzdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgbGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdG9DbGFzc05hbWUodGhpcy5saXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKSB7XG4gIGxldCByZXQgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPCd1c2UgT3BhcXVlIGFuZCBub3JtYWxpemUnPiA9IGxpc3RbaV0udmFsdWUoKTtcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHJldC5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiAocmV0Lmxlbmd0aCA9PT0gMCkgPyBudWxsIDogcmV0LmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGNsYXNzIENsb3NlRWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJjbG9zZS1lbGVtZW50XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IGRvbSA9IHZtLmVudi5nZXRET00oKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaygpO1xuICAgIGxldCB7IGVsZW1lbnQsIGVsZW1lbnRPcGVyYXRpb25zOiB7IGdyb3VwcyB9IH0gPSBzdGFjaztcblxuICAgIGxldCBjbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgbGV0IGZsYXR0ZW5lZCA9IGRpY3Q8QXR0cmlidXRlPigpO1xuICAgIGxldCBmbGF0dGVuZWRLZXlzID0gW107XG5cbiAgICAvLyBUaGlzIGlzIGEgaGFyZGNvZGVkIG1lcmdlIHN0cmF0ZWd5OlxuICAgIC8vIDEuIENsYXNzZXMgYXJlIG1lcmdlZCB0b2dldGhlciBzcGxpdCBieSB3aGl0ZXNwYWNlXG4gICAgLy8gMi4gT3RoZXIgYXR0cmlidXRlcyBhcmUgZmlyc3Qtd3JpdGUtd2lucyAod2hpY2ggbWVhbnMgaW52b2NhdGlvblxuICAgIC8vICAgIHdpbnMgb3ZlciB0b3AtbGV2ZWwgZWxlbWVudCBpbiBjb21wb25lbnRzKVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZ3JvdXBzW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGxldCBvcCA9IGdyb3Vwc1tpXVtqXTtcbiAgICAgICAgbGV0IG5hbWUgPSBvcFsnbmFtZSddIGFzIEZJWE1FPHN0cmluZz47XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSBvcFsncmVmZXJlbmNlJ10gYXMgRklYTUU8UmVmZXJlbmNlPHN0cmluZz4+O1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghZmxhdHRlbmVkW25hbWVdKSB7XG4gICAgICAgICAgZmxhdHRlbmVkS2V5cy5wdXNoKG5hbWUpO1xuICAgICAgICAgIGZsYXR0ZW5lZFtuYW1lXSA9IG9wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpO1xuICAgIGxldCBhdHRyID0gJ2NsYXNzJyBhcyBJbnRlcm5lZFN0cmluZztcbiAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHZtLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgYXR0ciwgY2xhc3NOYW1lLCBmYWxzZSk7XG4gICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgYXR0ciwgY2xhc3NOYW1lKTtcbiAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGRvbSk7XG5cbiAgICBpZiAob3Bjb2RlKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBmbGF0dGVuZWRLZXlzLmxlbmd0aDsgaysrKSB7XG4gICAgICBsZXQgb3Bjb2RlID0gZmxhdHRlbmVkW2ZsYXR0ZW5lZEtleXNba11dLmZsdXNoKGRvbSk7XG4gICAgICBpZiAob3Bjb2RlKSB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgfVxuXG4gICAgc3RhY2suY2xvc2VFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNBdHRyT3B0aW9ucyB7XG4gIG5hbWVzcGFjZTogSW50ZXJuZWRTdHJpbmc7XG4gIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICB2YWx1ZTogSW50ZXJuZWRTdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG4gIHB1YmxpYyBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIHB1YmxpYyB2YWx1ZTogVmFsdWVSZWZlcmVuY2U8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUgfTogU3RhdGljQXR0ck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlIH0gPSB0aGlzO1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHZtLnN0YWNrKCkuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5zdGFjaygpLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJ2YWx1ZVwiXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlLnZhbHVlKCkpO1xuXG4gICAgcmV0dXJuIHsgZ3VpZCwgdHlwZSwgZGV0YWlscyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RpZmllck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJtb2RpZmllclwiO1xuICBwdWJsaWMgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIHB1YmxpYyBhcmdzOiBDb21waWxlZEFyZ3M7XG4gIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT47XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCBtYW5hZ2VyLCBhcmdzIH06IHsgbmFtZTogSW50ZXJuZWRTdHJpbmcsIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LCBhcmdzOiBDb21waWxlZEFyZ3MgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyIH0gPSB0aGlzO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrKCk7XG4gICAgbGV0IHsgZWxlbWVudCwgZG9tIH0gPSBzdGFjaztcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJncy5ldmFsdWF0ZSh2bSk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5pbnN0YWxsKGVsZW1lbnQsIGFyZ3MsIGRvbSwgZHluYW1pY1Njb3BlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihtb2RpZmllcik7XG5cbiAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUoe1xuICAgICAgbWFuYWdlcixcbiAgICAgIG1vZGlmaWVyLFxuICAgICAgZWxlbWVudCxcbiAgICAgIGR5bmFtaWNTY29wZSxcbiAgICAgIGFyZ3NcbiAgICB9KSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIG5hbWUsIGFyZ3MgfSA9IHRoaXM7XG5cbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcInR5cGVcIl0gPSBKU09OLnN0cmluZ2lmeSh0eXBlKTtcbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJhcmdzXCJdID0gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG5cbiAgICByZXR1cm4geyBndWlkLCB0eXBlLCBkZXRhaWxzIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZU1vZGlmaWVyT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidXBkYXRlLW1vZGlmaWVyXCI7XG5cbiAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50O1xuICBwcml2YXRlIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcml2YXRlIGFyZ3M6IEV2YWx1YXRlZEFyZ3M7XG4gIHByaXZhdGUgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT47XG4gIHByaXZhdGUgbW9kaWZpZXI6IE9wYXF1ZTtcbiAgcHJpdmF0ZSBsYXN0VXBkYXRlZDogUmV2aXNpb247XG5cbiAgY29uc3RydWN0b3IoeyBtYW5hZ2VyLCBtb2RpZmllciwgZWxlbWVudCwgZHluYW1pY1Njb3BlLCBhcmdzIH06IHsgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT4sIG1vZGlmaWVyOiBPcGFxdWUsIGVsZW1lbnQ6IEVsZW1lbnQsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLCBhcmdzOiBFdmFsdWF0ZWRBcmdzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubW9kaWZpZXIgPSBtb2RpZmllcjtcbiAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnRhZyA9IGFyZ3MudGFnO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSBhcmdzLnRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgZWxlbWVudCwgZHluYW1pY1Njb3BlLCBhcmdzLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghYXJncy50YWcudmFsaWRhdGUobGFzdFVwZGF0ZWQpKSB7XG4gICAgICBtYW5hZ2VyLnVwZGF0ZShtb2RpZmllciwgZWxlbWVudCwgYXJncywgdm0uZG9tLCBkeW5hbWljU2NvcGUpO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IGFyZ3MudGFnLnZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuYXJncyldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlIHtcbiAgcHJpdmF0ZSBjaGFuZ2VMaXN0OiBJQ2hhbmdlTGlzdDtcbiAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50O1xuICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT47XG4gIHByaXZhdGUgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPE9wYXF1ZT47XG4gIHByaXZhdGUgbmFtZXNwYWNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIG5hbWU6IEludGVybmVkU3RyaW5nO1xuXG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnQsIGNoYW5nZUxpc3Q6IElDaGFuZ2VMaXN0LCBuYW1lOiBJbnRlcm5lZFN0cmluZywgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLmNoYW5nZUxpc3QgPSBjaGFuZ2VMaXN0O1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB9XG5cbiAgcGF0Y2goZG9tOiBET01IZWxwZXIpIHtcbiAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCB2YWx1ZSA9IGNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5jaGFuZ2VMaXN0LnVwZGF0ZUF0dHJpYnV0ZShkb20sIGVsZW1lbnQsIHRoaXMubmFtZSwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaChkb206IERPTUhlbHBlcik6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBsZXQgeyByZWZlcmVuY2UsIGVsZW1lbnQgfSA9IHRoaXM7XG5cbiAgICBpZiAoaXNDb25zdFJlZmVyZW5jZShyZWZlcmVuY2UpKSB7XG4gICAgICBsZXQgdmFsdWUgPSByZWZlcmVuY2UudmFsdWUoKTtcbiAgICAgIHRoaXMuY2hhbmdlTGlzdC5zZXRBdHRyaWJ1dGUoZG9tLCBlbGVtZW50LCB0aGlzLm5hbWUsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjYWNoZSA9IHRoaXMuY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICAgIHRoaXMuY2hhbmdlTGlzdC5zZXRBdHRyaWJ1dGUoZG9tLCBlbGVtZW50LCB0aGlzLm5hbWUsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICByZXR1cm4gbmV3IFBhdGNoRWxlbWVudE9wY29kZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogRGljdDxzdHJpbmc+IHtcbiAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGZvcm1hdHRlZEVsZW1lbnQgPSBmb3JtYXRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGxldCBsYXN0VmFsdWUgPSBjYWNoZS5wZWVrKCkgYXMgc3RyaW5nO1xuXG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbGFzdFZhbHVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50OiBmb3JtYXR0ZWRFbGVtZW50LFxuICAgICAgdHlwZTogJ2F0dHJpYnV0ZScsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBuYW1lLFxuICAgICAgbGFzdFZhbHVlXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYDwke2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfSAvPmApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNBdHRyTlNPcHRpb25zIHtcbiAgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIG5hbWVzcGFjZTogSW50ZXJuZWRTdHJpbmc7XG4gIGlzVHJ1c3Rpbmc6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0ck5TT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuICBwdWJsaWMgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIHB1YmxpYyBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgaXNUcnVzdGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9OiBEeW5hbWljQXR0ck5TT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLmlzVHJ1c3RpbmcgPSBpc1RydXN0aW5nO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHsgbmFtZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0gPSB0aGlzO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgdm0uc3RhY2soKS5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIG5hbWUsIG5hbWVzcGFjZSB9ID0gdGhpcztcblxuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJ2YWx1ZVwiXSA9IFwiJE9QRVJBTkRcIjtcblxuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIGRldGFpbHNbXCJuYW1lc3BhY2VcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lc3BhY2UpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUF0dHJPcHRpb25zIHtcbiAgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIGlzVHJ1c3Rpbmc6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0ck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkeW5hbWljLWF0dHJcIjtcbiAgcHVibGljIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgaXNUcnVzdGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIGlzVHJ1c3RpbmcgfTogU2ltcGxlQXR0ck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pc1RydXN0aW5nID0gaXNUcnVzdGluZztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIGlzVHJ1c3RpbmcgfSA9IHRoaXM7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICB2bS5zdGFjaygpLnNldEF0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lIH0gPSB0aGlzO1xuXG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJuYW1lXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZSk7XG4gICAgZGV0YWlsc1tcInZhbHVlXCJdID0gXCIkT1BFUkFORFwiO1xuXG4gICAgcmV0dXJuIHsgZ3VpZCwgdHlwZSwgZGV0YWlscyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXRjaEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG5cbiAgcHJpdmF0ZSBvcGVyYXRpb246IEF0dHJpYnV0ZTtcblxuICBjb25zdHJ1Y3RvcihvcGVyYXRpb246IEF0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYuZ2V0RE9NKCkpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRPcHRpb25zIHtcbiAgY29tbWVudDogSW50ZXJuZWRTdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImNvbW1lbnRcIjtcbiAgcHVibGljIGNvbW1lbnQ6IEludGVybmVkU3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHsgY29tbWVudCB9OiBDb21tZW50T3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuYXBwZW5kQ29tbWVudCh0aGlzLmNvbW1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuY29tbWVudCldXG4gICAgfTtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9kb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBd0JNLFVBQWtCOzhCQUFsQixVQUFrQjs7QUFJdEIsaUJBSkksVUFBa0IsQ0FJVixJQUEwQixFQUFBO2dCQUF4QixJQUFJLEdBQU4sSUFBMEIsQ0FBeEIsSUFBSTs7QUFDaEIsOEJBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUtuQixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7O0FBUEcsa0JBQWtCLFdBU3RCLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQzs7QUFYRyxrQkFBa0IsV0FhdEIsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCxvQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2hCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixvQkFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEMsQ0FBQztTQUNIOztlQW5CRyxVQUFrQjtpQ0F4QmYsTUFBTTs7OztRQThDVCwwQkFBa0M7OEJBQWxDLDBCQUFrQzs7QUFHdEMsaUJBSEksMEJBQWtDLENBR2xCLEdBQVcsRUFBQTtBQUM3QiwrQkFBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFRO0FBRnhCLGdCQUFBLENBQUEsSUFBSSxHQUFHLHdCQUF3QixDQUFDO1NBSXRDOztBQUxHLGtDQUFrQyxXQU90QyxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsY0FBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEM7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QUE7Z0JBQXpCLE9BQU8sR0FBVCxLQUEyQixDQUF6QixPQUFPOztBQUNuQixnQ0FBTyxDQUFDO0FBSkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsU0FBUyxDQUFDO0FBS3RCLGdCQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN4Qjs7QUFQRyxxQkFBcUIsV0FTekIsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDOztBQVhHLHFCQUFxQixXQWF6QixNQUFNLEdBQUEsa0JBQUE7QUFDSixtQkFBTztBQUNMLG9CQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDaEIsb0JBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNmLG9CQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQyxDQUFDO1NBQ0g7O2VBbkJHLGFBQXFCO2lDQTNwQmxCLE1BQU0iLCJmaWxlIjoiZG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3Bjb2RlLCBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRklYX1JFSUZJQ0FUSU9OIH0gZnJvbSAnLi4vLi4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBGSVhNRSwgT3B0aW9uLCBPcGFxdWUsIERpY3QsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHtcbiAgQ2FjaGVkUmVmZXJlbmNlLFxuICBSZWZlcmVuY2UsXG4gIFJlZmVyZW5jZUNhY2hlLFxuICBSZXZpc2lvblRhZyxcbiAgUmV2aXNpb24sXG4gIFBhdGhSZWZlcmVuY2UsXG4gIGNvbWJpbmVUYWdnZWQsXG4gIGlzQ29uc3QgYXMgaXNDb25zdFJlZmVyZW5jZSxcbiAgaXNNb2RpZmllZFxufSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBNb2RpZmllck1hbmFnZXIgfSBmcm9tICcuLi8uLi9tb2RpZmllci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBWYWx1ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL3ZhbHVlJztcbmltcG9ydCB7IENvbXBpbGVkQXJncywgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgSUNoYW5nZUxpc3QgfSBmcm9tICcuLi8uLi9kb20vY2hhbmdlLWxpc3RzJztcbmltcG9ydCB7IEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUZXh0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInRleHRcIjtcbiAgcHVibGljIHRleHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IHRleHQgfTogeyB0ZXh0OiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuYXBwZW5kVGV4dCh0aGlzLnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGV4dCldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwib3Blbi1wcmltaXRpdmUtZWxlbWVudFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFnOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uc3RhY2soKS5vcGVuRWxlbWVudCh0aGlzLnRhZyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YWcpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5Db21wb25lbnRFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm9wZW4tY29tcG9uZW50LWVsZW1lbnRcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkub3BlbkVsZW1lbnQodGhpcy50YWcsIG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhZyldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm9wZW4tZHluYW1pYy1wcmltaXRpdmUtZWxlbWVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB0YWdOYW1lID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpLnZhbHVlKCk7XG4gICAgdm0uc3RhY2soKS5vcGVuRWxlbWVudCh0YWdOYW1lKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBDbGFzc0xpc3Qge1xuICBwcml2YXRlIGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10gPSBudWxsO1xuICBwcml2YXRlIGlzQ29uc3QgPSB0cnVlO1xuXG4gIGFwcGVuZChyZWZlcmVuY2U6IFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcblxuICAgIGlmIChsaXN0ID09PSBudWxsKSBsaXN0ID0gdGhpcy5saXN0ID0gW107XG5cbiAgICBsaXN0LnB1c2gocmVmZXJlbmNlKTtcbiAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHRvUmVmZXJlbmNlKCk6IFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgICBsZXQgeyBsaXN0LCBpc0NvbnN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFsaXN0KSByZXR1cm4gTlVMTF9SRUZFUkVOQ0U7XG5cbiAgICBpZiAoaXNDb25zdCkgcmV0dXJuIG5ldyBWYWx1ZVJlZmVyZW5jZSh0b0NsYXNzTmFtZShsaXN0KSk7XG5cbiAgICByZXR1cm4gbmV3IENsYXNzTGlzdFJlZmVyZW5jZShsaXN0KTtcbiAgfVxuXG59XG5cbmNsYXNzIENsYXNzTGlzdFJlZmVyZW5jZSBleHRlbmRzIENhY2hlZFJlZmVyZW5jZTxzdHJpbmc+IHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG4gIHByaXZhdGUgbGlzdDogUmVmZXJlbmNlPHN0cmluZz5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxpc3Q6IFJlZmVyZW5jZTxzdHJpbmc+W10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gY29tYmluZVRhZ2dlZChsaXN0KTtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdG9DbGFzc05hbWUodGhpcy5saXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0NsYXNzTmFtZShsaXN0OiBSZWZlcmVuY2U8c3RyaW5nPltdKSB7XG4gIGxldCByZXQgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgdmFsdWU6IEZJWE1FPE9wYXF1ZSwgJ3VzZSBPcGFxdWUgYW5kIG5vcm1hbGl6ZSc+ID0gbGlzdFtpXS52YWx1ZSgpO1xuICAgIGlmICh2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0LnB1c2godmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIChyZXQubGVuZ3RoID09PSAwKSA/IG51bGwgOiByZXQuam9pbignICcpO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMgaW1wbGVtZW50cyBFbGVtZW50T3BlcmF0aW9ucyB7XG4gIHByaXZhdGUgb3Bjb2RlczogVXBkYXRpbmdPcGNvZGVbXSA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBDbGFzc0xpc3QgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhuZXcgVmFsdWVSZWZlcmVuY2UodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICBsZXQgbnNBdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UsIG5hbWVzcGFjZSk7XG5cbiAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gIH1cblxuICBmbHVzaChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgdm06IFZNKSB7XG4gICAgbGV0IHsgZW52IH0gPSB2bTtcbiAgICBsZXQgeyBvcGNvZGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgb3Bjb2RlcyAmJiBpIDwgb3Bjb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGVzW2ldKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NMaXN0KSB7XG4gICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IGVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgJ2NsYXNzJywgZmFsc2UpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsICdjbGFzcycsIGNsYXNzTGlzdC50b1JlZmVyZW5jZSgpKTtcbiAgICAgIGxldCBvcGNvZGUgPSBhdHRyaWJ1dGUuZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFkZENsYXNzKHJlZmVyZW5jZTogUGF0aFJlZmVyZW5jZTxzdHJpbmc+KSB7XG4gICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgIH1cblxuICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZS5mbHVzaCh0aGlzLmVudik7XG5cbiAgICBpZiAob3Bjb2RlKSB7XG4gICAgICBsZXQgeyBvcGNvZGVzIH0gPSB0aGlzO1xuXG4gICAgICBpZiAoIW9wY29kZXMpIHtcbiAgICAgICAgb3Bjb2RlcyA9IHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBvcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIGltcGxlbWVudHMgRWxlbWVudE9wZXJhdGlvbnMge1xuICBwcml2YXRlIGF0dHJpYnV0ZU5hbWVzID0gbnVsbDtcbiAgcHJpdmF0ZSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSA9IG51bGw7XG4gIHByaXZhdGUgY2xhc3NMaXN0OiBDbGFzc0xpc3QgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhuZXcgVmFsdWVSZWZlcmVuY2UodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIG5ldyBTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZywgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPHN0cmluZz4sIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaG91bGRBZGRBdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIGxldCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5lbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsIG5hbWUsIGlzVHJ1c3RpbmcpO1xuICAgICAgbGV0IGF0dHJpYnV0ZSA9IG5ldyBEeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU1hbmFnZXIsIG5hbWUsIHJlZmVyZW5jZSk7XG5cbiAgICAgIHRoaXMuYWRkQXR0cmlidXRlKG5hbWUsIGF0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRHluYW1pY0F0dHJpYnV0ZU5TKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPiwgaXNUcnVzdGluZzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSxpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuXG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIHZtOiBWTSkge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICBsZXQgeyBhdHRyaWJ1dGVzLCBjbGFzc0xpc3QgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcblxuICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG5cbiAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkQXR0cmlidXRlKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbGFzcyhyZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8c3RyaW5nPikge1xuICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcblxuICAgIGlmICghY2xhc3NMaXN0KSB7XG4gICAgICBjbGFzc0xpc3QgPSB0aGlzLmNsYXNzTGlzdCA9IG5ldyBDbGFzc0xpc3QoKTtcbiAgICB9XG5cbiAgICBjbGFzc0xpc3QuYXBwZW5kKHJlZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogQXR0cmlidXRlKSB7XG4gICAgbGV0IHsgYXR0cmlidXRlTmFtZXMsIGF0dHJpYnV0ZXMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgIGF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbHVzaEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZmx1c2gtZWxlbWVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrKCk7XG5cbiAgICBzdGFjay5vcGVyYXRpb25zLmZsdXNoKHN0YWNrLmNvbnN0cnVjdGluZywgdm0pO1xuICAgIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiY2xvc2UtZWxlbWVudFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnN0YWNrKCkuY2xvc2VFbGVtZW50KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNBdHRyT3B0aW9ucyB7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBdHRyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG4gIHB1YmxpYyBuYW1lc3BhY2U6IHN0cmluZztcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlIH06IFN0YXRpY0F0dHJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgfSA9IHRoaXM7XG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgdm0uc3RhY2soKS5zZXRTdGF0aWNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uc3RhY2soKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJ2YWx1ZVwiXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibW9kaWZpZXJcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWU6IHN0cmluZywgcHJpdmF0ZSBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPiwgcHJpdmF0ZSBhcmdzOiBDb21waWxlZEFyZ3MpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHsgbWFuYWdlciB9ID0gdGhpcztcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaygpO1xuICAgIGxldCB7IGNvbnN0cnVjdGluZzogZWxlbWVudCwgdXBkYXRlT3BlcmF0aW9ucyB9ID0gc3RhY2s7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgbW9kaWZpZXIgPSBtYW5hZ2VyLmNyZWF0ZShlbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcblxuICAgIHZtLmVudi5zY2hlZHVsZUluc3RhbGxNb2RpZmllcihtb2RpZmllciwgbWFuYWdlcik7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IobW9kaWZpZXIpO1xuXG4gICAgaWYgKGRlc3RydWN0b3IpIHtcbiAgICAgIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xuICAgIH1cblxuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZU1vZGlmaWVyT3Bjb2RlKFxuICAgICAgbWFuYWdlcixcbiAgICAgIG1vZGlmaWVyLFxuICAgICAgYXJnc1xuICAgICkpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lLCBhcmdzIH0gPSB0aGlzO1xuXG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJ0eXBlXCJdID0gSlNPTi5zdHJpbmdpZnkodHlwZSk7XG4gICAgZGV0YWlsc1tcIm5hbWVcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lKTtcbiAgICBkZXRhaWxzW1wiYXJnc1wiXSA9IEpTT04uc3RyaW5naWZ5KGFyZ3MpO1xuXG4gICAgcmV0dXJuIHsgZ3VpZCwgdHlwZSwgZGV0YWlscyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVNb2RpZmllck9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICBwcml2YXRlIGxhc3RVcGRhdGVkOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hbmFnZXI6IE1vZGlmaWVyTWFuYWdlcjxPcGFxdWU+LFxuICAgIHByaXZhdGUgbW9kaWZpZXI6IE9wYXF1ZSxcbiAgICBwcml2YXRlIGFyZ3M6IEV2YWx1YXRlZEFyZ3NcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGFyZ3MudGFnO1xuICAgIHRoaXMubGFzdFVwZGF0ZWQgPSBhcmdzLnRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBtb2RpZmllciwgdGFnLCBsYXN0VXBkYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghdGFnLnZhbGlkYXRlKGxhc3RVcGRhdGVkKSkge1xuICAgICAgdm0uZW52LnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmFyZ3MpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZsdXNoKGVudjogRW52aXJvbm1lbnQpOiBPcHRpb248VXBkYXRpbmdPcGNvZGU+O1xufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIGltcGxlbWVudHMgQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgdmFsdWU6IHN0cmluZyxcbiAgICBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZ1xuICApIHt9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lLCB0aGlzLnZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyaWJ1dGUgaW1wbGVtZW50cyBBdHRyaWJ1dGUgIHtcbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBwdWJsaWMgdGFnOiBSZXZpc2lvblRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LFxuICAgIHByaXZhdGUgY2hhbmdlTGlzdDogSUNoYW5nZUxpc3QsXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgcHJpdmF0ZSBuYW1lc3BhY2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLmNoYW5nZUxpc3QgPSBjaGFuZ2VMaXN0O1xuICAgIHRoaXMudGFnID0gcmVmZXJlbmNlLnRhZztcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY2FjaGUgPSBudWxsO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB9XG5cbiAgcGF0Y2goZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGVsZW1lbnQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IHZhbHVlID0gY2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLmNoYW5nZUxpc3QudXBkYXRlQXR0cmlidXRlKGVudiwgZWxlbWVudCBhcyBGSVhNRTxFbGVtZW50LCAnbmVlZHMgdG8gYmUgcmVpZmllZCBwcm9wZXJseSc+LCB0aGlzLm5hbWUsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goZW52OiBFbnZpcm9ubWVudCk6IE9wdGlvbjxVcGRhdGluZ09wY29kZT4ge1xuICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcblxuICAgIGlmIChpc0NvbnN0UmVmZXJlbmNlKHJlZmVyZW5jZSkpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgICAgdGhpcy5jaGFuZ2VMaXN0LnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIHRoaXMubmFtZSwgdmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICB0aGlzLmNoYW5nZUxpc3Quc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdGhpcy5uYW1lLCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IERpY3Q8c3RyaW5nPiB7XG4gICAgbGV0IHsgZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCBmb3JtYXR0ZWRFbGVtZW50ID0gZm9ybWF0RWxlbWVudChlbGVtZW50KTtcbiAgICBsZXQgbGFzdFZhbHVlID0gY2FjaGUucGVlaygpIGFzIHN0cmluZztcblxuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxhc3RWYWx1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgbmFtZSxcbiAgICAgIGxhc3RWYWx1ZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0RWxlbWVudChlbGVtZW50OiBTaW1wbGUuRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShgPCR7ZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9IC8+YCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0F0dHJOU09wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBpc1RydXN0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJOU09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJkeW5hbWljLWF0dHJcIjtcbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIG5hbWVzcGFjZTogc3RyaW5nO1xuICBwdWJsaWMgaXNUcnVzdGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9OiBEeW5hbWljQXR0ck5TT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLmlzVHJ1c3RpbmcgPSBpc1RydXN0aW5nO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHsgbmFtZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0gPSB0aGlzO1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgdm0uc3RhY2soKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lLCBuYW1lc3BhY2UgfSA9IHRoaXM7XG5cbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcIm5hbWVcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lKTtcbiAgICBkZXRhaWxzW1widmFsdWVcIl0gPSBcIiRPUEVSQU5EXCI7XG5cbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBndWlkLCB0eXBlLCBkZXRhaWxzIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVBdHRyT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNUcnVzdGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgaXNUcnVzdGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIGlzVHJ1c3RpbmcgfTogU2ltcGxlQXR0ck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pc1RydXN0aW5nID0gaXNUcnVzdGluZztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCB7IG5hbWUsIGlzVHJ1c3RpbmcgfSA9IHRoaXM7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICB2bS5zdGFjaygpLnNldER5bmFtaWNBdHRyaWJ1dGUobmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgbmFtZSB9ID0gdGhpcztcblxuICAgIGxldCBkZXRhaWxzID0gZGljdDxzdHJpbmc+KCk7XG5cbiAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIGRldGFpbHNbXCJ2YWx1ZVwiXSA9IFwiJE9QRVJBTkRcIjtcblxuICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGF0Y2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicGF0Y2gtZWxlbWVudFwiO1xuXG4gIHByaXZhdGUgb3BlcmF0aW9uOiBEeW5hbWljQXR0cmlidXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogRHluYW1pY0F0dHJpYnV0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcGVyYXRpb24udGFnO1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5wYXRjaCh2bS5lbnYpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkLCB0eXBlLCBvcGVyYXRpb24gfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgZGV0YWlsczogb3BlcmF0aW9uLnRvSlNPTigpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRPcHRpb25zIHtcbiAgY29tbWVudDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29tbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJjb21tZW50XCI7XG4gIHB1YmxpYyBjb21tZW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyBjb21tZW50IH06IENvbW1lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbW1lbnQgPSBjb21tZW50O1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uc3RhY2soKS5hcHBlbmRDb21tZW50KHRoaXMuY29tbWVudCk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5jb21tZW50KV1cbiAgICB9O1xuICB9XG59XG4iLCJpbXBvcnQgeyBPcGNvZGUsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IENhY2hlZFJlZmVyZW5jZSwgUmVmZXJlbmNlQ2FjaGUsIGNvbWJpbmVUYWdnZWQsIGlzQ29uc3QgYXMgaXNDb25zdFJlZmVyZW5jZSwgaXNNb2RpZmllZCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBWYWx1ZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL3ZhbHVlJztcbmV4cG9ydCBjbGFzcyBUZXh0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih7IHRleHQgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uc3RhY2soKS5hcHBlbmRUZXh0KHRoaXMudGV4dCk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50ZXh0KV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy50eXBlID0gXCJvcGVuLXByaW1pdGl2ZS1lbGVtZW50XCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLnN0YWNrKCkub3BlbkVsZW1lbnQodGhpcy50YWcpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFnKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3BlbkNvbXBvbmVudEVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy50eXBlID0gXCJvcGVuLWNvbXBvbmVudC1lbGVtZW50XCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLnN0YWNrKCkub3BlbkVsZW1lbnQodGhpcy50YWcsIG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhZyldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwib3Blbi1keW5hbWljLXByaW1pdGl2ZS1lbGVtZW50XCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpLnZhbHVlKCk7XG4gICAgICAgIHZtLnN0YWNrKCkub3BlbkVsZW1lbnQodGFnTmFtZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgICAgICB9O1xuICAgIH1cbn1cbmNsYXNzIENsYXNzTGlzdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGlzdCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNDb25zdCA9IHRydWU7XG4gICAgfVxuICAgIGFwcGVuZChyZWZlcmVuY2UpIHtcbiAgICAgICAgbGV0IHsgbGlzdCwgaXNDb25zdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKGxpc3QgPT09IG51bGwpXG4gICAgICAgICAgICBsaXN0ID0gdGhpcy5saXN0ID0gW107XG4gICAgICAgIGxpc3QucHVzaChyZWZlcmVuY2UpO1xuICAgICAgICB0aGlzLmlzQ29uc3QgPSBpc0NvbnN0ICYmIGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgdG9SZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCB7IGxpc3QsIGlzQ29uc3QgfSA9IHRoaXM7XG4gICAgICAgIGlmICghbGlzdClcbiAgICAgICAgICAgIHJldHVybiBOVUxMX1JFRkVSRU5DRTtcbiAgICAgICAgaWYgKGlzQ29uc3QpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFZhbHVlUmVmZXJlbmNlKHRvQ2xhc3NOYW1lKGxpc3QpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDbGFzc0xpc3RSZWZlcmVuY2UobGlzdCk7XG4gICAgfVxufVxuY2xhc3MgQ2xhc3NMaXN0UmVmZXJlbmNlIGV4dGVuZHMgQ2FjaGVkUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihsaXN0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmVUYWdnZWQobGlzdCk7XG4gICAgICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gICAgfVxuICAgIGNvbXB1dGUoKSB7XG4gICAgICAgIHJldHVybiB0b0NsYXNzTmFtZSh0aGlzLmxpc3QpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRvQ2xhc3NOYW1lKGxpc3QpIHtcbiAgICBsZXQgcmV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGxpc3RbaV0udmFsdWUoKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gKHJldC5sZW5ndGggPT09IDApID8gbnVsbCA6IHJldC5qb2luKCcgJyk7XG59XG5leHBvcnQgY2xhc3MgU2ltcGxlRWxlbWVudE9wZXJhdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKGVudikge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGFzc0xpc3QgPSBudWxsO1xuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MobmV3IFZhbHVlUmVmZXJlbmNlKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCkuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGRTdGF0aWNBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKS5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGFkZER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgcmVmZXJlbmNlLCBpc1RydXN0aW5nKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmVudi5hdHRyaWJ1dGVGb3IoZWxlbWVudCwgbmFtZSwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuc0F0dHJpYnV0ZSk7XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdm07XG4gICAgICAgIGxldCB7IG9wY29kZXMsIGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IG9wY29kZXMgJiYgaSA8IG9wY29kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgob3Bjb2Rlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gbnVsbDtcbiAgICB9XG4gICAgYWRkQ2xhc3MocmVmZXJlbmNlKSB7XG4gICAgICAgIGxldCB7IGNsYXNzTGlzdCB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGNsYXNzTGlzdCA9IHRoaXMuY2xhc3NMaXN0ID0gbmV3IENsYXNzTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsYXNzTGlzdC5hcHBlbmQocmVmZXJlbmNlKTtcbiAgICB9XG4gICAgYWRkQXR0cmlidXRlKGF0dHJpYnV0ZSkge1xuICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKHRoaXMuZW52KTtcbiAgICAgICAgaWYgKG9wY29kZSkge1xuICAgICAgICAgICAgbGV0IHsgb3Bjb2RlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGlmICghb3Bjb2Rlcykge1xuICAgICAgICAgICAgICAgIG9wY29kZXMgPSB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wY29kZXMucHVzaChvcGNvZGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYpIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNsYXNzTGlzdCA9IG51bGw7XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhuZXcgVmFsdWVSZWZlcmVuY2UodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbmV3IFN0YXRpY0F0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFkZFN0YXRpY0F0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEF0dHJpYnV0ZShuYW1lLCBuZXcgU3RhdGljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHJlZmVyZW5jZSwgaXNUcnVzdGluZykge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcyhyZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCBuYW1lLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGREeW5hbWljQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQWRkQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZW52LmF0dHJpYnV0ZUZvcihlbGVtZW50LCBuYW1lLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UpO1xuICAgICAgICAgICAgbGV0IG5zQXR0cmlidXRlID0gbmV3IER5bmFtaWNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTWFuYWdlciwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpO1xuICAgICAgICAgICAgdGhpcy5hZGRBdHRyaWJ1dGUobmFtZSwgbnNBdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoKGVsZW1lbnQsIHZtKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IHsgYXR0cmlidXRlcywgY2xhc3NMaXN0IH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgYXR0cmlidXRlcyAmJiBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG9wY29kZSA9IGF0dHJpYnV0ZXNbaV0uZmx1c2goZW52KTtcbiAgICAgICAgICAgIGlmIChvcGNvZGUpIHtcbiAgICAgICAgICAgICAgICB2bS51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzTGlzdCkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZU1hbmFnZXIgPSBlbnYuYXR0cmlidXRlRm9yKGVsZW1lbnQsICdjbGFzcycsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSBuZXcgRHluYW1pY0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVNYW5hZ2VyLCAnY2xhc3MnLCBjbGFzc0xpc3QudG9SZWZlcmVuY2UoKSk7XG4gICAgICAgICAgICBsZXQgb3Bjb2RlID0gYXR0cmlidXRlLmZsdXNoKGVudik7XG4gICAgICAgICAgICBpZiAob3Bjb2RlKSB7XG4gICAgICAgICAgICAgICAgdm0udXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNob3VsZEFkZEF0dHJpYnV0ZShuYW1lKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5hdHRyaWJ1dGVOYW1lcyB8fCB0aGlzLmF0dHJpYnV0ZU5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xO1xuICAgIH1cbiAgICBhZGRDbGFzcyhyZWZlcmVuY2UpIHtcbiAgICAgICAgbGV0IHsgY2xhc3NMaXN0IH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWNsYXNzTGlzdCkge1xuICAgICAgICAgICAgY2xhc3NMaXN0ID0gdGhpcy5jbGFzc0xpc3QgPSBuZXcgQ2xhc3NMaXN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2xhc3NMaXN0LmFwcGVuZChyZWZlcmVuY2UpO1xuICAgIH1cbiAgICBhZGRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlKSB7XG4gICAgICAgIGxldCB7IGF0dHJpYnV0ZU5hbWVzLCBhdHRyaWJ1dGVzIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMuYXR0cmlidXRlTmFtZXMgPSBbXTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBhdHRyaWJ1dGVOYW1lcy5wdXNoKG5hbWUpO1xuICAgICAgICBhdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRmx1c2hFbGVtZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJmbHVzaC1lbGVtZW50XCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCBzdGFjayA9IHZtLnN0YWNrKCk7XG4gICAgICAgIHN0YWNrLm9wZXJhdGlvbnMuZmx1c2goc3RhY2suY29uc3RydWN0aW5nLCB2bSk7XG4gICAgICAgIHN0YWNrLmZsdXNoRWxlbWVudCgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDbG9zZUVsZW1lbnRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImNsb3NlLWVsZW1lbnRcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uc3RhY2soKS5jbG9zZUVsZW1lbnQoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgU3RhdGljQXR0ck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoeyBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJzdGF0aWMtYXR0clwiO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlIH0gPSB0aGlzO1xuICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgICB2bS5zdGFjaygpLnNldFN0YXRpY0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdm0uc3RhY2soKS5zZXRTdGF0aWNBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUgfSA9IHRoaXM7XG4gICAgICAgIGxldCBkZXRhaWxzID0gZGljdCgpO1xuICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgICBkZXRhaWxzW1wibmFtZXNwYWNlXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgICAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgICAgICBkZXRhaWxzW1widmFsdWVcIl0gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG5hbWUsIG1hbmFnZXIsIGFyZ3MpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICAgICAgdGhpcy50eXBlID0gXCJtb2RpZmllclwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyIH0gPSB0aGlzO1xuICAgICAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaygpO1xuICAgICAgICBsZXQgeyBjb25zdHJ1Y3Rpbmc6IGVsZW1lbnQsIHVwZGF0ZU9wZXJhdGlvbnMgfSA9IHN0YWNrO1xuICAgICAgICBsZXQgYXJncyA9IHRoaXMuYXJncy5ldmFsdWF0ZSh2bSk7XG4gICAgICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICAgICAgbGV0IG1vZGlmaWVyID0gbWFuYWdlci5jcmVhdGUoZWxlbWVudCwgYXJncywgZHluYW1pY1Njb3BlLCB1cGRhdGVPcGVyYXRpb25zKTtcbiAgICAgICAgdm0uZW52LnNjaGVkdWxlSW5zdGFsbE1vZGlmaWVyKG1vZGlmaWVyLCBtYW5hZ2VyKTtcbiAgICAgICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IobW9kaWZpZXIpO1xuICAgICAgICBpZiAoZGVzdHJ1Y3Rvcikge1xuICAgICAgICAgICAgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlTW9kaWZpZXJPcGNvZGUobWFuYWdlciwgbW9kaWZpZXIsIGFyZ3MpKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgbmFtZSwgYXJncyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGRldGFpbHMgPSBkaWN0KCk7XG4gICAgICAgIGRldGFpbHNbXCJ0eXBlXCJdID0gSlNPTi5zdHJpbmdpZnkodHlwZSk7XG4gICAgICAgIGRldGFpbHNbXCJuYW1lXCJdID0gSlNPTi5zdHJpbmdpZnkobmFtZSk7XG4gICAgICAgIGRldGFpbHNbXCJhcmdzXCJdID0gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG4gICAgICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVXBkYXRlTW9kaWZpZXJPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgbW9kaWZpZXIsIGFyZ3MpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInVwZGF0ZS1tb2RpZmllclwiO1xuICAgICAgICB0aGlzLnRhZyA9IGFyZ3MudGFnO1xuICAgICAgICB0aGlzLmxhc3RVcGRhdGVkID0gYXJncy50YWcudmFsdWUoKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgbW9kaWZpZXIsIHRhZywgbGFzdFVwZGF0ZWQgfSA9IHRoaXM7XG4gICAgICAgIGlmICghdGFnLnZhbGlkYXRlKGxhc3RVcGRhdGVkKSkge1xuICAgICAgICAgICAgdm0uZW52LnNjaGVkdWxlVXBkYXRlTW9kaWZpZXIobW9kaWZpZXIsIG1hbmFnZXIpO1xuICAgICAgICAgICAgdGhpcy5sYXN0VXBkYXRlZCA9IHRhZy52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5hcmdzKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgU3RhdGljQXR0cmlidXRlIHtcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgfVxuICAgIGZsdXNoKGVudikge1xuICAgICAgICBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZSwgdGhpcy52YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJpYnV0ZSB7XG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgY2hhbmdlTGlzdCwgbmFtZSwgcmVmZXJlbmNlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5jaGFuZ2VMaXN0ID0gY2hhbmdlTGlzdDtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VMaXN0ID0gY2hhbmdlTGlzdDtcbiAgICAgICAgdGhpcy50YWcgPSByZWZlcmVuY2UudGFnO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgfVxuICAgIHBhdGNoKGVudikge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUucmV2YWxpZGF0ZSgpO1xuICAgICAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTGlzdC51cGRhdGVBdHRyaWJ1dGUoZW52LCBlbGVtZW50LCB0aGlzLm5hbWUsIHZhbHVlLCB0aGlzLm5hbWVzcGFjZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmx1c2goZW52KSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZSwgZWxlbWVudCB9ID0gdGhpcztcbiAgICAgICAgaWYgKGlzQ29uc3RSZWZlcmVuY2UocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUxpc3Quc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdGhpcy5uYW1lLCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSB0aGlzLmNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUxpc3Quc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgdGhpcy5uYW1lLCB2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXRjaEVsZW1lbnRPcGNvZGUodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIGNhY2hlIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZm9ybWF0dGVkRWxlbWVudCA9IGZvcm1hdEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGxldCBsYXN0VmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZm9ybWF0dGVkRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBsYXN0VmFsdWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZvcm1hdHRlZEVsZW1lbnQsXG4gICAgICAgICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBsYXN0VmFsdWVcbiAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBmb3JtYXRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYDwke2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfSAvPmApO1xufVxuZXhwb3J0IGNsYXNzIER5bmFtaWNBdHRyTlNPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJkeW5hbWljLWF0dHJcIjtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgICAgIHRoaXMuaXNUcnVzdGluZyA9IGlzVHJ1c3Rpbmc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG5hbWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9ID0gdGhpcztcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICAgICAgdm0uc3RhY2soKS5zZXREeW5hbWljQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lLCBuYW1lc3BhY2UgfSA9IHRoaXM7XG4gICAgICAgIGxldCBkZXRhaWxzID0gZGljdCgpO1xuICAgICAgICBkZXRhaWxzW1wibmFtZVwiXSA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgICAgICBkZXRhaWxzW1widmFsdWVcIl0gPSBcIiRPUEVSQU5EXCI7XG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIGRldGFpbHNbXCJuYW1lc3BhY2VcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lc3BhY2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGd1aWQsIHR5cGUsIGRldGFpbHMgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgaXNUcnVzdGluZyB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZHluYW1pYy1hdHRyXCI7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuaXNUcnVzdGluZyA9IGlzVHJ1c3Rpbmc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG5hbWUsIGlzVHJ1c3RpbmcgfSA9IHRoaXM7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgICAgIHZtLnN0YWNrKCkuc2V0RHluYW1pY0F0dHJpYnV0ZShuYW1lLCByZWZlcmVuY2UsIGlzVHJ1c3RpbmcpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBuYW1lIH0gPSB0aGlzO1xuICAgICAgICBsZXQgZGV0YWlscyA9IGRpY3QoKTtcbiAgICAgICAgZGV0YWlsc1tcIm5hbWVcIl0gPSBKU09OLnN0cmluZ2lmeShuYW1lKTtcbiAgICAgICAgZGV0YWlsc1tcInZhbHVlXCJdID0gXCIkT1BFUkFORFwiO1xuICAgICAgICByZXR1cm4geyBndWlkLCB0eXBlLCBkZXRhaWxzIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFBhdGNoRWxlbWVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRpb24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJwYXRjaC1lbGVtZW50XCI7XG4gICAgICAgIHRoaXMudGFnID0gb3BlcmF0aW9uLnRhZztcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHRoaXMub3BlcmF0aW9uLnBhdGNoKHZtLmVudik7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgX2d1aWQsIHR5cGUsIG9wZXJhdGlvbiB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGRldGFpbHM6IG9wZXJhdGlvbi50b0pTT04oKVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDb21tZW50T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih7IGNvbW1lbnQgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImNvbW1lbnRcIjtcbiAgICAgICAgdGhpcy5jb21tZW50ID0gY29tbWVudDtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uc3RhY2soKS5hcHBlbmRDb21tZW50KHRoaXMuY29tbWVudCk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5jb21tZW50KV1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0= 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'; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var IterablePresenceReference = (function () { function IterablePresenceReference(artifacts) { - _classCallCheck(this, IterablePresenceReference); - this.tag = artifacts.tag; this.artifacts = artifacts; } IterablePresenceReference.prototype.value = function value() { @@ -17529,20 +18185,14 @@ return IterablePresenceReference; })(); var PutIteratorOpcode = (function (_Opcode) { - _inherits(PutIteratorOpcode, _Opcode); + babelHelpers.inherits(PutIteratorOpcode, _Opcode); function PutIteratorOpcode() { - _classCallCheck(this, PutIteratorOpcode); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _Opcode.call.apply(_Opcode, [this].concat(args)); + _Opcode.apply(this, arguments); this.type = "put-iterator"; } PutIteratorOpcode.prototype.evaluate = function evaluate(vm) { var listRef = vm.frame.getOperand(); @@ -17557,15 +18207,13 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutIteratorOpcode = PutIteratorOpcode; var EnterListOpcode = (function (_Opcode2) { - _inherits(EnterListOpcode, _Opcode2); + babelHelpers.inherits(EnterListOpcode, _Opcode2); function EnterListOpcode(start, end) { - _classCallCheck(this, EnterListOpcode); - _Opcode2.call(this); this.type = "enter-list"; this.slice = new _glimmerUtil.ListSlice(start, end); } @@ -17591,20 +18239,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.EnterListOpcode = EnterListOpcode; var ExitListOpcode = (function (_Opcode3) { - _inherits(ExitListOpcode, _Opcode3); + babelHelpers.inherits(ExitListOpcode, _Opcode3); function ExitListOpcode() { - _classCallCheck(this, ExitListOpcode); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _Opcode3.call.apply(_Opcode3, [this].concat(args)); + _Opcode3.apply(this, arguments); this.type = "exit-list"; } ExitListOpcode.prototype.evaluate = function evaluate(vm) { vm.exitList(); @@ -17614,15 +18256,13 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.ExitListOpcode = ExitListOpcode; var EnterWithKeyOpcode = (function (_Opcode4) { - _inherits(EnterWithKeyOpcode, _Opcode4); + babelHelpers.inherits(EnterWithKeyOpcode, _Opcode4); function EnterWithKeyOpcode(start, end) { - _classCallCheck(this, EnterWithKeyOpcode); - _Opcode4.call(this); this.type = "enter-with-key"; this.slice = new _glimmerUtil.ListSlice(start, end); } @@ -17651,15 +18291,13 @@ var TRUE_REF = new _glimmerReference.ConstReference(true); var FALSE_REF = new _glimmerReference.ConstReference(false); var NextIterOpcode = (function (_Opcode5) { - _inherits(NextIterOpcode, _Opcode5); + babelHelpers.inherits(NextIterOpcode, _Opcode5); function NextIterOpcode(end) { - _classCallCheck(this, NextIterOpcode); - _Opcode5.call(this); this.type = "next-iter"; this.end = end; } @@ -17679,31 +18317,19 @@ return NextIterOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.NextIterOpcode = NextIterOpcode; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9saXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFPQSx5QkFBQTtBQUlFLGlCQUpGLHlCQUFBLENBSWMsU0FBNkIsRUFBQTtrQ0FKM0MseUJBQUE7O0FBS0ksZ0JBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUN6QixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBUEgsaUNBQUEsV0FTRSxLQUFLLEdBQUEsaUJBQUE7QUFDSCxtQkFBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbEM7O2VBWEgseUJBQUE7OztRQWNBLGlCQUFBO2tCQUFBLGlCQUFBOztBQUFBLGlCQUFBLGlCQUFBLEdBQUE7a0NBQUEsaUJBQUE7OzhDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQXVDLHNEQUFBLElBQUEsRUFBQSxDQUFNO0FBQ3BDLGdCQUFBLENBQUEsSUFBSSxHQUFHLGNBQWMsQ0FBQztTQVc5Qjs7QUFaRCx5QkFBQSxXQUdFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixnQkFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNwQyxnQkFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixnQkFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pELGdCQUFJLFFBQVEsR0FBRyxzQkF2QjhCLGlCQUFpQixDQXVCekIsUUFBUSxDQUFDLENBQUM7QUFFL0MsY0FBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsY0FBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSx5QkFBeUIs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OztlQXRCSCxjQUFBO2lDQTVHUyxNQUFNIiwiZmlsZSI6Imxpc3RzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3Bjb2RlLCBPcGNvZGVKU09OIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlIH0gZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBGSVhNRSwgTGlzdFNsaWNlLCBTbGljZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBSZXZpc2lvblRhZywgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IsIEl0ZXJhdGlvbkFydGlmYWN0cyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuY2xhc3MgSXRlcmFibGVQcmVzZW5jZVJlZmVyZW5jZSBpbXBsZW1lbnRzIFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuICBwcml2YXRlIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIGNvbnN0cnVjdG9yKGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgdGhpcy50YWcgPSBhcnRpZmFjdHMudGFnO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICB9XG5cbiAgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmFydGlmYWN0cy5pc0VtcHR5KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dEl0ZXJhdG9yT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1pdGVyYXRvclwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBsaXN0UmVmID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpO1xuICAgIGxldCBhcmdzID0gdm0uZnJhbWUuZ2V0QXJncygpO1xuICAgIGxldCBpdGVyYWJsZSA9IHZtLmVudi5pdGVyYWJsZUZvcihsaXN0UmVmLCBhcmdzKTtcbiAgICBsZXQgaXRlcmF0b3IgPSBuZXcgUmVmZXJlbmNlSXRlcmF0b3IoaXRlcmFibGUpO1xuXG4gICAgdm0uZnJhbWUuc2V0SXRlcmF0b3IoaXRlcmF0b3IpO1xuICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihuZXcgSXRlcmFibGVQcmVzZW5jZVJlZmVyZW5jZShpdGVyYXRvci5hcnRpZmFjdHMpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50ZXJMaXN0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImVudGVyLWxpc3RcIjtcblxuICBwdWJsaWMgc2xpY2U6IFNsaWNlPE9wY29kZT47XG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ6IExhYmVsT3Bjb2RlLCBlbmQ6IExhYmVsT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNsaWNlID0gbmV3IExpc3RTbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmVudGVyTGlzdCh0aGlzLnNsaWNlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBzbGljZSwgdHlwZSwgX2d1aWQgfSA9IHRoaXM7XG5cbiAgICBsZXQgYmVnaW4gPSBzbGljZS5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhpdExpc3RPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZXhpdC1saXN0XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZXhpdExpc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50ZXJXaXRoS2V5T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImVudGVyLXdpdGgta2V5XCI7XG5cbiAgcHJpdmF0ZSBzbGljZTogU2xpY2U8T3Bjb2RlPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogTGFiZWxPcGNvZGUsIGVuZDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2xpY2UgPSBuZXcgTGlzdFNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZW50ZXJXaXRoS2V5KHZtLmZyYW1lLmdldEtleSgpLCB0aGlzLnNsaWNlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBzbGljZSwgX2d1aWQsIHR5cGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgYmVnaW4gPSBzbGljZS5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBUUlVFX1JFRiA9IG5ldyBDb25zdFJlZmVyZW5jZSh0cnVlKTtcbmNvbnN0IEZBTFNFX1JFRiA9IG5ldyBDb25zdFJlZmVyZW5jZShmYWxzZSk7XG5cbmV4cG9ydCBjbGFzcyBOZXh0SXRlck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJuZXh0LWl0ZXJcIjtcblxuICBwcml2YXRlIGVuZDogTGFiZWxPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoZW5kOiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgaXRlbSA9IHZtLmZyYW1lLmdldEl0ZXJhdG9yKCkubmV4dCgpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihUUlVFX1JFRik7XG4gICAgICB2bS5mcmFtZS5zZXRLZXkoaXRlbS5rZXkgYXMgRklYTUU8J3VzZXIgc3RyIHRvIEludGVybmVkU3RyaW5nJz4pO1xuICAgICAgdm0uZnJhbWUuc2V0T3BlcmFuZChpdGVtLnZhbHVlKTtcbiAgICAgIHZtLmZyYW1lLnNldEFyZ3MoRXZhbHVhdGVkQXJncy5wb3NpdGlvbmFsKFtpdGVtLnZhbHVlLCBpdGVtLm1lbW9dKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihGQUxTRV9SRUYpO1xuICAgICAgdm0uZ290byh0aGlzLmVuZCk7XG4gICAgfVxuICB9XG59XG4iXX0= -enifed('glimmer-runtime/lib/compiled/opcodes/vm', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/vm', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/references', 'glimmer-reference', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-util', 'glimmer-runtime/lib/scanner'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibVm, _glimmerRuntimeLibUtils, _glimmerRuntimeLibReferences, _glimmerReference, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerUtil, _glimmerRuntimeLibScanner) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9saXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFPQSx5QkFBQTtBQUlFLGlCQUpGLHlCQUFBLENBSWMsU0FBNkIsRUFBQTtBQUN2QyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFQSCxpQ0FBQSxXQVNFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQzs7ZUFYSCx5QkFBQTs7O1FBY00saUJBQXlCOzhCQUF6QixpQkFBeUI7O0FBQS9CLGlCQUFNLGlCQUF5QixHQUEvQjtBQ05RLGdDQUFTLFNBQVMsQ0FBQyxDQUFDO0FET25CLGdCQUFBLENBQUEsSUFBSSxHQUFHLGNBQWMsQ0FBQztTQVc5Qjs7QUFaSyx5QkFBeUIsV0FHN0IsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3BDLGdCQUFJLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzlCLGdCQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakQsZ0JBQUksUUFBUSxHQUFHLHNCQXZCOEIsaUJBQWlCLENBdUJ6QixRQUFRLENBQUMsQ0FBQztBQUUvQyxjQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixjQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzFFOztlQVhHLGlC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T3Bjb2RlSlNPTiB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgTGlzdFNsaWNlLCBTbGljZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBSZXZpc2lvblRhZywgUmVmZXJlbmNlLCBDb25zdFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IsIEl0ZXJhdGlvbkFydGlmYWN0cyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuY2xhc3MgSXRlcmFibGVQcmVzZW5jZVJlZmVyZW5jZSBpbXBsZW1lbnRzIFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuICBwcml2YXRlIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIGNvbnN0cnVjdG9yKGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzKSB7XG4gICAgdGhpcy50YWcgPSBhcnRpZmFjdHMudGFnO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICB9XG5cbiAgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmFydGlmYWN0cy5pc0VtcHR5KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dEl0ZXJhdG9yT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1pdGVyYXRvclwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBsaXN0UmVmID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpO1xuICAgIGxldCBhcmdzID0gdm0uZnJhbWUuZ2V0QXJncygpO1xuICAgIGxldCBpdGVyYWJsZSA9IHZtLmVudi5pdGVyYWJsZUZvcihsaXN0UmVmLCBhcmdzKTtcbiAgICBsZXQgaXRlcmF0b3IgPSBuZXcgUmVmZXJlbmNlSXRlcmF0b3IoaXRlcmFibGUpO1xuXG4gICAgdm0uZnJhbWUuc2V0SXRlcmF0b3IoaXRlcmF0b3IpO1xuICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihuZXcgSXRlcmFibGVQcmVzZW5jZVJlZmVyZW5jZShpdGVyYXRvci5hcnRpZmFjdHMpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50ZXJMaXN0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImVudGVyLWxpc3RcIjtcblxuICBwdWJsaWMgc2xpY2U6IFNsaWNlPE9wY29kZT47XG5cbiAgY29uc3RydWN0b3Ioc3RhcnQ6IExhYmVsT3Bjb2RlLCBlbmQ6IExhYmVsT3Bjb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNsaWNlID0gbmV3IExpc3RTbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmVudGVyTGlzdCh0aGlzLnNsaWNlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBzbGljZSwgdHlwZSwgX2d1aWQgfSA9IHRoaXM7XG5cbiAgICBsZXQgYmVnaW4gPSBzbGljZS5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhpdExpc3RPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZXhpdC1saXN0XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZXhpdExpc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50ZXJXaXRoS2V5T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImVudGVyLXdpdGgta2V5XCI7XG5cbiAgcHJpdmF0ZSBzbGljZTogU2xpY2U8T3Bjb2RlPjtcblxuICBjb25zdHJ1Y3RvcihzdGFydDogTGFiZWxPcGNvZGUsIGVuZDogTGFiZWxPcGNvZGUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2xpY2UgPSBuZXcgTGlzdFNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZW50ZXJXaXRoS2V5KHZtLmZyYW1lLmdldEtleSgpLCB0aGlzLnNsaWNlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBzbGljZSwgX2d1aWQsIHR5cGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgYmVnaW4gPSBzbGljZS5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBUUlVFX1JFRiA9IG5ldyBDb25zdFJlZmVyZW5jZSh0cnVlKTtcbmNvbnN0IEZBTFNFX1JFRiA9IG5ldyBDb25zdFJlZmVyZW5jZShmYWxzZSk7XG5cbmV4cG9ydCBjbGFzcyBOZXh0SXRlck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJuZXh0LWl0ZXJcIjtcblxuICBwcml2YXRlIGVuZDogTGFiZWxPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoZW5kOiBMYWJlbE9wY29kZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgaXRlbSA9IHZtLmZyYW1lLmdldEl0ZXJhdG9yKCkubmV4dCgpO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihUUlVFX1JFRik7XG4gICAgICB2bS5mcmFtZS5zZXRLZXkoaXRlbS5rZXkpO1xuICAgICAgdm0uZnJhbWUuc2V0T3BlcmFuZChpdGVtLnZhbHVlKTtcbiAgICAgIHZtLmZyYW1lLnNldEFyZ3MoRXZhbHVhdGVkQXJncy5wb3NpdGlvbmFsKFtpdGVtLnZhbHVlLCBpdGVtLm1lbW9dKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihGQUxTRV9SRUYpO1xuICAgICAgdm0uZ290byh0aGlzLmVuZCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IExpc3RTbGljZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5jbGFzcyBJdGVyYWJsZVByZXNlbmNlUmVmZXJlbmNlIHtcbiAgICBjb25zdHJ1Y3RvcihhcnRpZmFjdHMpIHtcbiAgICAgICAgdGhpcy50YWcgPSBhcnRpZmFjdHMudGFnO1xuICAgICAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5hcnRpZmFjdHMuaXNFbXB0eSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQdXRJdGVyYXRvck9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwicHV0LWl0ZXJhdG9yXCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCBsaXN0UmVmID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpO1xuICAgICAgICBsZXQgYXJncyA9IHZtLmZyYW1lLmdldEFyZ3MoKTtcbiAgICAgICAgbGV0IGl0ZXJhYmxlID0gdm0uZW52Lml0ZXJhYmxlRm9yKGxpc3RSZWYsIGFyZ3MpO1xuICAgICAgICBsZXQgaXRlcmF0b3IgPSBuZXcgUmVmZXJlbmNlSXRlcmF0b3IoaXRlcmFibGUpO1xuICAgICAgICB2bS5mcmFtZS5zZXRJdGVyYXRvcihpdGVyYXRvcik7XG4gICAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihuZXcgSXRlcmFibGVQcmVzZW5jZVJlZmVyZW5jZShpdGVyYXRvci5hcnRpZmFjdHMpKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRW50ZXJMaXN0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFydCwgZW5kKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZW50ZXItbGlzdFwiO1xuICAgICAgICB0aGlzLnNsaWNlID0gbmV3IExpc3RTbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uZW50ZXJMaXN0KHRoaXMuc2xpY2UpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IHNsaWNlLCB0eXBlLCBfZ3VpZCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpO1xuICAgICAgICBsZXQgZW5kID0gc2xpY2UudGFpbCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYXJnczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZW5kLmluc3BlY3QoKSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRXhpdExpc3RPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImV4aXQtbGlzdFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5leGl0TGlzdCgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFbnRlcldpdGhLZXlPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJlbnRlci13aXRoLWtleVwiO1xuICAgICAgICB0aGlzLnNsaWNlID0gbmV3IExpc3RTbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uZW50ZXJXaXRoS2V5KHZtLmZyYW1lLmdldEtleSgpLCB0aGlzLnNsaWNlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBzbGljZSwgX2d1aWQsIHR5cGUgfSA9IHRoaXM7XG4gICAgICAgIGxldCBiZWdpbiA9IHNsaWNlLmhlYWQoKTtcbiAgICAgICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxufVxuY29uc3QgVFJVRV9SRUYgPSBuZXcgQ29uc3RSZWZlcmVuY2UodHJ1ZSk7XG5jb25zdCBGQUxTRV9SRUYgPSBuZXcgQ29uc3RSZWZlcmVuY2UoZmFsc2UpO1xuZXhwb3J0IGNsYXNzIE5leHRJdGVyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihlbmQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJuZXh0LWl0ZXJcIjtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCBpdGVtID0gdm0uZnJhbWUuZ2V0SXRlcmF0b3IoKS5uZXh0KCk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24oVFJVRV9SRUYpO1xuICAgICAgICAgICAgdm0uZnJhbWUuc2V0S2V5KGl0ZW0ua2V5KTtcbiAgICAgICAgICAgIHZtLmZyYW1lLnNldE9wZXJhbmQoaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICB2bS5mcmFtZS5zZXRBcmdzKEV2YWx1YXRlZEFyZ3MucG9zaXRpb25hbChbaXRlbS52YWx1ZSwgaXRlbS5tZW1vXSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdm0uZnJhbWUuc2V0Q29uZGl0aW9uKEZBTFNFX1JFRik7XG4gICAgICAgICAgICB2bS5nb3RvKHRoaXMuZW5kKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ== +enifed('glimmer-runtime/lib/compiled/opcodes/vm', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/references', 'glimmer-reference', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-util'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibReferences, _glimmerReference, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerUtil) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var PushChildScopeOpcode = (function (_Opcode) { - _inherits(PushChildScopeOpcode, _Opcode); + babelHelpers.inherits(PushChildScopeOpcode, _Opcode); function PushChildScopeOpcode() { - _classCallCheck(this, PushChildScopeOpcode); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _Opcode.call.apply(_Opcode, [this].concat(args)); + _Opcode.apply(this, arguments); this.type = "push-child-scope"; } PushChildScopeOpcode.prototype.evaluate = function evaluate(vm) { vm.pushChildScope(); @@ -17713,20 +18339,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PushChildScopeOpcode = PushChildScopeOpcode; var PopScopeOpcode = (function (_Opcode2) { - _inherits(PopScopeOpcode, _Opcode2); + babelHelpers.inherits(PopScopeOpcode, _Opcode2); function PopScopeOpcode() { - _classCallCheck(this, PopScopeOpcode); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _Opcode2.call.apply(_Opcode2, [this].concat(args)); + _Opcode2.apply(this, arguments); this.type = "pop-scope"; } PopScopeOpcode.prototype.evaluate = function evaluate(vm) { vm.popScope(); @@ -17736,20 +18356,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PopScopeOpcode = PopScopeOpcode; var PushDynamicScopeOpcode = (function (_Opcode3) { - _inherits(PushDynamicScopeOpcode, _Opcode3); + babelHelpers.inherits(PushDynamicScopeOpcode, _Opcode3); function PushDynamicScopeOpcode() { - _classCallCheck(this, PushDynamicScopeOpcode); - - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - _Opcode3.call.apply(_Opcode3, [this].concat(args)); + _Opcode3.apply(this, arguments); this.type = "push-dynamic-scope"; } PushDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) { vm.pushDynamicScope(); @@ -17759,20 +18373,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PushDynamicScopeOpcode = PushDynamicScopeOpcode; var PopDynamicScopeOpcode = (function (_Opcode4) { - _inherits(PopDynamicScopeOpcode, _Opcode4); + babelHelpers.inherits(PopDynamicScopeOpcode, _Opcode4); function PopDynamicScopeOpcode() { - _classCallCheck(this, PopDynamicScopeOpcode); - - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - _Opcode4.call.apply(_Opcode4, [this].concat(args)); + _Opcode4.apply(this, arguments); this.type = "pop-dynamic-scope"; } PopDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) { vm.popDynamicScope(); @@ -17782,20 +18390,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PopDynamicScopeOpcode = PopDynamicScopeOpcode; var PutNullOpcode = (function (_Opcode5) { - _inherits(PutNullOpcode, _Opcode5); + babelHelpers.inherits(PutNullOpcode, _Opcode5); function PutNullOpcode() { - _classCallCheck(this, PutNullOpcode); - - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - _Opcode5.call.apply(_Opcode5, [this].concat(args)); + _Opcode5.apply(this, arguments); this.type = "put-null"; } PutNullOpcode.prototype.evaluate = function evaluate(vm) { vm.frame.setOperand(_glimmerRuntimeLibReferences.NULL_REFERENCE); @@ -17805,17 +18407,15 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutNullOpcode = PutNullOpcode; var PutValueOpcode = (function (_Opcode6) { - _inherits(PutValueOpcode, _Opcode6); + babelHelpers.inherits(PutValueOpcode, _Opcode6); function PutValueOpcode(_ref) { var expression = _ref.expression; - _classCallCheck(this, PutValueOpcode); - _Opcode6.call(this); this.type = "put-value"; this.expression = expression; } @@ -17835,17 +18435,15 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutValueOpcode = PutValueOpcode; var PutArgsOpcode = (function (_Opcode7) { - _inherits(PutArgsOpcode, _Opcode7); + babelHelpers.inherits(PutArgsOpcode, _Opcode7); function PutArgsOpcode(_ref2) { var args = _ref2.args; - _classCallCheck(this, PutArgsOpcode); - _Opcode7.call(this); this.type = "put-args"; this.args = args; } @@ -17868,28 +18466,29 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.PutArgsOpcode = PutArgsOpcode; var BindPositionalArgsOpcode = (function (_Opcode8) { - _inherits(BindPositionalArgsOpcode, _Opcode8); + babelHelpers.inherits(BindPositionalArgsOpcode, _Opcode8); - function BindPositionalArgsOpcode(_ref3) { - var block = _ref3.block; - - _classCallCheck(this, BindPositionalArgsOpcode); - + function BindPositionalArgsOpcode(names, symbols) { _Opcode8.call(this); + this.names = names; + this.symbols = symbols; this.type = "bind-positional-args"; - this.names = block.locals; - var positional = this.positional = []; - block.locals.forEach(function (name) { - positional.push(block.symbolTable.getLocal(name)); - }); } + 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.positional); + vm.bindPositionalArgs(this.symbols); }; BindPositionalArgsOpcode.prototype.toJSON = function toJSON() { return { guid: this._guid, @@ -17904,41 +18503,37 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.BindPositionalArgsOpcode = BindPositionalArgsOpcode; var BindNamedArgsOpcode = (function (_Opcode9) { - _inherits(BindNamedArgsOpcode, _Opcode9); + babelHelpers.inherits(BindNamedArgsOpcode, _Opcode9); - function BindNamedArgsOpcode(_ref4) { - var named = _ref4.named; - - _classCallCheck(this, BindNamedArgsOpcode); - + function BindNamedArgsOpcode(names, symbols) { _Opcode9.call(this); + this.names = names; + this.symbols = symbols; this.type = "bind-named-args"; - this.named = named; } BindNamedArgsOpcode.create = function create(layout) { - var named = layout['named'].reduce(function (obj, name) { - var _assign; - - return _glimmerUtil.assign(obj, (_assign = {}, _assign[name] = layout.symbolTable.getNamed(name), _assign)); - }, _glimmerUtil.dict()); - _glimmerRuntimeLibUtils.turbocharge(named); - return new BindNamedArgsOpcode({ named: named }); + var names = layout.named; + var symbols = names.map(function (name) { + return layout.symbolTable.getNamed(name); + }); + return new BindNamedArgsOpcode(names, symbols); }; BindNamedArgsOpcode.prototype.evaluate = function evaluate(vm) { - vm.bindNamedArgs(this.named); + vm.bindNamedArgs(this.names, this.symbols); }; BindNamedArgsOpcode.prototype.toJSON = function toJSON() { - var _this = this; + var names = this.names; + var symbols = this.symbols; - var args = Object.keys(this.named).map(function (name) { - return '$' + _this.named[name] + ': $ARGS[' + name + ']'; + var args = names.map(function (name, i) { + return '$' + symbols[i] + ': $ARGS[' + name + ']'; }); return { guid: this._guid, type: this.type, args: args @@ -17948,71 +18543,61 @@ return BindNamedArgsOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.BindNamedArgsOpcode = BindNamedArgsOpcode; - var BindBlocksOpcode = (function (_Opcode10) { - _inherits(BindBlocksOpcode, _Opcode10); + var BindBlocksOpcode = (function (_BindNamedArgsOpcode) { + babelHelpers.inherits(BindBlocksOpcode, _BindNamedArgsOpcode); - function BindBlocksOpcode(_ref5) { - var blocks = _ref5.blocks; - - _classCallCheck(this, BindBlocksOpcode); - - _Opcode10.call(this); + function BindBlocksOpcode() { + _BindNamedArgsOpcode.apply(this, arguments); this.type = "bind-blocks"; - this.blocks = blocks; } - BindBlocksOpcode.create = function create(template) { - var blocks = _glimmerUtil.dict(); - template['yields'].forEach(function (name) { - blocks[name] = template.symbolTable.getYield(name); + BindBlocksOpcode.create = function create(layout) { + var names = layout.yields; + var symbols = names.map(function (name) { + return layout.symbolTable.getYield(name); }); - return new BindBlocksOpcode({ blocks: blocks }); + return new this(names, symbols); }; BindBlocksOpcode.prototype.evaluate = function evaluate(vm) { - vm.bindBlocks(this.blocks); + vm.bindBlocks(this.names, this.symbols); }; return BindBlocksOpcode; - })(_glimmerRuntimeLibOpcodes.Opcode); + })(BindNamedArgsOpcode); exports.BindBlocksOpcode = BindBlocksOpcode; - exports.BindDynamicScopeCallback = _glimmerRuntimeLibVm.BindDynamicScopeCallback; - var BindDynamicScopeOpcode = (function (_Opcode11) { - _inherits(BindDynamicScopeOpcode, _Opcode11); + var BindDynamicScopeOpcode = (function (_Opcode10) { + babelHelpers.inherits(BindDynamicScopeOpcode, _Opcode10); - function BindDynamicScopeOpcode(callback) { - _classCallCheck(this, BindDynamicScopeOpcode); - - _Opcode11.call(this); + function BindDynamicScopeOpcode(names) { + _Opcode10.call(this); + this.names = names; this.type = "bind-dynamic-scope"; - this.callback = callback; } BindDynamicScopeOpcode.prototype.evaluate = function evaluate(vm) { - vm.bindDynamicScope(this.callback); + vm.bindDynamicScope(this.names); }; return BindDynamicScopeOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.BindDynamicScopeOpcode = BindDynamicScopeOpcode; - var EnterOpcode = (function (_Opcode12) { - _inherits(EnterOpcode, _Opcode12); + var EnterOpcode = (function (_Opcode11) { + babelHelpers.inherits(EnterOpcode, _Opcode11); - function EnterOpcode(_ref6) { - var begin = _ref6.begin; - var end = _ref6.end; + function EnterOpcode(_ref3) { + var begin = _ref3.begin; + var end = _ref3.end; - _classCallCheck(this, EnterOpcode); - - _Opcode12.call(this); + _Opcode11.call(this); this.type = "enter"; this.slice = new _glimmerUtil.ListSlice(begin, end); } EnterOpcode.prototype.evaluate = function evaluate(vm) { @@ -18036,21 +18621,15 @@ return EnterOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.EnterOpcode = EnterOpcode; - var ExitOpcode = (function (_Opcode13) { - _inherits(ExitOpcode, _Opcode13); + var ExitOpcode = (function (_Opcode12) { + babelHelpers.inherits(ExitOpcode, _Opcode12); function ExitOpcode() { - _classCallCheck(this, ExitOpcode); - - for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - _Opcode13.call.apply(_Opcode13, [this].concat(args)); + _Opcode12.apply(this, arguments); this.type = "exit"; } ExitOpcode.prototype.evaluate = function evaluate(vm) { vm.exit(); @@ -18059,17 +18638,15 @@ return ExitOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.ExitOpcode = ExitOpcode; - var LabelOpcode = (function (_Opcode14) { - _inherits(LabelOpcode, _Opcode14); + var LabelOpcode = (function (_Opcode13) { + babelHelpers.inherits(LabelOpcode, _Opcode13); function LabelOpcode(label) { - _classCallCheck(this, LabelOpcode); - - _Opcode14.call(this); + _Opcode13.call(this); this.tag = _glimmerReference.CONSTANT_TAG; this.type = "label"; this.label = null; this.prev = null; this.next = null; @@ -18093,20 +18670,18 @@ return LabelOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.LabelOpcode = LabelOpcode; - var EvaluateOpcode = (function (_Opcode15) { - _inherits(EvaluateOpcode, _Opcode15); + var EvaluateOpcode = (function (_Opcode14) { + babelHelpers.inherits(EvaluateOpcode, _Opcode14); - function EvaluateOpcode(_ref7) { - var debug = _ref7.debug; - var block = _ref7.block; + function EvaluateOpcode(_ref4) { + var debug = _ref4.debug; + var block = _ref4.block; - _classCallCheck(this, EvaluateOpcode); - - _Opcode15.call(this); + _Opcode14.call(this); this.type = "evaluate"; this.debug = debug; this.block = block; } @@ -18140,20 +18715,18 @@ return EvaluateOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.EvaluateOpcode = EvaluateOpcode; - var EvaluatePartialOpcode = (function (_Opcode16) { - _inherits(EvaluatePartialOpcode, _Opcode16); + var EvaluatePartialOpcode = (function (_Opcode15) { + babelHelpers.inherits(EvaluatePartialOpcode, _Opcode15); - function EvaluatePartialOpcode(_ref8) { - var name = _ref8.name; - var symbolTable = _ref8.symbolTable; + function EvaluatePartialOpcode(_ref5) { + var name = _ref5.name; + var symbolTable = _ref5.symbolTable; - _classCallCheck(this, EvaluatePartialOpcode); - - _Opcode16.call(this); + _Opcode15.call(this); this.type = "evaluate-partial"; this.cache = _glimmerUtil.dict(); this.name = name; this.symbolTable = symbolTable; } @@ -18162,16 +18735,15 @@ var reference = this.name.evaluate(vm); var referenceCache = new _glimmerReference.ReferenceCache(reference); var name = referenceCache.revalidate(); var block = this.cache[name]; if (!block) { - var _vm$env$lookupPartial = vm.env.lookupPartial([name]); + var _vm$env$lookupPartial = vm.env.lookupPartial([name], this.symbolTable); var template = _vm$env$lookupPartial.template; - var scanner = new _glimmerRuntimeLibScanner.default(template, vm.env); - block = scanner.scanPartial(this.symbolTable); + block = template.asPartial(this.symbolTable); } vm.invokeBlock(block, _glimmerRuntimeLibCompiledExpressionsArgs.EvaluatedArgs.empty()); if (!_glimmerReference.isConst(reference)) { vm.updateWith(new Assert(referenceCache)); } @@ -18188,29 +18760,24 @@ return EvaluatePartialOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.EvaluatePartialOpcode = EvaluatePartialOpcode; - var NameToPartialOpcode = (function (_Opcode17) { - _inherits(NameToPartialOpcode, _Opcode17); + var NameToPartialOpcode = (function (_Opcode16) { + babelHelpers.inherits(NameToPartialOpcode, _Opcode16); - function NameToPartialOpcode() { - _classCallCheck(this, NameToPartialOpcode); - - for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - _Opcode17.call.apply(_Opcode17, [this].concat(args)); + function NameToPartialOpcode(symbolTable) { + _Opcode16.call(this); + this.symbolTable = symbolTable; this.type = "name-to-partial"; } NameToPartialOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.frame.getOperand(); var referenceCache = new _glimmerReference.ReferenceCache(reference); var name = referenceCache.revalidate(); - var partial = name && vm.env.hasPartial([name]) ? vm.env.lookupPartial([name]) : false; + var partial = name && vm.env.hasPartial([name], this.symbolTable) ? vm.env.lookupPartial([name], this.symbolTable) : false; vm.frame.setOperand(new _glimmerRuntimeLibCompiledExpressionsValue.ValueReference(partial)); if (!_glimmerReference.isConst(reference)) { vm.updateWith(new Assert(referenceCache)); } }; @@ -18238,17 +18805,15 @@ var EnvironmentTest = function (ref, env) { return env.toConditionalReference(ref); }; exports.EnvironmentTest = EnvironmentTest; - var TestOpcode = (function (_Opcode18) { - _inherits(TestOpcode, _Opcode18); + var TestOpcode = (function (_Opcode17) { + babelHelpers.inherits(TestOpcode, _Opcode17); function TestOpcode(testFunc) { - _classCallCheck(this, TestOpcode); - - _Opcode18.call(this); + _Opcode17.call(this); this.testFunc = testFunc; this.type = "test"; } TestOpcode.prototype.evaluate = function evaluate(vm) { @@ -18266,19 +18831,17 @@ return TestOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.TestOpcode = TestOpcode; - var JumpOpcode = (function (_Opcode19) { - _inherits(JumpOpcode, _Opcode19); + var JumpOpcode = (function (_Opcode18) { + babelHelpers.inherits(JumpOpcode, _Opcode18); - function JumpOpcode(_ref9) { - var target = _ref9.target; + function JumpOpcode(_ref6) { + var target = _ref6.target; - _classCallCheck(this, JumpOpcode); - - _Opcode19.call(this); + _Opcode18.call(this); this.type = "jump"; this.target = target; } JumpOpcode.prototype.evaluate = function evaluate(vm) { @@ -18297,20 +18860,14 @@ })(_glimmerRuntimeLibOpcodes.Opcode); exports.JumpOpcode = JumpOpcode; var JumpIfOpcode = (function (_JumpOpcode) { - _inherits(JumpIfOpcode, _JumpOpcode); + babelHelpers.inherits(JumpIfOpcode, _JumpOpcode); function JumpIfOpcode() { - _classCallCheck(this, JumpIfOpcode); - - for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - args[_key8] = arguments[_key8]; - } - - _JumpOpcode.call.apply(_JumpOpcode, [this].concat(args)); + _JumpOpcode.apply(this, arguments); this.type = "jump-if"; } JumpIfOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.frame.getCondition(); @@ -18331,20 +18888,14 @@ })(JumpOpcode); exports.JumpIfOpcode = JumpIfOpcode; var JumpUnlessOpcode = (function (_JumpOpcode2) { - _inherits(JumpUnlessOpcode, _JumpOpcode2); + babelHelpers.inherits(JumpUnlessOpcode, _JumpOpcode2); function JumpUnlessOpcode() { - _classCallCheck(this, JumpUnlessOpcode); - - for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - _JumpOpcode2.call.apply(_JumpOpcode2, [this].concat(args)); + _JumpOpcode2.apply(this, arguments); this.type = "jump-unless"; } JumpUnlessOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.frame.getCondition(); @@ -18365,15 +18916,13 @@ })(JumpOpcode); exports.JumpUnlessOpcode = JumpUnlessOpcode; var Assert = (function (_UpdatingOpcode) { - _inherits(Assert, _UpdatingOpcode); + babelHelpers.inherits(Assert, _UpdatingOpcode); function Assert(cache) { - _classCallCheck(this, Assert); - _UpdatingOpcode.call(this); this.type = "assert"; this.tag = cache.tag; this.cache = cache; } @@ -18409,18 +18958,16 @@ })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.Assert = Assert; var JumpIfNotModifiedOpcode = (function (_UpdatingOpcode2) { - _inherits(JumpIfNotModifiedOpcode, _UpdatingOpcode2); + babelHelpers.inherits(JumpIfNotModifiedOpcode, _UpdatingOpcode2); - function JumpIfNotModifiedOpcode(_ref10) { - var tag = _ref10.tag; - var target = _ref10.target; + function JumpIfNotModifiedOpcode(_ref7) { + var tag = _ref7.tag; + var target = _ref7.target; - _classCallCheck(this, JumpIfNotModifiedOpcode); - _UpdatingOpcode2.call(this); this.type = "jump-if-not-modified"; this.tag = tag; this.target = target; this.lastRevision = tag.value(); @@ -18452,17 +18999,15 @@ })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.JumpIfNotModifiedOpcode = JumpIfNotModifiedOpcode; var DidModifyOpcode = (function (_UpdatingOpcode3) { - _inherits(DidModifyOpcode, _UpdatingOpcode3); + babelHelpers.inherits(DidModifyOpcode, _UpdatingOpcode3); - function DidModifyOpcode(_ref11) { - var target = _ref11.target; + function DidModifyOpcode(_ref8) { + var target = _ref8.target; - _classCallCheck(this, DidModifyOpcode); - _UpdatingOpcode3.call(this); this.type = "did-modify"; this.tag = _glimmerReference.CONSTANT_TAG; this.target = target; } @@ -18474,55 +19019,43 @@ return DidModifyOpcode; })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.DidModifyOpcode = DidModifyOpcode; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy92bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFlQSxvQkFBQTtrQkFBQSxvQkFBQTs7QUFBQSxpQkFBQSxvQkFBQSxHQUFBO2tDQUFBLG9CQUFBOzs4Q0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUEwQyxzREFBQSxJQUFBLEVBQUEsQ0FBTTtBQUN2QyxnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztTQUtsQzs7QUFORCw0QkFBQSxXQUdFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDckI7O2VBTEgsb0JBQUE7aUNBZlMsTUFBTTs7OztRQXVCZixjQUFBO2tCQUFBLGNBQUE7O0FBQUEsaUJBQUEsY0FBQSxHQUFBO2tDQUFBLGNBQUE7OytDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQW9DLHdEQUFBLElBQUEsRUFBQSxDQUFNO0FBQ2pDLGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQUszQjs7QUFORCxzQkFBQSxXQUdFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDZjs7ZUFMSCxjQUFBO2lDQXZCUyxNQUFNOzs7O1FBK0JmLHNCQUFBO2tCQUFBLHNCQUFBOztBQUFBLGlCQUFBLHNCQUFBLEdBQUE7a0NBQUEsc0JBQUE7OytDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQTRDLHdEQUFBLElBQUEsRUFBQSxDQUFNO0FBQ3pDLGdCQUFBLENBQUEsSUFBSSxHQUFHLG9CQUFvQixDQUFDO1NBS3BDOztBQU5ELDhCQUFBLFdBR0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGNBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3ZCOztlQUxILHNCQUFBO2lDQS9CUyxNQUFNOzs7O1FBdUNmLHFCQUFBO2tCQUFBLHFC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LEVBQUUsQ0FBQztTQUN0Qzs7QUF2QkgsK0JBQUEsV0F5QkUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCxvQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2hCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixvQkFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDOUMsQ0FBQztTQUNIOztlQS9CSCx1QkFBQTtpQ0F2aUI2QixjQUFjOzs7O1FBeWtCM0MsZUFBQTtrQkFBQSxlQUFBOztBQUtFLGlCQUxGLGVBQUEsQ0FLYyxNQUErQyxFQUFBO2dCQUE3QyxNQUFNLEdBQVIsTUFBK0MsQ0FBN0MsTUFBTTs7a0NBTHRCLGVBQUE7O0FBTUksdUNBQU8sQ0FBQztBQUxILGdCQUFBLENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQU16QixnQkFBSSxDQUFDLEdBQUcscUJBcmtCSCxZQUFZLEFBcWtCTSxDQUFDO0FBQ3hCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7QUFUSCx1QkFBQSxXQVdFLFFBQVEsR0FBQSxvQkFBQTtBQUNOLGdCQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3pCOztlQWJILGVBQUE7aUNBemtCNkIsY0FBYyIsImZpbGUiOiJ2bS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbXBpbGVkQXJncywgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgVk0sIFVwZGF0aW5nVk0sIEJpbmREeW5hbWljU2NvcGVDYWxsYmFjayB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IENvbXBpbGVkQmxvY2ssIExheW91dCwgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyB0dXJib2NoYXJnZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSwgQ29uc3RSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBWYWx1ZVJlZmVyZW5jZSB9IGZyb20gJy4uL2V4cHJlc3Npb25zL3ZhbHVlJztcbmltcG9ydCB7IExpc3RTbGljZSwgT3BhcXVlLCBTbGljZSwgRGljdCwgZGljdCwgYXNzaWduLCBJbnRlcm5lZFN0cmluZyB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBDT05TVEFOVF9UQUcsIFJlZmVyZW5jZUNhY2hlLCBSZXZpc2lvbiwgUmV2aXNpb25UYWcsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgU2Nhbm5lciBmcm9tICcuLi8uLi9zY2FubmVyJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBjbGFzcyBQdXNoQ2hpbGRTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXNoLWNoaWxkLXNjb3BlXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucHVzaENoaWxkU2NvcGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9wU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicG9wLXNjb3BlXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucG9wU2NvcGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVzaER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXNoLWR5bmFtaWMtc2NvcGVcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5wdXNoRHluYW1pY1Njb3BlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvcER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwb3AtZHluYW1pYy1zY29wZVwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcER5bmFtaWNTY29wZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXROdWxsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1udWxsXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZnJhbWUuc2V0T3BlcmFuZChOVUxMX1JFRkVSRU5DRSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dFZhbHVlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC12YWx1ZVwiO1xuICBwcml2YXRlIGV4cHJlc3Npb246IENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHsgZXhwcmVzc2lvbiB9OiB7IGV4cHJlc3Npb246IENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5ldmFsdWF0ZU9wZXJhbmQodGhpcy5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFt0aGlzLmV4cHJlc3Npb24udG9KU09OKCldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1dEFyZ3NPcHRpb25zIHtcbiAgYXJnczogQ29tcGlsZWRBcmdzO1xufVxuXG5leHBvcnQgY2xhc3MgUHV0QXJnc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwdXQtYXJnc1wiO1xuXG4gIHByaXZhdGUgYXJnczogQ29tcGlsZWRBcmdzO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncyB9OiBQdXRBcmdzT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmV2YWx1YXRlQXJncyh0aGlzLmFyZ3MpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZGV0YWlsczoge1xuICAgICAgICBcInBvc2l0aW9uYWxcIjogdGhpcy5hcmdzLnBvc2l0aW9uYWwudG9KU09OKCksXG4gICAgICAgIFwibmFtZWRcIjogdGhpcy5hcmdzLm5hbWVkLnRvSlNPTigpXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRQb3NpdGlvbmFsQXJnc09wdGlvbnMge1xuICBibG9jazogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kUG9zaXRpb25hbEFyZ3NPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYmluZC1wb3NpdGlvbmFsLWFyZ3NcIjtcblxuICBwcml2YXRlIG5hbWVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBwb3NpdGlvbmFsOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrIH06IEJpbmRQb3NpdGlvbmFsQXJnc09wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5uYW1lcyA9IGJsb2NrLmxvY2FscztcbiAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbCA9IFtdO1xuXG4gICAgYmxvY2subG9jYWxzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgIHBvc2l0aW9uYWwucHVzaChibG9jay5zeW1ib2xUYWJsZS5nZXRMb2NhbChuYW1lKSk7XG4gICAgfSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kUG9zaXRpb25hbEFyZ3ModGhpcy5wb3NpdGlvbmFsKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtgWyR7dGhpcy5uYW1lcy5tYXAobmFtZSA9PiBKU09OLnN0cmluZ2lmeShuYW1lKSkuam9pbihcIiwgXCIpfV1gXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kTmFtZWRBcmdzT3B0aW9ucyB7XG4gIG5hbWVkOiBEaWN0PG51bWJlcj47XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kTmFtZWRBcmdzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImJpbmQtbmFtZWQtYXJnc1wiO1xuXG4gIHB1YmxpYyBuYW1lZDogRGljdDxudW1iZXI+O1xuXG4gIHN0YXRpYyBjcmVhdGUobGF5b3V0OiBMYXlvdXQpIHtcbiAgICBsZXQgbmFtZWQgPSBsYXlvdXRbJ25hbWVkJ10ucmVkdWNlKFxuICAgICAgKG9iaiwgbmFtZSkgPT4gYXNzaWduKG9iaiwgeyBbPHN0cmluZz5uYW1lXTogbGF5b3V0LnN5bWJvbFRhYmxlLmdldE5hbWVkKG5hbWUpIH0pLFxuICAgICAgZGljdDxudW1iZXI+KClcbiAgICApO1xuXG4gICAgdHVyYm9jaGFyZ2UobmFtZWQpO1xuICAgIHJldHVybiBuZXcgQmluZE5hbWVkQXJnc09wY29kZSh7IG5hbWVkIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lZCB9OiB7IG5hbWVkOiBEaWN0PG51bWJlcj4gfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lZCA9IG5hbWVkO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uYmluZE5hbWVkQXJncyh0aGlzLm5hbWVkKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHRoaXMubmFtZWQpLm1hcChuYW1lID0+IHtcbiAgICAgIHJldHVybiBgJCR7dGhpcy5uYW1lZFtuYW1lXX06ICRBUkdTWyR7bmFtZX1dYDtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnc1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaW5kQmxvY2tzT3B0aW9ucyB7XG4gIGJsb2NrczogRGljdDxudW1iZXI+O1xufVxuXG5leHBvcnQgY2xhc3MgQmluZEJsb2Nrc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLWJsb2Nrc1wiO1xuXG4gIHB1YmxpYyBibG9ja3M6IERpY3Q8bnVtYmVyPjtcblxuICBzdGF0aWMgY3JlYXRlKHRlbXBsYXRlOiBMYXlvdXQpIHtcbiAgICBsZXQgYmxvY2tzID0gZGljdDxudW1iZXI+KCk7XG4gICAgdGVtcGxhdGVbJ3lpZWxkcyddLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICBibG9ja3NbPHN0cmluZz5uYW1lXSA9IHRlbXBsYXRlLnN5bWJvbFRhYmxlLmdldFlpZWxkKG5hbWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBCaW5kQmxvY2tzT3Bjb2RlKHsgYmxvY2tzIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoeyBibG9ja3MgfTogeyBibG9ja3M6IERpY3Q8bnVtYmVyPiB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmJpbmRCbG9ja3ModGhpcy5ibG9ja3MpO1xuICB9XG59XG5cbmV4cG9ydCB7IEJpbmREeW5hbWljU2NvcGVDYWxsYmFjayB9O1xuXG5leHBvcnQgY2xhc3MgQmluZER5bmFtaWNTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLWR5bmFtaWMtc2NvcGVcIjtcblxuICBwdWJsaWMgY2FsbGJhY2s6IEJpbmREeW5hbWljU2NvcGVDYWxsYmFjaztcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogQmluZER5bmFtaWNTY29wZUNhbGxiYWNrKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kRHluYW1pY1Njb3BlKHRoaXMuY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50ZXJPcHRpb25zIHtcbiAgYmVnaW46IExhYmVsT3Bjb2RlO1xuICBlbmQ6IExhYmVsT3Bjb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgRW50ZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZW50ZXJcIjtcbiAgcHVibGljIHNsaWNlOiBTbGljZTxPcGNvZGU+OyAvLyBQdWJsaWMgYmVjYXVzZSBpdCdzIHVzZWQgYnkgbGF6eSBjb250ZW50IGRlb3B0XG5cbiAgY29uc3RydWN0b3IoeyBiZWdpbiwgZW5kIH06IEVudGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zbGljZSA9IG5ldyBMaXN0U2xpY2UoYmVnaW4sIGVuZCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5lbnRlcih0aGlzLnNsaWNlKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBzbGljZSwgdHlwZSwgX2d1aWQgfSA9IHRoaXM7XG5cbiAgICBsZXQgYmVnaW4gPSBzbGljZS5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHNsaWNlLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhpdE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJleGl0XCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZXhpdCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxPcHRpb25zIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBMYWJlbE9wY29kZSBleHRlbmRzIE9wY29kZSBpbXBsZW1lbnRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHRhZyA9IENPTlNUQU5UX1RBRztcbiAgcHVibGljIHR5cGUgPSBcImxhYmVsXCI7XG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gbnVsbDtcblxuICBwcmV2OiBhbnkgPSBudWxsO1xuICBuZXh0OiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmIChsYWJlbCkgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7fVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0gWyR7dGhpcy5fZ3VpZH1dYDtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XG4gIGRlYnVnOiBzdHJpbmc7XG4gIGJsb2NrOiBJbmxpbmVCbG9jaztcbn1cblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImV2YWx1YXRlXCI7XG4gIHB1YmxpYyBkZWJ1Zzogc3RyaW5nO1xuICBwdWJsaWMgYmxvY2s6IElubGluZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKHsgZGVidWcsIGJsb2NrIH06IHsgZGVidWc6IHN0cmluZywgYmxvY2s6IElubGluZUJsb2NrIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5pbnZva2VCbG9jayh0aGlzLmJsb2NrLCB2bS5mcmFtZS5nZXRBcmdzKCkpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZWJ1ZywgYmxvY2sgfSA9IHRoaXM7XG5cbiAgICBsZXQgY29tcGlsZWQ6IENvbXBpbGVkQmxvY2sgPSBibG9ja1snY29tcGlsZWQnXTtcbiAgICBsZXQgY2hpbGRyZW46IE9wY29kZUpTT05bXTtcblxuICAgIGlmIChjb21waWxlZCkge1xuICAgICAgY2hpbGRyZW4gPSBjb21waWxlZC5vcHMudG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkcmVuID0gW3sgZ3VpZDogbnVsbCwgdHlwZTogJ1sgVU5DT01QSUxFRCBCTE9DSyBdJyB9XTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbZGVidWddLFxuICAgICAgY2hpbGRyZW5cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZVBhcnRpYWxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZXZhbHVhdGUtcGFydGlhbFwiO1xuICBwdWJsaWMgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlO1xuICBwdWJsaWMgbmFtZTogQ29tcGlsZWRFeHByZXNzaW9uPGFueT47XG4gIHByaXZhdGUgY2FjaGUgPSBkaWN0PFBhcnRpYWxCbG9jaz4oKTtcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIHN5bWJvbFRhYmxlIH06IHsgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBuYW1lOiBDb21waWxlZEV4cHJlc3Npb248YW55PiB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8YW55PiA9IHRoaXMubmFtZS5ldmFsdWF0ZSh2bSk7XG4gICAgbGV0IHJlZmVyZW5jZUNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IG5hbWU6IEludGVybmVkU3RyaW5nID0gcmVmZXJlbmNlQ2FjaGUucmV2YWxpZGF0ZSgpO1xuXG4gICAgbGV0IGJsb2NrID0gdGhpcy5jYWNoZVtuYW1lXTtcbiAgICBpZiAoIWJsb2NrKSB7XG4gICAgICBsZXQgeyB0ZW1wbGF0ZSB9ID0gdm0uZW52Lmxvb2t1cFBhcnRpYWwoW25hbWVdKTtcbiAgICAgIGxldCBzY2FubmVyID0gbmV3IFNjYW5uZXIodGVtcGxhdGUsIHZtLmVudik7XG4gICAgICBibG9jayA9IHNjYW5uZXIuc2NhblBhcnRpYWwodGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgdm0uaW52b2tlQmxvY2soYmxvY2ssIEV2YWx1YXRlZEFyZ3MuZW1wdHkoKSk7XG5cbiAgICBpZiAoIWlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KHJlZmVyZW5jZUNhY2hlKSk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW3RoaXMubmFtZS50b0pTT04oKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lVG9QYXJ0aWFsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm5hbWUtdG8tcGFydGlhbFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgbGV0IHJlZmVyZW5jZUNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IG5hbWU6IEludGVybmVkU3RyaW5nID0gcmVmZXJlbmNlQ2FjaGUucmV2YWxpZGF0ZSgpO1xuICAgIGxldCBwYXJ0aWFsID0gbmFtZSAmJiB2bS5lbnYuaGFzUGFydGlhbChbbmFtZV0pID8gdm0uZW52Lmxvb2t1cFBhcnRpYWwoW25hbWVdKSA6IGZhbHNlO1xuICAgIHZtLmZyYW1lLnNldE9wZXJhbmQobmV3IFZhbHVlUmVmZXJlbmNlKHBhcnRpYWwpKTtcblxuICAgIGlmICghaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQocmVmZXJlbmNlQ2FjaGUpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVzdEZ1bmN0aW9uID0gKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpID0+IFJlZmVyZW5jZTxib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IENvbnN0VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgU2ltcGxlVGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiByZWYgYXMgUmVmZXJlbmNlPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50VGVzdDogVGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24ocmVmOiBSZWZlcmVuY2U8T3BhcXVlPiwgZW52OiBFbnZpcm9ubWVudCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gIHJldHVybiBlbnYudG9Db25kaXRpb25hbFJlZmVyZW5jZShyZWYpO1xufTtcblxuZXhwb3J0IGNsYXNzIFRlc3RPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwidGVzdFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVzdEZ1bmM6IFRlc3RGdW5jdGlvbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24odGhpcy50ZXN0RnVuYyh2bS5mcmFtZS5nZXRPcGVyYW5kKCksIHZtLmVudikpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW1wiJE9QRVJBTkRcIiwgdGhpcy50ZXN0RnVuYy5uYW1lXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBKdW1wT3B0aW9ucyB7XG4gIHRhcmdldDogTGFiZWxPcGNvZGU7XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXBcIjtcblxuICBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoeyB0YXJnZXQgfTogeyB0YXJnZXQ6IExhYmVsT3Bjb2RlIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZ290byh0aGlzLnRhcmdldCk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy50YXJnZXQuaW5zcGVjdCgpKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBKdW1wSWZPcGNvZGUgZXh0ZW5kcyBKdW1wT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtaWZcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0Q29uZGl0aW9uKCk7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKGNhY2hlLnBlZWsoKSkge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG5cbiAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcFVubGVzc09wY29kZSBleHRlbmRzIEp1bXBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC11bmxlc3NcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0Q29uZGl0aW9uKCk7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmICghY2FjaGUucGVlaygpKSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cblxuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3NlcnQgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJhc3NlcnRcIjtcblxuICBwcml2YXRlIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+O1xuXG4gIGNvbnN0cnVjdG9yKGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxPcGFxdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgdm0udGhyb3coKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgdHlwZSwgX2d1aWQsIGNhY2hlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGV4cGVjdGVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV4cGVjdGVkID0gSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGV4cGVjdGVkID0gU3RyaW5nKGNhY2hlLnBlZWsoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IF9ndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGFyZ3M6IFtdLFxuICAgICAgZGV0YWlsczogeyBleHBlY3RlZCB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuXG4gIHByaXZhdGUgdGFyZ2V0OiBMYWJlbE9wY29kZTtcbiAgcHJpdmF0ZSBsYXN0UmV2aXNpb246IFJldmlzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGFnLCB0YXJnZXQgfTogeyB0YWc6IFJldmlzaW9uVGFnLCB0YXJnZXQ6IExhYmVsT3Bjb2RlIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoIXZtLmFsd2F5c1JldmFsaWRhdGUgJiYgdGFnLnZhbGlkYXRlKGxhc3RSZXZpc2lvbikpIHtcbiAgICAgIHZtLmdvdG8odGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBkaWRNb2RpZnkoKSB7XG4gICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlkTW9kaWZ5T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuXG4gIHByaXZhdGUgdGFyZ2V0OiBKdW1wSWZOb3RNb2RpZmllZE9wY29kZTtcblxuICBjb25zdHJ1Y3Rvcih7IHRhcmdldCB9OiB7IHRhcmdldDogSnVtcElmTm90TW9kaWZpZWRPcGNvZGUgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gIH1cblxuICBldmFsdWF0ZSgpIHtcbiAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgfVxufVxuIl19 -enifed('glimmer-runtime/lib/compiler', ['exports', 'glimmer-util', '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, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibCompiledBlocks, _glimmerRuntimeLibCompiledExpressionsFunction, _glimmerRuntimeLibCompiledOpcodesBuilder) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy92bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFhTSxvQkFBNEI7OEJBQTVCLG9CQUE0Qjs7QUFBbEMsaUJBQU0sb0JBQTRCLEdBQWxDO0FDSlEsZ0NBQVMsU0FBUyxDQUFDLENBQUM7QURLbkIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsa0JBQWtCLENBQUM7U0FLbEM7O0FBTkssNEJBQTRCLFdBR2hDLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDckI7O2VBTEcsb0JBQTRCO2lDQWJ6QixNQUFNOzs7O1FBcUJULGNBQXNCOzhCQUF0QixjQUFzQjs7QUFBNUIsaUJBQU0sY0FBc0IsR0FBNUI7QUNIUSxpQ0FBUyxTQUFTLENBQUMsQ0FBQztBREluQixnQkFBQSxDQUFBLElBQUksR0FBRyxXQUFXLENBQUM7U0FLM0I7O0FBTkssc0JBQXNCLFdBRzFCLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDZjs7ZUFMRyxjQUFzQjtpQ0FyQm5CLE1BQU07Ozs7UUE2QlQsc0JBQThCOzhCQUE5QixzQkFBOEI7O0FBQXBDLGlCQUFNLHNCQUE4QixHQUFwQztBQ0ZRLGlDQUFTLFNBQVMsQ0FBQyxDQUFDO0FER25CLGdCQUFBLENBQUEsSUFBSSxHQUFHLG9CQUFvQixDQUFDO1NBS3BDOztBQU5LLDhCQUE4QixXQUdsQyxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsY0FBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDdkI7O2VBTEcsc0JBQThCO2lDQTdCM0IsTUFBTTs7OztRQXFDVCxxQkFBNkI7OEJBQTdCLHFCQUE2Qjs7QUFBbkMsaUJBQU0scUJBQTZCLEdBQW5DO0FDRFEsaUNBQVMsU0FBUyxDQUFDLENBQUM7QURFbkIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsbUJB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LENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQU16QixnQkFBSSxDQUFDLEdBQUcscUJBemlCSCxZQUFZLEFBeWlCTSxDQUFDO0FBQ3hCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7QUFURyx1QkFBdUIsV0FXM0IsUUFBUSxHQUFBLG9CQUFBO0FBQ04sZ0JBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDekI7O2VBYkcsZUFBdUI7aUNBNWlCQSxjQUFjIiwiZmlsZSI6InZtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3Bjb2RlLCBPcGNvZGVKU09OLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzLCBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IENvbXBpbGVkQmxvY2ssIExheW91dCwgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcyc7XG5pbXBvcnQgeyBOVUxMX1JFRkVSRU5DRSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFBhdGhSZWZlcmVuY2UsIENvbnN0UmVmZXJlbmNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVmFsdWVSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy92YWx1ZSc7XG5pbXBvcnQgeyBMaXN0U2xpY2UsIE9wYXF1ZSwgU2xpY2UsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgQ09OU1RBTlRfVEFHLCBSZWZlcmVuY2VDYWNoZSwgUmV2aXNpb24sIFJldmlzaW9uVGFnLCBpc0NvbnN0LCBpc01vZGlmaWVkIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGNsYXNzIFB1c2hDaGlsZFNjb3BlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1c2gtY2hpbGQtc2NvcGVcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5wdXNoQ2hpbGRTY29wZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3BTY29wZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJwb3Atc2NvcGVcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5wb3BTY29wZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdXNoRHluYW1pY1Njb3BlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1c2gtZHluYW1pYy1zY29wZVwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9wRHluYW1pY1Njb3BlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInBvcC1keW5hbWljLXNjb3BlXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0ucG9wRHluYW1pY1Njb3BlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFB1dE51bGxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LW51bGxcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5mcmFtZS5zZXRPcGVyYW5kKE5VTExfUkVGRVJFTkNFKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHV0VmFsdWVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwicHV0LXZhbHVlXCI7XG4gIHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT47XG5cbiAgY29uc3RydWN0b3IoeyBleHByZXNzaW9uIH06IHsgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4gfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmV2YWx1YXRlT3BlcmFuZCh0aGlzLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW3RoaXMuZXhwcmVzc2lvbi50b0pTT04oKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHV0QXJnc09wdGlvbnMge1xuICBhcmdzOiBDb21waWxlZEFyZ3M7XG59XG5cbmV4cG9ydCBjbGFzcyBQdXRBcmdzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInB1dC1hcmdzXCI7XG5cbiAgcHJpdmF0ZSBhcmdzOiBDb21waWxlZEFyZ3M7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzIH06IFB1dEFyZ3NPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZXZhbHVhdGVBcmdzKHRoaXMuYXJncyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBkZXRhaWxzOiB7XG4gICAgICAgIFwicG9zaXRpb25hbFwiOiB0aGlzLmFyZ3MucG9zaXRpb25hbC50b0pTT04oKSxcbiAgICAgICAgXCJuYW1lZFwiOiB0aGlzLmFyZ3MubmFtZWQudG9KU09OKClcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kUG9zaXRpb25hbEFyZ3NPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYmluZC1wb3NpdGlvbmFsLWFyZ3NcIjtcblxuICBzdGF0aWMgY3JlYXRlKGJsb2NrOiBJbmxpbmVCbG9jayk6IEJpbmRQb3NpdGlvbmFsQXJnc09wY29kZSB7XG4gICAgbGV0IG5hbWVzID0gYmxvY2subG9jYWxzO1xuICAgIGxldCBzeW1ib2xzID0gbmFtZXMubWFwKG5hbWUgPT4gYmxvY2suc3ltYm9sVGFibGUuZ2V0TG9jYWwobmFtZSkpO1xuICAgIHJldHVybiBuZXcgdGhpcyhuYW1lcywgc3ltYm9scyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHN5bWJvbHM6IG51bWJlcltdXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kUG9zaXRpb25hbEFyZ3ModGhpcy5zeW1ib2xzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtgWyR7dGhpcy5uYW1lcy5tYXAobmFtZSA9PiBKU09OLnN0cmluZ2lmeShuYW1lKSkuam9pbihcIiwgXCIpfV1gXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbmROYW1lZEFyZ3NPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYmluZC1uYW1lZC1hcmdzXCI7XG5cbiAgc3RhdGljIGNyZWF0ZShsYXlvdXQ6IExheW91dCkge1xuICAgIGxldCBuYW1lcyA9IGxheW91dC5uYW1lZDtcbiAgICBsZXQgc3ltYm9scyA9IG5hbWVzLm1hcChuYW1lID0+IGxheW91dC5zeW1ib2xUYWJsZS5nZXROYW1lZChuYW1lKSk7XG5cbiAgICByZXR1cm4gbmV3IEJpbmROYW1lZEFyZ3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG5hbWVzOiBzdHJpbmdbXSxcbiAgICBwcm90ZWN0ZWQgc3ltYm9sczogbnVtYmVyW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmJpbmROYW1lZEFyZ3ModGhpcy5uYW1lcywgdGhpcy5zeW1ib2xzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBuYW1lcywgc3ltYm9scyB9ID0gdGhpcztcblxuICAgIGxldCBhcmdzID0gbmFtZXMubWFwKChuYW1lLCBpKSA9PiBgJCR7c3ltYm9sc1tpXX06ICRBUkdTWyR7bmFtZX1dYCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3NcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCaW5kQmxvY2tzT3Bjb2RlIGV4dGVuZHMgQmluZE5hbWVkQXJnc09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJiaW5kLWJsb2Nrc1wiO1xuXG4gIHN0YXRpYyBjcmVhdGUobGF5b3V0OiBMYXlvdXQpIHtcbiAgICBsZXQgbmFtZXMgPSBsYXlvdXQueWllbGRzO1xuICAgIGxldCBzeW1ib2xzID0gbmFtZXMubWFwKG5hbWUgPT4gbGF5b3V0LnN5bWJvbFRhYmxlLmdldFlpZWxkKG5hbWUpKTtcblxuICAgIHJldHVybiBuZXcgdGhpcyhuYW1lcywgc3ltYm9scyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5iaW5kQmxvY2tzKHRoaXMubmFtZXMsIHRoaXMuc3ltYm9scyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJpbmREeW5hbWljU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYmluZC1keW5hbWljLXNjb3BlXCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lczogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uYmluZER5bmFtaWNTY29wZSh0aGlzLm5hbWVzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGVyT3B0aW9ucyB7XG4gIGJlZ2luOiBMYWJlbE9wY29kZTtcbiAgZW5kOiBMYWJlbE9wY29kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEVudGVyT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImVudGVyXCI7XG4gIHB1YmxpYyBzbGljZTogU2xpY2U8T3Bjb2RlPjsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGJ5IGxhenkgY29udGVudCBkZW9wdFxuXG4gIGNvbnN0cnVjdG9yKHsgYmVnaW4sIGVuZCB9OiBFbnRlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2xpY2UgPSBuZXcgTGlzdFNsaWNlKGJlZ2luLCBlbmQpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZW50ZXIodGhpcy5zbGljZSk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgc2xpY2UsIHR5cGUsIF9ndWlkIH0gPSB0aGlzO1xuXG4gICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSBzbGljZS50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW1xuICAgICAgICBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShlbmQuaW5zcGVjdCgpKVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4aXRPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiZXhpdFwiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmV4aXQoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsT3B0aW9ucyB7XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTGFiZWxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUgaW1wbGVtZW50cyBVcGRhdGluZ09wY29kZSB7XG4gIHB1YmxpYyB0YWcgPSBDT05TVEFOVF9UQUc7XG4gIHB1YmxpYyB0eXBlID0gXCJsYWJlbFwiO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyA9IG51bGw7XG5cbiAgcHJldjogYW55ID0gbnVsbDtcbiAgbmV4dDogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAobGFiZWwpIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIGV2YWx1YXRlKCkge31cblxuICBpbnNwZWN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubGFiZWx9IFske3RoaXMuX2d1aWR9XWA7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5pbnNwZWN0KCkpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xuICBkZWJ1Zzogc3RyaW5nO1xuICBibG9jazogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZU9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJldmFsdWF0ZVwiO1xuICBwdWJsaWMgZGVidWc6IHN0cmluZztcbiAgcHVibGljIGJsb2NrOiBJbmxpbmVCbG9jaztcblxuICBjb25zdHJ1Y3Rvcih7IGRlYnVnLCBibG9jayB9OiB7IGRlYnVnOiBzdHJpbmcsIGJsb2NrOiBJbmxpbmVCbG9jayB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uaW52b2tlQmxvY2sodGhpcy5ibG9jaywgdm0uZnJhbWUuZ2V0QXJncygpKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVidWcsIGJsb2NrIH0gPSB0aGlzO1xuXG4gICAgbGV0IGNvbXBpbGVkOiBDb21waWxlZEJsb2NrID0gYmxvY2tbJ2NvbXBpbGVkJ107XG4gICAgbGV0IGNoaWxkcmVuOiBPcGNvZGVKU09OW107XG5cbiAgICBpZiAoY29tcGlsZWQpIHtcbiAgICAgIGNoaWxkcmVuID0gY29tcGlsZWQub3BzLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZHJlbiA9IFt7IGd1aWQ6IG51bGwsIHR5cGU6ICdbIFVOQ09NUElMRUQgQkxPQ0sgXScgfV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQsXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogW2RlYnVnXSxcbiAgICAgIGNoaWxkcmVuXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGVQYXJ0aWFsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImV2YWx1YXRlLXBhcnRpYWxcIjtcbiAgcHVibGljIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHVibGljIG5hbWU6IENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+O1xuICBwcml2YXRlIGNhY2hlID0gZGljdDxQYXJ0aWFsQmxvY2s+KCk7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCBzeW1ib2xUYWJsZSB9OiB7IHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgbmFtZTogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4gfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN5bWJvbFRhYmxlID0gc3ltYm9sVGFibGU7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlOiBQYXRoUmVmZXJlbmNlPGFueT4gPSB0aGlzLm5hbWUuZXZhbHVhdGUodm0pO1xuICAgIGxldCByZWZlcmVuY2VDYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBuYW1lOiBzdHJpbmcgPSByZWZlcmVuY2VDYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBsZXQgYmxvY2sgPSB0aGlzLmNhY2hlW25hbWVdO1xuICAgIGlmICghYmxvY2spIHtcbiAgICAgIGxldCB7IHRlbXBsYXRlIH0gPSB2bS5lbnYubG9va3VwUGFydGlhbChbbmFtZV0sIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgICAgYmxvY2sgPSB0ZW1wbGF0ZS5hc1BhcnRpYWwodGhpcy5zeW1ib2xUYWJsZSk7XG4gICAgfVxuXG4gICAgdm0uaW52b2tlQmxvY2soYmxvY2ssIEV2YWx1YXRlZEFyZ3MuZW1wdHkoKSk7XG5cbiAgICBpZiAoIWlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KHJlZmVyZW5jZUNhY2hlKSk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW3RoaXMubmFtZS50b0pTT04oKV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lVG9QYXJ0aWFsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcIm5hbWUtdG8tcGFydGlhbFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCByZWZlcmVuY2UgPSB2bS5mcmFtZS5nZXRPcGVyYW5kKCk7XG4gICAgbGV0IHJlZmVyZW5jZUNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IHJlZmVyZW5jZUNhY2hlLnJldmFsaWRhdGUoKTtcbiAgICBsZXQgcGFydGlhbCA9IG5hbWUgJiYgdm0uZW52Lmhhc1BhcnRpYWwoW25hbWVdLCB0aGlzLnN5bWJvbFRhYmxlKSA/IHZtLmVudi5sb29rdXBQYXJ0aWFsKFtuYW1lXSwgdGhpcy5zeW1ib2xUYWJsZSkgOiBmYWxzZTtcbiAgICB2bS5mcmFtZS5zZXRPcGVyYW5kKG5ldyBWYWx1ZVJlZmVyZW5jZShwYXJ0aWFsKSk7XG5cbiAgICBpZiAoIWlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KHJlZmVyZW5jZUNhY2hlKSk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW1wiJE9QRVJBTkRcIl1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRlc3RGdW5jdGlvbiA9IChyZWY6IFJlZmVyZW5jZTxPcGFxdWU+LCBlbnY6IEVudmlyb25tZW50KSA9PiBSZWZlcmVuY2U8Ym9vbGVhbj47XG5cbmV4cG9ydCBjb25zdCBDb25zdFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IENvbnN0UmVmZXJlbmNlKCEhcmVmLnZhbHVlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gcmVmIGFzIFJlZmVyZW5jZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3Q6IFRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHJlZjogUmVmZXJlbmNlPE9wYXF1ZT4sIGVudjogRW52aXJvbm1lbnQpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBUZXN0T3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcInRlc3RcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlc3RGdW5jOiBUZXN0RnVuY3Rpb24pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgdm0uZnJhbWUuc2V0Q29uZGl0aW9uKHRoaXMudGVzdEZ1bmModm0uZnJhbWUuZ2V0T3BlcmFuZCgpLCB2bS5lbnYpKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCIsIHRoaXMudGVzdEZ1bmMubmFtZV1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnVtcE9wdGlvbnMge1xuICB0YXJnZXQ6IExhYmVsT3Bjb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgSnVtcE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wXCI7XG5cbiAgcHJpdmF0ZSB0YXJnZXQ6IExhYmVsT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGFyZ2V0IH06IHsgdGFyZ2V0OiBMYWJlbE9wY29kZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLmdvdG8odGhpcy50YXJnZXQpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSnVtcElmT3Bjb2RlIGV4dGVuZHMgSnVtcE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJqdW1wLWlmXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldENvbmRpdGlvbigpO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgaWYgKHJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuXG4gICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBVbmxlc3NPcGNvZGUgZXh0ZW5kcyBKdW1wT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImp1bXAtdW5sZXNzXCI7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldENvbmRpdGlvbigpO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgaWYgKCFyZWZlcmVuY2UudmFsdWUoKSkge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuXG4gICAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG5cbiAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXJ0IGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiYXNzZXJ0XCI7XG5cbiAgcHJpdmF0ZSBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPjtcblxuICBjb25zdHJ1Y3RvcihjYWNoZTogUmVmZXJlbmNlQ2FjaGU8T3BhcXVlPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcblxuICAgIGlmIChpc01vZGlmaWVkKGNhY2hlLnJldmFsaWRhdGUoKSkpIHtcbiAgICAgIHZtLnRocm93KCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIGxldCBleHBlY3RlZDtcblxuICAgIHRyeSB7XG4gICAgICBleHBlY3RlZCA9IEpTT04uc3RyaW5naWZ5KGNhY2hlLnBlZWsoKSk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiBfZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBhcmdzOiBbXSxcbiAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwianVtcC1pZi1ub3QtbW9kaWZpZWRcIjtcblxuICBwcml2YXRlIHRhcmdldDogTGFiZWxPcGNvZGU7XG4gIHByaXZhdGUgbGFzdFJldmlzaW9uOiBSZXZpc2lvbjtcblxuICBjb25zdHJ1Y3Rvcih7IHRhZywgdGFyZ2V0IH06IHsgdGFnOiBSZXZpc2lvblRhZywgdGFyZ2V0OiBMYWJlbE9wY29kZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IHRhZztcbiAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICB0aGlzLmxhc3RSZXZpc2lvbiA9IHRhZy52YWx1ZSgpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyB0YWcsIHRhcmdldCwgbGFzdFJldmlzaW9uIH0gPSB0aGlzO1xuXG4gICAgaWYgKCF2bS5hbHdheXNSZXZhbGlkYXRlICYmIHRhZy52YWxpZGF0ZShsYXN0UmV2aXNpb24pKSB7XG4gICAgICB2bS5nb3RvKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgZGlkTW9kaWZ5KCkge1xuICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGhpcy50YWcudmFsdWUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLnRhcmdldC5pbnNwZWN0KCkpXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgcHVibGljIHR5cGUgPSBcImRpZC1tb2RpZnlcIjtcblxuICBwcml2YXRlIHRhcmdldDogSnVtcElmTm90TW9kaWZpZWRPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoeyB0YXJnZXQgfTogeyB0YXJnZXQ6IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICB9XG5cbiAgZXZhbHVhdGUoKSB7XG4gICAgdGhpcy50YXJnZXQuZGlkTW9kaWZ5KCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE9wY29kZSwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IFZhbHVlUmVmZXJlbmNlIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvdmFsdWUnO1xuaW1wb3J0IHsgTGlzdFNsaWNlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IENPTlNUQU5UX1RBRywgUmVmZXJlbmNlQ2FjaGUsIGlzQ29uc3QsIGlzTW9kaWZpZWQgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5leHBvcnQgY2xhc3MgUHVzaENoaWxkU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInB1c2gtY2hpbGQtc2NvcGVcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0ucHVzaENoaWxkU2NvcGUoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9wU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInBvcC1zY29wZVwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5wb3BTY29wZSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQdXNoRHluYW1pY1Njb3BlT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJwdXNoLWR5bmFtaWMtc2NvcGVcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0ucHVzaER5bmFtaWNTY29wZSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3BEeW5hbWljU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInBvcC1keW5hbWljLXNjb3BlXCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLnBvcER5bmFtaWNTY29wZSgpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQdXROdWxsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJwdXQtbnVsbFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5mcmFtZS5zZXRPcGVyYW5kKE5VTExfUkVGRVJFTkNFKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUHV0VmFsdWVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgZXhwcmVzc2lvbiB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwicHV0LXZhbHVlXCI7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLmV2YWx1YXRlT3BlcmFuZCh0aGlzLmV4cHJlc3Npb24pO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW3RoaXMuZXhwcmVzc2lvbi50b0pTT04oKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUHV0QXJnc09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoeyBhcmdzIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJwdXQtYXJnc1wiO1xuICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5ldmFsdWF0ZUFyZ3ModGhpcy5hcmdzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICAgICAgICBcInBvc2l0aW9uYWxcIjogdGhpcy5hcmdzLnBvc2l0aW9uYWwudG9KU09OKCksXG4gICAgICAgICAgICAgICAgXCJuYW1lZFwiOiB0aGlzLmFyZ3MubmFtZWQudG9KU09OKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQmluZFBvc2l0aW9uYWxBcmdzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lcywgc3ltYm9scykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHN5bWJvbHM7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiYmluZC1wb3NpdGlvbmFsLWFyZ3NcIjtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShibG9jaykge1xuICAgICAgICBsZXQgbmFtZXMgPSBibG9jay5sb2NhbHM7XG4gICAgICAgIGxldCBzeW1ib2xzID0gbmFtZXMubWFwKG5hbWUgPT4gYmxvY2suc3ltYm9sVGFibGUuZ2V0TG9jYWwobmFtZSkpO1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMobmFtZXMsIHN5bWJvbHMpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5iaW5kUG9zaXRpb25hbEFyZ3ModGhpcy5zeW1ib2xzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtgWyR7dGhpcy5uYW1lcy5tYXAobmFtZSA9PiBKU09OLnN0cmluZ2lmeShuYW1lKSkuam9pbihcIiwgXCIpfV1gXVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCaW5kTmFtZWRBcmdzT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lcywgc3ltYm9scykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHN5bWJvbHM7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiYmluZC1uYW1lZC1hcmdzXCI7XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUobGF5b3V0KSB7XG4gICAgICAgIGxldCBuYW1lcyA9IGxheW91dC5uYW1lZDtcbiAgICAgICAgbGV0IHN5bWJvbHMgPSBuYW1lcy5tYXAobmFtZSA9PiBsYXlvdXQuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSkpO1xuICAgICAgICByZXR1cm4gbmV3IEJpbmROYW1lZEFyZ3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5iaW5kTmFtZWRBcmdzKHRoaXMubmFtZXMsIHRoaXMuc3ltYm9scyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIHN5bWJvbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBhcmdzID0gbmFtZXMubWFwKChuYW1lLCBpKSA9PiBgJCR7c3ltYm9sc1tpXX06ICRBUkdTWyR7bmFtZX1dYCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnc1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCaW5kQmxvY2tzT3Bjb2RlIGV4dGVuZHMgQmluZE5hbWVkQXJnc09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiYmluZC1ibG9ja3NcIjtcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShsYXlvdXQpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gbGF5b3V0LnlpZWxkcztcbiAgICAgICAgbGV0IHN5bWJvbHMgPSBuYW1lcy5tYXAobmFtZSA9PiBsYXlvdXQuc3ltYm9sVGFibGUuZ2V0WWllbGQobmFtZSkpO1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMobmFtZXMsIHN5bWJvbHMpO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5iaW5kQmxvY2tzKHRoaXMubmFtZXMsIHRoaXMuc3ltYm9scyk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEJpbmREeW5hbWljU2NvcGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG5hbWVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy50eXBlID0gXCJiaW5kLWR5bmFtaWMtc2NvcGVcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uYmluZER5bmFtaWNTY29wZSh0aGlzLm5hbWVzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRW50ZXJPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgYmVnaW4sIGVuZCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZW50ZXJcIjtcbiAgICAgICAgdGhpcy5zbGljZSA9IG5ldyBMaXN0U2xpY2UoYmVnaW4sIGVuZCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLmVudGVyKHRoaXMuc2xpY2UpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IHNsaWNlLCB0eXBlLCBfZ3VpZCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGJlZ2luID0gc2xpY2UuaGVhZCgpO1xuICAgICAgICBsZXQgZW5kID0gc2xpY2UudGFpbCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogX2d1aWQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgYXJnczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGJlZ2luLmluc3BlY3QoKSksXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZW5kLmluc3BlY3QoKSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRXhpdE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZXhpdFwiO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICB2bS5leGl0KCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIExhYmVsT3Bjb2RlIGV4dGVuZHMgT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihsYWJlbCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgICAgdGhpcy50eXBlID0gXCJsYWJlbFwiO1xuICAgICAgICB0aGlzLmxhYmVsID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgaWYgKGxhYmVsKVxuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIH1cbiAgICBldmFsdWF0ZSgpIHsgfVxuICAgIGluc3BlY3QoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxhYmVsfSBbJHt0aGlzLl9ndWlkfV1gO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMuaW5zcGVjdCgpKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRXZhbHVhdGVPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgZGVidWcsIGJsb2NrIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJldmFsdWF0ZVwiO1xuICAgICAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uaW52b2tlQmxvY2sodGhpcy5ibG9jaywgdm0uZnJhbWUuZ2V0QXJncygpKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgZGVidWcsIGJsb2NrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSBibG9ja1snY29tcGlsZWQnXTtcbiAgICAgICAgbGV0IGNoaWxkcmVuO1xuICAgICAgICBpZiAoY29tcGlsZWQpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuID0gY29tcGlsZWQub3BzLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBbeyBndWlkOiBudWxsLCB0eXBlOiAnWyBVTkNPTVBJTEVEIEJMT0NLIF0nIH1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtkZWJ1Z10sXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFdmFsdWF0ZVBhcnRpYWxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgc3ltYm9sVGFibGUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImV2YWx1YXRlLXBhcnRpYWxcIjtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGRpY3QoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlID0gdGhpcy5uYW1lLmV2YWx1YXRlKHZtKTtcbiAgICAgICAgbGV0IHJlZmVyZW5jZUNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGxldCBuYW1lID0gcmVmZXJlbmNlQ2FjaGUucmV2YWxpZGF0ZSgpO1xuICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLmNhY2hlW25hbWVdO1xuICAgICAgICBpZiAoIWJsb2NrKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZW1wbGF0ZSB9ID0gdm0uZW52Lmxvb2t1cFBhcnRpYWwoW25hbWVdLCB0aGlzLnN5bWJvbFRhYmxlKTtcbiAgICAgICAgICAgIGJsb2NrID0gdGVtcGxhdGUuYXNQYXJ0aWFsKHRoaXMuc3ltYm9sVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHZtLmludm9rZUJsb2NrKGJsb2NrLCBFdmFsdWF0ZWRBcmdzLmVtcHR5KCkpO1xuICAgICAgICBpZiAoIWlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KHJlZmVyZW5jZUNhY2hlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFt0aGlzLm5hbWUudG9KU09OKCldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE5hbWVUb1BhcnRpYWxPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJuYW1lLXRvLXBhcnRpYWxcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICAgICAgbGV0IHJlZmVyZW5jZUNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgIGxldCBuYW1lID0gcmVmZXJlbmNlQ2FjaGUucmV2YWxpZGF0ZSgpO1xuICAgICAgICBsZXQgcGFydGlhbCA9IG5hbWUgJiYgdm0uZW52Lmhhc1BhcnRpYWwoW25hbWVdLCB0aGlzLnN5bWJvbFRhYmxlKSA/IHZtLmVudi5sb29rdXBQYXJ0aWFsKFtuYW1lXSwgdGhpcy5zeW1ib2xUYWJsZSkgOiBmYWxzZTtcbiAgICAgICAgdm0uZnJhbWUuc2V0T3BlcmFuZChuZXcgVmFsdWVSZWZlcmVuY2UocGFydGlhbCkpO1xuICAgICAgICBpZiAoIWlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KHJlZmVyZW5jZUNhY2hlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IENvbnN0VGVzdCA9IGZ1bmN0aW9uIChyZWYsIGVudikge1xuICAgIHJldHVybiBuZXcgQ29uc3RSZWZlcmVuY2UoISFyZWYudmFsdWUoKSk7XG59O1xuZXhwb3J0IGNvbnN0IFNpbXBsZVRlc3QgPSBmdW5jdGlvbiAocmVmLCBlbnYpIHtcbiAgICByZXR1cm4gcmVmO1xufTtcbmV4cG9ydCBjb25zdCBFbnZpcm9ubWVudFRlc3QgPSBmdW5jdGlvbiAocmVmLCBlbnYpIHtcbiAgICByZXR1cm4gZW52LnRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmKTtcbn07XG5leHBvcnQgY2xhc3MgVGVzdE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGVzdEZ1bmMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50ZXN0RnVuYyA9IHRlc3RGdW5jO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRlc3RcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgdm0uZnJhbWUuc2V0Q29uZGl0aW9uKHRoaXMudGVzdEZ1bmModm0uZnJhbWUuZ2V0T3BlcmFuZCgpLCB2bS5lbnYpKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCIsIHRoaXMudGVzdEZ1bmMubmFtZV1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSnVtcE9wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoeyB0YXJnZXQgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImp1bXBcIjtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLmdvdG8odGhpcy50YXJnZXQpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEp1bXBJZk9wY29kZSBleHRlbmRzIEp1bXBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImp1bXAtaWZcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldENvbmRpdGlvbigpO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBpZiAocmVmZXJlbmNlLnZhbHVlKCkpIHtcbiAgICAgICAgICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGlmIChjYWNoZS5wZWVrKCkpIHtcbiAgICAgICAgICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2bS51cGRhdGVXaXRoKG5ldyBBc3NlcnQoY2FjaGUpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBKdW1wVW5sZXNzT3Bjb2RlIGV4dGVuZHMgSnVtcE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwianVtcC11bmxlc3NcIjtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldENvbmRpdGlvbigpO1xuICAgICAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICBpZiAoIXJlZmVyZW5jZS52YWx1ZSgpKSB7XG4gICAgICAgICAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBpZiAoIWNhY2hlLnBlZWsoKSkge1xuICAgICAgICAgICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFzc2VydCBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihjYWNoZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImFzc2VydFwiO1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGlzTW9kaWZpZWQoY2FjaGUucmV2YWxpZGF0ZSgpKSkge1xuICAgICAgICAgICAgdm0udGhyb3coKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IHR5cGUsIF9ndWlkLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgbGV0IGV4cGVjdGVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhwZWN0ZWQgPSBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IFN0cmluZyhjYWNoZS5wZWVrKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiBfZ3VpZCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhcmdzOiBbXSxcbiAgICAgICAgICAgIGRldGFpbHM6IHsgZXhwZWN0ZWQgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih7IHRhZywgdGFyZ2V0IH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJqdW1wLWlmLW5vdC1tb2RpZmllZFwiO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMubGFzdFJldmlzaW9uID0gdGFnLnZhbHVlKCk7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IHRhZywgdGFyZ2V0LCBsYXN0UmV2aXNpb24gfSA9IHRoaXM7XG4gICAgICAgIGlmICghdm0uYWx3YXlzUmV2YWxpZGF0ZSAmJiB0YWcudmFsaWRhdGUobGFzdFJldmlzaW9uKSkge1xuICAgICAgICAgICAgdm0uZ290byh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpZE1vZGlmeSgpIHtcbiAgICAgICAgdGhpcy5sYXN0UmV2aXNpb24gPSB0aGlzLnRhZy52YWx1ZSgpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMudGFyZ2V0Lmluc3BlY3QoKSldXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZE1vZGlmeU9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih7IHRhcmdldCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiZGlkLW1vZGlmeVwiO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgfVxuICAgIGV2YWx1YXRlKCkge1xuICAgICAgICB0aGlzLnRhcmdldC5kaWRNb2RpZnkoKTtcbiAgICB9XG59XG4iXX0= +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'; - var _createClass = (function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - exports.compileLayout = compileLayout; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var Compiler = (function () { function Compiler(block, env) { - _classCallCheck(this, Compiler); - this.block = block; this.current = block.program.head(); this.env = env; this.symbolTable = block.symbolTable; } Compiler.prototype.compileStatement = function compileStatement(statement, ops) { - this.env.statement(statement, this.block.meta).compile(ops, this.env, this.block); + this.env.statement(statement, this.symbolTable).compile(ops, this.env, this.symbolTable); }; return Compiler; })(); function compileStatement(env, statement, ops, layout) { - env.statement(statement, layout.meta).compile(ops, env, layout); + env.statement(statement, layout.symbolTable).compile(ops, env, layout.symbolTable); } exports.default = Compiler; var EntryPointCompiler = (function (_Compiler) { - _inherits(EntryPointCompiler, _Compiler); + babelHelpers.inherits(EntryPointCompiler, _Compiler); function EntryPointCompiler(template, env) { - _classCallCheck(this, EntryPointCompiler); - _Compiler.call(this, template, env); - var list = new CompileIntoList(env, template); - this.ops = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(list, 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; @@ -18557,27 +19090,25 @@ })(Compiler); exports.EntryPointCompiler = EntryPointCompiler; var InlineBlockCompiler = (function (_Compiler2) { - _inherits(InlineBlockCompiler, _Compiler2); + babelHelpers.inherits(InlineBlockCompiler, _Compiler2); function InlineBlockCompiler(block, env) { - _classCallCheck(this, InlineBlockCompiler); - _Compiler2.call(this, block, env); - var list = new CompileIntoList(env, block); - this.ops = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(list, block, env); + 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; if (block.hasPositionalParameters()) { - ops.bindPositionalArgs(block); + ops.bindPositionalArgsForBlock(block); } var current = program.head(); while (current) { var next = program.nextNode(current); this.compileStatement(current, ops); @@ -18597,12 +19128,10 @@ return builder.compile(); } var ComponentLayoutBuilder = (function () { function ComponentLayoutBuilder(env) { - _classCallCheck(this, ComponentLayoutBuilder); - this.env = env; } ComponentLayoutBuilder.prototype.empty = function empty() { this.inner = new EmptyBuilder(this.env); @@ -18618,58 +19147,52 @@ ComponentLayoutBuilder.prototype.compile = function compile() { return this.inner.compile(); }; - _createClass(ComponentLayoutBuilder, [{ + 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) { - _classCallCheck(this, EmptyBuilder); - this.env = env; } EmptyBuilder.prototype.compile = function compile() { var env = this.env; var list = new CompileIntoList(env, null); return new _glimmerRuntimeLibCompiledBlocks.CompiledBlock(list, 0); }; - _createClass(EmptyBuilder, [{ + 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) { - _classCallCheck(this, WrappedBuilder); - this.tag = new ComponentTagBuilder(); this.attrs = new ComponentAttrsBuilder(); this.env = env; this.layout = layout; } @@ -18680,48 +19203,56 @@ // 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); - var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, layout, env); + 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()) { @@ -18737,74 +19268,73 @@ 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) { - _classCallCheck(this, UnwrappedBuilder); - this.attrs = new ComponentAttrsBuilder(); this.env = env; this.layout = layout; } UnwrappedBuilder.prototype.compile = function compile() { var env = this.env; var layout = this.layout; - var buffer = new CompileIntoList(env, layout); - var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, layout, env); + 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); } var attrs = this.attrs['buffer']; var attrsInserted = false; this.layout.program.forEachNode(function (statement) { - compileStatement(env, statement, dsl, layout); 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); }; - _createClass(UnwrappedBuilder, [{ + 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; } var ComponentTagBuilder = (function () { function ComponentTagBuilder() { - _classCallCheck(this, ComponentTagBuilder); - this.isDynamic = null; this.isStatic = null; this.staticTagName = null; this.dynamicTagName = null; } @@ -18822,12 +19352,10 @@ return ComponentTagBuilder; })(); var ComponentAttrsBuilder = (function () { function ComponentAttrsBuilder() { - _classCallCheck(this, ComponentAttrsBuilder); - this.buffer = []; } ComponentAttrsBuilder.prototype.static = function _static(name, value) { this.buffer.push(new _glimmerRuntimeLibSyntaxCore.StaticAttr({ name: name, value: value })); @@ -18840,130 +19368,110 @@ return ComponentAttrsBuilder; })(); var ComponentBuilder = (function () { function ComponentBuilder(dsl) { - _classCallCheck(this, ComponentBuilder); - this.dsl = dsl; this.env = dsl.env; } - ComponentBuilder.prototype.static = function _static(_ref) { - var definition = _ref.definition; - var args = _ref.args; - var shadow = _ref.shadow; - var templates = _ref.templates; + 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(args, definition); - dsl.openComponent(shadow); + dsl.putComponentDefinition(definition); + dsl.openComponent(args, shadow); dsl.closeComponent(); }); }; - ComponentBuilder.prototype.dynamic = function dynamic(_ref2) { - var definitionArgs = _ref2.definitionArgs; - var definition = _ref2.definition; - var args = _ref2.args; - var shadow = _ref2.shadow; - var templates = _ref2.templates; + 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.enter('BEGIN', 'END'); dsl.label('BEGIN'); dsl.putArgs(definitionArgs); dsl.putValue(_glimmerRuntimeLibCompiledExpressionsFunction.default(definition)); dsl.test('simple'); dsl.jumpUnless('END'); - dsl.putDynamicComponentDefinition(args); - dsl.openComponent(shadow); + dsl.putDynamicComponentDefinition(); + dsl.openComponent(args, shadow); dsl.closeComponent(); dsl.label('END'); dsl.exit(); }); }; return ComponentBuilder; })(); var CompileIntoList = (function (_LinkedList) { - _inherits(CompileIntoList, _LinkedList); + babelHelpers.inherits(CompileIntoList, _LinkedList); - function CompileIntoList(env, block) { - _classCallCheck(this, CompileIntoList); - + function CompileIntoList(env, symbolTable) { _LinkedList.call(this); this.env = env; - this.block = block; - var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(this, block, 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.block.symbolTable.getLocal(name); + return this.symbolTable.getLocal(name); }; CompileIntoList.prototype.hasLocalSymbol = function hasLocalSymbol(name) { - return typeof this.block.symbolTable.getLocal(name) === 'number'; + return typeof this.symbolTable.getLocal(name) === 'number'; }; CompileIntoList.prototype.getNamedSymbol = function getNamedSymbol(name) { - return this.block.symbolTable.getNamed(name); + return this.symbolTable.getNamed(name); }; CompileIntoList.prototype.hasNamedSymbol = function hasNamedSymbol(name) { - return typeof this.block.symbolTable.getNamed(name) === 'number'; + return typeof this.symbolTable.getNamed(name) === 'number'; }; CompileIntoList.prototype.getBlockSymbol = function getBlockSymbol(name) { - return this.block.symbolTable.getYield(name); + return this.symbolTable.getYield(name); }; CompileIntoList.prototype.hasBlockSymbol = function hasBlockSymbol(name) { - return typeof this.block.symbolTable.getYield(name) === 'number'; + return typeof this.symbolTable.getYield(name) === 'number'; }; - CompileIntoList.prototype.hasKeyword = function hasKeyword(name) { - return this.env.hasKeyword(name); - }; - CompileIntoList.prototype.toOpSeq = function toOpSeq() { return this; }; return CompileIntoList; })(_glimmerUtil.LinkedList); exports.CompileIntoList = CompileIntoList; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztRQWdDQSxRQUFBO0FBTUUsaUJBTkYsUUFBQSxDQU1jLEtBQVksRUFBRSxHQUFnQixFQUFBO2tDQU41QyxRQUFBOztBQU9JLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BDLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGdCQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7U0FDdEM7O0FBWEgsZ0JBQUEsV0FhWSxnQkFBZ0IsR0FBQSwwQkFBQyxTQUEwQixFQUFFLEdBQXFCLEVBQUE7QUFDMUUsZ0JBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkY7O2VBZkgsUUFBQTs7O0FBa0JBLGFBQUEsZ0JBQUEsQ0FBMEIsR0FBZ0IsRUFBRSxTQUEwQixFQUFFLEdBQXFCLEVBQUUsTUFBYyxFQUFBO0FBQzNHLFdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNqRTtzQkFFYyxRQUFROztRQUV2QixrQkFBQTtrQkFBQSxrQkFBQTs7QUFJRSxpQkFKRixrQkFBQSxDQUljLFFBQW9CLEVBQUUsR0FBZ0IsRUFBQTtrQ0FKcEQsa0JBQUE7O0FBS0ksaUNBQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLElBQUksR0FB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LEtBQUssUUFBUSxDQUFDO1NBQ2xFOztBQXJDSCx1QkFBQSxXQXVDRSxVQUFVLEdBQUEsb0JBQUMsSUFBb0IsRUFBQTtBQUM3QixtQkFBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQzs7QUF6Q0gsdUJBQUEsV0EyQ0UsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O2VBN0NILGVBQUE7b0JBM1orQixVQUFVIiwiZmlsZSI6ImNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRklYTUUsIE9wYXF1ZSwgU2xpY2UsIExpbmtlZExpc3QsIEludGVybmVkU3RyaW5nIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUgfSBmcm9tICcuL29wY29kZXMnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi9zeW50YXgvY29yZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IEJsb2NrLCBDb21waWxlZEJsb2NrLCBFbnRyeVBvaW50LCBJbmxpbmVCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlciwge1xuICBTdGF0aWNDb21wb25lbnRPcHRpb25zLFxuICBEeW5hbWljQ29tcG9uZW50T3B0aW9uc1xufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCxcbiAgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCxcbiAgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsXG59IGZyb20gJy4vc3ludGF4JztcblxuaW1wb3J0IHtcbiAgRXhwcmVzc2lvblxufSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCB7XG4gIEZ1bmN0aW9uRXhwcmVzc2lvbixcbiAgZGVmYXVsdCBhcyBtYWtlRnVuY3Rpb25FeHByZXNzaW9uXG59IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMvZnVuY3Rpb24nO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuYWJzdHJhY3QgY2xhc3MgQ29tcGlsZXIge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIGJsb2NrOiBCbG9jaztcbiAgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IFN0YXRlbWVudFN5bnRheDtcblxuICBjb25zdHJ1Y3RvcihibG9jazogQmxvY2ssIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgdGhpcy5jdXJyZW50ID0gYmxvY2sucHJvZ3JhbS5oZWFkKCk7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zeW1ib2xUYWJsZSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIG9wczogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52LnN0YXRlbWVudChzdGF0ZW1lbnQsIHRoaXMuYmxvY2subWV0YSkuY29tcGlsZShvcHMsIHRoaXMuZW52LCB0aGlzLmJsb2NrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21waWxlU3RhdGVtZW50KGVudjogRW52aXJvbm1lbnQsIHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4LCBvcHM6IE9wY29kZUJ1aWxkZXJEU0wsIGxheW91dDogTGF5b3V0KSB7XG4gIGVudi5zdGF0ZW1lbnQoc3RhdGVtZW50LCBsYXlvdXQubWV0YSkuY29tcGlsZShvcHMsIGVudiwgbGF5b3V0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcGlsZXI7XG5cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50Q29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgYmxvY2s6IEVudHJ5UG9pbnQ7XG5cbiAgY29uc3RydWN0b3IodGVtcGxhdGU6IEVudHJ5UG9pbnQsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcih0ZW1wbGF0ZSwgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCB0ZW1wbGF0ZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCB0ZW1wbGF0ZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgY3VycmVudCA9IHByb2dyYW0uaGVhZCgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGxldCBuZXh0ID0gcHJvZ3JhbS5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICAgIHRoaXMuY29tcGlsZVN0YXRlbWVudChjdXJyZW50LCBvcHMpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQob3A6IE9wY29kZSkge1xuICAgIHRoaXMub3BzLmFwcGVuZChvcCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TG9jYWwobmFtZSk7XG4gIH1cblxuICBnZXROYW1lZFN5bWJvbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSk7XG4gIH1cblxuICBnZXRZaWVsZFN5bWJvbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0WWllbGQobmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrQ29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgYmxvY2s6IElubGluZUJsb2NrO1xuICBwcm90ZWN0ZWQgY3VycmVudDogU3RhdGVtZW50U3ludGF4O1xuXG4gIGNvbnN0cnVjdG9yKGJsb2NrOiBJbmxpbmVCbG9jaywgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHN1cGVyKGJsb2NrLCBlbnYpO1xuICAgIGxldCBsaXN0ID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIGJsb2NrKTtcbiAgICB0aGlzLm9wcyA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGxpc3QsIGJsb2NrLCBlbnYpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBPcFNlcSB7XG4gICAgbGV0IHsgYmxvY2ssIG9wcyB9ID0gdGhpcztcbiAgICBsZXQgeyBwcm9ncmFtIH0gPSBibG9jaztcblxuICAgIGlmIChibG9jay5oYXNQb3NpdGlvbmFsUGFyYW1ldGVycygpKSB7XG4gICAgICBvcHMuYmluZFBvc2l0aW9uYWxBcmdzKGJsb2NrKTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudCA9IHByb2dyYW0uaGVhZCgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGxldCBuZXh0ID0gcHJvZ3JhbS5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICAgIHRoaXMuY29tcGlsZVN0YXRlbWVudChjdXJyZW50LCBvcHMpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYXJ0cyB7XG4gIHRhZzogSW50ZXJuZWRTdHJpbmc7XG4gIGF0dHJzOiBTbGljZTxBdHRyaWJ1dGVTeW50YXg8T3BhcXVlPj47XG4gIGJvZHk6IFNsaWNlPFN0YXRlbWVudFN5bnRheD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZWRDb21wb25lbnRQYXJ0cyB7XG4gIHRhZzogSW50ZXJuZWRTdHJpbmc7XG4gIHByZWFtYmxlOiBDb21waWxlSW50b0xpc3Q7XG4gIG1haW46IENvbXBpbGVJbnRvTGlzdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhYmxlIHtcbiAgY29tcGlsZShidWlsZGVyOiBDb21wb25lbnRMYXlvdXRCdWlsZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2sge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBpbm5lcjogRW1wdHlCdWlsZGVyIHwgV3JhcHBlZEJ1aWxkZXIgfCBVbndyYXBwZWRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgfVxuXG4gIGVtcHR5KCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgRW1wdHlCdWlsZGVyKHRoaXMuZW52KTtcbiAgfVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIEVtcHR5QnVpbGRlciB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgfVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm9wZScpO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm9wZScpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBudWxsKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2sobGlzdCwgMCk7XG4gIH1cbn1cblxuY2xhc3MgV3JhcHBlZEJ1aWxkZXIge1xuICBwcml2YXRlIGxheW91dDogTGF5b3V0O1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwdWJsaWMgdGFnID0gbmV3IENvbXBvbmVudFRhZ0J1aWxkZXIoKTtcbiAgcHVibGljIGF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkQmxvY2sge1xuICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgIC8vICAgICAgICBPcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyBCT0RZOiAgTm9vcFxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLz09PT09PT09U1RBVElDXG4gICAgLy8gICAgICAgIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlXG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBzeW1ib2xUYWJsZSA9IGxheW91dC5zeW1ib2xUYWJsZTtcbiAgICBsZXQgYnVmZmVyID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIGxheW91dCk7XG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgbGF5b3V0LCBlbnYpO1xuXG4gICAgZHNsLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0JPRFknKTtcbiAgICAgIGRzbC5vcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnQoKTtcbiAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICB0aGlzLmF0dHJzWydidWZmZXInXS5mb3JFYWNoKHN0YXRlbWVudCA9PiBjb21waWxlU3RhdGVtZW50KGVudiwgc3RhdGVtZW50LCBkc2wsIGxheW91dCkpO1xuICAgICAgZHNsLmxhYmVsKCdCT0RZJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhZy5pc1N0YXRpYykge1xuICAgICAgbGV0IHRhZyA9IHRoaXMudGFnLnN0YXRpY1RhZ05hbWU7XG4gICAgICBkc2wub3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKTtcbiAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICB0aGlzLmF0dHJzWydidWZmZXInXS5mb3JFYWNoKHN0YXRlbWVudCA9PiBjb21waWxlU3RhdGVtZW50KGVudiwgc3RhdGVtZW50LCBkc2wsIGxheW91dCkpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKCkpIHtcbiAgICAgIGRzbC5iaW5kTmFtZWRBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgaWYgKGxheW91dC5oYXNZaWVsZHMoKSkge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG4gICAgbGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLmNsb3NlRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFnLmlzU3RhdGljKSB7XG4gICAgICBkc2wuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgZHNsLnN0b3BMYWJlbHMoKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWRCbG9jayhkc2wudG9PcFNlcSgpLCBzeW1ib2xUYWJsZS5zaXplKTtcbiAgfVxufVxuXG5jbGFzcyBVbndyYXBwZWRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dDtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHVibGljIGF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIH1cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbGF5b3V0KTtcbiAgICBsZXQgZHNsID0gbmV3IE9wY29kZUJ1aWxkZXJEU0woYnVmZmVyLCBsYXlvdXQsIGVudik7XG5cbiAgICBkc2wuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKCkpIHtcbiAgICAgIGRzbC5iaW5kTmFtZWRBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgaWYgKGxheW91dC5oYXNZaWVsZHMoKSkge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcbiAgICBsZXQgYXR0cnNJbnNlcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5sYXlvdXQucHJvZ3JhbS5mb3JFYWNoTm9kZShzdGF0ZW1lbnQgPT4ge1xuICAgICAgY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpO1xuXG4gICAgICBpZiAoIWF0dHJzSW5zZXJ0ZWQgJiYgaXNPcGVuRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICAgIGRzbC5zaGFkb3dBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGF0dHJzLmZvckVhY2goc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG4gICAgICAgIGF0dHJzSW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZHNsLnN0b3BMYWJlbHMoKTtcblxuICAgIHJldHVybiBuZXcgQ29tcGlsZWRCbG9jayhkc2wudG9PcFNlcSgpLCBsYXlvdXQuc3ltYm9sVGFibGUuc2l6ZSk7XG4gIH1cbn1cblxudHlwZSBPcGVuRWxlbWVudCA9IFN5bnRheC5PcGVuRWxlbWVudCB8IFN5bnRheC5PcGVuUHJpbWl0aXZlRWxlbWVudDtcblxuZnVuY3Rpb24gaXNPcGVuRWxlbWVudChzeW50YXg6IFN0YXRlbWVudFN5bnRheCk6IHN5bnRheCBpcyBPcGVuRWxlbWVudCB7XG4gIHJldHVybiBzeW50YXggaW5zdGFuY2VvZiBTeW50YXguT3BlbkVsZW1lbnQgfHwgc3ludGF4IGluc3RhbmNlb2YgU3ludGF4Lk9wZW5QcmltaXRpdmVFbGVtZW50O1xufVxuXG5jbGFzcyBDb21wb25lbnRUYWdCdWlsZGVyIGltcGxlbWVudHMgQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBwdWJsaWMgaXNEeW5hbWljID0gbnVsbDtcbiAgcHVibGljIGlzU3RhdGljID0gbnVsbDtcbiAgcHVibGljIHN0YXRpY1RhZ05hbWU6IEludGVybmVkU3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGR5bmFtaWNUYWdOYW1lOiBFeHByZXNzaW9uPHN0cmluZz4gPSBudWxsO1xuXG4gIHN0YXRpYyh0YWdOYW1lOiBJbnRlcm5lZFN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHRhZ05hbWUpO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogQXR0cmlidXRlU3ludGF4PHN0cmluZz5bXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKG5ldyBTeW50YXguU3RhdGljQXR0cih7IG5hbWU6IG5hbWUgYXMgRklYTUU8J2ludGVybic+LCB2YWx1ZTogdmFsdWUgYXMgRklYTUU8J2ludGVybic+IH0pKTtcbiAgfVxuXG4gIGR5bmFtaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKG5ldyBTeW50YXguRHluYW1pY0F0dHIoeyBuYW1lOiBuYW1lIGFzIEZJWE1FPCdpbnRlcm4nPiwgdmFsdWU6IG1ha2VGdW5jdGlvbkV4cHJlc3Npb24odmFsdWUpLCBpc1RydXN0aW5nOiBmYWxzZSB9KSk7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50QnVpbGRlciB7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRzbDogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52ID0gZHNsLmVudjtcbiAgfVxuXG4gIHN0YXRpYyh7IGRlZmluaXRpb24sIGFyZ3MsIHNoYWRvdywgdGVtcGxhdGVzIH06IFN0YXRpY0NvbXBvbmVudE9wdGlvbnMpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0Q29tcG9uZW50RGVmaW5pdGlvbihhcmdzLCBkZWZpbml0aW9uKTtcbiAgICAgIGRzbC5vcGVuQ29tcG9uZW50KHNoYWRvdyk7XG4gICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGR5bmFtaWMoeyBkZWZpbml0aW9uQXJncywgZGVmaW5pdGlvbiwgYXJncywgc2hhZG93LCB0ZW1wbGF0ZXMgfTogRHluYW1pY0NvbXBvbmVudE9wdGlvbnMpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wuZW50ZXIoJ0JFR0lOJywgJ0VORCcpO1xuICAgICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgICAgZHNsLnB1dEFyZ3MoZGVmaW5pdGlvbkFyZ3MpO1xuICAgICAgZHNsLnB1dFZhbHVlKG1ha2VGdW5jdGlvbkV4cHJlc3Npb24oZGVmaW5pdGlvbikpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKGFyZ3MpO1xuICAgICAgZHNsLm9wZW5Db21wb25lbnQoc2hhZG93KTtcbiAgICAgIGRzbC5jbG9zZUNvbXBvbmVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICAgIGRzbC5leGl0KCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVJbnRvTGlzdCBleHRlbmRzIExpbmtlZExpc3Q8T3Bjb2RlPiBpbXBsZW1lbnRzIE9wY29kZUJ1aWxkZXIsIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuICBwcml2YXRlIGJsb2NrOiBCbG9jaztcblxuICBwdWJsaWMgY29tcG9uZW50OiBDb21wb25lbnRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIGJsb2NrOiBCbG9jaykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5ibG9jayA9IGJsb2NrO1xuXG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKHRoaXMsIGJsb2NrLCBlbnYpO1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIoZHNsKTtcbiAgfVxuXG4gIGdldExvY2FsU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay5zeW1ib2xUYWJsZS5nZXRMb2NhbChuYW1lKTtcbiAgfVxuXG4gIGhhc0xvY2FsU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmJsb2NrLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay5zeW1ib2xUYWJsZS5nZXROYW1lZChuYW1lKTtcbiAgfVxuXG4gIGhhc05hbWVkU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmJsb2NrLnN5bWJvbFRhYmxlLmdldE5hbWVkKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldEJsb2NrU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmJsb2NrLnN5bWJvbFRhYmxlLmdldFlpZWxkKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGhhc0tleXdvcmQobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbnYuaGFzS2V5d29yZChuYW1lKTtcbiAgfVxuXG4gIHRvT3BTZXEoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFrQ0EsUUFBQTtBQU1FLGlCQU5GLFFBQUEsQ0FNYyxLQUFZLEVBQUUsR0FBZ0IsRUFBQTtBQUN4QyxnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwQyxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1NBQ3RDOztBQVhILGdCQUFBLFdBYVksZ0JBQWdCLEdBQUEsMEJBQUMsU0FBMEIsRUFBRSxHQUFxQixFQUFBO0FBQzFFLGdCQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDMUY7O2VBZkgsUUFBQTs7O0FBa0JBLGFBQUEsZ0JBQUEsQ0FBMEIsR0FBZ0IsRUFBRSxTQUEwQixFQUFFLEdBQXFCLEVBQUUsTUFBYyxFQUFBO0FBQzNHLFdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDcEY7c0JBRWMsUUFBUTs7UUFFakIsa0JBQTBCOzhCQUExQixrQkFBMEI7O0FBSTlCLGlCQUpJLGtCQUEwQixDQUlsQixRQUFvQixFQUFFLEdBQWdCLEVBQUE7QUFDaEQsaUNBQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUs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OztlQXBDRyxlQUF1QjtvQkF4YUwsVUFBVSIsImZpbGUiOiJjb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU2xpY2UsIExpbmtlZExpc3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgT3BTZXEsIE9wY29kZSB9IGZyb20gJy4vb3Bjb2Rlcyc7XG5cbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi9zeW50YXgvY29yZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IEJsb2NrLCBDb21waWxlZEJsb2NrLCBFbnRyeVBvaW50LCBJbmxpbmVCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnRCdWlsZGVyIGFzIElDb21wb25lbnRCdWlsZGVyLFxuICBEeW5hbWljRGVmaW5pdGlvbixcbiAgU3RhdGljRGVmaW5pdGlvblxufSBmcm9tICcuL29wY29kZS1idWlsZGVyJztcblxuaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCxcbiAgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCxcbiAgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsXG59IGZyb20gJy4vc3ludGF4JztcblxuaW1wb3J0IHtcbiAgRXhwcmVzc2lvblxufSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCB7XG4gIEZ1bmN0aW9uRXhwcmVzc2lvbixcbiAgZGVmYXVsdCBhcyBtYWtlRnVuY3Rpb25FeHByZXNzaW9uXG59IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMvZnVuY3Rpb24nO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIENvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuYWJzdHJhY3QgY2xhc3MgQ29tcGlsZXIge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIGJsb2NrOiBCbG9jaztcbiAgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IFN0YXRlbWVudFN5bnRheDtcblxuICBjb25zdHJ1Y3RvcihibG9jazogQmxvY2ssIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgdGhpcy5jdXJyZW50ID0gYmxvY2sucHJvZ3JhbS5oZWFkKCk7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zeW1ib2xUYWJsZSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXBpbGVTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIG9wczogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIHRoaXMuZW52LnN0YXRlbWVudChzdGF0ZW1lbnQsIHRoaXMuc3ltYm9sVGFibGUpLmNvbXBpbGUob3BzLCB0aGlzLmVudiwgdGhpcy5zeW1ib2xUYWJsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZVN0YXRlbWVudChlbnY6IEVudmlyb25tZW50LCBzdGF0ZW1lbnQ6IFN0YXRlbWVudFN5bnRheCwgb3BzOiBPcGNvZGVCdWlsZGVyRFNMLCBsYXlvdXQ6IExheW91dCkge1xuICBlbnYuc3RhdGVtZW50KHN0YXRlbWVudCwgbGF5b3V0LnN5bWJvbFRhYmxlKS5jb21waWxlKG9wcywgZW52LCBsYXlvdXQuc3ltYm9sVGFibGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21waWxlcjtcblxuZXhwb3J0IGNsYXNzIEVudHJ5UG9pbnRDb21waWxlciBleHRlbmRzIENvbXBpbGVyIHtcbiAgcHJpdmF0ZSBvcHM6IE9wY29kZUJ1aWxkZXJEU0w7XG4gIHByb3RlY3RlZCBibG9jazogRW50cnlQb2ludDtcblxuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZTogRW50cnlQb2ludCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHN1cGVyKHRlbXBsYXRlLCBlbnYpO1xuICAgIGxldCBsaXN0ID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIHRlbXBsYXRlLnN5bWJvbFRhYmxlKTtcbiAgICB0aGlzLm9wcyA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGxpc3QsIHRlbXBsYXRlLnN5bWJvbFRhYmxlLCBlbnYpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBPcFNlcSB7XG4gICAgbGV0IHsgYmxvY2ssIG9wcyB9ID0gdGhpcztcbiAgICBsZXQgeyBwcm9ncmFtIH0gPSBibG9jaztcblxuICAgIGxldCBjdXJyZW50ID0gcHJvZ3JhbS5oZWFkKCk7XG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgbGV0IG5leHQgPSBwcm9ncmFtLm5leHROb2RlKGN1cnJlbnQpO1xuICAgICAgdGhpcy5jb21waWxlU3RhdGVtZW50KGN1cnJlbnQsIG9wcyk7XG4gICAgICBjdXJyZW50ID0gbmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3BzLnRvT3BTZXEoKTtcbiAgfVxuXG4gIGFwcGVuZChvcDogT3Bjb2RlKSB7XG4gICAgdGhpcy5vcHMuYXBwZW5kKG9wKTtcbiAgfVxuXG4gIGdldExvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TG9jYWwobmFtZSk7XG4gIH1cblxuICBnZXROYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldE5hbWVkKG5hbWUpO1xuICB9XG5cbiAgZ2V0WWllbGRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2tDb21waWxlciBleHRlbmRzIENvbXBpbGVyIHtcbiAgcHJpdmF0ZSBvcHM6IE9wY29kZUJ1aWxkZXJEU0w7XG4gIHByb3RlY3RlZCBibG9jazogSW5saW5lQmxvY2s7XG4gIHByb3RlY3RlZCBjdXJyZW50OiBTdGF0ZW1lbnRTeW50YXg7XG5cbiAgY29uc3RydWN0b3IoYmxvY2s6IElubGluZUJsb2NrLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgc3VwZXIoYmxvY2ssIGVudik7XG4gICAgbGV0IGxpc3QgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgYmxvY2suc3ltYm9sVGFibGUpO1xuICAgIHRoaXMub3BzID0gbmV3IE9wY29kZUJ1aWxkZXJEU0wobGlzdCwgYmxvY2suc3ltYm9sVGFibGUsIGVudik7XG4gIH1cblxuICBjb21waWxlKCk6IE9wU2VxIHtcbiAgICBsZXQgeyBibG9jaywgb3BzIH0gPSB0aGlzO1xuICAgIGxldCB7IHByb2dyYW0gfSA9IGJsb2NrO1xuXG4gICAgaWYgKGJsb2NrLmhhc1Bvc2l0aW9uYWxQYXJhbWV0ZXJzKCkpIHtcbiAgICAgIG9wcy5iaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jayk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQgPSBwcm9ncmFtLmhlYWQoKTtcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBsZXQgbmV4dCA9IHByb2dyYW0ubmV4dE5vZGUoY3VycmVudCk7XG4gICAgICB0aGlzLmNvbXBpbGVTdGF0ZW1lbnQoY3VycmVudCwgb3BzKTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBvcHMudG9PcFNlcSgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFydHMge1xuICB0YWc6IHN0cmluZztcbiAgYXR0cnM6IFNsaWNlPEF0dHJpYnV0ZVN5bnRheDxPcGFxdWU+PjtcbiAgYm9keTogU2xpY2U8U3RhdGVtZW50U3ludGF4Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZENvbXBvbmVudFBhcnRzIHtcbiAgdGFnOiBzdHJpbmc7XG4gIHByZWFtYmxlOiBDb21waWxlSW50b0xpc3Q7XG4gIG1haW46IENvbXBpbGVJbnRvTGlzdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhYmxlIHtcbiAgY29tcGlsZShidWlsZGVyOiBDb21wb25lbnRMYXlvdXRCdWlsZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2sge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBpbm5lcjogRW1wdHlCdWlsZGVyIHwgV3JhcHBlZEJ1aWxkZXIgfCBVbndyYXBwZWRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgfVxuXG4gIGVtcHR5KCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgRW1wdHlCdWlsZGVyKHRoaXMuZW52KTtcbiAgfVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIEVtcHR5QnVpbGRlciB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgfVxuXG4gIGdldCB0YWcoKTogQ29tcG9uZW50LkNvbXBvbmVudFRhZ0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm9wZScpO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTm9wZScpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYgfSA9IHRoaXM7XG5cbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBudWxsKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2sobGlzdCwgMCk7XG4gIH1cbn1cblxuY2xhc3MgV3JhcHBlZEJ1aWxkZXIge1xuICBwcml2YXRlIGxheW91dDogTGF5b3V0O1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwdWJsaWMgdGFnID0gbmV3IENvbXBvbmVudFRhZ0J1aWxkZXIoKTtcbiAgcHVibGljIGF0dHJzID0gbmV3IENvbXBvbmVudEF0dHJzQnVpbGRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkQmxvY2sge1xuICAgIC8vPT09PT09PT1EWU5BTUlDXG4gICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhCT0RZKVxuICAgIC8vICAgICAgICBPcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgRGlkQ3JlYXRlRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5hdHRyIHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgRmx1c2hFbGVtZW50XG4gICAgLy8gQk9EWTogIE5vb3BcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIFB1dFZhbHVlKFRhZ0V4cHIpXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgIC8vICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLz09PT09PT09U1RBVElDXG4gICAgLy8gICAgICAgIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlXG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vICAgICAgICAuLi5ib2R5IHN0YXRlbWVudHMuLi5cbiAgICAvLyAgICAgICAgQ2xvc2VFbGVtZW50XG4gICAgLy8gICAgICAgIERpZFJlbmRlckxheW91dFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBzeW1ib2xUYWJsZSA9IGxheW91dC5zeW1ib2xUYWJsZTtcbiAgICBsZXQgYnVmZmVyID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIGxheW91dC5zeW1ib2xUYWJsZSk7XG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgbGF5b3V0LnN5bWJvbFRhYmxlLCBlbnYpO1xuXG4gICAgZHNsLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0JPRFknKTtcbiAgICAgIGRzbC5vcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnQoKTtcbiAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICB0aGlzLmF0dHJzWydidWZmZXInXS5mb3JFYWNoKHN0YXRlbWVudCA9PiBjb21waWxlU3RhdGVtZW50KGVudiwgc3RhdGVtZW50LCBkc2wsIGxheW91dCkpO1xuICAgICAgZHNsLmZsdXNoRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdCT0RZJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhZy5pc1N0YXRpYykge1xuICAgICAgbGV0IHRhZyA9IHRoaXMudGFnLnN0YXRpY1RhZ05hbWU7XG4gICAgICBkc2wub3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKTtcbiAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICB0aGlzLmF0dHJzWydidWZmZXInXS5mb3JFYWNoKHN0YXRlbWVudCA9PiBjb21waWxlU3RhdGVtZW50KGVudiwgc3RhdGVtZW50LCBkc2wsIGxheW91dCkpO1xuICAgICAgZHNsLmZsdXNoRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKCkpIHtcbiAgICAgIGRzbC5iaW5kTmFtZWRBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgaWYgKGxheW91dC5oYXNZaWVsZHMoKSkge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG4gICAgbGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLmNsb3NlRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFnLmlzU3RhdGljKSB7XG4gICAgICBkc2wuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgc3ltYm9sVGFibGUuc2l6ZSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciB7XG4gIHByaXZhdGUgbGF5b3V0OiBMYXlvdXQ7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuXG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCBsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCVUc6IENhbm5vdCBjYWxsIGB0YWdgIG9uIGFuIFVud3JhcHBlZEJ1aWxkZXInKTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG5cbiAgICBsZXQgYnVmZmVyID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIGxheW91dC5zeW1ib2xUYWJsZSk7XG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgbGF5b3V0LnN5bWJvbFRhYmxlLCBlbnYpO1xuXG4gICAgZHNsLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBpZiAobGF5b3V0Lmhhc05hbWVkUGFyYW1ldGVycygpKSB7XG4gICAgICBkc2wuYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzWWllbGRzKCkpIHtcbiAgICAgIGRzbC5iaW5kQmxvY2tzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgbGV0IGF0dHJzID0gdGhpcy5hdHRyc1snYnVmZmVyJ107XG4gICAgbGV0IGF0dHJzSW5zZXJ0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMubGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IHtcbiAgICAgIGlmICghYXR0cnNJbnNlcnRlZCAmJiBpc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgZHNsLm9wZW5Db21wb25lbnRFbGVtZW50KHN0YXRlbWVudC50YWcpO1xuICAgICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgICBkc2wuc2hhZG93QXR0cmlidXRlcygpO1xuICAgICAgICBhdHRycy5mb3JFYWNoKHN0YXRlbWVudCA9PiBjb21waWxlU3RhdGVtZW50KGVudiwgc3RhdGVtZW50LCBkc2wsIGxheW91dCkpO1xuICAgICAgICBhdHRyc0luc2VydGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRzbC5kaWRSZW5kZXJMYXlvdXQoKTtcbiAgICBkc2wuc3RvcExhYmVscygpO1xuXG4gICAgcmV0dXJuIG5ldyBDb21waWxlZEJsb2NrKGRzbC50b09wU2VxKCksIGxheW91dC5zeW1ib2xUYWJsZS5zaXplKTtcbiAgfVxufVxuXG50eXBlIE9wZW5FbGVtZW50ID0gU3ludGF4Lk9wZW5FbGVtZW50IHwgU3ludGF4Lk9wZW5QcmltaXRpdmVFbGVtZW50O1xuXG5mdW5jdGlvbiBpc09wZW5FbGVtZW50KHN5bnRheDogU3RhdGVtZW50U3ludGF4KTogc3ludGF4IGlzIE9wZW5FbGVtZW50IHtcbiAgcmV0dXJuIHN5bnRheCBpbnN0YW5jZW9mIFN5bnRheC5PcGVuRWxlbWVudCB8fCBzeW50YXggaW5zdGFuY2VvZiBTeW50YXguT3BlblByaW1pdGl2ZUVsZW1lbnQ7XG59XG5cbmNsYXNzIENvbXBvbmVudFRhZ0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gIHB1YmxpYyBpc0R5bmFtaWMgPSBudWxsO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBudWxsO1xuICBwdWJsaWMgc3RhdGljVGFnTmFtZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGR5bmFtaWNUYWdOYW1lOiBFeHByZXNzaW9uPHN0cmluZz4gPSBudWxsO1xuXG4gIHN0YXRpYyh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzU3RhdGljID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRpY1RhZ05hbWUgPSB0YWdOYW1lO1xuICB9XG5cbiAgZHluYW1pYyh0YWdOYW1lOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuaXNEeW5hbWljID0gdHJ1ZTtcbiAgICB0aGlzLmR5bmFtaWNUYWdOYW1lID0gbWFrZUZ1bmN0aW9uRXhwcmVzc2lvbih0YWdOYW1lKTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRBdHRyc0J1aWxkZXIgaW1wbGVtZW50cyBDb21wb25lbnQuQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgcHJpdmF0ZSBidWZmZXI6IEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+W10gPSBbXTtcblxuICBzdGF0aWMobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5idWZmZXIucHVzaChuZXcgU3ludGF4LlN0YXRpY0F0dHIoeyBuYW1lLCB2YWx1ZSB9KSk7XG4gIH1cblxuICBkeW5hbWljKG5hbWU6IHN0cmluZywgdmFsdWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5idWZmZXIucHVzaChuZXcgU3ludGF4LkR5bmFtaWNBdHRyKHsgbmFtZSwgdmFsdWU6IG1ha2VGdW5jdGlvbkV4cHJlc3Npb24odmFsdWUpLCBpc1RydXN0aW5nOiBmYWxzZSB9KSk7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50QnVpbGRlciBpbXBsZW1lbnRzIElDb21wb25lbnRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZHNsOiBPcGNvZGVCdWlsZGVyRFNMKSB7XG4gICAgdGhpcy5lbnYgPSBkc2wuZW52O1xuICB9XG5cbiAgc3RhdGljKGRlZmluaXRpb246IFN0YXRpY0RlZmluaXRpb24sIGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgc2hhZG93OiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgdGhpcy5kc2wudW5pdCh7IHRlbXBsYXRlcyB9LCBkc2wgPT4ge1xuICAgICAgZHNsLnB1dENvbXBvbmVudERlZmluaXRpb24oZGVmaW5pdGlvbik7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChhcmdzLCBzaGFkb3cpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICBkeW5hbWljKGRlZmluaXRpb25BcmdzOiBTeW50YXguQXJncywgZGVmaW5pdGlvbjogRHluYW1pY0RlZmluaXRpb24sIGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgc2hhZG93OiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgdGhpcy5kc2wudW5pdCh7IHRlbXBsYXRlcyB9LCBkc2wgPT4ge1xuICAgICAgZHNsLmVudGVyKCdCRUdJTicsICdFTkQnKTtcbiAgICAgIGRzbC5sYWJlbCgnQkVHSU4nKTtcbiAgICAgIGRzbC5wdXRBcmdzKGRlZmluaXRpb25BcmdzKTtcbiAgICAgIGRzbC5wdXRWYWx1ZShtYWtlRnVuY3Rpb25FeHByZXNzaW9uKGRlZmluaXRpb24pKTtcbiAgICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICAgIGRzbC5wdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbigpO1xuICAgICAgZHNsLm9wZW5Db21wb25lbnQoYXJncywgc2hhZG93KTtcbiAgICAgIGRzbC5jbG9zZUNvbXBvbmVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICAgIGRzbC5leGl0KCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVJbnRvTGlzdCBleHRlbmRzIExpbmtlZExpc3Q8T3Bjb2RlPiBpbXBsZW1lbnRzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIHtcbiAgcHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTCh0aGlzLCBzeW1ib2xUYWJsZSwgZW52KTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKGRzbCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgaGFzTG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/component/interfaces', ['exports'], function (exports) { 'use strict'; exports.isComponentDefinition = isComponentDefinition; - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var COMPONENT_DEFINITION_BRAND = 'COMPONENT DEFINITION [id=e59c754e-61eb-4392-8c4a-2c0ac72bfcd4]'; function isComponentDefinition(obj) { return typeof obj === 'object' && obj && obj[COMPONENT_DEFINITION_BRAND]; } var ComponentDefinition = function ComponentDefinition(name, manager, ComponentClass) { - _classCallCheck(this, ComponentDefinition); - 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcG9uZW50L2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW1GQSxRQUFNLDBCQUEwQixHQUFHLGdFQUFnRSxDQUFDOztBQUVwRyxhQUFBLHFCQUFBLENBQXNDLEdBQVEsRUFBQTtBQUM1QyxlQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDMUU7O1FBRUQsbUJBQUEsR0FPRSxTQVBGLG1CQUFBLENBT2MsSUFBWSxFQUFFLE9BQTRCLEVBQUUsY0FBOEIsRUFBQTs4QkFQeEYsbUJBQUE7O0FBS1UsWUFBQSxDQUFDLGdFQUFnRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBR2hGLFlBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLFlBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0tBQ3RDIiwiZmlsZSI6ImludGVyZmFjZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBGdW5jdGlvbkV4cHJlc3Npb24gfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9mdW5jdGlvbic7XG5pbXBvcnQgeyBMYXlvdXQsIENvbXBpbGVkQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQgRW52aXJvbm1lbnQsIHsgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuLi9idWlsZGVyJztcblxuaW1wb3J0IHsgRGVzdHJveWFibGUsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50ID0gT3BhcXVlO1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Q2xhc3MgPSBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWFuYWdlcjxUIGV4dGVuZHMgQ29tcG9uZW50PiB7XG4gIC8vIEZpcnN0LCB0aGUgY29tcG9uZW50IG1hbmFnZXIgaXMgYXNrZWQgdG8gcHJlcGFyZSB0aGUgYXJndW1lbnRzIG5lZWRlZFxuICAvLyBmb3IgYGNyZWF0ZWAuIFRoaXMgYWxsb3dzIGZvciB0aGluZ3MgbGlrZSBjbG9zdXJlIGNvbXBvbmVudHMgd2hlcmUgdGhlXG4gIC8vIGFyZ3MgbmVlZCB0byBiZSBjdXJyaWVkIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIGluc3RhbmNlIG9mIHRoZSBzdGF0ZVxuICAvLyBidWNrZXQuXG4gIHByZXBhcmVBcmdzKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD4sIGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzO1xuXG4gIC8vIFRoZW4sIHRoZSBjb21wb25lbnQgbWFuYWdlciBpcyBhc2tlZCB0byBjcmVhdGUgYSBidWNrZXQgb2Ygc3RhdGUgZm9yXG4gIC8vIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIEdsaW1tZXIsIHRoaXMgaXNcbiAgLy8gYW4gb3BhcXVlIHRva2VuLCBidXQgaW4gcHJhY3RpY2UgaXQgaXMgcHJvYmFibHkgYSBjb21wb25lbnQgb2JqZWN0LlxuICBjcmVhdGUoZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxUPiwgYXJnczogRXZhbHVhdGVkQXJncywgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsIGhhc0RlZmF1bHRCbG9jazogYm9vbGVhbik6IFQ7XG5cbiAgLy8gUmV0dXJuIHRoZSBjb21waWxlZCBsYXlvdXQgdG8gdXNlIGZvciB0aGlzIGNvbXBvbmVudC4gVGhpcyBpcyBjYWxsZWRcbiAgLy8gKmFmdGVyKiB0aGUgY29tcG9uZW50IGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQsIGJlY2F1c2UgeW91IG1pZ2h0XG4gIC8vIHdhbnQgdG8gcmV0dXJuIGEgZGlmZmVyZW50IGxheW91dCBwZXItaW5zdGFuY2UgZm9yIG9wdGltaXphdGlvbiByZWFzb25zXG4gIC8vIG9yIHRvIGltcGxlbWVudCBmZWF0dXJlcyBsaWtlIEVtYmVyJ3MgXCJsYXRlLWJvdW5kXCIgbGF5b3V0cy5cbiAgbGF5b3V0Rm9yKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD4sIGNvbXBvbmVudDogVCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2s7XG5cbiAgLy8gTmV4dCwgR2xpbW1lciBhc2tzIHRoZSBtYW5hZ2VyIHRvIGNyZWF0ZSBhIHJlZmVyZW5jZSBmb3IgdGhlIGBzZWxmYFxuICAvLyBpdCBzaG91bGQgdXNlIGluIHRoZSBsYXlvdXQuXG4gIGdldFNlbGYoY29tcG9uZW50OiBUKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuXG4gIC8vIFRoZSBgZGlkQ3JlYXRlRWxlbWVudGAgaG9vayBpcyBtZWFudCB0byBiZSB1c2VkIGJ5IHRoZSBob3N0IHRvIHNhdmVcbiAgLy8gb2ZmIHRoZSBlbGVtZW50LiBIb3N0cyBzaG91bGQgdXNlIGBkaWRDcmVhdGVgLCB3aGljaCBydW5zIGFzeW5jaHJvbm91c2x5XG4gIC8vIGFmdGVyIHRoZSByZW5kZXJpbmcgcHJvY2VzcywgdG8gcHJvdmlkZSBob29rcyBmb3IgdXNlciBjb2RlLlxuICBkaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudDogVCwgZWxlbWVudDogRWxlbWVudCwgb3BlcmF0aW9uczogRWxlbWVudE9wZXJhdGlvbnMpO1xuXG4gIC8vIE9uY2UgdGhlIHdob2xlIHRvcC1kb3duIHJlbmRlcmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlLCBHbGltbWVyIGludm9rZXNcbiAgLy8gdGhlIGBkaWRDcmVhdGVgIGNhbGxiYWNrcy5cbiAgZGlkQ3JlYXRlKGNvbXBvbmVudDogVCk7XG5cbiAgLy8gQ29udmVydCB0aGUgb3BhcXVlIGNvbXBvbmVudCBpbnRvIGEgYFJldmlzaW9uVGFnYCB0aGF0IGRldGVybWlucyB3aGVuXG4gIC8vIHRoZSBjb21wb25lbnQncyB1cGRhdGUgaG9va3MgbmVlZCB0byBiZSBjYWxsZWQsIGluIGFkZGl0aW9uIHRvIGFueVxuICAvLyBvdXRzaWRlIGNoYW5nZXMgY2FwdHVyZWQgaW4gdGhlIGlucHV0IGFyZ3VtZW50cy4gSWYgaXQgcmV0dXJucyBudWxsLFxuICAvLyB0aGUgdXBkYXRlIGhvb2tzIHdpbGwgb25seSBiZSBjYWxsZWQgd2hlbiBvbmUgb3IgbW9yZSBvZiB0aGUgaW5wdXRcbiAgLy8gYXJndW1lbnRzIGhhcyBjaGFuZ2VkLlxuICBnZXRUYWcoY29tcG9uZW50OiBUKTogUmV2aXNpb25UYWc7XG5cbiAgLy8gV2hlbiB0aGUgaW5wdXQgYXJndW1lbnRzIGhhdmUgY2hhbmdlZCwgYW5kIHRvcC1kb3duIHJldmFsaWRhdGlvbiBoYXNcbiAgLy8gYmVndW4sIHRoZSBtYW5hZ2VyJ3MgYHVwZGF0ZWAgaG9vayBpcyBjYWxsZWQuXG4gIHVwZGF0ZShjb21wb25lbnQ6IFQsIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlKTtcblxuICAvLyBGaW5hbGx5LCBvbmNlIHRvcC1kb3duIHJldmFsaWRhdGlvbiBoYXMgY29tcGxldGVkLCBHbGltbWVyIGludm9rZXNcbiAgLy8gdGhlIGBkaWRVcGRhdGVgIGNhbGxiYWNrcyBvbiBjb21wb25lbnRzIHRoYXQgY2hhbmdlZC5cbiAgZGlkVXBkYXRlKGNvbXBvbmVudDogVCk7XG5cbiAgLy8gQ29udmVydCB0aGUgb3BhcXVlIGNvbXBvbmVudCBpbnRvIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgRGVzdHJveWFibGUuXG4gIC8vIElmIGl0IHJldHVybnMgbnVsbCwgdGhlIGNvbXBvbmVudCB3aWxsIG5vdCBiZSBkZXN0cm95ZWQuXG4gIGdldERlc3RydWN0b3IoY29tcG9uZW50OiBUKTogRGVzdHJveWFibGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGF5b3V0QnVpbGRlciB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHRhZzogQ29tcG9uZW50VGFnQnVpbGRlcjtcbiAgYXR0cnM6IENvbXBvbmVudEF0dHJzQnVpbGRlcjtcblxuICB3cmFwTGF5b3V0KGxheW91dDogTGF5b3V0KTtcbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gIHN0YXRpYyh0YWdOYW1lOiBzdHJpbmcpO1xuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBzdGF0aWMobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTtcbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPik7XG59XG5cbmNvbnN0IENPTVBPTkVOVF9ERUZJTklUSU9OX0JSQU5EID0gJ0NPTVBPTkVOVCBERUZJTklUSU9OIFtpZD1lNTljNzU0ZS02MWViLTQzOTItOGM0YS0yYzBhYzcyYmZjZDRdJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9uZW50RGVmaW5pdGlvbihvYmo6IGFueSk6IG9iaiBpcyBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT4ge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICYmIG9ialtDT01QT05FTlRfREVGSU5JVElPTl9CUkFORF07XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnREZWZpbml0aW9uPFQ+IHtcbiAgcHVibGljIG5hbWU6IHN0cmluZzsgLy8gZm9yIGRlYnVnZ2luZ1xuICBwdWJsaWMgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPjtcbiAgcHVibGljIENvbXBvbmVudENsYXNzOiBDb21wb25lbnRDbGFzcztcblxuICBwcml2YXRlIFsnQ09NUE9ORU5UIERFRklOSVRJT04gW2lkPWU1OWM3NTRlLTYxZWItNDM5Mi04YzRhLTJjMGFjNzJiZmNkNF0nXSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPFQ+LCBDb21wb25lbnRDbGFzczogQ29tcG9uZW50Q2xhc3MpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgdGhpcy5Db21wb25lbnRDbGFzcyA9IENvbXBvbmVudENsYXNzO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcG9uZW50L2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXFHQSxRQUFNLDBCQUEwQixHQUFHLGdFQUFnRSxDQUFDOztBQUU5RixhQUFBLHFCQUFBLENBQWdDLEdBQVEsRUFBQTtBQUM1QyxlQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDMUU7O1FBRUssbUJBQUEsR0FPSixTQVBJLG1CQUFBLENBT1EsSUFBWSxFQUFFLE9BQTRCLEVBQUUsY0FBOEIsRUFBQTtBQUY5RSxZQUFBLENBQUMsZ0VBQWdFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFHaEYsWUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsWUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdkIsWUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7S0FDdEMiLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2Z1bmN0aW9uJztcbmltcG9ydCB7IExheW91dCwgQ29tcGlsZWRCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmltcG9ydCBFbnZpcm9ubWVudCwgeyBEeW5hbWljU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IEJvdW5kcyBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgRGVzdHJveWFibGUsIE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBQYXRoUmVmZXJlbmNlLCBSZXZpc2lvblRhZyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50ID0gT3BhcXVlO1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Q2xhc3MgPSBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWFuYWdlcjxUIGV4dGVuZHMgQ29tcG9uZW50PiB7XG4gIC8vIEZpcnN0LCB0aGUgY29tcG9uZW50IG1hbmFnZXIgaXMgYXNrZWQgdG8gcHJlcGFyZSB0aGUgYXJndW1lbnRzIG5lZWRlZFxuICAvLyBmb3IgYGNyZWF0ZWAuIFRoaXMgYWxsb3dzIGZvciB0aGluZ3MgbGlrZSBjbG9zdXJlIGNvbXBvbmVudHMgd2hlcmUgdGhlXG4gIC8vIGFyZ3MgbmVlZCB0byBiZSBjdXJyaWVkIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIGluc3RhbmNlIG9mIHRoZSBzdGF0ZVxuICAvLyBidWNrZXQuXG4gIHByZXBhcmVBcmdzKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248VD4sIGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzO1xuXG4gIC8vIFRoZW4sIHRoZSBjb21wb25lbnQgbWFuYWdlciBpcyBhc2tlZCB0byBjcmVhdGUgYSBidWNrZXQgb2Ygc3RhdGUgZm9yXG4gIC8vIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIEdsaW1tZXIsIHRoaXMgaXNcbiAgLy8gYW4gb3BhcXVlIHRva2VuLCBidXQgaW4gcHJhY3RpY2UgaXQgaXMgcHJvYmFibHkgYSBjb21wb25lbnQgb2JqZWN0LlxuICBjcmVhdGUoZW52OiBFbnZpcm9ubWVudCwgZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxUPiwgYXJnczogRXZhbHVhdGVkQXJncywgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGUsIGNhbGxlcjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBoYXNEZWZhdWx0QmxvY2s6IGJvb2xlYW4pOiBUO1xuXG4gIC8vIFJldHVybiB0aGUgY29tcGlsZWQgbGF5b3V0IHRvIHVzZSBmb3IgdGhpcyBjb21wb25lbnQuIFRoaXMgaXMgY2FsbGVkXG4gIC8vICphZnRlciogdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkLCBiZWNhdXNlIHlvdSBtaWdodFxuICAvLyB3YW50IHRvIHJldHVybiBhIGRpZmZlcmVudCBsYXlvdXQgcGVyLWluc3RhbmNlIGZvciBvcHRpbWl6YXRpb24gcmVhc29uc1xuICAvLyBvciB0byBpbXBsZW1lbnQgZmVhdHVyZXMgbGlrZSBFbWJlcidzIFwibGF0ZS1ib3VuZFwiIGxheW91dHMuXG4gIGxheW91dEZvcihkZWZpbml0aW9uOiBDb21wb25lbnREZWZpbml0aW9uPFQ+LCBjb21wb25lbnQ6IFQsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEJsb2NrO1xuXG4gIC8vIE5leHQsIEdsaW1tZXIgYXNrcyB0aGUgbWFuYWdlciB0byBjcmVhdGUgYSByZWZlcmVuY2UgZm9yIHRoZSBgc2VsZmBcbiAgLy8gaXQgc2hvdWxkIHVzZSBpbiB0aGUgbGF5b3V0LlxuICBnZXRTZWxmKGNvbXBvbmVudDogVCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcblxuICAvLyBUaGUgYGRpZENyZWF0ZUVsZW1lbnRgIGhvb2sgaXMgcnVuIGZvciBub24tdGFnbGVzcyBjb21wb25lbnRzIGFmdGVyIHRoZVxuICAvLyBlbGVtZW50IGFzIGJlZW4gY3JlYXRlZCwgYnV0IGJlZm9yZSBpdCBoYXMgYmVlbiBhcHBlbmRlZCAoXCJmbHVzaGVkXCIpIHRvXG4gIC8vIHRoZSBET00uIFRoaXMgaG9vayBhbGxvd3MgdGhlIG1hbmFnZXIgdG8gc2F2ZSBvZmYgdGhlIGVsZW1lbnQsIGFzIHdlbGwgYXNcbiAgLy8gaW5zdGFsbCBvdGhlciBkeW5hbWljIGF0dHJpYnV0ZXMgdmlhIHRoZSBFbGVtZW50T3BlcmF0aW9ucyBvYmplY3QuXG4gIC8vXG4gIC8vIEhvc3RzIHNob3VsZCB1c2UgYGRpZENyZWF0ZWAsIHdoaWNoIHJ1bnMgYXN5bmNocm9ub3VzbHkgYWZ0ZXIgdGhlIHJlbmRlcmluZ1xuICAvLyBwcm9jZXNzLCB0byBwcm92aWRlIGhvb2tzIGZvciB1c2VyIGNvZGUuXG4gIGRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50OiBULCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgb3BlcmF0aW9uczogRWxlbWVudE9wZXJhdGlvbnMpO1xuXG4gIC8vIFRoaXMgaG9vayBpcyBydW4gYWZ0ZXIgdGhlIGVudGlyZSBsYXlvdXQgaGFzIGJlZW4gcmVuZGVyZWQuXG4gIC8vXG4gIC8vIEhvc3RzIHNob3VsZCB1c2UgYGRpZENyZWF0ZWAsIHdoaWNoIHJ1bnMgYXN5bmNocm9ub3VzbHkgYWZ0ZXIgdGhlIHJlbmRlcmluZ1xuICAvLyBwcm9jZXNzLCB0byBwcm92aWRlIGhvb2tzIGZvciB1c2VyIGNvZGUuXG4gIGRpZFJlbmRlckxheW91dChjb21wb25lbnQ6IFQsIGJvdW5kczogQm91bmRzKTtcblxuICAvLyBPbmNlIHRoZSB3aG9sZSB0b3AtZG93biByZW5kZXJpbmcgcHJvY2VzcyBpcyBjb21wbGV0ZSwgR2xpbW1lciBpbnZva2VzXG4gIC8vIHRoZSBgZGlkQ3JlYXRlYCBjYWxsYmFja3MuXG4gIGRpZENyZWF0ZShjb21wb25lbnQ6IFQpO1xuXG4gIC8vIENvbnZlcnQgdGhlIG9wYXF1ZSBjb21wb25lbnQgaW50byBhIGBSZXZpc2lvblRhZ2AgdGhhdCBkZXRlcm1pbnMgd2hlblxuICAvLyB0aGUgY29tcG9uZW50J3MgdXBkYXRlIGhvb2tzIG5lZWQgdG8gYmUgY2FsbGVkLCBpbiBhZGRpdGlvbiB0byBhbnlcbiAgLy8gb3V0c2lkZSBjaGFuZ2VzIGNhcHR1cmVkIGluIHRoZSBpbnB1dCBhcmd1bWVudHMuIElmIGl0IHJldHVybnMgbnVsbCxcbiAgLy8gdGhlIHVwZGF0ZSBob29rcyB3aWxsIG9ubHkgYmUgY2FsbGVkIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlIGlucHV0XG4gIC8vIGFyZ3VtZW50cyBoYXMgY2hhbmdlZC5cbiAgZ2V0VGFnKGNvbXBvbmVudDogVCk6IFJldmlzaW9uVGFnO1xuXG4gIC8vIFdoZW4gdGhlIGlucHV0IGFyZ3VtZW50cyBoYXZlIGNoYW5nZWQsIGFuZCB0b3AtZG93biByZXZhbGlkYXRpb24gaGFzXG4gIC8vIGJlZ3VuLCB0aGUgbWFuYWdlcidzIGB1cGRhdGVgIGhvb2sgaXMgY2FsbGVkLlxuICB1cGRhdGUoY29tcG9uZW50OiBULCBhcmdzOiBFdmFsdWF0ZWRBcmdzLCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSk7XG5cbiAgLy8gVGhpcyBob29rIGlzIHJ1biBhZnRlciB0aGUgZW50aXJlIGxheW91dCBoYXMgYmVlbiB1cGRhdGVkLlxuICAvL1xuICAvLyBIb3N0cyBzaG91bGQgdXNlIGBkaWRVcGRhdGVgLCB3aGljaCBydW5zIGFzeW5jaHJvbm91c2x5IGFmdGVyIHRoZSByZW5kZXJpbmdcbiAgLy8gcHJvY2VzcywgdG8gcHJvdmlkZSBob29rcyBmb3IgdXNlciBjb2RlLlxuICBkaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50OiBULCBib3VuZHM6IEJvdW5kcyk7XG5cbiAgLy8gRmluYWxseSwgb25jZSB0b3AtZG93biByZXZhbGlkYXRpb24gaGFzIGNvbXBsZXRlZCwgR2xpbW1lciBpbnZva2VzXG4gIC8vIHRoZSBgZGlkVXBkYXRlYCBjYWxsYmFja3Mgb24gY29tcG9uZW50cyB0aGF0IGNoYW5nZWQuXG4gIGRpZFVwZGF0ZShjb21wb25lbnQ6IFQpO1xuXG4gIC8vIENvbnZlcnQgdGhlIG9wYXF1ZSBjb21wb25lbnQgaW50byBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlLlxuICAvLyBJZiBpdCByZXR1cm5zIG51bGwsIHRoZSBjb21wb25lbnQgd2lsbCBub3QgYmUgZGVzdHJveWVkLlxuICBnZXREZXN0cnVjdG9yKGNvbXBvbmVudDogVCk6IERlc3Ryb3lhYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudExheW91dEJ1aWxkZXIge1xuICBlbnY6IEVudmlyb25tZW50O1xuICB0YWc6IENvbXBvbmVudFRhZ0J1aWxkZXI7XG4gIGF0dHJzOiBDb21wb25lbnRBdHRyc0J1aWxkZXI7XG5cbiAgd3JhcExheW91dChsYXlvdXQ6IExheW91dCk7XG4gIGZyb21MYXlvdXQobGF5b3V0OiBMYXlvdXQpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRhZ0J1aWxkZXIge1xuICBzdGF0aWModGFnTmFtZTogc3RyaW5nKTtcbiAgZHluYW1pYyh0YWdOYW1lOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50QXR0cnNCdWlsZGVyIHtcbiAgc3RhdGljKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk7XG4gIGR5bmFtaWMobmFtZTogc3RyaW5nLCB2YWx1ZTogRnVuY3Rpb25FeHByZXNzaW9uPHN0cmluZz4pO1xufVxuXG5jb25zdCBDT01QT05FTlRfREVGSU5JVElPTl9CUkFORCA9ICdDT01QT05FTlQgREVGSU5JVElPTiBbaWQ9ZTU5Yzc1NGUtNjFlYi00MzkyLThjNGEtMmMwYWM3MmJmY2Q0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBvbmVudERlZmluaXRpb24ob2JqOiBhbnkpOiBvYmogaXMgQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+IHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAmJiBvYmpbQ09NUE9ORU5UX0RFRklOSVRJT05fQlJBTkRdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50RGVmaW5pdGlvbjxUPiB7XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7IC8vIGZvciBkZWJ1Z2dpbmdcbiAgcHVibGljIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD47XG4gIHB1YmxpYyBDb21wb25lbnRDbGFzczogQ29tcG9uZW50Q2xhc3M7XG5cbiAgcHJpdmF0ZSBbJ0NPTVBPTkVOVCBERUZJTklUSU9OIFtpZD1lNTljNzU0ZS02MWViLTQzOTItOGM0YS0yYzBhYzcyYmZjZDRdJ10gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPiwgQ29tcG9uZW50Q2xhc3M6IENvbXBvbmVudENsYXNzKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgIHRoaXMuQ29tcG9uZW50Q2xhc3MgPSBDb21wb25lbnRDbGFzcztcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/dom/change-lists', ['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.defaultChangeLists = defaultChangeLists; exports.defaultPropertyChangeLists = defaultPropertyChangeLists; @@ -18990,13 +19498,16 @@ function defaultPropertyChangeLists(tagName, attr) { if (_glimmerRuntimeLibDomSanitizedValues.requiresSanitization(tagName, attr)) { return SafeHrefPropertyChangeList; } - if (isInputValue(tagName, attr)) { + if (isUserInputValue(tagName, attr)) { return InputValuePropertyChangeList; } + if (isOptionSelected(tagName, attr)) { + return OptionSelectedChangeList; + } return PropertyChangeList; } function defaultAttributeChangeLists(tagName, attr) { if (_glimmerRuntimeLibDomSanitizedValues.requiresSanitization(tagName, attr)) { @@ -19024,94 +19535,135 @@ } } ; var PropertyChangeList = { - setAttribute: function (dom, element, attr, value, namespace) { + setAttribute: function (env, element, attr, value, namespace) { if (value !== null) { var normalized = attr.toLowerCase(); - element[normalized] = _glimmerRuntimeLibDomProps.normalizePropertyValue(value); + element[normalized] = _glimmerRuntimeLibDomProps.normalizePropertyValue(value); // TODO: This doesn't work } }, - updateAttribute: function (dom, element, attr, value, namespace) { + updateAttribute: function (env, element, attr, value, namespace) { if (value === null) { var normalized = attr.toLowerCase(); element[normalized] = value; } else { this.setAttribute.apply(this, arguments); } } }; exports.PropertyChangeList = PropertyChangeList; - var AttributeChangeList = { - setAttribute: function (dom, element, attr, value, namespace) { + var AttributeChangeList = new ((function () { + function _class() {} + + _class.prototype.setAttribute = function setAttribute(env, element, attr, value, namespace) { + var dom = env.getAppendOperations(); if (value !== null && value !== undefined) { - if (namespace) { - dom.setAttributeNS(element, namespace, attr, _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value)); - } else { - dom.setAttribute(element, attr, _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value)); - } + dom.setAttribute(element, attr, _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value), namespace); } - }, - updateAttribute: function (dom, element, attr, value, namespace) { + }; + + _class.prototype.updateAttribute = function updateAttribute(env, element, attr, value, namespace) { if (value === null) { if (namespace) { - dom.removeAttributeNS(element, namespace, attr); + env.getDOM().removeAttributeNS(element, namespace, attr); } else { - dom.removeAttribute(element, attr); + env.getDOM().removeAttribute(element, attr); } } else { - this.setAttribute(dom, element, attr, value); + this.setAttribute(env, element, attr, value); } - } - }; + }; + + return _class; + })())(); exports.AttributeChangeList = AttributeChangeList; - function isInputValue(tagName, attribute) { - return tagName === 'INPUT' && attribute === 'value'; + function isUserInputValue(tagName, attribute) { + return (tagName === 'INPUT' || tagName === 'TEXTAREA') && attribute === 'value'; } - var InputValuePropertyChangeList = { - setAttribute: function (dom, element, attr, value) { + var InputValuePropertyChangeList = new ((function () { + function _class2() {} + + _class2.prototype.setAttribute = function setAttribute(env, element, attr, value) { var input = element; + input.value = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value); + }; + + _class2.prototype.updateAttribute = function updateAttribute(env, element, attr, value) { + var input = element; var currentValue = input.value; var normalizedValue = _glimmerRuntimeLibCompiledOpcodesContent.normalizeTextValue(value); if (currentValue !== normalizedValue) { input.value = normalizedValue; } - }, - updateAttribute: function (dom, element, attr, value) { - this.setAttribute(dom, element, attr, value); - } - }; + }; + + return _class2; + })())(); exports.InputValuePropertyChangeList = InputValuePropertyChangeList; - var SafeHrefPropertyChangeList = { - setAttribute: function (dom, element, attr, value) { - PropertyChangeList.setAttribute(dom, element, attr, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(dom, element, attr, value)); - }, - updateAttribute: function (dom, element, attr, value) { - this.setAttribute(dom, element, attr, value); - } - }; + function isOptionSelected(tagName, attribute) { + return tagName === 'OPTION' && attribute === 'selected'; + } + var OptionSelectedChangeList = new ((function () { + function _class3() {} + + _class3.prototype.setAttribute = function setAttribute(env, element, attr, value) { + if (value !== null && value !== undefined && value !== false) { + env.getAppendOperations().setAttribute(element, 'selected', ''); + } + }; + + _class3.prototype.updateAttribute = function updateAttribute(env, element, attr, value) { + var option = element; + if (value === null || value === undefined || value === false) { + option.selected = false; + } else { + option.selected = true; + } + }; + + return _class3; + })())(); + exports.OptionSelectedChangeList = OptionSelectedChangeList; + var SafeHrefPropertyChangeList = new ((function () { + function _class4() {} + + _class4.prototype.setAttribute = function setAttribute(env, element, attr, value) { + var tree = env.getAppendOperations(); + PropertyChangeList.setAttribute(env, element, attr, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(env, element, attr, value)); + }; + + _class4.prototype.updateAttribute = function updateAttribute(env, element, attr, value) { + this.setAttribute(env, element, attr, value); + }; + + return _class4; + })())(); exports.SafeHrefPropertyChangeList = SafeHrefPropertyChangeList; - var SafeHrefAttributeChangeList = { - setAttribute: function (dom, element, attr, value) { - AttributeChangeList.setAttribute(dom, element, attr, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(dom, element, attr, value)); - }, - updateAttribute: function (dom, element, attr, value) { - this.setAttribute(dom, element, attr, value); - } - }; + var SafeHrefAttributeChangeList = new ((function () { + function _class5() {} + + _class5.prototype.setAttribute = function setAttribute(env, element, attr, value) { + AttributeChangeList.setAttribute(env, element, attr, _glimmerRuntimeLibDomSanitizedValues.sanitizeAttributeValue(env, element, attr, value)); + }; + + _class5.prototype.updateAttribute = function updateAttribute(env, element, attr, value) { + this.setAttribute(env, element, attr, value); + }; + + return _class5; + })())(); exports.SafeHrefAttributeChangeList = SafeHrefAttributeChangeList; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2NoYW5nZS1saXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWVBLGFBQUEsa0JBQUEsQ0FBbUMsT0FBZ0IsRUFBRSxJQUFZLEVBQUUsVUFBbUIsRUFBRSxTQUFpQixFQUFBO0FBQ3ZHLFlBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDOUIsWUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksaUNBVnpCLGFBQWEsQUFVOEIsQ0FBQztBQUVuRCxZQUFJLEtBQUssRUFBRTtBQUNULG1CQUFPLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRDs7aUNBRWMsMkJBakJSLGlCQUFpQixDQWlCUyxPQUFPLEVBQUUsSUFBSSxDQUFDOztZQUF6QyxJQUFJLHNCQUFKLElBQUk7O0FBRVYsWUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO0FBQ25CLG1CQUFPLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRCxNQUFNO0FBQ0wsbUJBQU8sMEJBQTBCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2xEO0tBQ0Y7O0FBRUQsYUFBQSwwQkFBQSxDQUEyQyxPQUFlLEVBQUUsSUFBWSxFQUFBO0FBQ3RFLFlBQUkscUNBN0JKLG9CQUFvQixDQTZCSyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDdkMsbUJBQU8sMEJBQTBCLENBQUM7U0FDbkM7QUFFRCxZQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDL0IsbUJBQU8sNEJBQTRCLENBQUM7U0FDckM7QUFFRCxlQUFPLGtCQUFrQixDQUFDO0tBQzNCOztBQUVELGFBQUEsMkJBQUEsQ0FBNEMsT0FBZSxFQUFFLElBQVksRUFBQTtBQUN2RSxZQUFJLHFDQXpDSixvQkFBb0IsQ0F5Q0ssT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3ZDLG1CQUFP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b0JBQVksRUFBQSxVQUFDLEdBQWMsRUFBRSxPQUFnQixFQUFFLElBQVksRUFBRSxLQUFhLEVBQUE7QUFDeEUsK0JBQW1CLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHFDQXpJdkQsc0JBQXNCLENBeUl3RCxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3pHO0FBQ0QsdUJBQWUsRUFBQSxVQUFDLEdBQWMsRUFBRSxPQUFnQixFQUFFLElBQVksRUFBRSxLQUFhLEVBQUE7QUFDM0UsZ0JBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDOUM7S0FDRixDQUFDIiwiZmlsZSI6ImNoYW5nZS1saXN0cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBET01IZWxwZXIgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQge1xuICBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlLFxuICByZXF1aXJlc1Nhbml0aXphdGlvblxufSBmcm9tICcuL3Nhbml0aXplZC12YWx1ZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUHJvcGVydHksIG5vcm1hbGl6ZVByb3BlcnR5VmFsdWUgfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7IFNWR19OQU1FU1BBQ0UgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgeyBub3JtYWxpemVUZXh0VmFsdWUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VMaXN0IHtcbiAgc2V0QXR0cmlidXRlKGRvbTogRE9NSGVscGVyLCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IHN0cmluZyk6IHZvaWQ7XG4gIHVwZGF0ZUF0dHJpYnV0ZShkb206IERPTUhlbHBlciwgZWxlbWVudDogRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdENoYW5nZUxpc3RzKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlOiBzdHJpbmcpIHtcbiAgbGV0IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWU7XG4gIGxldCBpc1NWRyA9IGVsZW1lbnQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFO1xuXG4gIGlmIChpc1NWRykge1xuICAgIHJldHVybiBkZWZhdWx0QXR0cmlidXRlQ2hhbmdlTGlzdHModGFnTmFtZSwgYXR0cik7XG4gIH1cblxuICBsZXQgeyB0eXBlIH0gPSBub3JtYWxpemVQcm9wZXJ0eShlbGVtZW50LCBhdHRyKTtcblxuICBpZiAodHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRBdHRyaWJ1dGVDaGFuZ2VMaXN0cyh0YWdOYW1lLCBhdHRyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdFByb3BlcnR5Q2hhbmdlTGlzdHModGFnTmFtZSwgYXR0cik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQcm9wZXJ0eUNoYW5nZUxpc3RzKHRhZ05hbWU6IHN0cmluZywgYXR0cjogc3RyaW5nKSB7XG4gIGlmIChyZXF1aXJlc1Nhbml0aXphdGlvbih0YWdOYW1lLCBhdHRyKSkge1xuICAgIHJldHVybiBTYWZlSHJlZlByb3BlcnR5Q2hhbmdlTGlzdDtcbiAgfVxuXG4gIGlmIChpc0lucHV0VmFsdWUodGFnTmFtZSwgYXR0cikpIHtcbiAgICByZXR1cm4gSW5wdXRWYWx1ZVByb3BlcnR5Q2hhbmdlTGlzdDtcbiAgfVxuXG4gIHJldHVybiBQcm9wZXJ0eUNoYW5nZUxpc3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QXR0cmlidXRlQ2hhbmdlTGlzdHModGFnTmFtZTogc3RyaW5nLCBhdHRyOiBzdHJpbmcpIHtcbiAgaWYgKHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWUsIGF0dHIpKSB7XG4gICAgcmV0dXJuIFNhZmVIcmVmQXR0cmlidXRlQ2hhbmdlTGlzdDtcbiAgfVxuXG4gIHJldHVybiBBdHRyaWJ1dGVDaGFuZ2VMaXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZERPTUF0dHIoZWxlbWVudDogRWxlbWVudCwgYXR0cjogc3RyaW5nKSB7XG4gICBsZXQgaXNTVkcgPSBlbGVtZW50Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRTtcbiAgIGxldCB7IHR5cGUsIG5vcm1hbGl6ZWQgfSA9IG5vcm1hbGl6ZVByb3BlcnR5KGVsZW1lbnQsIGF0dHIpO1xuXG4gICBpZiAoaXNTVkcpIHtcbiAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKG5vcm1hbGl6ZWQpO1xuICAgfVxuXG4gICBpZiAodHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShub3JtYWxpemVkKTtcbiAgIH0ge1xuICAgICByZXR1cm4gZWxlbWVudFtub3JtYWxpemVkXTtcbiAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBQcm9wZXJ0eUNoYW5nZUxpc3QgPSB7XG4gIHNldEF0dHJpYnV0ZShkb206IERPTUhlbHBlciwgZWxlbWVudDogRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlLCBuYW1lc3BhY2U/OiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGxldCBub3JtYWxpemVkID0gYXR0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgZWxlbWVudFtub3JtYWxpemVkXSA9IG5vcm1hbGl6ZVByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICB1cGRhdGVBdHRyaWJ1dGUoZG9tOiBET01IZWxwZXIsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZCA9IGF0dHIudG9Mb3dlckNhc2UoKTtcbiAgICAgIGVsZW1lbnRbbm9ybWFsaXplZF0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoLi4uYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVDaGFuZ2VMaXN0ID0ge1xuICBzZXRBdHRyaWJ1dGUoZG9tOiBET01IZWxwZXIsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgZG9tLnNldEF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgYXR0ciwgbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb20uc2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHIsIG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB1cGRhdGVBdHRyaWJ1dGUoZG9tOiBET01IZWxwZXIsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIGRvbS5yZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIGF0dHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9tLnJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBhdHRyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoZG9tLCBlbGVtZW50LCBhdHRyLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBpc0lucHV0VmFsdWUodGFnTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZykge1xuICByZXR1cm4gdGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBhdHRyaWJ1dGUgPT09ICd2YWx1ZSc7XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dFZhbHVlUHJvcGVydHlDaGFuZ2VMaXN0ID0ge1xuICBzZXRBdHRyaWJ1dGUoZG9tOiBET01IZWxwZXIsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSkge1xuICAgIGxldCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsZW1lbnQ7XG4gICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpO1xuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IG5vcm1hbGl6ZWRWYWx1ZSkge1xuICAgICAgaW5wdXQudmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShkb206IERPTUhlbHBlciwgZWxlbWVudDogRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoZG9tLCBlbGVtZW50LCBhdHRyLCB2YWx1ZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTYWZlSHJlZlByb3BlcnR5Q2hhbmdlTGlzdCA9IHtcbiAgc2V0QXR0cmlidXRlKGRvbTogRE9NSGVscGVyLCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBQcm9wZXJ0eUNoYW5nZUxpc3Quc2V0QXR0cmlidXRlKGRvbSwgZWxlbWVudCwgYXR0ciwgc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZShkb20sIGVsZW1lbnQsIGF0dHIsIHZhbHVlKSk7XG4gIH0sXG5cbiAgdXBkYXRlQXR0cmlidXRlKGRvbTogRE9NSGVscGVyLCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZShkb20sIGVsZW1lbnQsIGF0dHIsIHZhbHVlKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNhZmVIcmVmQXR0cmlidXRlQ2hhbmdlTGlzdCA9IHtcbiAgc2V0QXR0cmlidXRlKGRvbTogRE9NSGVscGVyLCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBBdHRyaWJ1dGVDaGFuZ2VMaXN0LnNldEF0dHJpYnV0ZShkb20sIGVsZW1lbnQsIGF0dHIsIHNhbml0aXplQXR0cmlidXRlVmFsdWUoZG9tLCBlbGVtZW50LCBhdHRyLCB2YWx1ZSkpO1xuICB9LFxuICB1cGRhdGVBdHRyaWJ1dGUoZG9tOiBET01IZWxwZXIsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKGRvbSwgZWxlbWVudCwgYXR0ciwgdmFsdWUpO1xuICB9XG59O1xuIl19 -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'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibCompatInnerHtmlFix, _glimmerRuntimeLibCompatSvgInnerHtmlFix, _glimmerRuntimeLibCompatTextNodeMergingFix) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2NoYW5nZS1saXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWlCTSxhQUFBLGtCQUFBLENBQTZCLE9BQXVCLEVBQUUsSUFBWSxFQUFFLFVBQW1CLEVBQUUsU0FBaUIsRUFBQTtBQUM5RyxZQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQzlCLFlBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLGlDQVh6QixhQUFhLEFBVzhCLENBQUM7QUFFbkQsWUFBSSxLQUFLLEVBQUU7QUFDVCxtQkFBTywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkQ7O2lDQUVjLDJCQWxCUixpQkFBaUIsQ0FrQlMsT0FBTyxFQUFFLElBQUksQ0FBQzs7WUFBekMsSUFBSSxzQkFBSixJQUFJOztBQUVWLFlBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUNuQixtQkFBTywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkQsTUFBTTtBQUNMLG1CQUFPLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRDtLQUNGOztBQUVLLGFBQUEsMEJBQUEsQ0FBcUMsT0FBZSxFQUFFLElBQVksRUFBQTtBQUN0RSxZQUFJLHFDQTlCSixvQkFBb0IsQ0E4QkssT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3ZDLG1CQUFPLDBCQUEwQixDQUFDO1NBQ25DO0FBRUQsWUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDbkMsbUJBQU8sNEJBQTRCLENBQUM7U0FDckM7QUFFRCxZQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRTtBQUNuQyxtQkFBTyx3QkFBd0IsQ0FBQztTQUNqQztBQUVELGVBQU8sa0JBQWtCLENBQUM7S0FDM0I7O0FBRUssYUFBQSwyQkFBQSxDQUFzQyxPQUFlLEVB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QU8sRUFBRSxJQUFJLEVBQUUscUNBcEt2RCxzQkFBc0IsQ0FvS3dELEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDekc7OzBCQUVELGVBQWUsR0FBQSx5QkFBQyxHQUFnQixFQUFFLE9BQWdCLEVBQUUsSUFBWSxFQUFFLEtBQWEsRUFBQTtBQUM3RSxnQkFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5Qzs7O1dBQ0YsQ0FBQyIsImZpbGUiOiJjaGFuZ2UtbGlzdHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGSVhNRSwgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IERPTU5hbWVzcGFjZSB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCAqIGFzIFNpbXBsZSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZSxcbiAgcmVxdWlyZXNTYW5pdGl6YXRpb25cbn0gZnJvbSAnLi9zYW5pdGl6ZWQtdmFsdWVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVByb3BlcnR5LCBub3JtYWxpemVQcm9wZXJ0eVZhbHVlIH0gZnJvbSAnLi9wcm9wcyc7XG5pbXBvcnQgeyBTVkdfTkFNRVNQQUNFIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHsgbm9ybWFsaXplVGV4dFZhbHVlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VMaXN0IHtcbiAgc2V0QXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IHN0cmluZyk6IHZvaWQ7XG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0Q2hhbmdlTGlzdHMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlOiBzdHJpbmcpIHtcbiAgbGV0IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWU7XG4gIGxldCBpc1NWRyA9IGVsZW1lbnQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFO1xuXG4gIGlmIChpc1NWRykge1xuICAgIHJldHVybiBkZWZhdWx0QXR0cmlidXRlQ2hhbmdlTGlzdHModGFnTmFtZSwgYXR0cik7XG4gIH1cblxuICBsZXQgeyB0eXBlIH0gPSBub3JtYWxpemVQcm9wZXJ0eShlbGVtZW50LCBhdHRyKTtcblxuICBpZiAodHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRBdHRyaWJ1dGVDaGFuZ2VMaXN0cyh0YWdOYW1lLCBhdHRyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdFByb3BlcnR5Q2hhbmdlTGlzdHModGFnTmFtZSwgYXR0cik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQcm9wZXJ0eUNoYW5nZUxpc3RzKHRhZ05hbWU6IHN0cmluZywgYXR0cjogc3RyaW5nKSB7XG4gIGlmIChyZXF1aXJlc1Nhbml0aXphdGlvbih0YWdOYW1lLCBhdHRyKSkge1xuICAgIHJldHVybiBTYWZlSHJlZlByb3BlcnR5Q2hhbmdlTGlzdDtcbiAgfVxuXG4gIGlmIChpc1VzZXJJbnB1dFZhbHVlKHRhZ05hbWUsIGF0dHIpKSB7XG4gICAgcmV0dXJuIElucHV0VmFsdWVQcm9wZXJ0eUNoYW5nZUxpc3Q7XG4gIH1cblxuICBpZiAoaXNPcHRpb25TZWxlY3RlZCh0YWdOYW1lLCBhdHRyKSkge1xuICAgIHJldHVybiBPcHRpb25TZWxlY3RlZENoYW5nZUxpc3Q7XG4gIH1cblxuICByZXR1cm4gUHJvcGVydHlDaGFuZ2VMaXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEF0dHJpYnV0ZUNoYW5nZUxpc3RzKHRhZ05hbWU6IHN0cmluZywgYXR0cjogc3RyaW5nKSB7XG4gIGlmIChyZXF1aXJlc1Nhbml0aXphdGlvbih0YWdOYW1lLCBhdHRyKSkge1xuICAgIHJldHVybiBTYWZlSHJlZkF0dHJpYnV0ZUNoYW5nZUxpc3Q7XG4gIH1cblxuICByZXR1cm4gQXR0cmlidXRlQ2hhbmdlTGlzdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRET01BdHRyKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZykge1xuICAgbGV0IGlzU1ZHID0gZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0U7XG4gICBsZXQgeyB0eXBlLCBub3JtYWxpemVkIH0gPSBub3JtYWxpemVQcm9wZXJ0eShlbGVtZW50LCBhdHRyKTtcblxuICAgaWYgKGlzU1ZHKSB7XG4gICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShub3JtYWxpemVkKTtcbiAgIH1cblxuICAgaWYgKHR5cGUgPT09ICdhdHRyJykge1xuICAgICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUobm9ybWFsaXplZCk7XG4gICB9IHtcbiAgICAgcmV0dXJuIGVsZW1lbnRbbm9ybWFsaXplZF07XG4gICB9XG59O1xuXG5leHBvcnQgY29uc3QgUHJvcGVydHlDaGFuZ2VMaXN0OiBJQ2hhbmdlTGlzdCA9IHtcbiAgc2V0QXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IERPTU5hbWVzcGFjZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBhdHRyLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbGVtZW50W25vcm1hbGl6ZWRdID0gbm9ybWFsaXplUHJvcGVydHlWYWx1ZSh2YWx1ZSk7IC8vIFRPRE86IFRoaXMgZG9lc24ndCB3b3JrXG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IERPTU5hbWVzcGFjZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBhdHRyLnRvTG93ZXJDYXNlKCk7XG4gICAgICBlbGVtZW50W25vcm1hbGl6ZWRdID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKC4uLmFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlQ2hhbmdlTGlzdDogSUNoYW5nZUxpc3QgPSBuZXcgY2xhc3Mge1xuICBzZXRBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSwgbmFtZXNwYWNlPzogRE9NTmFtZXNwYWNlKSB7XG4gICAgbGV0IGRvbSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZG9tLnNldEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyLCBub3JtYWxpemVUZXh0VmFsdWUodmFsdWUpLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUsIG5hbWVzcGFjZT86IERPTU5hbWVzcGFjZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICBlbnYuZ2V0RE9NKCkucmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBhdHRyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudi5nZXRET00oKS5yZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgYXR0ciwgdmFsdWUpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaXNVc2VySW5wdXRWYWx1ZSh0YWdOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gIHJldHVybiAodGFnTmFtZSA9PT0gJ0lOUFVUJyB8fCB0YWdOYW1lID09PSAnVEVYVEFSRUEnKSAmJiBhdHRyaWJ1dGUgPT09ICd2YWx1ZSc7XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dFZhbHVlUHJvcGVydHlDaGFuZ2VMaXN0OiBJQ2hhbmdlTGlzdCA9IG5ldyBjbGFzcyB7XG4gIHNldEF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgbGV0IGlucHV0ID0gZWxlbWVudCBhcyBGSVhNRTxIVE1MSW5wdXRFbGVtZW50LCBcIlRoaXMgYnJlYWtzIFNTUlwiPjtcbiAgICBpbnB1dC52YWx1ZSA9IG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICB1cGRhdGVBdHRyaWJ1dGUoZW52OiBFbnZpcm9ubWVudCwgZWxlbWVudDogRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgbGV0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbWVudDtcbiAgICBsZXQgY3VycmVudFZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZSA9IG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQodGFnTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZykge1xuICByZXR1cm4gdGFnTmFtZSA9PT0gJ09QVElPTicgJiYgYXR0cmlidXRlID09PSAnc2VsZWN0ZWQnO1xufVxuXG5leHBvcnQgY29uc3QgT3B0aW9uU2VsZWN0ZWRDaGFuZ2VMaXN0OiBJQ2hhbmdlTGlzdCA9IG5ldyBjbGFzcyB7XG4gIHNldEF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgYXR0cjogc3RyaW5nLCB2YWx1ZTogT3BhcXVlKSB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICBlbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnc2VsZWN0ZWQnLCAnJyk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSkge1xuICAgIGxldCBvcHRpb24gPSA8SFRNTE9wdGlvbkVsZW1lbnQ+ZWxlbWVudDtcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2FmZUhyZWZQcm9wZXJ0eUNoYW5nZUxpc3Q6IElDaGFuZ2VMaXN0ID0gbmV3IGNsYXNzIHtcbiAgc2V0QXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBsZXQgdHJlZSA9IGVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCk7XG4gICAgUHJvcGVydHlDaGFuZ2VMaXN0LnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIGF0dHIsIHNhbml0aXplQXR0cmlidXRlVmFsdWUoZW52LCBlbGVtZW50LCBhdHRyLCB2YWx1ZSkpO1xuICB9XG5cbiAgdXBkYXRlQXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgYXR0ciwgdmFsdWUpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2FmZUhyZWZBdHRyaWJ1dGVDaGFuZ2VMaXN0OiBJQ2hhbmdlTGlzdCA9IG5ldyBjbGFzcyB7XG4gIHNldEF0dHJpYnV0ZShlbnY6IEVudmlyb25tZW50LCBlbGVtZW50OiBFbGVtZW50LCBhdHRyOiBzdHJpbmcsIHZhbHVlOiBPcGFxdWUpIHtcbiAgICBBdHRyaWJ1dGVDaGFuZ2VMaXN0LnNldEF0dHJpYnV0ZShlbnYsIGVsZW1lbnQsIGF0dHIsIHNhbml0aXplQXR0cmlidXRlVmFsdWUoZW52LCBlbGVtZW50LCBhdHRyLCB2YWx1ZSkpO1xuICB9XG5cbiAgdXBkYXRlQXR0cmlidXRlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKGVudiwgZWxlbWVudCwgYXR0ciwgdmFsdWUpO1xuICB9XG59O1xuIl19 +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; - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - + 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 @@ -19123,10 +19675,11 @@ 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); } @@ -19140,99 +19693,144 @@ target.insertBefore(last, nextSibling); } return [first, last]; } - var DOMHelper = (function () { - function DOMHelper(document) { - _classCallCheck(this, DOMHelper); + var DOM; + (function (DOM) { + var TreeConstruction = (function () { + function TreeConstruction(document) { + this.document = document; + this.uselessElement = null; + this.setupUselessElement(); + } + TreeConstruction.prototype.setupUselessElement = function setupUselessElement() { + this.uselessElement = this.document.createElement('div'); + }; + + 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); + } + }; + + TreeConstruction.prototype.createElementNS = function createElementNS(namespace, tag) { + return this.document.createElementNS(namespace, tag); + }; + + TreeConstruction.prototype.setAttribute = function setAttribute(element, name, value, namespace) { + if (namespace) { + element.setAttributeNS(namespace, name, value); + } else { + element.setAttribute(name, value); + } + }; + + TreeConstruction.prototype.createTextNode = function createTextNode(text) { + return this.document.createTextNode(text); + }; + + TreeConstruction.prototype.createComment = function createComment(data) { + return this.document.createComment(data); + }; + + TreeConstruction.prototype.insertBefore = function insertBefore(parent, node, reference) { + parent.insertBefore(node, reference); + }; + + TreeConstruction.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) { + return _insertHTMLBefore(this.uselessElement, parent, reference, html); + }; + + return 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 || (DOM = {})); + + var DOMChanges = (function () { + function DOMChanges(document) { this.document = document; + this.uselessElement = null; this.namespace = null; this.uselessElement = this.document.createElement('div'); - this.uselessAnchor = this.document.createElement('a'); } - DOMHelper.prototype.protocolForURL = function protocolForURL(url) { - var uselessAnchor = this.uselessAnchor; - - uselessAnchor.href = url; - return uselessAnchor.protocol; - }; - - DOMHelper.prototype.setAttribute = function setAttribute(element, name, value) { + DOMChanges.prototype.setAttribute = function setAttribute(element, name, value) { element.setAttribute(name, value); }; - DOMHelper.prototype.setAttributeNS = function setAttributeNS(element, namespace, name, value) { + DOMChanges.prototype.setAttributeNS = function setAttributeNS(element, namespace, name, value) { element.setAttributeNS(namespace, name, value); }; - DOMHelper.prototype.removeAttribute = function removeAttribute(element, name) { + DOMChanges.prototype.removeAttribute = function removeAttribute(element, name) { element.removeAttribute(name); }; - DOMHelper.prototype.removeAttributeNS = function removeAttributeNS(element, namespace, name) { + DOMChanges.prototype.removeAttributeNS = function removeAttributeNS(element, namespace, name) { element.removeAttributeNS(namespace, name); }; - DOMHelper.prototype.createTextNode = function createTextNode(text) { + DOMChanges.prototype.createTextNode = function createTextNode(text) { return this.document.createTextNode(text); }; - DOMHelper.prototype.createComment = function createComment(data) { + DOMChanges.prototype.createComment = function createComment(data) { return this.document.createComment(data); }; - DOMHelper.prototype.createElement = function createElement(tag, context) { - var isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg'; - var isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName]; + 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 of a <' + context.tagName + '>, because it\'s inside an SVG context'); + throw new Error('Cannot create a ' + tag + ' inside an SVG context'); } return this.document.createElementNS(SVG_NAMESPACE, tag); + } else { + return this.document.createElement(tag); } - return this.document.createElement(tag); }; - DOMHelper.prototype.insertHTMLBefore = function insertHTMLBefore(_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 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(this.uselessElement, nextSibling); - this.uselessElement.insertAdjacentHTML('beforeBegin', html); - last = this.uselessElement.previousSibling; - parent.removeChild(this.uselessElement); - } - var first = prev ? prev.nextSibling : parent.firstChild; - return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last); + DOMChanges.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) { + return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html); }; - DOMHelper.prototype.insertNodeBefore = function insertNodeBefore(parent, node, reference) { + DOMChanges.prototype.insertNodeBefore = function insertNodeBefore(parent, node, reference) { if (isDocumentFragment(node)) { var firstChild = node.firstChild; var lastChild = node.lastChild; this.insertBefore(parent, node, reference); @@ -19241,47 +19839,113 @@ this.insertBefore(parent, node, reference); return new _glimmerRuntimeLibBounds.SingleNodeBounds(parent, node); } }; - DOMHelper.prototype.insertTextBefore = function insertTextBefore(parent, nextSibling, text) { + DOMChanges.prototype.insertTextBefore = function insertTextBefore(parent, nextSibling, text) { var textNode = this.createTextNode(text); this.insertBefore(parent, textNode, nextSibling); return textNode; }; - DOMHelper.prototype.insertBefore = function insertBefore(element, node, reference) { + DOMChanges.prototype.insertBefore = function insertBefore(element, node, reference) { element.insertBefore(node, reference); }; - DOMHelper.prototype.insertAfter = function insertAfter(element, node, reference) { + DOMChanges.prototype.insertAfter = function insertAfter(element, node, reference) { this.insertBefore(element, node, reference.nextSibling); }; - return DOMHelper; + 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 isDocumentFragment(node) { return node.nodeType === Node.DOCUMENT_FRAGMENT_NODE; } - var helper = DOMHelper; - var doc = typeof document === 'undefined' ? undefined : document; - helper = _glimmerRuntimeLibCompatTextNodeMergingFix.default(doc, helper); - helper = _glimmerRuntimeLibCompatInnerHtmlFix.default(doc, helper); - helper = _glimmerRuntimeLibCompatSvgInnerHtmlFix.default(doc, helper, SVG_NAMESPACE); + var helper = DOMChanges; + helper = _glimmerRuntimeLibCompatTextNodeMergingFix.domChanges(doc, helper); + helper = _glimmerRuntimeLibCompatInnerHtmlFix.domChanges(doc, helper); + helper = _glimmerRuntimeLibCompatSvgInnerHtmlFix.domChanges(doc, helper, SVG_NAMESPACE); exports.default = helper; - exports.DOMHelper = DOMHelper; + var DOMTreeConstruction = DOM.DOMTreeConstruction; + exports.DOMTreeConstruction = DOMTreeConstruction; + exports.DOMNamespace = _glimmerRuntimeLibDomInterfaces.Namespace; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUtPLFFBQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDOzs7QUFHMUQsUUFBTSxzQkFBc0IsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7Ozs7OztBQVNoRSxRQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVuRCxBQUFDLEtBQ0MsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUNoRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFDckcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFDcEcsSUFBSSxFQUFFLEtBQUssQ0FDWixDQUFFLE9BQU8sQ0FBQyxVQUFBLEdBQUc7ZUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztLQUFBLENBQUMsQ0FBQztBQUU1QyxRQUFNLFVBQVUsR0FBRywyRUFBMkUsQ0FBQzs7QUFFL0YsYUFBQSxZQUFBLENBQTZCLE1BQWMsRUFBQTtBQUN6QyxlQUFPLFVBQVUsQ0FB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LG1CQUFPLFFBQVEsQ0FBQztTQUNqQjs7QUFoSEgsaUJBQUEsV0FrSEUsWUFBWSxHQUFBLHNCQUFDLE9BQWdCLEVBQUUsSUFBVSxFQUFFLFNBQWUsRUFBQTtBQUN4RCxtQkFBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDdkM7O0FBcEhILGlCQUFBLFdBc0hFLFdBQVcsR0FBQSxxQkFBQyxPQUFnQixFQUFFLElBQVUsRUFBRSxTQUFlLEVBQUE7QUFDdkQsZ0JBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDekQ7O2VBeEhILFNBQUE7OztBQTJIQSxhQUFBLGtCQUFBLENBQTRCLElBQVUsRUFBQTtBQUNwQyxlQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLHNCQUFzQixDQUFDO0tBQ3REO0FBRUQsUUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ3ZCLFFBQUksR0FBRyxHQUFHLE9BQU8sUUFBUSxLQUFLLFdBQVcsR0FBRyxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBRWpFLFVBQU0sR0FBRyxtREFBd0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLFVBQU0sR0FBRyw2Q0FBcUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLFVBQU0sR0FBRyxnREFBbUIsR0FBRyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztzQkFFekMsTUFBTTtZQUNaLFNBQVMsR0FBVCxTQUFTIiwiZmlsZSI6ImhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzLCBTaW5nbGVOb2RlQm91bmRzLCBCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IGFwcGx5VGFibGVFbGVtZW50Rml4IGZyb20gJy4uL2NvbXBhdC9pbm5lci1odG1sLWZpeCc7XG5pbXBvcnQgYXBwbHlTVkdFbGVtZW50Rml4IGZyb20gJy4uL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IGFwcGx5VGV4dE5vZGVNZXJnaW5nRml4IGZyb20gJy4uL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgnO1xuXG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuY29uc3QgU1ZHX0lOVEVHUkFUSU9OX1BPSU5UUyA9IHsgZm9yZWlnbk9iamVjdDogMSwgZGVzYzogMSwgdGl0bGU6IDEgfTtcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhZGp1c3Qtc3ZnLWF0dHJpYnV0ZXNcbi8vIFRPRE86IEFkanVzdCBTVkcgYXR0cmlidXRlc1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbi8vIFRPRE86IEFkanVzdCBTVkcgZWxlbWVudHNcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG5leHBvcnQgY29uc3QgQkxBQ0tMSVNUX1RBQkxFID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuKFtcbiAgXCJiXCIsIFwiYmlnXCIsIFwiYmxvY2txdW90ZVwiLCBcImJvZHlcIiwgXCJiclwiLCBcImNlbnRlclwiLCBcImNvZGVcIiwgXCJkZFwiLCBcImRpdlwiLCBcImRsXCIsIFwiZHRcIiwgXCJlbVwiLCBcImVtYmVkXCIsXG4gIFwiaDFcIiwgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLCBcImg2XCIsIFwiaGVhZFwiLCBcImhyXCIsIFwiaVwiLCBcImltZ1wiLCBcImxpXCIsIFwibGlzdGluZ1wiLCBcIm1haW5cIiwgXCJtZXRhXCIsIFwibm9iclwiLFxuICBcIm9sXCIsIFwicFwiLCBcInByZVwiLCBcInJ1YnlcIiwgXCJzXCIsIFwic21hbGxcIiwgXCJzcGFuXCIsIFwic3Ryb25nXCIsIFwic3RyaWtlXCIsIFwic3ViXCIsIFwic3VwXCIsIFwidGFibGVcIiwgXCJ0dFwiLCBcInVcIixcbiAgXCJ1bFwiLCBcInZhclwiXG5dKS5mb3JFYWNoKHRhZyA9PiBCTEFDS0xJU1RfVEFCTEVbdGFnXSA9IDEpO1xuXG5jb25zdCBXSElURVNQQUNFID0gL1tcXHQtXFxyIFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZdLztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVzcGFjZShzdHJpbmc6IHN0cmluZykge1xuICByZXR1cm4gV0hJVEVTUEFDRS50ZXN0KHN0cmluZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlTm9kZXNCZWZvcmUoc291cmNlLCB0YXJnZXQsIG5leHRTaWJsaW5nKSB7XG4gIGxldCBmaXJzdCA9IHNvdXJjZS5maXJzdENoaWxkO1xuICBsZXQgbGFzdCA9IG51bGw7XG4gIGxldCBjdXJyZW50ID0gZmlyc3Q7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgbGFzdCA9IGN1cnJlbnQ7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG4gICAgdGFyZ2V0Lmluc2VydEJlZm9yZShsYXN0LCBuZXh0U2libGluZyk7XG4gIH1cbiAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG59XG5cbmNsYXNzIERPTUhlbHBlciB7XG4gIHByaXZhdGUgZG9jdW1lbnQ6IEhUTUxEb2N1bWVudDtcbiAgcHJpdmF0ZSBuYW1lc3BhY2U6IHN0cmluZztcbiAgcHJpdmF0ZSB1c2VsZXNzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgdXNlbGVzc0FuY2hvcjogSFRNTEFuY2hvckVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgdGhpcy5uYW1lc3BhY2UgPSBudWxsO1xuICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMudXNlbGVzc0FuY2hvciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICB9XG5cbiAgcHJvdG9jb2xGb3JVUkwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB7IHVzZWxlc3NBbmNob3IgfSA9IHRoaXM7XG4gICAgdXNlbGVzc0FuY2hvci5ocmVmID0gdXJsO1xuICAgIHJldHVybiB1c2VsZXNzQW5jaG9yLnByb3RvY29sO1xuICB9XG5cbiAgc2V0QXR0cmlidXRlKGVsZW1lbnQ6IEVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHNldEF0dHJpYnV0ZU5TKGVsZW1lbnQ6IEVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQ6IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9XG5cbiAgcmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudDogRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZVRleHROb2RlKHRleHQ6IHN0cmluZyk6IFRleHQge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICB9XG5cbiAgY3JlYXRlQ29tbWVudChkYXRhOiBzdHJpbmcpOiBDb21tZW50IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudCh0YWc6IHN0cmluZywgY29udGV4dDogRWxlbWVudCk6IEVsZW1lbnQge1xuICAgIGxldCBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IGNvbnRleHQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFIHx8IHRhZyA9PT0gJ3N2Zyc7XG4gICAgbGV0IGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBTVkdfSU5URUdSQVRJT05fUE9JTlRTW2NvbnRleHQudGFnTmFtZV07XG5cbiAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAvLyB0aGlzLlxuICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBhICR7dGFnfSBpbnNpZGUgb2YgYSA8JHtjb250ZXh0LnRhZ05hbWV9PiwgYmVjYXVzZSBpdCdzIGluc2lkZSBhbiBTVkcgY29udGV4dGApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSwgdGFnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gIH1cblxuICBpbnNlcnRIVE1MQmVmb3JlKF9wYXJlbnQ6IEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIC8vIFR5cGVTY3JpcHQgdmVuZG9yZWQgYW4gb2xkIHZlcnNpb24gb2YgdGhlIERPTSBzcGVjIHdoZXJlIGBpbnNlcnRBZGphY2VudEhUTUxgXG4gICAgLy8gb25seSBleGlzdHMgb24gYEhUTUxFbGVtZW50YCBidXQgbm90IG9uIGBFbGVtZW50YC4gV2UgYWN0dWFsbHkgd29yayB3aXRoIHRoZVxuICAgIC8vIG5ld2VyIHZlcnNpb24gb2YgdGhlIERPTSBBUEkgaGVyZSAoYW5kIG1vbmtleS1wYXRjaCB0aGlzIG1ldGhvZCBpbiBgLi9jb21wYXRgXG4gICAgLy8gd2hlbiB3ZSBkZXRlY3Qgb2xkZXIgYnJvd3NlcnMpLiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24uXG4gICAgbGV0IHBhcmVudCA9IF9wYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBsZXQgcHJldiA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICBsZXQgbGFzdDtcblxuICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKG5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICBwYXJlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCBodG1sKTtcbiAgICAgIGxhc3QgPSBwYXJlbnQubGFzdENoaWxkO1xuICAgIH0gZWxzZSBpZiAobmV4dFNpYmxpbmcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgbmV4dFNpYmxpbmcuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgICAgbGFzdCA9IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm9uLWVsZW1lbnQgbm9kZXMgZG8gbm90IHN1cHBvcnQgaW5zZXJ0QWRqYWNlbnRIVE1MLCBzbyBhZGQgYW5cbiAgICAgIC8vIGVsZW1lbnQgYW5kIGNhbGwgaXQgb24gdGhhdCBlbGVtZW50LiBUaGVuIHJlbW92ZSB0aGUgZWxlbWVudC5cbiAgICAgIC8vXG4gICAgICAvLyBUaGlzIGFsc28gcHJvdGVjdHMgRWRnZSwgSUUgYW5kIEZpcmVmb3ggdy9vIHRoZSBpbnNwZWN0b3Igb3BlblxuICAgICAgLy8gZnJvbSBtZXJnaW5nIGFkamFjZW50IHRleHQgbm9kZXMuIFNlZSAuL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgudHNcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzRWxlbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgdGhpcy51c2VsZXNzRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUJlZ2luJywgaHRtbCk7XG4gICAgICBsYXN0ID0gdGhpcy51c2VsZXNzRWxlbWVudC5wcmV2aW91c1NpYmxpbmc7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0ID0gcHJldiA/IHByZXYubmV4dFNpYmxpbmcgOiBwYXJlbnQuZmlyc3RDaGlsZDtcbiAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnQ6IEVsZW1lbnQsIG5vZGU6IE5vZGUsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gICAgaWYgKGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSkge1xuICAgICAgbGV0IHsgZmlyc3RDaGlsZCwgbGFzdENoaWxkIH0gPSBub2RlO1xuICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpO1xuICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydFRleHRCZWZvcmUocGFyZW50OiBFbGVtZW50LCBuZXh0U2libGluZzogTm9kZSwgdGV4dDogc3RyaW5nKTogVGV4dCB7XG4gICAgbGV0IHRleHROb2RlID0gdGhpcy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIHRleHROb2RlLCBuZXh0U2libGluZyk7XG4gICAgcmV0dXJuIHRleHROb2RlO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQ6IEVsZW1lbnQsIG5vZGU6IE5vZGUsIHJlZmVyZW5jZTogTm9kZSkge1xuICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gIH1cblxuICBpbnNlcnRBZnRlcihlbGVtZW50OiBFbGVtZW50LCBub2RlOiBOb2RlLCByZWZlcmVuY2U6IE5vZGUpIHtcbiAgICB0aGlzLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UubmV4dFNpYmxpbmcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRG9jdW1lbnRGcmFnbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTtcbn1cblxubGV0IGhlbHBlciA9IERPTUhlbHBlcjtcbmxldCBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZG9jdW1lbnQ7XG5cbmhlbHBlciA9IGFwcGx5VGV4dE5vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGFwcGx5VGFibGVFbGVtZW50Rml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGFwcGx5U1ZHRWxlbWVudEZpeChkb2MsIGhlbHBlciwgU1ZHX05BTUVTUEFDRSk7XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcjtcbmV4cG9ydCB7IERPTUhlbHBlciB9O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFlTyxRQUFNLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQzs7O0FBRzFELFFBQU0sc0JBQXNCLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDOzs7Ozs7QUFTaEUsUUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsQUFBQyxLQUNDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDaEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQ3JHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQ3BHLElBQUksRUFBRSxLQUFLLENBQ1osQ0FBRSxPQUFPLENBQUMsVUFBQSxHQUFHO2VBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7S0FBQSxDQUFDLENBQUM7QUFFNUMsUUFBTSxVQUFVLEdBQUcsMkVBQTJFLENBQUM7QUFFL0YsUUFBSSxHQUFHLEdBQUcsT0FBTyxRQUFRLEtBQUssV0FBVyxHQUFHLFNBQVMsR0FB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QUFDO0tBQ3REO0FBRUQsUUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDO0FBRXhCLFVBQU0sR0FBRywyQ0FwUVAsVUFBVSxDQW9Rc0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLFVBQU0sR0FBRyxxQ0E3UVAsVUFBVSxDQTZRdUIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELFVBQU0sR0FBRyx3Q0ExUVAsVUFBVSxDQTBRcUIsR0FBRyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztzQkFFOUMsTUFBTTtBQUNkLFFBQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDOztZQUVyQyxZQUFZLG1DQUF6QixTQUFTIiwiZmlsZSI6ImhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzLCBTaW5nbGVOb2RlQm91bmRzLCBCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHtcbiAgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4LFxuICB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXhcbn0gZnJvbSAnLi4vY29tcGF0L2lubmVyLWh0bWwtZml4JztcbmltcG9ydCB7XG4gIGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgsXG4gIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXhcbn0gZnJvbSAnLi4vY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeCc7XG5pbXBvcnQge1xuICBkb21DaGFuZ2VzIGFzIGRvbUNoYW5nZXNOb2RlTWVyZ2luZ0ZpeCxcbiAgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uTm9kZU1lcmdpbmdGaXhcbn0gZnJvbSAnLi4vY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeCc7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbmNvbnN0IFNWR19JTlRFR1JBVElPTl9QT0lOVFMgPSB7IGZvcmVpZ25PYmplY3Q6IDEsIGRlc2M6IDEsIHRpdGxlOiAxIH07XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjYWRqdXN0LXN2Zy1hdHRyaWJ1dGVzXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGF0dHJpYnV0ZXNcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGVsZW1lbnRzXG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluZm9yZWlnblxuZXhwb3J0IGNvbnN0IEJMQUNLTElTVF9UQUJMRSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbihbXG4gIFwiYlwiLCBcImJpZ1wiLCBcImJsb2NrcXVvdGVcIiwgXCJib2R5XCIsIFwiYnJcIiwgXCJjZW50ZXJcIiwgXCJjb2RlXCIsIFwiZGRcIiwgXCJkaXZcIiwgXCJkbFwiLCBcImR0XCIsIFwiZW1cIiwgXCJlbWJlZFwiLFxuICBcImgxXCIsIFwiaDJcIiwgXCJoM1wiLCBcImg0XCIsIFwiaDVcIiwgXCJoNlwiLCBcImhlYWRcIiwgXCJoclwiLCBcImlcIiwgXCJpbWdcIiwgXCJsaVwiLCBcImxpc3RpbmdcIiwgXCJtYWluXCIsIFwibWV0YVwiLCBcIm5vYnJcIixcbiAgXCJvbFwiLCBcInBcIiwgXCJwcmVcIiwgXCJydWJ5XCIsIFwic1wiLCBcInNtYWxsXCIsIFwic3BhblwiLCBcInN0cm9uZ1wiLCBcInN0cmlrZVwiLCBcInN1YlwiLCBcInN1cFwiLCBcInRhYmxlXCIsIFwidHRcIiwgXCJ1XCIsXG4gIFwidWxcIiwgXCJ2YXJcIlxuXSkuZm9yRWFjaCh0YWcgPT4gQkxBQ0tMSVNUX1RBQkxFW3RhZ10gPSAxKTtcblxuY29uc3QgV0hJVEVTUEFDRSA9IC9bXFx0LVxcciBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHVGRUZGXS87XG5cbmxldCBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZG9jdW1lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1doaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFdISVRFU1BBQ0UudGVzdChzdHJpbmcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZU5vZGVzQmVmb3JlKHNvdXJjZSwgdGFyZ2V0LCBuZXh0U2libGluZykge1xuICBsZXQgZmlyc3QgPSBzb3VyY2UuZmlyc3RDaGlsZDtcbiAgbGV0IGxhc3QgPSBudWxsO1xuICBsZXQgY3VycmVudCA9IGZpcnN0O1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIGxhc3QgPSBjdXJyZW50O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRTaWJsaW5nO1xuICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobGFzdCwgbmV4dFNpYmxpbmcpO1xuICB9XG4gIHJldHVybiBbZmlyc3QsIGxhc3RdO1xufVxuXG5uYW1lc3BhY2UgRE9NIHtcbiAgdHlwZSBOb2RlID0gU2ltcGxlLk5vZGU7XG4gIHR5cGUgRWxlbWVudCA9IFNpbXBsZS5FbGVtZW50O1xuICB0eXBlIERvY3VtZW50ID0gU2ltcGxlLkRvY3VtZW50O1xuICB0eXBlIENvbW1lbnQgPSBTaW1wbGUuQ29tbWVudDtcbiAgdHlwZSBUZXh0ID0gU2ltcGxlLlRleHQ7XG4gIHR5cGUgTmFtZXNwYWNlID0gU2ltcGxlLk5hbWVzcGFjZTtcbiAgdHlwZSBIVE1MRWxlbWVudCA9IFNpbXBsZS5IVE1MRWxlbWVudDtcblxuICBjbGFzcyBUcmVlQ29uc3RydWN0aW9uIHtcbiAgICBwcm90ZWN0ZWQgdXNlbGVzc0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbDtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZG9jdW1lbnQ6IERvY3VtZW50KSB7XG4gICAgICB0aGlzLnNldHVwVXNlbGVzc0VsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0dXBVc2VsZXNzRWxlbWVudCgpIHtcbiAgICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIH1cblxuICAgIGNyZWF0ZUVsZW1lbnQodGFnOiBzdHJpbmcsIGNvbnRleHQ/OiBFbGVtZW50KTogRWxlbWVudCB7XG4gICAgICBsZXQgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UsIGlzSFRNTEludGVncmF0aW9uUG9pbnQ7XG5cbiAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gY29udGV4dC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UgfHwgdGFnID09PSAnc3ZnJztcbiAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IFNWR19JTlRFR1JBVElPTl9QT0lOVFNbY29udGV4dC50YWdOYW1lXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIDxmb250PiB3aXRoIGNvbG9yLCBmYWNlLCBvclxuICAgICAgICAvLyBzaXplIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIGFsc28gZGlzYWxsb3dlZCBieSB0aGUgc3BlYy4gV2Ugc2hvdWxkIGZpeFxuICAgICAgICAvLyB0aGlzLlxuICAgICAgICBpZiAoQkxBQ0tMSVNUX1RBQkxFW3RhZ10pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgYSAke3RhZ30gaW5zaWRlIGFuIFNWRyBjb250ZXh0YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSBhcyBOYW1lc3BhY2UsIHRhZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZTogTmFtZXNwYWNlLCB0YWc6IHN0cmluZyk6IEVsZW1lbnQge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKTtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudDogRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcpOiBUZXh0IHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIH1cblxuICAgIGNyZWF0ZUNvbW1lbnQoZGF0YTogc3RyaW5nKTogQ29tbWVudCB7XG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICAgIH1cblxuICAgIGluc2VydEJlZm9yZShwYXJlbnQ6IEVsZW1lbnQsIG5vZGU6IE5vZGUsIHJlZmVyZW5jZTogTm9kZSkge1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50OiBFbGVtZW50LCBodG1sOiBzdHJpbmcsIHJlZmVyZW5jZTogTm9kZSk6IEJvdW5kcyB7XG4gICAgICByZXR1cm4gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLnVzZWxlc3NFbGVtZW50LCBwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCk7XG4gICAgfTtcbiAgfVxuXG4gIGxldCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gVHJlZUNvbnN0cnVjdGlvbjtcbiAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uLCBTVkdfTkFNRVNQQUNFKTtcblxuICBleHBvcnQgY29uc3QgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb247XG4gIGV4cG9ydCB0eXBlIERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgRE9NQ2hhbmdlcyB7XG4gIHByb3RlY3RlZCBuYW1lc3BhY2U6IHN0cmluZztcbiAgcHJpdmF0ZSB1c2VsZXNzRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkb2N1bWVudDogSFRNTERvY3VtZW50KSB7XG4gICAgdGhpcy5uYW1lc3BhY2UgPSBudWxsO1xuICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB9XG5cbiAgc2V0QXR0cmlidXRlKGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGVOUyhlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9XG5cbiAgcmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5hbWVzcGFjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSk7XG4gIH1cblxuICBjcmVhdGVUZXh0Tm9kZSh0ZXh0OiBzdHJpbmcpOiBTaW1wbGUuVGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gIH1cblxuICBjcmVhdGVDb21tZW50KGRhdGE6IHN0cmluZyk6IFNpbXBsZS5Db21tZW50IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICB9XG5cbiAgY3JlYXRlRWxlbWVudCh0YWc6IHN0cmluZywgY29udGV4dD86IFNpbXBsZS5FbGVtZW50KTogU2ltcGxlLkVsZW1lbnQge1xuICAgIGxldCBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSwgaXNIVE1MSW50ZWdyYXRpb25Qb2ludDtcblxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IGNvbnRleHQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFIHx8IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gU1ZHX0lOVEVHUkFUSU9OX1BPSU5UU1tjb250ZXh0LnRhZ05hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlICYmICFpc0hUTUxJbnRlZ3JhdGlvblBvaW50KSB7XG4gICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgPGZvbnQ+IHdpdGggY29sb3IsIGZhY2UsIG9yXG4gICAgICAvLyBzaXplIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIGFsc28gZGlzYWxsb3dlZCBieSB0aGUgc3BlYy4gV2Ugc2hvdWxkIGZpeFxuICAgICAgLy8gdGhpcy5cbiAgICAgIGlmIChCTEFDS0xJU1RfVEFCTEVbdGFnXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgYSAke3RhZ30gaW5zaWRlIGFuIFNWRyBjb250ZXh0YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTkFNRVNQQUNFIGFzIFNpbXBsZS5OYW1lc3BhY2UsIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICB9XG4gIH1cblxuICBpbnNlcnRIVE1MQmVmb3JlKF9wYXJlbnQ6IEVsZW1lbnQsIG5leHRTaWJsaW5nOiBOb2RlLCBodG1sOiBzdHJpbmcpOiBCb3VuZHMge1xuICAgIHJldHVybiBpbnNlcnRIVE1MQmVmb3JlKHRoaXMudXNlbGVzc0VsZW1lbnQsIF9wYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgfVxuXG4gIGluc2VydE5vZGVCZWZvcmUocGFyZW50OiBTaW1wbGUuRWxlbWVudCwgbm9kZTogU2ltcGxlLk5vZGUsIHJlZmVyZW5jZTogU2ltcGxlLk5vZGUpOiBCb3VuZHMge1xuICAgIGlmIChpc0RvY3VtZW50RnJhZ21lbnQobm9kZSkpIHtcbiAgICAgIGxldCB7IGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCB9ID0gbm9kZTtcbiAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdENoaWxkLCBsYXN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHMocGFyZW50LCBub2RlKTtcbiAgICB9XG4gIH1cblxuICBpbnNlcnRUZXh0QmVmb3JlKHBhcmVudDogU2ltcGxlLkVsZW1lbnQsIG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSwgdGV4dDogc3RyaW5nKTogU2ltcGxlLlRleHQge1xuICAgIGxldCB0ZXh0Tm9kZSA9IHRoaXMuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCB0ZXh0Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiB0ZXh0Tm9kZTtcbiAgfVxuXG4gIGluc2VydEJlZm9yZShlbGVtZW50OiBTaW1wbGUuRWxlbWVudCwgbm9kZTogU2ltcGxlLk5vZGUsIHJlZmVyZW5jZTogU2ltcGxlLk5vZGUpIHtcbiAgICBlbGVtZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgaW5zZXJ0QWZ0ZXIoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIG5vZGU6IFNpbXBsZS5Ob2RlLCByZWZlcmVuY2U6IFNpbXBsZS5Ob2RlKSB7XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlLm5leHRTaWJsaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzOiB2b2lkLCBfdXNlbGVzczogU2ltcGxlLkhUTUxFbGVtZW50LCBfcGFyZW50OiBTaW1wbGUuRWxlbWVudCwgX25leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSwgaHRtbDogc3RyaW5nKTogQm91bmRzIHsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAvLyBUeXBlU2NyaXB0IHZlbmRvcmVkIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSBET00gc3BlYyB3aGVyZSBgaW5zZXJ0QWRqYWNlbnRIVE1MYFxuICAvLyBvbmx5IGV4aXN0cyBvbiBgSFRNTEVsZW1lbnRgIGJ1dCBub3Qgb24gYEVsZW1lbnRgLiBXZSBhY3R1YWxseSB3b3JrIHdpdGggdGhlXG4gIC8vIG5ld2VyIHZlcnNpb24gb2YgdGhlIERPTSBBUEkgaGVyZSAoYW5kIG1vbmtleS1wYXRjaCB0aGlzIG1ldGhvZCBpbiBgLi9jb21wYXRgXG4gIC8vIHdoZW4gd2UgZGV0ZWN0IG9sZGVyIGJyb3dzZXJzKS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhpcyBsaW1pdGF0aW9uLlxuICBsZXQgcGFyZW50ID0gX3BhcmVudCBhcyBIVE1MRWxlbWVudDtcbiAgbGV0IHVzZWxlc3MgPSBfdXNlbGVzcyBhcyBIVE1MRWxlbWVudDtcbiAgbGV0IG5leHRTaWJsaW5nID0gX25leHRTaWJsaW5nIGFzIE5vZGU7XG5cbiAgbGV0IHByZXYgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGQ7XG4gIGxldCBsYXN0O1xuXG4gIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIG51bGwsIG51bGwpO1xuICB9XG5cbiAgaWYgKG5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgcGFyZW50Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgaHRtbCk7XG4gICAgbGFzdCA9IHBhcmVudC5sYXN0Q2hpbGQ7XG4gIH0gZWxzZSBpZiAobmV4dFNpYmxpbmcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIG5leHRTaWJsaW5nLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICBsYXN0ID0gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vbi1lbGVtZW50IG5vZGVzIGRvIG5vdCBzdXBwb3J0IGluc2VydEFkamFjZW50SFRNTCwgc28gYWRkIGFuXG4gICAgLy8gZWxlbWVudCBhbmQgY2FsbCBpdCBvbiB0aGF0IGVsZW1lbnQuIFRoZW4gcmVtb3ZlIHRoZSBlbGVtZW50LlxuICAgIC8vXG4gICAgLy8gVGhpcyBhbHNvIHByb3RlY3RzIEVkZ2UsIElFIGFuZCBGaXJlZm94IHcvbyB0aGUgaW5zcGVjdG9yIG9wZW5cbiAgICAvLyBmcm9tIG1lcmdpbmcgYWRqYWNlbnQgdGV4dCBub2Rlcy4gU2VlIC4vY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeC50c1xuICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodXNlbGVzcywgbmV4dFNpYmxpbmcpO1xuICAgIHVzZWxlc3MuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgIGxhc3QgPSB1c2VsZXNzLnByZXZpb3VzU2libGluZztcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodXNlbGVzcyk7XG4gIH1cblxuICBsZXQgZmlyc3QgPSBwcmV2ID8gcHJldi5uZXh0U2libGluZyA6IHBhcmVudC5maXJzdENoaWxkO1xuICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuXG5mdW5jdGlvbiBpc0RvY3VtZW50RnJhZ21lbnQobm9kZTogU2ltcGxlLk5vZGUpOiBub2RlIGlzIERvY3VtZW50RnJhZ21lbnQge1xuICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFO1xufVxuXG5sZXQgaGVscGVyID0gRE9NQ2hhbmdlcztcblxuaGVscGVyID0gZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgoZG9jLCBoZWxwZXIsIFNWR19OQU1FU1BBQ0UpO1xuXG5leHBvcnQgZGVmYXVsdCBoZWxwZXI7XG5leHBvcnQgY29uc3QgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uO1xuZXhwb3J0IHR5cGUgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uO1xuZXhwb3J0IHsgTmFtZXNwYWNlIGFzIERPTU5hbWVzcGFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG4iXX0= +enifed("glimmer-runtime/lib/dom/interface", ["exports"], function (exports) { + "use strict"; +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImludGVyZmFjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbXX0= +enifed("glimmer-runtime/lib/dom/interfaces", ["exports"], function (exports) { + "use strict"; + + var 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 || (NodeType = {})); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsUUFBSyxRQWFKLENBQUE7QUFiRCxLQUFBLFVBQUssUUFBUSxFQUFBO0FBQ1gsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsU0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsU0FBTyxDQUFBO0FBQ1AsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsV0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsV0FBUyxDQUFBO0FBQ1QsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsTUFBSSxDQUFBO0FBQ0osZ0JBQUEsQ0FBQSxRQUFBLENBQUEsY0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsY0FBWSxDQUFBO0FBQ1osZ0JBQUEsQ0FBQSxRQUFBLENBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLGlCQUFlLENBQUE7QUFDZixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxRQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxRQUFNLENBQUE7QUFDTixnQkFBQSxDQUFBLFFBQUEsQ0FBQSx1QkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsdUJBQXFCLENBQUE7QUFDckIsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsU0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsU0FBTyxDQUFBO0FBQ1AsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsVUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsVUFBUSxDQUFBO0FBQ1IsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsY0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsY0FBWSxDQUFBO0FBQ1osZ0JBQUEsQ0FBQSxRQUFBLENBQUEsa0JBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGtCQUFnQixDQUFBO0FBQ2hCLGdCQUFBLENBQUEsUUFBQSxDQUFBLFVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLFVBQVEsQ0FBQTtLQUNULENBQUEsQ0FiSSxRQUFRLEtBQVIsUUFBUSxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBYVoiLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZJWE1FIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmV4cG9ydCB0eXBlIEZJWF9SRUlGSUNBVElPTjxUPiA9IEZJWE1FPFQsICduZWVkcyB0byBiZSByZWlmaWVkIHByb3Blcmx5Jz47XG5cbmV4cG9ydCB0eXBlIE5hbWVzcGFjZSA9XG4gICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgfCBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIlxuICB8IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICB8IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gIHwgXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIlxuICB8IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIjtcblxuZW51bSBOb2RlVHlwZSB7XG4gIEVsZW1lbnQsXG4gIEF0dHJpYnV0ZSxcbiAgVGV4dCxcbiAgQ2RhdGFTZWN0aW9uLFxuICBFbnRpdHlSZWZlcmVuY2UsXG4gIEVudGl0eSxcbiAgUHJvY2Vzc2luZ0luc3RydWN0aW9uLFxuICBDb21tZW50LFxuICBEb2N1bWVudCxcbiAgRG9jdW1lbnRUeXBlLFxuICBEb2N1bWVudEZyYWdtZW50LFxuICBOb3RhdGlvblxufVxuXG4vLyBUaGlzIGlzIHRoZSBzdWJzZXQgb2YgRE9NIHVzZWQgYnkgdGhlIGFwcGVuZGluZyBWTS4gSXQgaXNcbi8vIG1lYW50IHRvIGJlIGVmZmljaWVudCB0byB1c2Ugb24gdGhlIHNlcnZlciBhbmQgYWxsIG9wZXJhdGlvbnNcbi8vIG11c3QgYmUgZnVsbHkgc2VyaWFsaXphYmxlIHRvIEhUTUwgYXMgYSB0cmFuc3BvcnQuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGUge1xuICBuZXh0U2libGluZzogTm9kZTtcbiAgcHJldmlvdXNTaWJsaW5nOiBOb2RlO1xuICBwYXJlbnROb2RlOiBOb2RlO1xuICBub2RlVHlwZTogTm9kZVR5cGUgfCBudW1iZXI7XG4gIG5vZGVWYWx1ZTogc3RyaW5nO1xuICBmaXJzdENoaWxkOiBOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50IGV4dGVuZHMgTm9kZSB7XG4gIGNyZWF0ZUVsZW1lbnQodGFnOiBzdHJpbmcpOiBFbGVtZW50O1xuICBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlOiBOYW1lc3BhY2UsIHRhZzogc3RyaW5nKTogRWxlbWVudDtcbiAgY3JlYXRlVGV4dE5vZGUodGV4dDogc3RyaW5nKTogVGV4dDtcbiAgY3JlYXRlQ29tbWVudChkYXRhOiBzdHJpbmcpOiBDb21tZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJhY3RlckRhdGEgZXh0ZW5kcyBOb2RlIHtcbiAgZGF0YTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHQgZXh0ZW5kcyBDaGFyYWN0ZXJEYXRhIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWVudCBleHRlbmRzIENoYXJhY3RlckRhdGEge31cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50IGV4dGVuZHMgTm9kZSB7XG4gIG5hbWVzcGFjZVVSSTogc3RyaW5nO1xuICB0YWdOYW1lOiBzdHJpbmc7XG4gIGZpcnN0Q2hpbGQ6IE5vZGU7XG4gIGxhc3RDaGlsZDogTm9kZTtcbiAgcmVtb3ZlQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIHJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpO1xuICBzZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJOiBzdHJpbmcsIHF1YWxpZmllZE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIGluc2VydEJlZm9yZShub2RlOiBOb2RlLCByZWZlcmVuY2U6IE5vZGUpOiB2b2lkO1xuICByZW1vdmVDaGlsZChub2RlOiBOb2RlKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTVkdFbGVtZW50IGV4dGVuZHMgRWxlbWVudCB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhUTUxFbGVtZW50IGV4dGVuZHMgRWxlbWVudCB7fVxuIl19 enifed('glimmer-runtime/lib/dom/props', ['exports'], function (exports) { /* * @method normalizeProperty * @param element {HTMLElement} * @param slotName {String} * @returns {Object} { name, type } */ - 'use strict'; + /* + * @method normalizeProperty + * @param element {HTMLElement} + * @param slotName {String} + * @returns {Object} { name, type } + */'use strict'; exports.normalizeProperty = normalizeProperty; exports.normalizePropertyValue = normalizePropertyValue; function normalizeProperty(element, slotName) { @@ -19343,12 +20007,12 @@ function preferAttr(tagName, propName) { var tag = ATTR_OVERRIDES[tagName.toUpperCase()]; return tag && tag[propName.toLowerCase()] || false; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQU1BLGFBQUEsaUJBQUEsQ0FBa0MsT0FBTyxFQUFFLFFBQVEsRUFBQTtBQUNqRCxZQUFJLElBQUksWUFBQTtZQUFFLFVBQVUsWUFBQSxDQUFDO0FBRXJCLFlBQUksUUFBUSxJQUFJLE9BQU8sRUFBRTtBQUN2QixzQkFBVSxHQUFHLFFBQVEsQ0FBQztBQUN0QixnQkFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmLE1BQU07QUFDTCxnQkFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ25DLGdCQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7QUFDcEIsb0JBQUksR0FBRyxNQUFNLENBQUM7QUFDZCwwQkFBVSxHQUFHLEtBQUssQ0FBQzthQUNwQixNQUFNO0FBQ0wsb0JBQUksR0FBRyxNQUFNLENBQUM7QUFDZCwwQkFBVSxHQUFHLFFBQVEsQ0FBQzthQUN2QjtTQUNGO0FBRUQsWUFBSSxJQUFJLEtBQUssTUFBTSxLQUNkLFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLElBQ3BDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBLEFBQUMsRUFBRTtBQUM3QyxnQkFBSSxHQUFHLE1BQU0sQ0FBQztTQUNmO0FBRUQsZUFBTyxFQUFFLFVBQVUsRUFBVixVQUFVLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDO0tBQzdCOztBQUVELGFBQUEsc0JBQUEsQ0FBdUMsS0FBSyxFQUFBO0FBQzFDLFlBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtBQUNoQixtQkFBTyxJQUFJLENBQUM7U0FDYjtBQUVELGVBQU8sS0FBSyxDQUFDO0tBQ2Q7Ozs7O0FBS0QsUUFBTSxjQUFjLEdBQUc7OztBQUlyQixjQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFFbEMsYUFBSyxFQUFFOzs7QUFHTCxnQkFBSSxFQUFFLElBQUk7QUFDVixnQkFBSSxFQUFFLElBQUk7Ozs7QUFJVix1QkFBVyxFQUFFLElBQUk7U0FDbEI7OztBQUlELGNBQU0sRUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixnQkFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixhQUFLLEVBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGdCQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGNBQU0sRUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtLQUN6QixDQUFDO0FBRUYsYUFBQSxVQUFBLENBQW9CLE9BQU8sRUFBRSxRQUFRLEVBQUE7QUFDbkMsWUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELGVBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7S0FDcEQiLCJmaWxlIjoicHJvcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQG1ldGhvZCBub3JtYWxpemVQcm9wZXJ0eVxuICogQHBhcmFtIGVsZW1lbnQge0hUTUxFbGVtZW50fVxuICogQHBhcmFtIHNsb3ROYW1lIHtTdHJpbmd9XG4gKiBAcmV0dXJucyB7T2JqZWN0fSB7IG5hbWUsIHR5cGUgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUHJvcGVydHkoZWxlbWVudCwgc2xvdE5hbWUpIHtcbiAgbGV0IHR5cGUsIG5vcm1hbGl6ZWQ7XG5cbiAgaWYgKHNsb3ROYW1lIGluIGVsZW1lbnQpIHtcbiAgICBub3JtYWxpemVkID0gc2xvdE5hbWU7XG4gICAgdHlwZSA9ICdwcm9wJztcbiAgfSBlbHNlIHtcbiAgICBsZXQgbG93ZXIgPSBzbG90TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsb3dlciBpbiBlbGVtZW50KSB7XG4gICAgICB0eXBlID0gJ3Byb3AnO1xuICAgICAgbm9ybWFsaXplZCA9IGxvd2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlID0gJ2F0dHInO1xuICAgICAgbm9ybWFsaXplZCA9IHNsb3ROYW1lO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09PSAncHJvcCcgJiZcbiAgICAgIChub3JtYWxpemVkLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZScgfHxcbiAgICAgICBwcmVmZXJBdHRyKGVsZW1lbnQudGFnTmFtZSwgbm9ybWFsaXplZCkpKSB7XG4gICAgdHlwZSA9ICdhdHRyJztcbiAgfVxuXG4gIHJldHVybiB7IG5vcm1hbGl6ZWQsIHR5cGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BlcnR5VmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBwcm9wZXJ0aWVzIHRoYXQgTVVTVCBiZSBzZXQgYXMgYXR0cmlidXRlcywgZHVlIHRvOlxuLy8gKiBicm93c2VyIGJ1Z1xuLy8gKiBzdHJhbmdlIHNwZWMgb3V0bGllclxuY29uc3QgQVRUUl9PVkVSUklERVMgPSB7XG5cbiAgLy8gcGhhbnRvbWpzIDwgMi4wIGxldHMgeW91IHNldCBpdCBhcyBhIHByb3AgYnV0IHdvbid0IHJlZmxlY3QgaXRcbiAgLy8gYmFjayB0byB0aGUgYXR0cmlidXRlLiBidXR0b24uZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09IG51bGxcbiAgQlVUVE9OOiB7IHR5cGU6IHRydWUsIGZvcm06IHRydWUgfSxcblxuICBJTlBVVDoge1xuICAgIC8vIFNvbWUgdmVyc2lvbiBvZiBJRSAobGlrZSBJRTkpIGFjdHVhbGx5IHRocm93IGFuIGV4Y2VwdGlvblxuICAgIC8vIGlmIHlvdSBzZXQgaW5wdXQudHlwZSA9ICdzb21ldGhpbmctdW5rbm93bidcbiAgICB0eXBlOiB0cnVlLFxuICAgIGZvcm06IHRydWUsXG4gICAgLy8gQ2hyb21lIDQ2LjAuMjQ2NC4wOiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IGZhbHNlXG4gICAgLy8gU2FmYXJpIDguMC43OiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IGZhbHNlXG4gICAgLy8gTW9iaWxlIFNhZmFyaSAoaU9TIDguNCBzaW11bGF0b3IpOiAnYXV0b2NvcnJlY3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykgPT09IHRydWVcbiAgICBhdXRvY29ycmVjdDogdHJ1ZVxuICB9LFxuXG4gIC8vIGVsZW1lbnQuZm9ybSBpcyBhY3R1YWxseSBhIGxlZ2l0aW1hdGUgcmVhZE9ubHkgcHJvcGVydHksIHRoYXQgaXMgdG8gYmVcbiAgLy8gbXV0YXRlZCwgYnV0IG11c3QgYmUgbXV0YXRlZCBieSBzZXRBdHRyaWJ1dGUuLi5cbiAgU0VMRUNUOiAgIHsgZm9ybTogdHJ1ZSB9LFxuICBPUFRJT046ICAgeyBmb3JtOiB0cnVlIH0sXG4gIFRFWFRBUkVBOiB7IGZvcm06IHRydWUgfSxcbiAgTEFCRUw6ICAgIHsgZm9ybTogdHJ1ZSB9LFxuICBGSUVMRFNFVDogeyBmb3JtOiB0cnVlIH0sXG4gIExFR0VORDogICB7IGZvcm06IHRydWUgfSxcbiAgT0JKRUNUOiAgIHsgZm9ybTogdHJ1ZSB9XG59O1xuXG5mdW5jdGlvbiBwcmVmZXJBdHRyKHRhZ05hbWUsIHByb3BOYW1lKSB7XG4gIGxldCB0YWcgPSBBVFRSX09WRVJSSURFU1t0YWdOYW1lLnRvVXBwZXJDYXNlKCldO1xuICByZXR1cm4gdGFnICYmIHRhZ1twcm9wTmFtZS50b0xvd2VyQ2FzZSgpXSB8fCBmYWxzZTtcbn1cbiJdfQ== -enifed('glimmer-runtime/lib/dom/sanitized-values', ['exports', 'glimmer-runtime/lib/upsert'], function (exports, _glimmerRuntimeLibUpsert) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTU0sYUFBQSxpQkFBQSxDQUE0QixPQUFPLEVBQUUsUUFBUSxFQUFBO0FBQ2pELFlBQUksSUFBSSxZQUFBO1lBQUUsVUFBVSxZQUFBLENBQUM7QUFFckIsWUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO0FBQ3ZCLHNCQUFVLEdBQUcsUUFBUSxDQUFDO0FBQ3RCLGdCQUFJLEdBQUcsTUFBTSxDQUFDO1NBQ2YsTUFBTTtBQUNMLGdCQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkMsZ0JBQUksS0FBSyxJQUFJLE9BQU8sRUFBRTtBQUNwQixvQkFBSSxHQUFHLE1BQU0sQ0FBQztBQUNkLDBCQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ3BCLE1BQU07QUFDTCxvQkFBSSxHQUFHLE1BQU0sQ0FBQztBQUNkLDBCQUFVLEdBQUcsUUFBUSxDQUFDO2FBQ3ZCO1NBQ0Y7QUFFRCxZQUFJLElBQUksS0FBSyxNQUFNLEtBQ2QsVUFBVSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sSUFDcEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUEsQUFBQyxFQUFFO0FBQzdDLGdCQUFJLEdBQUcsTUFBTSxDQUFDO1NBQ2Y7QUFFRCxlQUFPLEVBQUUsVUFBVSxFQUFWLFVBQVUsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLENBQUM7S0FDN0I7O0FBRUssYUFBQSxzQkFBQSxDQUFpQyxLQUFLLEVBQUE7QUFDMUMsWUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ2hCLG1CQUFPLElBQUksQ0FBQztTQUNiO0FBRUQsZUFBTyxLQUFLLENBQUM7S0FDZDs7Ozs7QUFLRCxRQUFNLGNBQWMsR0FBRzs7O0FBSXJCLGNBQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUVsQyxhQUFLLEVBQUU7OztBQUdMLGdCQUFJLEVBQUUsSUFBSTtBQUNWLGdCQUFJLEVBQUUsSUFBSTs7OztBQUlWLHVCQUFXLEVBQUUsSUFBSTtTQUNsQjs7O0FBSUQsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixjQUFNLEVBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGdCQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3hCLGFBQUssRUFBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsZ0JBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDeEIsY0FBTSxFQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QixjQUFNLEVBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0tBQ3pCLENBQUM7QUFFRixhQUFBLFVBQUEsQ0FBb0IsT0FBTyxFQUFFLFFBQVEsRUFBQTtBQUNuQyxZQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEQsZUFBTyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQztLQUNwRCIsImZpbGUiOiJwcm9wcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAbWV0aG9kIG5vcm1hbGl6ZVByb3BlcnR5XG4gKiBAcGFyYW0gZWxlbWVudCB7SFRNTEVsZW1lbnR9XG4gKiBAcGFyYW0gc2xvdE5hbWUge1N0cmluZ31cbiAqIEByZXR1cm5zIHtPYmplY3R9IHsgbmFtZSwgdHlwZSB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQcm9wZXJ0eShlbGVtZW50LCBzbG90TmFtZSkge1xuICBsZXQgdHlwZSwgbm9ybWFsaXplZDtcblxuICBpZiAoc2xvdE5hbWUgaW4gZWxlbWVudCkge1xuICAgIG5vcm1hbGl6ZWQgPSBzbG90TmFtZTtcbiAgICB0eXBlID0gJ3Byb3AnO1xuICB9IGVsc2Uge1xuICAgIGxldCBsb3dlciA9IHNsb3ROYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyIGluIGVsZW1lbnQpIHtcbiAgICAgIHR5cGUgPSAncHJvcCc7XG4gICAgICBub3JtYWxpemVkID0gbG93ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSAnYXR0cic7XG4gICAgICBub3JtYWxpemVkID0gc2xvdE5hbWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdwcm9wJyAmJlxuICAgICAgKG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKSA9PT0gJ3N0eWxlJyB8fFxuICAgICAgIHByZWZlckF0dHIoZWxlbWVudC50YWdOYW1lLCBub3JtYWxpemVkKSkpIHtcbiAgICB0eXBlID0gJ2F0dHInO1xuICB9XG5cbiAgcmV0dXJuIHsgbm9ybWFsaXplZCwgdHlwZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUHJvcGVydHlWYWx1ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIHByb3BlcnRpZXMgdGhhdCBNVVNUIGJlIHNldCBhcyBhdHRyaWJ1dGVzLCBkdWUgdG86XG4vLyAqIGJyb3dzZXIgYnVnXG4vLyAqIHN0cmFuZ2Ugc3BlYyBvdXRsaWVyXG5jb25zdCBBVFRSX09WRVJSSURFUyA9IHtcblxuICAvLyBwaGFudG9tanMgPCAyLjAgbGV0cyB5b3Ugc2V0IGl0IGFzIGEgcHJvcCBidXQgd29uJ3QgcmVmbGVjdCBpdFxuICAvLyBiYWNrIHRvIHRoZSBhdHRyaWJ1dGUuIGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gbnVsbFxuICBCVVRUT046IHsgdHlwZTogdHJ1ZSwgZm9ybTogdHJ1ZSB9LFxuXG4gIElOUFVUOiB7XG4gICAgLy8gU29tZSB2ZXJzaW9uIG9mIElFIChsaWtlIElFOSkgYWN0dWFsbHkgdGhyb3cgYW4gZXhjZXB0aW9uXG4gICAgLy8gaWYgeW91IHNldCBpbnB1dC50eXBlID0gJ3NvbWV0aGluZy11bmtub3duJ1xuICAgIHR5cGU6IHRydWUsXG4gICAgZm9ybTogdHJ1ZSxcbiAgICAvLyBDaHJvbWUgNDYuMC4yNDY0LjA6ICdhdXRvY29ycmVjdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSA9PT0gZmFsc2VcbiAgICAvLyBTYWZhcmkgOC4wLjc6ICdhdXRvY29ycmVjdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSA9PT0gZmFsc2VcbiAgICAvLyBNb2JpbGUgU2FmYXJpIChpT1MgOC40IHNpbXVsYXRvcik6ICdhdXRvY29ycmVjdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSA9PT0gdHJ1ZVxuICAgIGF1dG9jb3JyZWN0OiB0cnVlXG4gIH0sXG5cbiAgLy8gZWxlbWVudC5mb3JtIGlzIGFjdHVhbGx5IGEgbGVnaXRpbWF0ZSByZWFkT25seSBwcm9wZXJ0eSwgdGhhdCBpcyB0byBiZVxuICAvLyBtdXRhdGVkLCBidXQgbXVzdCBiZSBtdXRhdGVkIGJ5IHNldEF0dHJpYnV0ZS4uLlxuICBTRUxFQ1Q6ICAgeyBmb3JtOiB0cnVlIH0sXG4gIE9QVElPTjogICB7IGZvcm06IHRydWUgfSxcbiAgVEVYVEFSRUE6IHsgZm9ybTogdHJ1ZSB9LFxuICBMQUJFTDogICAgeyBmb3JtOiB0cnVlIH0sXG4gIEZJRUxEU0VUOiB7IGZvcm06IHRydWUgfSxcbiAgTEVHRU5EOiAgIHsgZm9ybTogdHJ1ZSB9LFxuICBPQkpFQ1Q6ICAgeyBmb3JtOiB0cnVlIH1cbn07XG5cbmZ1bmN0aW9uIHByZWZlckF0dHIodGFnTmFtZSwgcHJvcE5hbWUpIHtcbiAgbGV0IHRhZyA9IEFUVFJfT1ZFUlJJREVTW3RhZ05hbWUudG9VcHBlckNhc2UoKV07XG4gIHJldHVybiB0YWcgJiYgdGFnW3Byb3BOYW1lLnRvTG93ZXJDYXNlKCldIHx8IGZhbHNlO1xufVxuIl19 +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; @@ -19370,52 +20034,52 @@ function requiresSanitization(tagName, attribute) { return checkURI(tagName, attribute) || checkDataURI(tagName, attribute); } - function sanitizeAttributeValue(dom, element, attribute, value) { + function sanitizeAttributeValue(env, element, attribute, value) { var tagName = undefined; 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 = dom.protocolForURL(value); + var protocol = env.protocolForURL(str); if (has(badProtocols, protocol)) { - return 'unsafe:' + value; + return 'unsafe:' + str; } } if (checkDataURI(tagName, attribute)) { - return 'unsafe:' + value; + return 'unsafe:' + str; } - return value; + return str; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Nhbml0aXplZC12YWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsUUFBTSxZQUFZLEdBQUcsQ0FDbkIsYUFBYSxFQUNiLFdBQVcsQ0FDWixDQUFDO0FBRUYsUUFBTSxPQUFPLEdBQUcsQ0FDZCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztBQUVGLFFBQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBTyxDQUNSLENBQUM7QUFFSyxRQUFNLGFBQWEsR0FBRyxDQUMzQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixRQUFRLENBQ1QsQ0FBQzs7QUFFRixRQUFNLHVCQUF1QixHQUFHLENBQzlCLEtBQUssQ0FDTixDQUFDO0FBRUYsYUFBQSxHQUFBLENBQWEsS0FBb0IsRUFBRSxJQUFZLEVBQUE7QUFDN0MsZUFBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ25DO0FBRUQsYUFBQSxRQUFBLENBQWtCLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ2xELGVBQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUEsSUFBSyxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3JGO0FBRUQsYUFBQSxZQUFBLENBQXNCLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ3RELGVBQU8sR0FBRyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuRjs7QUFFRCxhQUFBLG9CQUFBLENBQXFDLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ3JFLGVBQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3pFOztBQUVELGFBQUEsc0JBQUEsQ0FBdUMsR0FBYyxFQUFFLE9BQWdCLEVBQUUsU0FBaUIsRUFBRSxLQUFhLEVBQUE7QUFDdkcsWUFBSSxPQUFPLFlBQUEsQ0FBQztBQUVaLFlBQUkseUJBcERHLFlBQVksQ0FvREYsS0FBSyxDQUFDLEVBQUU7QUFDdkIsbUJBQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3ZCO0FBRUQsWUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNaLG1CQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ2hCLE1BQU07QUFDTCxtQkFBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDekM7QUFFRCxZQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDaEMsZ0JBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBc0IsQ0FBQyxDQUFDO0FBQzFELGdCQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUU7QUFDL0IsbUNBQWlCLEtBQUssQ0FBRzthQUMxQjtTQUNGO0FBRUQsWUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQ3BDLCtCQUFpQixLQUFLLENBQUc7U0FDMUI7QUFFRCxlQUFPLEtBQUssQ0FBQztLQUNkIiwiZmlsZSI6InNhbml0aXplZC12YWx1ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGSVhNRSwgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IGlzU2FmZVN0cmluZyB9IGZyb20gJy4uL3Vwc2VydCc7XG5pbXBvcnQgeyBET01IZWxwZXIgfSBmcm9tICcuL2hlbHBlcic7XG5cbmNvbnN0IGJhZFByb3RvY29scyA9IFtcbiAgJ2phdmFzY3JpcHQ6JyxcbiAgJ3Zic2NyaXB0Oidcbl07XG5cbmNvbnN0IGJhZFRhZ3MgPSBbXG4gICdBJyxcbiAgJ0JPRFknLFxuICAnTElOSycsXG4gICdJTUcnLFxuICAnSUZSQU1FJyxcbiAgJ0JBU0UnLFxuICAnRk9STSdcbl07XG5cbmNvbnN0IGJhZFRhZ3NGb3JEYXRhVVJJID0gW1xuICAnRU1CRUQnXG5dO1xuXG5leHBvcnQgY29uc3QgYmFkQXR0cmlidXRlcyA9IFtcbiAgJ2hyZWYnLFxuICAnc3JjJyxcbiAgJ2JhY2tncm91bmQnLFxuICAnYWN0aW9uJ1xuXTtcblxuY29uc3QgYmFkQXR0cmlidXRlc0ZvckRhdGFVUkkgPSBbXG4gICdzcmMnXG5dO1xuXG5mdW5jdGlvbiBoYXMoYXJyYXk6IEFycmF5PHN0cmluZz4sIGl0ZW06IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXJyYXkuaW5kZXhPZihpdGVtKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIGNoZWNrVVJJKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICh0YWdOYW1lID09PSBudWxsIHx8IGhhcyhiYWRUYWdzLCB0YWdOYW1lKSkgJiYgaGFzKGJhZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGF0YVVSSSh0YWdOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBoYXMoYmFkVGFnc0ZvckRhdGFVUkksIHRhZ05hbWUpICYmIGhhcyhiYWRBdHRyaWJ1dGVzRm9yRGF0YVVSSSwgYXR0cmlidXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSkgfHwgY2hlY2tEYXRhVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlKGRvbTogRE9NSGVscGVyLCBlbGVtZW50OiBFbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSk6IE9wYXF1ZSB7XG4gIGxldCB0YWdOYW1lO1xuXG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG5cbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgdGFnTmFtZSA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgaWYgKGNoZWNrVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSkpIHtcbiAgICBsZXQgcHJvdG9jb2wgPSBkb20ucHJvdG9jb2xGb3JVUkwodmFsdWUgYXMgRklYTUU8c3RyaW5nPik7XG4gICAgaWYgKGhhcyhiYWRQcm90b2NvbHMsIHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuIGB1bnNhZmU6JHt2YWx1ZX1gO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0RhdGFVUkkodGFnTmFtZSwgYXR0cmlidXRlKSkge1xuICAgIHJldHVybiBgdW5zYWZlOiR7dmFsdWV9YDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZG9tL3Nhbml0aXplZC12YWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUEsUUFBTSxZQUFZLEdBQUcsQ0FDbkIsYUFBYSxFQUNiLFdBQVcsQ0FDWixDQUFDO0FBRUYsUUFBTSxPQUFPLEdBQUcsQ0FDZCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztBQUVGLFFBQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBTyxDQUNSLENBQUM7QUFFSyxRQUFNLGFBQWEsR0FBRyxDQUMzQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixRQUFRLENBQ1QsQ0FBQzs7QUFFRixRQUFNLHVCQUF1QixHQUFHLENBQzlCLEtBQUssQ0FDTixDQUFDO0FBRUYsYUFBQSxHQUFBLENBQWEsS0FBb0IsRUFBRSxJQUFZLEVBQUE7QUFDN0MsZUFBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ25DO0FBRUQsYUFBQSxRQUFBLENBQWtCLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ2xELGVBQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUEsSUFBSyxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3JGO0FBRUQsYUFBQSxZQUFBLENBQXNCLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ3RELGVBQU8sR0FBRyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuRjs7QUFFSyxhQUFBLG9CQUFBLENBQStCLE9BQWUsRUFBRSxTQUFpQixFQUFBO0FBQ3JFLGVBQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3pFOztBQUVLLGFBQUEsc0JBQUEsQ0FBaUMsR0FBZ0IsRUFBRSxPQUF1QixFQUFFLFNBQWlCLEVBQUUsS0FBYSxFQUFBO0FBQ2hILFlBQUksT0FBTyxZQUFBLENBQUM7QUFFWixZQUFJLHlCQXJERyxZQUFZLENBcURGLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLG1CQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2QjtBQUVELFlBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixtQkFBTyxHQUFHLElBQUksQ0FBQztTQUNoQixNQUFNO0FBQ0wsbUJBQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3pDO0FBRUQsWUFBSSxHQUFHLEdBQUcseUNBaEVILGtCQUFrQixDQWdFSSxLQUFLLENBQUMsQ0FBQztBQUVwQyxZQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDaEMsZ0JBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkMsZ0JBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRTtBQUMvQixtQ0FBaUIsR0FBRyxDQUFHO2FBQ3hCO1NBQ0Y7QUFFRCxZQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDcEMsK0JBQWlCLEdBQUcsQ0FBRztTQUN4QjtBQUVELGVBQU8sR0FBRyxDQUFDO0tBQ1oiLCJmaWxlIjoic2FuaXRpemVkLXZhbHVlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBub3JtYWxpemVUZXh0VmFsdWUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuaW1wb3J0IHsgaXNTYWZlU3RyaW5nIH0gZnJvbSAnLi4vdXBzZXJ0JztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IGJhZFByb3RvY29scyA9IFtcbiAgJ2phdmFzY3JpcHQ6JyxcbiAgJ3Zic2NyaXB0Oidcbl07XG5cbmNvbnN0IGJhZFRhZ3MgPSBbXG4gICdBJyxcbiAgJ0JPRFknLFxuICAnTElOSycsXG4gICdJTUcnLFxuICAnSUZSQU1FJyxcbiAgJ0JBU0UnLFxuICAnRk9STSdcbl07XG5cbmNvbnN0IGJhZFRhZ3NGb3JEYXRhVVJJID0gW1xuICAnRU1CRUQnXG5dO1xuXG5leHBvcnQgY29uc3QgYmFkQXR0cmlidXRlcyA9IFtcbiAgJ2hyZWYnLFxuICAnc3JjJyxcbiAgJ2JhY2tncm91bmQnLFxuICAnYWN0aW9uJ1xuXTtcblxuY29uc3QgYmFkQXR0cmlidXRlc0ZvckRhdGFVUkkgPSBbXG4gICdzcmMnXG5dO1xuXG5mdW5jdGlvbiBoYXMoYXJyYXk6IEFycmF5PHN0cmluZz4sIGl0ZW06IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXJyYXkuaW5kZXhPZihpdGVtKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIGNoZWNrVVJJKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICh0YWdOYW1lID09PSBudWxsIHx8IGhhcyhiYWRUYWdzLCB0YWdOYW1lKSkgJiYgaGFzKGJhZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGF0YVVSSSh0YWdOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBoYXMoYmFkVGFnc0ZvckRhdGFVUkksIHRhZ05hbWUpICYmIGhhcyhiYWRBdHRyaWJ1dGVzRm9yRGF0YVVSSSwgYXR0cmlidXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzU2FuaXRpemF0aW9uKHRhZ05hbWU6IHN0cmluZywgYXR0cmlidXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNoZWNrVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSkgfHwgY2hlY2tEYXRhVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlKGVudjogRW52aXJvbm1lbnQsIGVsZW1lbnQ6IFNpbXBsZS5FbGVtZW50LCBhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGxldCB0YWdOYW1lO1xuXG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG5cbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgdGFnTmFtZSA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgbGV0IHN0ciA9IG5vcm1hbGl6ZVRleHRWYWx1ZSh2YWx1ZSk7XG5cbiAgaWYgKGNoZWNrVVJJKHRhZ05hbWUsIGF0dHJpYnV0ZSkpIHtcbiAgICBsZXQgcHJvdG9jb2wgPSBlbnYucHJvdG9jb2xGb3JVUkwoc3RyKTtcbiAgICBpZiAoaGFzKGJhZFByb3RvY29scywgcHJvdG9jb2wpKSB7XG4gICAgICByZXR1cm4gYHVuc2FmZToke3N0cn1gO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0RhdGFVUkkodGFnTmFtZSwgYXR0cmlidXRlKSkge1xuICAgIHJldHVybiBgdW5zYWZlOiR7c3RyfWA7XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuIl19 enifed('glimmer-runtime/lib/environment', ['exports', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/dom/change-lists', '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', 'glimmer-runtime/lib/syntax/builtins/partial'], function (exports, _glimmerRuntimeLibReferences, _glimmerRuntimeLibDomChangeLists, _glimmerUtil, _glimmerRuntimeLibSyntaxCore, _glimmerRuntimeLibSyntaxBuiltinsIf, _glimmerRuntimeLibSyntaxBuiltinsUnless, _glimmerRuntimeLibSyntaxBuiltinsWith, _glimmerRuntimeLibSyntaxBuiltinsEach, _glimmerRuntimeLibSyntaxBuiltinsPartial) { 'use strict'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var Scope = (function () { function Scope(references) { - _classCallCheck(this, Scope); + var callerScope = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; 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.NULL_REFERENCE; + refs[i] = _glimmerRuntimeLibReferences.UNDEFINED_REFERENCE; } return new Scope(refs).init({ self: self }); }; Scope.prototype.init = function init(_ref) { @@ -19452,57 +20116,67 @@ Scope.prototype.getCallerScope = function getCallerScope() { return this.callerScope; }; Scope.prototype.child = function child() { - return new Scope(this.slots.slice()); + return new Scope(this.slots.slice(), this.callerScope); }; return Scope; })(); exports.Scope = Scope; var Environment = (function () { - function Environment(dom) { - _classCallCheck(this, Environment); + 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.dom = dom; + 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.dom; + return this.updateOperations; }; Environment.prototype.getIdentity = function getIdentity(object) { - return _glimmerUtil.intern(_glimmerUtil.ensureGuid(object) + ''); + return _glimmerUtil.ensureGuid(object) + ''; }; - Environment.prototype.statement = function statement(_statement, blockMeta) { - return this.refineStatement(parseStatement(_statement), blockMeta) || _statement; + Environment.prototype.statement = function statement(_statement, symbolTable) { + return this.refineStatement(parseStatement(_statement), symbolTable) || _statement; }; - Environment.prototype.refineStatement = function refineStatement(statement, blockMeta) { + Environment.prototype.refineStatement = function refineStatement(statement, symbolTable) { var isSimple = statement.isSimple; var isBlock = statement.isBlock; var isInline = statement.isInline; var key = statement.key; var args = statement.args; var templates = statement.templates; if (isSimple && isInline) { if (key === 'partial') { - return new _glimmerRuntimeLibSyntaxBuiltinsPartial.default({ args: args }); + return new _glimmerRuntimeLibSyntaxBuiltinsPartial.default({ args: args, symbolTable: symbolTable }); } } if (isSimple && isBlock) { switch (key) { case 'each': @@ -19521,10 +20195,14 @@ 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); @@ -19533,35 +20211,60 @@ 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 = this.updatedComponents.length - 1; i >= 0; i--) { + 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.hasKeyword = function hasKeyword(string) { - return false; - }; - - Environment.prototype.attributeFor = function attributeFor(element, attr, reference, isTrusting, namespace) { + Environment.prototype.attributeFor = function attributeFor(element, attr, isTrusting, namespace) { return _glimmerRuntimeLibDomChangeLists.defaultChangeLists(element, attr, isTrusting, namespace); }; return Environment; })(); @@ -19581,15 +20284,15 @@ args = block.args; path = block.path; } else if (append && (appendType === 'unknown' || appendType === 'get')) { var appendValue = append.value; args = _glimmerRuntimeLibSyntaxCore.Args.empty(); - path = appendValue.ref.path(); + path = appendValue.ref.parts; } else if (append && append.value.type === 'helper') { var helper = append.value; args = helper.args; - path = helper.ref.path(); + path = helper.ref.parts; } else if (modifier) { path = modifier.path; args = modifier.args; } var key = undefined, @@ -19610,11 +20313,48 @@ isModifier: !!modifier, templates: block && block.templates }; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUE4REEsS0FBQTtBQWVFLGlCQWZGLEtBQUEsQ0FlYyxVQUF1QixFQUFBO2tDQWZyQyxLQUFBOztBQWFVLGdCQUFBLENBQUEsV0FBVyxHQUFVLElBQUksQ0FBQztBQUdoQyxnQkFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7U0FDekI7O0FBakJILGFBQUEsQ0FDUyxJQUFJLEdBQUEsY0FBQyxJQUEyQixFQUFVO2dCQUFSLElBQUkseURBQUcsQ0FBQzs7QUFDL0MsZ0JBQUksSUFBSSxHQUE0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsb0JBQUksQ0FBQyxDQUFDLENBQUMsZ0NBL0RKLGNBQWMsQUErRE8sQ0FBQzthQUMxQjtBQUVELG1CQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDOztBQVRILGFBQUEsV0FtQkUsSUFBSSxHQUFBLGNBQUMsSUFBeUMsRUFBQTtnQkFBdkMsSUFBSSxHQUFOLElBQXlDLENBQXZDLElBQUk7O0FBQ1QsZ0JBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLG1CQUFPLElBQUksQ0FBQztTQUNiOztBQXRCSCxhQUFBLFdBd0JFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUEwQixDQUFDO1NBQy9DOztBQTFCSCxhQUFBLFdBNEJFLFNBQVMsR0FBQSxtQkFBQyxNQUFjLEVBQUE7QUFDdEIsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENB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QUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMvQixNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUNuRCxnQkFBSSxNQUFNLEdBQWtCLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDekMsZ0JBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ25CLGdCQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQixNQUFNLElBQUksUUFBUSxFQUFFO0FBQ25CLGdCQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztBQUNyQixnQkFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDdEI7QUFFRCxZQUFJLEdBQW1CLFlBQUE7WUFBRSxRQUFpQixZQUFBLENBQUM7QUFFM0MsWUFBSSxJQUFJLEVBQUU7QUFDUixvQkFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdCLGVBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZjtBQUVELGVBQU87QUFDTCxvQkFBUSxFQUFSLFFBQVE7QUFDUixnQkFBSSxFQUFKLElBQUk7QUFDSixlQUFHLEVBQUgsR0FBRztBQUNILGdCQUFJLEVBQUosSUFBSTtBQUNKLHNCQUFVLEVBQVYsVUFBVTtBQUNWLG9CQUFRLEVBQUUsU0FBUztBQUNuQixvQkFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUs7QUFDaEIsc0JBQVUsRUFBRSxDQUFDLENBQUMsUUFBUTtBQUN0QixxQkFBUyxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsU0FBUztTQUNwQyxDQUFDO0tBQ0wiLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4IH0gZnJvbSAnLi9zeW50YXgnO1xuXG5pbXBvcnQgeyBET01IZWxwZXIgfSBmcm9tICcuL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBPcGFxdWVJdGVyYWJsZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE5VTExfUkVGRVJFTkNFLCBDb25kaXRpb25hbFJlZmVyZW5jZSB9IGZyb20gJy4vcmVmZXJlbmNlcyc7XG5pbXBvcnQge1xuICBkZWZhdWx0Q2hhbmdlTGlzdHMsXG4gIElDaGFuZ2VMaXN0XG59IGZyb20gJy4vZG9tL2NoYW5nZS1saXN0cyc7XG5cbmltcG9ydCB7XG4gIFBhcnRpYWxEZWZpbml0aW9uXG59IGZyb20gJy4vcGFydGlhbCc7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50TWFuYWdlcixcbiAgQ29tcG9uZW50RGVmaW5pdGlvblxufSBmcm9tICcuL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgTW9kaWZpZXJNYW5hZ2VyXG59IGZyb20gJy4vbW9kaWZpZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIFBhdGhSZWZlcmVuY2Vcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuXG5pbXBvcnQge1xuICBEZXN0cm95YWJsZSxcbiAgRGljdCxcbiAgT3BhcXVlLFxuICBIYXNHdWlkLFxuICBJbnRlcm5lZFN0cmluZyxcbiAgaW50ZXJuLFxuICBlbnN1cmVHdWlkXG59IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7XG4gIEJsb2NrTWV0YVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5cbmltcG9ydCB7IElubGluZUJsb2NrIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi9zeW50YXgvY29yZSc7XG5cbmltcG9ydCBJZlN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy9pZic7XG5pbXBvcnQgVW5sZXNzU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL3VubGVzcyc7XG5pbXBvcnQgV2l0aFN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy93aXRoJztcbmltcG9ydCBFYWNoU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL2VhY2gnO1xuaW1wb3J0IFBhcnRpYWxTeW50YXggZnJvbSAnLi9zeW50YXgvYnVpbHRpbnMvcGFydGlhbCc7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuXG50eXBlIFNjb3BlU2xvdCA9IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IElubGluZUJsb2NrO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNTY29wZSB7XG4gIGNoaWxkKCk6IER5bmFtaWNTY29wZTtcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgc3RhdGljIHJvb3Qoc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBzaXplID0gMCkge1xuICAgIGxldCByZWZzOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT5bXSA9IG5ldyBBcnJheShzaXplICsgMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBzaXplOyBpKyspIHtcbiAgICAgIHJlZnNbaV0gPSBOVUxMX1JFRkVSRU5DRTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNjb3BlKHJlZnMpLmluaXQoeyBzZWxmIH0pO1xuICB9XG5cbiAgLy8gdGhlIDB0aCBzbG90IGlzIGBzZWxmYFxuICBwcml2YXRlIHNsb3RzOiBTY29wZVNsb3RbXTtcbiAgcHJpdmF0ZSBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlZmVyZW5jZXM6IFNjb3BlU2xvdFtdKSB7XG4gICAgdGhpcy5zbG90cyA9IHJlZmVyZW5jZXM7XG4gIH1cblxuICBpbml0KHsgc2VsZiB9OiB7IHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB9KTogdGhpcyB7XG4gICAgdGhpcy5zbG90c1swXSA9IHNlbGY7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2xvdHNbMF0gYXMgUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICB9XG5cbiAgZ2V0U3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5zbG90c1tzeW1ib2xdIGFzIFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgfVxuXG4gIGdldEJsb2NrKHN5bWJvbDogbnVtYmVyKTogSW5saW5lQmxvY2sge1xuICAgIHJldHVybiB0aGlzLnNsb3RzW3N5bWJvbF0gYXMgSW5saW5lQmxvY2s7XG4gIH1cblxuICBiaW5kU3ltYm9sKHN5bWJvbDogbnVtYmVyLCB2YWx1ZTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gICAgdGhpcy5zbG90c1tzeW1ib2xdID0gdmFsdWU7XG4gIH1cblxuICBiaW5kQmxvY2soc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBJbmxpbmVCbG9jaykge1xuICAgIHRoaXMuc2xvdHNbc3ltYm9sXSA9IHZhbHVlO1xuICB9XG5cbiAgYmluZENhbGxlclNjb3BlKHNjb3BlOiBTY29wZSkge1xuICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBzY29wZTtcbiAgfVxuXG4gIGdldENhbGxlclNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIGNoaWxkKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFNjb3BlKHRoaXMuc2xvdHMuc2xpY2UoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgcHJvdGVjdGVkIGRvbTogRE9NSGVscGVyO1xuICBwcml2YXRlIGNyZWF0ZWRDb21wb25lbnRzOiBDb21wb25lbnRbXSA9IG51bGw7XG4gIHByaXZhdGUgY3JlYXRlZE1hbmFnZXJzOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD5bXSA9IG51bGw7XG4gIHByaXZhdGUgdXBkYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gbnVsbDtcbiAgcHJpdmF0ZSB1cGRhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gbnVsbDtcbiAgcHJpdmF0ZSBkZXN0cnVjdG9yczogRGVzdHJveWFibGVbXSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoZG9tOiBET01IZWxwZXIpIHtcbiAgICB0aGlzLmRvbSA9IGRvbTtcbiAgfVxuXG4gIHRvQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgaXRlcmFibGVGb3IocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgYXJnczogRXZhbHVhdGVkQXJncyk6IE9wYXF1ZUl0ZXJhYmxlO1xuXG4gIGdldERPTSgpOiBET01IZWxwZXIgeyByZXR1cm4gdGhpcy5kb207IH1cblxuICBnZXRJZGVudGl0eShvYmplY3Q6IEhhc0d1aWQpOiBJbnRlcm5lZFN0cmluZyB7XG4gICAgcmV0dXJuIGludGVybihlbnN1cmVHdWlkKG9iamVjdCkgKyAnJyk7XG4gIH1cblxuICBzdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIGJsb2NrTWV0YTogQmxvY2tNZXRhKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICByZXR1cm4gdGhpcy5yZWZpbmVTdGF0ZW1lbnQocGFyc2VTdGF0ZW1lbnQoc3RhdGVtZW50KSwgYmxvY2tNZXRhKSB8fCBzdGF0ZW1lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmaW5lU3RhdGVtZW50KHN0YXRlbWVudDogUGFyc2VkU3RhdGVtZW50LCBibG9ja01ldGE6IEJsb2NrTWV0YSk6IFN0YXRlbWVudFN5bnRheCB7XG4gICAgbGV0IHtcbiAgICAgIGlzU2ltcGxlLFxuICAgICAgaXNCbG9jayxcbiAgICAgIGlzSW5saW5lLFxuICAgICAga2V5LFxuICAgICAgYXJncyxcbiAgICAgIHRlbXBsYXRlc1xuICAgIH0gPSBzdGF0ZW1lbnQ7XG5cbiAgICBpZiAoaXNTaW1wbGUgJiYgaXNJbmxpbmUpIHtcbiAgICAgIGlmIChrZXkgPT09ICdwYXJ0aWFsJykge1xuICAgICAgICByZXR1cm4gbmV3IFBhcnRpYWxTeW50YXgoeyBhcmdzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1NpbXBsZSAmJiBpc0Jsb2NrKSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdlYWNoJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEVhY2hTeW50YXgoeyBhcmdzLCB0ZW1wbGF0ZXMgfSk7XG4gICAgICAgIGNhc2UgJ2lmJzpcbiAgICAgICAgICByZXR1cm4gbmV3IElmU3ludGF4KHsgYXJncywgdGVtcGxhdGVzIH0pO1xuICAgICAgICBjYXNlICd3aXRoJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFdpdGhTeW50YXgoeyBhcmdzLCB0ZW1wbGF0ZXMgfSk7XG4gICAgICAgIGNhc2UgJ3VubGVzcyc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBVbmxlc3NTeW50YXgoeyBhcmdzLCB0ZW1wbGF0ZXMgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYmVnaW4oKSB7XG4gICAgdGhpcy5jcmVhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzID0gW107XG4gICAgdGhpcy51cGRhdGVkQ29tcG9uZW50cyA9IFtdO1xuICAgIHRoaXMudXBkYXRlZE1hbmFnZXJzID0gW107XG4gICAgdGhpcy5kZXN0cnVjdG9ycyA9IFtdO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQgYXMgYW55KTtcbiAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIgYXMgYW55KTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50IGFzIGFueSk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyIGFzIGFueSk7XG4gIH1cblxuICBkaWREZXN0cm95KGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5kZXN0cnVjdG9ycy5wdXNoKGQpO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmNyZWF0ZWRDb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5jcmVhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gdGhpcy5jcmVhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZENyZWF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9dGhpcy51cGRhdGVkQ29tcG9uZW50cy5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy51cGRhdGVkQ29tcG9uZW50c1tpXTtcbiAgICAgIGxldCBtYW5hZ2VyID0gdGhpcy51cGRhdGVkTWFuYWdlcnNbaV07XG4gICAgICBtYW5hZ2VyLmRpZFVwZGF0ZShjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmRlc3RydWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmRlc3RydWN0b3JzW2ldLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBoYXNLZXl3b3JkKHN0cmluZzogSW50ZXJuZWRTdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNIZWxwZXIoaGVscGVyTmFtZTogSW50ZXJuZWRTdHJpbmdbXSwgYmxvY2tNZXRhOiBCbG9ja01ldGEpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBIZWxwZXIoaGVscGVyTmFtZTogSW50ZXJuZWRTdHJpbmdbXSwgYmxvY2tNZXRhOiBCbG9ja01ldGEpOiBIZWxwZXI7XG5cbiAgYXR0cmlidXRlRm9yKGVsZW1lbnQ6IEVsZW1lbnQsIGF0dHI6IEludGVybmVkU3RyaW5nLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U/OiBJbnRlcm5lZFN0cmluZyk6IElDaGFuZ2VMaXN0IHtcbiAgICByZXR1cm4gZGVmYXVsdENoYW5nZUxpc3RzKGVsZW1lbnQsIGF0dHIsIGlzVHJ1c3RpbmcsIG5hbWVzcGFjZSk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNQYXJ0aWFsKHBhcnRpYWxOYW1lOiBJbnRlcm5lZFN0cmluZ1tdKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwUGFydGlhbChQYXJ0aWFsTmFtZTogSW50ZXJuZWRTdHJpbmdbXSk6IFBhcnRpYWxEZWZpbml0aW9uO1xuICBhYnN0cmFjdCBoYXNDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IEludGVybmVkU3RyaW5nW10pOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXRDb21wb25lbnREZWZpbml0aW9uKHRhZ05hbWU6IEludGVybmVkU3RyaW5nW10pOiBDb21wb25lbnREZWZpbml0aW9uPE9wYXF1ZT47XG5cbiAgYWJzdHJhY3QgaGFzTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBJbnRlcm5lZFN0cmluZ1tdKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBJbnRlcm5lZFN0cmluZ1tdKTogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50O1xuXG50eXBlIFBvc2l0aW9uYWxBcmd1bWVudHMgPSBPcGFxdWVbXTtcbnR5cGUgS2V5d29yZEFyZ3VtZW50cyA9IERpY3Q8T3BhcXVlPjtcblxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXIge1xuICAodm06IFB1YmxpY1ZNLCBhcmdzOiBFdmFsdWF0ZWRBcmdzKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFN0YXRlbWVudCB7XG4gIGlzU2ltcGxlOiBib29sZWFuO1xuICBwYXRoOiBJbnRlcm5lZFN0cmluZ1tdO1xuICBrZXk6IEludGVybmVkU3RyaW5nO1xuICBhcHBlbmRUeXBlOiBzdHJpbmc7XG4gIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBpc0lubGluZTogYm9vbGVhbjtcbiAgaXNCbG9jazogYm9vbGVhbjtcbiAgaXNNb2RpZmllcjogYm9vbGVhbjtcbiAgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xuICBvcmlnaW5hbDogU3RhdGVtZW50U3ludGF4O1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0YXRlbWVudChzdGF0ZW1lbnQ6IFN0YXRlbWVudFN5bnRheCk6IFBhcnNlZFN0YXRlbWVudCB7XG4gICAgbGV0IHR5cGUgPSBzdGF0ZW1lbnQudHlwZTtcbiAgICBsZXQgYmxvY2sgPSB0eXBlID09PSAnYmxvY2snID8gPFN5bnRheC5CbG9jaz5zdGF0ZW1lbnQgOiBudWxsO1xuICAgIGxldCBhcHBlbmQgPSB0eXBlID09PSAnb3B0aW1pemVkLWFwcGVuZCcgPyA8U3ludGF4Lk9wdGltaXplZEFwcGVuZD5zdGF0ZW1lbnQgOiBudWxsO1xuICAgIGxldCBtb2RpZmllciA9IHR5cGUgPT09ICdtb2RpZmllcicgPyA8U3ludGF4Lk1vZGlmaWVyPnN0YXRlbWVudCA6IG51bGw7XG4gICAgbGV0IGFwcGVuZFR5cGUgPSBhcHBlbmQgJiYgYXBwZW5kLnZhbHVlLnR5cGU7XG5cbiAgICB0eXBlIEFwcGVuZFZhbHVlID0gU3ludGF4LlVua25vd24gfCBTeW50YXguR2V0O1xuICAgIGxldCBhcmdzOiBTeW50YXguQXJncztcbiAgICBsZXQgcGF0aDogSW50ZXJuZWRTdHJpbmdbXTtcblxuICAgIGlmIChibG9jaykge1xuICAgICAgYXJncyA9IGJsb2NrLmFyZ3M7XG4gICAgICBwYXRoID0gYmxvY2sucGF0aDtcbiAgICB9IGVsc2UgaWYgKGFwcGVuZCAmJiAoYXBwZW5kVHlwZSA9PT0gJ3Vua25vd24nIHx8IGFwcGVuZFR5cGUgPT09ICdnZXQnKSkge1xuICAgICAgbGV0IGFwcGVuZFZhbHVlID0gPEFwcGVuZFZhbHVlPmFwcGVuZC52YWx1ZTtcbiAgICAgIGFyZ3MgPSBTeW50YXguQXJncy5lbXB0eSgpO1xuICAgICAgcGF0aCA9IGFwcGVuZFZhbHVlLnJlZi5wYXRoKCk7XG4gICAgfSBlbHNlIGlmIChhcHBlbmQgJiYgYXBwZW5kLnZhbHVlLnR5cGUgPT09ICdoZWxwZXInKSB7XG4gICAgICBsZXQgaGVscGVyID0gPFN5bnRheC5IZWxwZXI+YXBwZW5kLnZhbHVlO1xuICAgICAgYXJncyA9IGhlbHBlci5hcmdzO1xuICAgICAgcGF0aCA9IGhlbHBlci5yZWYucGF0aCgpO1xuICAgIH0gZWxzZSBpZiAobW9kaWZpZXIpIHtcbiAgICAgIHBhdGggPSBtb2RpZmllci5wYXRoO1xuICAgICAgYXJncyA9IG1vZGlmaWVyLmFyZ3M7XG4gICAgfVxuXG4gICAgbGV0IGtleTogSW50ZXJuZWRTdHJpbmcsIGlzU2ltcGxlOiBib29sZWFuO1xuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGlzU2ltcGxlID0gcGF0aC5sZW5ndGggPT09IDE7XG4gICAgICBrZXkgPSBwYXRoWzBdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpc1NpbXBsZSxcbiAgICAgIHBhdGgsXG4gICAgICBrZXksXG4gICAgICBhcmdzLFxuICAgICAgYXBwZW5kVHlwZSxcbiAgICAgIG9yaWdpbmFsOiBzdGF0ZW1lbnQsXG4gICAgICBpc0lubGluZTogISFhcHBlbmQsXG4gICAgICBpc0Jsb2NrOiAhIWJsb2NrLFxuICAgICAgaXNNb2RpZmllcjogISFtb2RpZmllcixcbiAgICAgIHRlbXBsYXRlczogYmxvY2sgJiYgYmxvY2sudGVtcGxhdGVzXG4gICAgfTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBNERNLEtBQUE7QUFlSixpQkFmSSxLQUFBLENBZVEsVUFBdUIsRUFBMkI7Z0JBQXpCLFdBQVcseURBQVUsSUFBSTs7QUFGdEQsZ0JBQUEsQ0FBQSxXQUFXLEdBQVUsSUFBSSxDQUFDO0FBR2hDLGdCQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztBQUN4QixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDaEM7O0FBbEJHLGFBQUEsQ0FDRyxJQUFJLEdBQUEsY0FBQyxJQUEyQixFQUFVO2dCQUFSLElBQUkseURBQUcsQ0FBQzs7QUFDL0MsZ0JBQUksSUFBSSxHQUE0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsb0JBQUksQ0FBQyxDQUFDLENBQUMsZ0NBMURKLG1CQUFtQixBQTBETyxDQUFDO2FBQy9CO0FBRUQsbUJBQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdkM7O0FBVEcsYUFBQSxXQW9CSixJQUFJLEdBQUEsY0FBQyxJQUF5QyxFQUFBO2dCQUF2QyxJQUFJLEdBQU4sSUFBeUMsQ0FBdkMsSUFBSTs7QUFDVCxnQkFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBdkJHLGFBQUEsV0F5QkosT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQTBCLENBQUM7U0FDL0M7O0FBM0JHLGFBQUEsV0E2QkosU0FBUyxHQUFBLG1CQUFDLE1BQWMsRUFBQTtBQUN0QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBMEIsQ0FBQztTQUNwRDs7QUEvQkcsYUFBQSxXQWlDSixRQUFRLEdBQUEsa0JBQUMsTUFBYyxFQUFBO0FBQ3JCLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFnQixDQUFDO1NBQzFDOztBQW5DRyxhQUFBLFdBcUNKLFVBQVUsR0FBQSxvQkFBQyxNQUFjLEVBQUUsS0FBNEIsRUFBQTtBQUNyRCxnQkFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDNUI7O0FBdkNHLGFBQUEsV0F5Q0osU0FBUyxHQUFBLG1CQUFDLE1BQWMsRUFBRSxLQUFrQixFQUFBO0FBQzFDLGdCQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUM1Qjs7QUEzQ0csYUFBQSxXQTZDSixlQUFlLEdBQUEseUJBQUMsS0FBWSxFQUFBO0FBQzFCLGdCQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjs7QUEvQ0csYUFBQSxXQWlESixjQUFjLEdBQUEsMEJBQUE7QUFDWixtQkFBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3pCOztBQW5ERyxhQUFBLFdBcURKLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3hEOztlQXZERyxLQUFBOzs7OztRQTBEQSxXQUFBO0FBYUosaUJBYkksV0FBQSxDQWFRLEtBQStHLEVBQUE7Z0JBQTdHLGdCQUFnQixHQUFsQixLQUErRyxDQUE3RyxnQkFBZ0I7Z0JBQUUsZ0JBQWdCLEdBQXBDLEtBQStHLENBQTNGLGdCQUFnQjs7QUFWeEMsZ0JBQUEsQ0FBQSx3QkFBd0IsR0FBOEIsSUFBSSxDQUFDO0FBQzNELGdCQUFBLENBQUEseUJBQXlCLEdBQWEsSUFBSSxDQUFDO0FBQzNDLGdCQUFBLENBQUEsK0JBQStCLEdBQThCLElBQUksQ0FBQztBQUNsRSxnQkFBQSxDQUFBLHdCQUF3QixHQUFhLElBQUksQ0FBQztBQUMxQyxnQkFBQSxDQUFBLGlCQUFpQixHQUFnQixJQUFJLENBQUM7QUFDdEMsZ0JBQUEsQ0FBQSxlQUFlLEdBQWtDLElBQUksQ0FBQztBQUN0RCxnQkFBQSxDQUFBLGlCQUFpQixHQUFnQixJQUFJLENBQUM7QUFDdEMsZ0JBQUEsQ0FBQSxlQUFlLEdBQWtDLElBQUksQ0FBQztBQUN0RCxnQkFBQSxDQUFBLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0FBR3hDLGdCQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUMxQzs7QUFoQkcsbUJBQUEsV0FrQkosc0JBQXNCLEdBQUEsZ0NBQUMsU0FBNEIsRUFBQTtBQUNqRCxtQkFBTyxpQ0FsSW1CLG9CQUFvQixDQWtJZCxTQUFTLENBQUMsQ0FBQztTQUM1Qzs7QUFwQkcsbUJBQUEsV0F5QkosbUJBQW1CLEdBQUEsK0JBQUE7QUFBMEIsbUJBQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUU7O0FBekJ4RSxtQkFBQSxXQTBCSixNQUFNLEdBQUEsa0JBQUE7QUFBaUIsbUJBQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUU7O0FBMUJsRCxtQkFBQSxXQTRCSixXQUFXLEdBQUEscUJBQUMsTUFBZSxFQUFBO0FBQ3pCLG1CQUFPLGFBcEhULFVBQVUsQ0FvSFUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2hDOztBQTlCRyxtQkFBQSxXQWdDSixTQUFTLEdBQUEsbUJBQUMsVUFBMEIsRUFBRSxXQUF3QixFQUFBO0FBQzVELG1CQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFVBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLFVBQVMsQ0FBQztTQUNsRjs7QUFsQ0csbUJBQUEsV0FvQ00sZUFBZSxHQUFBLHlCQUFDLFNBQTBCLEVBQUUsV0FBd0IsRUFBQTtnQkFFMUUsUUFBUSxHQU1OLFNBQVMsQ0FOWCxRQUFRO2dCQUNSLE9BQU8sR0FLTCxTQUFTLENBTFgsT0FBTztnQkFDUCxRQUFRLEdBSU4sU0FBUyxDQUpYLFFBQVE7Z0JBQ1IsR0FBRyxHQUdELFNBQVMsQ0FIWCxHQUFHO2dCQUNILElBQUksR0FFRixTQUFTLENBRlgsSUFBSTtnQkFDSixTQUFTLEdBQ1AsU0FBUyxDQURYLFNBQVM7O0FBR1gsZ0JBQUksUUFBUSxJQUFJLFFBQVEsRUFBRTtBQUN4QixvQkFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3JCLDJCQUFPLG9EQUFrQixFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsV0FBVyxFQUFYLFdBQVcsRUFBRSxDQUFDLENBQUM7aUJBQ2pEO2FBQ0Y7QUFFRCxnQkFBSSxRQUFRLElBQUksT0FBTyxFQUFFO0FBQ3ZCLHdCQUFRLEdBQUc7QUFDVCx5QkFBSyxNQUFNO0FBQ1QsK0JBQU8saURBQWUsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQUEsQUFDN0MseUJBQUssSUFBSTtBQUNQLCtCQUFPLCtDQUFhLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUFBLEFBQzNDLHlCQUFLLE1BQU07QUFDVCwrQkFBTyxpREFBZSxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENBQUM7QUFBQSxBQUM3Qyx5QkFBSyxRQUFRO0FBQ1gsK0JBQU8sbURBQWlCLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUFBLGlCQUNoRDthQUNGO1NBQ0Y7O0FBaEVHLG1CQUFBLFdBa0VKLEtBQUssR0FBQSxpQkFBQTtBQUNILGdCQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMxQixnQkFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM1QixnQkFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDMUIsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLGdCQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ25DLGdCQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLGdCQUFJLENBQUMsK0JBQStCLEdBQUcsRUFBRSxDQUFDO0FBQzFDLGdCQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDO1NBQ3BDOztBQTVFRyxtQkFBQSxXQThFSixTQUFTLEdBQUEsbUJBQUksU0FBWSxFQUFFLE9BQTRCLEVBQUE7QUFDckQsZ0JBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO0FBQzlDLGdCQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFjLENBQUMsQ0FBQztTQUMzQzs7QUFqRkcsbUJBQUEsV0FtRkosU0FBUyxHQUFBLG1CQUFJLFNBQVksRUFBRSxPQUE0QixFQUFBO0FBQ3JELGdCQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQWdCLENBQUMsQ0FBQztBQUM5QyxnQkFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBYyxDQUFDLENBQUM7U0FDM0M7O0FBdEZHLG1CQUFBLFdBd0ZKLHVCQUF1QixHQUFBLGlDQUFJLFFBQVcsRUFBRSxPQUEyQixFQUFBO0FBQ2pFLGdCQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLGdCQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9DOztBQTNGRyxtQkFBQSxXQTZGSixzQkFBc0IsR0FBQSxnQ0FBSSxRQUFXLEVBQUUsT0FBMkIsRUFBQTtBQUNoRSxnQkFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRCxnQkFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5Qzs7QUFoR0csbUJBQUEsV0FrR0osVUFBVSxHQUFBLG9CQUFDLENBQWMsRUFBQTtBQUN2QixnQkFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUI7O0FBcEdHLG1CQUFBLFdBc0dKLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGlCQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsRCxvQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLG9CQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLHVCQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzlCO0FBRUQsaUJBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2xELG9CQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsb0JBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsdUJBQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDOUI7QUFFRCxpQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLG9CQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQy9CO0FBRUQsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdELG9CQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0Msb0JBQUksUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCx1QkFBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQjtBQUVELGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwRSxvQkFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELG9CQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsdUJBQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7QUFFRCxnQkFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUM5QixnQkFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsZ0JBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDOUIsZ0JBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUN4QixnQkFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUNyQyxnQkFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQUN0QyxnQkFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQztBQUM1QyxnQkFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztTQUN0Qzs7QUE1SUcsbUJBQUEsV0FpSkosWUFBWSxHQUFBLHNCQUFDLE9BQXVCLEVBQUUsSUFBWSxFQUFFLFVBQW1CLEVBQUUsU0FBa0IsRUFBQTtBQUN6RixtQkFBTyxpQ0EvUFQsa0JBQWtCLENBK1BVLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2pFOztlQW5KRyxXQUFBOzs7O3NCQThKUyxXQUFXOztBQW1CMUIsYUFBQSxjQUFBLENBQXdCLFNBQTBCLEVBQUE7QUFDOUMsWUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUMxQixZQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssT0FBTyxHQUFpQixTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzlELFlBQUksTUFBTSxHQUFHLElBQUksS0FBSyxrQkFBa0IsR0FBMkIsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNwRixZQUFJLFFBQVEsR0FBRyxJQUFJLEtBQUssVUFBVSxHQUFvQixTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3ZFLFlBQUksVUFBVSxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUc3QyxZQUFJLElBQWlCLFlBQUEsQ0FBQztBQUN0QixZQUFJLElBQWMsWUFBQSxDQUFDO0FBRW5CLFlBQUksS0FBSyxFQUFFO0FBQ1QsZ0JBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ2xCLGdCQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNuQixNQUFNLElBQUksTUFBTSxLQUFLLFVBQVUsS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQSxBQUFDLEVBQUU7QUFDdkUsZ0JBQUksV0FBVyxHQUFnQixNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzVDLGdCQUFJLEdBQUcsNkJBQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCLGdCQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDOUIsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDbkQsZ0JBQUksTUFBTSxHQUFrQixNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ3pDLGdCQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNuQixnQkFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQ3pCLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDbkIsZ0JBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0FBQ3JCLGdCQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztTQUN0QjtBQUVELFlBQUksR0FBVyxZQUFBO1lBQUUsUUFBaUIsWUFBQSxDQUFDO0FBRW5DLFlBQUksSUFBSSxFQUFFO0FBQ1Isb0JBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUM3QixlQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2Y7QUFFRCxlQUFPO0FBQ0wsb0JBQVEsRUFBUixRQUFRO0FBQ1IsZ0JBQUksRUFBSixJQUFJO0FBQ0osZUFBRyxFQUFILEdBQUc7QUFDSCxnQkFBSSxFQUFKLElBQUk7QUFDSixzQkFBVSxFQUFWLFVBQVU7QUFDVixvQkFBUSxFQUFFLFNBQVM7QUFDbkIsb0JBQVEsRUFBRSxDQUFDLENBQUMsTUFBTTtBQUNsQixtQkFBTyxFQUFFLENBQUMsQ0FBQyxLQUFLO0FBQ2hCLHNCQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVE7QUFDdEIscUJBQVMsRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVM7U0FDcEMsQ0FBQztLQUNMIiwiZmlsZSI6ImVudmlyb25tZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCB9IGZyb20gJy4vc3ludGF4JztcblxuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4vc3ltYm9sLXRhYmxlJztcblxuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFBhdGhSZWZlcmVuY2UsIE9wYXF1ZUl0ZXJhYmxlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVU5ERUZJTkVEX1JFRkVSRU5DRSwgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdENoYW5nZUxpc3RzLFxuICBJQ2hhbmdlTGlzdFxufSBmcm9tICcuL2RvbS9jaGFuZ2UtbGlzdHMnO1xuXG5pbXBvcnQge1xuICBQYXJ0aWFsRGVmaW5pdGlvblxufSBmcm9tICcuL3BhcnRpYWwnO1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbXBvbmVudE1hbmFnZXIsXG4gIENvbXBvbmVudERlZmluaXRpb25cbn0gZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIE1vZGlmaWVyTWFuYWdlclxufSBmcm9tICcuL21vZGlmaWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBEZXN0cm95YWJsZSxcbiAgT3BhcXVlLFxuICBIYXNHdWlkLFxuICBlbnN1cmVHdWlkXG59IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7XG4gIFRlbXBsYXRlTWV0YVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5cbmltcG9ydCB7IElubGluZUJsb2NrIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi9zeW50YXgvY29yZSc7XG5cbmltcG9ydCBJZlN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy9pZic7XG5pbXBvcnQgVW5sZXNzU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL3VubGVzcyc7XG5pbXBvcnQgV2l0aFN5bnRheCBmcm9tICcuL3N5bnRheC9idWlsdGlucy93aXRoJztcbmltcG9ydCBFYWNoU3ludGF4IGZyb20gJy4vc3ludGF4L2J1aWx0aW5zL2VhY2gnO1xuaW1wb3J0IFBhcnRpYWxTeW50YXggZnJvbSAnLi9zeW50YXgvYnVpbHRpbnMvcGFydGlhbCc7XG5cbmltcG9ydCB7IFB1YmxpY1ZNIH0gZnJvbSAnLi92bS9hcHBlbmQnO1xuXG50eXBlIFNjb3BlU2xvdCA9IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiB8IElubGluZUJsb2NrO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNTY29wZSB7XG4gIGdldChrZXk6IHN0cmluZyk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgc2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPik6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgY2hpbGQoKTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgY2xhc3MgU2NvcGUge1xuICBzdGF0aWMgcm9vdChzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIHNpemUgPSAwKSB7XG4gICAgbGV0IHJlZnM6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPltdID0gbmV3IEFycmF5KHNpemUgKyAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNpemU7IGkrKykge1xuICAgICAgcmVmc1tpXSA9IFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY29wZShyZWZzKS5pbml0KHsgc2VsZiB9KTtcbiAgfVxuXG4gIC8vIHRoZSAwdGggc2xvdCBpcyBgc2VsZmBcbiAgcHJpdmF0ZSBzbG90czogU2NvcGVTbG90W107XG4gIHByaXZhdGUgY2FsbGVyU2NvcGU6IFNjb3BlID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihyZWZlcmVuY2VzOiBTY29wZVNsb3RbXSwgY2FsbGVyU2NvcGU6IFNjb3BlID0gbnVsbCkge1xuICAgIHRoaXMuc2xvdHMgPSByZWZlcmVuY2VzO1xuICAgIHRoaXMuY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgfVxuXG4gIGluaXQoeyBzZWxmIH06IHsgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IH0pOiB0aGlzIHtcbiAgICB0aGlzLnNsb3RzWzBdID0gc2VsZjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5zbG90c1swXSBhcyBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIH1cblxuICBnZXRTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLnNsb3RzW3N5bWJvbF0gYXMgUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICB9XG5cbiAgZ2V0QmxvY2soc3ltYm9sOiBudW1iZXIpOiBJbmxpbmVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuc2xvdHNbc3ltYm9sXSBhcyBJbmxpbmVCbG9jaztcbiAgfVxuXG4gIGJpbmRTeW1ib2woc3ltYm9sOiBudW1iZXIsIHZhbHVlOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgICB0aGlzLnNsb3RzW3N5bWJvbF0gPSB2YWx1ZTtcbiAgfVxuXG4gIGJpbmRCbG9jayhzeW1ib2w6IG51bWJlciwgdmFsdWU6IElubGluZUJsb2NrKSB7XG4gICAgdGhpcy5zbG90c1tzeW1ib2xdID0gdmFsdWU7XG4gIH1cblxuICBiaW5kQ2FsbGVyU2NvcGUoc2NvcGU6IFNjb3BlKSB7XG4gICAgdGhpcy5jYWxsZXJTY29wZSA9IHNjb3BlO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmNhbGxlclNjb3BlO1xuICB9XG5cbiAgY2hpbGQoKTogU2NvcGUge1xuICAgIHJldHVybiBuZXcgU2NvcGUodGhpcy5zbG90cy5zbGljZSgpLCB0aGlzLmNhbGxlclNjb3BlKTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW52aXJvbm1lbnQge1xuICBwcm90ZWN0ZWQgdXBkYXRlT3BlcmF0aW9uczogRE9NQ2hhbmdlcztcbiAgcHJvdGVjdGVkIGFwcGVuZE9wZXJhdGlvbnM6IERPTVRyZWVDb25zdHJ1Y3Rpb247XG4gIHByaXZhdGUgc2NoZWR1bGVkSW5zdGFsbE1hbmFnZXJzOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPltdID0gbnVsbDtcbiAgcHJpdmF0ZSBzY2hlZHVsZWRJbnN0YWxsTW9kaWZpZXJzOiBPYmplY3RbXSA9IG51bGw7XG4gIHByaXZhdGUgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2VyczogTW9kaWZpZXJNYW5hZ2VyPE9wYXF1ZT5bXSA9IG51bGw7XG4gIHByaXZhdGUgc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzOiBPYmplY3RbXSA9IG51bGw7XG4gIHByaXZhdGUgY3JlYXRlZENvbXBvbmVudHM6IENvbXBvbmVudFtdID0gbnVsbDtcbiAgcHJpdmF0ZSBjcmVhdGVkTWFuYWdlcnM6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PltdID0gbnVsbDtcbiAgcHJpdmF0ZSB1cGRhdGVkQ29tcG9uZW50czogQ29tcG9uZW50W10gPSBudWxsO1xuICBwcml2YXRlIHVwZGF0ZWRNYW5hZ2VyczogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+W10gPSBudWxsO1xuICBwcml2YXRlIGRlc3RydWN0b3JzOiBEZXN0cm95YWJsZVtdID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcih7IGFwcGVuZE9wZXJhdGlvbnMsIHVwZGF0ZU9wZXJhdGlvbnMgfTogeyBhcHBlbmRPcGVyYXRpb25zOiBET01UcmVlQ29uc3RydWN0aW9uLCB1cGRhdGVPcGVyYXRpb25zOiBET01DaGFuZ2VzIH0pIHtcbiAgICB0aGlzLmFwcGVuZE9wZXJhdGlvbnMgPSBhcHBlbmRPcGVyYXRpb25zO1xuICAgIHRoaXMudXBkYXRlT3BlcmF0aW9ucyA9IHVwZGF0ZU9wZXJhdGlvbnM7XG4gIH1cblxuICB0b0NvbmRpdGlvbmFsUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uYWxSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgfVxuXG4gIGFic3RyYWN0IGl0ZXJhYmxlRm9yKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBPcGFxdWVJdGVyYWJsZTtcbiAgYWJzdHJhY3QgcHJvdG9jb2xGb3JVUkwoczogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGdldEFwcGVuZE9wZXJhdGlvbnMoKTogRE9NVHJlZUNvbnN0cnVjdGlvbiB7IHJldHVybiB0aGlzLmFwcGVuZE9wZXJhdGlvbnM7IH1cbiAgZ2V0RE9NKCk6IERPTUNoYW5nZXMgeyByZXR1cm4gdGhpcy51cGRhdGVPcGVyYXRpb25zOyB9XG5cbiAgZ2V0SWRlbnRpdHkob2JqZWN0OiBIYXNHdWlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5zdXJlR3VpZChvYmplY3QpICsgJyc7XG4gIH1cblxuICBzdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IFN0YXRlbWVudFN5bnRheCB7XG4gICAgcmV0dXJuIHRoaXMucmVmaW5lU3RhdGVtZW50KHBhcnNlU3RhdGVtZW50KHN0YXRlbWVudCksIHN5bWJvbFRhYmxlKSB8fCBzdGF0ZW1lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmaW5lU3RhdGVtZW50KHN0YXRlbWVudDogUGFyc2VkU3RhdGVtZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCB7XG4gICAgICBpc1NpbXBsZSxcbiAgICAgIGlzQmxvY2ssXG4gICAgICBpc0lubGluZSxcbiAgICAgIGtleSxcbiAgICAgIGFyZ3MsXG4gICAgICB0ZW1wbGF0ZXNcbiAgICB9ID0gc3RhdGVtZW50O1xuXG4gICAgaWYgKGlzU2ltcGxlICYmIGlzSW5saW5lKSB7XG4gICAgICBpZiAoa2V5ID09PSAncGFydGlhbCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJ0aWFsU3ludGF4KHsgYXJncywgc3ltYm9sVGFibGUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzU2ltcGxlICYmIGlzQmxvY2spIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ2VhY2gnOlxuICAgICAgICAgIHJldHVybiBuZXcgRWFjaFN5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgICAgY2FzZSAnaWYnOlxuICAgICAgICAgIHJldHVybiBuZXcgSWZTeW50YXgoeyBhcmdzLCB0ZW1wbGF0ZXMgfSk7XG4gICAgICAgIGNhc2UgJ3dpdGgnOlxuICAgICAgICAgIHJldHVybiBuZXcgV2l0aFN5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgICAgY2FzZSAndW5sZXNzJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFVubGVzc1N5bnRheCh7IGFyZ3MsIHRlbXBsYXRlcyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBiZWdpbigpIHtcbiAgICB0aGlzLmNyZWF0ZWRDb21wb25lbnRzID0gW107XG4gICAgdGhpcy5jcmVhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gW107XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLmRlc3RydWN0b3JzID0gW107XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyA9IFtdO1xuICB9XG5cbiAgZGlkQ3JlYXRlPFQ+KGNvbXBvbmVudDogVCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxUPikge1xuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMucHVzaChjb21wb25lbnQgYXMgYW55KTtcbiAgICB0aGlzLmNyZWF0ZWRNYW5hZ2Vycy5wdXNoKG1hbmFnZXIgYXMgYW55KTtcbiAgfVxuXG4gIGRpZFVwZGF0ZTxUPihjb21wb25lbnQ6IFQsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzLnB1c2goY29tcG9uZW50IGFzIGFueSk7XG4gICAgdGhpcy51cGRhdGVkTWFuYWdlcnMucHVzaChtYW5hZ2VyIGFzIGFueSk7XG4gIH1cblxuICBzY2hlZHVsZUluc3RhbGxNb2RpZmllcjxUPihtb2RpZmllcjogVCwgbWFuYWdlcjogTW9kaWZpZXJNYW5hZ2VyPFQ+KSB7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBzY2hlZHVsZVVwZGF0ZU1vZGlmaWVyPFQ+KG1vZGlmaWVyOiBULCBtYW5hZ2VyOiBNb2RpZmllck1hbmFnZXI8VD4pIHtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVyTWFuYWdlcnMucHVzaChtYW5hZ2VyKTtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIGRpZERlc3Ryb3koZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLmRlc3RydWN0b3JzLnB1c2goZCk7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuY3JlYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmNyZWF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB0aGlzLmNyZWF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkQ3JlYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMudXBkYXRlZENvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLnVwZGF0ZWRDb21wb25lbnRzW2ldO1xuICAgICAgbGV0IG1hbmFnZXIgPSB0aGlzLnVwZGF0ZWRNYW5hZ2Vyc1tpXTtcbiAgICAgIG1hbmFnZXIuZGlkVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZGVzdHJ1Y3RvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZGVzdHJ1Y3RvcnNbaV0uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBtYW5hZ2VyID0gdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnNbaV07XG4gICAgICBsZXQgbW9kaWZpZXIgPSB0aGlzLnNjaGVkdWxlZEluc3RhbGxNb2RpZmllcnNbaV07XG4gICAgICBtYW5hZ2VyLmluc3RhbGwobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbWFuYWdlciA9IHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJNYW5hZ2Vyc1tpXTtcbiAgICAgIGxldCBtb2RpZmllciA9IHRoaXMuc2NoZWR1bGVkVXBkYXRlTW9kaWZpZXJzW2ldO1xuICAgICAgbWFuYWdlci51cGRhdGUobW9kaWZpZXIpO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlZENvbXBvbmVudHMgPSBudWxsO1xuICAgIHRoaXMuY3JlYXRlZE1hbmFnZXJzID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZWRDb21wb25lbnRzID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZWRNYW5hZ2VycyA9IG51bGw7XG4gICAgdGhpcy5kZXN0cnVjdG9ycyA9IG51bGw7XG4gICAgdGhpcy5zY2hlZHVsZWRJbnN0YWxsTWFuYWdlcnMgPSBudWxsO1xuICAgIHRoaXMuc2NoZWR1bGVkSW5zdGFsbE1vZGlmaWVycyA9IG51bGw7XG4gICAgdGhpcy5zY2hlZHVsZWRVcGRhdGVNb2RpZmllck1hbmFnZXJzID0gbnVsbDtcbiAgICB0aGlzLnNjaGVkdWxlZFVwZGF0ZU1vZGlmaWVycyA9IG51bGw7XG4gIH1cblxuICBhYnN0cmFjdCBoYXNIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nW10sIGJsb2NrTWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZ1tdLCBibG9ja01ldGE6IFRlbXBsYXRlTWV0YSk6IEhlbHBlcjtcblxuICBhdHRyaWJ1dGVGb3IoZWxlbWVudDogU2ltcGxlLkVsZW1lbnQsIGF0dHI6IHN0cmluZywgaXNUcnVzdGluZzogYm9vbGVhbiwgbmFtZXNwYWNlPzogc3RyaW5nKTogSUNoYW5nZUxpc3Qge1xuICAgIHJldHVybiBkZWZhdWx0Q2hhbmdlTGlzdHMoZWxlbWVudCwgYXR0ciwgaXNUcnVzdGluZywgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhc1BhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZ1tdLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBib29sZWFuO1xuICBhYnN0cmFjdCBsb29rdXBQYXJ0aWFsKFBhcnRpYWxOYW1lOiBzdHJpbmdbXSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGFydGlhbERlZmluaXRpb248VGVtcGxhdGVNZXRhPjtcbiAgYWJzdHJhY3QgaGFzQ29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmdbXSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbih0YWdOYW1lOiBzdHJpbmdbXSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+O1xuXG4gIGFic3RyYWN0IGhhc01vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nW10sIGJsb2NrTWV0YTogVGVtcGxhdGVNZXRhKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbG9va3VwTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmdbXSwgYmxvY2tNZXRhOiBUZW1wbGF0ZU1ldGEpOiBNb2RpZmllck1hbmFnZXI8T3BhcXVlPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRW52aXJvbm1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIHtcbiAgKHZtOiBQdWJsaWNWTSwgYXJnczogRXZhbHVhdGVkQXJncywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+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]); + } + + DynamicVarReference.prototype.value = function value() { + return this.getVar().value(); + }; + + DynamicVarReference.prototype.get = function get(key) { + return this.getVar().get(key); + }; + + DynamicVarReference.prototype.getVar = function getVar() { + var name = String(this.nameRef.value()); + var ref = this.scope.get(name); + this.varTag.update(ref.tag); + return ref; + }; + + return DynamicVarReference; + })(); + + function getDynamicVar(vm, args, symbolTable) { + var scope = vm.dynamicScope(); + var nameRef = args.positional.at(0); + return new DynamicVarReference(scope, nameRef); + } + 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) { @@ -19624,20 +20364,12 @@ enifed('glimmer-runtime/lib/opcodes', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) { 'use strict'; exports.inspect = inspect; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var AbstractOpcode = (function () { function AbstractOpcode() { - _classCallCheck(this, AbstractOpcode); - _glimmerUtil.initializeGuid(this); } AbstractOpcode.prototype.toJSON = function toJSON() { return { guid: this._guid, type: this.type }; @@ -19647,40 +20379,28 @@ })(); exports.AbstractOpcode = AbstractOpcode; var Opcode = (function (_AbstractOpcode) { - _inherits(Opcode, _AbstractOpcode); + babelHelpers.inherits(Opcode, _AbstractOpcode); function Opcode() { - _classCallCheck(this, Opcode); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _AbstractOpcode.call.apply(_AbstractOpcode, [this].concat(args)); + _AbstractOpcode.apply(this, arguments); this.next = null; this.prev = null; } return Opcode; })(AbstractOpcode); exports.Opcode = Opcode; var UpdatingOpcode = (function (_AbstractOpcode2) { - _inherits(UpdatingOpcode, _AbstractOpcode2); + babelHelpers.inherits(UpdatingOpcode, _AbstractOpcode2); function UpdatingOpcode() { - _classCallCheck(this, UpdatingOpcode); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _AbstractOpcode2.call.apply(_AbstractOpcode2, [this].concat(args)); + _AbstractOpcode2.apply(this, arguments); this.next = null; this.prev = null; } return UpdatingOpcode; @@ -19707,16 +20427,16 @@ buffer.push('('); if (opcode.args) { buffer.push(opcode.args.join(', ')); } if (opcode.details) { - var _keys = Object.keys(opcode.details); - if (_keys.length) { + var keys = Object.keys(opcode.details); + if (keys.length) { if (opcode.args && opcode.args.length) { buffer.push(', '); } - buffer.push(_keys.map(function (key) { + buffer.push(keys.map(function (key) { return key + '=' + opcode.details[key]; }).join(', ')); } } buffer.push(')'); @@ -19727,41 +20447,29 @@ _inspect(opcode.children[i], buffer, level + 1, i); } } } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvb3Bjb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQWFBLGNBQUE7QUFPRSxpQkFQRixjQUFBLEdBT0U7a0NBUEYsY0FBQTs7QUFRSSx5QkFyQjhDLGNBQWMsQ0FxQjdDLElBQUksQ0FBQyxDQUFDO1NBQ3RCOztBQVRILHNCQUFBLFdBV0UsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlDOztlQWJILGNBQUE7Ozs7O1FBZ0JBLE1BQUE7a0JBQUEsTUFBQTs7QUFBQSxpQkFBQSxNQUFBLEdBQUE7a0NBQUEsTUFBQTs7OENBQUEsSUFBQTtBQUFBLG9CQUFBOzs7QUFBcUMsc0VBQUEsSUFBQSxFQUFBLENBQWM7QUFDakQsZ0JBQUEsQ0FBQSxJQUFJLEdBQVcsSUFBSSxDQUFDO0FBQ3BCLGdCQUFBLENBQUEsSUFBSSxHQUFXLElBQUksQ0FBQztTQUdyQjs7ZUFMRCxNQUFBO09BQXFDLGNBQWM7Ozs7UUFVbkQsY0FBQTtrQkFBQSxjQUFBOztBQUFBLGlCQUFBLGNBQUEsR0FBQTtrQ0FBQSxjQUFBOzsrQ0FBQSxJQUFBO0FBQUEsb0JBQUE7OztBQUE2Qyx3RUFBQSxJQUFBLEVBQUEsQ0FBYztBQUd6RCxnQkFBQSxDQUFBLElBQUksR0FBbUIsSUFBSSxDQUFDO0FBQzVCLGdCQUFBLENBQUEsSUFBSSxHQUFtQixJQUFJLENBQUM7U0FHN0I7O2VBUEQsY0FBQTtPQUE2QyxjQUFjOzs7O0FBZTNELGFBQUEsT0FBQSxDQUF3QixPQUFtQyxFQUFBO0FBQ3pELFlBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUVoQixlQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsTUFBTSxFQUFFLENBQUMsRUFBQTtBQUNsQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztBQUVILGVBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN4Qjs7QUFFRCxhQUFBLFFBQUEsQ0FBa0IsTUFBa0IsRUFBRSxNQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUE7QUFDbEYsWUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXJCLGFBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUIsdUJBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7QUFFRCxjQUFNLENBQUMsSUFBSSxNQUFBLENBQVgsTUFBTSxFQUFTLFdBQVcsQ0FBQyxDQUFDO0FBQzVCLGNBQU0sQ0FBQyxJQUFJLENBQUksS0FBSyxHQUFDLENBQUMsVUFBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFHLENBQUM7QUFFeEQsWUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDakMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFakIsZ0JBQUksTUFBTSxDQUFDLElBQUksRUFBRTtBQUNmLHNCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDckM7QUFFRCxnQkFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQ2xCLG9CQUFJLEtBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV2QyxvQkFBSSxLQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2Ysd0JBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQyw4QkFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbkI7QUFFRCwwQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRzsrQkFBTyxHQUFHLFNBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7cUJBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUMxRTthQUNGO0FBRUQsa0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEI7QUFFRCxjQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWxCLFlBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUM3QyxpQkFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNDLHdCQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNsRDtTQUNGO0tBQ0YiLCJmaWxlIjoib3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3QsIExpbmtlZExpc3QsIExpbmtlZExpc3ROb2RlLCBTbGljZSwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUmV2aXNpb25UYWcgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4vdm0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wY29kZUpTT04ge1xuICBndWlkOiBudW1iZXI7XG4gIHR5cGU6IHN0cmluZztcbiAgZGVvcHRlZD86IGJvb2xlYW47XG4gIGFyZ3M/OiBzdHJpbmdbXTtcbiAgZGV0YWlscz86IERpY3Q8c3RyaW5nPjtcbiAgY2hpbGRyZW4/OiBPcGNvZGVKU09OW107XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE9wY29kZSBpbXBsZW1lbnRzIExpbmtlZExpc3ROb2RlIHtcbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIF9ndWlkOiBudW1iZXI7XG5cbiAgcHJldjogQWJzdHJhY3RPcGNvZGU7XG4gIG5leHQ6IEFic3RyYWN0T3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gIG5leHQ6IE9wY29kZSA9IG51bGw7XG4gIHByZXY6IE9wY29kZSA9IG51bGw7XG5cbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFZNKTtcbn1cblxuZXhwb3J0IHR5cGUgT3BTZXEgPSBTbGljZTxPcGNvZGU+O1xuZXhwb3J0IHR5cGUgT3BTZXFCdWlsZGVyID0gTGlua2VkTGlzdDxPcGNvZGU+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXBkYXRpbmdPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIG5leHQ6IFVwZGF0aW5nT3Bjb2RlID0gbnVsbDtcbiAgcHJldjogVXBkYXRpbmdPcGNvZGUgPSBudWxsO1xuXG4gIGFic3RyYWN0IGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRpbmdPcFNlcSA9IFNsaWNlPFVwZGF0aW5nT3Bjb2RlPjtcblxuaW50ZXJmYWNlIE9wY29kZUZhY3Rvcnk8VCBleHRlbmRzIE9wY29kZT4ge1xuICBuZXcob3B0aW9uczogVCk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXM6IExpbmtlZExpc3Q8QWJzdHJhY3RPcGNvZGU+KTogc3RyaW5nIHtcbiAgbGV0IGJ1ZmZlciA9IFtdO1xuXG4gIG9wY29kZXMudG9BcnJheSgpLmZvckVhY2goKG9wY29kZSwgaSkgPT4ge1xuICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlOiBPcGNvZGVKU09OLCBidWZmZXI6IHN0cmluZ1tdLCBsZXZlbDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuXG4gIGZvciAobGV0IGk9MDsgaTxsZXZlbDsgaSsrKSB7XG4gICAgaW5kZW50YXRpb24ucHVzaCgnICAnKTtcbiAgfVxuXG4gIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgYnVmZmVyLnB1c2goYCR7aW5kZXgrMX0uICR7b3Bjb2RlLnR5cGUudG9VcHBlckNhc2UoKX1gKTtcblxuICBpZiAob3Bjb2RlLmFyZ3MgfHwgb3Bjb2RlLmRldGFpbHMpIHtcbiAgICBidWZmZXIucHVzaCgnKCcpO1xuXG4gICAgaWYgKG9wY29kZS5hcmdzKSB7XG4gICAgICBidWZmZXIucHVzaChvcGNvZGUuYXJncy5qb2luKCcsICcpKTtcbiAgICB9XG5cbiAgICBpZiAob3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob3Bjb2RlLmRldGFpbHMpO1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wY29kZS5hcmdzICYmIG9wY29kZS5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZmVyLnB1c2goa2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtvcGNvZGUuZGV0YWlsc1trZXldfWApLmpvaW4oJywgJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJ1ZmZlci5wdXNoKCcpJyk7XG4gIH1cblxuICBidWZmZXIucHVzaCgnXFxuJyk7XG5cbiAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgZm9yIChsZXQgaT0wOyBpPG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsKzEsIGkpO1xuICAgIH1cbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvb3Bjb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQWFNLGNBQUE7QUFPSixpQkFQSSxjQUFBLEdBT0o7QUFDRSx5QkFyQjhDLGNBQWMsQ0FxQjdDLElBQUksQ0FBQyxDQUFDO1NBQ3RCOztBQVRHLHNCQUFBLFdBV0osTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlDOztlQWJHLGNBQUE7Ozs7O1FBZ0JBLE1BQXVCOzhCQUF2QixNQUF1Qjs7QUFBN0IsaUJBQU0sTUFBdUIsR0FBN0I7QUNsQlEsd0NBQVMsU0FBUyxDQUFDLENBQUM7QURtQjFCLGdCQUFBLENBQUEsSUFBSSxHQUFXLElBQUksQ0FBQztBQUNwQixnQkFBQSxDQUFBLElBQUksR0FBVyxJQUFJLENBQUM7U0FHckI7O2VBTEssTUFBdUI7T0FBUSxjQUFjOzs7O1FBVTdDLGNBQStCOzhCQUEvQixjQUErQjs7QUFBckMsaUJBQU0sY0FBK0IsR0FBckM7QUNyQlEseUNBQVMsU0FBUyxDQUFDLENBQUM7QUR3QjFCLGdCQUFBLENBQUEsSUFBSSxHQUFtQixJQUFJLENBQUM7QUFDNUIsZ0JBQUEsQ0FBQSxJQUFJLEdBQW1CLElBQUksQ0FBQztTQUc3Qjs7ZUFQSyxjQUErQjtPQUFRLGNBQWM7Ozs7QUFlckQsYUFBQSxPQUFBLENBQWtCLE9BQW1DLEVBQUE7QUFDekQsWUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRWhCLGVBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFBO0FBQ2xDLG9CQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekMsQ0FBQyxDQUFDO0FBRUgsZUFBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ3hCOztBQUVELGFBQUEsUUFBQSxDQUFrQixNQUFrQixFQUFFLE1BQWdCLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFBQTtBQUNsRixZQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFFckIsYUFBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQix1QkFBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtBQUVELGNBQU0sQ0FBQyxJQUFJLE1BQUEsQ0FBWCxNQUFNLEVBQVMsV0FBVyxDQUFDLENBQUM7QUFDNUIsY0FBTSxDQUFDLElBQUksQ0FBSSxLQUFLLEdBQUMsQ0FBQyxVQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUcsQ0FBQztBQUV4RCxZQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtBQUNqQyxrQkFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVqQixnQkFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ2Ysc0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNyQztBQUVELGdCQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDbEIsb0JBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXZDLG9CQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDZix3QkFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JDLDhCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNuQjtBQUVELDBCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHOytCQUFPLEdBQUcsU0FBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztxQkFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQzFFO2FBQ0Y7QUFFRCxrQkFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQjtBQUVELGNBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbEIsWUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzdDLGlCQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0Msd0JBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7S0FDRiIsImZpbGUiOiJvcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgTGlua2VkTGlzdCwgTGlua2VkTGlzdE5vZGUsIFNsaWNlLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBSZXZpc2lvblRhZyB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi92bSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3Bjb2RlSlNPTiB7XG4gIGd1aWQ6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICBkZW9wdGVkPzogYm9vbGVhbjtcbiAgYXJncz86IHN0cmluZ1tdO1xuICBkZXRhaWxzPzogRGljdDxzdHJpbmc+O1xuICBjaGlsZHJlbj86IE9wY29kZUpTT05bXTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIGltcGxlbWVudHMgTGlua2VkTGlzdE5vZGUge1xuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgX2d1aWQ6IG51bWJlcjtcblxuICBwcmV2OiBBYnN0cmFjdE9wY29kZTtcbiAgbmV4dDogQWJzdHJhY3RPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgbmV4dDogT3Bjb2RlID0gbnVsbDtcbiAgcHJldjogT3Bjb2RlID0gbnVsbDtcblxuICBhYnN0cmFjdCBldmFsdWF0ZSh2bTogVk0pO1xufVxuXG5leHBvcnQgdHlwZSBPcFNlcSA9IFNsaWNlPE9wY29kZT47XG5leHBvcnQgdHlwZSBPcFNlcUJ1aWxkZXIgPSBMaW5rZWRMaXN0PE9wY29kZT47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgcHVibGljIHRhZzogUmV2aXNpb25UYWc7XG5cbiAgbmV4dDogVXBkYXRpbmdPcGNvZGUgPSBudWxsO1xuICBwcmV2OiBVcGRhdGluZ09wY29kZSA9IG51bGw7XG5cbiAgYWJzdHJhY3QgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pO1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGluZ09wU2VxID0gU2xpY2U8VXBkYXRpbmdPcGNvZGU+O1xuXG5pbnRlcmZhY2UgT3Bjb2RlRmFjdG9yeTxUIGV4dGVuZHMgT3Bjb2RlPiB7XG4gIG5ldyhvcHRpb25zOiBUKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3Qob3Bjb2RlczogTGlua2VkTGlzdDxBYnN0cmFjdE9wY29kZT4pOiBzdHJpbmcge1xuICBsZXQgYnVmZmVyID0gW107XG5cbiAgb3Bjb2Rlcy50b0FycmF5KCkuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICB9KTtcblxuICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGU6IE9wY29kZUpTT04sIGJ1ZmZlcjogc3RyaW5nW10sIGxldmVsOiBudW1iZXIsIGluZGV4OiBudW1iZXIpIHtcbiAgbGV0IGluZGVudGF0aW9uID0gW107XG5cbiAgZm9yIChsZXQgaT0wOyBpPGxldmVsOyBpKyspIHtcbiAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICB9XG5cbiAgYnVmZmVyLnB1c2goLi4uaW5kZW50YXRpb24pO1xuICBidWZmZXIucHVzaChgJHtpbmRleCsxfS4gJHtvcGNvZGUudHlwZS50b1VwcGVyQ2FzZSgpfWApO1xuXG4gIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG5cbiAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgIH1cblxuICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYnVmZmVyLnB1c2goJyknKTtcbiAgfVxuXG4gIGJ1ZmZlci5wdXNoKCdcXG4nKTtcblxuICBpZiAob3Bjb2RlLmNoaWxkcmVuICYmIG9wY29kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBmb3IgKGxldCBpPTA7IGk8b3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwrMSwgaSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBpbml0aWFsaXplR3VpZCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5leHBvcnQgY2xhc3MgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBndWlkOiB0aGlzLl9ndWlkLCB0eXBlOiB0aGlzLnR5cGUgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMudG9BcnJheSgpLmZvckVhY2goKG9wY29kZSwgaSkgPT4ge1xuICAgICAgICBfaW5zcGVjdChvcGNvZGUudG9KU09OKCksIGJ1ZmZlciwgMCwgaSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1ZmZlci5qb2luKCcnKTtcbn1cbmZ1bmN0aW9uIF9pbnNwZWN0KG9wY29kZSwgYnVmZmVyLCBsZXZlbCwgaW5kZXgpIHtcbiAgICBsZXQgaW5kZW50YXRpb24gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxldmVsOyBpKyspIHtcbiAgICAgICAgaW5kZW50YXRpb24ucHVzaCgnICAnKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goLi4uaW5kZW50YXRpb24pO1xuICAgIGJ1ZmZlci5wdXNoKGAke2luZGV4ICsgMX0uICR7b3Bjb2RlLnR5cGUudG9VcHBlckNhc2UoKX1gKTtcbiAgICBpZiAob3Bjb2RlLmFyZ3MgfHwgb3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgYnVmZmVyLnB1c2goJygnKTtcbiAgICAgICAgaWYgKG9wY29kZS5hcmdzKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChvcGNvZGUuYXJncy5qb2luKCcsICcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob3Bjb2RlLmRldGFpbHMpO1xuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wY29kZS5hcmdzICYmIG9wY29kZS5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIucHVzaCgnLCAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goa2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtvcGNvZGUuZGV0YWlsc1trZXldfWApLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcpJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKCdcXG4nKTtcbiAgICBpZiAob3Bjb2RlLmNoaWxkcmVuICYmIG9wY29kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIF9pbnNwZWN0KG9wY29kZS5jaGlsZHJlbltpXSwgYnVmZmVyLCBsZXZlbCArIDEsIGkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19 enifed("glimmer-runtime/lib/partial", ["exports"], function (exports) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var PartialDefinition = function PartialDefinition(name, template) { - _classCallCheck(this, PartialDefinition); - this.name = name; this.template = template; }; exports.PartialDefinition = PartialDefinition; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcGFydGlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQUVBLGlCQUFBLEdBSUUsU0FKRixpQkFBQSxDQUljLElBQVksRUFBRSxRQUE0QixFQUFBOzhCQUp4RCxpQkFBQTs7QUFLSSxZQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixZQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztLQUMxQiIsImZpbGUiOiJwYXJ0aWFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VyaWFsaXplZFRlbXBsYXRlIH0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5cbmV4cG9ydCBjbGFzcyBQYXJ0aWFsRGVmaW5pdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGVtcGxhdGU6IFNlcmlhbGl6ZWRUZW1wbGF0ZTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBTZXJpYWxpemVkVGVtcGxhdGUpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcGFydGlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFFTSxpQkFBQSxHQUlKLFNBSkksaUJBQUEsQ0FJUSxJQUFZLEVBQUUsUUFBcUIsRUFBQTtBQUM3QyxZQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixZQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztLQUMxQiIsImZpbGUiOiJwYXJ0aWFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL3RlbXBsYXRlJztcblxuZXhwb3J0IGNsYXNzIFBhcnRpYWxEZWZpbml0aW9uPFQ+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZW1wbGF0ZTogVGVtcGxhdGU8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGU8VD4pIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/references', ['exports', 'glimmer-reference'], function (exports, _glimmerReference) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var PrimitiveReference = (function (_ConstReference) { - _inherits(PrimitiveReference, _ConstReference); + babelHelpers.inherits(PrimitiveReference, _ConstReference); function PrimitiveReference() { - _classCallCheck(this, PrimitiveReference); - _ConstReference.apply(this, arguments); } PrimitiveReference.prototype.get = function get() { return UNDEFINED_REFERENCE; @@ -19772,12 +20480,10 @@ exports.PrimitiveReference = PrimitiveReference; var ConditionalReference = (function () { function ConditionalReference(inner) { - _classCallCheck(this, ConditionalReference); - this.inner = inner; this.tag = inner.tag; } ConditionalReference.prototype.value = function value() { @@ -19795,132 +20501,101 @@ var NULL_REFERENCE = new PrimitiveReference(null); exports.NULL_REFERENCE = NULL_REFERENCE; var UNDEFINED_REFERENCE = new PrimitiveReference(undefined); exports.UNDEFINED_REFERENCE = UNDEFINED_REFERENCE; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFLQSxrQkFBQTtrQkFBQSxrQkFBQTs7aUJBQUEsa0JBQUE7a0NBQUEsa0JBQUE7Ozs7O0FBQUEsMEJBQUEsV0FDRSxHQUFHLEdBQUEsZUFBQTtBQUNELG1CQUFPLG1CQUFtQixDQUFDO1NBQzVCOztlQUhILGtCQUFBO3lCQUxzQixjQUFjOzs7O1FBV3BDLG9CQUFBO0FBSUUsaUJBSkYsb0JBQUEsQ0FJYyxLQUF3QixFQUFBO2tDQUp0QyxvQkFBQTs7QUFLSSxnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUN0Qjs7QUFQSCw0QkFBQSxXQVNFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDOztBQVhILDRCQUFBLFdBYVksTUFBTSxHQUFBLGdCQUFDLEtBQWEsRUFBQTtBQUM1QixtQkFBTyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2hCOztlQWZILG9CQUFBOzs7O0FBa0JPLFFBQU0sY0FBYyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBQ3BELFFBQU0sbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyIsImZpbGUiOiJyZWZlcmVuY2VzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmV2aXNpb25UYWcsIENvbnN0UmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG50eXBlIFByaW1pdGl2ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG5cbmV4cG9ydCBjbGFzcyBQcmltaXRpdmVSZWZlcmVuY2UgZXh0ZW5kcyBDb25zdFJlZmVyZW5jZTxhbnk+IGltcGxlbWVudHMgUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+IHtcbiAgZ2V0KCk6IFByaW1pdGl2ZVJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsUmVmZXJlbmNlIGltcGxlbWVudHMgUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcHJpdmF0ZSBpbm5lcjogUmVmZXJlbmNlPGFueT47XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuaW5uZXIgPSBpbm5lcjtcbiAgICB0aGlzLnRhZyA9IGlubmVyLnRhZztcbiAgfVxuXG4gIHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvQm9vbCh0aGlzLmlubmVyLnZhbHVlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvQm9vbCh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5VTExfUkVGRVJFTkNFID0gbmV3IFByaW1pdGl2ZVJlZmVyZW5jZShudWxsKTtcbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gbmV3IFByaW1pdGl2ZVJlZmVyZW5jZSh1bmRlZmluZWQpO1xuIl19 -enifed('glimmer-runtime/lib/scanner', ['exports', 'glimmer-runtime/lib/syntax/statements', 'glimmer-runtime/lib/compiled/blocks', 'glimmer-util'], function (exports, _glimmerRuntimeLibSyntaxStatements, _glimmerRuntimeLibCompiledBlocks, _glimmerUtil) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFLTSxrQkFBMEI7OEJBQTFCLGtCQUEwQjs7aUJBQTFCLGtCQUEwQjs7OztBQUExQiwwQkFBMEIsV0FDOUIsR0FBRyxHQUFBLGVBQUE7QUFDRCxtQkFBTyxtQkFBbUIsQ0FBQztTQUM1Qjs7ZUFIRyxrQkFBMEI7eUJBTFYsY0FBYzs7OztRQVc5QixvQkFBQTtBQUlKLGlCQUpJLG9CQUFBLENBSVEsS0FBd0IsRUFBQTtBQUNsQyxnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUN0Qjs7QUFQRyw0QkFBQSxXQVNKLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDOztBQVhHLDRCQUFBLFdBYU0sTUFBTSxHQUFBLGdCQUFDLEtBQWEsRUFBQTtBQUM1QixtQkFBTyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2hCOztlQWZHLG9CQUFBOzs7O0FBa0JDLFFBQU0sY0FBYyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBQ3BELFFBQU0sbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyIsImZpbGUiOiJyZWZlcmVuY2VzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmV2aXNpb25UYWcsIENvbnN0UmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG50eXBlIFByaW1pdGl2ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG5cbmV4cG9ydCBjbGFzcyBQcmltaXRpdmVSZWZlcmVuY2UgZXh0ZW5kcyBDb25zdFJlZmVyZW5jZTxhbnk+IGltcGxlbWVudHMgUGF0aFJlZmVyZW5jZTxQcmltaXRpdmU+IHtcbiAgZ2V0KCk6IFByaW1pdGl2ZVJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbmFsUmVmZXJlbmNlIGltcGxlbWVudHMgUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgcHJpdmF0ZSBpbm5lcjogUmVmZXJlbmNlPGFueT47XG4gIHB1YmxpYyB0YWc6IFJldmlzaW9uVGFnO1xuXG4gIGNvbnN0cnVjdG9yKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPikge1xuICAgIHRoaXMuaW5uZXIgPSBpbm5lcjtcbiAgICB0aGlzLnRhZyA9IGlubmVyLnRhZztcbiAgfVxuXG4gIHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvQm9vbCh0aGlzLmlubmVyLnZhbHVlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvQm9vbCh2YWx1ZTogT3BhcXVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5VTExfUkVGRVJFTkNFID0gbmV3IFByaW1pdGl2ZVJlZmVyZW5jZShudWxsKTtcbmV4cG9ydCBjb25zdCBVTkRFRklORURfUkVGRVJFTkNFID0gbmV3IFByaW1pdGl2ZVJlZmVyZW5jZSh1bmRlZmluZWQpO1xuIl19 +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'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var Scanner = (function () { - function Scanner(spec, env) { - _classCallCheck(this, Scanner); - - this.spec = spec; + function Scanner(block, meta, env) { + this.block = block; + this.meta = meta; this.env = env; } Scanner.prototype.scanEntryPoint = function scanEntryPoint() { - var _this = this; + var block = this.block; + var meta = this.meta; - return this.scanTop(function (_ref) { - var program = _ref.program; - var children = _ref.children; - var meta = _this.spec.meta; - - return _glimmerRuntimeLibCompiledBlocks.EntryPoint.create({ children: children, program: program, symbolTable: null, meta: meta }); - }); + var symbolTable = _glimmerRuntimeLibSymbolTable.default.forEntryPoint(meta); + var program = buildStatements(block, block.blocks, symbolTable, this.env); + return new _glimmerRuntimeLibCompiledBlocks.EntryPoint(program, symbolTable); }; Scanner.prototype.scanLayout = function scanLayout() { - var _this2 = this; + var block = this.block; + var meta = this.meta; + var blocks = block.blocks; + var named = block.named; + var yields = block.yields; - return this.scanTop(function (_ref2) { - var program = _ref2.program; - var children = _ref2.children; - var _spec = _this2.spec; - var named = _spec.named; - var yields = _spec.yields; - var meta = _spec.meta; - - return _glimmerRuntimeLibCompiledBlocks.Layout.create({ children: children, program: program, named: named, yields: yields, symbolTable: null, meta: meta }); - }); + var symbolTable = _glimmerRuntimeLibSymbolTable.default.forLayout(named, yields, meta); + var program = buildStatements(block, blocks, symbolTable, this.env); + return new _glimmerRuntimeLibCompiledBlocks.Layout(program, symbolTable, named, yields); }; Scanner.prototype.scanPartial = function scanPartial(symbolTable) { - var _this3 = this; + var block = this.block; + var blocks = block.blocks; + var locals = block.locals; - return this.scanTop(function (_ref3) { - var program = _ref3.program; - var children = _ref3.children; - var _spec2 = _this3.spec; - var locals = _spec2.locals; - var meta = _spec2.meta; - - return new _glimmerRuntimeLibCompiledBlocks.PartialBlock({ children: children, program: program, locals: locals, symbolTable: symbolTable, meta: meta }); - }); + var program = buildStatements(block, blocks, symbolTable, this.env); + return new _glimmerRuntimeLibCompiledBlocks.PartialBlock(program, symbolTable, locals); }; - Scanner.prototype.scanTop = function scanTop(makeTop) { - var spec = this.spec; - var specBlocks = spec.blocks; - var meta = spec.meta; - - var blocks = []; - for (var i = 0, block = undefined; block = specBlocks[i]; i++) { - blocks.push(this.buildBlock(block, blocks, meta)); - } - return makeTop(this.buildStatements(spec, blocks)).initBlocks(); - }; - - Scanner.prototype.buildBlock = function buildBlock(block, blocks, meta) { - var _buildStatements = this.buildStatements(block, blocks); - - var program = _buildStatements.program; - var children = _buildStatements.children; - - return new _glimmerRuntimeLibCompiledBlocks.InlineBlock({ children: children, locals: block.locals, program: program, symbolTable: null, meta: meta }); - }; - - Scanner.prototype.buildStatements = function buildStatements(_ref4, blocks) { - var statements = _ref4.statements; - - if (statements.length === 0) return EMPTY_PROGRAM; - return new BlockScanner(statements, blocks, this.env).scan(); - }; - return Scanner; })(); exports.default = Scanner; - var EMPTY_PROGRAM = { - program: _glimmerUtil.EMPTY_SLICE, - children: [] - }; + function buildStatements(_ref, blocks, symbolTable, env) { + var statements = _ref.statements; - var BlockScanner = (function () { - function BlockScanner(statements, blocks, env) { - _classCallCheck(this, BlockScanner); + if (statements.length === 0) return EMPTY_PROGRAM; + return new BlockScanner(statements, blocks, symbolTable, env).scan(); + } + 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()); - this.reader = new SyntaxReader(statements, blocks); + this.stack.push(new ChildBlockScanner(symbolTable)); + this.reader = new SyntaxReader(statements, symbolTable, this); this.env = env; } BlockScanner.prototype.scan = function scan() { var statement = undefined; while (statement = this.reader.next()) { this.addStatement(statement); } - return { program: this.stack.current.program, children: this.stack.current.children }; + return this.stack.current.program; }; - BlockScanner.prototype.startBlock = function startBlock() { - this.stack.push(new ChildBlockScanner()); + 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); }; - BlockScanner.prototype.endBlock = function endBlock() { + 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 children = _stack$pop.children; var program = _stack$pop.program; + var symbolTable = _stack$pop.symbolTable; - var block = new _glimmerRuntimeLibCompiledBlocks.InlineBlock({ children: children, program: program, symbolTable: null, meta: null, locals: [] }); + var block = new _glimmerRuntimeLibCompiledBlocks.InlineBlock(program, symbolTable, locals); this.addChild(block); return block; }; BlockScanner.prototype.addChild = function addChild(block) { @@ -19933,23 +20608,18 @@ BlockScanner.prototype.next = function next() { return this.reader.next(); }; - BlockScanner.prototype.unput = function unput(statement) { - this.reader.unput(statement); - }; - return BlockScanner; })(); exports.BlockScanner = BlockScanner; var ChildBlockScanner = (function () { - function ChildBlockScanner() { - _classCallCheck(this, ChildBlockScanner); - + function ChildBlockScanner(symbolTable) { + this.symbolTable = symbolTable; this.children = []; this.program = new _glimmerUtil.LinkedList(); } ChildBlockScanner.prototype.addChild = function addChild(block) { @@ -19962,89 +20632,74 @@ return ChildBlockScanner; })(); var SyntaxReader = (function () { - function SyntaxReader(statements, blocks) { - _classCallCheck(this, SyntaxReader); - + function SyntaxReader(statements, symbolTable, scanner) { + this.statements = statements; + this.symbolTable = symbolTable; + this.scanner = scanner; this.current = 0; this.last = null; - this.statements = statements; - this.blocks = blocks; } - SyntaxReader.prototype.unput = function unput(statement) { - this.last = statement; - }; - 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.blocks); + return _glimmerRuntimeLibSyntaxStatements.default(sexp, this.symbolTable, this.scanner); }; return SyntaxReader; })(); exports.SyntaxReader = SyntaxReader; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQVFBLE9BQUE7QUFJRSxpQkFKRixPQUFBLENBSWMsSUFBd0IsRUFBRSxHQUFnQixFQUFBO2tDQUp4RCxPQUFBOztBQUtJLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDaEI7O0FBUEgsZUFBQSxXQVNFLGNBQWMsR0FBQSwwQkFBQTs7O0FBQ1osbUJBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBYSxVQUFDLElBQXFCLEVBQUE7b0JBQW5CLE9BQU8sR0FBVCxJQUFxQixDQUFuQixPQUFPO29CQUFFLFFBQVEsR0FBbkIsSUFBcUIsQ0FBVixRQUFRO29CQUM1QyxJQUFJLEdBQUssTUFBSyxJQUFJLENBQWxCLElBQUk7O0FBQ1YsdUJBQU8saUNBbEJjLFVBQVUsQ0FrQmIsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFSLFFBQVEsRUFBRSxPQUFPLEVBQVAsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDLENBQUM7YUFDMUUsQ0FBQyxDQUFDO1NBQ0o7O0FBZEgsZUFBQSxXQWdCRSxVQUFVLEdBQUEsc0JBQUE7OztBQUNSLG1CQUFPLElBQUksQ0FBQyxPQUFPLENBQVMsVUFBQyxLQUFxQixFQUFBO29CQUFuQixPQUFPLEdBQVQsS0FBcUIsQ0FBbkIsT0FBTztvQkFBRSxRQUFRLEdBQW5CLEtBQXFCLENBQVYsUUFBUTs0QkFDaEIsT0FBSyxJQUFJO29CQUFqQyxLQUFLLFNBQUwsS0FBSztvQkFBRSxNQUFNLFNBQU4sTUFBTTtvQkFBRSxJQUFJLFNBQUosSUFBSTs7QUFDekIsdUJBQU8saUNBekJxRCxNQUFNLENBeUJwRCxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQVIsUUFBUSxFQUFFLE9BQU8sRUFBUCxPQUFPLEVBQUUsS0FBSyxFQUFM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Q0FBQSxJQUFJLEdBQW9CLElBQUksQ0FBQztBQUczQixnQkFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7QUFDN0IsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCOztBQVRILG9CQUFBLFdBV0UsS0FBSyxHQUFBLGVBQUMsU0FBMEIsRUFBQTtBQUM5QixnQkFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7U0FDdkI7O0FBYkgsb0JBQUEsV0FlRSxJQUFJLEdBQUEsZ0JBQUE7QUFDRixnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNyQixnQkFBSSxJQUFJLEVBQUU7QUFDUixvQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsdUJBQU8sSUFBSSxDQUFDO2FBQ2IsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDbEQsdUJBQU8sSUFBSSxDQUFDO2FBQ2I7QUFFRCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMzQyxtQkFBTywyQ0FBZSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDOztlQTFCSCxZQUFBIiwiZmlsZSI6InNjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9ncmFtLCBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4IH0gZnJvbSAnLi9zeW50YXgnO1xuaW1wb3J0IGJ1aWxkU3RhdGVtZW50IGZyb20gJy4vc3ludGF4L3N0YXRlbWVudHMnO1xuaW1wb3J0IHsgVG9wTGV2ZWxUZW1wbGF0ZSwgRW50cnlQb2ludCwgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRU1QVFlfU0xJQ0UsIExpbmtlZExpc3QsIFN0YWNrIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRUZW1wbGF0ZSwgU2VyaWFsaXplZEJsb2NrLCBTdGF0ZW1lbnQgYXMgU2VyaWFsaXplZFN0YXRlbWVudCwgQmxvY2tNZXRhIH0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi9zeW1ib2wtdGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FubmVyIHtcbiAgcHJpdmF0ZSBzcGVjOiBTZXJpYWxpemVkVGVtcGxhdGU7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcblxuICBjb25zdHJ1Y3RvcihzcGVjOiBTZXJpYWxpemVkVGVtcGxhdGUsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLnNwZWMgPSBzcGVjO1xuICAgIHRoaXMuZW52ID0gZW52O1xuICB9XG5cbiAgc2NhbkVudHJ5UG9pbnQoKTogRW50cnlQb2ludCB7XG4gICAgcmV0dXJuIHRoaXMuc2NhblRvcDxFbnRyeVBvaW50PigoeyBwcm9ncmFtLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICBsZXQgeyBtZXRhIH0gPSB0aGlzLnNwZWM7XG4gICAgICByZXR1cm4gRW50cnlQb2ludC5jcmVhdGUoeyBjaGlsZHJlbiwgcHJvZ3JhbSwgc3ltYm9sVGFibGU6IG51bGwsIG1ldGEgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzY2FuTGF5b3V0KCk6IExheW91dCB7XG4gICAgcmV0dXJuIHRoaXMuc2NhblRvcDxMYXlvdXQ+KCh7IHByb2dyYW0sIGNoaWxkcmVuIH0pID0+IHtcbiAgICAgIGxldCB7IG5hbWVkLCB5aWVsZHMsIG1ldGEgfSA9IHRoaXMuc3BlYztcbiAgICAgIHJldHVybiBMYXlvdXQuY3JlYXRlKHsgY2hpbGRyZW4sIHByb2dyYW0sIG5hbWVkLCB5aWVsZHMsIHN5bWJvbFRhYmxlOiBudWxsLCBtZXRhIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2NhblBhcnRpYWwoc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogUGFydGlhbEJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5zY2FuVG9wPFBhcnRpYWxCbG9jaz4oKHsgcHJvZ3JhbSwgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgbGV0IHsgbG9jYWxzLCBtZXRhIH0gPSB0aGlzLnNwZWM7XG4gICAgICByZXR1cm4gbmV3IFBhcnRpYWxCbG9jayh7IGNoaWxkcmVuLCBwcm9ncmFtLCBsb2NhbHMsIHN5bWJvbFRhYmxlLCBtZXRhIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2FuVG9wPFQgZXh0ZW5kcyBUb3BMZXZlbFRlbXBsYXRlPihtYWtlVG9wOiAob3B0aW9uczogeyBwcm9ncmFtOiBQcm9ncmFtLCBjaGlsZHJlbjogSW5saW5lQmxvY2tbXSB9KSA9PiBUKTogVCB7XG4gICAgbGV0IHsgc3BlYyB9ID0gdGhpcztcbiAgICBsZXQgeyBibG9ja3M6IHNwZWNCbG9ja3MsIG1ldGEgfSA9IHNwZWM7XG5cbiAgICBsZXQgYmxvY2tzOiBJbmxpbmVCbG9ja1tdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMCwgYmxvY2s6IFNlcmlhbGl6ZWRCbG9jazsgYmxvY2sgPSBzcGVjQmxvY2tzW2ldOyBpKyspIHtcbiAgICAgIGJsb2Nrcy5wdXNoKHRoaXMuYnVpbGRCbG9jayhibG9jaywgYmxvY2tzLCBtZXRhKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VUb3AodGhpcy5idWlsZFN0YXRlbWVudHMoc3BlYywgYmxvY2tzKSkuaW5pdEJsb2NrcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEJsb2NrKGJsb2NrOiBTZXJpYWxpemVkQmxvY2ssIGJsb2NrczogSW5saW5lQmxvY2tbXSwgbWV0YTogQmxvY2tNZXRhKTogSW5saW5lQmxvY2t7XG4gICAgbGV0IHsgcHJvZ3JhbSwgY2hpbGRyZW4gfSA9IHRoaXMuYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCBibG9ja3MpO1xuICAgIHJldHVybiBuZXcgSW5saW5lQmxvY2soeyBjaGlsZHJlbiwgbG9jYWxzOiBibG9jay5sb2NhbHMsIHByb2dyYW0sIHN5bWJvbFRhYmxlOiBudWxsLCBtZXRhIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN0YXRlbWVudHMoeyBzdGF0ZW1lbnRzIH06IFNlcmlhbGl6ZWRCbG9jaywgYmxvY2tzOiBJbmxpbmVCbG9ja1tdKTogU2NhblJlc3VsdHMge1xuICAgIGlmIChzdGF0ZW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEVNUFRZX1BST0dSQU07XG4gICAgcmV0dXJuIG5ldyBCbG9ja1NjYW5uZXIoc3RhdGVtZW50cywgYmxvY2tzLCB0aGlzLmVudikuc2NhbigpO1xuICB9XG59XG5cbmludGVyZmFjZSBTY2FuUmVzdWx0cyB7XG4gIHByb2dyYW06IFByb2dyYW07XG4gIGNoaWxkcmVuOiBJbmxpbmVCbG9ja1tdO1xufVxuXG5jb25zdCBFTVBUWV9QUk9HUkFNID0ge1xuICBwcm9ncmFtOiBFTVBUWV9TTElDRSxcbiAgY2hpbGRyZW46IFtdXG59O1xuXG5leHBvcnQgY2xhc3MgQmxvY2tTY2FubmVyIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgcHJpdmF0ZSBzdGFjayA9IG5ldyBTdGFjazxDaGlsZEJsb2NrU2Nhbm5lcj4oKTtcbiAgcHJpdmF0ZSByZWFkZXI6IFN5bnRheFJlYWRlcjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnRzOiBTZXJpYWxpemVkU3RhdGVtZW50W10sIGJsb2NrczogSW5saW5lQmxvY2tbXSwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuc3RhY2sucHVzaChuZXcgQ2hpbGRCbG9ja1NjYW5uZXIoKSk7XG4gICAgdGhpcy5yZWFkZXIgPSBuZXcgU3ludGF4UmVhZGVyKHN0YXRlbWVudHMsIGJsb2Nrcyk7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gIH1cblxuICBzY2FuKCk6IFNjYW5SZXN1bHRzIHtcbiAgICBsZXQgc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXg7XG5cbiAgICB3aGlsZSAoc3RhdGVtZW50ID0gdGhpcy5yZWFkZXIubmV4dCgpKSB7XG4gICAgICB0aGlzLmFkZFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHByb2dyYW06IHRoaXMuc3RhY2suY3VycmVudC5wcm9ncmFtLCBjaGlsZHJlbjogdGhpcy5zdGFjay5jdXJyZW50LmNoaWxkcmVuIH07XG4gIH1cblxuICBzdGFydEJsb2NrKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaChuZXcgQ2hpbGRCbG9ja1NjYW5uZXIoKSk7XG4gIH1cblxuICBlbmRCbG9jaygpOiBJbmxpbmVCbG9jayB7XG4gICAgbGV0IHsgY2hpbGRyZW4sIHByb2dyYW0gfSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgbGV0IGJsb2NrID0gbmV3IElubGluZUJsb2NrKHsgY2hpbGRyZW4sIHByb2dyYW0sIHN5bWJvbFRhYmxlOiBudWxsLCBtZXRhOiBudWxsLCBsb2NhbHM6IFtdIH0pO1xuICAgIHRoaXMuYWRkQ2hpbGQoYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIGFkZENoaWxkKGJsb2NrOiBJbmxpbmVCbG9jaykge1xuICAgIHRoaXMuc3RhY2suY3VycmVudC5hZGRDaGlsZChibG9jayk7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgpIHtcbiAgICB0aGlzLnN0YWNrLmN1cnJlbnQuYWRkU3RhdGVtZW50KHN0YXRlbWVudC5zY2FuKHRoaXMpKTtcbiAgfVxuXG4gIG5leHQoKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkZXIubmV4dCgpO1xuICB9XG5cbiAgdW5wdXQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgpIHtcbiAgICB0aGlzLnJlYWRlci51bnB1dChzdGF0ZW1lbnQpO1xuICB9XG59XG5cbmNsYXNzIENoaWxkQmxvY2tTY2FubmVyIHtcbiAgcHVibGljIGNoaWxkcmVuOiBJbmxpbmVCbG9ja1tdID0gW107XG4gIHB1YmxpYyBwcm9ncmFtID0gbmV3IExpbmtlZExpc3Q8U3RhdGVtZW50U3ludGF4PigpO1xuXG4gIGFkZENoaWxkKGJsb2NrOiBJbmxpbmVCbG9jaykge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaChibG9jayk7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgpIHtcbiAgICB0aGlzLnByb2dyYW0uYXBwZW5kKHN0YXRlbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN5bnRheFJlYWRlciB7XG4gIHN0YXRlbWVudHM6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRbXTtcbiAgY3VycmVudDogbnVtYmVyID0gMDtcbiAgYmxvY2tzOiBJbmxpbmVCbG9ja1tdO1xuICBsYXN0OiBTdGF0ZW1lbnRTeW50YXggPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudHM6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRbXSwgYmxvY2tzOiBJbmxpbmVCbG9ja1tdKSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcztcbiAgfVxuXG4gIHVucHV0KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4KSB7XG4gICAgdGhpcy5sYXN0ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgbmV4dCgpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCBsYXN0ID0gdGhpcy5sYXN0O1xuICAgIGlmIChsYXN0KSB7XG4gICAgICB0aGlzLmxhc3QgPSBudWxsO1xuICAgICAgcmV0dXJuIGxhc3Q7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnQgPT09IHRoaXMuc3RhdGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBzZXhwID0gdGhpcy5zdGF0ZW1lbnRzW3RoaXMuY3VycmVudCsrXTtcbiAgICByZXR1cm4gYnVpbGRTdGF0ZW1lbnQoc2V4cCwgdGhpcy5ibG9ja3MpO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFRYyxPQUFBO0FBQ1osaUJBRFksT0FBQSxDQUNRLEtBQThCLEVBQVUsSUFBa0IsRUFBVSxHQUFnQixFQUFBO0FBQXBGLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBeUI7QUFBVSxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQWM7QUFBVSxnQkFBQSxDQUFBLEdBQUcsR0FBSCxHQUFHLENBQWE7U0FDdkc7O0FBRlcsZUFBQSxXQUlaLGNBQWMsR0FBQSwwQkFBQTtnQkFDTixLQUFLLEdBQVcsSUFBSSxDQUFwQixLQUFLO2dCQUFFLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFFakIsZ0JBQUksV0FBVyxHQUFHLHNDQUFZLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRCxnQkFBSSxPQUFPLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUUsbUJBQU8scUNBZkYsVUFBVSxDQWVPLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztTQUM3Qzs7QUFWVyxlQUFBLFdBWVosVUFBVSxHQUFBLHNCQUFBO2dCQUNGLEtBQUssR0FBVyxJQUFJLENBQXBCLEtBQUs7Z0JBQUUsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJO2dCQUNYLE1BQU0sR0FBb0IsS0FBSyxDQUEvQixNQUFNO2dCQUFFLEtBQUssR0FBYSxLQUFLLENBQXZCLEtBQUs7Z0JBQUUsTUFBTSxHQUFLLEtBQUssQ0FBaEIsTUFBTTs7QUFFM0IsZ0JBQUksV0FBVyxHQUFHLHNDQUFZLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdELGdCQUFJLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFB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ZmlsZSI6InNjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9ncmFtLCBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4IH0gZnJvbSAnLi9zeW50YXgnO1xuaW1wb3J0IGJ1aWxkU3RhdGVtZW50IGZyb20gJy4vc3ludGF4L3N0YXRlbWVudHMnO1xuaW1wb3J0IHsgRW50cnlQb2ludCwgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRU1QVFlfU0xJQ0UsIExpbmtlZExpc3QsIFN0YWNrIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCBUZW1wbGF0ZU1ldGEsIFNlcmlhbGl6ZWRCbG9jaywgU3RhdGVtZW50IGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnQgfSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjYW5uZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgcHJpdmF0ZSBtZXRhOiBUZW1wbGF0ZU1ldGEsIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudCkge1xuICB9XG5cbiAgc2NhbkVudHJ5UG9pbnQoKTogRW50cnlQb2ludCB7XG4gICAgbGV0IHsgYmxvY2ssIG1ldGEgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZS5mb3JFbnRyeVBvaW50KG1ldGEpO1xuICAgIGxldCBwcm9ncmFtID0gYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCBibG9jay5ibG9ja3MsIHN5bWJvbFRhYmxlLCB0aGlzLmVudik7XG4gICAgcmV0dXJuIG5ldyBFbnRyeVBvaW50KHByb2dyYW0sIHN5bWJvbFRhYmxlKTtcbiAgfVxuXG4gIHNjYW5MYXlvdXQoKTogTGF5b3V0IHtcbiAgICBsZXQgeyBibG9jaywgbWV0YSB9ID0gdGhpcztcbiAgICBsZXQgeyBibG9ja3MsIG5hbWVkLCB5aWVsZHMgfSA9IGJsb2NrO1xuXG4gICAgbGV0IHN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGUuZm9yTGF5b3V0KG5hbWVkLCB5aWVsZHMsIG1ldGEpO1xuICAgIGxldCBwcm9ncmFtID0gYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCBibG9ja3MsIHN5bWJvbFRhYmxlLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbmV3IExheW91dChwcm9ncmFtLCBzeW1ib2xUYWJsZSwgbmFtZWQsIHlpZWxkcyk7XG4gIH1cblxuICBzY2FuUGFydGlhbChzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBQYXJ0aWFsQmxvY2sge1xuICAgIGxldCB7IGJsb2NrIH0gPSB0aGlzO1xuICAgIGxldCB7IGJsb2NrcywgbG9jYWxzIH0gPSBibG9jaztcblxuICAgIGxldCBwcm9ncmFtID0gYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCBibG9ja3MsIHN5bWJvbFRhYmxlLCB0aGlzLmVudik7XG5cbiAgICByZXR1cm4gbmV3IFBhcnRpYWxCbG9jayhwcm9ncmFtLCBzeW1ib2xUYWJsZSwgbG9jYWxzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZFN0YXRlbWVudHMoeyBzdGF0ZW1lbnRzIH06IFNlcmlhbGl6ZWRCbG9jaywgYmxvY2tzOiBTZXJpYWxpemVkQmxvY2tbXSwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBlbnY6IEVudmlyb25tZW50KTogUHJvZ3JhbSB7XG4gIGlmIChzdGF0ZW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEVNUFRZX1BST0dSQU07XG4gIHJldHVybiBuZXcgQmxvY2tTY2FubmVyKHN0YXRlbWVudHMsIGJsb2Nrcywgc3ltYm9sVGFibGUsIGVudikuc2NhbigpO1xufVxuXG5jb25zdCBFTVBUWV9QUk9HUkFNID0gRU1QVFlfU0xJQ0U7XG5cbmV4cG9ydCBjbGFzcyBCbG9ja1NjYW5uZXIge1xuICBwdWJsaWMgZW52OiBFbnZpcm9ubWVudDtcblxuICBwcml2YXRlIHN0YWNrID0gbmV3IFN0YWNrPENoaWxkQmxvY2tTY2FubmVyPigpO1xuICBwcml2YXRlIHJlYWRlcjogU3ludGF4UmVhZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudHM6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRbXSwgcHJpdmF0ZSBibG9ja3M6IFNlcmlhbGl6ZWRCbG9ja1tdLCBwcml2YXRlIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuc3RhY2sucHVzaChuZXcgQ2hpbGRCbG9ja1NjYW5uZXIoc3ltYm9sVGFibGUpKTtcbiAgICB0aGlzLnJlYWRlciA9IG5ldyBTeW50YXhSZWFkZXIoc3RhdGVtZW50cywgc3ltYm9sVGFibGUsIHRoaXMpO1xuICAgIHRoaXMuZW52ID0gZW52O1xuICB9XG5cbiAgc2NhbigpOiBQcm9ncmFtIHtcbiAgICBsZXQgc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXg7XG5cbiAgICB3aGlsZSAoc3RhdGVtZW50ID0gdGhpcy5yZWFkZXIubmV4dCgpKSB7XG4gICAgICB0aGlzLmFkZFN0YXRlbWVudChzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YWNrLmN1cnJlbnQucHJvZ3JhbTtcbiAgfVxuXG4gIGJsb2NrRm9yKHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgaWQ6IG51bWJlcik6IElubGluZUJsb2NrIHtcbiAgICBsZXQgYmxvY2sgPSB0aGlzLmJsb2Nrc1tpZF07XG4gICAgbGV0IGNoaWxkVGFibGUgPSBTeW1ib2xUYWJsZS5mb3JCbG9jayh0aGlzLnN5bWJvbFRhYmxlLCBibG9jay5sb2NhbHMpO1xuICAgIGxldCBwcm9ncmFtID0gYnVpbGRTdGF0ZW1lbnRzKGJsb2NrLCB0aGlzLmJsb2NrcywgY2hpbGRUYWJsZSwgdGhpcy5lbnYpO1xuICAgIHJldHVybiBuZXcgSW5saW5lQmxvY2socHJvZ3JhbSwgY2hpbGRUYWJsZSwgYmxvY2subG9jYWxzKTtcbiAgfVxuXG4gIHN0YXJ0QmxvY2sobG9jYWxzOiBzdHJpbmdbXSkge1xuICAgIGxldCBjaGlsZFRhYmxlID0gU3ltYm9sVGFibGUuZm9yQmxvY2sodGhpcy5zeW1ib2xUYWJsZSwgbG9jYWxzKTtcbiAgICB0aGlzLnN0YWNrLnB1c2gobmV3IENoaWxkQmxvY2tTY2FubmVyKGNoaWxkVGFibGUpKTtcbiAgfVxuXG4gIGVuZEJsb2NrKGxvY2Fsczogc3RyaW5nW10pOiBJbmxpbmVCbG9jayB7XG4gICAgbGV0IHsgcHJvZ3JhbSwgc3ltYm9sVGFibGUgfSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgbGV0IGJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW0sIHN5bWJvbFRhYmxlLCBsb2NhbHMpO1xuICAgIHRoaXMuYWRkQ2hpbGQoYmxvY2spO1xuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIGFkZENoaWxkKGJsb2NrOiBJbmxpbmVCbG9jaykge1xuICAgIHRoaXMuc3RhY2suY3VycmVudC5hZGRDaGlsZChibG9jayk7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgpIHtcbiAgICB0aGlzLnN0YWNrLmN1cnJlbnQuYWRkU3RhdGVtZW50KHN0YXRlbWVudC5zY2FuKHRoaXMpKTtcbiAgfVxuXG4gIG5leHQoKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkZXIubmV4dCgpO1xuICB9XG59XG5cbmNsYXNzIENoaWxkQmxvY2tTY2FubmVyIHtcbiAgcHVibGljIGNoaWxkcmVuOiBJbmxpbmVCbG9ja1tdID0gW107XG4gIHB1YmxpYyBwcm9ncmFtID0gbmV3IExpbmtlZExpc3Q8U3RhdGVtZW50U3ludGF4PigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHt9XG5cbiAgYWRkQ2hpbGQoYmxvY2s6IElubGluZUJsb2NrKSB7XG4gICAgdGhpcy5jaGlsZHJlbi5wdXNoKGJsb2NrKTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudChzdGF0ZW1lbnQ6IFN0YXRlbWVudFN5bnRheCkge1xuICAgIHRoaXMucHJvZ3JhbS5hcHBlbmQoc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3ludGF4UmVhZGVyIHtcbiAgY3VycmVudDogbnVtYmVyID0gMDtcbiAgbGFzdDogU3RhdGVtZW50U3ludGF4ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YXRlbWVudHM6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRbXSwgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHByaXZhdGUgc2Nhbm5lcjogQmxvY2tTY2FubmVyKSB7fVxuXG4gIG5leHQoKTogU3RhdGVtZW50U3ludGF4IHtcbiAgICBsZXQgbGFzdCA9IHRoaXMubGFzdDtcbiAgICBpZiAobGFzdCkge1xuICAgICAgdGhpcy5sYXN0ID0gbnVsbDtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50ID09PSB0aGlzLnN0YXRlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgc2V4cCA9IHRoaXMuc3RhdGVtZW50c1t0aGlzLmN1cnJlbnQrK107XG4gICAgcmV0dXJuIGJ1aWxkU3RhdGVtZW50KHNleHAsIHRoaXMuc3ltYm9sVGFibGUsIHRoaXMuc2Nhbm5lcik7XG4gIH1cbn1cbiJdfQ== enifed('glimmer-runtime/lib/symbol-table', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) { 'use strict'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var SymbolTable = (function () { - function SymbolTable(parent, template) { - _classCallCheck(this, SymbolTable); + function SymbolTable(parent) { + var meta = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1]; + this.parent = parent; + this.meta = meta; this.locals = _glimmerUtil.dict(); this.named = _glimmerUtil.dict(); this.yields = _glimmerUtil.dict(); this.size = 1; - this.parent = parent; this.top = parent ? parent.top : this; - this.template = template; } - SymbolTable.initForEntryPoint = function initForEntryPoint(top) { - return top.symbolTable = new SymbolTable(null, top).initEntryPoint(top); + SymbolTable.forEntryPoint = function forEntryPoint(meta) { + return new SymbolTable(null, meta).initEntryPoint(); }; - SymbolTable.initForLayout = function initForLayout(layout) { - return layout.symbolTable = new SymbolTable(null, layout).initLayout(layout); + SymbolTable.forLayout = function forLayout(named, yields, meta) { + return new SymbolTable(null, meta).initLayout(named, yields); }; - SymbolTable.initForBlock = function initForBlock(_ref) { - var parent = _ref.parent; - var block = _ref.block; - - return block.symbolTable = new SymbolTable(parent, block).initBlock(block); + SymbolTable.forBlock = function forBlock(parent, locals) { + return new SymbolTable(parent, null).initBlock(locals); }; - SymbolTable.prototype.initEntryPoint = function initEntryPoint(_) { + SymbolTable.prototype.initEntryPoint = function initEntryPoint() { return this; }; - SymbolTable.prototype.initBlock = function initBlock(_ref2) { - var locals = _ref2.locals; - + SymbolTable.prototype.initBlock = function initBlock(locals) { this.initPositionals(locals); return this; }; - SymbolTable.prototype.initLayout = function initLayout(_ref3) { - var named = _ref3.named; - var yields = _ref3.yields; - + SymbolTable.prototype.initLayout = function initLayout(named, yields) { this.initNamed(named); this.initYields(yields); return this; }; @@ -20073,10 +20728,20 @@ return _this3.yields[b] = _this3.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]; @@ -20115,31 +20780,23 @@ return SymbolTable; })(); exports.default = SymbolTable; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBR0EsV0FBQTtBQXFCRSxpQkFyQkYsV0FBQSxDQXFCYyxNQUFtQixFQUFFLFFBQWUsRUFBQTtrQ0FyQmxELFdBQUE7O0FBZ0JVLGdCQUFBLENBQUEsTUFBTSxHQUFLLGFBbkJJLElBQUksRUFtQk0sQ0FBQztBQUMxQixnQkFBQSxDQUFBLEtBQUssR0FBTSxhQXBCSSxJQUFJLEVBb0JNLENBQUM7QUFDMUIsZ0JBQUEsQ0FBQSxNQUFNLEdBQUssYUFyQkksSUFBSSxFQXFCTSxDQUFDO0FBQzNCLGdCQUFBLENBQUEsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUdkLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDdEMsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzFCOztBQXpCSCxtQkFBQSxDQUNTLGlCQUFpQixHQUFBLDJCQUFDLEdBQWUsRUFBQTtBQUN0QyxtQkFBTyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekU7O0FBSEgsbUJBQUEsQ0FLUyxhQUFhLEdBQUEsdUJBQUMsTUFBYyxFQUFBO0FBQ2pDLG1CQUFPLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM5RTs7QUFQSCxtQkFBQSxDQVNTLFlBQVksR0FBQSxzQkFBQyxJQUE4RCxFQUFBO2dCQUE1RCxNQUFNLEdBQVIsSUFBOEQsQ0FBNUQsTUFBTTtnQkFBRSxLQUFLLEdBQWYsSUFBOEQsQ0FBcEQsS0FBSzs7QUFD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QU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFFcEIsZ0JBQUksTUFBTSxHQUFHLE1BQU0sQ0FBUyxJQUFJLENBQUMsQ0FBQztBQUVsQyxnQkFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDckIsc0JBQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hDO0FBRUQsbUJBQU8sTUFBTSxDQUFDO1NBQ2Y7O0FBM0ZILG1CQUFBLFdBNkZFLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO1NBQzFCOztlQS9GSCxXQUFBOzs7c0JBQUEsV0FBQSIsImZpbGUiOiJzeW1ib2wtdGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5lZFN0cmluZywgZGljdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBCbG9jaywgSW5saW5lQmxvY2ssIExheW91dCwgRW50cnlQb2ludCB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ltYm9sVGFibGUge1xuICBzdGF0aWMgaW5pdEZvckVudHJ5UG9pbnQodG9wOiBFbnRyeVBvaW50KTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiB0b3Auc3ltYm9sVGFibGUgPSBuZXcgU3ltYm9sVGFibGUobnVsbCwgdG9wKS5pbml0RW50cnlQb2ludCh0b3ApO1xuICB9XG5cbiAgc3RhdGljIGluaXRGb3JMYXlvdXQobGF5b3V0OiBMYXlvdXQpOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIGxheW91dC5zeW1ib2xUYWJsZSA9IG5ldyBTeW1ib2xUYWJsZShudWxsLCBsYXlvdXQpLmluaXRMYXlvdXQobGF5b3V0KTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0Rm9yQmxvY2soeyBwYXJlbnQsIGJsb2NrIH06IHsgcGFyZW50OiBTeW1ib2xUYWJsZSwgYmxvY2s6IElubGluZUJsb2NrIH0pOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIGJsb2NrLnN5bWJvbFRhYmxlID0gbmV3IFN5bWJvbFRhYmxlKHBhcmVudCwgYmxvY2spLmluaXRCbG9jayhibG9jayk7XG4gIH1cblxuICBwcml2YXRlIHBhcmVudDogU3ltYm9sVGFibGU7XG4gIHByaXZhdGUgdG9wOiBTeW1ib2xUYWJsZTtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogQmxvY2s7XG4gIHByaXZhdGUgbG9jYWxzICAgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSBuYW1lZCAgICA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHlpZWxkcyAgID0gZGljdDxudW1iZXI+KCk7XG4gIHB1YmxpYyBzaXplID0gMTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IFN5bWJvbFRhYmxlLCB0ZW1wbGF0ZTogQmxvY2spIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLnRvcCA9IHBhcmVudCA/IHBhcmVudC50b3AgOiB0aGlzO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIGluaXRFbnRyeVBvaW50KF86IGFueSk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdEJsb2NrKHsgbG9jYWxzIH06IHsgbG9jYWxzOiBJbnRlcm5lZFN0cmluZ1tdIH0pOiB0aGlzIHtcbiAgICB0aGlzLmluaXRQb3NpdGlvbmFscyhsb2NhbHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdExheW91dCh7IG5hbWVkLCB5aWVsZHMgfTogeyBuYW1lZDogSW50ZXJuZWRTdHJpbmdbXSwgeWllbGRzOiBJbnRlcm5lZFN0cmluZ1tdIH0pOiB0aGlzIHtcbiAgICB0aGlzLmluaXROYW1lZChuYW1lZCk7XG4gICAgdGhpcy5pbml0WWllbGRzKHlpZWxkcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0UG9zaXRpb25hbHMocG9zaXRpb25hbHM6IEludGVybmVkU3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAocG9zaXRpb25hbHMpIHBvc2l0aW9uYWxzLmZvckVhY2gocyA9PiB0aGlzLmxvY2Fsc1s8c3RyaW5nPnNdID0gdGhpcy50b3Auc2l6ZSsrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXROYW1lZChuYW1lZDogSW50ZXJuZWRTdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmIChuYW1lZCkgbmFtZWQuZm9yRWFjaChzID0+IHRoaXMubmFtZWRbPHN0cmluZz5zXSA9IHRoaXMudG9wLnNpemUrKyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0WWllbGRzKHlpZWxkczogSW50ZXJuZWRTdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmICh5aWVsZHMpIHlpZWxkcy5mb3JFYWNoKGIgPT4gdGhpcy55aWVsZHNbPHN0cmluZz5iXSA9IHRoaXMudG9wLnNpemUrKyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRZaWVsZChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IHsgeWllbGRzLCBwYXJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sID0geWllbGRzWzxzdHJpbmc+bmFtZV07XG5cbiAgICBpZiAoIXN5bWJvbCAmJiBwYXJlbnQpIHtcbiAgICAgIHN5bWJvbCA9IHBhcmVudC5nZXRZaWVsZChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgZ2V0TmFtZWQobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCB7IG5hbWVkLCBwYXJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sID0gbmFtZWRbPHN0cmluZz5uYW1lXTtcblxuICAgIGlmICghc3ltYm9sICYmIHBhcmVudCkge1xuICAgICAgc3ltYm9sID0gcGFyZW50LmdldE5hbWVkKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH1cblxuICBnZXRMb2NhbChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IHsgbG9jYWxzLCBwYXJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sID0gbG9jYWxzWzxzdHJpbmc+bmFtZV07XG5cbiAgICBpZiAoIXN5bWJvbCAmJiBwYXJlbnQpIHtcbiAgICAgIHN5bWJvbCA9IHBhcmVudC5nZXRMb2NhbChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgaXNUb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9wID09PSB0aGlzO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQUdjLFdBQUE7QUFtQlosaUJBbkJZLFdBQUEsQ0FtQlEsTUFBbUIsRUFBbUM7Z0JBQXpCLElBQUEseURBQXFCLElBQUk7O0FBQXRELGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBYTtBQUFVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBcUI7QUFMbEUsZ0JBQUEsQ0FBQSxNQUFNLEdBQUssYUFqQlosSUFBSSxFQWlCc0IsQ0FBQztBQUMxQixnQkFBQSxDQUFBLEtBQUssR0FBTSxhQWxCWixJQUFJLEVBa0JzQixDQUFDO0FBQzFCLGdCQUFBLENBQUEsTUFBTSxHQUFLLGFBbkJaLElBQUksRUFtQnNCLENBQUM7QUFDM0IsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBR2QsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDOztBQXJCVyxtQkFBQSxDQUNMLGFBQWEsR0FBQSx1QkFBQyxJQUFrQixFQUFBO0FBQ3JDLG1CQUFPLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNyRDs7QUFIVyxtQkFBQSxDQUtMLFNBQVMsR0FBQSxtQkFBQyxLQUFlLEVBQUUsTUFBZ0IsRUFBRSxJQUFrQixFQUFBO0FBQ3BFLG1CQUFPLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzlEOztBQVBXLG1CQUFBLENBU0wsUUFBUSxHQUFBLGtCQUFDLE1BQW1CLEVBQUUsTUFBZ0IsRUFBQTtBQUNuRCxtQkFBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFD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QUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFFcEIsZ0JBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUUxQixnQkFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDckIsc0JBQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hDO0FBRUQsbUJBQU8sTUFBTSxDQUFDO1NBQ2Y7O0FBakdXLG1CQUFBLFdBbUdaLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO1NBQzFCOztlQXJHVyxXQUFBOzs7c0JBQUEsV0FBQSIsImZpbGUiOiJzeW1ib2wtdGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFRlbXBsYXRlTWV0YSB9IGZyb20gJ2dsaW1tZXItd2lyZS1mb3JtYXQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW1ib2xUYWJsZSB7XG4gIHN0YXRpYyBmb3JFbnRyeVBvaW50KG1ldGE6IFRlbXBsYXRlTWV0YSk6IFN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gbmV3IFN5bWJvbFRhYmxlKG51bGwsIG1ldGEpLmluaXRFbnRyeVBvaW50KCk7XG4gIH1cblxuICBzdGF0aWMgZm9yTGF5b3V0KG5hbWVkOiBzdHJpbmdbXSwgeWllbGRzOiBzdHJpbmdbXSwgbWV0YTogVGVtcGxhdGVNZXRhKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBuZXcgU3ltYm9sVGFibGUobnVsbCwgbWV0YSkuaW5pdExheW91dChuYW1lZCwgeWllbGRzKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JCbG9jayhwYXJlbnQ6IFN5bWJvbFRhYmxlLCBsb2NhbHM6IHN0cmluZ1tdKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBuZXcgU3ltYm9sVGFibGUocGFyZW50LCBudWxsKS5pbml0QmxvY2sobG9jYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9wOiBTeW1ib2xUYWJsZTtcbiAgcHJpdmF0ZSBsb2NhbHMgICA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIG5hbWVkICAgID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgeWllbGRzICAgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHVibGljIHNpemUgPSAxO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSwgcHJpdmF0ZSBtZXRhOiBUZW1wbGF0ZU1ldGEgPSBudWxsKSB7XG4gICAgdGhpcy50b3AgPSBwYXJlbnQgPyBwYXJlbnQudG9wIDogdGhpcztcbiAgfVxuXG4gIGluaXRFbnRyeVBvaW50KCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdEJsb2NrKGxvY2Fsczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLmluaXRQb3NpdGlvbmFscyhsb2NhbHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdExheW91dChuYW1lZDogc3RyaW5nW10sIHlpZWxkczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLmluaXROYW1lZChuYW1lZCk7XG4gICAgdGhpcy5pbml0WWllbGRzKHlpZWxkcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbml0UG9zaXRpb25hbHMocG9zaXRpb25hbHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKHBvc2l0aW9uYWxzKSBwb3NpdGlvbmFscy5mb3JFYWNoKHMgPT4gdGhpcy5sb2NhbHNbc10gPSB0aGlzLnRvcC5zaXplKyspO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdE5hbWVkKG5hbWVkOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmIChuYW1lZCkgbmFtZWQuZm9yRWFjaChzID0+IHRoaXMubmFtZWRbc10gPSB0aGlzLnRvcC5zaXplKyspO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdFlpZWxkcyh5aWVsZHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKHlpZWxkcykgeWllbGRzLmZvckVhY2goYiA9PiB0aGlzLnlpZWxkc1tiXSA9IHRoaXMudG9wLnNpemUrKyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRNZXRhKCk6IFRlbXBsYXRlTWV0YSB7XG4gICAgbGV0IHsgbWV0YSwgcGFyZW50IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFtZXRhICYmIHBhcmVudCkge1xuICAgICAgbWV0YSA9IHBhcmVudC5nZXRNZXRhKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBnZXRZaWVsZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCB7IHlpZWxkcywgcGFyZW50IH0gPSB0aGlzO1xuXG4gICAgbGV0IHN5bWJvbCA9IHlpZWxkc1tuYW1lXTtcblxuICAgIGlmICghc3ltYm9sICYmIHBhcmVudCkge1xuICAgICAgc3ltYm9sID0gcGFyZW50LmdldFlpZWxkKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH1cblxuICBnZXROYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCB7IG5hbWVkLCBwYXJlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sID0gbmFtZWRbbmFtZV07XG5cbiAgICBpZiAoIXN5bWJvbCAmJiBwYXJlbnQpIHtcbiAgICAgIHN5bWJvbCA9IHBhcmVudC5nZXROYW1lZChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgZ2V0TG9jYWwobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgeyBsb2NhbHMsIHBhcmVudCB9ID0gdGhpcztcblxuICAgIGxldCBzeW1ib2wgPSBsb2NhbHNbbmFtZV07XG5cbiAgICBpZiAoIXN5bWJvbCAmJiBwYXJlbnQpIHtcbiAgICAgIHN5bWJvbCA9IHBhcmVudC5nZXRMb2NhbChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgaXNUb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9wID09PSB0aGlzO1xuICB9XG59XG4iXX0= enifed("glimmer-runtime/lib/syntax", ["exports"], function (exports) { "use strict"; exports.isAttribute = isAttribute; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Statement = (function () { function Statement() { - _classCallCheck(this, Statement); - this.next = null; this.prev = null; } - Statement.fromSpec = function fromSpec(spec, blocks) { + Statement.fromSpec = function fromSpec(spec, symbolTable, scanner) { throw new Error("You need to implement fromSpec on " + this); }; Statement.prototype.clone = function clone() { // not type safe but the alternative is extreme boilerplate per @@ -20155,13 +20812,11 @@ })(); exports.Statement = Statement; var Expression = (function () { - function Expression() { - _classCallCheck(this, Expression); - } + function Expression() {} Expression.fromSpec = function fromSpec(spec, blocks) { throw new Error("You need to implement fromSpec on " + this); }; @@ -20173,39 +20828,27 @@ exports.ATTRIBUTE = ATTRIBUTE; var ARGUMENT = "0f3802314-d747-bbc5-0168-97875185c3rt"; exports.ARGUMENT = ARGUMENT; var Attribute = (function (_Statement) { - _inherits(Attribute, _Statement); + babelHelpers.inherits(Attribute, _Statement); function Attribute() { - _classCallCheck(this, Attribute); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _Statement.call.apply(_Statement, [this].concat(args)); + _Statement.apply(this, arguments); this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true; } return Attribute; })(Statement); exports.Attribute = Attribute; var Argument = (function (_Statement2) { - _inherits(Argument, _Statement2); + babelHelpers.inherits(Argument, _Statement2); function Argument() { - _classCallCheck(this, Argument); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _Statement2.call.apply(_Statement2, [this].concat(args)); + _Statement2.apply(this, arguments); this["0f3802314-d747-bbc5-0168-97875185c3rt"] = true; } return Argument; })(Statement); @@ -20214,29 +20857,21 @@ function isAttribute(value) { return value && value[ATTRIBUTE] === true; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBbUJBLFNBQUE7QUFBQSxpQkFBQSxTQUFBLEdBQUE7a0NBQUEsU0FBQTs7QUFNUyxnQkFBQSxDQUFBLElBQUksR0FBYyxJQUFJLENBQUM7QUFDdkIsZ0JBQUEsQ0FBQSxJQUFJLEdBQWMsSUFBSSxDQUFDO1NBYS9COztBQXBCRCxpQkFBQSxDQUNTLFFBQVEsR0FBQSxrQkFBZ0MsSUFBTyxFQUFFLE1BQXNCLEVBQUE7QUFDNUUsa0JBQU0sSUFBSSxLQUFLLHdDQUFzQyxJQUFJLENBQUcsQ0FBQztTQUM5RDs7QUFISCxpQkFBQSxXQVNFLEtBQUssR0FBQSxpQkFBQTs7O0FBR0gsbUJBQU8sSUFBdUIsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RDs7QUFiSCxpQkFBQSxXQWlCRSxJQUFJLEdBQUEsY0FBQyxPQUFxQixFQUFBO0FBQ3hCLG1CQUFPLElBQUksQ0FBQztTQUNiOztlQW5CSCxTQUFBOzs7OztRQTBCQSxVQUFBO2lCQUFBLFVBQUE7a0NBQUEsVUFBQTs7O0FBQUEsa0JBQUEsQ0FDUyxRQUFRLEdBQUEsa0JBQTBELElBQU8sRUFBRSxNQUFzQixFQUFBO0FBQ3RHLGtCQUFNLElBQUksS0FBSyx3Q0FBc0MsSUFBSSxDQUFHLENBQUM7U0FDOUQ7O2VBSEgsVUFBQTs7OztBQWdDTyxRQUFNLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQzs7QUFDekQsUUFBTSxRQUFRLEdBQUcsdUNBQXVDLENBQUM7OztRQUloRSxTQUFBO2tCQUFBLFNBQUE7O0FBQUEsaUJBQUEsU0FBQSxHQUFBO2tDQUFBLFNBQUE7OzhDQUFBLElBQUE7QUFBQSxvQkFBQTs7O0FBQTJDLDREQUFBLElBQUEsRUFBQSxDQUFTO0FBQ2xELGdCQUFBLENBQUEsc0NBQUEsQ0FBc0MsR0FBRyxJQUFJLENBQUM7U0FJL0M7O2VBTEQsU0FBQTtPQUEyQyxTQUFTOzs7O1FBT3BELFFBQUE7a0JBQUEsUUFBQTs7QUFBQSxpQkFBQSxRQUFBLEdBQUE7a0NBQUEsUUFBQTs7K0NBQUEsSUFBQTtBQUFBLG9CQUFBOzs7QUFBMEMsOERBQUEsSUFBQSxFQUFBLENBQVM7QUFDakQsZ0JBQUEsQ0FBQSx1Q0FBQSxDQUF1QyxHQUFHLElBQUksQ0FBQztTQUloRDs7ZUFMRCxRQUFBO09BQTBDLFNBQVM7Ozs7QUFPbkQsYUFBQSxXQUFBLENBQTRCLEtBQWdCLEVBQUE7QUFDMUMsZUFBTyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQztLQUMzQyIsImZpbGUiOiJzeW50YXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rZWRMaXN0Tm9kZSwgU2xpY2UsIEludGVybmVkU3RyaW5nIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IEJsb2NrU2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxIH0gZnJvbSAnLi9vcGNvZGVzJztcbmltcG9ydCB7IElubGluZUJsb2NrLCBCbG9jayB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXIgZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIFN0YXRlbWVudCBhcyBTZXJpYWxpemVkU3RhdGVtZW50LFxuICBFeHByZXNzaW9uIGFzIFNlcmlhbGl6ZWRFeHByZXNzaW9uLFxuICBCbG9ja01ldGFcbn0gZnJvbSAnZ2xpbW1lci13aXJlLWZvcm1hdCc7XG5cbmludGVyZmFjZSBTdGF0ZW1lbnRDbGFzczxUIGV4dGVuZHMgU2VyaWFsaXplZFN0YXRlbWVudCwgVSBleHRlbmRzIFN0YXRlbWVudD4ge1xuICBmcm9tU3BlYyhzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogVTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlbWVudCBpbXBsZW1lbnRzIExpbmtlZExpc3ROb2RlIHtcbiAgc3RhdGljIGZyb21TcGVjPFQgZXh0ZW5kcyBTZXJpYWxpemVkU3RhdGVtZW50PihzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogU3RhdGVtZW50IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIGltcGxlbWVudCBmcm9tU3BlYyBvbiAke3RoaXN9YCk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgbmV4dDogU3RhdGVtZW50ID0gbnVsbDtcbiAgcHVibGljIHByZXY6IFN0YXRlbWVudCA9IG51bGw7XG5cbiAgY2xvbmUoKTogdGhpcyB7XG4gICAgLy8gbm90IHR5cGUgc2FmZSBidXQgdGhlIGFsdGVybmF0aXZlIGlzIGV4dHJlbWUgYm9pbGVycGxhdGUgcGVyXG4gICAgLy8gc3ludGF4IHN1YmNsYXNzLlxuICAgIHJldHVybiBuZXcgKDxuZXcgKGFueSkgPT4gYW55PnRoaXMuY29uc3RydWN0b3IpKHRoaXMpO1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZShvcGNvZGVzOiBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlciwgZW52OiBFbnZpcm9ubWVudCwgYmxvY2s6IEJsb2NrKTtcblxuICBzY2FuKHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IFN0YXRlbWVudCB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEV4cHJlc3Npb25DbGFzczxUIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb24sIFUgZXh0ZW5kcyBFeHByZXNzaW9uPFQ+PiB7XG4gIGZyb21TcGVjKHNwZWM6IFQsIGJsb2Nrcz86IElubGluZUJsb2NrW10pOiBVO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXhwcmVzc2lvbjxUPiB7XG4gIHN0YXRpYyBmcm9tU3BlYzxUIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb24sIFUgZXh0ZW5kcyBFeHByZXNzaW9uPFQ+PihzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogVSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBpbXBsZW1lbnQgZnJvbVNwZWMgb24gJHt0aGlzfWApO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHR5cGU6IHN0cmluZztcblxuICBhYnN0cmFjdCBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHBhcmVudE1ldGE/OiBCbG9ja01ldGEpOiBDb21waWxlZEV4cHJlc3Npb248VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ltYm9sTG9va3VwIHtcbiAgZ2V0TG9jYWxTeW1ib2wobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBudW1iZXI7XG4gIGhhc0xvY2FsU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbjtcbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBudW1iZXI7XG4gIGhhc05hbWVkU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbjtcbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogSW50ZXJuZWRTdHJpbmcpOiBudW1iZXI7XG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IEludGVybmVkU3RyaW5nKTogYm9vbGVhbjtcblxuICAvLyBvbmx5IHVzZWQgZm9yIHt7dmlldy5uYW1lfX1cbiAgaGFzS2V5d29yZChuYW1lOiBJbnRlcm5lZFN0cmluZyk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZUludG8ge1xuICBhcHBlbmQob3A6IE9wY29kZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIgZXh0ZW5kcyBDb21waWxlSW50bywgU3ltYm9sTG9va3VwLCBPcGNvZGVCdWlsZGVyIHtcbiAgdG9PcFNlcSgpOiBPcFNlcTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvZ3JhbSA9IFNsaWNlPFN0YXRlbWVudD47XG5cbmV4cG9ydCBjb25zdCBBVFRSSUJVVEUgPSBcImUxMTg1ZDMwLTdjYWMtNGIxMi1iMjZhLTM1MzI3ZDkwNWQ5MlwiO1xuZXhwb3J0IGNvbnN0IEFSR1VNRU5UID0gXCIwZjM4MDIzMTQtZDc0Ny1iYmM1LTAxNjgtOTc4NzUxODVjM3J0XCI7XG5cbmV4cG9ydCB0eXBlIFBhcmFtZXRlcjxUPiA9IEF0dHJpYnV0ZTxUPiB8IEFyZ3VtZW50PFQ+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXR0cmlidXRlPFQ+IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBhYnN0cmFjdCB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uPFQ+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXJndW1lbnQ8VD4gZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBcIjBmMzgwMjMxNC1kNzQ3LWJiYzUtMDE2OC05Nzg3NTE4NWMzcnRcIiA9IHRydWU7XG4gIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBhYnN0cmFjdCB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBdHRyaWJ1dGUodmFsdWU6IFN0YXRlbWVudCk6IHZhbHVlIGlzIEF0dHJpYnV0ZTxhbnk+IHtcbiAgcmV0dXJuIHZhbHVlICYmIHZhbHVlW0FUVFJJQlVURV0gPT09IHRydWU7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBbUJNLFNBQUE7QUFBTixpQkFBTSxTQUFBLEdBQU47QUFNUyxnQkFBQSxDQUFBLElBQUksR0FBYyxJQUFJLENBQUM7QUFDdkIsZ0JBQUEsQ0FBQSxJQUFJLEdBQWMsSUFBSSxDQUFDO1NBYS9COztBQXBCSyxpQkFBQSxDQUNHLFFBQVEsR0FBQSxrQkFBZ0MsSUFBTyxFQUFFLFdBQXdCLEVBQUUsT0FBc0IsRUFBQTtBQUN0RyxrQkFBTSxJQUFJLEtBQUssd0NBQXNDLElBQUksQ0FBRyxDQUFDO1NBQzlEOztBQUhHLGlCQUFBLFdBU0osS0FBSyxHQUFBLGlCQUFBOzs7QUFHSCxtQkFBTyxJQUF1QixJQUFJLENBQUMsV0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZEOztBQWJHLGlCQUFBLFdBaUJKLElBQUksR0FBQSxjQUFDLE9BQXFCLEVBQUE7QUFDeEIsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O2VBbkJHLFNBQUE7Ozs7O1FBOEJBLFVBQUE7aUJBQUEsVUFBQTs7QUFBQSxrQkFBQSxDQUNHLFFBQVEsR0FBQSxrQkFBMEQsSUFBTyxFQUFFLE1BQXNCLEVBQUE7QUFDdEcsa0JBQU0sSUFBSSxLQUFLLHdDQUFzQyxJQUFJLENBQUcsQ0FBQztTQUM5RDs7ZUFIRyxVQUFBOzs7O0FBOEJDLFFBQU0sU0FBUyxHQUFHLHNDQUFzQyxDQUFDOztBQUN6RCxRQUFNLFFBQVEsR0FBRyx1Q0FBdUMsQ0FBQzs7O1FBSTFELFNBQTZCOzhCQUE3QixTQUE2Qjs7QUFBbkMsaUJBQU0sU0FBNkIsR0FBbkM7QUMxRFEsbUNBQVMsU0FBUyxDQUFDLENBQUM7QUQyRDFCLGdCQUFBLENBQUEsc0NBQUEsQ0FBc0MsR0FBRyxJQUFJLENBQUM7U0FJL0M7O2VBTEssU0FBNkI7T0FBUSxTQUFTOzs7O1FBTzlDLFFBQTRCOzhCQUE1QixRQUE0Qjs7QUFBbEMsaUJBQU0sUUFBNEIsR0FBbEM7QUMzRFEsb0NBQVMsU0FBUyxDQUFDLENBQUM7QUQ0RDFCLGdCQUFBLENBQUEsdUNBQUEsQ0FBdUMsR0FBRyxJQUFJLENBQUM7U0FJaEQ7O2VBTEssUUFBNEI7T0FBUSxTQUFTOzs7O0FBTzdDLGFBQUEsV0FBQSxDQUFzQixLQUFnQixFQUFBO0FBQzFDLGVBQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUM7S0FDM0MiLCJmaWxlIjoic3ludGF4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlua2VkTGlzdE5vZGUsIFNsaWNlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IEJsb2NrU2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxIH0gZnJvbSAnLi9vcGNvZGVzJztcbmltcG9ydCB7IElubGluZUJsb2NrIH0gZnJvbSAnLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4vc3ltYm9sLXRhYmxlJztcblxuaW1wb3J0IHsgQ29tcG9uZW50QnVpbGRlciB9IGZyb20gJy4vb3Bjb2RlLWJ1aWxkZXInO1xuXG5pbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU2VyaWFsaXplZFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvbiBhcyBTZXJpYWxpemVkRXhwcmVzc2lvblxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuaW50ZXJmYWNlIFN0YXRlbWVudENsYXNzPFQgZXh0ZW5kcyBTZXJpYWxpemVkU3RhdGVtZW50LCBVIGV4dGVuZHMgU3RhdGVtZW50PiB7XG4gIGZyb21TcGVjKHNwZWM6IFQsIGJsb2Nrcz86IElubGluZUJsb2NrW10pOiBVO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGVtZW50IGltcGxlbWVudHMgTGlua2VkTGlzdE5vZGUge1xuICBzdGF0aWMgZnJvbVNwZWM8VCBleHRlbmRzIFNlcmlhbGl6ZWRTdGF0ZW1lbnQ+KHNwZWM6IFQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSwgc2Nhbm5lcj86IEJsb2NrU2Nhbm5lcik6IFN0YXRlbWVudCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBpbXBsZW1lbnQgZnJvbVNwZWMgb24gJHt0aGlzfWApO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHR5cGU6IHN0cmluZztcbiAgcHVibGljIG5leHQ6IFN0YXRlbWVudCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2OiBTdGF0ZW1lbnQgPSBudWxsO1xuXG4gIGNsb25lKCk6IHRoaXMge1xuICAgIC8vIG5vdCB0eXBlIHNhZmUgYnV0IHRoZSBhbHRlcm5hdGl2ZSBpcyBleHRyZW1lIGJvaWxlcnBsYXRlIHBlclxuICAgIC8vIHN5bnRheCBzdWJjbGFzcy5cbiAgICByZXR1cm4gbmV3ICg8bmV3IChhbnkpID0+IGFueT50aGlzLmNvbnN0cnVjdG9yKSh0aGlzKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGUob3Bjb2RlczogU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk7XG5cbiAgc2NhbihzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnQge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmludGVyZmFjZSBFeHByZXNzaW9uQ2xhc3M8VCBleHRlbmRzIFNlcmlhbGl6ZWRFeHByZXNzaW9uLCBVIGV4dGVuZHMgRXhwcmVzc2lvbjxUPj4ge1xuICBmcm9tU3BlYyhzcGVjOiBULCBibG9ja3M/OiBJbmxpbmVCbG9ja1tdKTogVTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlc0ludG88VD4ge1xuICBjb21waWxlKGRzbDogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBUO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRXhwcmVzc2lvbjxUPiBpbXBsZW1lbnRzIENvbXBpbGVzSW50bzxDb21waWxlZEV4cHJlc3Npb248VD4+IHtcbiAgc3RhdGljIGZyb21TcGVjPFQgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbiwgVSBleHRlbmRzIEV4cHJlc3Npb248VD4+KHNwZWM6IFQsIGJsb2Nrcz86IElubGluZUJsb2NrW10pOiBVIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIGltcGxlbWVudCBmcm9tU3BlYyBvbiAke3RoaXN9YCk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGNvbXBpbGUoZHNsOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IENvbXBpbGVkRXhwcmVzc2lvbjxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW1ib2xMb29rdXAge1xuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc0xvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgaGFzTmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBoYXNCbG9ja1N5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVJbnRvIHtcbiAgYXBwZW5kKG9wOiBPcGNvZGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyIGV4dGVuZHMgQ29tcGlsZUludG8sIFN5bWJvbExvb2t1cCB7XG4gIGNvbXBvbmVudDogQ29tcG9uZW50QnVpbGRlcjtcbiAgdG9PcFNlcSgpOiBPcFNlcTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvZ3JhbSA9IFNsaWNlPFN0YXRlbWVudD47XG5cbmV4cG9ydCBjb25zdCBBVFRSSUJVVEUgPSBcImUxMTg1ZDMwLTdjYWMtNGIxMi1iMjZhLTM1MzI3ZDkwNWQ5MlwiO1xuZXhwb3J0IGNvbnN0IEFSR1VNRU5UID0gXCIwZjM4MDIzMTQtZDc0Ny1iYmM1LTAxNjgtOTc4NzUxODVjM3J0XCI7XG5cbmV4cG9ydCB0eXBlIFBhcmFtZXRlcjxUPiA9IEF0dHJpYnV0ZTxUPiB8IEFyZ3VtZW50PFQ+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXR0cmlidXRlPFQ+IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIG5hbWU6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIGFic3RyYWN0IHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb248VD47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcmd1bWVudDxUPiBleHRlbmRzIFN0YXRlbWVudCB7XG4gIFwiMGYzODAyMzE0LWQ3NDctYmJjNS0wMTY4LTk3ODc1MTg1YzNydFwiID0gdHJ1ZTtcbiAgbmFtZTogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgYWJzdHJhY3QgdmFsdWVTeW50YXgoKTogRXhwcmVzc2lvbjxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXR0cmlidXRlKHZhbHVlOiBTdGF0ZW1lbnQpOiB2YWx1ZSBpcyBBdHRyaWJ1dGU8YW55PiB7XG4gIHJldHVybiB2YWx1ZSAmJiB2YWx1ZVtBVFRSSUJVVEVdID09PSB0cnVlO1xufVxuIiwiZXhwb3J0IGNsYXNzIFN0YXRlbWVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyhzcGVjLCBzeW1ib2xUYWJsZSwgc2Nhbm5lcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIGltcGxlbWVudCBmcm9tU3BlYyBvbiAke3RoaXN9YCk7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICAvLyBub3QgdHlwZSBzYWZlIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgZXh0cmVtZSBib2lsZXJwbGF0ZSBwZXJcbiAgICAgICAgLy8gc3ludGF4IHN1YmNsYXNzLlxuICAgICAgICByZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XG4gICAgfVxuICAgIHNjYW4oc2Nhbm5lcikge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvbiB7XG4gICAgc3RhdGljIGZyb21TcGVjKHNwZWMsIGJsb2Nrcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIGltcGxlbWVudCBmcm9tU3BlYyBvbiAke3RoaXN9YCk7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFUVFJJQlVURSA9IFwiZTExODVkMzAtN2NhYy00YjEyLWIyNmEtMzUzMjdkOTA1ZDkyXCI7XG5leHBvcnQgY29uc3QgQVJHVU1FTlQgPSBcIjBmMzgwMjMxNC1kNzQ3LWJiYzUtMDE2OC05Nzg3NTE4NWMzcnRcIjtcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGUgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzW1wiZTExODVkMzAtN2NhYy00YjEyLWIyNmEtMzUzMjdkOTA1ZDkyXCJdID0gdHJ1ZTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQXJndW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzW1wiMGYzODAyMzE0LWQ3NDctYmJjNS0wMTY4LTk3ODc1MTg1YzNydFwiXSA9IHRydWU7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQXR0cmlidXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlW0FUVFJJQlVURV0gPT09IHRydWU7XG59XG4iXX0= enifed('glimmer-runtime/lib/syntax/builtins/each', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var EachSyntax = (function (_StatementSyntax) { - _inherits(EachSyntax, _StatementSyntax); + babelHelpers.inherits(EachSyntax, _StatementSyntax); function EachSyntax(_ref) { var args = _ref.args; var templates = _ref.templates; - _classCallCheck(this, EachSyntax); - _StatementSyntax.call(this); this.type = "each-statement"; this.isStatic = false; this.args = args; this.templates = templates; @@ -20292,29 +20927,21 @@ return EachSyntax; })(_glimmerRuntimeLibSyntax.Statement); exports.default = EachSyntax; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2VhY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBVUEsVUFBQTtrQkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O2tDQVAvQixVQUFBOztBQVFJLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkF5QnZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQzdDLG1CQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFbEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDeEIsTUFBTTtBQUNMLHVCQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjtBQUVELG1CQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDdEMsdUJBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4Qix1QkFBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNoQixDQUFDLENBQUM7QUFFSCxvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBN0RILFVBQUE7Z0NBVEUsU0FBUzs7c0JBU1gsVUFBQSIsImZpbGUiOiJlYWNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhY2hTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJlYWNoLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogIE5vb3BcbiAgICAvLyAgICAgICAgIFB1dEFyZ3NcbiAgICAvLyAgICAgICAgIFB1dEl0ZXJhYmxlXG4gICAgLy8gICAgICAgICBKdW1wVW5sZXNzKEVMU0UpXG4gICAgLy8gICAgICAgICBFbnRlckxpc3QoQkVHSU4yLCBFTkQyKVxuICAgIC8vIElURVI6ICAgTm9vcFxuICAgIC8vICAgICAgICAgTmV4dEl0ZXIoQlJFQUspXG4gICAgLy8gICAgICAgICBFbnRlcldpdGhLZXkoQkVHSU4yLCBFTkQyKVxuICAgIC8vIEJFR0lOMjogTm9vcFxuICAgIC8vICAgICAgICAgUHVzaENoaWxkU2NvcGVcbiAgICAvLyAgICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgICBQb3BTY29wZVxuICAgIC8vIEVORDI6ICAgTm9vcFxuICAgIC8vICAgICAgICAgRXhpdFxuICAgIC8vICAgICAgICAgSnVtcChJVEVSKVxuICAgIC8vIEJSRUFLOiAgTm9vcFxuICAgIC8vICAgICAgICAgRXhpdExpc3RcbiAgICAvLyAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICAgTm9vcFxuICAgIC8vICAgICAgICAgRXZhbHVsYXRlKGludmVyc2UpXG4gICAgLy8gRU5EOiAgICBOb29wXG4gICAgLy8gICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnB1dEl0ZXJhdG9yKCk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoRU5EKTtcbiAgICAgIH1cblxuICAgICAgZHNsLml0ZXIoeyB0ZW1wbGF0ZXMgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgICBkc2wucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICAgIGRzbC5wb3BTY29wZSgpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2VhY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBVWMsVUFBa0I7OEJBQWxCLFVBQWtCOztBQU85QixpQkFQWSxVQUFrQixDQU9sQixJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYVyxrQkFBa0IsV0FhOUIsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQXlCdkMsSUFBSSxHQUFnQixJQUFJLENBQXhCLElBQUk7Z0JBQUUsU0FBUyxHQUFLLElBQUksQ0FBbEIsU0FBUzs7QUFFckIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDN0MsbUJBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUVsQixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN4QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3JCO0FBRUQsbUJBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUN0Qyx1QkFBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2hCLENBQUMsQ0FBQztBQUVILG9CQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDckIsdUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCx1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUE3RFcsVUFBa0I7Z0NBVDlCLFNBQVM7O3NCQVNHLFVBQWtCIiwiZmlsZSI6ImVhY2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFjaFN5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcImVhY2gtc3RhdGVtZW50XCI7XG5cbiAgcHVibGljIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBwdWJsaWMgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcih7IGFyZ3MsIHRlbXBsYXRlcyB9OiB7IGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgfVxuXG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyRFNMLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgLy8gICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiAgTm9vcFxuICAgIC8vICAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICAgUHV0SXRlcmFibGVcbiAgICAvLyAgICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgIEVudGVyTGlzdChCRUdJTjIsIEVORDIpXG4gICAgLy8gSVRFUjogICBOb29wXG4gICAgLy8gICAgICAgICBOZXh0SXRlcihCUkVBSylcbiAgICAvLyAgICAgICAgIEVudGVyV2l0aEtleShCRUdJTjIsIEVORDIpXG4gICAgLy8gQkVHSU4yOiBOb29wXG4gICAgLy8gICAgICAgICBQdXNoQ2hpbGRTY29wZVxuICAgIC8vICAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgIFBvcFNjb3BlXG4gICAgLy8gRU5EMjogICBOb29wXG4gICAgLy8gICAgICAgICBFeGl0XG4gICAgLy8gICAgICAgICBKdW1wKElURVIpXG4gICAgLy8gQlJFQUs6ICBOb29wXG4gICAgLy8gICAgICAgICBFeGl0TGlzdFxuICAgIC8vICAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogICBOb29wXG4gICAgLy8gICAgICAgICBFdmFsdWxhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgIE5vb3BcbiAgICAvLyAgICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wucHV0SXRlcmF0b3IoKTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgfVxuXG4gICAgICBkc2wuaXRlcih7IHRlbXBsYXRlcyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICAgIGRzbC5wdXNoQ2hpbGRTY29wZSgpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLnBvcFNjb3BlKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wKEVORCk7XG4gICAgICAgIGRzbC5sYWJlbCgnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2ludmVyc2UnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/syntax/builtins/if', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var IfSyntax = (function (_StatementSyntax) { - _inherits(IfSyntax, _StatementSyntax); + babelHelpers.inherits(IfSyntax, _StatementSyntax); function IfSyntax(_ref) { var args = _ref.args; var templates = _ref.templates; - _classCallCheck(this, IfSyntax); - _StatementSyntax.call(this); this.type = "if-statement"; this.isStatic = false; this.args = args; this.templates = templates; @@ -20353,35 +20980,29 @@ return IfSyntax; })(_glimmerRuntimeLibSyntax.Statement); exports.default = IfSyntax; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2lmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQVFBLFFBQUE7a0JBQUEsUUFBQTs7QUFPRSxpQkFQRixRQUFBLENBT2MsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztrQ0FQL0IsUUFBQTs7QUFRSSx1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBSWYsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWEgsZ0JBQUEsV0FhRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWFyQixJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUM3QyxtQkFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV4QixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLE1BQU07QUFDTCx1QkFBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUExQ0gsUUFBQTtnQ0FQRSxTQUFTOztzQkFPWCxRQUFBIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElmU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwiaWYtc3RhdGVtZW50XCI7XG5cbiAgcHVibGljIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBwdWJsaWMgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcih7IGFyZ3MsIHRlbXBsYXRlcyB9OiB7IGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgfVxuXG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyRFNMKSB7XG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBUZXN0KEVudmlyb25tZW50KVxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVMU0UpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICBOb29wXG4gICAgLy8gICAgICAgIEV2YWx1bGF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wudGVzdCgnZW52aXJvbm1lbnQnKTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2lmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFjLFFBQWdCOzhCQUFoQixRQUFnQjs7QUFPNUIsaUJBUFksUUFBZ0IsQ0FPaEIsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBSWYsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWFcsZ0JBQWdCLFdBYTVCLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFBOzs7Ozs7Ozs7Ozs7Z0JBYXJCLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQzdDLG1CQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXhCLG9CQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDckIsdUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEIsdUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCx1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekIsTUFBTTtBQUNMLHVCQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QjthQUNGLENBQUMsQ0FBQztTQUNKOztlQTFDVyxRQUFnQjtnQ0FQNUIsU0FBUzs7c0JBT0csUUFBZ0IiLCJmaWxlIjoiaWYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWZTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJpZi1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICAvLyAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogTm9vcFxuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogIE5vb3BcbiAgICAvLyAgICAgICAgRXZhbHVsYXRlKGludmVyc2UpXG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgYXJncywgdGVtcGxhdGVzIH0gPSB0aGlzO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzLCBhcmdzIH0sIChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgICBpZiAodGVtcGxhdGVzLmludmVyc2UpIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICAgIGRzbC5qdW1wKEVORCk7XG4gICAgICAgIGRzbC5sYWJlbCgnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2ludmVyc2UnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKEVORCk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0= enifed('glimmer-runtime/lib/syntax/builtins/partial', ['exports', 'glimmer-util', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/compiled/opcodes/vm'], function (exports, _glimmerUtil, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibCompiledOpcodesVm) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var PartialSyntax = (function (_StatementSyntax) { - _inherits(PartialSyntax, _StatementSyntax); + babelHelpers.inherits(PartialSyntax, _StatementSyntax); function PartialSyntax(_ref) { var args = _ref.args; + var symbolTable = _ref.symbolTable; - _classCallCheck(this, PartialSyntax); - _StatementSyntax.call(this); this.type = "partial-statement"; this.isStatic = false; this.args = args; + this.symbolTable = symbolTable; } - PartialSyntax.prototype.compile = function compile(compiler, env, block) { + PartialSyntax.prototype.compile = function compile(compiler, env, symbolTable) { /* // Enter(BEGIN, END) // BEGIN: Noop // PutArgs // NameToPartial @@ -20391,51 +21012,43 @@ // END: Noop // Exit */ _glimmerUtil.assert(this.args.positional.values.length > 0, 'Partial found with no arguments. You must specify a template.'); _glimmerUtil.assert(this.args.positional.values.length < 2, 'Partial found with more than one argument. You can only specify a single template.'); - var compiledPartialNameExpression = this.args.positional.values[0].compile(compiler, env); + var compiledPartialNameExpression = this.args.positional.values[0].compile(compiler, env, symbolTable); var BEGIN = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode("BEGIN"); var END = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode("END"); compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.EnterOpcode({ begin: BEGIN, end: END })); compiler.append(BEGIN); - compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutArgsOpcode({ args: this.args.compile(compiler, env) })); - compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.NameToPartialOpcode()); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutArgsOpcode({ args: this.args.compile(compiler, env, symbolTable) })); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.NameToPartialOpcode(this.symbolTable)); compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(_glimmerRuntimeLibCompiledOpcodesVm.SimpleTest)); compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpUnlessOpcode({ target: END })); compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.EvaluatePartialOpcode({ name: compiledPartialNameExpression, - symbolTable: block.symbolTable + symbolTable: symbolTable })); compiler.append(END); compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.ExitOpcode()); }; return PartialSyntax; })(_glimmerRuntimeLibSyntax.Statement); exports.default = PartialSyntax; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3BhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBd0JBLGFBQUE7a0JBQUEsYUFBQTs7QUFNRSxpQkFORixhQUFBLENBTWMsSUFBK0IsRUFBQTtnQkFBN0IsSUFBSSxHQUFOLElBQStCLENBQTdCLElBQUk7O2tDQU5wQixhQUFBOztBQU9JLHVDQUFPLENBQUM7QUFOVixnQkFBQSxDQUFBLElBQUksR0FBRyxtQkFBbUIsQ0FBQztBQUdwQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVRILHFCQUFBLFdBV0UsT0FBTyxHQUFBLGlCQUFDLFFBQW9DLEVBQUUsR0FBZ0IsRUFBRSxLQUFZLEVBQUE7Ozs7Ozs7Ozs7OztBQWMxRSx5QkFqREssTUFBTSxDQWlESixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsa0VBQWtFLENBQUM7QUFDaEgseUJBbERLLE1BQU0sQ0FrREosSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLHVGQUF1RixDQUFDO0FBRXJJLGdCQUFJLDZCQUE2QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRTFGLGdCQUFJLEtBQUssR0FBRyx3Q0E3Q2QsV0FBVyxDQTZDbUIsT0FBTyxDQUFDLENBQUM7QUFDckMsZ0JBQUksR0FBRyxHQUFHLHdDQTlDWixXQUFXLENBOENpQixLQUFLLENBQUMsQ0FBQztBQUVqQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0EvQ2xCLFdBQVcsQ0ErQ3VCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELG9CQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQWhEbEIsYUFBYSxDQWdEdUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9FLG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQTdDbEIsbUJBQW1CLEVBNkN3QixDQUFDLENBQUM7QUFDM0Msb0JBQVEsQ0FBQyxNQUFNLENBQUMsd0NBaERsQixVQUFVLHFDQURWLFVBQVUsQ0FpRGtDLENBQUMsQ0FBQztBQUU1QyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FqRGxCLGdCQUFnQixDQWlEdUIsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQWhEbEIscUJBQXFCLENBZ0R1QjtBQUN4QyxvQkFBSSxFQUFFLDZCQUE2QjtBQUNuQywyQkFBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CLENBQUMsQ0FBQyxDQUFDO0FBRUosb0JBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsb0JBQVEsQ0FBQyxNQUFNLENBQUMsd0NBckRsQixVQUFVLEVBcUR3QixDQUFDLENBQUM7U0FDbkM7O2VBL0NILGFBQUE7Z0NBbkJFLFNBQVM7O3NCQW1CWCxhQUFBIiwiZmlsZSI6InBhcnRpYWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVJbnRvLFxuICBTeW1ib2xMb29rdXAsXG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXhcbn0gZnJvbSAnLi4vLi4vc3ludGF4JztcblxuaW1wb3J0IHtcbiAgTGFiZWxPcGNvZGUsXG4gIEVudGVyT3Bjb2RlLFxuICBQdXRBcmdzT3Bjb2RlLFxuICBTaW1wbGVUZXN0LFxuICBUZXN0T3Bjb2RlLFxuICBKdW1wVW5sZXNzT3Bjb2RlLFxuICBOYW1lVG9QYXJ0aWFsT3Bjb2RlLFxuICBFdmFsdWF0ZVBhcnRpYWxPcGNvZGUsXG4gIEV4aXRPcGNvZGVcbn0gZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJy4uLy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnRpYWxTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJwYXJ0aWFsLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzIH06IHsgYXJnczogU3ludGF4LkFyZ3MgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBibG9jazogQmxvY2spIHtcblxuICAgIC8qXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBOYW1lVG9QYXJ0aWFsXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlUGFydGlhbFxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcbiAgICAqL1xuXG4gICAgYXNzZXJ0KHRoaXMuYXJncy5wb3NpdGlvbmFsLnZhbHVlcy5sZW5ndGggPiAwLCBgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlLmApO1xuICAgIGFzc2VydCh0aGlzLmFyZ3MucG9zaXRpb25hbC52YWx1ZXMubGVuZ3RoIDwgMiwgYFBhcnRpYWwgZm91bmQgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LiBZb3UgY2FuIG9ubHkgc3BlY2lmeSBhIHNpbmdsZSB0ZW1wbGF0ZS5gKTtcblxuICAgIGxldCBjb21waWxlZFBhcnRpYWxOYW1lRXhwcmVzc2lvbiA9IHRoaXMuYXJncy5wb3NpdGlvbmFsLnZhbHVlc1swXS5jb21waWxlKGNvbXBpbGVyLCBlbnYpO1xuXG4gICAgbGV0IEJFR0lOID0gbmV3IExhYmVsT3Bjb2RlKFwiQkVHSU5cIik7XG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRW50ZXJPcGNvZGUoeyBiZWdpbjogQkVHSU4sIGVuZDogRU5EIH0pKTtcbiAgICBjb21waWxlci5hcHBlbmQoQkVHSU4pO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgUHV0QXJnc09wY29kZSh7IGFyZ3M6IHRoaXMuYXJncy5jb21waWxlKGNvbXBpbGVyLCBlbnYpIH0pKTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IE5hbWVUb1BhcnRpYWxPcGNvZGUoKSk7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBUZXN0T3Bjb2RlKFNpbXBsZVRlc3QpKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgSnVtcFVubGVzc09wY29kZSh7IHRhcmdldDogRU5EIH0pKTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IEV2YWx1YXRlUGFydGlhbE9wY29kZSh7XG4gICAgICBuYW1lOiBjb21waWxlZFBhcnRpYWxOYW1lRXhwcmVzc2lvbixcbiAgICAgIHN5bWJvbFRhYmxlOiBibG9jay5zeW1ib2xUYWJsZVxuICAgIH0pKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChFTkQpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRXhpdE9wY29kZSgpKTtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3BhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBeUJjLGFBQXFCOzhCQUFyQixhQUFxQjs7QUFPakMsaUJBUFksYUFBcUIsQ0FPckIsSUFBc0UsRUFBQTtnQkFBcEUsSUFBSSxHQUFOLElBQXNFLENBQXBFLElBQUk7Z0JBQUUsV0FBVyxHQUFuQixJQUFzRSxDQUE5RCxXQUFXOztBQUM3Qix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsbUJBQW1CLENBQUM7QUFHcEIsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBS3RCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDaEM7O0FBWFcscUJBQXFCLFdBYWpDLE9BQU8sR0FBQSxpQkFBQyxRQUFvQyxFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTs7Ozs7Ozs7Ozs7O0FBY3RGLHlCQXBESyxNQUFNLENBb0RKLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxrRUFBa0UsQ0FBQztBQUNoSCx5QkFyREssTUFBTSxDQXFESixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsdUZBQXVGLENBQUM7QUFFckksZ0JBQUksNkJBQTZCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXZHLGdCQUFJLEtBQUssR0FBRyx3Q0E5Q2QsV0FBVyxDQThDbUIsT0FBTyxDQUFDLENBQUM7QUFDckMsZ0JBQUksR0FBRyxHQUFHLHdDQS9DWixXQUFXLENBK0NpQixLQUFLLENBQUMsQ0FBQztBQUVqQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FoRGxCLFdBQVcsQ0FnRHVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdELG9CQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQWpEbEIsYUFBYSxDQWlEdUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0E5Q2xCLG1CQUFtQixDQThDdUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDM0Qsb0JBQVEsQ0FBQyxNQUFNLENBQUMsd0NBakRsQixVQUFVLHFDQURWLFVBQVUsQ0FrRGtDLENBQUMsQ0FBQztBQUU1QyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FsRGxCLGdCQUFnQixDQWtEdUIsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQWpEbEIscUJBQXFCLENBaUR1QjtBQUN4QyxvQkFBSSxFQUFFLDZCQUE2QjtBQUNuQywyQkFBVyxFQUFYLFdBQVc7YUFDWixDQUFDLENBQUMsQ0FBQztBQUVKLG9CQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLG9CQUFRLENBQUMsTUFBTSxDQUFDLHdDQXREbEIsVUFBVSxFQXNEd0IsQ0FBQyxDQUFDO1NBQ25DOztlQWpEVyxhQUFxQjtnQ0FwQmpDLFNBQVM7O3NCQW9CRyxhQUFxQiIsImZpbGUiOiJwYXJ0aWFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuXG5pbXBvcnQge1xuICBDb21waWxlSW50byxcbiAgU3ltYm9sTG9va3VwLFxuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5pbXBvcnQge1xuICBMYWJlbE9wY29kZSxcbiAgRW50ZXJPcGNvZGUsXG4gIFB1dEFyZ3NPcGNvZGUsXG4gIFNpbXBsZVRlc3QsXG4gIFRlc3RPcGNvZGUsXG4gIEp1bXBVbmxlc3NPcGNvZGUsXG4gIE5hbWVUb1BhcnRpYWxPcGNvZGUsXG4gIEV2YWx1YXRlUGFydGlhbE9wY29kZSxcbiAgRXhpdE9wY29kZVxufSBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcblxuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGlhbFN5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcInBhcnRpYWwtc3RhdGVtZW50XCI7XG5cbiAgcHVibGljIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGU7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCBzeW1ib2xUYWJsZSB9OiB7IGFyZ3M6IFN5bnRheC5BcmdzLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnN5bWJvbFRhYmxlID0gc3ltYm9sVGFibGU7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50byAmIFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG5cbiAgICAvKlxuICAgIC8vICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiBOb29wXG4gICAgLy8gICAgICAgIFB1dEFyZ3NcbiAgICAvLyAgICAgICAgTmFtZVRvUGFydGlhbFxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZVBhcnRpYWxcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG4gICAgKi9cblxuICAgIGFzc2VydCh0aGlzLmFyZ3MucG9zaXRpb25hbC52YWx1ZXMubGVuZ3RoID4gMCwgYFBhcnRpYWwgZm91bmQgd2l0aCBubyBhcmd1bWVudHMuIFlvdSBtdXN0IHNwZWNpZnkgYSB0ZW1wbGF0ZS5gKTtcbiAgICBhc3NlcnQodGhpcy5hcmdzLnBvc2l0aW9uYWwudmFsdWVzLmxlbmd0aCA8IDIsIGBQYXJ0aWFsIGZvdW5kIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudC4gWW91IGNhbiBvbmx5IHNwZWNpZnkgYSBzaW5nbGUgdGVtcGxhdGUuYCk7XG5cbiAgICBsZXQgY29tcGlsZWRQYXJ0aWFsTmFtZUV4cHJlc3Npb24gPSB0aGlzLmFyZ3MucG9zaXRpb25hbC52YWx1ZXNbMF0uY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSk7XG5cbiAgICBsZXQgQkVHSU4gPSBuZXcgTGFiZWxPcGNvZGUoXCJCRUdJTlwiKTtcbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBFbnRlck9wY29kZSh7IGJlZ2luOiBCRUdJTiwgZW5kOiBFTkQgfSkpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChCRUdJTik7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRBcmdzT3Bjb2RlKHsgYXJnczogdGhpcy5hcmdzLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIH0pKTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IE5hbWVUb1BhcnRpYWxPcGNvZGUodGhpcy5zeW1ib2xUYWJsZSkpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgVGVzdE9wY29kZShTaW1wbGVUZXN0KSk7XG5cbiAgICBjb21waWxlci5hcHBlbmQobmV3IEp1bXBVbmxlc3NPcGNvZGUoeyB0YXJnZXQ6IEVORCB9KSk7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBFdmFsdWF0ZVBhcnRpYWxPcGNvZGUoe1xuICAgICAgbmFtZTogY29tcGlsZWRQYXJ0aWFsTmFtZUV4cHJlc3Npb24sXG4gICAgICBzeW1ib2xUYWJsZVxuICAgIH0pKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChFTkQpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRXhpdE9wY29kZSgpKTtcbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var UnlessSyntax = (function (_StatementSyntax) { - _inherits(UnlessSyntax, _StatementSyntax); + babelHelpers.inherits(UnlessSyntax, _StatementSyntax); function UnlessSyntax(_ref) { var args = _ref.args; var templates = _ref.templates; - _classCallCheck(this, UnlessSyntax); - _StatementSyntax.call(this); this.type = "unless-statement"; this.isStatic = false; this.args = args; this.templates = templates; @@ -20474,29 +21087,57 @@ return UnlessSyntax; })(_glimmerRuntimeLibSyntax.Statement); exports.default = UnlessSyntax; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3VubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFVQSxZQUFBO2tCQUFBLFlBQUE7O0FBT0UsaUJBUEYsWUFBQSxDQU9jLElBQXVFLEVBQUE7Z0JBQXJFLElBQUksR0FBTixJQUF1RSxDQUFyRSxJQUFJO2dCQUFFLFNBQVMsR0FBakIsSUFBdUUsQ0FBL0QsU0FBUzs7a0NBUC9CLFlBQUE7O0FBUUksdUNBQU8sQ0FBQztBQVBWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBSW5CLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUl0QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCOztBQVhILG9CQUFBLFdBYUUsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWF2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEVBQUUsVUFBQSxHQUFHLEVBQUE7QUFDaEMsbUJBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4Qix1QkFBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQix1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekIsTUFBTTtBQUNMLHVCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QjthQUNGLENBQUMsQ0FBQztTQUNKOztlQTFDSCxZQUFBO2dDQVRFLFNBQVM7O3NCQVNYLFlBQUEiLCJmaWxlIjoidW5sZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVubGVzc1N5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcInVubGVzcy1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICAvLyAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogTm9vcFxuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEp1bXBJZihFTFNFKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZShkZWZhdWx0KVxuICAgIC8vICAgICAgICBKdW1wKEVORClcbiAgICAvLyBFTFNFOiAgTm9vcFxuICAgIC8vICAgICAgICBFdmFsdWxhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgZHNsID0+IHtcbiAgICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgICBpZiAodGVtcGxhdGVzLmludmVyc2UpIHtcbiAgICAgICAgZHNsLmp1bXBJZignRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoJ0VORCcpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcElmKCdFTkQnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== -enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3VubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFVYyxZQUFvQjs4QkFBcEIsWUFBb0I7O0FBT2hDLGlCQVBZLFlBQW9CLENBT3BCLElBQXVFLEVBQUE7Z0JBQXJFLElBQUksR0FBTixJQUF1RSxDQUFyRSxJQUFJO2dCQUFFLFNBQVMsR0FBakIsSUFBdUUsQ0FBL0QsU0FBUzs7QUFDM0IsdUNBQU8sQ0FBQztBQVBWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBSW5CLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUl0QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCOztBQVhXLG9CQUFvQixXQWFoQyxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBRSxHQUFnQixFQUFBOzs7Ozs7Ozs7Ozs7Z0JBYXZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsRUFBRSxVQUFBLEdBQUcsRUFBQTtBQUNoQyxtQkFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV4QixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLHVCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBMUNXLFlBQW9CO2dDQVRoQyxTQUFTOztzQkFTRyxZQUFvQiIsImZpbGUiOiJ1bmxlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVW5sZXNzU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwidW5sZXNzLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiBOb29wXG4gICAgLy8gICAgICAgIFB1dEFyZ3NcbiAgICAvLyAgICAgICAgVGVzdChFbnZpcm9ubWVudClcbiAgICAvLyAgICAgICAgSnVtcElmKEVMU0UpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICBOb29wXG4gICAgLy8gICAgICAgIEV2YWx1bGF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCBkc2wgPT4ge1xuICAgICAgZHNsLnRlc3QoJ2Vudmlyb25tZW50Jyk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcElmKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcCgnRU5EJyk7XG4gICAgICAgIGRzbC5sYWJlbCgnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2ludmVyc2UnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRzbC5qdW1wSWYoJ0VORCcpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19 +enifed('glimmer-runtime/lib/syntax/builtins/with-dynamic-vars', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { 'use strict'; - 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); } } return obj; } + var WithDynamicVarsSyntax = (function (_StatementSyntax) { + babelHelpers.inherits(WithDynamicVarsSyntax, _StatementSyntax); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + function WithDynamicVarsSyntax(_ref) { + var args = _ref.args; + var templates = _ref.templates; - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } + _StatementSyntax.call(this); + this.type = "with-dynamic-vars-statement"; + this.isStatic = false; + this.args = args; + this.templates = templates; + } + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgtZHluYW1pYy12YXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFjLHFCQUE2Qjs4QkFBN0IscUJBQTZCOztBQU96QyxpQkFQWSxxQkFBNkIsQ0FPN0IsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsNkJBQTZCLENBQUM7QUFJOUIsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWFcsNkJBQTZCLFdBYXpDLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Z0JBQ3ZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLEVBQUUsVUFBQSxHQUFHLEVBQUE7QUFDekIsbUJBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsbUJBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3ZCLG1CQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxtQkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QixtQkFBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3ZCLENBQUMsQ0FBQztTQUNKOztlQXZCVyxxQkFBNkI7Z0NBUHpDLFNBQVM7O3NCQU9HLHFCQUE2QiIsImZpbGUiOiJ3aXRoLWR5bmFtaWMtdmFycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXhcbn0gZnJvbSAnLi4vLi4vc3ludGF4JztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdpdGhEeW5hbWljVmFyc1N5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcIndpdGgtZHluYW1pYy12YXJzLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0QXJncyhhcmdzKTtcbiAgICAgIGRzbC5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgICBkc2wuYmluZER5bmFtaWNTY29wZShhcmdzLm5hbWVkLmtleXMpO1xuICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICBkc2wucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== +enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) { + 'use strict'; + var WithSyntax = (function (_StatementSyntax) { - _inherits(WithSyntax, _StatementSyntax); + babelHelpers.inherits(WithSyntax, _StatementSyntax); function WithSyntax(_ref) { var args = _ref.args; var templates = _ref.templates; - _classCallCheck(this, WithSyntax); - _StatementSyntax.call(this); this.type = "with-statement"; this.isStatic = false; this.args = args; this.templates = templates; @@ -20535,44 +21176,38 @@ return WithSyntax; })(_glimmerRuntimeLibSyntax.Statement); exports.default = WithSyntax; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBU0EsVUFBQTtrQkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O2tDQVAvQixVQUFBOztBQVFJLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7OztnQkFhdkMsSUFBSSxHQUFnQixJQUFJLENBQXhCLElBQUk7Z0JBQUUsU0FBUyxHQUFLLElBQUksQ0FBbEIsU0FBUzs7QUFFckIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDN0MsbUJBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2Qix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4Qix1QkFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLHVCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBMUNILFVBQUE7Z0NBUkUsU0FBUzs7c0JBUVgsVUFBQSIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaXRoU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwid2l0aC1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICAvLyAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogTm9vcFxuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogIE5vb3BcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnRlc3QoJ2Vudmlyb25tZW50Jyk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgICAgZHNsLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnaW52ZXJzZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoRU5EKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ== -enifed('glimmer-runtime/lib/syntax/core', ['exports', 'glimmer-runtime/lib/syntax', '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/ref', '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-util', 'glimmer-runtime/lib/compiled/opcodes/content'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibSyntaxExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsRef, _glimmerRuntimeLibCompiledExpressionsHasBlock, _glimmerRuntimeLibCompiledExpressionsHasBlockParams, _glimmerRuntimeLibCompiledExpressionsHelper, _glimmerRuntimeLibCompiledExpressionsConcat, _glimmerUtil, _glimmerRuntimeLibCompiledOpcodesContent) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBU2MsVUFBa0I7OEJBQWxCLFVBQWtCOztBQU85QixpQkFQWSxVQUFrQixDQU9sQixJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYVyxrQkFBa0IsV0FhOUIsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWF2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUM3QyxtQkFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV4QixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLE1BQU07QUFDTCx1QkFBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUExQ1csVUFBa0I7Z0NBUjlCLFNBQVM7O3NCQVFHLFVBQWtCIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdpdGhTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJ3aXRoLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiBOb29wXG4gICAgLy8gICAgICAgIFB1dEFyZ3NcbiAgICAvLyAgICAgICAgVGVzdChFbnZpcm9ubWVudClcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTFNFKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZShkZWZhdWx0KVxuICAgIC8vICAgICAgICBKdW1wKEVORClcbiAgICAvLyBFTFNFOiAgTm9vcFxuICAgIC8vICAgICAgICBFdmFsdWF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wudGVzdCgnZW52aXJvbm1lbnQnKTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19 +enifed('glimmer-runtime/lib/syntax/core', ['exports', 'glimmer-runtime/lib/syntax', '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, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibSyntaxExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsLookups, _glimmerRuntimeLibCompiledExpressionsHasBlock, _glimmerRuntimeLibCompiledExpressionsHasBlockParams, _glimmerRuntimeLibCompiledExpressionsHelper, _glimmerRuntimeLibCompiledExpressionsConcat, _glimmerRuntimeLibUtils, _glimmerRuntimeLibCompiledOpcodesContent) { 'use strict'; - 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); } } return obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - var Block = (function (_StatementSyntax) { - _inherits(Block, _StatementSyntax); + babelHelpers.inherits(Block, _StatementSyntax); function Block(options) { - _classCallCheck(this, Block); - _StatementSyntax.call(this); this.type = "block"; this.path = options.path; this.args = options.args; this.templates = options.templates; } - Block.fromSpec = function fromSpec(sexp, children) { + 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]; + var template = scanner.blockFor(symbolTable, templateId); + var inverse = typeof inverseId === 'number' ? scanner.blockFor(symbolTable, inverseId) : null; return new Block({ path: path, args: Args.fromSpec(params, hash), - templates: Templates.fromSpec([templateId, inverseId], children) + templates: Templates.fromSpec(template, inverse) }); }; Block.build = function build(options) { return new this(options); @@ -20595,95 +21230,46 @@ return Block; })(_glimmerRuntimeLibSyntax.Statement); exports.Block = Block; - var Unknown = (function (_ExpressionSyntax) { - _inherits(Unknown, _ExpressionSyntax); + var Append = (function (_StatementSyntax2) { + babelHelpers.inherits(Append, _StatementSyntax2); - function Unknown(options) { - _classCallCheck(this, Unknown); + Append.fromSpec = function fromSpec(sexp) { + var value = sexp[1]; + var trustingMorph = sexp[2]; - _ExpressionSyntax.call(this); - this.type = "unknown"; - this.ref = options.ref; - this.trustingMorph = !!options.unsafe; - } - - Unknown.fromSpec = function fromSpec(sexp) { - var path = sexp[1]; - - return new Unknown({ ref: new Ref({ parts: path }) }); + return new OptimizedAppend({ value: _glimmerRuntimeLibSyntaxExpressions.default(value), trustingMorph: trustingMorph }); }; - Unknown.build = function build(path, unsafe) { - return new this({ ref: Ref.build(path), unsafe: unsafe }); - }; - - Unknown.prototype.compile = function compile(compiler, env, parentMeta) { - var ref = this.ref; - - if (env.hasHelper(ref.parts, parentMeta)) { - return new _glimmerRuntimeLibCompiledExpressionsHelper.default({ name: ref.parts, helper: env.lookupHelper(ref.parts, parentMeta), args: _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.empty() }); - } else { - return this.ref.compile(compiler); - } - }; - - Unknown.prototype.simplePath = function simplePath() { - return this.ref.simplePath(); - }; - - return Unknown; - })(_glimmerRuntimeLibSyntax.Expression); - - exports.Unknown = Unknown; - - var Append = (function (_StatementSyntax2) { - _inherits(Append, _StatementSyntax2); - function Append(_ref) { var value = _ref.value; var trustingMorph = _ref.trustingMorph; - _classCallCheck(this, Append); - _StatementSyntax2.call(this); this.value = value; this.trustingMorph = trustingMorph; } - 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); var OptimizedAppend = (function (_Append) { - _inherits(OptimizedAppend, _Append); + babelHelpers.inherits(OptimizedAppend, _Append); function OptimizedAppend() { - _classCallCheck(this, OptimizedAppend); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _Append.call.apply(_Append, [this].concat(args)); + _Append.apply(this, arguments); this.type = "optimized-append"; } OptimizedAppend.prototype.deopt = function deopt() { return new UnoptimizedAppend(this); }; - OptimizedAppend.prototype.compile = function compile(compiler, env, block) { - compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode({ expression: this.value.compile(compiler, env, block.meta) })); + OptimizedAppend.prototype.compile = function compile(compiler, env, symbolTable) { + compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode({ expression: this.value.compile(compiler, env, symbolTable) })); if (this.trustingMorph) { compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedTrustingAppendOpcode()); } else { compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.OptimizedCautiousAppendOpcode()); } @@ -20693,29 +21279,23 @@ })(Append); exports.OptimizedAppend = OptimizedAppend; var UnoptimizedAppend = (function (_Append2) { - _inherits(UnoptimizedAppend, _Append2); + babelHelpers.inherits(UnoptimizedAppend, _Append2); function UnoptimizedAppend() { - _classCallCheck(this, UnoptimizedAppend); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _Append2.call.apply(_Append2, [this].concat(args)); + _Append2.apply(this, arguments); this.type = "unoptimized-append"; } - UnoptimizedAppend.prototype.compile = function compile(compiler, env, block) { - var expression = this.value.compile(compiler, env, block.meta); + 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)); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.GuardedTrustingAppendOpcode(expression, symbolTable)); } else { - compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.GuardedCautiousAppendOpcode(expression)); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesContent.GuardedCautiousAppendOpcode(expression, symbolTable)); } }; return UnoptimizedAppend; })(Append); @@ -20723,15 +21303,13 @@ exports.UnoptimizedAppend = UnoptimizedAppend; var MODIFIER_SYNTAX = "c0420397-8ff1-4241-882b-4b7a107c9632"; exports.MODIFIER_SYNTAX = MODIFIER_SYNTAX; var Modifier = (function (_StatementSyntax3) { - _inherits(Modifier, _StatementSyntax3); + babelHelpers.inherits(Modifier, _StatementSyntax3); function Modifier(options) { - _classCallCheck(this, Modifier); - _StatementSyntax3.call(this); this["c0420397-8ff1-4241-882b-4b7a107c9632"] = true; this.type = "modifier"; this.path = options.path; this.args = options.args; @@ -20754,18 +21332,14 @@ params: options.params, hash: options.hash }); }; - Modifier.prototype.compile = function compile(compiler, env) { - var args = this.args.compile(compiler, env); - if (env.hasModifier(this.path)) { - compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.ModifierOpcode({ - name: this.path[0], - manager: env.lookupModifier(this.path), - args: args - })); + 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'); } }; @@ -20773,18 +21347,16 @@ })(_glimmerRuntimeLibSyntax.Statement); exports.Modifier = Modifier; var StaticArg = (function (_ArgumentSyntax) { - _inherits(StaticArg, _ArgumentSyntax); + babelHelpers.inherits(StaticArg, _ArgumentSyntax); function StaticArg(_ref2) { var name = _ref2.name; var value = _ref2.value; - _classCallCheck(this, StaticArg); - _ArgumentSyntax.call(this); this.type = "static-arg"; this.name = name; this.value = value; } @@ -20797,11 +21369,11 @@ }; StaticArg.build = function build(name, value) { var namespace = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2]; - return new this({ name: _glimmerUtil.intern(name), value: _glimmerUtil.intern(value) }); + return new this({ name: name, value: value }); }; StaticArg.prototype.compile = function compile() { throw new Error('Cannot compiler StaticArg "' + this.name + '" as it is a delegate for ValueSyntax<string>.'); }; @@ -20814,20 +21386,18 @@ })(_glimmerRuntimeLibSyntax.Argument); exports.StaticArg = StaticArg; var DynamicArg = (function (_ArgumentSyntax2) { - _inherits(DynamicArg, _ArgumentSyntax2); + babelHelpers.inherits(DynamicArg, _ArgumentSyntax2); function DynamicArg(_ref3) { var name = _ref3.name; var value = _ref3.value; var _ref3$namespace = _ref3.namespace; var namespace = _ref3$namespace === undefined ? null : _ref3$namespace; - _classCallCheck(this, DynamicArg); - _ArgumentSyntax2.call(this); this.type = 'dynamic-arg'; this.name = name; this.value = value; this.namespace = namespace; @@ -20841,12 +21411,11 @@ name: name, value: _glimmerRuntimeLibSyntaxExpressions.default(value) }); }; - DynamicArg.build = function build(_name, value) { - var name = _glimmerUtil.intern(_name); + DynamicArg.build = function build(name, value) { return new this({ name: name, value: value }); }; DynamicArg.prototype.compile = function compile() { throw new Error('Cannot compile DynamicArg for "' + this.name + '" as it is delegate for ExpressionSyntax<Opaque>.'); @@ -20860,13 +21429,11 @@ })(_glimmerRuntimeLibSyntax.Argument); exports.DynamicArg = DynamicArg; var TrustingAttr = (function () { - function TrustingAttr() { - _classCallCheck(this, TrustingAttr); - } + function TrustingAttr() {} TrustingAttr.fromSpec = function fromSpec(sexp) { var name = sexp[1]; var value = sexp[2]; var namespace = sexp[3]; @@ -20877,15 +21444,13 @@ isTrusting: true, value: _glimmerRuntimeLibSyntaxExpressions.default(value) }); }; - TrustingAttr.build = function build(_name, value, isTrusting) { - var _namespace = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3]; + TrustingAttr.build = function build(name, value, isTrusting) { + var namespace = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3]; - var name = _glimmerUtil.intern(_name); - var namespace = _namespace ? _glimmerUtil.intern(_namespace) : null; return new DynamicAttr({ name: name, value: value, namespace: namespace, isTrusting: isTrusting }); }; TrustingAttr.prototype.compile = function compile() { throw new Error('Attempting to compile a TrustingAttr which is just a delegate for DynamicAttr.'); @@ -20895,20 +21460,18 @@ })(); exports.TrustingAttr = TrustingAttr; var StaticAttr = (function (_AttributeSyntax) { - _inherits(StaticAttr, _AttributeSyntax); + babelHelpers.inherits(StaticAttr, _AttributeSyntax); function StaticAttr(_ref4) { var name = _ref4.name; var value = _ref4.value; var _ref4$namespace = _ref4.namespace; var namespace = _ref4$namespace === undefined ? null : _ref4$namespace; - _classCallCheck(this, StaticAttr); - _AttributeSyntax.call(this); this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true; this.type = "static-attr"; this.isTrusting = false; this.name = name; @@ -20925,11 +21488,11 @@ }; StaticAttr.build = function build(name, value) { var namespace = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2]; - return new this({ name: _glimmerUtil.intern(name), value: _glimmerUtil.intern(value), namespace: namespace && _glimmerUtil.intern(namespace) }); + return new this({ name: name, value: value, namespace: namespace }); }; StaticAttr.prototype.compile = function compile(compiler) { compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.StaticAttrOpcode(this)); }; @@ -20942,22 +21505,20 @@ })(_glimmerRuntimeLibSyntax.Attribute); exports.StaticAttr = StaticAttr; var DynamicAttr = (function (_AttributeSyntax2) { - _inherits(DynamicAttr, _AttributeSyntax2); + babelHelpers.inherits(DynamicAttr, _AttributeSyntax2); function DynamicAttr(_ref5) { var name = _ref5.name; var value = _ref5.value; var _ref5$isTrusting = _ref5.isTrusting; var isTrusting = _ref5$isTrusting === undefined ? false : _ref5$isTrusting; var _ref5$namespace = _ref5.namespace; var namespace = _ref5$namespace === undefined ? null : _ref5$namespace; - _classCallCheck(this, DynamicAttr); - _AttributeSyntax2.call(this); this["e1185d30-7cac-4b12-b26a-35327d905d92"] = true; this.type = "dynamic-attr"; this.name = name; this.value = value; @@ -20975,25 +21536,22 @@ namespace: namespace, value: _glimmerRuntimeLibSyntaxExpressions.default(value) }); }; - DynamicAttr.build = function build(_name, value) { + 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]; - var _namespace = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3]; - - var name = _glimmerUtil.intern(_name); - var namespace = _namespace ? _glimmerUtil.intern(_namespace) : null; return new this({ name: name, value: value, namespace: namespace, isTrusting: isTrusting }); }; - DynamicAttr.prototype.compile = function compile(compiler, env) { + DynamicAttr.prototype.compile = function compile(compiler, env, symbolTable) { var namespace = this.namespace; var value = this.value; - compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode({ expression: value.compile(compiler, env) })); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode({ expression: value.compile(compiler, env, symbolTable) })); if (namespace) { compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrNSOpcode(this)); } else { compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.DynamicAttrOpcode(this)); } @@ -21006,21 +21564,40 @@ return DynamicAttr; })(_glimmerRuntimeLibSyntax.Attribute); exports.DynamicAttr = DynamicAttr; - var CloseElement = (function (_StatementSyntax4) { - _inherits(CloseElement, _StatementSyntax4); + var FlushElement = (function (_StatementSyntax4) { + babelHelpers.inherits(FlushElement, _StatementSyntax4); - function CloseElement() { - _classCallCheck(this, CloseElement); + function FlushElement() { + _StatementSyntax4.apply(this, arguments); + this.type = "flush-element"; + } - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } + FlushElement.fromSpec = function fromSpec() { + return new FlushElement(); + }; - _StatementSyntax4.call.apply(_StatementSyntax4, [this].concat(args)); + 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(); @@ -21037,17 +21614,15 @@ return CloseElement; })(_glimmerRuntimeLibSyntax.Statement); exports.CloseElement = CloseElement; - var Text = (function (_StatementSyntax5) { - _inherits(Text, _StatementSyntax5); + var Text = (function (_StatementSyntax6) { + babelHelpers.inherits(Text, _StatementSyntax6); function Text(options) { - _classCallCheck(this, Text); - - _StatementSyntax5.call(this); + _StatementSyntax6.call(this); this.type = "text"; this.content = options.content; } Text.fromSpec = function fromSpec(node) { @@ -21067,17 +21642,15 @@ return Text; })(_glimmerRuntimeLibSyntax.Statement); exports.Text = Text; - var Comment = (function (_StatementSyntax6) { - _inherits(Comment, _StatementSyntax6); + var Comment = (function (_StatementSyntax7) { + babelHelpers.inherits(Comment, _StatementSyntax7); function Comment(options) { - _classCallCheck(this, Comment); - - _StatementSyntax6.call(this); + _StatementSyntax7.call(this); this.type = "comment"; this.comment = options.value; } Comment.fromSpec = function fromSpec(sexp) { @@ -21085,11 +21658,11 @@ return new Comment({ value: value }); }; Comment.build = function build(value) { - return new this({ value: _glimmerUtil.intern(value) }); + return new this({ value: value }); }; Comment.prototype.compile = function compile(dsl) { dsl.comment(this.comment); }; @@ -21097,81 +21670,88 @@ return Comment; })(_glimmerRuntimeLibSyntax.Statement); exports.Comment = Comment; - var OpenElement = (function (_StatementSyntax7) { - _inherits(OpenElement, _StatementSyntax7); + var OpenElement = (function (_StatementSyntax8) { + babelHelpers.inherits(OpenElement, _StatementSyntax8); function OpenElement(options) { - _classCallCheck(this, OpenElement); - - _StatementSyntax7.call(this); + _StatementSyntax8.call(this); this.type = "open-element"; this.tag = options.tag; this.blockParams = options.blockParams; + this.symbolTable = options.symbolTable; } - OpenElement.fromSpec = function fromSpec(sexp) { + OpenElement.fromSpec = function fromSpec(sexp, symbolTable) { var tag = sexp[1]; var blockParams = sexp[2]; return new OpenElement({ tag: tag, - blockParams: blockParams + blockParams: blockParams, + symbolTable: symbolTable }); }; - OpenElement.build = function build(tag, blockParams) { - return new this({ tag: _glimmerUtil.intern(tag), blockParams: blockParams && blockParams.map(_glimmerUtil.intern) }); + OpenElement.build = function build(tag, blockParams, symbolTable) { + return new this({ tag: tag, blockParams: blockParams, symbolTable: symbolTable }); }; OpenElement.prototype.scan = function scan(scanner) { var tag = this.tag; - if (scanner.env.hasComponentDefinition([tag])) { + if (scanner.env.hasComponentDefinition([tag], this.symbolTable)) { var _parameters = this.parameters(scanner); var args = _parameters.args; var attrs = _parameters.attrs; - scanner.startBlock(); + scanner.startBlock(this.blockParams); this.tagContents(scanner); - var template = scanner.endBlock(); - return new Component({ tag: tag, args: args, attrs: attrs, template: template }); + var template = scanner.endBlock(this.blockParams); + return new Component(tag, attrs, args, template); } else { return new OpenPrimitiveElement({ tag: tag }); } }; OpenElement.prototype.compile = function compile(list, env) { - list.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(this)); + list.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(this.tag)); }; OpenElement.prototype.toIdentity = function toIdentity() { var tag = this.tag; return new OpenPrimitiveElement({ tag: tag }); }; OpenElement.prototype.parameters = function parameters(scanner) { var current = scanner.next(); - var args = _glimmerUtil.dict(); var attrs = []; - while (current[_glimmerRuntimeLibSyntax.ATTRIBUTE] || current[MODIFIER_SYNTAX] || current[_glimmerRuntimeLibSyntax.ARGUMENT]) { + 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}"); } - args[param.name] = param.valueSyntax(); current = scanner.next(); } - scanner.unput(current); - return { args: Args.fromNamedArgs(NamedArgs.build(args)), attrs: attrs }; + return { args: Args.fromNamedArgs(NamedArgs.build(argKeys, argValues)), attrs: attrs }; }; OpenElement.prototype.tagContents = function tagContents(scanner) { var nesting = 1; while (true) { @@ -21189,78 +21769,67 @@ return OpenElement; })(_glimmerRuntimeLibSyntax.Statement); exports.OpenElement = OpenElement; - var Component = (function (_StatementSyntax8) { - _inherits(Component, _StatementSyntax8); + var Component = (function (_StatementSyntax9) { + babelHelpers.inherits(Component, _StatementSyntax9); - function Component(_ref6) { - var tag = _ref6.tag; - var args = _ref6.args; - var attrs = _ref6.attrs; - var template = _ref6.template; - - _classCallCheck(this, Component); - - _StatementSyntax8.call(this); - this.type = 'component'; + function Component(tag, attrs, args, template) { + _StatementSyntax9.call(this); this.tag = tag; - this.args = args; this.attrs = attrs; + this.args = args; this.template = template; + this.type = 'component'; } - Component.prototype.compile = function compile(list, env) { - var definition = env.getComponentDefinition([this.tag]); - var args = this.args.compile(list, env); + 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({ template: this.template, inverse: null }); - list.append(new _glimmerRuntimeLibCompiledOpcodesComponent.PutComponentDefinitionOpcode({ args: args, definition: definition })); - list.append(new _glimmerRuntimeLibCompiledOpcodesComponent.OpenComponentOpcode({ shadow: shadow, templates: templates })); + 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 (_StatementSyntax9) { - _inherits(OpenPrimitiveElement, _StatementSyntax9); + var OpenPrimitiveElement = (function (_StatementSyntax10) { + babelHelpers.inherits(OpenPrimitiveElement, _StatementSyntax10); function OpenPrimitiveElement(options) { - _classCallCheck(this, OpenPrimitiveElement); - - _StatementSyntax9.call(this); + _StatementSyntax10.call(this); this.type = "open-primitive-element"; this.tag = options.tag; } OpenPrimitiveElement.build = function build(tag) { - return new this({ tag: _glimmerUtil.intern(tag) }); + return new this({ tag: tag }); }; OpenPrimitiveElement.prototype.compile = function compile(compiler) { - compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode({ tag: this.tag })); + compiler.append(new _glimmerRuntimeLibCompiledOpcodesDom.OpenPrimitiveElementOpcode(this.tag)); }; return OpenPrimitiveElement; })(_glimmerRuntimeLibSyntax.Statement); exports.OpenPrimitiveElement = OpenPrimitiveElement; - var Yield = (function (_StatementSyntax10) { - _inherits(Yield, _StatementSyntax10); + var Yield = (function (_StatementSyntax11) { + babelHelpers.inherits(Yield, _StatementSyntax11); - function Yield(_ref7) { - var to = _ref7.to; - var args = _ref7.args; + function Yield(_ref6) { + var to = _ref6.to; + var args = _ref6.args; - _classCallCheck(this, Yield); - - _StatementSyntax10.call(this); + _StatementSyntax11.call(this); this.type = "yield"; this.to = to; this.args = args; } @@ -21272,35 +21841,33 @@ return new Yield({ to: to, args: args }); }; Yield.build = function build(params, to) { var args = Args.fromPositionalArgs(PositionalArgs.build(params)); - return new this({ to: _glimmerUtil.intern(to), args: args }); + return new this({ to: to, args: args }); }; - Yield.prototype.compile = function compile(compiler, env) { - var to = compiler.getBlockSymbol(this.to); - var args = this.args.compile(compiler, env); - compiler.append(new OpenBlockOpcode({ to: to, label: this.to, args: args })); - compiler.append(new CloseBlockOpcode()); + 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: to, label: this.to, args: args })); + dsl.append(new CloseBlockOpcode()); }; return Yield; })(_glimmerRuntimeLibSyntax.Statement); exports.Yield = Yield; var OpenBlockOpcode = (function (_Opcode) { - _inherits(OpenBlockOpcode, _Opcode); + babelHelpers.inherits(OpenBlockOpcode, _Opcode); - function OpenBlockOpcode(_ref8) { - var to = _ref8.to; - var label = _ref8.label; - var args = _ref8.args; + function OpenBlockOpcode(_ref7) { + var to = _ref7.to; + var label = _ref7.label; + var args = _ref7.args; - _classCallCheck(this, OpenBlockOpcode); - _Opcode.call(this); this.type = "open-block"; this.to = to; this.label = label; this.args = args; @@ -21321,20 +21888,14 @@ return OpenBlockOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); var CloseBlockOpcode = (function (_Opcode2) { - _inherits(CloseBlockOpcode, _Opcode2); + babelHelpers.inherits(CloseBlockOpcode, _Opcode2); function CloseBlockOpcode() { - _classCallCheck(this, CloseBlockOpcode); - - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - _Opcode2.call.apply(_Opcode2, [this].concat(args)); + _Opcode2.apply(this, arguments); this.type = "close-block"; } CloseBlockOpcode.prototype.evaluate = function evaluate(vm) { vm.popScope(); @@ -21343,17 +21904,15 @@ return CloseBlockOpcode; })(_glimmerRuntimeLibOpcodes.Opcode); exports.CloseBlockOpcode = CloseBlockOpcode; - var Value = (function (_ExpressionSyntax2) { - _inherits(Value, _ExpressionSyntax2); + var Value = (function (_ExpressionSyntax) { + babelHelpers.inherits(Value, _ExpressionSyntax); function Value(value) { - _classCallCheck(this, Value); - - _ExpressionSyntax2.call(this); + _ExpressionSyntax.call(this); this.type = "value"; this.value = value; } Value.fromSpec = function fromSpec(value) { @@ -21375,163 +21934,151 @@ return Value; })(_glimmerRuntimeLibSyntax.Expression); exports.Value = Value; - var Get = (function (_ExpressionSyntax3) { - _inherits(Get, _ExpressionSyntax3); + var GetArgument = (function (_ExpressionSyntax2) { + babelHelpers.inherits(GetArgument, _ExpressionSyntax2); - function Get(options) { - _classCallCheck(this, Get); - - _ExpressionSyntax3.call(this); - this.type = "get"; - this.ref = options.ref; - } - - Get.fromSpec = function fromSpec(sexp) { - var parts = sexp[1]; - - return new Get({ ref: new Ref({ parts: parts }) }); - }; - - Get.build = function build(path) { - return new this({ ref: Ref.build(path) }); - }; - - Get.prototype.compile = function compile(compiler) { - return this.ref.compile(compiler); - }; - - return Get; - })(_glimmerRuntimeLibSyntax.Expression); - - exports.Get = Get; - - var SelfGet = (function (_ExpressionSyntax4) { - _inherits(SelfGet, _ExpressionSyntax4); - - function SelfGet(options) { - _classCallCheck(this, SelfGet); - - _ExpressionSyntax4.call(this); - this.type = "self-get"; - this.ref = options.ref; - } - - SelfGet.fromSpec = function fromSpec(sexp) { - var parts = sexp[1]; - - return new SelfGet({ ref: new Ref({ parts: parts }) }); - }; - - SelfGet.prototype.compile = function compile(compiler) { - return this.ref.compile(compiler); - }; - - return SelfGet; - })(_glimmerRuntimeLibSyntax.Expression); - - exports.SelfGet = SelfGet; - - var GetArgument = (function (_ExpressionSyntax5) { - _inherits(GetArgument, _ExpressionSyntax5); - function GetArgument(options) { - _classCallCheck(this, GetArgument); - - _ExpressionSyntax5.call(this); + _ExpressionSyntax2.call(this); this.type = "get-argument"; this.parts = options.parts; } - // intern paths because they will be used as keys + // 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: parts }); }; GetArgument.build = function build(path) { - return new this({ parts: path.split('.').map(_glimmerUtil.intern) }); + return new this({ parts: path.split('.') }); }; GetArgument.prototype.compile = function compile(lookup) { var parts = this.parts; var head = parts[0]; var symbol = lookup.getNamedSymbol(head); var path = parts.slice(1); - return new _glimmerRuntimeLibCompiledExpressionsRef.CompiledLocalRef({ debug: head, symbol: symbol, path: path }); + return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledLocalLookup(symbol, path, head); }; return GetArgument; })(_glimmerRuntimeLibSyntax.Expression); exports.GetArgument = GetArgument; - function internPath(path) { - return path.split('.').map(_glimmerUtil.intern); - } - // this is separated out from Get because Unknown also has a ref, but it - // may turn out to be a helper - var Ref = (function (_ExpressionSyntax6) { - _inherits(Ref, _ExpressionSyntax6); + var Ref = (function (_ExpressionSyntax3) { + babelHelpers.inherits(Ref, _ExpressionSyntax3); - function Ref(_ref9) { - var parts = _ref9.parts; - - _classCallCheck(this, Ref); - - _ExpressionSyntax6.call(this); + function Ref(parts) { + _ExpressionSyntax3.call(this); + this.parts = parts; this.type = "ref"; this.parts = parts; } Ref.build = function build(path) { - return new this({ parts: internPath(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 (lookup.hasKeyword(head)) { - return new _glimmerRuntimeLibCompiledExpressionsRef.CompiledKeywordRef({ name: head, path: path }); - } - if (lookup.hasLocalSymbol(head)) { + if (head === null) { + return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledSelfLookup(path); + } else if (lookup.hasLocalSymbol(head)) { var symbol = lookup.getLocalSymbol(head); - return new _glimmerRuntimeLibCompiledExpressionsRef.CompiledLocalRef({ debug: head, symbol: symbol, path: path }); + return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledLocalLookup(symbol, path, head); } else { - return new _glimmerRuntimeLibCompiledExpressionsRef.CompiledSelfRef({ parts: parts }); + return new _glimmerRuntimeLibCompiledExpressionsLookups.CompiledSelfLookup(parts); } }; - Ref.prototype.path = function path() { - return this.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)); }; - Ref.prototype.simplePath = function simplePath() { - if (this.parts.length === 1) { - return this.parts[0]; + 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 Ref; + return Unknown; })(_glimmerRuntimeLibSyntax.Expression); - exports.Ref = Ref; + exports.Unknown = Unknown; - var Helper = (function (_ExpressionSyntax7) { - _inherits(Helper, _ExpressionSyntax7); + var Helper = (function (_ExpressionSyntax6) { + babelHelpers.inherits(Helper, _ExpressionSyntax6); function Helper(options) { - _classCallCheck(this, Helper); - - _ExpressionSyntax7.call(this); + _ExpressionSyntax6.call(this); this.type = "helper"; this.isStatic = false; this.ref = options.ref; this.args = options.args; } @@ -21540,58 +22087,50 @@ var path = sexp[1]; var params = sexp[2]; var hash = sexp[3]; return new Helper({ - ref: new Ref({ parts: path }), + ref: new Ref(path), args: Args.fromSpec(params, hash) }); }; Helper.build = function build(path, positional, named) { - return new this({ ref: Ref.build(path), args: new Args({ positional: positional, named: named }) }); + return new this({ ref: Ref.build(path), args: Args.build(positional, named) }); }; - Helper.prototype.compile = function compile(compiler, env, parentMeta) { - if (env.hasHelper(this.ref.parts, parentMeta)) { + 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({ name: ref.parts, helper: env.lookupHelper(ref.parts, parentMeta), args: args.compile(compiler, env) }); + 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.path().join('.') + ' is not a helper'); + throw new Error('Compile Error: ' + this.ref.parts.join('.') + ' is not a helper'); } }; - Helper.prototype.simplePath = function simplePath() { - return this.ref.simplePath(); - }; - return Helper; })(_glimmerRuntimeLibSyntax.Expression); exports.Helper = Helper; - var HasBlock = (function (_ExpressionSyntax8) { - _inherits(HasBlock, _ExpressionSyntax8); + var HasBlock = (function (_ExpressionSyntax7) { + babelHelpers.inherits(HasBlock, _ExpressionSyntax7); - function HasBlock(_ref10) { - var blockName = _ref10.blockName; + function HasBlock(_ref8) { + var blockName = _ref8.blockName; - _classCallCheck(this, HasBlock); - - _ExpressionSyntax8.call(this); + _ExpressionSyntax7.call(this); this.type = "has-block"; this.blockName = blockName; } HasBlock.fromSpec = function fromSpec(sexp) { var blockName = sexp[1]; - return new HasBlock({ - blockName: blockName - }); + return new HasBlock({ blockName: blockName }); }; HasBlock.build = function build(blockName) { return new this({ blockName: blockName }); }; @@ -21606,29 +22145,25 @@ return HasBlock; })(_glimmerRuntimeLibSyntax.Expression); exports.HasBlock = HasBlock; - var HasBlockParams = (function (_ExpressionSyntax9) { - _inherits(HasBlockParams, _ExpressionSyntax9); + var HasBlockParams = (function (_ExpressionSyntax8) { + babelHelpers.inherits(HasBlockParams, _ExpressionSyntax8); - function HasBlockParams(_ref11) { - var blockName = _ref11.blockName; + function HasBlockParams(_ref9) { + var blockName = _ref9.blockName; - _classCallCheck(this, HasBlockParams); - - _ExpressionSyntax9.call(this); + _ExpressionSyntax8.call(this); this.type = "has-block-params"; this.blockName = blockName; } HasBlockParams.fromSpec = function fromSpec(sexp) { var blockName = sexp[1]; - return new HasBlockParams({ - blockName: blockName - }); + return new HasBlockParams({ blockName: blockName }); }; HasBlockParams.build = function build(blockName) { return new this({ blockName: blockName }); }; @@ -21644,15 +22179,13 @@ })(_glimmerRuntimeLibSyntax.Expression); exports.HasBlockParams = HasBlockParams; var Concat = (function () { - function Concat(_ref12) { - var parts = _ref12.parts; + function Concat(_ref10) { + var parts = _ref10.parts; - _classCallCheck(this, Concat); - this.type = "concat"; this.isStatic = false; this.parts = parts; } @@ -21664,333 +22197,377 @@ Concat.build = function build(parts) { return new this({ parts: parts }); }; - Concat.prototype.compile = function compile(compiler, env) { + Concat.prototype.compile = function compile(compiler, env, symbolTable) { return new _glimmerRuntimeLibCompiledExpressionsConcat.default({ parts: this.parts.map(function (p) { - return p.compile(compiler, env); + return p.compile(compiler, env, symbolTable); }) }); }; return Concat; })(); exports.Concat = Concat; var Args = (function () { - function Args(options) { - _classCallCheck(this, Args); - + function Args(positional, named) { + this.positional = positional; + this.named = named; this.type = "args"; - this.isStatic = false; - this.positional = options.positional; - this.named = options.named; } - Args.fromSpec = function fromSpec(positional, named) { - return new Args({ positional: PositionalArgs.fromSpec(positional), named: NamedArgs.fromSpec(named) }); + Args.empty = function empty() { + return EMPTY_ARGS; }; - Args.empty = function empty() { - return this._empty = this._empty || new Args({ positional: PositionalArgs.empty(), named: NamedArgs.empty() }); + Args.fromSpec = function fromSpec(positional, named) { + return new Args(PositionalArgs.fromSpec(positional), NamedArgs.fromSpec(named)); }; Args.fromPositionalArgs = function fromPositionalArgs(positional) { - return new Args({ positional: positional, named: NamedArgs.empty() }); + return new Args(positional, EMPTY_NAMED_ARGS); }; Args.fromNamedArgs = function fromNamedArgs(named) { - return new Args({ positional: PositionalArgs.empty(), named: named }); + return new Args(EMPTY_POSITIONAL_ARGS, named); }; Args.build = function build(positional, named) { - return new this({ positional: positional, named: 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) { + Args.prototype.compile = function compile(compiler, env, symbolTable) { var positional = this.positional; var named = this.named; - return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.create({ positional: positional.compile(compiler, env), named: named.compile(compiler, env) }); + return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledArgs.create(positional.compile(compiler, env, symbolTable), named.compile(compiler, env, symbolTable)); }; return Args; })(); exports.Args = Args; var PositionalArgs = (function () { - function PositionalArgs(exprs) { - _classCallCheck(this, PositionalArgs); - + function PositionalArgs(values) { + this.values = values; this.type = "positional"; - this.isStatic = false; - this.values = exprs; - this.length = exprs.length; + this.length = values.length; } + PositionalArgs.empty = function empty() { + return EMPTY_POSITIONAL_ARGS; + }; + PositionalArgs.fromSpec = function fromSpec(sexp) { - if (!sexp || sexp.length === 0) return PositionalArgs.empty(); + if (!sexp || sexp.length === 0) return EMPTY_POSITIONAL_ARGS; return new PositionalArgs(sexp.map(_glimmerRuntimeLibSyntaxExpressions.default)); }; PositionalArgs.build = function build(exprs) { - return new this(exprs); + if (exprs.length === 0) { + return EMPTY_POSITIONAL_ARGS; + } else { + return new this(exprs); + } }; - PositionalArgs.empty = function empty() { - return this._empty = this._empty || new PositionalArgs([]); - }; - 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) { - return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledPositionalArgs.create({ values: this.values.map(function (v) { - return v.compile(compiler, env); - }) }); + 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 NamedArgs = (function () { - function NamedArgs(_ref13) { - var map = _ref13.map; + var EMPTY_POSITIONAL_ARGS = new ((function (_PositionalArgs) { + babelHelpers.inherits(_class, _PositionalArgs); - _classCallCheck(this, NamedArgs); + 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.isStatic = false; - this.map = map; + this.length = keys.length; } + NamedArgs.empty = function empty() { + return EMPTY_NAMED_ARGS; + }; + NamedArgs.fromSpec = function fromSpec(sexp) { if (sexp === null || sexp === undefined) { - return NamedArgs.empty(); + return EMPTY_NAMED_ARGS; } - var keys = []; - var values = []; - var map = _glimmerUtil.dict(); - Object.keys(sexp).forEach(function (key) { - keys.push(key); - var value = map[key] = _glimmerRuntimeLibSyntaxExpressions.default(sexp[key]); - values.push(value); - }); - return new this({ map: map }); - }; + var keys = sexp[0]; + var exprs = sexp[1]; - NamedArgs.build = function build(map) { - var keys = []; - var values = []; - Object.keys(map).forEach(function (k) { - var value = map[k]; - keys.push(k); - values.push(value); - }); - return new NamedArgs({ map: map }); + if (keys.length === 0) { + return EMPTY_NAMED_ARGS; + } + return new this(keys, exprs.map(function (expr) { + return _glimmerRuntimeLibSyntaxExpressions.default(expr); + })); }; - NamedArgs.empty = function empty() { - return this._empty = this._empty || new NamedArgs({ map: _glimmerUtil.dict() }); + NamedArgs.build = function build(keys, values) { + if (keys.length === 0) { + return EMPTY_NAMED_ARGS; + } else { + return new this(keys, values); + } }; - NamedArgs.prototype.add = function add(key, value) { - this.map[key] = value; - }; - NamedArgs.prototype.at = function at(key) { - return this.map[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.map[key]; + return this.keys.indexOf(key) !== -1; }; - NamedArgs.prototype.compile = function compile(compiler, env) { - var map = this.map; + NamedArgs.prototype.compile = function compile(compiler, env, symbolTable) { + var keys = this.keys; + var values = this.values; - var compiledMap = _glimmerUtil.dict(); - Object.keys(map).forEach(function (key) { - compiledMap[key] = map[key].compile(compiler, env); - }); - return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs.create({ map: compiledMap }); + return new _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs(keys, values.map(function (value) { + return value.compile(compiler, env, symbolTable); + })); }; return NamedArgs; })(); exports.NamedArgs = NamedArgs; - var Templates = (function () { - function Templates(options) { - _classCallCheck(this, Templates); + var EMPTY_NAMED_ARGS = new ((function (_NamedArgs) { + babelHelpers.inherits(_class2, _NamedArgs); - this.type = "templates"; - this.default = options.template; - this.inverse = options.inverse; + function _class2() { + _NamedArgs.call(this, _glimmerRuntimeLibUtils.EMPTY_ARRAY, _glimmerRuntimeLibUtils.EMPTY_ARRAY); } - Templates.fromSpec = function fromSpec(_ref14, children) { - var templateId = _ref14[0]; - var inverseId = _ref14[1]; + _class2.prototype.at = function at(key) { + return undefined; // ??! + }; - return new Templates({ - template: templateId === null ? null : children[templateId], - inverse: inverseId === null ? null : children[inverseId] - }); + _class2.prototype.has = function has(key) { + return false; }; - Templates.empty = function empty() { - return new Templates({ template: null, inverse: null }); + _class2.prototype.compile = function compile(compiler, env) { + return _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs.empty(); }; - Templates.build = function build(template) { + 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]; - return new this({ template: template, inverse: inverse }); + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1FBMkdBLEtBQUE7a0JBQUEsS0FBQTs7QUFxQkUsaUJBckJGLEtBQUEsQ0FxQmMsT0FBcUUsRUFBQTtrQ0FyQm5GLEtBQUE7O0FBc0JJLHVDQUFPLENBQUM7QUFyQkgsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBc0JwQixnQkFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNwQzs7QUExQkgsYUFBQSxDQUdTLFFBQVEsR0FBQSxrQkFBQyxJQUFnQyxFQUFFLFFBQXVCLEVBQUE7Z0JBQ2hFLElBQUksR0FBeUMsSUFBSTtnQkFBM0MsTUFBTSxHQUFpQyxJQUFJO2dCQUFuQyxJQUFJLEdBQTJCLElBQUk7Z0JBQTdCLFVBQVUsR0FBZSxJQUFJO2dCQUFqQixTQUFTLEdBQUksSUFBSTs7QUFFeEQsbUJBQU8sSUFBSSxLQUFLLENBQUM7QUFDZixvQkFBSSxFQUFFLElBQXdCO0FBQzlCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUEwQixFQUFFLElBQUksQ0FBQztBQUNyRCx5QkFBUyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDO2FBQ2pFLENBQUMsQ0FBQztTQUNKOztBQVhILGFBQUEsQ0FhUyxLQUFLLEdBQUEsZUFBQyxPQUFPLEVBQUE7QUFDbEIsbUJBQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7O0FBZkgsYUFBQSxXQTRCRSxJQUFJLEdBQUEsY0FBQyxPQUFxQixFQUFBOzZCQUNhLElBQUksQ0FBQyxTQUFTO2dCQUFw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Q0FBQyxTQUFTLENBQUM7YUFDekQsQ0FBQyxDQUFDO1NBQ0o7O0FBUkgsaUJBQUEsQ0FVUyxLQUFLLEdBQUEsaUJBQUE7QUFDVixtQkFBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDekQ7O0FBWkgsaUJBQUEsQ0FjUyxLQUFLLEdBQUEsZUFBQyxRQUFxQixFQUEyQjtnQkFBekIsT0FBTyx5REFBYyxJQUFJOztBQUMzRCxtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBUixRQUFRLEVBQUUsT0FBTyxFQUFQLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDeEM7O2VBaEJILFNBQUEiLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZNIH0gZnJvbSAnLi4vdm0nO1xuXG5pbXBvcnQge1xuICBCbG9ja1NjYW5uZXJcbn0gZnJvbSAnLi4vc2Nhbm5lcic7XG5cbmltcG9ydCB7XG4gIEFUVFJJQlVURSBhcyBBVFRSSUJVVEVfU1lOVEFYLFxuICBBUkdVTUVOVCBhcyBBUkdVTUVOVF9TWU5UQVgsXG4gIENvbXBpbGVJbnRvLFxuICBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyU3ludGF4LFxuICBBdHRyaWJ1dGUgYXMgQXR0cmlidXRlU3ludGF4LFxuICBBcmd1bWVudCBhcyBBcmd1bWVudFN5bnRheCxcbiAgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4LFxuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4LFxuICBTeW1ib2xMb29rdXBcbn0gZnJvbSAnLi4vc3ludGF4JztcblxuaW1wb3J0IHtcbiAgSW5saW5lQmxvY2ssXG4gIEJsb2NrIGFzIENvbXBpbGVkQmxvY2tcbn0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IHtcbiAgT3Bjb2RlXG59IGZyb20gJy4uL29wY29kZXMnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQge1xuICBQdXRWYWx1ZU9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcblxuaW1wb3J0IHtcbiAgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZSxcbiAgT3BlbkNvbXBvbmVudE9wY29kZSxcbiAgQ2xvc2VDb21wb25lbnRPcGNvZGVcbn0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBNb2RpZmllck9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5cbmltcG9ydCBidWlsZEV4cHJlc3Npb24gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVkQXJncyxcbiAgQ29tcGlsZWROYW1lZEFyZ3MsXG4gIENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsXG59IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuXG5pbXBvcnQgQ29tcGlsZWRWYWx1ZSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVkTG9jYWxSZWYsXG4gIENvbXBpbGVkS2V5d29yZFJlZixcbiAgQ29tcGlsZWRTZWxmUmVmXG59IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL3JlZic7XG5cbmltcG9ydCBDb21waWxlZEhhc0Jsb2NrIGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2hhcy1ibG9jayc7XG5cbmltcG9ydCBDb21waWxlZEhhc0Jsb2NrUGFyYW1zIGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2hhcy1ibG9jay1wYXJhbXMnO1xuXG5pbXBvcnQgQ29tcGlsZWRIZWxwZXIgZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvaGVscGVyJztcblxuaW1wb3J0IENvbXBpbGVkQ29uY2F0IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2NvbmNhdCc7XG5cbmltcG9ydCB7XG4gIENvbXBpbGVkRXhwcmVzc2lvblxufSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuXG5pbXBvcnQge1xuICBPcGFxdWUsXG4gIEludGVybmVkU3RyaW5nLFxuICBEaWN0LFxuICBkaWN0LFxuICBpbnRlcm4sXG59IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7XG4gIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlLFxuICBDbG9zZUVsZW1lbnRPcGNvZGUsXG4gIFN0YXRpY0F0dHJPcGNvZGUsXG4gIER5bmFtaWNBdHRyT3Bjb2RlLFxuICBEeW5hbWljQXR0ck5TT3Bjb2RlXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0IHtcbiAgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUsXG4gIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlLFxuICBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUsXG4gIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQnO1xuXG5pbXBvcnQge1xuICBTdGF0ZW1lbnRzIGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLFxuICBFeHByZXNzaW9ucyBhcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMsXG4gIENvcmUgYXMgU2VyaWFsaXplZENvcmUsXG4gIEJsb2NrTWV0YVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja09wdGlvbnMge1xuXG59XG5cbmV4cG9ydCBjbGFzcyBCbG9jayBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5CbG9jaywgY2hpbGRyZW46IElubGluZUJsb2NrW10pOiBCbG9jayB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaCwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IEJsb2NrKHtcbiAgICAgIHBhdGg6IHBhdGggYXMgSW50ZXJuZWRTdHJpbmdbXSxcbiAgICAgIGFyZ3M6IEFyZ3MuZnJvbVNwZWMocGFyYW1zIGFzIEludGVybmVkU3RyaW5nW10sIGhhc2gpLFxuICAgICAgdGVtcGxhdGVzOiBUZW1wbGF0ZXMuZnJvbVNwZWMoW3RlbXBsYXRlSWQsIGludmVyc2VJZF0sIGNoaWxkcmVuKVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKG9wdGlvbnMpOiBCbG9jayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG9wdGlvbnMpO1xuICB9XG5cbiAgcGF0aDogSW50ZXJuZWRTdHJpbmdbXTtcbiAgYXJnczogQXJncztcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZXM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyBwYXRoOiBJbnRlcm5lZFN0cmluZ1tdLCBhcmdzOiBBcmdzLCB0ZW1wbGF0ZXM6IFRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhdGggPSBvcHRpb25zLnBhdGg7XG4gICAgdGhpcy5hcmdzID0gb3B0aW9ucy5hcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gb3B0aW9ucy50ZW1wbGF0ZXM7XG4gIH1cblxuICBzY2FuKHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IFN0YXRlbWVudFN5bnRheCB7XG4gICAgbGV0IHsgZGVmYXVsdDogX2RlZmF1bHQsIGludmVyc2UgfSA9IHRoaXMudGVtcGxhdGVzO1xuXG4gICAgaWYgKF9kZWZhdWx0KSBzY2FubmVyLmFkZENoaWxkKF9kZWZhdWx0KTtcbiAgICBpZiAoaW52ZXJzZSkgIHNjYW5uZXIuYWRkQ2hpbGQoaW52ZXJzZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBpbGUob3BzOiBDb21waWxlSW50bykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlN5bnRheEVycm9yXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxhbnk+IHtcbiAgcHVibGljIHR5cGUgPSBcInVua25vd25cIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLlVua25vd24pOiBVbmtub3duIHtcbiAgICBsZXQgWywgcGF0aF0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBVbmtub3duKHsgcmVmOiBuZXcgUmVmKHsgcGFydHM6IHBhdGggYXMgSW50ZXJuZWRTdHJpbmdbXSB9KSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcsIHVuc2FmZTogYm9vbGVhbik6IFVua25vd24ge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHJlZjogUmVmLmJ1aWxkKHBhdGgpLCB1bnNhZmUgfSk7XG4gIH1cblxuICByZWY6IFJlZjtcbiAgdHJ1c3RpbmdNb3JwaDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZiA9IG9wdGlvbnMucmVmO1xuICAgIHRoaXMudHJ1c3RpbmdNb3JwaCA9ICEhb3B0aW9ucy51bnNhZmU7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHBhcmVudE1ldGE6IEJsb2NrTWV0YSk6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+IHtcbiAgICBsZXQgeyByZWYgfSA9IHRoaXM7XG5cbiAgICBpZiAoZW52Lmhhc0hlbHBlcihyZWYucGFydHMsIHBhcmVudE1ldGEpKSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkSGVscGVyKHsgbmFtZTogcmVmLnBhcnRzLCBoZWxwZXI6IGVudi5sb29rdXBIZWxwZXIocmVmLnBhcnRzLCBwYXJlbnRNZXRhKSwgYXJnczogQ29tcGlsZWRBcmdzLmVtcHR5KCkgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZi5jb21waWxlKGNvbXBpbGVyKTtcbiAgICB9XG4gIH1cblxuICBzaW1wbGVQYXRoKCk6IEludGVybmVkU3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZWYuc2ltcGxlUGF0aCgpO1xuICB9XG59XG5cbmludGVyZmFjZSBBcHBlbmRPcGNvZGUge1xuICBuZXcoKTogT3Bjb2RlO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBBcHBlbmQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuQXBwZW5kKTogQXBwZW5kIHtcbiAgICBsZXQgWywgdmFsdWUsIHRydXN0aW5nTW9ycGhdID0gc2V4cDtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZEFwcGVuZCh7IHZhbHVlOiBidWlsZEV4cHJlc3Npb24odmFsdWUpLCB0cnVzdGluZ01vcnBoIH0pO1xuICB9XG5cbiAgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8YW55PjtcbiAgdHJ1c3RpbmdNb3JwaDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7IHZhbHVlLCB0cnVzdGluZ01vcnBoIH06IHsgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8YW55PiwgdHJ1c3RpbmdNb3JwaDogYm9vbGVhbiB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy50cnVzdGluZ01vcnBoID0gdHJ1c3RpbmdNb3JwaDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQXBwZW5kIGV4dGVuZHMgQXBwZW5kIHtcbiAgcHVibGljIHR5cGUgPSBcIm9wdGltaXplZC1hcHBlbmRcIjtcblxuICBkZW9wdCgpOiBVbm9wdGltaXplZEFwcGVuZCB7XG4gICAgcmV0dXJuIG5ldyBVbm9wdGltaXplZEFwcGVuZCh0aGlzKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBibG9jazogQ29tcGlsZWRCbG9jaykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgUHV0VmFsdWVPcGNvZGUoeyBleHByZXNzaW9uOiB0aGlzLnZhbHVlLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgYmxvY2subWV0YSkgfSkpO1xuXG4gICAgaWYgKHRoaXMudHJ1c3RpbmdNb3JwaCkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVub3B0aW1pemVkQXBwZW5kIGV4dGVuZHMgQXBwZW5kIHtcbiAgcHVibGljIHR5cGUgPSBcInVub3B0aW1pemVkLWFwcGVuZFwiO1xuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBibG9jazogQ29tcGlsZWRCbG9jaykge1xuICAgIGxldCBleHByZXNzaW9uID0gdGhpcy52YWx1ZS5jb21waWxlKGNvbXBpbGVyLCBlbnYsIGJsb2NrLm1ldGEpO1xuXG4gICAgaWYgKHRoaXMudHJ1c3RpbmdNb3JwaCkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoZXhwcmVzc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZShleHByZXNzaW9uKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBNT0RJRklFUl9TWU5UQVggPSBcImMwNDIwMzk3LThmZjEtNDI0MS04ODJiLTRiN2ExMDdjOTYzMlwiO1xuXG5leHBvcnQgY2xhc3MgTW9kaWZpZXIgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBcImMwNDIwMzk3LThmZjEtNDI0MS04ODJiLTRiN2ExMDdjOTYzMlwiID0gdHJ1ZTtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nID0gXCJtb2RpZmllclwiO1xuICBwdWJsaWMgcGF0aDogSW50ZXJuZWRTdHJpbmdbXTtcbiAgcHVibGljIGFyZ3M6IEFyZ3M7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGUpIHtcbiAgICBsZXQgWywgcGF0aCwgcGFyYW1zLCBoYXNoXSA9IG5vZGU7XG5cbiAgICByZXR1cm4gbmV3IE1vZGlmaWVyKHtcbiAgICAgIHBhdGgsXG4gICAgICBhcmdzOiBBcmdzLmZyb21TcGVjKHBhcmFtcywgaGFzaClcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBNb2RpZmllcih7XG4gICAgICBwYXRoLFxuICAgICAgcGFyYW1zOiBvcHRpb25zLnBhcmFtcyxcbiAgICAgIGhhc2g6IG9wdGlvbnMuaGFzaFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wYXRoID0gb3B0aW9ucy5wYXRoO1xuICAgIHRoaXMuYXJncyA9IG9wdGlvbnMuYXJncztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShjb21waWxlciwgZW52KTtcblxuICAgIGlmIChlbnYuaGFzTW9kaWZpZXIodGhpcy5wYXRoKSkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBNb2RpZmllck9wY29kZSh7XG4gICAgICAgIG5hbWU6IHRoaXMucGF0aFswXSxcbiAgICAgICAgbWFuYWdlcjogZW52Lmxvb2t1cE1vZGlmaWVyKHRoaXMucGF0aCksXG4gICAgICAgIGFyZ3NcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAke3RoaXMucGF0aC5qb2luKCcuJyl9IGlzIG5vdCBhIG1vZGlmaWVyYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNBcmcgZXh0ZW5kcyBBcmd1bWVudFN5bnRheDxzdHJpbmc+IHtcbiAgcHVibGljIHR5cGUgPSBcInN0YXRpYy1hcmdcIjtcbiAgbmFtZTogSW50ZXJuZWRTdHJpbmc7XG4gIHZhbHVlOiBJbnRlcm5lZFN0cmluZztcblxuICBzdGF0aWMgZnJvbVNwZWMobm9kZTogU2VyaWFsaXplZFN0YXRlbWVudHMuU3RhdGljQXJnKTogU3RhdGljQXJnIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWVdID0gbm9kZTtcblxuICAgIHJldHVybiBuZXcgU3RhdGljQXJnKHsgbmFtZTogbmFtZSBhcyBJbnRlcm5lZFN0cmluZywgdmFsdWU6IHZhbHVlIGFzIEludGVybmVkU3RyaW5nIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmc9bnVsbCk6IFN0YXRpY0FyZyB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZTogaW50ZXJuKG5hbWUpLCB2YWx1ZTogaW50ZXJuKHZhbHVlKSB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBjb21waWxlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBpbGVyIFN0YXRpY0FyZyBcIiR7dGhpcy5uYW1lfVwiIGFzIGl0IGlzIGEgZGVsZWdhdGUgZm9yIFZhbHVlU3ludGF4PHN0cmluZz4uYCk7XG4gIH1cblxuICB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4ge1xuICAgIHJldHVybiBWYWx1ZS5idWlsZCh0aGlzLnZhbHVlIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBcmcgZXh0ZW5kcyBBcmd1bWVudFN5bnRheDxPcGFxdWU+IHtcbiAgcHVibGljIHR5cGUgPSAnZHluYW1pYy1hcmcnO1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuRHluYW1pY0FyZyk6IER5bmFtaWNBcmcge1xuICAgIGxldCBbLCBuYW1lLCB2YWx1ZV0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBEeW5hbWljQXJnKHtcbiAgICAgIG5hbWU6IG5hbWUgYXMgSW50ZXJuZWRTdHJpbmcsXG4gICAgICB2YWx1ZTogYnVpbGRFeHByZXNzaW9uKHZhbHVlKVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKF9uYW1lOiBzdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4pOiBEeW5hbWljQXJnIHtcbiAgICBsZXQgbmFtZSA9IGludGVybihfbmFtZSk7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZSwgdmFsdWUgfSk7XG4gIH1cblxuICBuYW1lOiBJbnRlcm5lZFN0cmluZztcbiAgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPjtcbiAgbmFtZXNwYWNlOiBJbnRlcm5lZFN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgPSBudWxsIH06IHsgbmFtZTogSW50ZXJuZWRTdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4sIG5hbWVzcGFjZT86IEludGVybmVkU3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB9XG5cbiAgY29tcGlsZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIER5bmFtaWNBcmcgZm9yIFwiJHt0aGlzLm5hbWV9XCIgYXMgaXQgaXMgZGVsZWdhdGUgZm9yIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPi5gKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGluZ0F0dHIge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuVHJ1c3RpbmdBdHRyKTogRHluYW1pY0F0dHIge1xuICAgIGxldCBbLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljQXR0cih7XG4gICAgICBuYW1lOiBuYW1lIGFzIEludGVybmVkU3RyaW5nLFxuICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UgYXMgSW50ZXJuZWRTdHJpbmcsXG4gICAgICBpc1RydXN0aW5nOiB0cnVlLFxuICAgICAgdmFsdWU6IGJ1aWxkRXhwcmVzc2lvbih2YWx1ZSlcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChfbmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuLCBfbmFtZXNwYWNlOiBzdHJpbmc9bnVsbCk6IER5bmFtaWNBdHRyIHtcbiAgICBsZXQgbmFtZSA9IGludGVybihfbmFtZSk7XG4gICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyBpbnRlcm4oX25hbWVzcGFjZSkgOiBudWxsO1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0pO1xuICB9XG5cbiAgY29tcGlsZSgpIHsgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNvbXBpbGUgYSBUcnVzdGluZ0F0dHIgd2hpY2ggaXMganVzdCBhIGRlbGVnYXRlIGZvciBEeW5hbWljQXR0ci4nKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIHR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGU6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLlN0YXRpY0F0dHIpOiBTdGF0aWNBdHRyIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBub2RlO1xuICAgIHJldHVybiBuZXcgU3RhdGljQXR0cih7IG5hbWU6IG5hbWUgYXMgSW50ZXJuZWRTdHJpbmcsIHZhbHVlOiB2YWx1ZSBhcyBJbnRlcm5lZFN0cmluZywgbmFtZXNwYWNlOiBuYW1lc3BhY2UgYXMgSW50ZXJuZWRTdHJpbmcgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U6IHN0cmluZz1udWxsKTogU3RhdGljQXR0ciB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZTogaW50ZXJuKG5hbWUpLCB2YWx1ZTogaW50ZXJuKHZhbHVlKSwgbmFtZXNwYWNlOiBuYW1lc3BhY2UgJiYgaW50ZXJuKG5hbWVzcGFjZSkgfSk7XG4gIH1cblxuICBuYW1lOiBJbnRlcm5lZFN0cmluZztcbiAgdmFsdWU6IEludGVybmVkU3RyaW5nO1xuICBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBpc1RydXN0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlID0gbnVsbCB9OiB7IG5hbWU6IEludGVybmVkU3RyaW5nLCB2YWx1ZTogSW50ZXJuZWRTdHJpbmcsIG5hbWVzcGFjZT86IEludGVybmVkU3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogQ29tcGlsZUludG8pIHtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IFN0YXRpY0F0dHJPcGNvZGUodGhpcykpO1xuICB9XG5cbiAgdmFsdWVTeW50YXgoKTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+IHtcbiAgICByZXR1cm4gVmFsdWUuYnVpbGQodGhpcy52YWx1ZSBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5EeW5hbWljQXR0cik6IER5bmFtaWNBdHRyIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBzZXhwO1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoe1xuICAgICAgbmFtZTogbmFtZSBhcyBJbnRlcm5lZFN0cmluZyxcbiAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlIGFzIEludGVybmVkU3RyaW5nLFxuICAgICAgdmFsdWU6IGJ1aWxkRXhwcmVzc2lvbih2YWx1ZSlcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChfbmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nID0gZmFsc2UsIF9uYW1lc3BhY2U6IHN0cmluZz1udWxsKTogRHluYW1pY0F0dHIge1xuICAgIGxldCBuYW1lID0gaW50ZXJuKF9uYW1lKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IGludGVybihfbmFtZXNwYWNlKSA6IG51bGw7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9KTtcbiAgfVxuXG4gIG5hbWU6IEludGVybmVkU3RyaW5nO1xuICB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+O1xuICBuYW1lc3BhY2U6IEludGVybmVkU3RyaW5nO1xuICBpc1RydXN0aW5nOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUsIGlzVHJ1c3RpbmcgPSBmYWxzZSwgbmFtZXNwYWNlID0gbnVsbCB9OiB7IG5hbWU6IEludGVybmVkU3RyaW5nLCBpc1RydXN0aW5nPzogYm9vbGVhbiwgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiwgbmFtZXNwYWNlPzogSW50ZXJuZWRTdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy5pc1RydXN0aW5nID0gaXNUcnVzdGluZztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHtuYW1lc3BhY2UsIHZhbHVlfSA9IHRoaXM7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRWYWx1ZU9wY29kZSh7IGV4cHJlc3Npb246IHZhbHVlLmNvbXBpbGUoY29tcGlsZXIsIGVudikgfSkpO1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRHluYW1pY0F0dHJOU09wY29kZSh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRHluYW1pY0F0dHJPcGNvZGUodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsb3NlRWxlbWVudCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcImNsb3NlLWVsZW1lbnRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoKSB7XG4gICAgcmV0dXJuIG5ldyBDbG9zZUVsZW1lbnQoKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZCgpIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvKSB7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBDbG9zZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRleHQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJ0ZXh0XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGU6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLlRleHQpOiBUZXh0IHtcbiAgICBsZXQgWywgY29udGVudF0gPSBub2RlO1xuXG4gICAgcmV0dXJuIG5ldyBUZXh0KHsgY29udGVudDogY29udGVudCBhcyBJbnRlcm5lZFN0cmluZyB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChjb250ZW50KTogVGV4dCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgY29udGVudCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb250ZW50OiBJbnRlcm5lZFN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IGNvbnRlbnQ6IEludGVybmVkU3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29udGVudCA9IG9wdGlvbnMuY29udGVudDtcbiAgfVxuXG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyRFNMKSB7XG4gICAgZHNsLnRleHQodGhpcy5jb250ZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tbWVudCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcImNvbW1lbnRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuQ29tbWVudCk6IENvbW1lbnQge1xuICAgIGxldCBbLCB2YWx1ZV0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBDb21tZW50KHsgdmFsdWUgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQodmFsdWU6IHN0cmluZyk6IENvbW1lbnQge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHZhbHVlOiBpbnRlcm4odmFsdWUpIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbW1lbnQ6IEludGVybmVkU3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29tbWVudCA9IG9wdGlvbnMudmFsdWU7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIGRzbC5jb21tZW50KHRoaXMuY29tbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwib3Blbi1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLk9wZW5FbGVtZW50KTogT3BlbkVsZW1lbnQge1xuICAgIGxldCBbLCB0YWcsIGJsb2NrUGFyYW1zXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IE9wZW5FbGVtZW50KHtcbiAgICAgIHRhZzogdGFnIGFzIEludGVybmVkU3RyaW5nLFxuICAgICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zIGFzIEludGVybmVkU3RyaW5nW11cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZCh0YWc6IHN0cmluZywgYmxvY2tQYXJhbXM6IHN0cmluZ1tdKTogT3BlbkVsZW1lbnQge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHRhZzogaW50ZXJuKHRhZyksIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyAmJiBibG9ja1BhcmFtcy5tYXAoaW50ZXJuKSB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0YWc6IEludGVybmVkU3RyaW5nO1xuICBwdWJsaWMgYmxvY2tQYXJhbXM6IEludGVybmVkU3RyaW5nW107XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyB0YWc6IEludGVybmVkU3RyaW5nLCBibG9ja1BhcmFtczogSW50ZXJuZWRTdHJpbmdbXSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wdGlvbnMudGFnO1xuICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBvcHRpb25zLmJsb2NrUGFyYW1zO1xuICB9XG5cbiAgc2NhbihzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCB7IHRhZyB9ID0gdGhpcztcblxuICAgIGlmIChzY2FubmVyLmVudi5oYXNDb21wb25lbnREZWZpbml0aW9uKFt0YWddKSkge1xuICAgICAgbGV0IHsgYXJncywgYXR0cnMgfSA9IHRoaXMucGFyYW1ldGVycyhzY2FubmVyKTtcbiAgICAgIHNjYW5uZXIuc3RhcnRCbG9jaygpO1xuICAgICAgdGhpcy50YWdDb250ZW50cyhzY2FubmVyKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IHNjYW5uZXIuZW5kQmxvY2soKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHsgdGFnLCBhcmdzLCBhdHRycywgdGVtcGxhdGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnQoeyB0YWcgfSk7XG4gICAgfVxuICB9XG5cbiAgY29tcGlsZShsaXN0OiBDb21waWxlSW50bywgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxpc3QuYXBwZW5kKG5ldyBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZSh0aGlzKSk7XG4gIH1cblxuICB0b0lkZW50aXR5KCk6IE9wZW5QcmltaXRpdmVFbGVtZW50IHtcbiAgICBsZXQgeyB0YWcgfSA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBPcGVuUHJpbWl0aXZlRWxlbWVudCh7IHRhZyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyYW1ldGVycyhzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiB7IGFyZ3M6IEFyZ3MsIGF0dHJzOiBJbnRlcm5lZFN0cmluZ1tdIH0ge1xuICAgIGxldCBjdXJyZW50ID0gc2Nhbm5lci5uZXh0KCk7XG4gICAgbGV0IGFyZ3MgPSBkaWN0PEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPj4oKTtcbiAgICBsZXQgYXR0cnM6IEludGVybmVkU3RyaW5nW10gPSBbXTtcblxuICAgIHdoaWxlIChjdXJyZW50W0FUVFJJQlVURV9TWU5UQVhdIHx8IGN1cnJlbnRbTU9ESUZJRVJfU1lOVEFYXSB8fCBjdXJyZW50W0FSR1VNRU5UX1NZTlRBWF0pIHtcbiAgICAgIGlmIChjdXJyZW50W01PRElGSUVSX1NZTlRBWF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiBFbGVtZW50IG1vZGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gY29tcG9uZW50c2ApO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyYW0gPSA8UGFyYW1ldGVyU3ludGF4PE9wYXF1ZT4+Y3VycmVudDtcblxuICAgICAgaWYgKGN1cnJlbnRbQVRUUklCVVRFX1NZTlRBWF0pIHtcbiAgICAgICAgYXR0cnMucHVzaChwYXJhbS5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgYXJnc1twYXJhbS5uYW1lXSA9IHBhcmFtLnZhbHVlU3ludGF4KCk7XG5cbiAgICAgIGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICB9XG5cbiAgICBzY2FubmVyLnVucHV0KGN1cnJlbnQpO1xuXG4gICAgcmV0dXJuIHsgYXJnczogQXJncy5mcm9tTmFtZWRBcmdzKE5hbWVkQXJncy5idWlsZChhcmdzKSksIGF0dHJzIH07XG4gIH1cblxuICBwcml2YXRlIHRhZ0NvbnRlbnRzKHNjYW5uZXI6IEJsb2NrU2Nhbm5lcikge1xuICAgIGxldCBuZXN0aW5nID0gMTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgY3VycmVudCA9IHNjYW5uZXIubmV4dCgpO1xuICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBDbG9zZUVsZW1lbnQgJiYgLS1uZXN0aW5nID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBzY2FubmVyLmFkZFN0YXRlbWVudChjdXJyZW50KTtcblxuICAgICAgaWYgKGN1cnJlbnQgaW5zdGFuY2VvZiBPcGVuRWxlbWVudCB8fCBjdXJyZW50IGluc3RhbmNlb2YgT3BlblByaW1pdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgbmVzdGluZysrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgQ29tcG9uZW50T3B0aW9ucyB7XG4gIHRhZzogSW50ZXJuZWRTdHJpbmc7XG4gIGF0dHJzOiBJbnRlcm5lZFN0cmluZ1tdO1xuICBhcmdzOiBBcmdzO1xuICB0ZW1wbGF0ZTogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBwdWJsaWMgdHlwZSA9ICdjb21wb25lbnQnO1xuICBwdWJsaWMgdGFnOiBJbnRlcm5lZFN0cmluZztcbiAgcHVibGljIGF0dHJzOiBJbnRlcm5lZFN0cmluZ1tdO1xuICBwdWJsaWMgYXJnczogQXJncztcbiAgcHVibGljIHRlbXBsYXRlOiBJbmxpbmVCbG9jaztcblxuICBjb25zdHJ1Y3Rvcih7IHRhZywgYXJncywgYXR0cnMsIHRlbXBsYXRlIH06IENvbXBvbmVudE9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGFnID0gdGFnO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5hdHRycyA9IGF0dHJzO1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIGNvbXBpbGUobGlzdDogQ29tcGlsZUludG8gJiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGVudi5nZXRDb21wb25lbnREZWZpbml0aW9uKFt0aGlzLnRhZ10pO1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmdzLmNvbXBpbGUobGlzdCBhcyBTeW1ib2xMb29rdXAsIGVudik7XG4gICAgbGV0IHNoYWRvdyA9IHRoaXMuYXR0cnM7XG4gICAgbGV0IHRlbXBsYXRlcyA9IG5ldyBUZW1wbGF0ZXMoeyB0ZW1wbGF0ZTogdGhpcy50ZW1wbGF0ZSwgaW52ZXJzZTogbnVsbCB9KTtcblxuICAgIGxpc3QuYXBwZW5kKG5ldyBQdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKHsgYXJncywgZGVmaW5pdGlvbiB9KSk7XG4gICAgbGlzdC5hcHBlbmQobmV3IE9wZW5Db21wb25lbnRPcGNvZGUoeyBzaGFkb3csIHRlbXBsYXRlcyB9KSk7XG4gICAgbGlzdC5hcHBlbmQobmV3IENsb3NlQ29tcG9uZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuUHJpbWl0aXZlRWxlbWVudCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcIm9wZW4tcHJpbWl0aXZlLWVsZW1lbnRcIjtcblxuICBwdWJsaWMgdGFnOiBJbnRlcm5lZFN0cmluZztcblxuICBzdGF0aWMgYnVpbGQodGFnOiBzdHJpbmcpOiBPcGVuUHJpbWl0aXZlRWxlbWVudCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgdGFnOiBpbnRlcm4odGFnKSB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgdGFnOiBJbnRlcm5lZFN0cmluZyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wdGlvbnMudGFnO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogQ29tcGlsZUludG8pIHtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlKHsgdGFnOiB0aGlzLnRhZyB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFlpZWxkIGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLllpZWxkKTogWWllbGQge1xuICAgIGxldCBbLCB0bywgcGFyYW1zXSA9IHNleHA7XG5cbiAgICBsZXQgYXJncyA9IEFyZ3MuZnJvbVNwZWMocGFyYW1zLCBudWxsKTtcblxuICAgIHJldHVybiBuZXcgWWllbGQoeyB0bzogdG8gYXMgSW50ZXJuZWRTdHJpbmcsIGFyZ3MgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGFyYW1zOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSwgdG86IHN0cmluZyk6IFlpZWxkIHtcbiAgICBsZXQgYXJncyA9IEFyZ3MuZnJvbVBvc2l0aW9uYWxBcmdzKFBvc2l0aW9uYWxBcmdzLmJ1aWxkKHBhcmFtcykpO1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHRvOiBpbnRlcm4odG8pLCBhcmdzIH0pO1xuICB9XG5cbiAgdHlwZSA9IFwieWllbGRcIjtcbiAgcHVibGljIHRvOiBJbnRlcm5lZFN0cmluZztcbiAgcHVibGljIGFyZ3M6IEFyZ3M7XG5cbiAgY29uc3RydWN0b3IoeyB0bywgYXJncyB9OiB7IHRvOiBJbnRlcm5lZFN0cmluZywgYXJnczogQXJncyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRvID0gdG87XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgbGV0IHRvID0gY29tcGlsZXIuZ2V0QmxvY2tTeW1ib2wodGhpcy50byk7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShjb21waWxlciwgZW52KTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IE9wZW5CbG9ja09wY29kZSh7IHRvLCBsYWJlbDogdGhpcy50bywgYXJncyB9KSk7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBDbG9zZUJsb2NrT3Bjb2RlKCkpO1xuICB9XG59XG5cbmNsYXNzIE9wZW5CbG9ja09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHR5cGUgPSBcIm9wZW4tYmxvY2tcIjtcbiAgcHVibGljIHRvOiBudW1iZXI7XG4gIHB1YmxpYyBsYWJlbDogSW50ZXJuZWRTdHJpbmc7XG4gIHB1YmxpYyBhcmdzOiBDb21waWxlZEFyZ3M7XG5cbiAgY29uc3RydWN0b3IoeyB0bywgbGFiZWwsIGFyZ3MgfTogeyB0bzogbnVtYmVyLCBsYWJlbDogSW50ZXJuZWRTdHJpbmcsIGFyZ3M6IENvbXBpbGVkQXJncyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRvID0gdG87XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgYmxvY2sgPSB2bS5zY29wZSgpLmdldEJsb2NrKHRoaXMudG8pO1xuICAgIGxldCBhcmdzO1xuXG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICBhcmdzID0gdGhpcy5hcmdzLmV2YWx1YXRlKHZtKTtcbiAgICB9XG5cbiAgICAvLyBGSVhNRTogY2FuIHdlIGF2b2lkIGRvaW5nIHRoaXMgd2hlbiB3ZSBkb24ndCBoYXZlIGEgYmxvY2s/XG4gICAgdm0ucHVzaENhbGxlclNjb3BlKCk7XG5cbiAgICBpZiAoYmxvY2spIHtcbiAgICAgIHZtLmludm9rZUJsb2NrKGJsb2NrLCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsb3NlQmxvY2tPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwiY2xvc2UtYmxvY2tcIjtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICB2bS5wb3BTY29wZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWYWx1ZTxUIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb25zLlZhbHVlPiBleHRlbmRzIEV4cHJlc3Npb25TeW50YXg8VD4ge1xuICB0eXBlID0gXCJ2YWx1ZVwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYzxVIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZTogVSk6IFZhbHVlPFU+IHtcbiAgICByZXR1cm4gbmV3IFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZDxVIGV4dGVuZHMgU2VyaWFsaXplZEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZTogVSk6IFZhbHVlPFU+IHtcbiAgICByZXR1cm4gbmV3IHRoaXModmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBpbm5lcigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZFZhbHVlPFQ+KHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXQgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJnZXRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkdldCk6IEdldCB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IEdldCh7IHJlZjogbmV3IFJlZih7IHBhcnRzOiBwYXJ0cyBhcyBJbnRlcm5lZFN0cmluZ1tdIH0pIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHBhdGg6IHN0cmluZyk6IEdldCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgcmVmOiBSZWYuYnVpbGQocGF0aCkgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVmOiBSZWY7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWYgPSBvcHRpb25zLnJlZjtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbGZHZXQgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJzZWxmLWdldFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuU2VsZkdldCk6IFNlbGZHZXQge1xuICAgIGxldCBbLCBwYXJ0c10gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBTZWxmR2V0KHsgcmVmOiBuZXcgUmVmKHsgcGFydHM6IHBhcnRzIGFzIEludGVybmVkU3RyaW5nW10gfSkgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVmOiBSZWY7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWYgPSBvcHRpb25zLnJlZjtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEFyZ3VtZW50PFQ+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHR5cGUgPSBcImdldC1hcmd1bWVudFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuQXJnKTogR2V0QXJndW1lbnQ8T3BhcXVlPiB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IEdldEFyZ3VtZW50PE9wYXF1ZT4oeyBwYXJ0czogcGFydHMgYXMgSW50ZXJuZWRTdHJpbmdbXSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBHZXRBcmd1bWVudDxPcGFxdWU+IHtcbiAgICByZXR1cm4gbmV3IHRoaXM8T3BhcXVlPih7IHBhcnRzOiBwYXRoLnNwbGl0KCcuJykubWFwKGludGVybikgfSk7XG4gIH1cblxuICBwdWJsaWMgcGFydHM6IEludGVybmVkU3RyaW5nW107XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyBwYXJ0czogSW50ZXJuZWRTdHJpbmdbXSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhcnRzID0gb3B0aW9ucy5wYXJ0cztcbiAgfVxuXG4gIGNvbXBpbGUobG9va3VwOiBTeW1ib2xMb29rdXApOiBDb21waWxlZEV4cHJlc3Npb248VD4ge1xuICAgIGxldCB7IHBhcnRzIH0gPSB0aGlzO1xuICAgIGxldCBoZWFkID0gcGFydHNbMF07XG4gICAgbGV0IHN5bWJvbCA9IGxvb2t1cC5nZXROYW1lZFN5bWJvbChoZWFkKTtcblxuICAgIGxldCBwYXRoID0gcGFydHMuc2xpY2UoMSk7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZExvY2FsUmVmKHsgZGVidWc6IGhlYWQsIHN5bWJvbCwgcGF0aCB9KTtcbiAgfVxufVxuXG4vLyBpbnRlcm4gcGF0aHMgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCBhcyBrZXlzXG5mdW5jdGlvbiBpbnRlcm5QYXRoKHBhdGg6IHN0cmluZyk6IEludGVybmVkU3RyaW5nW10ge1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLm1hcChpbnRlcm4pO1xufVxuXG4vLyB0aGlzIGlzIHNlcGFyYXRlZCBvdXQgZnJvbSBHZXQgYmVjYXVzZSBVbmtub3duIGFsc28gaGFzIGEgcmVmLCBidXQgaXRcbi8vIG1heSB0dXJuIG91dCB0byBiZSBhIGhlbHBlclxuZXhwb3J0IGNsYXNzIFJlZiBleHRlbmRzIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiB7XG4gIHR5cGUgPSBcInJlZlwiO1xuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBSZWYge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHBhcnRzOiBpbnRlcm5QYXRoKHBhdGgpIH0pO1xuICB9XG5cbiAgcHVibGljIHBhcnRzOiBJbnRlcm5lZFN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHsgcGFydHMgfTogeyBwYXJ0czogSW50ZXJuZWRTdHJpbmdbXSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICBjb21waWxlKGxvb2t1cDogU3ltYm9sTG9va3VwKTogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4ge1xuICAgIGxldCB7IHBhcnRzIH0gPSB0aGlzO1xuICAgIGxldCBoZWFkID0gcGFydHNbMF07XG4gICAgbGV0IHBhdGggPSBwYXJ0cy5zbGljZSgxKTtcblxuICAgIGlmIChsb29rdXAuaGFzS2V5d29yZChoZWFkKSkge1xuICAgICAgcmV0dXJuIG5ldyBDb21waWxlZEtleXdvcmRSZWYoeyBuYW1lOiBoZWFkLCBwYXRoIH0pO1xuICAgIH0gaWYgKGxvb2t1cC5oYXNMb2NhbFN5bWJvbChoZWFkKSkge1xuICAgICAgbGV0IHN5bWJvbCA9IGxvb2t1cC5nZXRMb2NhbFN5bWJvbChoZWFkKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbFJlZih7IGRlYnVnOiBoZWFkLCBzeW1ib2wsIHBhdGggfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRTZWxmUmVmKHsgcGFydHMgfSk7XG4gICAgfVxuICB9XG5cbiAgcGF0aCgpOiBJbnRlcm5lZFN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cztcbiAgfVxuXG4gIHNpbXBsZVBhdGgoKTogSW50ZXJuZWRTdHJpbmcge1xuICAgIGlmICh0aGlzLnBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFydHNbMF07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWxwZXIgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJoZWxwZXJcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkhlbHBlcik6IEhlbHBlciB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaF0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBIZWxwZXIoe1xuICAgICAgcmVmOiBuZXcgUmVmKHsgcGFydHM6IHBhdGggYXMgSW50ZXJuZWRTdHJpbmdbXSB9KSxcbiAgICAgIGFyZ3M6IEFyZ3MuZnJvbVNwZWMocGFyYW1zLCBoYXNoKVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHBhdGg6IHN0cmluZywgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3MsIG5hbWVkOiBOYW1lZEFyZ3MpOiBIZWxwZXIge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHJlZjogUmVmLmJ1aWxkKHBhdGgpLCBhcmdzOiBuZXcgQXJncyh7IHBvc2l0aW9uYWwsIG5hbWVkIH0pIH0pO1xuICB9XG5cbiAgaXNTdGF0aWMgPSBmYWxzZTtcbiAgcmVmOiBSZWY7XG4gIGFyZ3M6IEFyZ3M7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyByZWY6IFJlZiwgYXJnczogQXJncyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZiA9IG9wdGlvbnMucmVmO1xuICAgIHRoaXMuYXJncyA9IG9wdGlvbnMuYXJncztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgcGFyZW50TWV0YTogQmxvY2tNZXRhKTogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4ge1xuICAgIGlmIChlbnYuaGFzSGVscGVyKHRoaXMucmVmLnBhcnRzLCBwYXJlbnRNZXRhKSkge1xuICAgICAgbGV0IHsgYXJncywgcmVmIH0gPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBDb21waWxlZEhlbHBlcih7IG5hbWU6IHJlZi5wYXJ0cywgaGVscGVyOiBlbnYubG9va3VwSGVscGVyKHJlZi5wYXJ0cywgcGFyZW50TWV0YSksIGFyZ3M6IGFyZ3MuY29tcGlsZShjb21waWxlciwgZW52KSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAke3RoaXMucmVmLnBhdGgoKS5qb2luKCcuJyl9IGlzIG5vdCBhIGhlbHBlcmApO1xuICAgIH1cbiAgfVxuXG4gIHNpbXBsZVBhdGgoKTogSW50ZXJuZWRTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlZi5zaW1wbGVQYXRoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhhc0Jsb2NrIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxib29sZWFuPiB7XG4gIHR5cGUgPSBcImhhcy1ibG9ja1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuSGFzQmxvY2spOiBIYXNCbG9jayB7XG4gICAgbGV0IFssIGJsb2NrTmFtZV0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBIYXNCbG9jayh7XG4gICAgICBibG9ja05hbWU6IGJsb2NrTmFtZSBhcyBJbnRlcm5lZFN0cmluZ1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmcpOiBIYXNCbG9jayB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgYmxvY2tOYW1lIH0pO1xuICB9XG5cbiAgYmxvY2tOYW1lOiBJbnRlcm5lZFN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSB9OiB7IGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEhhc0Jsb2NrIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkSGFzQmxvY2soe1xuICAgICAgYmxvY2tOYW1lOiB0aGlzLmJsb2NrTmFtZSxcbiAgICAgIGJsb2NrU3ltYm9sOiBjb21waWxlci5nZXRCbG9ja1N5bWJvbCh0aGlzLmJsb2NrTmFtZSlcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGFzQmxvY2tQYXJhbXMgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGJvb2xlYW4+IHtcbiAgdHlwZSA9IFwiaGFzLWJsb2NrLXBhcmFtc1wiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXMpOiBIYXNCbG9ja1BhcmFtcyB7XG4gICAgbGV0IFssIGJsb2NrTmFtZV0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBIYXNCbG9ja1BhcmFtcyh7XG4gICAgICBibG9ja05hbWU6IGJsb2NrTmFtZSBhcyBJbnRlcm5lZFN0cmluZ1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmcpOiBIYXNCbG9ja1BhcmFtcyB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgYmxvY2tOYW1lIH0pO1xuICB9XG5cbiAgYmxvY2tOYW1lOiBJbnRlcm5lZFN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSB9OiB7IGJsb2NrTmFtZTogSW50ZXJuZWRTdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEhhc0Jsb2NrUGFyYW1zIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkSGFzQmxvY2tQYXJhbXMoe1xuICAgICAgYmxvY2tOYW1lOiB0aGlzLmJsb2NrTmFtZSxcbiAgICAgIGJsb2NrU3ltYm9sOiBjb21waWxlci5nZXRCbG9ja1N5bWJvbCh0aGlzLmJsb2NrTmFtZSlcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uY2F0IHtcbiAgdHlwZSA9IFwiY29uY2F0XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRFeHByZXNzaW9ucy5Db25jYXQpOiBDb25jYXQge1xuICAgIGxldCBbLCBwYXJhbXNdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgQ29uY2F0KHsgcGFydHM6IHBhcmFtcy5tYXAoYnVpbGRFeHByZXNzaW9uKSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXJ0cyk6IENvbmNhdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgcGFydHMgfSk7XG4gIH1cblxuICBpc1N0YXRpYyA9IGZhbHNlO1xuICBwYXJ0czogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W107XG5cbiAgY29uc3RydWN0b3IoeyBwYXJ0cyB9OiB7IHBhcnRzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSB9KSB7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRDb25jYXQge1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRDb25jYXQoeyBwYXJ0czogdGhpcy5wYXJ0cy5tYXAocCA9PiBwLmNvbXBpbGUoY29tcGlsZXIsIGVudikpIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcImFyZ3NcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMocG9zaXRpb25hbDogU2VyaWFsaXplZENvcmUuUGFyYW1zLCBuYW1lZDogU2VyaWFsaXplZENvcmUuSGFzaCk6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyh7IHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLmZyb21TcGVjKHBvc2l0aW9uYWwpLCBuYW1lZDogTmFtZWRBcmdzLmZyb21TcGVjKG5hbWVkKSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfZW1wdHk6IEFyZ3M7XG5cbiAgc3RhdGljIGVtcHR5KCk6IEFyZ3Mge1xuICAgIHJldHVybiAodGhpcy5fZW1wdHkgPSB0aGlzLl9lbXB0eSB8fCBuZXcgQXJncyh7IHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLmVtcHR5KCksIG5hbWVkOiBOYW1lZEFyZ3MuZW1wdHkoKSB9KSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBvc2l0aW9uYWxBcmdzKHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzKTogQXJncyB7XG4gICAgcmV0dXJuIG5ldyBBcmdzKHsgcG9zaXRpb25hbCwgbmFtZWQ6IE5hbWVkQXJncy5lbXB0eSgpIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lZEFyZ3MobmFtZWQ6IE5hbWVkQXJncyk6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyh7IHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLmVtcHR5KCksIG5hbWVkIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLCBuYW1lZDogTmFtZWRBcmdzKTogQXJncyB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgcG9zaXRpb25hbCwgbmFtZWQgfSk7XG4gIH1cblxuICBwdWJsaWMgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3M7XG4gIHB1YmxpYyBuYW1lZDogTmFtZWRBcmdzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzLCBuYW1lZDogTmFtZWRBcmdzIH0pIHtcbiAgICB0aGlzLnBvc2l0aW9uYWwgPSBvcHRpb25zLnBvc2l0aW9uYWw7XG4gICAgdGhpcy5uYW1lZCA9IG9wdGlvbnMubmFtZWQ7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEFyZ3Mge1xuICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSB0aGlzO1xuICAgIHJldHVybiBDb21waWxlZEFyZ3MuY3JlYXRlKHsgcG9zaXRpb25hbDogcG9zaXRpb25hbC5jb21waWxlKGNvbXBpbGVyLCBlbnYpLCBuYW1lZDogbmFtZWQuY29tcGlsZShjb21waWxlciwgZW52KSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zaXRpb25hbEFyZ3Mge1xuICBwdWJsaWMgdHlwZSA9IFwicG9zaXRpb25hbFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkQ29yZS5QYXJhbXMpOiBQb3NpdGlvbmFsQXJncyB7XG4gICAgaWYgKCFzZXhwIHx8IHNleHAubGVuZ3RoID09PSAwKSByZXR1cm4gUG9zaXRpb25hbEFyZ3MuZW1wdHkoKTtcbiAgICByZXR1cm4gbmV3IFBvc2l0aW9uYWxBcmdzKHNleHAubWFwKGJ1aWxkRXhwcmVzc2lvbikpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGV4cHJzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSk6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoZXhwcnMpO1xuICB9XG5cbiAgc3RhdGljIF9lbXB0eTogUG9zaXRpb25hbEFyZ3M7XG5cbiAgc3RhdGljIGVtcHR5KCk6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gKHRoaXMuX2VtcHR5ID0gdGhpcy5fZW1wdHkgfHwgbmV3IFBvc2l0aW9uYWxBcmdzKFtdKSk7XG4gIH1cblxuICB2YWx1ZXM6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPltdO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihleHByczogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W10pIHtcbiAgICB0aGlzLnZhbHVlcyA9IGV4cHJzO1xuICAgIHRoaXMubGVuZ3RoID0gZXhwcnMubGVuZ3RoO1xuICB9XG5cbiAgc2xpY2Uoc3RhcnQ/OiBudW1iZXIsIGVuZD86IG51bWJlcik6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gUG9zaXRpb25hbEFyZ3MuYnVpbGQodGhpcy52YWx1ZXMuc2xpY2Uoc3RhcnQsIGVuZCkpO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcik6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBDb21waWxlZFBvc2l0aW9uYWxBcmdzLmNyZWF0ZSh7IHZhbHVlczogdGhpcy52YWx1ZXMubWFwKHYgPT4gdi5jb21waWxlKGNvbXBpbGVyLCBlbnYpKSB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmFtZWRBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcIm5hbWVkXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRDb3JlLkhhc2gpOiBOYW1lZEFyZ3Mge1xuICAgIGlmIChzZXhwID09PSBudWxsIHx8IHNleHAgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gTmFtZWRBcmdzLmVtcHR5KCk7IH1cbiAgICBsZXQga2V5czogSW50ZXJuZWRTdHJpbmdbXSA9IFtdO1xuICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICBsZXQgbWFwID0gZGljdDxFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4+KCk7XG5cbiAgICBPYmplY3Qua2V5cyhzZXhwKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBrZXlzLnB1c2goa2V5IGFzIEludGVybmVkU3RyaW5nKTtcbiAgICAgIGxldCB2YWx1ZSA9IG1hcFtrZXldID0gYnVpbGRFeHByZXNzaW9uKHNleHBba2V5XSk7XG4gICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoeyBtYXAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobWFwOiBEaWN0PEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPj4pOiBOYW1lZEFyZ3Mge1xuICAgIGxldCBrZXlzID0gW107XG4gICAgbGV0IHZhbHVlcyA9IFtdO1xuXG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gbWFwW2tdO1xuICAgICAga2V5cy5wdXNoKGsgYXMgSW50ZXJuZWRTdHJpbmcpO1xuICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBOYW1lZEFyZ3MoeyBtYXAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2VtcHR5O1xuXG4gIHN0YXRpYyBlbXB0eSgpOiBOYW1lZEFyZ3Mge1xuICAgIHJldHVybiAodGhpcy5fZW1wdHkgPSB0aGlzLl9lbXB0eSB8fCBuZXcgTmFtZWRBcmdzKHsgbWFwOiBkaWN0PEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPj4oKSB9KSk7XG4gIH1cblxuICBwdWJsaWMgbWFwOiBEaWN0PEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPj47XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgbWFwIH06IHsgbWFwOiBEaWN0PEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPj4gfSkge1xuICAgIHRoaXMubWFwID0gbWFwO1xuICB9XG5cbiAgYWRkKGtleTogSW50ZXJuZWRTdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4pIHtcbiAgICB0aGlzLm1hcFs8c3RyaW5nPmtleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGF0KGtleTogSW50ZXJuZWRTdHJpbmcpOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLm1hcFs8c3RyaW5nPmtleV07XG4gIH1cblxuICBoYXMoa2V5OiBJbnRlcm5lZFN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubWFwWzxzdHJpbmc+a2V5XTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG5cbiAgICBsZXQgY29tcGlsZWRNYXAgPSBkaWN0PENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+PigpO1xuXG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb21waWxlZE1hcFtrZXldID0gbWFwW2tleV0uY29tcGlsZShjb21waWxlciwgZW52KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBDb21waWxlZE5hbWVkQXJncy5jcmVhdGUoeyBtYXA6IGNvbXBpbGVkTWFwIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZXMge1xuICBwdWJsaWMgdHlwZSA9IFwidGVtcGxhdGVzXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKFt0ZW1wbGF0ZUlkLCBpbnZlcnNlSWRdOiBbbnVtYmVyLCBudW1iZXJdLCBjaGlsZHJlbjogSW5saW5lQmxvY2tbXSk6IFRlbXBsYXRlcyB7XG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZXMoe1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlSWQgPT09IG51bGwgPyBudWxsIDogY2hpbGRyZW5bdGVtcGxhdGVJZF0sXG4gICAgICBpbnZlcnNlOiBpbnZlcnNlSWQgPT09IG51bGwgPyBudWxsIDogY2hpbGRyZW5baW52ZXJzZUlkXSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBlbXB0eSgpOiBUZW1wbGF0ZXMge1xuICAgIHJldHVybiBuZXcgVGVtcGxhdGVzKHsgdGVtcGxhdGU6IG51bGwsIGludmVyc2U6IG51bGwgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQodGVtcGxhdGU6IElubGluZUJsb2NrLCBpbnZlcnNlOiBJbmxpbmVCbG9jaz1udWxsKTogVGVtcGxhdGVzIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyB0ZW1wbGF0ZSwgaW52ZXJzZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0OiBJbmxpbmVCbG9jaztcbiAgcHVibGljIGludmVyc2U6IElubGluZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgdGVtcGxhdGU6IElubGluZUJsb2NrLCBpbnZlcnNlOiBJbmxpbmVCbG9jayB9KSB7XG4gICAgdGhpcy5kZWZhdWx0ID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICB0aGlzLmludmVyc2UgPSBvcHRpb25zLmludmVyc2U7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBbUdNLEtBQWE7OEJBQWIsS0FBYTs7QUF3QmpCLGlCQXhCSSxLQUFhLENBd0JMLE9BQTZELEVBQUE7QUFDdkUsdUNBQU8sQ0FBQztBQXhCSCxnQkFBQSxDQUFBLElBQUksR0FBRyxPQUFPLENBQUM7QUF5QnBCLGdCQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN6QixnQkFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ3BDOztBQTdCRyxhQUFhLENBR1YsUUFBUSxHQUFBLGtCQUFDLElBQWdDLEVBQUUsV0FBd0IsRUFBRSxPQUFxQixFQUFBO2dCQUN4RixJQUFJLEdBQXlDLElBQUk7Z0JBQTNDLE1BQU0sR0FBaUMsSUFBSTtnQkFBbkMsSUFBSSxHQUEyQixJQUFJO2dCQUE3QixVQUFVLEdBQWUsSUFBSTtnQkFBakIsU0FBUyxHQUFJLElBQUk7O0FBRXhELGdCQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6RCxnQkFBSSxPQUFPLEdBQUcsQUFBQyxPQUFPLFNBQVMsS0FBSyxRQUFRLEdBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBRWhHLG1CQUFPLElBQUksS0FBSyxDQUFDO0FBQ2Ysb0JBQUksRUFBSixJQUFJO0FBQ0osb0JBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7QUFDakMseUJBQVMsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDakQsQ0FBQyxDQUFDO1NBQ0o7O0FBZEcsYUFBYSxDQWdCVixLQUFLLEdBQUEsZUFBQyxPQUFPLEVBQUE7QUFDbEIsbUJBQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUI7O0FBbEJHLGFBQWEsV0ErQmpCLElBQUksR0FBQSxjQUFDLE9BQXFCLEVBQUE7NkJBQ2EsSUFBSSxDQUFDLFNBQVM7Z0JBQXBDLFFBQVEsY0FBakIsT0FBTztnQkFBWSxPQUFPLGNBQVAsT0FBTzs7QUFFaEMsZ0JBQUksUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsZ0JBQUksT0FBTyxFQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFeEMsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBdENHLGFBQWEsV0F3Q2pCLE9BQU8sR0FBQSxpQkFBQyxHQUFnQixFQUFBO0FBQ3RCLGtCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2hDOztlQTFDRyxLQUFhO2dDQW5GakIsU0FBUzs7OztRQW9JWCxNQUFzQjs4QkFBdEIsTUFBc0I7O0FBQXRCLGNBQXNCLENBQ2IsUUFBUSxHQUFBLGtCQUFDLElBQWlDLEVBQUE7Z0JBQ3hDLEtBQUssR0FBbUIsSUFBSTtnQkFBckIsYUFBYSxHQUFJLElBQUk7O0FBQ25DLG1CQUFPLElBQUksZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLDRDQUFnQixLQUFLLENBQUMsRUFBRSxhQUFhLEVBQWIsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUM5RTs7QUFLRCxpQkFURixNQUFzQixDQVNSLElBQWtGLEVBQUE7Z0JBQWhGLEtBQUssR0FBUCxJQUFrRixDQUFoRixLQUFLO2dCQUFFLGFBQWEsR0FBdEIsSUFBa0YsQ0FBekUsYUFBYTs7QUFDaEMsd0NBQU8sQ0FBQztBQUNSLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7U0FDcEM7O2VBYkgsTUFBc0I7Z0NBcElwQixTQUFTOztRQW9KTCxlQUF1Qjs4QkFBdkIsZUFBdUI7O0FBQTdCLGlCQUFNLGVBQXVCLEdBQTdCO0FDdEdRLGdDQUFTLFNBQVMsQ0FBQyxDQUFDO0FEdUduQixnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztTQWVsQzs7QUFoQkssdUJBQXVCLFdBRzNCLEtBQUssR0FBQSxpQkFBQTtBQUNILG1CQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7O0FBTEcsdUJBQXVCLFdBTzNCLE9BQU8sR0FBQSxpQkFBQyxRQUFvQyxFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTtBQUN0RixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0E3SWxCLGNBQWMsQ0E2SXVCLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFcEcsZ0JBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtBQUN0Qix3QkFBUSxDQUFDLE1BQU0sQ0FBQyw2Q0F2RnBCLDZCQUE2QixFQXVGMEIsQ0FBQyxDQUFDO2FBQ3RELE1BQU07QUFDTCx3QkFBUSxDQUFDLE1BQU0sQ0FBQyw2Q0ExRnBCLDZCQUE2QixFQTBGMEIsQ0FBQyxDQUFDO2FBQ3REO1NBQ0Y7O2VBZkcsZUFBdUI7T0FBUSxNQUFNOzs7O1FBa0JyQyxpQkFBeUI7OEJBQXpCLGlCQUF5Qjs7QUFBL0IsaUJBQU0saUJBQXlCLEdBQS9CO0FDdEdRLGlDQUFTLFNBQVMsQ0FBQyxDQUFDO0FEdUduQixnQkFBQSxDQUFBLElBQUksR0FBRyxvQkFBb0IsQ0FBQztTQVdwQzs7QUFaSyx5QkFBeUIsV0FHN0IsT0FBTyxHQUFBLGlCQUFDLFFBQW9DLEVBQUUsR0FBZ0IsRUFBRSxXQUF3QixFQUFBO0FBQ3RGLGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRWhFLGdCQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDdEIsd0JBQVEsQ0FBQyxNQUFNLENBQUMsNkNBbkdwQiwyQkFBMkIsQ0FtR3lCLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQzNFLE1BQU07QUFDTCx3QkFBUSxDQUFDLE1BQU0sQ0FBQyw2Q0F0R3BCLDJCQUEyQixDQXNHeUIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDM0U7U0FDRjs7ZUFYRyxpQkFBeUI7T0FBUSxNQUFNOzs7QUFjdEMsUUFBTSxlQUFlLEdBQUcsc0NBQXNDLENBQUM7OztRQUVoRSxRQUFnQjs4QkFBaEIsUUFBZ0I7O0FBd0JwQixpQkF4QkksUUFBZ0IsQ0F3QlIsT0FBTyxFQUFBO0FBQ2pCLHdDQUFPLENBQUM7QUF4QlYsZ0JBQUEsQ0FBQSxzQ0FBQSxDQUFzQyxHQUFHLElBQUksQ0FBQztBQUV2QyxnQkFBQSxDQUFBLElBQUksR0FBVyxVQUFVLENBQUM7QUF1Qi9CLGdCQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMxQjs7QUE1QkcsZ0JBQWdCLENBT2IsUUFBUSxHQUFBLGtCQUFDLElBQUksRUFBQTtnQkFDWCxJQUFJLEdBQWtCLElBQUk7Z0JBQXBCLE1BQU0sR0FBVSxJQUFJO2dCQUFaLElBQUksR0FBSSxJQUFJOztBQUVqQyxtQkFBTyxJQUFJLFFBQVEsQ0FBQztBQUNsQixvQkFBSSxFQUFKLElBQUk7QUFDSixvQkFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQzthQUNsQyxDQUFDLENBQUM7U0FDSjs7QUFkRyxnQkFBZ0IsQ0FnQmIsS0FBSyxHQUFBLGVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQTtBQUN4QixtQkFBTyxJQUFJLFFBQVEsQ0FBQztBQUNsQixvQkFBSSxFQUFKLElBQUk7QUFDSixzQkFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0FBQ3RCLG9CQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1NBQ0o7O0FBdEJHLGdCQUFnQixXQThCcEIsT0FBTyxHQUFBLGlCQUFDLFFBQW9DLEVBQUUsR0FBZ0IsRUFBRSxXQUF3QixFQUFBO0FBQ3RGLGdCQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXpELGdCQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRTtBQUMzQyx3QkFBUSxDQUFDLE1BQU0sQ0FBQyx5Q0EvTHBCLGNBQWMsQ0FnTVIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDWixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQzFDLElBQUksQ0FDTCxDQUFDLENBQUM7YUFDSixNQUFNO0FBQ0wsc0JBQU0sSUFBSSxLQUFLLHFCQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXFCLENBQUM7YUFDNUU7U0FDRjs7ZUExQ0csUUFBZ0I7Z0NBdExwQixTQUFTOzs7O1FBbU9MLFNBQWlCOzhCQUFqQixTQUFpQjs7QUFjckIsaUJBZEksU0FBaUIsQ0FjVCxLQUFlLEVBQUE7Z0JBQWIsSUFBSSxHQUFOLEtBQWUsQ0FBYixJQUFJO2dCQUFFLEtBQUssR0FBYixLQUFlLENBQVAsS0FBSzs7QUFDdkIsc0NBQU8sQ0FBQztBQWRILGdCQUFBLENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQWV6QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCOztBQWxCRyxpQkFBaUIsQ0FLZCxRQUFRLEdBQUEsa0JBQUMsSUFBb0MsRUFBQTtnQkFDM0MsSUFBSSxHQUFXLElBQUk7Z0JBQWIsS0FBSyxHQUFJLElBQUk7O0FBQzFCLG1CQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN2Qzs7QUFSRyxpQkFBaUIsQ0FVZCxLQUFLLEdBQUEsZUFBQyxJQUFZLEVBQUUsS0FBYSxFQUF3QjtnQkFBdEIsU0FBUyx5REFBUyxJQUFJOztBQUM5RCxtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsS0FBSyxFQUFMLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbEM7O0FBWkcsaUJBQWlCLFdBb0JyQixPQUFPLEdBQUEsbUJBQUE7QUFDTCxrQkFBTSxJQUFJLEtBQUssaUNBQStCLElBQUksQ0FBQyxJQUFJLG9EQUFpRCxDQUFDO1NBQzFHOztBQXRCRyxpQkFBaUIsV0F3QnJCLFdBQVcsR0FBQSx1QkFBQTtBQUNULG1CQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDOztlQTFCRyxTQUFpQjtnQ0FyT3JCLFFBQVE7Ozs7UUFrUUosVUFBa0I7OEJBQWxCLFVBQWtCOztBQW1CdEIsaUJBbkJJLFVBQWtCLENBbUJWLEtBQXdHLEVBQUE7Z0JBQXRHLElBQUksR0FBTixLQUF3RyxDQUF0RyxJQUFJO2dCQUFFLEtBQUssR0FBYixLQUF3RyxDQUFoRyxLQUFLO2tDQUFiLEtBQXdHLENBQXpGLFNBQVM7Z0JBQVQsU0FBUyxtQ0FBRyxJQUFJOztBQUN6Qyx1Q0FBTyxDQUFDO0FBbkJILGdCQUFBLENBQUEsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQW9CMUIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBeEJHLGtCQUFrQixDQUVmLFFBQVEsR0FBQSxrQkFBQyxJQUFxQyxFQUFBO2dCQUM1QyxJQUFJLEdBQVcsSUFBSTtnQkFBYixLQUFLLEdBQUksSUFBSTs7QUFFMUIsbUJBQU8sSUFBSSxVQUFVLENBQUM7QUFDcEIsb0JBQUksRUFBSixJQUFJO0FBQ0oscUJBQUssRUFBRSw0Q0FBZ0IsS0FBSyxDQUFDO2FBQzlCLENBQUMsQ0FBQztTQUNKOztBQVRHLGtCQUFrQixDQVdmLEtBQUssR0FBQSxlQUFDLElBQVksRUFBRSxLQUErQixFQUFBO0FBQ3hELG1CQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsQzs7QUFiRyxrQkFBa0IsV0EwQnRCLE9BQU8sR0FBQSxtQkFBQTtBQUNMLGtCQUFNLElBQUksS0FBSyxxQ0FBbUMsSUFBSSxDQUFDLElBQUksdURBQW9ELENBQUM7U0FDakg7O0FBNUJHLGtCQUFrQixXQThCdEIsV0FBVyxHQUFBLHVCQUFBO0FBQ1QsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjs7ZUFoQ0csVUFBa0I7Z0NBbFF0QixRQUFROzs7O1FBcVNKLFlBQUE7aUJBQUEsWUFBQTs7QUFBQSxvQkFBQSxDQUNHLFFBQVEsR0FBQSxrQkFBQyxJQUF1QyxFQUFBO2dCQUM5QyxJQUFJLEdBQXNCLElBQUk7Z0JBQXhCLEtBQUssR0FBZSxJQUFJO2dCQUFqQixTQUFTLEdBQUksSUFBSTs7QUFDckMsbUJBQU8sSUFBSSxXQUFXLENBQUM7QUFDckIsb0JBQUksRUFBSixJQUFJO0FBQ0oseUJBQVMsRUFBVCxTQUFTO0FBQ1QsMEJBQVUsRUFBRSxJQUFJO0FBQ2hCLHFCQUFLLEVBQUUsNENBQWdCLEtBQUssQ0FBQzthQUM5QixDQUFDLENBQUM7U0FDSjs7QUFURyxvQkFBQSxDQVdHLEtBQUssR0FBQSxlQUFDLElBQVksRUFBRSxLQUErQixFQUFFLFVBQW1CLEVBQXdCO2dCQUF0QixTQUFTLHlEQUFTLElBQUk7O0FBQ3JHLG1CQUFPLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsVUFBVSxFQUFWLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDaEU7O0FBYkcsb0JBQUEsV0FlSixPQUFPLEdBQUEsbUJBQUE7QUFBSyxrQkFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO1NBQUU7O2VBZjVHLFlBQUE7Ozs7O1FBa0JBLFVBQWtCOzhCQUFsQixVQUFrQjs7QUFrQnRCLGlCQWxCSSxVQUFrQixDQWtCVixLQUFzRixFQUFBO2dCQUFwRixJQUFJLEdBQU4sS0FBc0YsQ0FBcEYsSUFBSTtnQkFBRSxLQUFLLEdBQWIsS0FBc0YsQ0FBOUUsS0FBSztrQ0FBYixLQUFzRixDQUF2RSxTQUFTO2dCQUFULFNBQVMsbUNBQUcsSUFBSTs7QUFDekMsdUNBQU8sQ0FBQztBQWxCVixnQkFBQSxDQUFBLHNDQUFBLENBQXNDLEdBQUcsSUFBSSxDQUFDO0FBQzlDLGdCQUFBLENBQUEsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQWNyQixnQkFBQSxDQUFBLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFJakIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBdkJHLGtCQUFrQixDQUlmLFFBQVEsR0FBQSxrQkFBQyxJQUFxQyxFQUFBO2dCQUM1QyxJQUFJLEdBQXNCLElBQUk7Z0JBQXhCLEtBQUssR0FBZSxJQUFJO2dCQUFqQixTQUFTLEdBQUksSUFBSTs7QUFDckMsbUJBQU8sSUFBSSxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFlLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDcEU7O0FBUEcsa0JBQWtCLENBU2YsS0FBSyxHQUFBLGVBQUMsSUFBWSxFQUFFLEtBQWEsRUFBd0I7Z0JBQXRCLFNBQVMseURBQVMsSUFBSTs7QUFDOUQsbUJBQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEtBQUssRUFBTCxLQUFLLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDN0M7O0FBWEcsa0JBQWtCLFdBeUJ0QixPQUFPLEdBQUEsaUJBQUMsUUFBcUIsRUFBQTtBQUMzQixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx5Q0E5UWxCLGdCQUFnQixDQThRdUIsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM3Qzs7QUEzQkcsa0JBQWtCLFdBNkJ0QixXQUFXLEdBQUEsdUJBQUE7QUFDVCxtQkFBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQzs7ZUEvQkcsVUFBa0I7Z0NBeFR0QixTQUFTOzs7O1FBMFZMLFdBQW1COzhCQUFuQixXQUFtQjs7QUFzQnZCLGlCQXRCSSxXQUFtQixDQXNCWCxLQUFrSixFQUFBO2dCQUFoSixJQUFJLEdBQU4sS0FBa0osQ0FBaEosSUFBSTtnQkFBRSxLQUFLLEdBQWIsS0FBa0osQ0FBMUksS0FBSzttQ0FBYixLQUFrSixDQUFuSSxVQUFVO2dCQUFWLFVBQVUsb0NBQUcsS0FBSztrQ0FBakMsS0FBa0osQ0FBL0csU0FBUztnQkFBVCxTQUFTLG1DQUFHLElBQUk7O0FBQzdELHdDQUFPLENBQUM7QUF0QlYsZ0JBQUEsQ0FBQSxzQ0FBQSxDQUFzQyxHQUFHLElBQUksQ0FBQztBQUM5QyxnQkFBQSxDQUFBLElBQUksR0FBRyxjQUFjLENBQUM7QUFzQnBCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLGdCQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztTQUM5Qjs7QUE1QkcsbUJBQW1CLENBSWhCLFFBQVEsR0FBQSxrQkFBQyxJQUFzQyxFQUFBO2dCQUM3QyxJQUFJLEdBQXNCLElBQUk7Z0JBQXhCLEtBQUssR0FBZSxJQUFJO2dCQUFqQixTQUFTLEdBQUksSUFBSTs7QUFDckMsbUJBQU8sSUFBSSxXQUFXLENBQUM7QUFDckIsb0JBQUksRUFBSixJQUFJO0FBQ0oseUJBQVMsRUFBVCxTQUFTO0FBQ1QscUJBQUssRUFBRSw0Q0FBZ0IsS0FBSyxDQUFDO2FBQzlCLENBQUMsQ0FBQztTQUNKOztBQVhHLG1CQUFtQixDQWFoQixLQUFLLEdBQUEsZUFBQyxJQUFZLEVBQUUsS0FBK0IsRUFBNEM7Z0JBQTFDLFVBQVUseURBQUcsS0FBSztnQkFBRSxTQUFTLHlEQUFTLElBQUk7O0FBQ3BHLG1CQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsVUFBVSxFQUFWLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDekQ7O0FBZkcsbUJBQW1CLFdBOEJ2QixPQUFPLEdBQUEsaUJBQUMsUUFBb0MsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7Z0JBQ2pGLFNBQVMsR0FBVyxJQUFJLENBQXhCLFNBQVM7Z0JBQUUsS0FBSyxHQUFJLElBQUksQ0FBYixLQUFLOztBQUNyQixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0F4V2xCLGNBQWMsQ0F3V3VCLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvRixnQkFBSSxTQUFTLEVBQUU7QUFDYix3QkFBUSxDQUFDLE1BQU0sQ0FBQyx5Q0F0VHBCLG1CQUFtQixDQXNUeUIsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNoRCxNQUFNO0FBQ0wsd0JBQVEsQ0FBQyxNQUFNLENBQUMseUNBelRwQixpQkFBaUIsQ0F5VHlCLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUM7U0FDRjs7QUF0Q0csbUJBQW1CLFdBd0N2QixXQUFXLEdBQUEsdUJBQUE7QUFDVCxtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztlQTFDRyxXQUFtQjtnQ0ExVnZCLFNBQVM7Ozs7UUF1WUwsWUFBb0I7OEJBQXBCLFlBQW9COztBQUExQixpQkFBTSxZQUFvQixHQUExQjtBQzVKUSwwQ0FBUyxTQUFTLENBQUMsQ0FBQztBRDZKMUIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsZUFBZSxDQUFDO1NBYXhCOztBQWRLLG9CQUFvQixDQUdqQixRQUFRLEdBQUEsb0JBQUE7QUFDYixtQkFBTyxJQUFJLFlBQVksRUFBRSxDQUFDO1NBQzNCOztBQUxHLG9CQUFvQixDQU9qQixLQUFLLEdBQUEsaUJBQUE7QUFDVixtQkFBTyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ25COztBQVRHLG9CQUFvQixXQVd4QixPQUFPLEdBQUEsaUJBQUMsUUFBcUIsRUFBQTtBQUMzQixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx5Q0FqVmxCLGtCQUFrQixFQWlWd0IsQ0FBQyxDQUFDO1NBQzNDOztlQWJHLFlBQW9CO2dDQXBZeEIsU0FBUzs7OztRQW9aTCxZQUFvQjs4QkFBcEIsWUFBb0I7O0FBQTFCLGlCQUFNLFlBQW9CLEdBQTFCO0FDN0pRLDBDQUFTLFNBQVMsQ0FBQyxDQUFDO0FEOEoxQixnQkFBQSxDQUFBLElBQUksR0FBRyxlQUFlLENBQUM7U0FheEI7O0FBZEssb0JBQW9CLENBR2pCLFFBQVEsR0FBQSxvQkFBQTtBQUNiLG1CQUFPLElBQUksWUFBWSxFQUFFLENBQUM7U0FDM0I7O0FBTEcsb0JBQW9CLENBT2pCLEtBQUssR0FBQSxpQkFBQTtBQUNWLG1CQUFPLElBQUksSUFBSSxFQUFFLENBQUM7U0FDbkI7O0FBVEcsb0JBQW9CLFdBV3hCLE9BQU8sR0FBQSxpQkFBQyxRQUFxQixFQUFBO0FBQzNCLG9CQUFRLENBQUMsTUFBTSxDQUFDLHlDQWhXbEIsa0JBQWtCLEVBZ1d3QixDQUFDLENBQUM7U0FDM0M7O2VBYkcsWUFBb0I7Z0NBcFp4QixTQUFTOzs7O1FBb2FMLElBQVk7OEJBQVosSUFBWTs7QUFjaEIsaUJBZEksSUFBWSxDQWNKLE9BQTRCLEVBQUE7QUFDdEMsd0NBQU8sQ0FBQztBQWRWLGdCQUFBLENBQUEsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQWVaLGdCQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEM7O0FBakJHLFlBQVksQ0FHVCxRQUFRLEdBQUEsa0JBQUMsSUFBK0IsRUFBQTtnQkFDdEMsT0FBTyxHQUFJLElBQUk7O0FBQ3RCLG1CQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFQLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUI7O0FBTkcsWUFBWSxDQVFULEtBQUssR0FBQSxlQUFDLE9BQU8sRUFBQTtBQUNsQixtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBUCxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlCOztBQVZHLFlBQVksV0FtQmhCLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFBO0FBQzNCLGVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hCOztlQXJCRyxJQUFZO2dDQXBhaEIsU0FBUzs7OztRQTRiTCxPQUFlOzhCQUFmLE9BQWU7O0FBZW5CLGlCQWZJLE9BQWUsQ0FlUCxPQUFPLEVBQUE7QUFDakIsd0NBQU8sQ0FBQztBQWZWLGdCQUFBLENBQUEsSUFBSSxHQUFHLFNBQVMsQ0FBQztBQWdCZixnQkFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQzlCOztBQWxCRyxlQUFlLENBR1osUUFBUSxHQUFBLGtCQUFDLElBQWtDLEVBQUE7Z0JBQ3pDLEtBQUssR0FBSSxJQUFJOztBQUVwQixtQkFBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBTCxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9COztBQVBHLGVBQWUsQ0FTWixLQUFLLEdBQUEsZUFBQyxLQUFhLEVBQUE7QUFDeEIsbUJBQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuQzs7QUFYRyxlQUFlLFdBb0JuQixPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTtBQUMzQixlQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjs7ZUF0QkcsT0FBZTtnQ0E1Ym5CLFNBQVM7Ozs7UUFxZEwsV0FBbUI7OEJBQW5CLFdBQW1COztBQXFCdkIsaUJBckJJLFdBQW1CLENBcUJYLE9BQXlFLEVBQUE7QUFDbkYsd0NBQU8sQ0FBQztBQXJCVixnQkFBQSxDQUFBLElBQUksR0FBRyxjQUFjLENBQUM7QUFzQnBCLGdCQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDdkIsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUN2QyxnQkFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1NBQ3hDOztBQTFCRyxtQkFBbUIsQ0FHaEIsUUFBUSxHQUFBLGtCQUFDLElBQXNDLEVBQUUsV0FBd0IsRUFBQTtnQkFDdkUsR0FBRyxHQUFpQixJQUFJO2dCQUFuQixXQUFXLEdBQUksSUFBSTs7QUFFL0IsbUJBQU8sSUFBSSxXQUFXLENBQUM7QUFDckIsbUJBQUcsRUFBSCxHQUFHO0FBQ0gsMkJBQVcsRUFBWCxXQUFXO0FBQ1gsMkJBQVcsRUFBWCxXQUFXO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7O0FBWEcsbUJBQW1CLENBYWhCLEtBQUssR0FBQSxlQUFDLEdBQVcsRUFBRSxXQUFxQixFQUFFLFdBQXdCLEVBQUE7QUFDdkUsbUJBQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFFLFdBQVcsRUFBWCxXQUFXLEVBQUUsV0FBVyxFQUFYLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDcEQ7O0FBZkcsbUJBQW1CLFdBNEJ2QixJQUFJLEdBQUEsY0FBQyxPQUFxQixFQUFBO2dCQUNsQixHQUFHLEdBQUssSUFBSSxDQUFaLEdBQUc7O0FBRVQsZ0JBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtrQ0FDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7O29CQUF4QyxJQUFJLGVBQUosSUFBSTtvQkFBRSxLQUFLLGVBQUwsS0FBSzs7QUFDakIsdUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JDLG9CQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFCLG9CQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsRCx1QkFBTyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNsRCxNQUFNO0FBQ0wsdUJBQU8sSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsRUFBSCxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7O0FBeENHLG1CQUFtQixXQTBDdkIsT0FBTyxHQUFBLGlCQUFDLElBQWlCLEVBQUUsR0FBZ0IsRUFBQTtBQUN6QyxnQkFBSSxDQUFDLE1BQU0sQ0FBQyx5Q0FsY2QsMEJBQTBCLENBa2NtQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2RDs7QUE1Q0csbUJBQW1CLFdBOEN2QixVQUFVLEdBQUEsc0JBQUE7Z0JBQ0YsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNULG1CQUFPLElBQUksb0JBQW9CLENBQUMsRUFBRSxHQUFHLEVBQUgsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUMxQzs7QUFqREcsbUJBQW1CLFdBbURmLFVBQVUsR0FBQSxvQkFBQyxPQUFxQixFQUFBO0FBQ3RDLGdCQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0IsZ0JBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztBQUN6QixnQkFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzNCLGdCQUFJLFNBQVMsR0FBK0IsRUFBRSxDQUFDO0FBRS9DLG1CQUFPLEVBQUUsT0FBTyxZQUFZLFlBQVksQ0FBQSxBQUFDLEVBQUU7QUFDekMsb0JBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO0FBQzVCLDBCQUFNLElBQUksS0FBSyxrRUFBa0UsQ0FBQztpQkFDbkY7QUFFRCxvQkFBSSxLQUFLLEdBQTRCLE9BQU8sQ0FBQztBQUU3QyxvQkFBSSxPQUFPLDBCQTVoQmYsU0FBUyxDQTRoQndCLEVBQUU7QUFDN0IseUJBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUd2QiwyQkFBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsNkJBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7aUJBQ3JDLE1BQU0sSUFBSSxPQUFPLDBCQWppQnRCLFFBQVEsQ0FpaUIrQixFQUFFO0FBQ25DLDJCQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6Qiw2QkFBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztpQkFDckMsTUFBTTtBQUNMLDBCQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7aUJBQzlEO0FBRUQsdUJBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDMUI7QUFFRCxtQkFBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFMLEtBQUssRUFBRSxDQUFDO1NBQ2pGOztBQWpGRyxtQkFBbUIsV0FtRmYsV0FBVyxHQUFBLHFCQUFDLE9BQXFCLEVBQUE7QUFDdkMsZ0JBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQixtQkFBTyxJQUFJLEVBQUU7QUFDWCxvQkFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdCLG9CQUFJLE9BQU8sWUFBWSxZQUFZLElBQUksRUFBRSxPQUFPLEtBQUssQ0FBQyxFQUFFO0FBQ3RELDBCQUFNO2lCQUNQO0FBRUQsdUJBQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFOUIsb0JBQUksT0FBTyxZQUFZLFdBQVcsSUFBSSxPQUFPLFlBQVksb0JBQW9CLEVBQUU7QUFDN0UsMkJBQU8sRUFBRSxDQUFDO2lCQUNYO2FBQ0Y7U0FDRjs7ZUFsR0csV0FBbUI7Z0NBcmR2QixTQUFTOzs7O1FBMGpCTCxTQUFpQjs4QkFBakIsU0FBaUI7O0FBR3JCLGlCQUhJLFNBQWlCLENBSVosR0FBVyxFQUNYLEtBQWUsRUFDZixJQUFVLEVBQ1YsUUFBcUIsRUFBQTtBQUU1Qix3Q0FBTyxDQUFDO0FBTEQsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFRO0FBQ1gsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFVO0FBQ2YsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFNO0FBQ1YsZ0JBQUEsQ0FBQSxRQUFRLEdBQVIsUUFBUSxDQUFhO0FBTnZCLGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQVN6Qjs7QUFWRyxpQkFBaUIsV0FZckIsT0FBTyxHQUFBLGlCQUFDLElBQWdDLEVBQUUsR0FBZ0IsRUFBRSxXQUF3QixFQUFBO0FBQ2xGLGdCQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckUsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3JFLGdCQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3hCLGdCQUFJLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFN0MsZ0JBQUksQ0FBQyxNQUFNLENBQUMsK0NBempCZCw0QkFBNEIsQ0F5akJtQixVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzFELGdCQUFJLENBQUMsTUFBTSxDQUFDLCtDQXpqQmQsbUJBQW1CLENBeWpCbUIsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzlELGdCQUFJLENBQUMsTUFBTSxDQUFDLCtDQXpqQmQsb0JBQW9CLEVBeWpCb0IsQ0FBQyxDQUFDO1NBQ3pDOztlQXJCRyxTQUFpQjtnQ0ExakJyQixTQUFTOzs7O1FBa2xCTCxvQkFBNEI7OEJBQTVCLG9CQUE0Qjs7QUFTaEMsaUJBVEksb0JBQTRCLENBU3BCLE9BQXdCLEVBQUE7QUFDbEMseUNBQU8sQ0FBQztBQVRWLGdCQUFBLENBQUEsSUFBSSxHQUFHLHdCQUF3QixDQUFDO0FBVTlCLGdCQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDeEI7O0FBWkcsNEJBQTRCLENBS3pCLEtBQUssR0FBQSxlQUFDLEdBQVcsRUFBQTtBQUN0QixtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBSCxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzFCOztBQVBHLDRCQUE0QixXQWNoQyxPQUFPLEdBQUEsaUJBQUMsUUFBcUIsRUFBQTtBQUMzQixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx5Q0FuaUJsQiwwQkFBMEIsQ0FtaUJ1QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMzRDs7ZUFoQkcsb0JBQTRCO2dDQWxsQmhDLFNBQVM7Ozs7UUFxbUJMLEtBQWE7OEJBQWIsS0FBYTs7QUFrQmpCLGlCQWxCSSxLQUFhLENBa0JMLEtBQXdDLEVBQUE7Z0JBQXRDLEVBQUUsR0FBSixLQUF3QyxDQUF0QyxFQUFFO2dCQUFFLElBQUksR0FBVixLQUF3QyxDQUFsQyxJQUFJOztBQUNwQix5Q0FBTyxDQUFDO0FBTFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBTWIsZ0JBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2IsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQXRCRyxhQUFhLENBQ1YsUUFBUSxHQUFBLGtCQUFDLElBQWdDLEVBQUE7Z0JBQ3ZDLEVBQUUsR0FBWSxJQUFJO2dCQUFkLE1BQU0sR0FBSSxJQUFJOztBQUV6QixnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFdkMsbUJBQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUYsRUFBRSxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDOztBQVBHLGFBQWEsQ0FTVixLQUFLLEdBQUEsZUFBQyxNQUFrQyxFQUFFLEVBQVUsRUFBQTtBQUN6RCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNqRSxtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRixFQUFFLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0I7O0FBWkcsYUFBYSxXQXdCakIsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBRSxXQUF3QixFQUFBO0FBQ3ZFLGdCQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQyxnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNwRCxlQUFHLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFGLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELGVBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7U0FDcEM7O2VBN0JHLEtBQWE7Z0NBcm1CakIsU0FBUzs7OztRQXFvQlgsZUFBc0I7OEJBQXRCLGVBQXNCOztBQU1wQixpQkFORixlQUFzQixDQU1SLEtBQXNFLEVBQUE7Z0JBQXBFLEVBQUUsR0FBSixLQUFzRSxDQUFwRSxFQUFFO2dCQUFFLEtBQUssR0FBWCxLQUFzRSxDQUFoRSxLQUFLO2dCQUFFLElBQUksR0FBakIsS0FBc0UsQ0FBekQsSUFBSTs7QUFDM0IsOEJBQU8sQ0FBQztBQU5WLGdCQUFBLENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQU9sQixnQkFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDYixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCOztBQVhILHVCQUFzQixXQWFwQixRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLGdCQUFJLElBQUksWUFBQSxDQUFDO0FBRVQsZ0JBQUksS0FBSyxFQUFFO0FBQ1Qsb0JBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMvQjs7QUFHRCxjQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7QUFFckIsZ0JBQUksS0FBSyxFQUFFO0FBQ1Qsa0JBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7O2VBM0JILGVBQXNCO2lDQTVuQnBCLE1BQU07O1FBMHBCRixnQkFBd0I7OEJBQXhCLGdCQUF3Qjs7QUFBOUIsaUJBQU0sZ0JBQXdCLEdBQTlCO0FDL05RLGlDQUFTLFNBQVMsQ0FBQyxDQUFDO0FEZ09uQixnQkFBQSxDQUFBLElBQUksR0FBRyxhQUFhLENBQUM7U0FLN0I7O0FBTkssd0JBQXdCLFdBRzVCLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixjQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDZjs7ZUFMRyxnQkFBd0I7aUNBMXBCNUIsTUFBTTs7OztRQWtxQkYsS0FBb0Q7OEJBQXBELEtBQW9EOztBQWF4RCxpQkFiSSxLQUFvRCxDQWE1QyxLQUFRLEVBQUE7QUFDbEIsd0NBQU8sQ0FBQztBQWJWLGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQWNiLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFoQkcsYUFBb0QsQ0FHakQsUUFBUSxHQUFBLGtCQUF3QyxLQUFRLEVBQUE7QUFDN0QsbUJBQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O0FBTEcsYUFBb0QsQ0FPakQsS0FBSyxHQUFBLGVBQXdDLEtBQVEsRUFBQTtBQUMxRCxtQkFBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4Qjs7QUFURyxhQUFvRCxXQWtCeEQsS0FBSyxHQUFBLGlCQUFBO0FBQ0gsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjs7QUFwQkcsYUFBb0QsV0FzQnhELE9BQU8sR0FBQSxpQkFBQyxRQUFzQixFQUFBO0FBQzVCLG1CQUFPLHVEQUFxQixJQUFJLENBQUMsQ0FBQztTQUNuQzs7ZUF4QkcsS0FBb0Q7Z0NBNXFCeEQsVUFBVTs7OztRQXVzQk4sV0FBc0I7OEJBQXRCLFdBQXNCOztBQWUxQixpQkFmSSxXQUFzQixDQWVkLE9BQTRCLEVBQUE7QUFDdEMseUNBQU8sQ0FBQztBQWZWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGNBQWMsQ0FBQztBQWdCcEIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUM1Qjs7Ozs7QUFsQkcsbUJBQXNCLENBR25CLFFBQVEsR0FBQSxrQkFBQyxJQUErQixFQUFBO2dCQUN0QyxLQUFLLEdBQUksSUFBSTs7QUFFcEIsbUJBQU8sSUFBSSxXQUFXLENBQVMsRUFBRSxLQUFLLEVBQUwsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMzQzs7QUFQRyxtQkFBc0IsQ0FTbkIsS0FBSyxHQUFBLGVBQUMsSUFBWSxFQUFBO0FBQ3ZCLG1CQUFPLElBQUksSUFBSSxDQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEOztBQVhHLG1CQUFzQixXQW9CMUIsT0FBTyxHQUFBLGlCQUFDLE1BQW9CLEVBQUE7Z0JBQ3BCLEtBQUssR0FBSyxJQUFJLENBQWQsS0FBSzs7QUFDWCxnQkFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLGdCQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXpDLGdCQUFJLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLG1CQUFPLGlEQXpyQlQsbUJBQW1CLENBeXJCYyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BEOztlQTNCRyxXQUFzQjtnQ0F2c0IxQixVQUFVOzs7O1FBdXVCTixHQUFXOzhCQUFYLEdBQVc7O0FBYWYsaUJBYkksR0FBVyxDQWFJLEtBQWUsRUFBQTtBQUNoQyx5Q0FBTyxDQUFDO0FBRFMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFVO0FBWmxDLGdCQUFBLENBQUEsSUFBSSxHQUFHLEtBQUssQ0FBQztBQWNYLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFoQkcsV0FBVyxDQUdSLEtBQUssR0FBQSxlQUFDLElBQVksRUFBQTtBQUN2QixnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU1QixnQkFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUFFO0FBQ3ZCLHFCQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ2pCO0FBRUQsbUJBQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7O0FBWEcsV0FBVyxXQWtCZixPQUFPLEdBQUEsaUJBQUMsTUFBb0IsRUFBQTtnQkFDcEIsS0FBSyxHQUFLLElBQUksQ0FBZCxLQUFLOztBQUNYLGdCQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsZ0JBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFMUIsZ0JBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUNqQix1QkFBTyxpREF0dEJYLGtCQUFrQixDQXN0QmdCLElBQUksQ0FBQyxDQUFDO2FBQ3JDLE1BQU0sSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RDLG9CQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLHVCQUFPLGlEQTF0QlgsbUJBQW1CLENBMHRCZ0IsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNwRCxNQUFNO0FBQ0wsdUJBQU8saURBM3RCWCxrQkFBa0IsQ0EydEJnQixLQUFLLENBQUMsQ0FBQzthQUN0QztTQUNGOztlQS9CRyxHQUFXO2dDQXZ1QmYsVUFBVTs7OztRQXl3Qk4sR0FBVzs4QkFBWCxHQUFXOztBQVlmLGlCQVpJLEdBQVcsQ0FZSSxHQUFRLEVBQUE7QUFDekIseUNBQU8sQ0FBQztBQURTLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBSztBQVgzQixnQkFBQSxDQUFBLElBQUksR0FBRyxLQUFLLENBQUM7U0FhWjs7QUFkRyxXQUFXLENBR1IsUUFBUSxHQUFBLGtCQUFDLElBQStCLEVBQUE7Z0JBQ3RDLEtBQUssR0FBSSxJQUFJOztBQUNwQixtQkFBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2pDOztBQU5HLFdBQVcsQ0FRUixLQUFLLEdBQUEsZUFBQyxJQUFZLEVBQUE7QUFDdkIsbUJBQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xDOztBQVZHLFdBQVcsV0FnQmYsT0FBTyxHQUFBLGlCQUFDLFFBQXNCLEVBQUE7QUFDNUIsbUJBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkM7O2VBbEJHLEdBQVc7Z0NBendCZixVQUFVOzs7O1FBOHhCTixPQUFlOzhCQUFmLE9BQWU7O0FBYW5CLGlCQWJJLE9BQWUsQ0FhQSxHQUFRLEVBQUE7QUFDekIseUNBQU8sQ0FBQztBQURTLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBSztBQVpwQixnQkFBQSxDQUFBLElBQUksR0FBRyxTQUFTLENBQUM7U0FjdkI7O0FBZkcsZUFBZSxDQUdaLFFBQVEsR0FBQSxrQkFBQyxJQUFtQyxFQUFBO2dCQUMxQyxJQUFJLEdBQUksSUFBSTs7QUFFbkIsbUJBQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNoQzs7QUFQRyxlQUFlLENBU1osS0FBSyxHQUFBLGVBQUMsSUFBWSxFQUFBO0FBQ3ZCLG1CQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNsQzs7QUFYRyxlQUFlLFdBaUJuQixPQUFPLEdBQUEsaUJBQUMsUUFBc0IsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7Z0JBQ2xFLEdBQUcsR0FBSyxJQUFJLENBQVosR0FBRzs7QUFFVCxnQkFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUU7QUFDekMsdUJBQU8sd0RBQW1CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLDBDQW54Qm5GLFlBQVksQ0FteEJvRixLQUFLLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNuSCxNQUFNO0FBQ0wsdUJBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkM7U0FDRjs7ZUF6QkcsT0FBZTtnQ0E5eEJuQixVQUFVOzs7O1FBMHpCTixNQUFjOzhCQUFkLE1BQWM7O0FBb0JsQixpQkFwQkksTUFBYyxDQW9CTixPQUFpQyxFQUFBO0FBQzNDLHlDQUFPLENBQUM7QUFwQlYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBZWhCLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQU1mLGdCQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDdkIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUMxQjs7QUF4QkcsY0FBYyxDQUdYLFFBQVEsR0FBQSxrQkFBQyxJQUFrQyxFQUFBO2dCQUN6QyxJQUFJLEdBQWtCLElBQUk7Z0JBQXBCLE1BQU0sR0FBVSxJQUFJO2dCQUFaLElBQUksR0FBSSxJQUFJOztBQUVqQyxtQkFBTyxJQUFJLE1BQU0sQ0FBQztBQUNoQixtQkFBRyxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQztBQUNsQixvQkFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQzthQUNsQyxDQUFDLENBQUM7U0FDSjs7QUFWRyxjQUFjLENBWVgsS0FBSyxHQUFBLGVBQUMsSUFBWSxFQUFFLFVBQTBCLEVBQUUsS0FBZ0IsRUFBQTtBQUNyRSxtQkFBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEY7O0FBZEcsY0FBYyxXQTBCbEIsT0FBTyxHQUFBLGlCQUFDLFFBQXNCLEVBQUUsR0FBZ0IsRUFBRSxXQUF3QixFQUFBO0FBQ3hFLGdCQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUU7b0JBQ3hDLElBQUksR0FBVSxJQUFJLENBQWxCLElBQUk7b0JBQUUsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNmLHVCQUFPLHdEQUFtQixHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDdkksTUFBTTtBQUNMLHNCQUFNLElBQUksS0FBSyxxQkFBbUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBbUIsQ0FBQzthQUMvRTtTQUNGOztlQWpDRyxNQUFjO2dDQTF6QmxCLFVBQVU7Ozs7UUE4MUJOLFFBQWdCOzhCQUFoQixRQUFnQjs7QUFjcEIsaUJBZEksUUFBZ0IsQ0FjUixLQUFvQyxFQUFBO2dCQUFsQyxTQUFTLEdBQVgsS0FBb0MsQ0FBbEMsU0FBUzs7QUFDckIseUNBQU8sQ0FBQztBQWRWLGdCQUFBLENBQUEsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQWVqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBakJHLGdCQUFnQixDQUdiLFFBQVEsR0FBQSxrQkFBQyxJQUFvQyxFQUFBO2dCQUMzQyxTQUFTLEdBQUksSUFBSTs7QUFDeEIsbUJBQU8sSUFBSSxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUNwQzs7QUFORyxnQkFBZ0IsQ0FRYixLQUFLLEdBQUEsZUFBQyxTQUFpQixFQUFBO0FBQzVCLG1CQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDaEM7O0FBVkcsZ0JBQWdCLFdBbUJwQixPQUFPLEdBQUEsaUJBQUMsUUFBc0IsRUFBRSxHQUFnQixFQUFBO0FBQzlDLG1CQUFPLDBEQUFxQjtBQUMxQix5QkFBUyxFQUFFLElBQUksQ0FBQyxTQUFTO0FBQ3pCLDJCQUFXLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3JELENBQUMsQ0FBQztTQUNKOztlQXhCRyxRQUFnQjtnQ0E5MUJwQixVQUFVOzs7O1FBeTNCTixjQUFzQjs4QkFBdEIsY0FBc0I7O0FBYzFCLGlCQWRJLGNBQXNCLENBY2QsS0FBb0MsRUFBQTtnQkFBbEMsU0FBUyxHQUFYLEtBQW9DLENBQWxDLFNBQVM7O0FBQ3JCLHlDQUFPLENBQUM7QUFkVixnQkFBQSxDQUFBLElBQUksR0FBRyxrQkFBa0IsQ0FBQztBQWV4QixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBakJHLHNCQUFzQixDQUduQixRQUFRLEdBQUEsa0JBQUMsSUFBMEMsRUFBQTtnQkFDakQsU0FBUyxHQUFJLElBQUk7O0FBQ3hCLG1CQUFPLElBQUksY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDMUM7O0FBTkcsc0JBQXNCLENBUW5CLEtBQUssR0FBQSxlQUFDLFNBQWlCLEVBQUE7QUFDNUIsbUJBQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUNoQzs7QUFWRyxzQkFBc0IsV0FtQjFCLE9BQU8sR0FBQSxpQkFBQyxRQUFzQixFQUFFLEdBQWdCLEVBQUE7QUFDOUMsbUJBQU8sZ0VBQTJCO0FBQ2hDLHlCQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7QUFDekIsMkJBQVcsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDckQsQ0FBQyxDQUFDO1NBQ0o7O2VBeEJHLGNBQXNCO2dDQXozQjFCLFVBQVU7Ozs7UUFvNUJOLE1BQUE7QUFnQkosaUJBaEJJLE1BQUEsQ0FnQlEsTUFBZ0QsRUFBQTtnQkFBOUMsS0FBSyxHQUFQLE1BQWdELENBQTlDLEtBQUs7O0FBZm5CLGdCQUFBLENBQUEsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQVloQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJZixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7O0FBbEJHLGNBQUEsQ0FHRyxRQUFRLEdBQUEsa0JBQUMsSUFBa0MsRUFBQTtnQkFDekMsTUFBTSxHQUFJLElBQUk7O0FBRXJCLG1CQUFPLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLDZDQUFpQixFQUFFLENBQUMsQ0FBQztTQUMzRDs7QUFQRyxjQUFBLENBU0csS0FBSyxHQUFBLGVBQUMsS0FBSyxFQUFBO0FBQ2hCLG1CQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFMLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUI7O0FBWEcsY0FBQSxXQW9CSixPQUFPLEdBQUEsaUJBQUMsUUFBc0IsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7QUFDeEUsbUJBQU8sd0RBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQzsyQkFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDO2lCQUFBLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEc7O2VBdEJHLE1BQUE7Ozs7O1FBeUJBLElBQUE7QUEyQkosaUJBM0JJLElBQUEsQ0E0QkssVUFBMEIsRUFDMUIsS0FBZ0IsRUFBQTtBQURoQixnQkFBQSxDQUFBLFVBQVUsR0FBVixVQUFVLENBQWdCO0FBQzFCLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBVztBQTVCbEIsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsTUFBTSxDQUFDO1NBOEJwQjs7QUEvQkcsWUFBQSxDQUdHLEtBQUssR0FBQSxpQkFBQTtBQUNWLG1CQUFPLFVBQVUsQ0FBQztTQUNuQjs7QUFMRyxZQUFBLENBT0csUUFBUSxHQUFBLGtCQUFDLFVBQWlDLEVBQUUsS0FBMEIsRUFBQTtBQUMzRSxtQkFBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNqRjs7QUFURyxZQUFBLENBV0csa0JBQWtCLEdBQUEsNEJBQUMsVUFBMEIsRUFBQTtBQUNsRCxtQkFBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQzs7QUFiRyxZQUFBLENBZUcsYUFBYSxHQUFBLHVCQUFDLEtBQWdCLEVBQUE7QUFDbkMsbUJBQU8sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0M7O0FBakJHLFlBQUEsQ0FtQkcsS0FBSyxHQUFBLGVBQUMsVUFBMEIsRUFBRSxLQUFnQixFQUFBO0FBQ3ZELGdCQUFJLFVBQVUsS0FBSyxxQkFBcUIsSUFBSSxLQUFLLEtBQUssZ0JBQWdCLEVBQUU7QUFDdEUsdUJBQU8sVUFBVSxDQUFDO2FBQ25CLE1BQU07QUFDTCx1QkFBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDcEM7U0FDRjs7QUF6QkcsWUFBQSxXQWlDSixPQUFPLEdBQUEsaUJBQUMsUUFBc0IsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7Z0JBQ2xFLFVBQVUsR0FBWSxJQUFJLENBQTFCLFVBQVU7Z0JBQUUsS0FBSyxHQUFLLElBQUksQ0FBZCxLQUFLOztBQUN2QixtQkFBTywwQ0FoN0JULFlBQVksQ0FnN0JVLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDdkg7O2VBcENHLElBQUE7Ozs7O1FBdUNBLGNBQUE7QUFzQkosaUJBdEJJLGNBQUEsQ0FzQmUsTUFBa0MsRUFBQTtBQUFsQyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQTRCO0FBckI5QyxnQkFBQSxDQUFBLElBQUksR0FBRyxZQUFZLENBQUM7QUFzQnpCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDN0I7O0FBeEJHLHNCQUFBLENBR0csS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8scUJBQXFCLENBQUM7U0FDOUI7O0FBTEcsc0JBQUEsQ0FPRyxRQUFRLEdBQUEsa0JBQUMsSUFBMkIsRUFBQTtBQUN6QyxnQkFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLHFCQUFxQixDQUFDO0FBQzdELG1CQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLDZDQUFpQixDQUFDLENBQUM7U0FDdEQ7O0FBVkcsc0JBQUEsQ0FZRyxLQUFLLEdBQUEsZUFBQyxLQUFpQyxFQUFBO0FBQzVDLGdCQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLHVCQUFPLHFCQUFxQixDQUFDO2FBQzlCLE1BQU07QUFDTCx1QkFBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QjtTQUNGOztBQWxCRyxzQkFBQSxXQTBCSixLQUFLLEdBQUEsZUFBQyxLQUFjLEVBQUUsR0FBWSxFQUFBO0FBQ2hDLG1CQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUQ7O0FBNUJHLHNCQUFBLFdBOEJKLEVBQUUsR0FBQSxZQUFDLEtBQWEsRUFBQTtBQUNkLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7O0FBaENHLHNCQUFBLFdBa0NKLE9BQU8sR0FBQSxpQkFBQyxRQUFzQixFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTtBQUN4RSxtQkFBTywwQ0FyOUJULHNCQUFzQixDQXE5QlUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQzt1QkFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDO2FBQUEsQ0FBQyxDQUFDLENBQUM7U0FDbkc7O2VBcENHLGNBQUE7Ozs7O0FBdUNOLFFBQU0scUJBQXFCLEdBQUc7OztBQUM1QiwwQkFBQTtBQUNFLCtEQW44QkssV0FBVyxDQW04QkUsQ0FBQztTQUNwQjs7eUJBRUQsS0FBSyxHQUFBLGVBQUMsS0FBYyxFQUFFLEdBQVksRUFBQTtBQUNoQyxtQkFBTyxJQUFJLENBQUM7U0FDYjs7eUJBRUQsRUFBRSxHQUFBLFlBQUMsS0FBYSxFQUFBO0FBQ2QsbUJBQU8sU0FBUyxDQUFDO1NBQ2xCOzt5QkFFRCxPQUFPLEdBQUEsaUJBQUMsUUFBc0IsRUFBRSxHQUFnQixFQUFBO0FBQzlDLG1CQUFPLDBDQXYrQlQsc0JBQXNCLENBdStCVSxLQUFLLEVBQUUsQ0FBQztTQUN2Qzs7O09BZjhDLGNBQWMsSUFnQjdELENBQUM7O1FBRUcsU0FBQTtBQTJCSixpQkEzQkksU0FBQSxDQTRCSyxJQUFjLEVBQ2QsTUFBa0MsRUFBQTtBQURsQyxnQkFBQSxDQUFBLElBQUksR0FBSixJQUFJLENBQVU7QUFDZCxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQTRCO0FBNUJwQyxnQkFBQSxDQUFBLElBQUksR0FBRyxPQUFPLENBQUM7QUE4QnBCLGdCQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDM0I7O0FBaENHLGlCQUFBLENBR0csS0FBSyxHQUFBLGlCQUFBO0FBQ1YsbUJBQU8sZ0JBQWdCLENBQUM7U0FDekI7O0FBTEcsaUJBQUEsQ0FPRyxRQUFRLEdBQUEsa0JBQUMsSUFBeUIsRUFBQTtBQUN2QyxnQkFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSx1QkFBTyxnQkFBZ0IsQ0FBQzthQUFFO2dCQUVoRSxJQUFJLEdBQVcsSUFBSTtnQkFBYixLQUFLLEdBQUksSUFBSTs7QUFFeEIsZ0JBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFBRSx1QkFBTyxnQkFBZ0IsQ0FBQzthQUFFO0FBRW5ELG1CQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSTt1QkFBSSw0Q0FBZ0IsSUFBSSxDQUFDO2FBQUEsQ0FBQyxDQUFDLENBQUM7U0FDakU7O0FBZkcsaUJBQUEsQ0FpQkcsS0FBSyxHQUFBLGVBQUMsSUFBYyxFQUFFLE1BQWtDLEVBQUE7QUFDN0QsZ0JBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDckIsdUJBQU8sZ0JBQWdCLENBQUM7YUFDekIsTUFBTTtBQUNMLHVCQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMvQjtTQUNGOztBQXZCRyxpQkFBQSxXQWtDSixFQUFFLEdBQUEsWUFBQyxHQUFXLEVBQUE7Z0JBQ04sSUFBSSxHQUFhLElBQUksQ0FBckIsSUFBSTtnQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ2xCLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLG1CQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0Qjs7QUF0Q0csaUJBQUEsV0F3Q0osR0FBRyxHQUFBLGFBQUMsR0FBVyxFQUFBO0FBQ2IsbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEM7O0FBMUNHLGlCQUFBLFdBNENKLE9BQU8sR0FBQSxpQkFBQyxRQUFzQixFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTtnQkFDbEUsSUFBSSxHQUFhLElBQUksQ0FBckIsSUFBSTtnQkFBRSxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07O0FBQ2xCLG1CQUFPLDhDQTFoQ1QsaUJBQWlCLENBMGhDYyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUs7dUJBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQzthQUFBLENBQUMsQ0FBQyxDQUFDO1NBQ3BHOztlQS9DRyxTQUFBOzs7OztBQWtETixRQUFNLGdCQUFnQixHQUFHOzs7QUFDdkIsMkJBQUE7QUFDRSwwREF2Z0NLLFdBQVcsMEJBQVgsV0FBVyxDQXVnQ2UsQ0FBQztTQUNqQzs7MEJBRUQsRUFBRSxHQUFBLFlBQUMsR0FBVyxFQUFBO0FBQ1osbUJBQU8sU0FBUyxDQUFDO1NBQ2xCOzswQkFFRCxHQUFHLEdBQUEsYUFBQyxHQUFXLEVBQUE7QUFDYixtQkFBTyxLQUFLLENBQUM7U0FDZDs7MEJBRUQsT0FBTyxHQUFBLGlCQUFDLFFBQXNCLEVBQUUsR0FBZ0IsRUFBQTtBQUM5QyxtQkFBTywwQ0E1aUNULGlCQUFpQixDQTRpQ1UsS0FBSyxFQUFFLENBQUM7U0FDbEM7OztPQWZ5QyxTQUFTLElBZ0JuRCxDQUFDO0FBRUgsUUFBTSxVQUFVLEdBQVM7OztBQUN2QiwyQkFBQTtBQUNFLDZCQUFNLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDaEQ7OzBCQUVELE9BQU8sR0FBQSxpQkFBQyxRQUFzQixFQUFFLEdBQWdCLEVBQUE7QUFDOUMsbUJBQU8sMENBdmpDVCxZQUFZLENBdWpDVSxLQUFLLEVBQUUsQ0FBQztTQUM3Qjs7O09BUHlDLElBQUksSUFROUMsQ0FBQzs7UUFFRyxTQUFBO0FBY0osaUJBZEksU0FBQSxDQWNRLFFBQXFCLEVBQTZCO2dCQUEzQixPQUFPLHlEQUFnQixJQUFJOztBQWJ2RCxnQkFBQSxDQUFBLElBQUksR0FBRyxXQUFXLENBQUM7QUFjeEIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLGdCQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN4Qjs7QUFqQkcsaUJBQUEsQ0FHRyxRQUFRLEdBQUEsa0JBQUMsUUFBcUIsRUFBNkI7Z0JBQTNCLE9BQU8seURBQWdCLElBQUk7O0FBQ2hFLG1CQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN6Qzs7QUFMRyxpQkFBQSxDQU9HLEtBQUssR0FBQSxpQkFBQTtBQUNWLG1CQUFPLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsQzs7ZUFURyxTQUFBIiwiZmlsZSI6ImNvcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWTSB9IGZyb20gJy4uL3ZtJztcblxuaW1wb3J0IHtcbiAgQmxvY2tTY2FubmVyXG59IGZyb20gJy4uL3NjYW5uZXInO1xuXG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vc3ltYm9sLXRhYmxlJztcblxuaW1wb3J0IHtcbiAgQVRUUklCVVRFIGFzIEFUVFJJQlVURV9TWU5UQVgsXG4gIEFSR1VNRU5UIGFzIEFSR1VNRU5UX1NZTlRBWCxcbiAgQ29tcGlsZUludG8sXG4gIFBhcmFtZXRlciBhcyBQYXJhbWV0ZXJTeW50YXgsXG4gIEF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVTeW50YXgsXG4gIEFyZ3VtZW50IGFzIEFyZ3VtZW50U3ludGF4LFxuICBFeHByZXNzaW9uIGFzIEV4cHJlc3Npb25TeW50YXgsXG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIFN5bWJvbExvb2t1cFxufSBmcm9tICcuLi9zeW50YXgnO1xuXG5pbXBvcnQge1xuICBJbmxpbmVCbG9ja1xufSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuXG5pbXBvcnQge1xuICBPcGNvZGVcbn0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIFB1dFZhbHVlT3Bjb2RlXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuXG5pbXBvcnQge1xuICBQdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlLFxuICBPcGVuQ29tcG9uZW50T3Bjb2RlLFxuICBDbG9zZUNvbXBvbmVudE9wY29kZVxufSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIE1vZGlmaWVyT3Bjb2RlXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvZG9tJztcblxuaW1wb3J0IGJ1aWxkRXhwcmVzc2lvbiBmcm9tICcuL2V4cHJlc3Npb25zJztcblxuaW1wb3J0IHtcbiAgQ29tcGlsZWRBcmdzLFxuICBDb21waWxlZE5hbWVkQXJncyxcbiAgQ29tcGlsZWRQb3NpdGlvbmFsQXJncyxcbn0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5cbmltcG9ydCBDb21waWxlZFZhbHVlIGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL3ZhbHVlJztcblxuaW1wb3J0IHtcbiAgQ29tcGlsZWRMb2NhbExvb2t1cCxcbiAgQ29tcGlsZWRTZWxmTG9va3VwXG59IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2xvb2t1cHMnO1xuXG5pbXBvcnQgQ29tcGlsZWRIYXNCbG9jayBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9oYXMtYmxvY2snO1xuXG5pbXBvcnQgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9oYXMtYmxvY2stcGFyYW1zJztcblxuaW1wb3J0IENvbXBpbGVkSGVscGVyIGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2hlbHBlcic7XG5cbmltcG9ydCBDb21waWxlZENvbmNhdCBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9jb25jYXQnO1xuXG5pbXBvcnQge1xuICBDb21waWxlZEV4cHJlc3Npb25cbn0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcblxuaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5cbmltcG9ydCB7XG4gIE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlLFxuICBGbHVzaEVsZW1lbnRPcGNvZGUsXG4gIENsb3NlRWxlbWVudE9wY29kZSxcbiAgU3RhdGljQXR0ck9wY29kZSxcbiAgRHluYW1pY0F0dHJPcGNvZGUsXG4gIER5bmFtaWNBdHRyTlNPcGNvZGVcbn0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuXG5pbXBvcnQge1xuICBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSxcbiAgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUsXG4gIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSxcbiAgR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlXG59IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvY29udGVudCc7XG5cbmltcG9ydCB7XG4gIFN0YXRlbWVudHMgYXMgU2VyaWFsaXplZFN0YXRlbWVudHMsXG4gIEV4cHJlc3Npb25zIGFzIFNlcmlhbGl6ZWRFeHByZXNzaW9ucyxcbiAgQ29yZSBhcyBTZXJpYWxpemVkQ29yZVxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuZXhwb3J0IGNsYXNzIEJsb2NrIGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLkJsb2NrLCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IEJsb2NrIHtcbiAgICBsZXQgWywgcGF0aCwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWRdID0gc2V4cDtcblxuICAgIGxldCB0ZW1wbGF0ZSA9IHNjYW5uZXIuYmxvY2tGb3Ioc3ltYm9sVGFibGUsIHRlbXBsYXRlSWQpO1xuICAgIGxldCBpbnZlcnNlID0gKHR5cGVvZiBpbnZlcnNlSWQgPT09ICdudW1iZXInKSA/IHNjYW5uZXIuYmxvY2tGb3Ioc3ltYm9sVGFibGUsIGludmVyc2VJZCkgOiBudWxsO1xuXG4gICAgcmV0dXJuIG5ldyBCbG9jayh7XG4gICAgICBwYXRoLFxuICAgICAgYXJnczogQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpLFxuICAgICAgdGVtcGxhdGVzOiBUZW1wbGF0ZXMuZnJvbVNwZWModGVtcGxhdGUsIGludmVyc2UpXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQob3B0aW9ucyk6IEJsb2NrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMob3B0aW9ucyk7XG4gIH1cblxuICBwYXRoOiBzdHJpbmdbXTtcbiAgYXJnczogQXJncztcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZXM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyBwYXRoOiBzdHJpbmdbXSwgYXJnczogQXJncywgdGVtcGxhdGVzOiBUZW1wbGF0ZXMgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wYXRoID0gb3B0aW9ucy5wYXRoO1xuICAgIHRoaXMuYXJncyA9IG9wdGlvbnMuYXJncztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IG9wdGlvbnMudGVtcGxhdGVzO1xuICB9XG5cbiAgc2NhbihzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCB7IGRlZmF1bHQ6IF9kZWZhdWx0LCBpbnZlcnNlIH0gPSB0aGlzLnRlbXBsYXRlcztcblxuICAgIGlmIChfZGVmYXVsdCkgc2Nhbm5lci5hZGRDaGlsZChfZGVmYXVsdCk7XG4gICAgaWYgKGludmVyc2UpICBzY2FubmVyLmFkZENoaWxkKGludmVyc2UpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21waWxlKG9wczogQ29tcGlsZUludG8pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXhFcnJvclwiKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQXBwZW5kT3Bjb2RlIHtcbiAgbmV3KCk6IE9wY29kZTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgQXBwZW5kIGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLkFwcGVuZCk6IEFwcGVuZCB7XG4gICAgbGV0IFssIHZhbHVlLCB0cnVzdGluZ01vcnBoXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRBcHBlbmQoeyB2YWx1ZTogYnVpbGRFeHByZXNzaW9uKHZhbHVlKSwgdHJ1c3RpbmdNb3JwaCB9KTtcbiAgfVxuXG4gIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PGFueT47XG4gIHRydXN0aW5nTW9ycGg6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyB2YWx1ZSwgdHJ1c3RpbmdNb3JwaCB9OiB7IHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PGFueT4sIHRydXN0aW5nTW9ycGg6IGJvb2xlYW4gfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudHJ1c3RpbmdNb3JwaCA9IHRydXN0aW5nTW9ycGg7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZEFwcGVuZCBleHRlbmRzIEFwcGVuZCB7XG4gIHB1YmxpYyB0eXBlID0gXCJvcHRpbWl6ZWQtYXBwZW5kXCI7XG5cbiAgZGVvcHQoKTogVW5vcHRpbWl6ZWRBcHBlbmQge1xuICAgIHJldHVybiBuZXcgVW5vcHRpbWl6ZWRBcHBlbmQodGhpcyk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50byAmIFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRWYWx1ZU9wY29kZSh7IGV4cHJlc3Npb246IHRoaXMudmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkgfSkpO1xuXG4gICAgaWYgKHRoaXMudHJ1c3RpbmdNb3JwaCkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVub3B0aW1pemVkQXBwZW5kIGV4dGVuZHMgQXBwZW5kIHtcbiAgcHVibGljIHR5cGUgPSBcInVub3B0aW1pemVkLWFwcGVuZFwiO1xuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBsZXQgZXhwcmVzc2lvbiA9IHRoaXMudmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSk7XG5cbiAgICBpZiAodGhpcy50cnVzdGluZ01vcnBoKSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZShleHByZXNzaW9uLCBzeW1ib2xUYWJsZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZShleHByZXNzaW9uLCBzeW1ib2xUYWJsZSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTU9ESUZJRVJfU1lOVEFYID0gXCJjMDQyMDM5Ny04ZmYxLTQyNDEtODgyYi00YjdhMTA3Yzk2MzJcIjtcblxuZXhwb3J0IGNsYXNzIE1vZGlmaWVyIGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgXCJjMDQyMDM5Ny04ZmYxLTQyNDEtODgyYi00YjdhMTA3Yzk2MzJcIiA9IHRydWU7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZyA9IFwibW9kaWZpZXJcIjtcbiAgcHVibGljIHBhdGg6IHN0cmluZ1tdO1xuICBwdWJsaWMgYXJnczogQXJncztcblxuICBzdGF0aWMgZnJvbVNwZWMobm9kZSkge1xuICAgIGxldCBbLCBwYXRoLCBwYXJhbXMsIGhhc2hdID0gbm9kZTtcblxuICAgIHJldHVybiBuZXcgTW9kaWZpZXIoe1xuICAgICAgcGF0aCxcbiAgICAgIGFyZ3M6IEFyZ3MuZnJvbVNwZWMocGFyYW1zLCBoYXNoKVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHBhdGgsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IE1vZGlmaWVyKHtcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXM6IG9wdGlvbnMucGFyYW1zLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhdGggPSBvcHRpb25zLnBhdGg7XG4gICAgdGhpcy5hcmdzID0gb3B0aW9ucy5hcmdzO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogQ29tcGlsZUludG8gJiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmdzLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpO1xuXG4gICAgaWYgKGVudi5oYXNNb2RpZmllcih0aGlzLnBhdGgsIHN5bWJvbFRhYmxlKSkge1xuICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBNb2RpZmllck9wY29kZShcbiAgICAgICAgdGhpcy5wYXRoWzBdLFxuICAgICAgICBlbnYubG9va3VwTW9kaWZpZXIodGhpcy5wYXRoLCBzeW1ib2xUYWJsZSksXG4gICAgICAgIGFyZ3NcbiAgICAgICkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6ICR7dGhpcy5wYXRoLmpvaW4oJy4nKX0gaXMgbm90IGEgbW9kaWZpZXJgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0FyZyBleHRlbmRzIEFyZ3VtZW50U3ludGF4PHN0cmluZz4ge1xuICBwdWJsaWMgdHlwZSA9IFwic3RhdGljLWFyZ1wiO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGU6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLlN0YXRpY0FyZyk6IFN0YXRpY0FyZyB7XG4gICAgbGV0IFssIG5hbWUsIHZhbHVlXSA9IG5vZGU7XG4gICAgcmV0dXJuIG5ldyBTdGF0aWNBcmcoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBTdGF0aWNBcmcge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IG5hbWUsIHZhbHVlIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCB2YWx1ZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbXBpbGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tcGlsZXIgU3RhdGljQXJnIFwiJHt0aGlzLm5hbWV9XCIgYXMgaXQgaXMgYSBkZWxlZ2F0ZSBmb3IgVmFsdWVTeW50YXg8c3RyaW5nPi5gKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFZhbHVlLmJ1aWxkKHRoaXMudmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXJnIGV4dGVuZHMgQXJndW1lbnRTeW50YXg8T3BhcXVlPiB7XG4gIHB1YmxpYyB0eXBlID0gJ2R5bmFtaWMtYXJnJztcbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLkR5bmFtaWNBcmcpOiBEeW5hbWljQXJnIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWVdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgRHluYW1pY0FyZyh7XG4gICAgICBuYW1lLFxuICAgICAgdmFsdWU6IGJ1aWxkRXhwcmVzc2lvbih2YWx1ZSlcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4pOiBEeW5hbWljQXJnIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPjtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlID0gbnVsbCB9OiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiwgbmFtZXNwYWNlPzogc3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB9XG5cbiAgY29tcGlsZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIER5bmFtaWNBcmcgZm9yIFwiJHt0aGlzLm5hbWV9XCIgYXMgaXQgaXMgZGVsZWdhdGUgZm9yIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPi5gKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGluZ0F0dHIge1xuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZFN0YXRlbWVudHMuVHJ1c3RpbmdBdHRyKTogRHluYW1pY0F0dHIge1xuICAgIGxldCBbLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljQXR0cih7XG4gICAgICBuYW1lLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgaXNUcnVzdGluZzogdHJ1ZSxcbiAgICAgIHZhbHVlOiBidWlsZEV4cHJlc3Npb24odmFsdWUpXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nOiBib29sZWFuLCBuYW1lc3BhY2U6IHN0cmluZz1udWxsKTogRHluYW1pY0F0dHIge1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0pO1xuICB9XG5cbiAgY29tcGlsZSgpIHsgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNvbXBpbGUgYSBUcnVzdGluZ0F0dHIgd2hpY2ggaXMganVzdCBhIGRlbGVnYXRlIGZvciBEeW5hbWljQXR0ci4nKTsgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhdGljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIHR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKG5vZGU6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLlN0YXRpY0F0dHIpOiBTdGF0aWNBdHRyIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBub2RlO1xuICAgIHJldHVybiBuZXcgU3RhdGljQXR0cih7IG5hbWUsIHZhbHVlOiB2YWx1ZSBhcyBzdHJpbmcsIG5hbWVzcGFjZSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBTdGF0aWNBdHRyIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlIH0pO1xuICB9XG5cbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgaXNUcnVzdGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSA9IG51bGwgfTogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvKSB7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBTdGF0aWNBdHRyT3Bjb2RlKHRoaXMpKTtcbiAgfVxuXG4gIHZhbHVlU3ludGF4KCk6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFZhbHVlLmJ1aWxkKHRoaXMudmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheDxzdHJpbmc+IHtcbiAgXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIiA9IHRydWU7XG4gIHR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5EeW5hbWljQXR0cik6IER5bmFtaWNBdHRyIHtcbiAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBzZXhwO1xuICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoe1xuICAgICAgbmFtZSxcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIHZhbHVlOiBidWlsZEV4cHJlc3Npb24odmFsdWUpXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogRXhwcmVzc2lvblN5bnRheDxzdHJpbmc+LCBpc1RydXN0aW5nID0gZmFsc2UsIG5hbWVzcGFjZTogc3RyaW5nPW51bGwpOiBEeW5hbWljQXR0ciB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9KTtcbiAgfVxuXG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPjtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIGlzVHJ1c3Rpbmc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lLCB2YWx1ZSwgaXNUcnVzdGluZyA9IGZhbHNlLCBuYW1lc3BhY2UgPSBudWxsIH06IHsgbmFtZTogc3RyaW5nLCBpc1RydXN0aW5nPzogYm9vbGVhbiwgdmFsdWU6IEV4cHJlc3Npb25TeW50YXg8c3RyaW5nPiwgbmFtZXNwYWNlPzogc3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuaXNUcnVzdGluZyA9IGlzVHJ1c3Rpbmc7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50byAmIFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgbGV0IHtuYW1lc3BhY2UsIHZhbHVlfSA9IHRoaXM7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRWYWx1ZU9wY29kZSh7IGV4cHJlc3Npb246IHZhbHVlLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIH0pKTtcbiAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IER5bmFtaWNBdHRyTlNPcGNvZGUodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21waWxlci5hcHBlbmQobmV3IER5bmFtaWNBdHRyT3Bjb2RlKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICB2YWx1ZVN5bnRheCgpOiBFeHByZXNzaW9uU3ludGF4PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbHVzaEVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJmbHVzaC1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgIHJldHVybiBuZXcgRmx1c2hFbGVtZW50KCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50bykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRmx1c2hFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZUVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJjbG9zZS1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgIHJldHVybiBuZXcgQ2xvc2VFbGVtZW50KCk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKCk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBDb21waWxlSW50bykge1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgQ2xvc2VFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwidGV4dFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhub2RlOiBTZXJpYWxpemVkU3RhdGVtZW50cy5UZXh0KTogVGV4dCB7XG4gICAgbGV0IFssIGNvbnRlbnRdID0gbm9kZTtcbiAgICByZXR1cm4gbmV3IFRleHQoeyBjb250ZW50IH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGNvbnRlbnQpOiBUZXh0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyBjb250ZW50IH0pO1xuICB9XG5cbiAgcHVibGljIGNvbnRlbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IGNvbnRlbnQ6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQ7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIGRzbC50ZXh0KHRoaXMuY29udGVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJjb21tZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLkNvbW1lbnQpOiBDb21tZW50IHtcbiAgICBsZXQgWywgdmFsdWVdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgQ29tbWVudCh7IHZhbHVlIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHZhbHVlOiBzdHJpbmcpOiBDb21tZW50IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyB2YWx1ZTogdmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgY29tbWVudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29tbWVudCA9IG9wdGlvbnMudmFsdWU7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCkge1xuICAgIGRzbC5jb21tZW50KHRoaXMuY29tbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwib3Blbi1lbGVtZW50XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLk9wZW5FbGVtZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBPcGVuRWxlbWVudCB7XG4gICAgbGV0IFssIHRhZywgYmxvY2tQYXJhbXNdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgT3BlbkVsZW1lbnQoe1xuICAgICAgdGFnLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBzeW1ib2xUYWJsZVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHRhZzogc3RyaW5nLCBibG9ja1BhcmFtczogc3RyaW5nW10sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IE9wZW5FbGVtZW50IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyB0YWcsIGJsb2NrUGFyYW1zLCBzeW1ib2xUYWJsZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyB0YWc6IHN0cmluZztcbiAgcHVibGljIGJsb2NrUGFyYW1zOiBzdHJpbmdbXTtcbiAgcHVibGljIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiB7IHRhZzogc3RyaW5nLCBibG9ja1BhcmFtczogc3RyaW5nW10sIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IG9wdGlvbnMudGFnO1xuICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBvcHRpb25zLmJsb2NrUGFyYW1zO1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBvcHRpb25zLnN5bWJvbFRhYmxlO1xuICB9XG5cbiAgc2NhbihzY2FubmVyOiBCbG9ja1NjYW5uZXIpOiBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGxldCB7IHRhZyB9ID0gdGhpcztcblxuICAgIGlmIChzY2FubmVyLmVudi5oYXNDb21wb25lbnREZWZpbml0aW9uKFt0YWddLCB0aGlzLnN5bWJvbFRhYmxlKSkge1xuICAgICAgbGV0IHsgYXJncywgYXR0cnMgfSA9IHRoaXMucGFyYW1ldGVycyhzY2FubmVyKTtcbiAgICAgIHNjYW5uZXIuc3RhcnRCbG9jayh0aGlzLmJsb2NrUGFyYW1zKTtcbiAgICAgIHRoaXMudGFnQ29udGVudHMoc2Nhbm5lcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBzY2FubmVyLmVuZEJsb2NrKHRoaXMuYmxvY2tQYXJhbXMpO1xuICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQodGFnLCBhdHRycywgYXJncywgdGVtcGxhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IE9wZW5QcmltaXRpdmVFbGVtZW50KHsgdGFnIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBpbGUobGlzdDogQ29tcGlsZUludG8sIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsaXN0LmFwcGVuZChuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGhpcy50YWcpKTtcbiAgfVxuXG4gIHRvSWRlbnRpdHkoKTogT3BlblByaW1pdGl2ZUVsZW1lbnQge1xuICAgIGxldCB7IHRhZyB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IE9wZW5QcmltaXRpdmVFbGVtZW50KHsgdGFnIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJhbWV0ZXJzKHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IHsgYXJnczogQXJncywgYXR0cnM6IHN0cmluZ1tdIH0ge1xuICAgIGxldCBjdXJyZW50ID0gc2Nhbm5lci5uZXh0KCk7XG4gICAgbGV0IGF0dHJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBhcmdLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBhcmdWYWx1ZXM6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPltdID0gW107XG5cbiAgICB3aGlsZSAoIShjdXJyZW50IGluc3RhbmNlb2YgRmx1c2hFbGVtZW50KSkge1xuICAgICAgaWYgKGN1cnJlbnRbTU9ESUZJRVJfU1lOVEFYXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzYCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IDxQYXJhbWV0ZXJTeW50YXg8T3BhcXVlPj5jdXJyZW50O1xuXG4gICAgICBpZiAoY3VycmVudFtBVFRSSUJVVEVfU1lOVEFYXSkge1xuICAgICAgICBhdHRycy5wdXNoKHBhcmFtLm5hbWUpO1xuXG4gICAgICAgIC8vIFJFTU9WRSBNRTogYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYXJnc1xuICAgICAgICBhcmdLZXlzLnB1c2gocGFyYW0ubmFtZSk7XG4gICAgICAgIGFyZ1ZhbHVlcy5wdXNoKHBhcmFtLnZhbHVlU3ludGF4KCkpO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50W0FSR1VNRU5UX1NZTlRBWF0pIHtcbiAgICAgICAgYXJnS2V5cy5wdXNoKHBhcmFtLm5hbWUpO1xuICAgICAgICBhcmdWYWx1ZXMucHVzaChwYXJhbS52YWx1ZVN5bnRheCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIEZsdXNoRWxlbWVudCwgYnV0IGdvdCAke2N1cnJlbnR9XCIpO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50ID0gc2Nhbm5lci5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYXJnczogQXJncy5mcm9tTmFtZWRBcmdzKE5hbWVkQXJncy5idWlsZChhcmdLZXlzLCBhcmdWYWx1ZXMpKSwgYXR0cnMgfTtcbiAgfVxuXG4gIHByaXZhdGUgdGFnQ29udGVudHMoc2Nhbm5lcjogQmxvY2tTY2FubmVyKSB7XG4gICAgbGV0IG5lc3RpbmcgPSAxO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBjdXJyZW50ID0gc2Nhbm5lci5uZXh0KCk7XG4gICAgICBpZiAoY3VycmVudCBpbnN0YW5jZW9mIENsb3NlRWxlbWVudCAmJiAtLW5lc3RpbmcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHNjYW5uZXIuYWRkU3RhdGVtZW50KGN1cnJlbnQpO1xuXG4gICAgICBpZiAoY3VycmVudCBpbnN0YW5jZW9mIE9wZW5FbGVtZW50IHx8IGN1cnJlbnQgaW5zdGFuY2VvZiBPcGVuUHJpbWl0aXZlRWxlbWVudCkge1xuICAgICAgICBuZXN0aW5nKys7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBwdWJsaWMgdHlwZSA9ICdjb21wb25lbnQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWc6IHN0cmluZyxcbiAgICBwdWJsaWMgYXR0cnM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyBhcmdzOiBBcmdzLFxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogSW5saW5lQmxvY2tcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUobGlzdDogQ29tcGlsZUludG8gJiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCBkZWZpbml0aW9uID0gZW52LmdldENvbXBvbmVudERlZmluaXRpb24oW3RoaXMudGFnXSwgc3ltYm9sVGFibGUpO1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmdzLmNvbXBpbGUobGlzdCBhcyBTeW1ib2xMb29rdXAsIGVudiwgc3ltYm9sVGFibGUpO1xuICAgIGxldCBzaGFkb3cgPSB0aGlzLmF0dHJzO1xuICAgIGxldCB0ZW1wbGF0ZXMgPSBuZXcgVGVtcGxhdGVzKHRoaXMudGVtcGxhdGUpO1xuXG4gICAgbGlzdC5hcHBlbmQobmV3IFB1dENvbXBvbmVudERlZmluaXRpb25PcGNvZGUoZGVmaW5pdGlvbikpO1xuICAgIGxpc3QuYXBwZW5kKG5ldyBPcGVuQ29tcG9uZW50T3Bjb2RlKGFyZ3MsIHNoYWRvdywgdGVtcGxhdGVzKSk7XG4gICAgbGlzdC5hcHBlbmQobmV3IENsb3NlQ29tcG9uZW50T3Bjb2RlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuUHJpbWl0aXZlRWxlbWVudCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcIm9wZW4tcHJpbWl0aXZlLWVsZW1lbnRcIjtcblxuICBwdWJsaWMgdGFnOiBzdHJpbmc7XG5cbiAgc3RhdGljIGJ1aWxkKHRhZzogc3RyaW5nKTogT3BlblByaW1pdGl2ZUVsZW1lbnQge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHRhZyB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgdGFnOiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBvcHRpb25zLnRhZztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvKSB7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZSh0aGlzLnRhZykpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBZaWVsZCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50cy5ZaWVsZCk6IFlpZWxkIHtcbiAgICBsZXQgWywgdG8sIHBhcmFtc10gPSBzZXhwO1xuXG4gICAgbGV0IGFyZ3MgPSBBcmdzLmZyb21TcGVjKHBhcmFtcywgbnVsbCk7XG5cbiAgICByZXR1cm4gbmV3IFlpZWxkKHsgdG8sIGFyZ3MgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGFyYW1zOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSwgdG86IHN0cmluZyk6IFlpZWxkIHtcbiAgICBsZXQgYXJncyA9IEFyZ3MuZnJvbVBvc2l0aW9uYWxBcmdzKFBvc2l0aW9uYWxBcmdzLmJ1aWxkKHBhcmFtcykpO1xuICAgIHJldHVybiBuZXcgdGhpcyh7IHRvLCBhcmdzIH0pO1xuICB9XG5cbiAgdHlwZSA9IFwieWllbGRcIjtcbiAgcHVibGljIHRvOiBzdHJpbmc7XG4gIHB1YmxpYyBhcmdzOiBBcmdzO1xuXG4gIGNvbnN0cnVjdG9yKHsgdG8sIGFyZ3MgfTogeyB0bzogc3RyaW5nLCBhcmdzOiBBcmdzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCB0byA9IGRzbC5nZXRCbG9ja1N5bWJvbCh0aGlzLnRvKTtcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJncy5jb21waWxlKGRzbCwgZW52LCBzeW1ib2xUYWJsZSk7XG4gICAgZHNsLmFwcGVuZChuZXcgT3BlbkJsb2NrT3Bjb2RlKHsgdG8sIGxhYmVsOiB0aGlzLnRvLCBhcmdzIH0pKTtcbiAgICBkc2wuYXBwZW5kKG5ldyBDbG9zZUJsb2NrT3Bjb2RlKCkpO1xuICB9XG59XG5cbmNsYXNzIE9wZW5CbG9ja09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHR5cGUgPSBcIm9wZW4tYmxvY2tcIjtcbiAgcHVibGljIHRvOiBudW1iZXI7XG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgYXJnczogQ29tcGlsZWRBcmdzO1xuXG4gIGNvbnN0cnVjdG9yKHsgdG8sIGxhYmVsLCBhcmdzIH06IHsgdG86IG51bWJlciwgbGFiZWw6IHN0cmluZywgYXJnczogQ29tcGlsZWRBcmdzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2sodGhpcy50byk7XG4gICAgbGV0IGFyZ3M7XG5cbiAgICBpZiAoYmxvY2spIHtcbiAgICAgIGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pO1xuICAgIH1cblxuICAgIC8vIEZJWE1FOiBjYW4gd2UgYXZvaWQgZG9pbmcgdGhpcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBibG9jaz9cbiAgICB2bS5wdXNoQ2FsbGVyU2NvcGUoKTtcblxuICAgIGlmIChibG9jaykge1xuICAgICAgdm0uaW52b2tlQmxvY2soYmxvY2ssIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvc2VCbG9ja09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJjbG9zZS1ibG9ja1wiO1xuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIHZtLnBvcFNjb3BlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlPFQgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVmFsdWU+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHR5cGUgPSBcInZhbHVlXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjPFUgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVmFsdWU+KHZhbHVlOiBVKTogVmFsdWU8VT4ge1xuICAgIHJldHVybiBuZXcgVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkPFUgZXh0ZW5kcyBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVmFsdWU+KHZhbHVlOiBVKTogVmFsdWU8VT4ge1xuICAgIHJldHVybiBuZXcgdGhpcyh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGlubmVyKCk6IFQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwKTogQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkVmFsdWU8VD4odGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEFyZ3VtZW50PFQ+IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxUPiB7XG4gIHR5cGUgPSBcImdldC1hcmd1bWVudFwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuQXJnKTogR2V0QXJndW1lbnQ8T3BhcXVlPiB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IEdldEFyZ3VtZW50PE9wYXF1ZT4oeyBwYXJ0cyB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBHZXRBcmd1bWVudDxPcGFxdWU+IHtcbiAgICByZXR1cm4gbmV3IHRoaXM8T3BhcXVlPih7IHBhcnRzOiBwYXRoLnNwbGl0KCcuJykgfSk7XG4gIH1cblxuICBwdWJsaWMgcGFydHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHsgcGFydHM6IHN0cmluZ1tdIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucGFydHMgPSBvcHRpb25zLnBhcnRzO1xuICB9XG5cbiAgY29tcGlsZShsb29rdXA6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxUPiB7XG4gICAgbGV0IHsgcGFydHMgfSA9IHRoaXM7XG4gICAgbGV0IGhlYWQgPSBwYXJ0c1swXTtcbiAgICBsZXQgc3ltYm9sID0gbG9va3VwLmdldE5hbWVkU3ltYm9sKGhlYWQpO1xuXG4gICAgbGV0IHBhdGggPSBwYXJ0cy5zbGljZSgxKTtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkTG9jYWxMb29rdXAoc3ltYm9sLCBwYXRoLCBoZWFkKTtcbiAgfVxufVxuXG4vLyB0aGlzIGlzIHNlcGFyYXRlZCBvdXQgZnJvbSBHZXQgYmVjYXVzZSBVbmtub3duIGFsc28gaGFzIGEgcmVmLCBidXQgaXRcbi8vIG1heSB0dXJuIG91dCB0byBiZSBhIGhlbHBlclxuZXhwb3J0IGNsYXNzIFJlZiBleHRlbmRzIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiB7XG4gIHR5cGUgPSBcInJlZlwiO1xuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBSZWYge1xuICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcblxuICAgIGlmIChwYXJ0c1swXSA9PT0gJ3RoaXMnKSB7XG4gICAgICBwYXJ0c1swXSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyB0aGlzKHBhcnRzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJ0czogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGNvbXBpbGUobG9va3VwOiBTeW1ib2xMb29rdXApOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gICAgbGV0IHsgcGFydHMgfSA9IHRoaXM7XG4gICAgbGV0IGhlYWQgPSBwYXJ0c1swXTtcbiAgICBsZXQgcGF0aCA9IHBhcnRzLnNsaWNlKDEpO1xuXG4gICAgaWYgKGhlYWQgPT09IG51bGwpIHsgLy8ge3t0aGlzLmZvb319XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkU2VsZkxvb2t1cChwYXRoKTtcbiAgICB9IGVsc2UgaWYgKGxvb2t1cC5oYXNMb2NhbFN5bWJvbChoZWFkKSkge1xuICAgICAgbGV0IHN5bWJvbCA9IGxvb2t1cC5nZXRMb2NhbFN5bWJvbChoZWFkKTtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhdGgsIGhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IENvbXBpbGVkU2VsZkxvb2t1cChwYXJ0cyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXQgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJnZXRcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkdldCk6IEdldCB7XG4gICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyB0aGlzKG5ldyBSZWYocGFydHMpKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXRoOiBzdHJpbmcpOiBHZXQge1xuICAgIHJldHVybiBuZXcgdGhpcyhSZWYuYnVpbGQocGF0aCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCk6IENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+IHtcbiAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVua25vd24gZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGFueT4ge1xuICBwdWJsaWMgdHlwZSA9IFwidW5rbm93blwiO1xuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbnMuVW5rbm93bik6IFVua25vd24ge1xuICAgIGxldCBbLCBwYXRoXSA9IHNleHA7XG5cbiAgICByZXR1cm4gbmV3IHRoaXMobmV3IFJlZihwYXRoKSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGF0aDogc3RyaW5nKTogVW5rbm93biB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKFJlZi5idWlsZChwYXRoKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVmOiBSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZEV4cHJlc3Npb248T3BhcXVlPiB7XG4gICAgbGV0IHsgcmVmIH0gPSB0aGlzO1xuXG4gICAgaWYgKGVudi5oYXNIZWxwZXIocmVmLnBhcnRzLCBzeW1ib2xUYWJsZSkpIHtcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIZWxwZXIocmVmLnBhcnRzLCBlbnYubG9va3VwSGVscGVyKHJlZi5wYXJ0cywgc3ltYm9sVGFibGUpLCBDb21waWxlZEFyZ3MuZW1wdHkoKSwgc3ltYm9sVGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWxwZXIgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICB0eXBlID0gXCJoZWxwZXJcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkhlbHBlcik6IEhlbHBlciB7XG4gICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaF0gPSBzZXhwO1xuXG4gICAgcmV0dXJuIG5ldyBIZWxwZXIoe1xuICAgICAgcmVmOiBuZXcgUmVmKHBhdGgpLFxuICAgICAgYXJnczogQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQocGF0aDogc3RyaW5nLCBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJncywgbmFtZWQ6IE5hbWVkQXJncyk6IEhlbHBlciB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgcmVmOiBSZWYuYnVpbGQocGF0aCksIGFyZ3M6IEFyZ3MuYnVpbGQocG9zaXRpb25hbCwgbmFtZWQpIH0pO1xuICB9XG5cbiAgaXNTdGF0aWMgPSBmYWxzZTtcbiAgcmVmOiBSZWY7XG4gIGFyZ3M6IEFyZ3M7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogeyByZWY6IFJlZiwgYXJnczogQXJncyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZiA9IG9wdGlvbnMucmVmO1xuICAgIHRoaXMuYXJncyA9IG9wdGlvbnMuYXJncztcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogQ29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4ge1xuICAgIGlmIChlbnYuaGFzSGVscGVyKHRoaXMucmVmLnBhcnRzLCBzeW1ib2xUYWJsZSkpIHtcbiAgICAgIGxldCB7IGFyZ3MsIHJlZiB9ID0gdGhpcztcbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIZWxwZXIocmVmLnBhcnRzLCBlbnYubG9va3VwSGVscGVyKHJlZi5wYXJ0cywgc3ltYm9sVGFibGUpLCBhcmdzLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpLCBzeW1ib2xUYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogJHt0aGlzLnJlZi5wYXJ0cy5qb2luKCcuJyl9IGlzIG5vdCBhIGhlbHBlcmApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGFzQmxvY2sgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4PGJvb2xlYW4+IHtcbiAgdHlwZSA9IFwiaGFzLWJsb2NrXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRFeHByZXNzaW9ucy5IYXNCbG9jayk6IEhhc0Jsb2NrIHtcbiAgICBsZXQgWywgYmxvY2tOYW1lXSA9IHNleHA7XG4gICAgcmV0dXJuIG5ldyBIYXNCbG9jayh7IGJsb2NrTmFtZSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChibG9ja05hbWU6IHN0cmluZyk6IEhhc0Jsb2NrIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoeyBibG9ja05hbWUgfSk7XG4gIH1cblxuICBibG9ja05hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSB9OiB7IGJsb2NrTmFtZTogc3RyaW5nIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYmxvY2tOYW1lID0gYmxvY2tOYW1lO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRIYXNCbG9jayB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZEhhc0Jsb2NrKHtcbiAgICAgIGJsb2NrTmFtZTogdGhpcy5ibG9ja05hbWUsXG4gICAgICBibG9ja1N5bWJvbDogY29tcGlsZXIuZ2V0QmxvY2tTeW1ib2wodGhpcy5ibG9ja05hbWUpXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhhc0Jsb2NrUGFyYW1zIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheDxib29sZWFuPiB7XG4gIHR5cGUgPSBcImhhcy1ibG9jay1wYXJhbXNcIjtcblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZEV4cHJlc3Npb25zLkhhc0Jsb2NrUGFyYW1zKTogSGFzQmxvY2tQYXJhbXMge1xuICAgIGxldCBbLCBibG9ja05hbWVdID0gc2V4cDtcbiAgICByZXR1cm4gbmV3IEhhc0Jsb2NrUGFyYW1zKHsgYmxvY2tOYW1lIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGJsb2NrTmFtZTogc3RyaW5nKTogSGFzQmxvY2tQYXJhbXMge1xuICAgIHJldHVybiBuZXcgdGhpcyh7IGJsb2NrTmFtZSB9KTtcbiAgfVxuXG4gIGJsb2NrTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHsgYmxvY2tOYW1lIH06IHsgYmxvY2tOYW1lOiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEhhc0Jsb2NrUGFyYW1zIHtcbiAgICByZXR1cm4gbmV3IENvbXBpbGVkSGFzQmxvY2tQYXJhbXMoe1xuICAgICAgYmxvY2tOYW1lOiB0aGlzLmJsb2NrTmFtZSxcbiAgICAgIGJsb2NrU3ltYm9sOiBjb21waWxlci5nZXRCbG9ja1N5bWJvbCh0aGlzLmJsb2NrTmFtZSlcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uY2F0IHtcbiAgdHlwZSA9IFwiY29uY2F0XCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKHNleHA6IFNlcmlhbGl6ZWRFeHByZXNzaW9ucy5Db25jYXQpOiBDb25jYXQge1xuICAgIGxldCBbLCBwYXJhbXNdID0gc2V4cDtcblxuICAgIHJldHVybiBuZXcgQ29uY2F0KHsgcGFydHM6IHBhcmFtcy5tYXAoYnVpbGRFeHByZXNzaW9uKSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwYXJ0cyk6IENvbmNhdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHsgcGFydHMgfSk7XG4gIH1cblxuICBpc1N0YXRpYyA9IGZhbHNlO1xuICBwYXJ0czogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+W107XG5cbiAgY29uc3RydWN0b3IoeyBwYXJ0cyB9OiB7IHBhcnRzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSB9KSB7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZENvbmNhdCB7XG4gICAgcmV0dXJuIG5ldyBDb21waWxlZENvbmNhdCh7IHBhcnRzOiB0aGlzLnBhcnRzLm1hcChwID0+IHAuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcImFyZ3NcIjtcblxuICBzdGF0aWMgZW1wdHkoKTogQXJncyB7XG4gICAgcmV0dXJuIEVNUFRZX0FSR1M7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNwZWMocG9zaXRpb25hbDogU2VyaWFsaXplZENvcmUuUGFyYW1zLCBuYW1lZDogU2VyaWFsaXplZENvcmUuSGFzaCk6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyhQb3NpdGlvbmFsQXJncy5mcm9tU3BlYyhwb3NpdGlvbmFsKSwgTmFtZWRBcmdzLmZyb21TcGVjKG5hbWVkKSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVBvc2l0aW9uYWxBcmdzKHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmdzKTogQXJncyB7XG4gICAgcmV0dXJuIG5ldyBBcmdzKHBvc2l0aW9uYWwsIEVNUFRZX05BTUVEX0FSR1MpO1xuICB9XG5cbiAgc3RhdGljIGZyb21OYW1lZEFyZ3MobmFtZWQ6IE5hbWVkQXJncyk6IEFyZ3Mge1xuICAgIHJldHVybiBuZXcgQXJncyhFTVBUWV9QT1NJVElPTkFMX0FSR1MsIG5hbWVkKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJncywgbmFtZWQ6IE5hbWVkQXJncyk6IEFyZ3Mge1xuICAgIGlmIChwb3NpdGlvbmFsID09PSBFTVBUWV9QT1NJVElPTkFMX0FSR1MgJiYgbmFtZWQgPT09IEVNUFRZX05BTUVEX0FSR1MpIHtcbiAgICAgIHJldHVybiBFTVBUWV9BUkdTO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMocG9zaXRpb25hbCwgbmFtZWQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJncyxcbiAgICBwdWJsaWMgbmFtZWQ6IE5hbWVkQXJnc1xuICApIHtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCwgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKTogQ29tcGlsZWRBcmdzIHtcbiAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gdGhpcztcbiAgICByZXR1cm4gQ29tcGlsZWRBcmdzLmNyZWF0ZShwb3NpdGlvbmFsLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpLCBuYW1lZC5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uYWxBcmdzIHtcbiAgcHVibGljIHR5cGUgPSBcInBvc2l0aW9uYWxcIjtcblxuICBzdGF0aWMgZW1wdHkoKTogUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBFTVBUWV9QT1NJVElPTkFMX0FSR1M7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNwZWMoc2V4cDogU2VyaWFsaXplZENvcmUuUGFyYW1zKTogUG9zaXRpb25hbEFyZ3Mge1xuICAgIGlmICghc2V4cCB8fCBzZXhwLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEVNUFRZX1BPU0lUSU9OQUxfQVJHUztcbiAgICByZXR1cm4gbmV3IFBvc2l0aW9uYWxBcmdzKHNleHAubWFwKGJ1aWxkRXhwcmVzc2lvbikpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGV4cHJzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSk6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICBpZiAoZXhwcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoZXhwcnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT5bXSkge1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgfVxuXG4gIHNsaWNlKHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIpOiBQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIFBvc2l0aW9uYWxBcmdzLmJ1aWxkKHRoaXMudmFsdWVzLnNsaWNlKHN0YXJ0LCBlbmQpKTtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1tpbmRleF07XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSk6IENvbXBpbGVkUG9zaXRpb25hbEFyZ3Mge1xuICAgIHJldHVybiBDb21waWxlZFBvc2l0aW9uYWxBcmdzLmNyZWF0ZSh0aGlzLnZhbHVlcy5tYXAodiA9PiB2LmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpKSk7XG4gIH1cbn1cblxuY29uc3QgRU1QVFlfUE9TSVRJT05BTF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIFBvc2l0aW9uYWxBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRU1QVFlfQVJSQVkpO1xuICB9XG5cbiAgc2xpY2Uoc3RhcnQ/OiBudW1iZXIsIGVuZD86IG51bWJlcik6IFBvc2l0aW9uYWxBcmdzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4ge1xuICAgIHJldHVybiB1bmRlZmluZWQ7IC8vID8/IVxuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50KTogQ29tcGlsZWRQb3NpdGlvbmFsQXJncyB7XG4gICAgcmV0dXJuIENvbXBpbGVkUG9zaXRpb25hbEFyZ3MuZW1wdHkoKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjbGFzcyBOYW1lZEFyZ3Mge1xuICBwdWJsaWMgdHlwZSA9IFwibmFtZWRcIjtcblxuICBzdGF0aWMgZW1wdHkoKTogTmFtZWRBcmdzIHtcbiAgICByZXR1cm4gRU1QVFlfTkFNRURfQVJHUztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3BlYyhzZXhwOiBTZXJpYWxpemVkQ29yZS5IYXNoKTogTmFtZWRBcmdzIHtcbiAgICBpZiAoc2V4cCA9PT0gbnVsbCB8fCBzZXhwID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIEVNUFRZX05BTUVEX0FSR1M7IH1cblxuICAgIGxldCBba2V5cywgZXhwcnNdID0gc2V4cDtcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gRU1QVFlfTkFNRURfQVJHUzsgfVxuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGtleXMsIGV4cHJzLm1hcChleHByID0+IGJ1aWxkRXhwcmVzc2lvbihleHByKSkpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGtleXM6IHN0cmluZ1tdLCB2YWx1ZXM6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPltdKTogTmFtZWRBcmdzIHtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBFTVBUWV9OQU1FRF9BUkdTO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoa2V5cywgdmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtleXM6IHN0cmluZ1tdLFxuICAgIHB1YmxpYyB2YWx1ZXM6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPltdXG4gICkge1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIH1cblxuICBhdChrZXk6IHN0cmluZyk6IEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPiB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgIGxldCBpbmRleCA9IGtleXMuaW5kZXhPZihrZXkpO1xuICAgIHJldHVybiB2YWx1ZXNbaW5kZXhdO1xuICB9XG5cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMua2V5cy5pbmRleE9mKGtleSkgIT09IC0xO1xuICB9XG5cbiAgY29tcGlsZShjb21waWxlcjogU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpOiBDb21waWxlZE5hbWVkQXJncyB7XG4gICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWROYW1lZEFyZ3Moa2V5cywgdmFsdWVzLm1hcCh2YWx1ZSA9PiB2YWx1ZS5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSkpO1xuICB9XG59XG5cbmNvbnN0IEVNUFRZX05BTUVEX0FSR1MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgTmFtZWRBcmdzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoRU1QVFlfQVJSQVksIEVNUFRZX0FSUkFZKTtcbiAgfVxuXG4gIGF0KGtleTogc3RyaW5nKTogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyA/PyFcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IFN5bWJvbExvb2t1cCwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkTmFtZWRBcmdzIHtcbiAgICByZXR1cm4gQ29tcGlsZWROYW1lZEFyZ3MuZW1wdHkoKTtcbiAgfVxufSk7XG5cbmNvbnN0IEVNUFRZX0FSR1M6IEFyZ3MgPSBuZXcgKGNsYXNzIGV4dGVuZHMgQXJncyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEVNUFRZX1BPU0lUSU9OQUxfQVJHUywgRU1QVFlfTkFNRURfQVJHUyk7XG4gIH1cblxuICBjb21waWxlKGNvbXBpbGVyOiBTeW1ib2xMb29rdXAsIGVudjogRW52aXJvbm1lbnQpOiBDb21waWxlZEFyZ3Mge1xuICAgIHJldHVybiBDb21waWxlZEFyZ3MuZW1wdHkoKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZXMge1xuICBwdWJsaWMgdHlwZSA9IFwidGVtcGxhdGVzXCI7XG5cbiAgc3RhdGljIGZyb21TcGVjKF9kZWZhdWx0OiBJbmxpbmVCbG9jaywgaW52ZXJzZTogSW5saW5lQmxvY2sgPSBudWxsKTogVGVtcGxhdGVzIHtcbiAgICByZXR1cm4gbmV3IFRlbXBsYXRlcyhfZGVmYXVsdCwgaW52ZXJzZSk7XG4gIH1cblxuICBzdGF0aWMgZW1wdHkoKTogVGVtcGxhdGVzIHtcbiAgICByZXR1cm4gbmV3IFRlbXBsYXRlcyhudWxsLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0OiBJbmxpbmVCbG9jaztcbiAgcHVibGljIGludmVyc2U6IElubGluZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKF9kZWZhdWx0OiBJbmxpbmVCbG9jaywgaW52ZXJzZTogSW5saW5lQmxvY2sgPSBudWxsKSB7XG4gICAgdGhpcy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG4gICAgdGhpcy5pbnZlcnNlID0gaW52ZXJzZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQVRUUklCVVRFIGFzIEFUVFJJQlVURV9TWU5UQVgsIEFSR1VNRU5UIGFzIEFSR1VNRU5UX1NZTlRBWCwgQXR0cmlidXRlIGFzIEF0dHJpYnV0ZVN5bnRheCwgQXJndW1lbnQgYXMgQXJndW1lbnRTeW50YXgsIEV4cHJlc3Npb24gYXMgRXhwcmVzc2lvblN5bnRheCwgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCB9IGZyb20gJy4uL3N5bnRheCc7XG5pbXBvcnQgeyBPcGNvZGUgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFB1dFZhbHVlT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBQdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlLCBPcGVuQ29tcG9uZW50T3Bjb2RlLCBDbG9zZUNvbXBvbmVudE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGlmaWVyT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9kb20nO1xuaW1wb3J0IGJ1aWxkRXhwcmVzc2lvbiBmcm9tICcuL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IENvbXBpbGVkQXJncywgQ29tcGlsZWROYW1lZEFyZ3MsIENvbXBpbGVkUG9zaXRpb25hbEFyZ3MsIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgQ29tcGlsZWRWYWx1ZSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy92YWx1ZSc7XG5pbXBvcnQgeyBDb21waWxlZExvY2FsTG9va3VwLCBDb21waWxlZFNlbGZMb29rdXAgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9sb29rdXBzJztcbmltcG9ydCBDb21waWxlZEhhc0Jsb2NrIGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2hhcy1ibG9jayc7XG5pbXBvcnQgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9oYXMtYmxvY2stcGFyYW1zJztcbmltcG9ydCBDb21waWxlZEhlbHBlciBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9oZWxwZXInO1xuaW1wb3J0IENvbXBpbGVkQ29uY2F0IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2NvbmNhdCc7XG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE9wZW5QcmltaXRpdmVFbGVtZW50T3Bjb2RlLCBGbHVzaEVsZW1lbnRPcGNvZGUsIENsb3NlRWxlbWVudE9wY29kZSwgU3RhdGljQXR0ck9wY29kZSwgRHluYW1pY0F0dHJPcGNvZGUsIER5bmFtaWNBdHRyTlNPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL2RvbSc7XG5pbXBvcnQgeyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSwgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUsIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSwgR3VhcmRlZFRydXN0aW5nQXBwZW5kT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50JztcbmV4cG9ydCBjbGFzcyBCbG9jayBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImJsb2NrXCI7XG4gICAgICAgIHRoaXMucGF0aCA9IG9wdGlvbnMucGF0aDtcbiAgICAgICAgdGhpcy5hcmdzID0gb3B0aW9ucy5hcmdzO1xuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IG9wdGlvbnMudGVtcGxhdGVzO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoc2V4cCwgc3ltYm9sVGFibGUsIHNjYW5uZXIpIHtcbiAgICAgICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaCwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkXSA9IHNleHA7XG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9IHNjYW5uZXIuYmxvY2tGb3Ioc3ltYm9sVGFibGUsIHRlbXBsYXRlSWQpO1xuICAgICAgICBsZXQgaW52ZXJzZSA9ICh0eXBlb2YgaW52ZXJzZUlkID09PSAnbnVtYmVyJykgPyBzY2FubmVyLmJsb2NrRm9yKHN5bWJvbFRhYmxlLCBpbnZlcnNlSWQpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBCbG9jayh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgYXJnczogQXJncy5mcm9tU3BlYyhwYXJhbXMsIGhhc2gpLFxuICAgICAgICAgICAgdGVtcGxhdGVzOiBUZW1wbGF0ZXMuZnJvbVNwZWModGVtcGxhdGUsIGludmVyc2UpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMob3B0aW9ucyk7XG4gICAgfVxuICAgIHNjYW4oc2Nhbm5lcikge1xuICAgICAgICBsZXQgeyBkZWZhdWx0OiBfZGVmYXVsdCwgaW52ZXJzZSB9ID0gdGhpcy50ZW1wbGF0ZXM7XG4gICAgICAgIGlmIChfZGVmYXVsdClcbiAgICAgICAgICAgIHNjYW5uZXIuYWRkQ2hpbGQoX2RlZmF1bHQpO1xuICAgICAgICBpZiAoaW52ZXJzZSlcbiAgICAgICAgICAgIHNjYW5uZXIuYWRkQ2hpbGQoaW52ZXJzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBjb21waWxlKG9wcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXhFcnJvclwiKTtcbiAgICB9XG59XG5jbGFzcyBBcHBlbmQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIHN0YXRpYyBmcm9tU3BlYyhzZXhwKSB7XG4gICAgICAgIGxldCBbLCB2YWx1ZSwgdHJ1c3RpbmdNb3JwaF0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZEFwcGVuZCh7IHZhbHVlOiBidWlsZEV4cHJlc3Npb24odmFsdWUpLCB0cnVzdGluZ01vcnBoIH0pO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcih7IHZhbHVlLCB0cnVzdGluZ01vcnBoIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRydXN0aW5nTW9ycGggPSB0cnVzdGluZ01vcnBoO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRBcHBlbmQgZXh0ZW5kcyBBcHBlbmQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIm9wdGltaXplZC1hcHBlbmRcIjtcbiAgICB9XG4gICAgZGVvcHQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVW5vcHRpbWl6ZWRBcHBlbmQodGhpcyk7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRWYWx1ZU9wY29kZSh7IGV4cHJlc3Npb246IHRoaXMudmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkgfSkpO1xuICAgICAgICBpZiAodGhpcy50cnVzdGluZ01vcnBoKSB7XG4gICAgICAgICAgICBjb21waWxlci5hcHBlbmQobmV3IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVbm9wdGltaXplZEFwcGVuZCBleHRlbmRzIEFwcGVuZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwidW5vcHRpbWl6ZWQtYXBwZW5kXCI7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSB0aGlzLnZhbHVlLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpO1xuICAgICAgICBpZiAodGhpcy50cnVzdGluZ01vcnBoKSB7XG4gICAgICAgICAgICBjb21waWxlci5hcHBlbmQobmV3IEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZShleHByZXNzaW9uLCBzeW1ib2xUYWJsZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoZXhwcmVzc2lvbiwgc3ltYm9sVGFibGUpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBNT0RJRklFUl9TWU5UQVggPSBcImMwNDIwMzk3LThmZjEtNDI0MS04ODJiLTRiN2ExMDdjOTYzMlwiO1xuZXhwb3J0IGNsYXNzIE1vZGlmaWVyIGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXNbXCJjMDQyMDM5Ny04ZmYxLTQyNDEtODgyYi00YjdhMTA3Yzk2MzJcIl0gPSB0cnVlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIm1vZGlmaWVyXCI7XG4gICAgICAgIHRoaXMucGF0aCA9IG9wdGlvbnMucGF0aDtcbiAgICAgICAgdGhpcy5hcmdzID0gb3B0aW9ucy5hcmdzO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMobm9kZSkge1xuICAgICAgICBsZXQgWywgcGF0aCwgcGFyYW1zLCBoYXNoXSA9IG5vZGU7XG4gICAgICAgIHJldHVybiBuZXcgTW9kaWZpZXIoe1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGFyZ3M6IEFyZ3MuZnJvbVNwZWMocGFyYW1zLCBoYXNoKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHBhdGgsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2RpZmllcih7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGFyYW1zOiBvcHRpb25zLnBhcmFtcyxcbiAgICAgICAgICAgIGhhc2g6IG9wdGlvbnMuaGFzaFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkge1xuICAgICAgICBsZXQgYXJncyA9IHRoaXMuYXJncy5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKTtcbiAgICAgICAgaWYgKGVudi5oYXNNb2RpZmllcih0aGlzLnBhdGgsIHN5bWJvbFRhYmxlKSkge1xuICAgICAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBNb2RpZmllck9wY29kZSh0aGlzLnBhdGhbMF0sIGVudi5sb29rdXBNb2RpZmllcih0aGlzLnBhdGgsIHN5bWJvbFRhYmxlKSwgYXJncykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAke3RoaXMucGF0aC5qb2luKCcuJyl9IGlzIG5vdCBhIG1vZGlmaWVyYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgU3RhdGljQXJnIGV4dGVuZHMgQXJndW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInN0YXRpYy1hcmdcIjtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMobm9kZSkge1xuICAgICAgICBsZXQgWywgbmFtZSwgdmFsdWVdID0gbm9kZTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGF0aWNBcmcoeyBuYW1lLCB2YWx1ZSB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IG5hbWUsIHZhbHVlIH0pO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlciBTdGF0aWNBcmcgXCIke3RoaXMubmFtZX1cIiBhcyBpdCBpcyBhIGRlbGVnYXRlIGZvciBWYWx1ZVN5bnRheDxzdHJpbmc+LmApO1xuICAgIH1cbiAgICB2YWx1ZVN5bnRheCgpIHtcbiAgICAgICAgcmV0dXJuIFZhbHVlLmJ1aWxkKHRoaXMudmFsdWUpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEeW5hbWljQXJnIGV4dGVuZHMgQXJndW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSA9IG51bGwgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZHluYW1pYy1hcmcnO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoc2V4cCkge1xuICAgICAgICBsZXQgWywgbmFtZSwgdmFsdWVdID0gc2V4cDtcbiAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljQXJnKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogYnVpbGRFeHByZXNzaW9uKHZhbHVlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IG5hbWUsIHZhbHVlIH0pO1xuICAgIH1cbiAgICBjb21waWxlKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIER5bmFtaWNBcmcgZm9yIFwiJHt0aGlzLm5hbWV9XCIgYXMgaXQgaXMgZGVsZWdhdGUgZm9yIEV4cHJlc3Npb25TeW50YXg8T3BhcXVlPi5gKTtcbiAgICB9XG4gICAgdmFsdWVTeW50YXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUcnVzdGluZ0F0dHIge1xuICAgIHN0YXRpYyBmcm9tU3BlYyhzZXhwKSB7XG4gICAgICAgIGxldCBbLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSA9IHNleHA7XG4gICAgICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIGlzVHJ1c3Rpbmc6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogYnVpbGRFeHByZXNzaW9uKHZhbHVlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKG5hbWUsIHZhbHVlLCBpc1RydXN0aW5nLCBuYW1lc3BhY2UgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHluYW1pY0F0dHIoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nIH0pO1xuICAgIH1cbiAgICBjb21waWxlKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gY29tcGlsZSBhIFRydXN0aW5nQXR0ciB3aGljaCBpcyBqdXN0IGEgZGVsZWdhdGUgZm9yIER5bmFtaWNBdHRyLicpOyB9XG59XG5leHBvcnQgY2xhc3MgU3RhdGljQXR0ciBleHRlbmRzIEF0dHJpYnV0ZVN5bnRheCB7XG4gICAgY29uc3RydWN0b3IoeyBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlID0gbnVsbCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXNbXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIl0gPSB0cnVlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInN0YXRpYy1hdHRyXCI7XG4gICAgICAgIHRoaXMuaXNUcnVzdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMobm9kZSkge1xuICAgICAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBub2RlO1xuICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0F0dHIoeyBuYW1lLCB2YWx1ZTogdmFsdWUsIG5hbWVzcGFjZSB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UgfSk7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIpIHtcbiAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBTdGF0aWNBdHRyT3Bjb2RlKHRoaXMpKTtcbiAgICB9XG4gICAgdmFsdWVTeW50YXgoKSB7XG4gICAgICAgIHJldHVybiBWYWx1ZS5idWlsZCh0aGlzLnZhbHVlKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRHluYW1pY0F0dHIgZXh0ZW5kcyBBdHRyaWJ1dGVTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHsgbmFtZSwgdmFsdWUsIGlzVHJ1c3RpbmcgPSBmYWxzZSwgbmFtZXNwYWNlID0gbnVsbCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXNbXCJlMTE4NWQzMC03Y2FjLTRiMTItYjI2YS0zNTMyN2Q5MDVkOTJcIl0gPSB0cnVlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImR5bmFtaWMtYXR0clwiO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgICB0aGlzLmlzVHJ1c3RpbmcgPSBpc1RydXN0aW5nO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoc2V4cCkge1xuICAgICAgICBsZXQgWywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNBdHRyKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICB2YWx1ZTogYnVpbGRFeHByZXNzaW9uKHZhbHVlKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKG5hbWUsIHZhbHVlLCBpc1RydXN0aW5nID0gZmFsc2UsIG5hbWVzcGFjZSA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZyB9KTtcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkge1xuICAgICAgICBsZXQgeyBuYW1lc3BhY2UsIHZhbHVlIH0gPSB0aGlzO1xuICAgICAgICBjb21waWxlci5hcHBlbmQobmV3IFB1dFZhbHVlT3Bjb2RlKHsgZXhwcmVzc2lvbjogdmFsdWUuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkgfSkpO1xuICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgICBjb21waWxlci5hcHBlbmQobmV3IER5bmFtaWNBdHRyTlNPcGNvZGUodGhpcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29tcGlsZXIuYXBwZW5kKG5ldyBEeW5hbWljQXR0ck9wY29kZSh0aGlzKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWVTeW50YXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBGbHVzaEVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImZsdXNoLWVsZW1lbnRcIjtcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgICAgICByZXR1cm4gbmV3IEZsdXNoRWxlbWVudCgpO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcygpO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyKSB7XG4gICAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRmx1c2hFbGVtZW50T3Bjb2RlKCkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDbG9zZUVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImNsb3NlLWVsZW1lbnRcIjtcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKCkge1xuICAgICAgICByZXR1cm4gbmV3IENsb3NlRWxlbWVudCgpO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcygpO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyKSB7XG4gICAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgQ2xvc2VFbGVtZW50T3Bjb2RlKCkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUZXh0IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwidGV4dFwiO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQ7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyhub2RlKSB7XG4gICAgICAgIGxldCBbLCBjb250ZW50XSA9IG5vZGU7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dCh7IGNvbnRlbnQgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IGNvbnRlbnQgfSk7XG4gICAgfVxuICAgIGNvbXBpbGUoZHNsKSB7XG4gICAgICAgIGRzbC50ZXh0KHRoaXMuY29udGVudCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJjb21tZW50XCI7XG4gICAgICAgIHRoaXMuY29tbWVudCA9IG9wdGlvbnMudmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyhzZXhwKSB7XG4gICAgICAgIGxldCBbLCB2YWx1ZV0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoeyB2YWx1ZSB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IHZhbHVlOiB2YWx1ZSB9KTtcbiAgICB9XG4gICAgY29tcGlsZShkc2wpIHtcbiAgICAgICAgZHNsLmNvbW1lbnQodGhpcy5jb21tZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3BlbkVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJvcGVuLWVsZW1lbnRcIjtcbiAgICAgICAgdGhpcy50YWcgPSBvcHRpb25zLnRhZztcbiAgICAgICAgdGhpcy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJhbXM7XG4gICAgICAgIHRoaXMuc3ltYm9sVGFibGUgPSBvcHRpb25zLnN5bWJvbFRhYmxlO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoc2V4cCwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgbGV0IFssIHRhZywgYmxvY2tQYXJhbXNdID0gc2V4cDtcbiAgICAgICAgcmV0dXJuIG5ldyBPcGVuRWxlbWVudCh7XG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICAgIHN5bWJvbFRhYmxlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQodGFnLCBibG9ja1BhcmFtcywgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgdGFnLCBibG9ja1BhcmFtcywgc3ltYm9sVGFibGUgfSk7XG4gICAgfVxuICAgIHNjYW4oc2Nhbm5lcikge1xuICAgICAgICBsZXQgeyB0YWcgfSA9IHRoaXM7XG4gICAgICAgIGlmIChzY2FubmVyLmVudi5oYXNDb21wb25lbnREZWZpbml0aW9uKFt0YWddLCB0aGlzLnN5bWJvbFRhYmxlKSkge1xuICAgICAgICAgICAgbGV0IHsgYXJncywgYXR0cnMgfSA9IHRoaXMucGFyYW1ldGVycyhzY2FubmVyKTtcbiAgICAgICAgICAgIHNjYW5uZXIuc3RhcnRCbG9jayh0aGlzLmJsb2NrUGFyYW1zKTtcbiAgICAgICAgICAgIHRoaXMudGFnQ29udGVudHMoc2Nhbm5lcik7XG4gICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSBzY2FubmVyLmVuZEJsb2NrKHRoaXMuYmxvY2tQYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnQodGFnLCBhdHRycywgYXJncywgdGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPcGVuUHJpbWl0aXZlRWxlbWVudCh7IHRhZyB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21waWxlKGxpc3QsIGVudikge1xuICAgICAgICBsaXN0LmFwcGVuZChuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGhpcy50YWcpKTtcbiAgICB9XG4gICAgdG9JZGVudGl0eSgpIHtcbiAgICAgICAgbGV0IHsgdGFnIH0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IE9wZW5QcmltaXRpdmVFbGVtZW50KHsgdGFnIH0pO1xuICAgIH1cbiAgICBwYXJhbWV0ZXJzKHNjYW5uZXIpIHtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICAgICAgbGV0IGF0dHJzID0gW107XG4gICAgICAgIGxldCBhcmdLZXlzID0gW107XG4gICAgICAgIGxldCBhcmdWYWx1ZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKCEoY3VycmVudCBpbnN0YW5jZW9mIEZsdXNoRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50W01PRElGSUVSX1NZTlRBWF0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFyYW0gPSBjdXJyZW50O1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRbQVRUUklCVVRFX1NZTlRBWF0pIHtcbiAgICAgICAgICAgICAgICBhdHRycy5wdXNoKHBhcmFtLm5hbWUpO1xuICAgICAgICAgICAgICAgIC8vIFJFTU9WRSBNRTogYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYXJnc1xuICAgICAgICAgICAgICAgIGFyZ0tleXMucHVzaChwYXJhbS5uYW1lKTtcbiAgICAgICAgICAgICAgICBhcmdWYWx1ZXMucHVzaChwYXJhbS52YWx1ZVN5bnRheCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRbQVJHVU1FTlRfU1lOVEFYXSkge1xuICAgICAgICAgICAgICAgIGFyZ0tleXMucHVzaChwYXJhbS5uYW1lKTtcbiAgICAgICAgICAgICAgICBhcmdWYWx1ZXMucHVzaChwYXJhbS52YWx1ZVN5bnRheCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIEZsdXNoRWxlbWVudCwgYnV0IGdvdCAke2N1cnJlbnR9XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudCA9IHNjYW5uZXIubmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGFyZ3M6IEFyZ3MuZnJvbU5hbWVkQXJncyhOYW1lZEFyZ3MuYnVpbGQoYXJnS2V5cywgYXJnVmFsdWVzKSksIGF0dHJzIH07XG4gICAgfVxuICAgIHRhZ0NvbnRlbnRzKHNjYW5uZXIpIHtcbiAgICAgICAgbGV0IG5lc3RpbmcgPSAxO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSBzY2FubmVyLm5leHQoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50IGluc3RhbmNlb2YgQ2xvc2VFbGVtZW50ICYmIC0tbmVzdGluZyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Nhbm5lci5hZGRTdGF0ZW1lbnQoY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudCBpbnN0YW5jZW9mIE9wZW5FbGVtZW50IHx8IGN1cnJlbnQgaW5zdGFuY2VvZiBPcGVuUHJpbWl0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIG5lc3RpbmcrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDb21wb25lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgYXR0cnMsIGFyZ3MsIHRlbXBsYXRlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLmF0dHJzID0gYXR0cnM7XG4gICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2NvbXBvbmVudCc7XG4gICAgfVxuICAgIGNvbXBpbGUobGlzdCwgZW52LCBzeW1ib2xUYWJsZSkge1xuICAgICAgICBsZXQgZGVmaW5pdGlvbiA9IGVudi5nZXRDb21wb25lbnREZWZpbml0aW9uKFt0aGlzLnRhZ10sIHN5bWJvbFRhYmxlKTtcbiAgICAgICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShsaXN0LCBlbnYsIHN5bWJvbFRhYmxlKTtcbiAgICAgICAgbGV0IHNoYWRvdyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIGxldCB0ZW1wbGF0ZXMgPSBuZXcgVGVtcGxhdGVzKHRoaXMudGVtcGxhdGUpO1xuICAgICAgICBsaXN0LmFwcGVuZChuZXcgUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gICAgICAgIGxpc3QuYXBwZW5kKG5ldyBPcGVuQ29tcG9uZW50T3Bjb2RlKGFyZ3MsIHNoYWRvdywgdGVtcGxhdGVzKSk7XG4gICAgICAgIGxpc3QuYXBwZW5kKG5ldyBDbG9zZUNvbXBvbmVudE9wY29kZSgpKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgT3BlblByaW1pdGl2ZUVsZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJvcGVuLXByaW1pdGl2ZS1lbGVtZW50XCI7XG4gICAgICAgIHRoaXMudGFnID0gb3B0aW9ucy50YWc7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZCh0YWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgdGFnIH0pO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyKSB7XG4gICAgICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGhpcy50YWcpKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWWllbGQgZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHsgdG8sIGFyZ3MgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInlpZWxkXCI7XG4gICAgICAgIHRoaXMudG8gPSB0bztcbiAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIHRvLCBwYXJhbXNdID0gc2V4cDtcbiAgICAgICAgbGV0IGFyZ3MgPSBBcmdzLmZyb21TcGVjKHBhcmFtcywgbnVsbCk7XG4gICAgICAgIHJldHVybiBuZXcgWWllbGQoeyB0bywgYXJncyB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHBhcmFtcywgdG8pIHtcbiAgICAgICAgbGV0IGFyZ3MgPSBBcmdzLmZyb21Qb3NpdGlvbmFsQXJncyhQb3NpdGlvbmFsQXJncy5idWlsZChwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgdG8sIGFyZ3MgfSk7XG4gICAgfVxuICAgIGNvbXBpbGUoZHNsLCBlbnYsIHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIGxldCB0byA9IGRzbC5nZXRCbG9ja1N5bWJvbCh0aGlzLnRvKTtcbiAgICAgICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3MuY29tcGlsZShkc2wsIGVudiwgc3ltYm9sVGFibGUpO1xuICAgICAgICBkc2wuYXBwZW5kKG5ldyBPcGVuQmxvY2tPcGNvZGUoeyB0bywgbGFiZWw6IHRoaXMudG8sIGFyZ3MgfSkpO1xuICAgICAgICBkc2wuYXBwZW5kKG5ldyBDbG9zZUJsb2NrT3Bjb2RlKCkpO1xuICAgIH1cbn1cbmNsYXNzIE9wZW5CbG9ja09wY29kZSBleHRlbmRzIE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoeyB0bywgbGFiZWwsIGFyZ3MgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIm9wZW4tYmxvY2tcIjtcbiAgICAgICAgdGhpcy50byA9IHRvO1xuICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2sodGhpcy50byk7XG4gICAgICAgIGxldCBhcmdzO1xuICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIGFyZ3MgPSB0aGlzLmFyZ3MuZXZhbHVhdGUodm0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZJWE1FOiBjYW4gd2UgYXZvaWQgZG9pbmcgdGhpcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBibG9jaz9cbiAgICAgICAgdm0ucHVzaENhbGxlclNjb3BlKCk7XG4gICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgdm0uaW52b2tlQmxvY2soYmxvY2ssIGFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENsb3NlQmxvY2tPcGNvZGUgZXh0ZW5kcyBPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImNsb3NlLWJsb2NrXCI7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIHZtLnBvcFNjb3BlKCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFZhbHVlIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheCB7XG4gICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ2YWx1ZVwiO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh2YWx1ZSk7XG4gICAgfVxuICAgIGlubmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlcikge1xuICAgICAgICByZXR1cm4gbmV3IENvbXBpbGVkVmFsdWUodGhpcyk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEdldEFyZ3VtZW50IGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImdldC1hcmd1bWVudFwiO1xuICAgICAgICB0aGlzLnBhcnRzID0gb3B0aW9ucy5wYXJ0cztcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG4gICAgICAgIHJldHVybiBuZXcgR2V0QXJndW1lbnQoeyBwYXJ0cyB9KTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgcGFydHM6IHBhdGguc3BsaXQoJy4nKSB9KTtcbiAgICB9XG4gICAgY29tcGlsZShsb29rdXApIHtcbiAgICAgICAgbGV0IHsgcGFydHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBoZWFkID0gcGFydHNbMF07XG4gICAgICAgIGxldCBzeW1ib2wgPSBsb29rdXAuZ2V0TmFtZWRTeW1ib2woaGVhZCk7XG4gICAgICAgIGxldCBwYXRoID0gcGFydHMuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhdGgsIGhlYWQpO1xuICAgIH1cbn1cbi8vIHRoaXMgaXMgc2VwYXJhdGVkIG91dCBmcm9tIEdldCBiZWNhdXNlIFVua25vd24gYWxzbyBoYXMgYSByZWYsIGJ1dCBpdFxuLy8gbWF5IHR1cm4gb3V0IHRvIGJlIGEgaGVscGVyXG5leHBvcnQgY2xhc3MgUmVmIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheCB7XG4gICAgY29uc3RydWN0b3IocGFydHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInJlZlwiO1xuICAgICAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChwYXRoKSB7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKHBhcnRzWzBdID09PSAndGhpcycpIHtcbiAgICAgICAgICAgIHBhcnRzWzBdID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IHRoaXMocGFydHMpO1xuICAgIH1cbiAgICBjb21waWxlKGxvb2t1cCkge1xuICAgICAgICBsZXQgeyBwYXJ0cyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGhlYWQgPSBwYXJ0c1swXTtcbiAgICAgICAgbGV0IHBhdGggPSBwYXJ0cy5zbGljZSgxKTtcbiAgICAgICAgaWYgKGhlYWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRTZWxmTG9va3VwKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxvb2t1cC5oYXNMb2NhbFN5bWJvbChoZWFkKSkge1xuICAgICAgICAgICAgbGV0IHN5bWJvbCA9IGxvb2t1cC5nZXRMb2NhbFN5bWJvbChoZWFkKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRMb2NhbExvb2t1cChzeW1ib2wsIHBhdGgsIGhlYWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZFNlbGZMb29rdXAocGFydHMpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEdldCBleHRlbmRzIEV4cHJlc3Npb25TeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICAgICAgdGhpcy50eXBlID0gXCJnZXRcIjtcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIHBhcnRzXSA9IHNleHA7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhuZXcgUmVmKHBhcnRzKSk7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChwYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhSZWYuYnVpbGQocGF0aCkpO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5jb21waWxlKGNvbXBpbGVyKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVW5rbm93biBleHRlbmRzIEV4cHJlc3Npb25TeW50YXgge1xuICAgIGNvbnN0cnVjdG9yKHJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ1bmtub3duXCI7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyhzZXhwKSB7XG4gICAgICAgIGxldCBbLCBwYXRoXSA9IHNleHA7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhuZXcgUmVmKHBhdGgpKTtcbiAgICB9XG4gICAgc3RhdGljIGJ1aWxkKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKFJlZi5idWlsZChwYXRoKSk7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgbGV0IHsgcmVmIH0gPSB0aGlzO1xuICAgICAgICBpZiAoZW52Lmhhc0hlbHBlcihyZWYucGFydHMsIHN5bWJvbFRhYmxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZEhlbHBlcihyZWYucGFydHMsIGVudi5sb29rdXBIZWxwZXIocmVmLnBhcnRzLCBzeW1ib2xUYWJsZSksIENvbXBpbGVkQXJncy5lbXB0eSgpLCBzeW1ib2xUYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWYuY29tcGlsZShjb21waWxlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSGVscGVyIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheCB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImhlbHBlclwiO1xuICAgICAgICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVmID0gb3B0aW9ucy5yZWY7XG4gICAgICAgIHRoaXMuYXJncyA9IG9wdGlvbnMuYXJncztcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIHBhdGgsIHBhcmFtcywgaGFzaF0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IEhlbHBlcih7XG4gICAgICAgICAgICByZWY6IG5ldyBSZWYocGF0aCksXG4gICAgICAgICAgICBhcmdzOiBBcmdzLmZyb21TcGVjKHBhcmFtcywgaGFzaClcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChwYXRoLCBwb3NpdGlvbmFsLCBuYW1lZCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoeyByZWY6IFJlZi5idWlsZChwYXRoKSwgYXJnczogQXJncy5idWlsZChwb3NpdGlvbmFsLCBuYW1lZCkgfSk7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgaWYgKGVudi5oYXNIZWxwZXIodGhpcy5yZWYucGFydHMsIHN5bWJvbFRhYmxlKSkge1xuICAgICAgICAgICAgbGV0IHsgYXJncywgcmVmIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZEhlbHBlcihyZWYucGFydHMsIGVudi5sb29rdXBIZWxwZXIocmVmLnBhcnRzLCBzeW1ib2xUYWJsZSksIGFyZ3MuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSksIHN5bWJvbFRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogJHt0aGlzLnJlZi5wYXJ0cy5qb2luKCcuJyl9IGlzIG5vdCBhIGhlbHBlcmApO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEhhc0Jsb2NrIGV4dGVuZHMgRXhwcmVzc2lvblN5bnRheCB7XG4gICAgY29uc3RydWN0b3IoeyBibG9ja05hbWUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBcImhhcy1ibG9ja1wiO1xuICAgICAgICB0aGlzLmJsb2NrTmFtZSA9IGJsb2NrTmFtZTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIGJsb2NrTmFtZV0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IEhhc0Jsb2NrKHsgYmxvY2tOYW1lIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoYmxvY2tOYW1lKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IGJsb2NrTmFtZSB9KTtcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlciwgZW52KSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIYXNCbG9jayh7XG4gICAgICAgICAgICBibG9ja05hbWU6IHRoaXMuYmxvY2tOYW1lLFxuICAgICAgICAgICAgYmxvY2tTeW1ib2w6IGNvbXBpbGVyLmdldEJsb2NrU3ltYm9sKHRoaXMuYmxvY2tOYW1lKVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSGFzQmxvY2tQYXJhbXMgZXh0ZW5kcyBFeHByZXNzaW9uU3ludGF4IHtcbiAgICBjb25zdHJ1Y3Rvcih7IGJsb2NrTmFtZSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiaGFzLWJsb2NrLXBhcmFtc1wiO1xuICAgICAgICB0aGlzLmJsb2NrTmFtZSA9IGJsb2NrTmFtZTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgbGV0IFssIGJsb2NrTmFtZV0gPSBzZXhwO1xuICAgICAgICByZXR1cm4gbmV3IEhhc0Jsb2NrUGFyYW1zKHsgYmxvY2tOYW1lIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoYmxvY2tOYW1lKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh7IGJsb2NrTmFtZSB9KTtcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlciwgZW52KSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tcGlsZWRIYXNCbG9ja1BhcmFtcyh7XG4gICAgICAgICAgICBibG9ja05hbWU6IHRoaXMuYmxvY2tOYW1lLFxuICAgICAgICAgICAgYmxvY2tTeW1ib2w6IGNvbXBpbGVyLmdldEJsb2NrU3ltYm9sKHRoaXMuYmxvY2tOYW1lKVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29uY2F0IHtcbiAgICBjb25zdHJ1Y3Rvcih7IHBhcnRzIH0pIHtcbiAgICAgICAgdGhpcy50eXBlID0gXCJjb25jYXRcIjtcbiAgICAgICAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tU3BlYyhzZXhwKSB7XG4gICAgICAgIGxldCBbLCBwYXJhbXNdID0gc2V4cDtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25jYXQoeyBwYXJ0czogcGFyYW1zLm1hcChidWlsZEV4cHJlc3Npb24pIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQocGFydHMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHsgcGFydHMgfSk7XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZENvbmNhdCh7IHBhcnRzOiB0aGlzLnBhcnRzLm1hcChwID0+IHAuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSkpIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBBcmdzIHtcbiAgICBjb25zdHJ1Y3Rvcihwb3NpdGlvbmFsLCBuYW1lZCkge1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBwb3NpdGlvbmFsO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmFtZWQ7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiYXJnc1wiO1xuICAgIH1cbiAgICBzdGF0aWMgZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBFTVBUWV9BUkdTO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMocG9zaXRpb25hbCwgbmFtZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdzKFBvc2l0aW9uYWxBcmdzLmZyb21TcGVjKHBvc2l0aW9uYWwpLCBOYW1lZEFyZ3MuZnJvbVNwZWMobmFtZWQpKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21Qb3NpdGlvbmFsQXJncyhwb3NpdGlvbmFsKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJncyhwb3NpdGlvbmFsLCBFTVBUWV9OQU1FRF9BUkdTKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21OYW1lZEFyZ3MobmFtZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdzKEVNUFRZX1BPU0lUSU9OQUxfQVJHUywgbmFtZWQpO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQocG9zaXRpb25hbCwgbmFtZWQpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uYWwgPT09IEVNUFRZX1BPU0lUSU9OQUxfQVJHUyAmJiBuYW1lZCA9PT0gRU1QVFlfTkFNRURfQVJHUykge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX0FSR1M7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMocG9zaXRpb25hbCwgbmFtZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpIHtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBDb21waWxlZEFyZ3MuY3JlYXRlKHBvc2l0aW9uYWwuY29tcGlsZShjb21waWxlciwgZW52LCBzeW1ib2xUYWJsZSksIG5hbWVkLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9zaXRpb25hbEFyZ3Mge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlcykge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgdGhpcy50eXBlID0gXCJwb3NpdGlvbmFsXCI7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoc2V4cCkge1xuICAgICAgICBpZiAoIXNleHAgfHwgc2V4cC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfUE9TSVRJT05BTF9BUkdTO1xuICAgICAgICByZXR1cm4gbmV3IFBvc2l0aW9uYWxBcmdzKHNleHAubWFwKGJ1aWxkRXhwcmVzc2lvbikpO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoZXhwcnMpIHtcbiAgICAgICAgaWYgKGV4cHJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX1BPU0lUSU9OQUxfQVJHUztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcyhleHBycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgICAgICByZXR1cm4gUG9zaXRpb25hbEFyZ3MuYnVpbGQodGhpcy52YWx1ZXMuc2xpY2Uoc3RhcnQsIGVuZCkpO1xuICAgIH1cbiAgICBhdChpbmRleCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbaW5kZXhdO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIHJldHVybiBDb21waWxlZFBvc2l0aW9uYWxBcmdzLmNyZWF0ZSh0aGlzLnZhbHVlcy5tYXAodiA9PiB2LmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpKSk7XG4gICAgfVxufVxuY29uc3QgRU1QVFlfUE9TSVRJT05BTF9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIFBvc2l0aW9uYWxBcmdzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoRU1QVFlfQVJSQVkpO1xuICAgIH1cbiAgICBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBhdChpbmRleCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyA/PyFcbiAgICB9XG4gICAgY29tcGlsZShjb21waWxlciwgZW52KSB7XG4gICAgICAgIHJldHVybiBDb21waWxlZFBvc2l0aW9uYWxBcmdzLmVtcHR5KCk7XG4gICAgfVxufSk7XG5leHBvcnQgY2xhc3MgTmFtZWRBcmdzIHtcbiAgICBjb25zdHJ1Y3RvcihrZXlzLCB2YWx1ZXMpIHtcbiAgICAgICAgdGhpcy5rZXlzID0ga2V5cztcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMudHlwZSA9IFwibmFtZWRcIjtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gRU1QVFlfTkFNRURfQVJHUztcbiAgICB9XG4gICAgc3RhdGljIGZyb21TcGVjKHNleHApIHtcbiAgICAgICAgaWYgKHNleHAgPT09IG51bGwgfHwgc2V4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfTkFNRURfQVJHUztcbiAgICAgICAgfVxuICAgICAgICBsZXQgW2tleXMsIGV4cHJzXSA9IHNleHA7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX05BTUVEX0FSR1M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKGtleXMsIGV4cHJzLm1hcChleHByID0+IGJ1aWxkRXhwcmVzc2lvbihleHByKSkpO1xuICAgIH1cbiAgICBzdGF0aWMgYnVpbGQoa2V5cywgdmFsdWVzKSB7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX05BTUVEX0FSR1M7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMoa2V5cywgdmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhdChrZXkpIHtcbiAgICAgICAgbGV0IHsga2V5cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5cy5pbmRleE9mKGtleSkgIT09IC0xO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIGxldCB7IGtleXMsIHZhbHVlcyB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBDb21waWxlZE5hbWVkQXJncyhrZXlzLCB2YWx1ZXMubWFwKHZhbHVlID0+IHZhbHVlLmNvbXBpbGUoY29tcGlsZXIsIGVudiwgc3ltYm9sVGFibGUpKSk7XG4gICAgfVxufVxuY29uc3QgRU1QVFlfTkFNRURfQVJHUyA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBOYW1lZEFyZ3Mge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihFTVBUWV9BUlJBWSwgRU1QVFlfQVJSQVkpO1xuICAgIH1cbiAgICBhdChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gPz8hXG4gICAgfVxuICAgIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyLCBlbnYpIHtcbiAgICAgICAgcmV0dXJuIENvbXBpbGVkTmFtZWRBcmdzLmVtcHR5KCk7XG4gICAgfVxufSk7XG5jb25zdCBFTVBUWV9BUkdTID0gbmV3IChjbGFzcyBleHRlbmRzIEFyZ3Mge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihFTVBUWV9QT1NJVElPTkFMX0FSR1MsIEVNUFRZX05BTUVEX0FSR1MpO1xuICAgIH1cbiAgICBjb21waWxlKGNvbXBpbGVyLCBlbnYpIHtcbiAgICAgICAgcmV0dXJuIENvbXBpbGVkQXJncy5lbXB0eSgpO1xuICAgIH1cbn0pO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlcyB7XG4gICAgY29uc3RydWN0b3IoX2RlZmF1bHQsIGludmVyc2UgPSBudWxsKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFwidGVtcGxhdGVzXCI7XG4gICAgICAgIHRoaXMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuICAgICAgICB0aGlzLmludmVyc2UgPSBpbnZlcnNlO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVNwZWMoX2RlZmF1bHQsIGludmVyc2UgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGVtcGxhdGVzKF9kZWZhdWx0LCBpbnZlcnNlKTtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlcyhudWxsLCBudWxsKTtcbiAgICB9XG59XG4iXX0= 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 isSelfGet = _glimmerWireFormat.Expressions.isSelfGet; var isHasBlock = _glimmerWireFormat.Expressions.isHasBlock; var isHasBlockParams = _glimmerWireFormat.Expressions.isHasBlockParams; var isHelper = _glimmerWireFormat.Expressions.isHelper; var isUnknown = _glimmerWireFormat.Expressions.isUnknown; - var isValue = _glimmerWireFormat.Expressions.isValue; + var isPrimitiveValue = _glimmerWireFormat.Expressions.isPrimitiveValue; + var isUndefined = _glimmerWireFormat.Expressions.isUndefined; exports.default = function (sexp) { - if (isValue(sexp)) { - return _glimmerRuntimeLibSyntaxCore.Value.fromSpec(sexp); - } else { - 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 (isSelfGet(sexp)) return _glimmerRuntimeLibSyntaxCore.SelfGet.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); - } + 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)); }; ; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2V4cHJlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQWtCRSxLQUFLLHNCQUxMLFdBQVcsQ0FLWCxLQUFLO1FBQ0wsUUFBUSxzQkFOUixXQUFXLENBTVgsUUFBUTtRQUNSLEtBQUssc0JBUEwsV0FBVyxDQU9YLEtBQUs7UUFDTCxTQUFTLHNCQVJULFdBQVcsQ0FRWCxTQUFTO1FBQ1QsVUFBVSxzQkFUVixXQUFXLENBU1gsVUFBVTtRQUNWLGdCQUFnQixzQkFWaEIsV0FBVyxDQVVYLGdCQUFnQjtRQUNoQixRQUFRLHNCQVhSLFdBQVcsQ0FXWCxRQUFRO1FBQ1IsU0FBUyxzQkFaVCxXQUFXLENBWVgsU0FBUztRQUNULE9BQU8sc0JBYlAsV0FBVyxDQWFYLE9BQU87O3NCQUdULFVBQXdCLElBQTBCLEVBQUE7QUFDaEQsWUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakIsbUJBQU8sNkJBOUJULEtBQUssQ0E4QmdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQyxNQUFNO0FBQ0wsZ0JBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0IxQixXQUFXLENBK0J5QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsZ0JBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0I3QixNQUFNLENBK0JvQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsZ0JBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0IxQixHQUFHLENBK0JpQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsZ0JBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0I5QixPQUFPLENBK0JxQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsZ0JBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBN0I3QixNQUFNLENBNkJvQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsZ0JBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBN0I5QixPQUFPLENBNkJxQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsZ0JBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBakMvQixRQUFRLENBaUNzQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsZ0JBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkFqQ3JDLGNBQWMsQ0FpQzRDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4RTtLQUNGOztBQUFBLEtBQUMiLCJmaWxlIjoiZXhwcmVzc2lvbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWYWx1ZSBhcyBWYWx1ZVN5bnRheCxcbiAgR2V0QXJndW1lbnQgYXMgQXJnU3ludGF4LFxuICBDb25jYXQgYXMgQ29uY2F0U3ludGF4LFxuICBHZXQgYXMgR2V0U3ludGF4LFxuICBTZWxmR2V0IGFzIFNlbGZHZXRTeW50YXgsXG4gIEhhc0Jsb2NrIGFzIEhhc0Jsb2NrU3ludGF4LFxuICBIYXNCbG9ja1BhcmFtcyBhcyBIYXNCbG9ja1BhcmFtc1N5bnRheCxcbiAgSGVscGVyIGFzIEhlbHBlclN5bnRheCxcbiAgVW5rbm93biBhcyBVbmtub3duU3ludGF4XG59IGZyb20gJy4vY29yZSc7XG5cbmltcG9ydCB7XG4gIEV4cHJlc3Npb25zIGFzIFNlcmlhbGl6ZWRFeHByZXNzaW9ucyxcbiAgRXhwcmVzc2lvbiBhcyBTZXJpYWxpemVkRXhwcmVzc2lvblxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuY29uc3Qge1xuICBpc0FyZyxcbiAgaXNDb25jYXQsXG4gIGlzR2V0LFxuICBpc1NlbGZHZXQsXG4gIGlzSGFzQmxvY2ssXG4gIGlzSGFzQmxvY2tQYXJhbXMsXG4gIGlzSGVscGVyLFxuICBpc1Vua25vd24sXG4gIGlzVmFsdWVcbn0gPSBTZXJpYWxpemVkRXhwcmVzc2lvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNleHA6IFNlcmlhbGl6ZWRFeHByZXNzaW9uKTogYW55IHtcbiAgaWYgKGlzVmFsdWUoc2V4cCkpIHtcbiAgICByZXR1cm4gVmFsdWVTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzQXJnKHNleHApKSByZXR1cm4gQXJnU3ludGF4LmZyb21TcGVjKHNleHApO1xuICAgIGlmIChpc0NvbmNhdChzZXhwKSkgcmV0dXJuIENvbmNhdFN5bnRheC5mcm9tU3BlYyhzZXhwKTtcbiAgICBpZiAoaXNHZXQoc2V4cCkpIHJldHVybiBHZXRTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gICAgaWYgKGlzU2VsZkdldChzZXhwKSkgcmV0dXJuIFNlbGZHZXRTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gICAgaWYgKGlzSGVscGVyKHNleHApKSByZXR1cm4gSGVscGVyU3ludGF4LmZyb21TcGVjKHNleHApO1xuICAgIGlmIChpc1Vua25vd24oc2V4cCkpIHJldHVybiBVbmtub3duU3ludGF4LmZyb21TcGVjKHNleHApO1xuICAgIGlmIChpc0hhc0Jsb2NrKHNleHApKSByZXR1cm4gSGFzQmxvY2tTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gICAgaWYgKGlzSGFzQmxvY2tQYXJhbXMoc2V4cCkpIHJldHVybiBIYXNCbG9ja1BhcmFtc1N5bnRheC5mcm9tU3BlYyhzZXhwKTtcbiAgfVxufTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2V4cHJlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQWlCRSxLQUFLLHNCQUxMLFdBQVcsQ0FLWCxLQUFLO1FBQ0wsUUFBUSxzQkFOUixXQUFXLENBTVgsUUFBUTtRQUNSLEtBQUssc0JBUEwsV0FBVyxDQU9YLEtBQUs7UUFDTCxVQUFVLHNCQVJWLFdBQVcsQ0FRWCxVQUFVO1FBQ1YsZ0JBQWdCLHNCQVRoQixXQUFXLENBU1gsZ0JBQWdCO1FBQ2hCLFFBQVEsc0JBVlIsV0FBVyxDQVVYLFFBQVE7UUFDUixTQUFTLHNCQVhULFdBQVcsQ0FXWCxTQUFTO1FBQ1QsZ0JBQWdCLHNCQVpoQixXQUFXLENBWVgsZ0JBQWdCO1FBQ2hCLFdBQVcsc0JBYlgsV0FBVyxDQWFYLFdBQVc7O3NCQUdDLFVBQVUsSUFBMEIsRUFBQTtBQUNoRCxZQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBNUJuQyxLQUFLLENBNEIwQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsWUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE3QjlCLEtBQUssQ0E2QnFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzRCxZQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTdCeEIsV0FBVyxDQTZCdUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELFlBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBN0IzQixNQUFNLENBNkJrQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsWUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE3QnhCLEdBQUcsQ0E2QitCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxZQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTNCM0IsTUFBTSxDQTJCa0MsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFlBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBM0I1QixPQUFPLENBMkJtQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsWUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkEvQjdCLFFBQVEsQ0ErQm9DLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRCxZQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBL0JuQyxjQUFjLENBK0IwQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkUsY0FBTSxJQUFJLEtBQUssOEJBQTRCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUcsQ0FBQztLQUNwRTs7QUFBQSxLQUFDIiwiZmlsZSI6ImV4cHJlc3Npb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVmFsdWUgYXMgVmFsdWVTeW50YXgsXG4gIEdldEFyZ3VtZW50IGFzIEFyZ1N5bnRheCxcbiAgQ29uY2F0IGFzIENvbmNhdFN5bnRheCxcbiAgR2V0IGFzIEdldFN5bnRheCxcbiAgSGFzQmxvY2sgYXMgSGFzQmxvY2tTeW50YXgsXG4gIEhhc0Jsb2NrUGFyYW1zIGFzIEhhc0Jsb2NrUGFyYW1zU3ludGF4LFxuICBIZWxwZXIgYXMgSGVscGVyU3ludGF4LFxuICBVbmtub3duIGFzIFVua25vd25TeW50YXhcbn0gZnJvbSAnLi9jb3JlJztcblxuaW1wb3J0IHtcbiAgRXhwcmVzc2lvbnMgYXMgU2VyaWFsaXplZEV4cHJlc3Npb25zLFxuICBFeHByZXNzaW9uIGFzIFNlcmlhbGl6ZWRFeHByZXNzaW9uXG59IGZyb20gJ2dsaW1tZXItd2lyZS1mb3JtYXQnO1xuXG5jb25zdCB7XG4gIGlzQXJnLFxuICBpc0NvbmNhdCxcbiAgaXNHZXQsXG4gIGlzSGFzQmxvY2ssXG4gIGlzSGFzQmxvY2tQYXJhbXMsXG4gIGlzSGVscGVyLFxuICBpc1Vua25vd24sXG4gIGlzUHJpbWl0aXZlVmFsdWUsXG4gIGlzVW5kZWZpbmVkXG59ID0gU2VyaWFsaXplZEV4cHJlc3Npb25zO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXhwOiBTZXJpYWxpemVkRXhwcmVzc2lvbik6IGFueSB7XG4gIGlmIChpc1ByaW1pdGl2ZVZhbHVlKHNleHApKSByZXR1cm4gVmFsdWVTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc1VuZGVmaW5lZChzZXhwKSkgcmV0dXJuIFZhbHVlU3ludGF4LmJ1aWxkKHVuZGVmaW5lZCk7XG4gIGlmIChpc0FyZyhzZXhwKSkgcmV0dXJuIEFyZ1N5bnRheC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzQ29uY2F0KHNleHApKSByZXR1cm4gQ29uY2F0U3ludGF4LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNHZXQoc2V4cCkpIHJldHVybiBHZXRTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0hlbHBlcihzZXhwKSkgcmV0dXJuIEhlbHBlclN5bnRheC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzVW5rbm93bihzZXhwKSkgcmV0dXJuIFVua25vd25TeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0hhc0Jsb2NrKHNleHApKSByZXR1cm4gSGFzQmxvY2tTeW50YXguZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0hhc0Jsb2NrUGFyYW1zKHNleHApKSByZXR1cm4gSGFzQmxvY2tQYXJhbXNTeW50YXguZnJvbVNwZWMoc2V4cCk7XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHdpcmUgZm9ybWF0OiAke0pTT04uc3RyaW5naWZ5KHNleHApfWApO1xufTtcbiJdfQ== enifed('glimmer-runtime/lib/syntax/statements', ['exports', 'glimmer-runtime/lib/syntax/core', 'glimmer-wire-format'], function (exports, _glimmerRuntimeLibSyntaxCore, _glimmerWireFormat) { 'use strict'; var isYield = _glimmerWireFormat.Statements.isYield; var isBlock = _glimmerWireFormat.Statements.isBlock; 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; - exports.default = function (sexp, blocks) { + exports.default = function (sexp, symbolTable, scanner) { if (isYield(sexp)) return _glimmerRuntimeLibSyntaxCore.Yield.fromSpec(sexp); - if (isBlock(sexp)) return _glimmerRuntimeLibSyntaxCore.Block.fromSpec(sexp, blocks); + 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); + 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); }; ; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L3N0YXRlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBd0JFLE9BQU8sc0JBTFAsVUFBVSxDQUtWLE9BQU87UUFDUCxPQUFPLHNCQU5QLFVBQVUsQ0FNVixPQUFPO1FBQ1AsUUFBUSxzQkFQUixVQUFVLENBT1YsUUFBUTtRQUNSLGFBQWEsc0JBUmIsVUFBVSxDQVFWLGFBQWE7UUFDYixNQUFNLHNCQVROLFVBQVUsQ0FTVixNQUFNO1FBQ04sU0FBUyxzQkFWVCxVQUFVLENBVVYsU0FBUztRQUNULGFBQWEsc0JBWGIsVUFBVSxDQVdWLGFBQWE7UUFDYixjQUFjLHNCQVpkLFVBQVUsQ0FZVixjQUFjO1FBQ2QsWUFBWSxzQkFiWixVQUFVLENBYVYsWUFBWTtRQUNaLFVBQVUsc0JBZFYsVUFBVSxDQWNWLFVBQVU7UUFDVixZQUFZLHNCQWZaLFVBQVUsQ0FlVixZQUFZO1FBQ1osV0FBVyxzQkFoQlgsVUFBVSxDQWdCVixXQUFXO1FBQ1gsY0FBYyxzQkFqQmQsVUFBVSxDQWlCVixjQUFjOztzQkFHaEIsVUFBd0IsSUFBeUIsRUFBRSxNQUFxQixFQUFBO0FBQ3RFLFlBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBdkMxQixLQUFLLENBdUMyQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsWUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkF2QzFCLEtBQUssQ0F1QzJCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkQsWUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkF2QzNCLGVBQWUsQ0F1QzRCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxZQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQXZDaEMsV0FBVyxDQXVDaUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELFlBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBakMvQixVQUFVLENBaUNnQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsWUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkFoQ2pDLFlBQVksQ0FnQ2tDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxZQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQXpDekIsSUFBSSxDQXlDMEIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLFlBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBekM1QixPQUFPLENBeUM2QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsWUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkF6Q2hDLFdBQVcsQ0F5Q2lDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRCxZQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQXpDakMsWUFBWSxDQXlDa0MsUUFBUSxFQUFFLENBQUM7QUFDekQsWUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkF6Qy9CLFVBQVUsQ0F5Q2dDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6RCxZQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQXZDOUIsU0FBUyxDQXVDK0IsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFlBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBMUM3QixRQUFRLENBMEM4QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEQ7O0FBQUEsS0FBQyIsImZpbGUiOiJzdGF0ZW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgWWllbGQsXG4gIEJsb2NrLFxuICBPcHRpbWl6ZWRBcHBlbmQsXG4gIER5bmFtaWNBdHRyLFxuICBUZXh0LFxuICBDb21tZW50LFxuICBPcGVuRWxlbWVudCxcbiAgQ2xvc2VFbGVtZW50LFxuICBTdGF0aWNBdHRyLFxuICBNb2RpZmllcixcbiAgRHluYW1pY0FyZyxcbiAgU3RhdGljQXJnLFxuICBUcnVzdGluZ0F0dHJcbn0gZnJvbSAnLi9jb3JlJztcblxuaW1wb3J0IHsgSW5saW5lQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCB9IGZyb20gJy4uL3N5bnRheCc7XG5pbXBvcnQge1xuICBTdGF0ZW1lbnRzIGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLFxuICBTdGF0ZW1lbnQgYXMgU2VyaWFsaXplZFN0YXRlbWVudFxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuY29uc3Qge1xuICBpc1lpZWxkLFxuICBpc0Jsb2NrLFxuICBpc0FwcGVuZCxcbiAgaXNEeW5hbWljQXR0cixcbiAgaXNUZXh0LFxuICBpc0NvbW1lbnQsXG4gIGlzT3BlbkVsZW1lbnQsXG4gIGlzQ2xvc2VFbGVtZW50LFxuICBpc1N0YXRpY0F0dHIsXG4gIGlzTW9kaWZpZXIsXG4gIGlzRHluYW1pY0FyZyxcbiAgaXNTdGF0aWNBcmcsXG4gIGlzVHJ1c3RpbmdBdHRyXG59ID0gU2VyaWFsaXplZFN0YXRlbWVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNleHA6IFNlcmlhbGl6ZWRTdGF0ZW1lbnQsIGJsb2NrczogSW5saW5lQmxvY2tbXSk6IFN0YXRlbWVudFN5bnRheCB7XG4gIGlmIChpc1lpZWxkKHNleHApKSByZXR1cm4gWWllbGQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0Jsb2NrKHNleHApKSByZXR1cm4gQmxvY2suZnJvbVNwZWMoc2V4cCwgYmxvY2tzKTtcbiAgaWYgKGlzQXBwZW5kKHNleHApKSByZXR1cm4gT3B0aW1pemVkQXBwZW5kLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNEeW5hbWljQXR0cihzZXhwKSkgcmV0dXJuIER5bmFtaWNBdHRyLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNEeW5hbWljQXJnKHNleHApKSByZXR1cm4gRHluYW1pY0FyZy5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzVHJ1c3RpbmdBdHRyKHNleHApKSByZXR1cm4gVHJ1c3RpbmdBdHRyLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNUZXh0KHNleHApKSByZXR1cm4gVGV4dC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzQ29tbWVudChzZXhwKSkgcmV0dXJuIENvbW1lbnQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc09wZW5FbGVtZW50KHNleHApKSByZXR1cm4gT3BlbkVsZW1lbnQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0Nsb3NlRWxlbWVudChzZXhwKSkgcmV0dXJuIENsb3NlRWxlbWVudC5mcm9tU3BlYygpO1xuICBpZiAoaXNTdGF0aWNBdHRyKHNleHApKSByZXR1cm4gU3RhdGljQXR0ci5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzU3RhdGljQXJnKHNleHApKSByZXR1cm4gU3RhdGljQXJnLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNNb2RpZmllcihzZXhwKSkgcmV0dXJuIE1vZGlmaWVyLmZyb21TcGVjKHNleHApO1xufTtcbiJdfQ== -enifed('glimmer-runtime/lib/template', ['exports', 'glimmer-runtime/lib/builder', 'glimmer-runtime/lib/vm', 'glimmer-runtime/lib/scanner'], function (exports, _glimmerRuntimeLibBuilder, _glimmerRuntimeLibVm, _glimmerRuntimeLibScanner) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L3N0YXRlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBMEJFLE9BQU8sc0JBTlAsVUFBVSxDQU1WLE9BQU87UUFDUCxPQUFPLHNCQVBQLFVBQVUsQ0FPVixPQUFPO1FBQ1AsUUFBUSxzQkFSUixVQUFVLENBUVYsUUFBUTtRQUNSLGFBQWEsc0JBVGIsVUFBVSxDQVNWLGFBQWE7UUFDYixNQUFNLHNCQVZOLFVBQVUsQ0FVVixNQUFNO1FBQ04sU0FBUyxzQkFYVCxVQUFVLENBV1YsU0FBUztRQUNULGFBQWEsc0JBWmIsVUFBVSxDQVlWLGFBQWE7UUFDYixjQUFjLHNCQWJkLFVBQVUsQ0FhVixjQUFjO1FBQ2QsY0FBYyxzQkFkZCxVQUFVLENBY1YsY0FBYztRQUNkLFlBQVksc0JBZlosVUFBVSxDQWVWLFlBQVk7UUFDWixVQUFVLHNCQWhCVixVQUFVLENBZ0JWLFVBQVU7UUFDVixZQUFZLHNCQWpCWixVQUFVLENBaUJWLFlBQVk7UUFDWixXQUFXLHNCQWxCWCxVQUFVLENBa0JWLFdBQVc7UUFDWCxjQUFjLHNCQW5CZCxVQUFVLENBbUJWLGNBQWM7O3NCQUdGLFVBQVUsSUFBeUIsRUFBRSxXQUF3QixFQUFFLE9BQXFCLEVBQUE7QUFDaEcsWUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkExQzFCLEtBQUssQ0EwQzJCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQyxZQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTFDMUIsS0FBSyxDQTBDMkIsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsWUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkExQzNCLGVBQWUsQ0EwQzRCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxZQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTFDaEMsV0FBVyxDQTBDaUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELFlBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBbkMvQixVQUFVLENBbUNnQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsWUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkFsQ2pDLFlBQVksQ0FrQ2tDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxZQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTVDekIsSUFBSSxDQTRDMEIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLFlBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBNUM1QixPQUFPLENBNEM2QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsWUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE1Q2hDLFdBQVcsQ0E0Q2lDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEUsWUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE1Q2pDLFlBQVksQ0E0Q2tDLFFBQVEsRUFBRSxDQUFDO0FBQ3pELFlBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBNUNqQyxZQUFZLENBNENrQyxRQUFRLEVBQUUsQ0FBQztBQUN6RCxZQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLDZCQTVDL0IsVUFBVSxDQTRDZ0MsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pELFlBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sNkJBMUM5QixTQUFTLENBMEMrQixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsWUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyw2QkE3QzdCLFFBQVEsQ0E2QzhCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0RDs7QUFBQSxLQUFDIiwiZmlsZSI6InN0YXRlbWVudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBZaWVsZCxcbiAgQmxvY2ssXG4gIE9wdGltaXplZEFwcGVuZCxcbiAgRHluYW1pY0F0dHIsXG4gIFRleHQsXG4gIENvbW1lbnQsXG4gIE9wZW5FbGVtZW50LFxuICBGbHVzaEVsZW1lbnQsXG4gIENsb3NlRWxlbWVudCxcbiAgU3RhdGljQXR0cixcbiAgTW9kaWZpZXIsXG4gIER5bmFtaWNBcmcsXG4gIFN0YXRpY0FyZyxcbiAgVHJ1c3RpbmdBdHRyXG59IGZyb20gJy4vY29yZSc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi9zeW1ib2wtdGFibGUnO1xuaW1wb3J0IHsgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCB9IGZyb20gJy4uL3N5bnRheCc7XG5pbXBvcnQge1xuICBTdGF0ZW1lbnRzIGFzIFNlcmlhbGl6ZWRTdGF0ZW1lbnRzLFxuICBTdGF0ZW1lbnQgYXMgU2VyaWFsaXplZFN0YXRlbWVudFxufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcbmltcG9ydCB7IEJsb2NrU2Nhbm5lciAgfSBmcm9tICcuLi9zY2FubmVyJztcblxuY29uc3Qge1xuICBpc1lpZWxkLFxuICBpc0Jsb2NrLFxuICBpc0FwcGVuZCxcbiAgaXNEeW5hbWljQXR0cixcbiAgaXNUZXh0LFxuICBpc0NvbW1lbnQsXG4gIGlzT3BlbkVsZW1lbnQsXG4gIGlzRmx1c2hFbGVtZW50LFxuICBpc0Nsb3NlRWxlbWVudCxcbiAgaXNTdGF0aWNBdHRyLFxuICBpc01vZGlmaWVyLFxuICBpc0R5bmFtaWNBcmcsXG4gIGlzU3RhdGljQXJnLFxuICBpc1RydXN0aW5nQXR0clxufSA9IFNlcmlhbGl6ZWRTdGF0ZW1lbnRzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXhwOiBTZXJpYWxpemVkU3RhdGVtZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHNjYW5uZXI6IEJsb2NrU2Nhbm5lcik6IFN0YXRlbWVudFN5bnRheCB7XG4gIGlmIChpc1lpZWxkKHNleHApKSByZXR1cm4gWWllbGQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0Jsb2NrKHNleHApKSByZXR1cm4gQmxvY2suZnJvbVNwZWMoc2V4cCwgc3ltYm9sVGFibGUsIHNjYW5uZXIpO1xuICBpZiAoaXNBcHBlbmQoc2V4cCkpIHJldHVybiBPcHRpbWl6ZWRBcHBlbmQuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0R5bmFtaWNBdHRyKHNleHApKSByZXR1cm4gRHluYW1pY0F0dHIuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc0R5bmFtaWNBcmcoc2V4cCkpIHJldHVybiBEeW5hbWljQXJnLmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNUcnVzdGluZ0F0dHIoc2V4cCkpIHJldHVybiBUcnVzdGluZ0F0dHIuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc1RleHQoc2V4cCkpIHJldHVybiBUZXh0LmZyb21TcGVjKHNleHApO1xuICBpZiAoaXNDb21tZW50KHNleHApKSByZXR1cm4gQ29tbWVudC5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzT3BlbkVsZW1lbnQoc2V4cCkpIHJldHVybiBPcGVuRWxlbWVudC5mcm9tU3BlYyhzZXhwLCBzeW1ib2xUYWJsZSk7XG4gIGlmIChpc0ZsdXNoRWxlbWVudChzZXhwKSkgcmV0dXJuIEZsdXNoRWxlbWVudC5mcm9tU3BlYygpO1xuICBpZiAoaXNDbG9zZUVsZW1lbnQoc2V4cCkpIHJldHVybiBDbG9zZUVsZW1lbnQuZnJvbVNwZWMoKTtcbiAgaWYgKGlzU3RhdGljQXR0cihzZXhwKSkgcmV0dXJuIFN0YXRpY0F0dHIuZnJvbVNwZWMoc2V4cCk7XG4gIGlmIChpc1N0YXRpY0FyZyhzZXhwKSkgcmV0dXJuIFN0YXRpY0FyZy5mcm9tU3BlYyhzZXhwKTtcbiAgaWYgKGlzTW9kaWZpZXIoc2V4cCkpIHJldHVybiBNb2RpZmllci5mcm9tU3BlYyhzZXhwKTtcbn07XG4iXX0= +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'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + exports.default = templateFactory; - var Template = (function () { - function Template(_ref) { - var raw = _ref.raw; + var clientId = 0; - _classCallCheck(this, Template); + function templateFactory(_ref) { + var id = _ref.id; + var meta = _ref.meta; + var block = _ref.block; - this.raw = raw; + var parsedBlock = undefined; + if (!id) { + id = 'client-' + clientId++; } - - Template.fromSpec = function fromSpec(spec, env) { - var scanner = new _glimmerRuntimeLibScanner.default(spec, env); - return new Template({ - raw: scanner.scanEntryPoint() - }); + 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 }; + } - Template.layoutFromSpec = function layoutFromSpec(spec, env) { - var scanner = new _glimmerRuntimeLibScanner.default(spec, env); - return scanner.scanLayout(); + 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; }; - - Template.prototype.render = function render(self, env, _ref2) { - var dynamicScope = _ref2.dynamicScope; - var appendTo = _ref2.appendTo; - var blockArguments = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3]; - + 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 = this.raw.compile(env); + var compiled = asEntryPoint().compile(env); var vm = _glimmerRuntimeLibVm.VM.initial(env, { self: self, dynamicScope: dynamicScope, elementStack: elementStack, size: compiled.symbols }); return vm.execute(compiled.ops); }; - - return Template; - })(); - - exports.default = Template; + return { id: id, meta: meta, _block: block, asEntryPoint: asEntryPoint, asLayout: asLayout, asPartial: asPartial, render: render }; + } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFxQkEsUUFBQTtBQWdCRSxpQkFoQkYsUUFBQSxDQWdCYyxJQUF3QixFQUFBO2dCQUF0QixHQUFHLEdBQUwsSUFBd0IsQ0FBdEIsR0FBRzs7a0NBaEJuQixRQUFBOztBQWlCSSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDaEI7O0FBbEJILGdCQUFBLENBQ1MsUUFBUSxHQUFBLGtCQUFDLElBQXdCLEVBQUUsR0FBZ0IsRUFBQTtBQUN4RCxnQkFBSSxPQUFPLEdBQUcsc0NBQVksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLG1CQUFPLElBQUksUUFBUSxDQUFDO0FBQ2xCLG1CQUFHLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTthQUM5QixDQUFDLENBQUM7U0FDSjs7QUFOSCxnQkFBQSxDQVFTLGNBQWMsR0FBQSx3QkFBQyxJQUF3QixFQUFFLEdBQWdCLEVBQUE7QUFDOUQsZ0JBQUksT0FBTyxHQUFHLHNDQUFZLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyQyxtQkFBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDN0I7O0FBWEgsZ0JBQUEsV0FvQkUsTUFBTSxHQUFBLGdCQUFDLElBQXdCLEVBQUUsR0FBZ0IsRUFBRSxLQUF5QyxFQUE0QjtnQkFBbkUsWUFBWSxHQUFkLEtBQXlDLENBQXZDLFlBQVk7Z0JBQUUsUUFBUSxHQUF4QixLQUF5QyxDQUF6QixRQUFRO2dCQUFtQixjQUFjLHlEQUFRLElBQUk7O0FBQ3RILGdCQUFJLFlBQVksR0FBRywwQkF0Q2QsWUFBWSxDQXNDZSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RFLGdCQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxnQkFBSSxFQUFFLEdBQUcscUJBdkNKLEVBQUUsQ0F1Q0ssT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsWUFBWSxFQUFaLFlBQVksRUFBRSxZQUFZLEVBQVosWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUV2RixtQkFBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqQzs7ZUExQkgsUUFBQTs7O3NCQUFBLFFBQUEiLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJpYWxpemVkVGVtcGxhdGUgfSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFbnRyeVBvaW50LCBMYXlvdXQgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRHluYW1pY1Njb3BlIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHsgVk0gfSBmcm9tICcuL3ZtJztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5cbmludGVyZmFjZSBUZW1wbGF0ZU9wdGlvbnMge1xuICByYXc6IEVudHJ5UG9pbnQ7XG59XG5cbmludGVyZmFjZSBSZW5kZXJPcHRpb25zIHtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIGFwcGVuZFRvOiBFbGVtZW50O1xufVxuXG5pbnRlcmZhY2UgRXZhbHVhdGVPcHRpb25zIHtcbiAgbmV4dFNpYmxpbmc/OiBOb2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZSB7XG4gIHN0YXRpYyBmcm9tU3BlYyhzcGVjOiBTZXJpYWxpemVkVGVtcGxhdGUsIGVudjogRW52aXJvbm1lbnQpOiBUZW1wbGF0ZSB7XG4gICAgbGV0IHNjYW5uZXIgPSBuZXcgU2Nhbm5lcihzcGVjLCBlbnYpO1xuICAgIHJldHVybiBuZXcgVGVtcGxhdGUoe1xuICAgICAgcmF3OiBzY2FubmVyLnNjYW5FbnRyeVBvaW50KClcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBsYXlvdXRGcm9tU3BlYyhzcGVjOiBTZXJpYWxpemVkVGVtcGxhdGUsIGVudjogRW52aXJvbm1lbnQpOiBMYXlvdXQge1xuICAgIGxldCBzY2FubmVyID0gbmV3IFNjYW5uZXIoc3BlYywgZW52KTtcbiAgICByZXR1cm4gc2Nhbm5lci5zY2FuTGF5b3V0KCk7XG4gIH1cblxuICByYXc6IEVudHJ5UG9pbnQ7XG4gIG1ldGE6IE9iamVjdDtcblxuICBjb25zdHJ1Y3Rvcih7IHJhdyB9OiBUZW1wbGF0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLnJhdyA9IHJhdztcbiAgfVxuXG4gIHJlbmRlcihzZWxmOiBQYXRoUmVmZXJlbmNlPGFueT4sIGVudjogRW52aXJvbm1lbnQsIHsgZHluYW1pY1Njb3BlLCBhcHBlbmRUbyB9OiBSZW5kZXJPcHRpb25zLCBibG9ja0FyZ3VtZW50czogYW55W109bnVsbCkge1xuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihlbnYsIGFwcGVuZFRvLCBudWxsKTtcbiAgICBsZXQgY29tcGlsZWQgPSB0aGlzLnJhdy5jb21waWxlKGVudik7XG4gICAgbGV0IHZtID0gVk0uaW5pdGlhbChlbnYsIHsgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHNpemU6IGNvbXBpbGVkLnN5bWJvbHMgfSk7XG5cbiAgICByZXR1cm4gdm0uZXhlY3V0ZShjb21waWxlZC5vcHMpO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQWtGYyxlQUFBOztBQVRkLFFBQUksUUFBUSxHQUFHLENBQUMsQ0FBQzs7QUFTSCxhQUFBLGVBQUEsQ0FBMEIsSUFBeUQsRUFBQTtZQUF2RCxFQUFFLEdBQUosSUFBeUQsQ0FBdkQsRUFBRTtZQUFFLElBQUksR0FBVixJQUF5RCxDQUFuRCxJQUFJO1lBQUUsS0FBSyxHQUFqQixJQUF5RCxDQUE3QyxLQUFLOztBQUN2RCxZQUFJLFdBQW9DLFlBQUEsQ0FBQztBQUN6QyxZQUFJLENBQUMsRUFBRSxFQUFFO0FBQ1AsY0FBRSxlQUFhLFFBQVEsRUFBRyxBQUFFLENBQUM7U0FDOUI7QUFDRCxZQUFJLE1BQU0sR0FBRyxVQUFDLEdBQWdCLEVBQUUsT0FBWSxFQUFBO0FBQzFDLGdCQUFJLE9BQU8sR0FBRyxPQUFPLEdBQUcsYUFuRm5CLE1BQU0sQ0FtRm9CLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3pELGdCQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2hCLDJCQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqQztBQUNELG1CQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNoRCxDQUFDO0FBQ0YsZUFBTyxFQUFFLEVBQUUsRUFBRixFQUFFLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxNQUFNLEVBQU4sTUFBTSxFQUFFLENBQUM7S0FDN0I7O0FBRUQsYUFBQSxRQUFBLENBQXFCLEtBQThCLEVBQUUsRUFBVSxFQUFFLElBQU8sRUFBRSxHQUFnQixFQUFBO0FBQ3hGLFlBQUksT0FBTyxHQUFHLHNDQUFZLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsWUFBSSxVQUFzQixZQUFBLENBQUM7QUFDM0IsWUFBSSxZQUFZLEdBQUcsWUFBQTtBQUNqQixnQkFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3ZELG1CQUFPLFVBQVUsQ0FBQztTQUNuQixDQUFDO0FBQ0YsWUFBSSxNQUFjLFlBQUEsQ0FBQztBQUNuQixZQUFJLFFBQVEsR0FBRyxZQUFBO0FBQ2IsZ0JBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMzQyxtQkFBTyxNQUFNLENBQUM7U0FDZixDQUFDO0FBQ0YsWUFBSSxTQUFTLEdBQUcsVUFBQSxPQUFPO21CQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO1NBQUEsQ0FBQztBQUN4RCxZQUFJLE1BQU0sR0FBRyxVQUFDLElBQXdCLEVBQUUsUUFBd0IsRUFBRSxZQUEwQixFQUFBO0FBQzFGLGdCQUFJLFlBQVksR0FBRywwQkF0R2QsWUFBWSxDQXNHZSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RFLGdCQUFJLFFBQVEsR0FBRyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsZ0JBQUksRUFBRSxHQUFHLHFCQXZHSixFQUFFLENBdUdLLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLFlBQVksRUFBWixZQUFZLEVBQUUsWUFBWSxFQUFaLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDdkYsbUJBQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDakMsQ0FBQztBQUNGLGVBQU8sRUFBRSxFQUFFLEVBQUYsRUFBRSxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQVosWUFBWSxFQUFFLFFBQVEsRUFBUixRQUFRLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxNQUFNLEVBQU4sTUFBTSxFQUFFLENBQUM7S0FDL0UiLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9ja1xufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgRW50cnlQb2ludCwgTGF5b3V0LCBQYXJ0aWFsQmxvY2sgfSBmcm9tICcuL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi9zeW1ib2wtdGFibGUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIER5bmFtaWNTY29wZSB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IFZNIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vdm0vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgU2Nhbm5lciBmcm9tICcuL3NjYW5uZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4vZG9tL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIEVudmlyb25tZW50IHNwZWNpZmljIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlPFQ+IHtcbiAgLyoqXG4gICAqIFRlbXBsYXRlIGlkZW50aWZpZXIsIGlmIHByZWNvbXBpbGVkIHdpbGwgYmUgdGhlIGlkIG9mIHRoZVxuICAgKiBwcmVjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIG1ldGEgKGJvdGggY29tcGlsZSB0aW1lIGFuZCBlbnZpcm9ubWVudCBzcGVjaWZpYykuXG4gICAqL1xuICBtZXRhOiBUO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gcmVuZGVyIHRlbXBsYXRlIGFzIHJvb3QgZW50cnkgcG9pbnQuXG4gICAqL1xuICByZW5kZXIoc2VsZjogUGF0aFJlZmVyZW5jZTxhbnk+LCBhcHBlbmRUbzogU2ltcGxlLkVsZW1lbnQsIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlKTogUmVuZGVyUmVzdWx0O1xuXG4gIC8vIGludGVybmFsIGNhc3RzLCB0aGVzZSBhcmUgbGF6aWx5IGNyZWF0ZWQgYW5kIGNhY2hlZFxuICBhc0VudHJ5UG9pbnQoKTogRW50cnlQb2ludDtcbiAgYXNMYXlvdXQoKTogTGF5b3V0O1xuICBhc1BhcnRpYWwoc3ltYm9sczogU3ltYm9sVGFibGUpOiBQYXJ0aWFsQmxvY2s7XG5cbiAgLy8gZXhwb3NlZCBmb3IgdmlzdWFsaXplclxuICBfYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRmFjdG9yeTxULCBVPiB7XG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBpZGVudGlmaWVyLCBpZiBwcmVjb21waWxlZCB3aWxsIGJlIHRoZSBpZCBvZiB0aGVcbiAgICogcHJlY29tcGlsZWQgdGVtcGxhdGUuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb21waWxlIHRpbWUgbWV0YS5cbiAgICovXG4gIG1ldGE6IFQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IHNwZWNpZmljIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKiBvZiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RW52aXJvbm1lbnR9IGVudiBnbGltbWVyIEVudmlyb25tZW50XG4gICAqL1xuICBjcmVhdGUoZW52KTogVGVtcGxhdGU8VD47XG4gIC8qKlxuICAgKiBVc2VkIHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBzcGVjaWZpYyBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICogb2YgdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0Vudmlyb25tZW50fSBlbnYgZ2xpbW1lciBFbnZpcm9ubWVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gbWV0YSBlbnZpcm9ubWVudCBzcGVjaWZpYyBpbmplY3Rpb25zIGludG8gbWV0YVxuICAgKi9cbiAgY3JlYXRlKGVudiwgbWV0YTogVSk6IFRlbXBsYXRlPFQgJiBVPjtcbn1cblxubGV0IGNsaWVudElkID0gMDtcblxuLyoqXG4gKiBXcmFwcyBhIHRlbXBsYXRlIGpzIGluIGEgdGVtcGxhdGUgbW9kdWxlIHRvIGNoYW5nZSBpdCBpbnRvIGEgZmFjdG9yeVxuICogdGhhdCBoYW5kbGVzIGxhenkgcGFyc2luZyB0aGUgdGVtcGxhdGUgYW5kIHRvIGNyZWF0ZSBwZXIgZW52IHNpbmdsZXRvbnNcbiAqIG9mIHRoZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGVtcGxhdGVGYWN0b3J5PFQ+KHNlcmlhbGl6ZWRUZW1wbGF0ZTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxUPik6IFRlbXBsYXRlRmFjdG9yeTxULCBUPjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRlbXBsYXRlRmFjdG9yeTxULCBVPihzZXJpYWxpemVkVGVtcGxhdGU6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2s8VD4pOiBUZW1wbGF0ZUZhY3Rvcnk8VCwgVT47XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZCwgbWV0YSwgYmxvY2sgfTogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jazxhbnk+KTogVGVtcGxhdGVGYWN0b3J5PHt9LCB7fT4ge1xuICBsZXQgcGFyc2VkQmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrO1xuICBpZiAoIWlkKSB7XG4gICAgaWQgPSBgY2xpZW50LSR7Y2xpZW50SWQgKyt9YDtcbiAgfVxuICBsZXQgY3JlYXRlID0gKGVudjogRW52aXJvbm1lbnQsIGVudk1ldGE/OiB7fSkgPT4ge1xuICAgIGxldCBuZXdNZXRhID0gZW52TWV0YSA/IGFzc2lnbih7fSwgZW52TWV0YSwgbWV0YSkgOiBtZXRhO1xuICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZShwYXJzZWRCbG9jaywgaWQsIG5ld01ldGEsIGVudik7XG4gIH07XG4gIHJldHVybiB7IGlkLCBtZXRhLCBjcmVhdGUgfTtcbn1cblxuZnVuY3Rpb24gdGVtcGxhdGU8VD4oYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCBpZDogc3RyaW5nLCBtZXRhOiBULCBlbnY6IEVudmlyb25tZW50KTogVGVtcGxhdGU8VD4ge1xuICBsZXQgc2Nhbm5lciA9IG5ldyBTY2FubmVyKGJsb2NrLCBtZXRhLCBlbnYpO1xuICBsZXQgZW50cnlQb2ludDogRW50cnlQb2ludDtcbiAgbGV0IGFzRW50cnlQb2ludCA9ICgpID0+IHtcbiAgICBpZiAoIWVudHJ5UG9pbnQpIGVudHJ5UG9pbnQgPSBzY2FubmVyLnNjYW5FbnRyeVBvaW50KCk7XG4gICAgcmV0dXJuIGVudHJ5UG9pbnQ7XG4gIH07XG4gIGxldCBsYXlvdXQ6IExheW91dDtcbiAgbGV0IGFzTGF5b3V0ID0gKCkgPT4ge1xuICAgIGlmICghbGF5b3V0KSBsYXlvdXQgPSBzY2FubmVyLnNjYW5MYXlvdXQoKTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9O1xuICBsZXQgYXNQYXJ0aWFsID0gc3ltYm9scyA9PiBzY2FubmVyLnNjYW5QYXJ0aWFsKHN5bWJvbHMpO1xuICBsZXQgcmVuZGVyID0gKHNlbGY6IFBhdGhSZWZlcmVuY2U8YW55PiwgYXBwZW5kVG86IFNpbXBsZS5FbGVtZW50LCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSkgPT4ge1xuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihlbnYsIGFwcGVuZFRvLCBudWxsKTtcbiAgICBsZXQgY29tcGlsZWQgPSBhc0VudHJ5UG9pbnQoKS5jb21waWxlKGVudik7XG4gICAgbGV0IHZtID0gVk0uaW5pdGlhbChlbnYsIHsgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHNpemU6IGNvbXBpbGVkLnN5bWJvbHMgfSk7XG4gICAgcmV0dXJuIHZtLmV4ZWN1dGUoY29tcGlsZWQub3BzKTtcbiAgfTtcbiAgcmV0dXJuIHsgaWQsIG1ldGEsIF9ibG9jazogYmxvY2ssIGFzRW50cnlQb2ludCwgYXNMYXlvdXQsIGFzUGFydGlhbCwgcmVuZGVyIH07XG59XG4iXX0= enifed('glimmer-runtime/lib/upsert', ['exports', 'glimmer-runtime/lib/bounds'], function (exports, _glimmerRuntimeLibBounds) { 'use strict'; exports.isSafeString = isSafeString; exports.isNode = isNode; exports.isString = isString; exports.cautiousInsert = cautiousInsert; exports.trustingInsert = trustingInsert; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - function isSafeString(value) { return value && typeof value['toHTML'] === 'function'; } function isNode(value) { @@ -22000,12 +22577,10 @@ function isString(value) { return typeof value === 'string'; } var Upsert = function Upsert(bounds) { - _classCallCheck(this, Upsert); - this.bounds = bounds; }; exports.default = Upsert; @@ -22029,25 +22604,24 @@ return NodeUpsert.insert(dom, cursor, value); } } var TextUpsert = (function (_Upsert) { - _inherits(TextUpsert, _Upsert); + babelHelpers.inherits(TextUpsert, _Upsert); - function TextUpsert(bounds, textNode) { - _classCallCheck(this, TextUpsert); - - _Upsert.call(this, bounds); - this.textNode = textNode; - } - TextUpsert.insert = function insert(dom, cursor, value) { - var textNode = dom.insertTextBefore(cursor.element, cursor.nextSibling, 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); }; + function TextUpsert(bounds, textNode) { + _Upsert.call(this, bounds); + this.textNode = textNode; + } + TextUpsert.prototype.update = function update(dom, value) { if (isString(value)) { var textNode = this.textNode; textNode.nodeValue = value; @@ -22059,20 +22633,18 @@ return TextUpsert; })(Upsert); var HTMLUpsert = (function (_Upsert2) { - _inherits(HTMLUpsert, _Upsert2); + babelHelpers.inherits(HTMLUpsert, _Upsert2); function HTMLUpsert() { - _classCallCheck(this, HTMLUpsert); - _Upsert2.apply(this, arguments); } HTMLUpsert.insert = function insert(dom, cursor, value) { - var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, value); + var bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling); return new HTMLUpsert(bounds); }; HTMLUpsert.prototype.update = function update(dom, value) { if (isString(value)) { @@ -22089,22 +22661,20 @@ return HTMLUpsert; })(Upsert); var SafeStringUpsert = (function (_Upsert3) { - _inherits(SafeStringUpsert, _Upsert3); + babelHelpers.inherits(SafeStringUpsert, _Upsert3); function SafeStringUpsert(bounds, lastStringValue) { - _classCallCheck(this, SafeStringUpsert); - _Upsert3.call(this, bounds); this.lastStringValue = lastStringValue; } SafeStringUpsert.insert = function insert(dom, cursor, value) { var stringValue = value.toHTML(); - var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, stringValue); + var bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling); return new SafeStringUpsert(bounds, stringValue); }; SafeStringUpsert.prototype.update = function update(dom, value) { if (isSafeString(value)) { @@ -22125,21 +22695,19 @@ return SafeStringUpsert; })(Upsert); var NodeUpsert = (function (_Upsert4) { - _inherits(NodeUpsert, _Upsert4); + babelHelpers.inherits(NodeUpsert, _Upsert4); function NodeUpsert() { - _classCallCheck(this, NodeUpsert); - _Upsert4.apply(this, arguments); } NodeUpsert.insert = function insert(dom, cursor, node) { - var bounds = dom.insertNodeBefore(cursor.element, node, cursor.nextSibling); - return new NodeUpsert(bounds); + 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; @@ -22154,40 +22722,28 @@ }; return NodeUpsert; })(Upsert); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQVFBLGFBQUEsWUFBQSxDQUE2QixLQUFhLEVBQUE7QUFDeEMsZUFBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3ZEOztBQUVELGFBQUEsTUFBQSxDQUF1QixLQUFhLEVBQUE7QUFDbEMsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLENBQUM7S0FDN0Y7O0FBRUQsYUFBQSxRQUFBLENBQXlCLEtBQWEsRUFBQTtBQUNwQyxlQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztLQUNsQzs7UUFNRCxNQUFBLEdBQ0UsU0FERixNQUFBLENBQ3FCLE1BQWMsRUFBQTs4QkFEbkMsTUFBQTs7QUFDcUIsWUFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQVE7S0FDaEM7O3NCQUtZLE1BQU07O0FBRXJCLGFBQUEsY0FBQSxDQUErQixHQUFjLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDckYsWUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbkIsbUJBQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzlDO0FBQ0QsWUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdkIsbUJBQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEQ7QUFDRCxZQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNqQixtQkFBTyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDOUM7S0FDRjs7QUFF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QUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUUsbUJBQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7O0FBSkgsa0JBQUEsV0FNRSxNQUFNLEdBQUEsZ0JBQUMsR0FBYyxFQUFFLEtBQWdCLEVBQUE7QUFDckMsZ0JBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFFWixvQkFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzNDLG9CQUFJLFdBQVcsR0FBRyx5QkEzSW1CLEtBQUssQ0EySWxCLE1BQU0sQ0FBQyxDQUFDO0FBRWhDLG9CQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXRFLHVCQUFPLElBQUksQ0FBQzthQUNiLE1BQU07QUFDTCx1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGOztlQW5CSCxVQUFBO09BQXlCLE1BQU0iLCJmaWxlIjoidXBzZXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IERPTUhlbHBlciB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgeyBCb3VuZHMsIEN1cnNvciwgU2luZ2xlTm9kZUJvdW5kcywgY2xlYXIgfSBmcm9tICcuL2JvdW5kcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZVN0cmluZyB7XG4gIHRvSFRNTCgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIFNhZmVTdHJpbmcge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlWyd0b0hUTUwnXSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgTm9kZSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZVsnbm9kZVR5cGUnXSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogT3BhcXVlKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCB0eXBlIEluc2VydGlvbiA9IENhdXRpb3VzSW5zZXJ0aW9uIHwgVHJ1c3RpbmdJbnNlcnRpb247XG5leHBvcnQgdHlwZSBDYXV0aW91c0luc2VydGlvbiA9IHN0cmluZyB8IFNhZmVTdHJpbmcgfCBOb2RlO1xuZXhwb3J0IHR5cGUgVHJ1c3RpbmdJbnNlcnRpb24gPSBzdHJpbmcgfCBOb2RlO1xuXG5hYnN0cmFjdCBjbGFzcyBVcHNlcnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgYm91bmRzOiBCb3VuZHMpIHtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShkb206IERPTUhlbHBlciwgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbTogRE9NSGVscGVyLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIEhUTUxVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBzdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5pbnNlcnRUZXh0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBjdXJzb3IubmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihib3VuZHM6IEJvdW5kcywgcHJpdmF0ZSB0ZXh0Tm9kZTogVGV4dCkge1xuICAgIHN1cGVyKGJvdW5kcyk7XG4gIH1cblxuICB1cGRhdGUoZG9tOiBET01IZWxwZXIsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01IZWxwZXIsIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZywgdmFsdWUpO1xuICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NSGVscGVyLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuXG4gICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NSGVscGVyLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFNhZmVTdHJpbmcpOiBVcHNlcnQge1xuICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgY3Vyc29yLm5leHRTaWJsaW5nLCBzdHJpbmdWYWx1ZSk7XG4gICAgcmV0dXJuIG5ldyBTYWZlU3RyaW5nVXBzZXJ0KGJvdW5kcywgc3RyaW5nVmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYm91bmRzOiBCb3VuZHMsIHByaXZhdGUgbGFzdFN0cmluZ1ZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NSGVscGVyLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuXG4gICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBOb2RlVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTUhlbHBlciwgY3Vyc29yOiBDdXJzb3IsIG5vZGU6IE5vZGUpOiBVcHNlcnQge1xuICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUhlbHBlciwgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXBzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVNLGFBQUEsWUFBQSxDQUF1QixLQUFhLEVBQUE7QUFDeEMsZUFBTyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3ZEOztBQUVLLGFBQUEsTUFBQSxDQUFpQixLQUFhLEVBQUE7QUFDbEMsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLENBQUM7S0FDN0Y7O0FBRUssYUFBQSxRQUFBLENBQW1CLEtBQWEsRUFBQTtBQUNwQyxlQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztLQUNsQzs7UUFNRCxNQUFBLEdBQ0UsU0FERixNQUFBLENBQ3FCLE1BQWMsRUFBQTtBQUFkLFlBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFRO0tBQ2hDOztzQkFLWSxNQUFNOztBQUVmLGFBQUEsY0FBQSxDQUF5QixHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQy9GLFlBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ25CLG1CQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QztBQUNELFlBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLG1CQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BEO0FBQ0QsWUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsbUJBQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzlDO0tBQ0Y7O0FBRUssYUFBQSxjQUFBLENBQXlCLEdB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QUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMzRCxtQkFBTyxJQUFJLFVBQVUsQ0FBQyx5QkF2SWlCLE1BQU0sQ0F1SWhCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyRDs7QUFKSCxrQkFBaUIsV0FNZixNQUFNLEdBQUEsZ0JBQUMsR0FBZSxFQUFFLEtBQWdCLEVBQUE7QUFDdEMsZ0JBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFFWixvQkFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzNDLG9CQUFJLFdBQVcsR0FBRyx5QkEvSTJCLEtBQUssQ0ErSTFCLE1BQU0sQ0FBQyxDQUFDO0FBRWhDLG9CQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUF5QyxFQUFFLEtBQUssRUFBRSxXQUFvQyxDQUFDLENBQUM7QUFFM0gsdUJBQU8sSUFBSSxDQUFDO2FBQ2IsTUFBTTtBQUNMLHVCQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7O2VBbkJILFVBQWlCO09BQVEsTUFBTSIsImZpbGUiOiJ1cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcywgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi9kb20vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGSVhfUkVJRklDQVRJT04gfSBmcm9tICcuL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvdW5kcywgQ3Vyc29yLCBTaW5nbGVOb2RlQm91bmRzLCBzaW5nbGUsIGNsZWFyIH0gZnJvbSAnLi9ib3VuZHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiBPcGFxdWUpOiB2YWx1ZSBpcyBTYWZlU3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZVsndG9IVE1MJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIE5vZGUge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWVbJ25vZGVUeXBlJ10gPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IE9wYXF1ZSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgdHlwZSBJbnNlcnRpb24gPSBDYXV0aW91c0luc2VydGlvbiB8IFRydXN0aW5nSW5zZXJ0aW9uO1xuZXhwb3J0IHR5cGUgQ2F1dGlvdXNJbnNlcnRpb24gPSBzdHJpbmcgfCBTYWZlU3RyaW5nIHwgTm9kZTtcbmV4cG9ydCB0eXBlIFRydXN0aW5nSW5zZXJ0aW9uID0gc3RyaW5nIHwgTm9kZTtcblxuYWJzdHJhY3QgY2xhc3MgVXBzZXJ0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGJvdW5kczogQm91bmRzKSB7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGUoZG9tOiBET01DaGFuZ2VzLCB2YWx1ZTogSW5zZXJ0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuXG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IHN0cmluZyk6IFVwc2VydCB7XG4gICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICBwcml2YXRlIHRleHROb2RlOiBUZXh0O1xuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCB0ZXh0Tm9kZTogU2ltcGxlLlRleHQpIHtcbiAgICBzdXBlcihib3VuZHMpO1xuICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZSBhcyBUZXh0O1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgc3RhdGljIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogc3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcblxuICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50IGFzIEZJWF9SRUlGSUNBVElPTjxFbGVtZW50PiwgbmV4dFNpYmxpbmcgYXMgRklYX1JFSUZJQ0FUSU9OPE5vZGU+LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICBzdGF0aWMgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBTYWZlU3RyaW5nKTogVXBzZXJ0IHtcbiAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJvdW5kczogQm91bmRzLCBwcml2YXRlIGxhc3RTdHJpbmdWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYm91bmRzKTtcbiAgfVxuXG4gIHVwZGF0ZShkb206IERPTUNoYW5nZXMsIHZhbHVlOiBJbnNlcnRpb24pOiBib29sZWFuIHtcbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG5cbiAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcblxuICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQgYXMgRklYX1JFSUZJQ0FUSU9OPEVsZW1lbnQ+LCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4sIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gIHN0YXRpYyBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgbm9kZTogU2ltcGxlLk5vZGUpOiBVcHNlcnQge1xuICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICB9XG5cbiAgdXBkYXRlKGRvbTogRE9NQ2hhbmdlcywgdmFsdWU6IEluc2VydGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG5cbiAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG5cbiAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCBhcyBGSVhfUkVJRklDQVRJT048RWxlbWVudD4sIHZhbHVlLCBuZXh0U2libGluZyBhcyBGSVhfUkVJRklDQVRJT048Tm9kZT4pO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/utils', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) { 'use strict'; - exports.symbol = symbol; exports.turbocharge = turbocharge; - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var EMPTY_ARRAY = []; + var EMPTY_ARRAY = Object.freeze([]); exports.EMPTY_ARRAY = EMPTY_ARRAY; - var EMPTY_OBJECT = {}; - exports.EMPTY_OBJECT = EMPTY_OBJECT; - var KEY = _glimmerUtil.intern('__glimmer' + +new Date()); + var EMPTY_DICT = Object.freeze(_glimmerUtil.dict()); + exports.EMPTY_DICT = EMPTY_DICT; - function symbol(debugName) { - var num = Math.floor(Math.random() * +new Date()); - return _glimmerUtil.intern(debugName + ' [id=' + KEY + num + ']'); - } - function turbocharge(object) { // function Constructor() {} // Constructor.prototype = object; return object; } var ListRange = (function () { function ListRange(list, start, end) { - _classCallCheck(this, ListRange); - this.list = list; this.start = start; this.end = end; } @@ -22207,35 +22763,30 @@ return ListRange; })(); exports.ListRange = ListRange; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFTyxRQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7O0FBQ3ZCLFFBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQzs7QUFFL0IsUUFBTSxHQUFHLEdBQUcsYUFMSCxNQUFNLGVBS2dCLENBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBRyxDQUFDOztBQUUvQyxhQUFBLE1BQUEsQ0FBdUIsU0FBUyxFQUFBO0FBQzlCLFlBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQUFBQyxDQUFDLENBQUM7QUFDcEQsZUFBTyxhQVRBLE1BQU0sQ0FTSSxTQUFTLGFBQVEsR0FBRyxHQUFHLEdBQUcsT0FBSSxDQUFDO0tBQ2pEOztBQUVELGFBQUEsV0FBQSxDQUE0QixNQUFjLEVBQUE7OztBQUd4QyxlQUFPLE1BQU0sQ0FBQztLQUNmOztRQW9CRCxTQUFBO0FBT0UsaUJBUEYsU0FBQSxDQU9jLElBQVMsRUFBRSxLQUFhLEVBQUUsR0FBVyxFQUFBO2tDQVBuRCxTQUFBOztBQVFJLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQ2hCOztBQVhILGlCQUFBLFdBYUUsRUFBRSxHQUFBLFlBQUMsS0FBYSxFQUFBO0FBQ2QsZ0JBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQzNDLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O0FBaEJILGlCQUFBLFdBa0JFLEdBQUcsR0FBQSxlQUFBO0FBQ0QsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjs7QUFwQkgsaUJBQUEsV0FzQkUsR0FBRyxHQUFBLGVBQUE7QUFDRCxtQkFBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2pCOztlQXhCSCxTQUFBIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZXJuIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0FSUkFZID0gW107XG5leHBvcnQgY29uc3QgRU1QVFlfT0JKRUNUID0ge307XG5cbmNvbnN0IEtFWSA9IGludGVybihgX19nbGltbWVyJHsrIG5ldyBEYXRlKCl9YCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW1ib2woZGVidWdOYW1lKTogc3RyaW5nIHtcbiAgbGV0IG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgrbmV3IERhdGUoKSkpO1xuICByZXR1cm4gaW50ZXJuKGAke2RlYnVnTmFtZX0gW2lkPSR7S0VZfSR7bnVtfV1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlKG9iamVjdDogT2JqZWN0KTogT2JqZWN0IHtcbiAgLy8gZnVuY3Rpb24gQ29uc3RydWN0b3IoKSB7fVxuICAvLyBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBvYmplY3Q7XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmludGVyZmFjZSBFbnVtZXJhYmxlQ2FsbGJhY2s8VD4ge1xuICAoaXRlbTogVCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bWVyYWJsZTxUPiB7XG4gIGZvckVhY2goY2FsbGJhY2s6IEVudW1lcmFibGVDYWxsYmFjazxUPik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJveWFibGUge1xuICBkZXN0cm95KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2U8VD4ge1xuICBtaW4oKTogbnVtYmVyO1xuICBtYXgoKTogbnVtYmVyO1xuICBhdChpbmRleDogbnVtYmVyKTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RSYW5nZTxUPiBpbXBsZW1lbnRzIFJhbmdlPFQ+IHtcbiAgcHJpdmF0ZSBsaXN0OiBUW107XG5cbiAgLy8gW3N0YXJ0LCBlbmRdXG4gIHByaXZhdGUgc3RhcnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBlbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihsaXN0OiBUW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBhdChpbmRleDogbnVtYmVyKTogVCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMubGlzdC5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLmxpc3RbaW5kZXhdO1xuICB9XG5cbiAgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQ7XG4gIH1cblxuICBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lbmQ7XG4gIH1cbn0iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVPLFFBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7O0FBQ3RDLFFBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFIL0IsSUFBSSxFQUdzQyxDQUFDLENBQUM7OztBQUUvQyxhQUFBLFdBQUEsQ0FBc0IsTUFBYyxFQUFBOzs7QUFHeEMsZUFBTyxNQUFNLENBQUM7S0FDZjs7UUFvQkssU0FBQTtBQU9KLGlCQVBJLFNBQUEsQ0FPUSxJQUFTLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBQTtBQUMvQyxnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUNoQjs7QUFYRyxpQkFBQSxXQWFKLEVBQUUsR0FBQSxZQUFDLEtBQWEsRUFBQTtBQUNkLGdCQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksQ0FBQztBQUMzQyxtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCOztBQWhCRyxpQkFBQSxXQWtCSixHQUFHLEdBQUEsZUFBQTtBQUNELG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7O0FBcEJHLGlCQUFBLFdBc0JKLEdBQUcsR0FBQSxlQUFBO0FBQ0QsbUJBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNqQjs7ZUF4QkcsU0FBQSIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQVJSQVkgPSBPYmplY3QuZnJlZXplKFtdKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9ESUNUID0gT2JqZWN0LmZyZWV6ZShkaWN0PGFueT4oKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZShvYmplY3Q6IE9iamVjdCk6IE9iamVjdCB7XG4gIC8vIGZ1bmN0aW9uIENvbnN0cnVjdG9yKCkge31cbiAgLy8gQ29uc3RydWN0b3IucHJvdG90eXBlID0gb2JqZWN0O1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5pbnRlcmZhY2UgRW51bWVyYWJsZUNhbGxiYWNrPFQ+IHtcbiAgKGl0ZW06IFQpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1lcmFibGU8VD4ge1xuICBmb3JFYWNoKGNhbGxiYWNrOiBFbnVtZXJhYmxlQ2FsbGJhY2s8VD4pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlIHtcbiAgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlPFQ+IHtcbiAgbWluKCk6IG51bWJlcjtcbiAgbWF4KCk6IG51bWJlcjtcbiAgYXQoaW5kZXg6IG51bWJlcik6IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UmFuZ2U8VD4gaW1wbGVtZW50cyBSYW5nZTxUPiB7XG4gIHByaXZhdGUgbGlzdDogVFtdO1xuXG4gIC8vIFtzdGFydCwgZW5kXVxuICBwcml2YXRlIHN0YXJ0OiBudW1iZXI7XG4gIHByaXZhdGUgZW5kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobGlzdDogVFtdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICAgIHRoaXMubGlzdCA9IGxpc3Q7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcik6IFQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLmxpc3QubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5saXN0W2luZGV4XTtcbiAgfVxuXG4gIG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0O1xuICB9XG5cbiAgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZW5kO1xuICB9XG59XG4iXX0= 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'; exports.VM = _glimmerRuntimeLibVmAppend.default; exports.PublicVM = _glimmerRuntimeLibVmAppend.PublicVM; - exports.BindDynamicScopeCallback = _glimmerRuntimeLibVmAppend.BindDynamicScopeCallback; exports.UpdatingVM = _glimmerRuntimeLibVmUpdate.default; exports.RenderResult = _glimmerRuntimeLibVmRenderResult.default; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1VBQW9CLEVBQUUsOEJBQWIsT0FBTztVQUFRLFFBQVEsOEJBQVIsUUFBUTtVQUFFLHdCQUF3Qiw4QkFBeEIsd0JBQXdCO1VBQ3RDLFVBQVUsOEJBQXJCLE9BQU87VUFDSSxZQUFZLG9DQUF2QixPQUFPIiwiZmlsZSI6InZtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBWTSwgUHVibGljVk0sIEJpbmREeW5hbWljU2NvcGVDYWxsYmFjayB9IGZyb20gJy4vdm0vYXBwZW5kJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVXBkYXRpbmdWTSB9IGZyb20gJy4vdm0vdXBkYXRlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVuZGVyUmVzdWx0IH0gZnJvbSAnLi92bS9yZW5kZXItcmVzdWx0JztcbiJdfQ== +//# 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'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var VM = (function () { function VM(_ref) { var env = _ref.env; var scope = _ref.scope; var dynamicScope = _ref.dynamicScope; var elementStack = _ref.elementStack; - _classCallCheck(this, VM); - 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(); @@ -22258,12 +22809,11 @@ VM.prototype.capture = function capture() { return { env: this.env, scope: this.scope(), - dynamicScope: this.dynamicScope(), - block: this.stack().block() + dynamicScope: this.dynamicScope() }; }; VM.prototype.goto = function goto(op) { // assert(this.frame.getOps().contains(op), `Illegal jump to ${op.label}`); @@ -22293,31 +22843,31 @@ opcodes.append(END); }; VM.prototype.enter = function enter(ops) { var updating = new _glimmerUtil.LinkedList(); - this.stack().pushBlock(); + var tracker = this.stack().pushUpdatableBlock(); var state = this.capture(); - var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode({ ops: ops, state: state, children: updating }); + var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, updating); this.didEnter(tryOpcode, updating); }; VM.prototype.enterWithKey = function enterWithKey(key, ops) { var updating = new _glimmerUtil.LinkedList(); - this.stack().pushBlock(); + var tracker = this.stack().pushUpdatableBlock(); var state = this.capture(); - var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode({ ops: ops, state: state, children: updating }); + var tryOpcode = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, updating); this.listBlockStack.current.map[key] = tryOpcode; this.didEnter(tryOpcode, updating); }; VM.prototype.enterList = function enterList(ops) { var updating = new _glimmerUtil.LinkedList(); - this.stack().pushBlockList(updating); + var tracker = this.stack().pushBlockList(updating); var state = this.capture(); var artifacts = this.frame.getIterator().artifacts; - var opcode = new _glimmerRuntimeLibVmUpdate.ListBlockOpcode({ ops: ops, state: state, children: updating, artifacts: artifacts }); + var opcode = new _glimmerRuntimeLibVmUpdate.ListBlockOpcode(ops, state, tracker, updating, artifacts); this.listBlockStack.push(opcode); this.didEnter(opcode, updating); }; VM.prototype.didEnter = function didEnter(opcode, updating) { @@ -22363,10 +22913,17 @@ 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.popFrame = function popFrame() { @@ -22384,11 +22941,13 @@ VM.prototype.pushCallerScope = function pushCallerScope() { this.scopeStack.push(this.scope().getCallerScope()); }; VM.prototype.pushDynamicScope = function pushDynamicScope() { - this.dynamicScopeStack.push(this.dynamicScopeStack.current.child()); + 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); @@ -22428,11 +22987,11 @@ var elementStack = this.elementStack; var frame = this.frame; var updatingOpcodeStack = this.updatingOpcodeStack; var env = this.env; - elementStack.pushBlock(); + elementStack.pushSimpleBlock(); updatingOpcodeStack.push(new _glimmerUtil.LinkedList()); frame.push(opcodes); if (initialize) initialize(this); var opcode = undefined; while (frame.hasOpcodes()) { @@ -22460,17 +23019,12 @@ VM.prototype.invokeBlock = function invokeBlock(block, args) { var compiled = block.compile(this.env); this.pushFrame({ block: compiled, args: args }); }; - VM.prototype.invokeLayout = function invokeLayout(_ref4) { - var args = _ref4.args; - var layout = _ref4.layout; - var templates = _ref4.templates; - var callerScope = _ref4.callerScope; - - this.pushFrame({ block: layout, blocks: templates, callerScope: callerScope, args: args }); + 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)); }; @@ -22478,86 +23032,96 @@ 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(entries) { + VM.prototype.bindPositionalArgs = function bindPositionalArgs(symbols) { var args = this.frame.getArgs(); - if (!args) return; + _glimmerUtil.assert(args, "Cannot bind positional args"); var positional = args.positional; var scope = this.scope(); - for (var i = 0; i < entries.length; i++) { - scope.bindSymbol(entries[i], positional.at(i)); + for (var i = 0; i < symbols.length; i++) { + scope.bindSymbol(symbols[i], positional.at(i)); } }; - VM.prototype.bindNamedArgs = function bindNamedArgs(entries) { + VM.prototype.bindNamedArgs = function bindNamedArgs(names, symbols) { var args = this.frame.getArgs(); - if (!args) return; + _glimmerUtil.assert(args, "Cannot bind named args"); var named = args.named; - var keys = Object.keys(entries); var scope = this.scope(); - for (var i = 0; i < keys.length; i++) { - scope.bindSymbol(entries[keys[i]], named.get(keys[i])); + for (var i = 0; i < names.length; i++) { + scope.bindSymbol(symbols[i], named.get(names[i])); } }; - VM.prototype.bindBlocks = function bindBlocks(entries) { + VM.prototype.bindBlocks = function bindBlocks(names, symbols) { var blocks = this.frame.getBlocks(); var callerScope = this.frame.getCallerScope(); var scope = this.scope(); scope.bindCallerScope(callerScope); - Object.keys(entries).forEach(function (name) { - scope.bindBlock(entries[name], blocks && blocks[name] || null); - }); + for (var i = 0; i < names.length; i++) { + scope.bindBlock(symbols[i], blocks && blocks[names[i]] || null); + } }; - VM.prototype.bindDynamicScope = function bindDynamicScope(callback) { - callback(this, this.dynamicScope()); + 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBaUVBLEVBQUE7QUFlRSxpQkFmRixFQUFBLENBZWMsSUFBZ0UsRUFBQTtnQkFBOUQsR0FBRyxHQUFMLElBQWdFLENBQTlELEdBQUc7Z0JBQUUsS0FBSyxHQUFaLElBQWdFLENBQXpELEtBQUs7Z0JBQUUsWUFBWSxHQUExQixJQUFnRSxDQUFsRCxZQUFZO2dCQUFFLFlBQVksR0FBeEMsSUFBZ0UsQ0FBcEMsWUFBWTs7a0NBZnRELEVBQUE7O0FBRVUsZ0JBQUEsQ0FBQSxpQkFBaUIsR0FBRyxpQkFqRUYsS0FBSyxFQWlFc0IsQ0FBQztBQUM5QyxnQkFBQSxDQUFBLFVBQVUsR0FBRyxpQkFsRUssS0FBSyxFQWtFUSxDQUFDO0FBRWpDLGdCQUFBLENBQUEsbUJBQW1CLEdBQUcsaUJBcEVILEtBQUssRUFvRXFDLENBQUM7QUFDOUQsZ0JBQUEsQ0FBQSxXQUFXLEdBQUcsaUJBckVLLEtBQUssRUFxRWlCLENBQUM7QUFDMUMsZ0JBQUEsQ0FBQSxjQUFjLEdBQUcsaUJBdEVFLEtBQUssRUFzRXFCLENBQUM7QUFDOUMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsOEJBMURSLFVBQVUsRUEwRGMsQ0FBQztBQVE5QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDakMsZ0JBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLGdCQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNDOztBQXBCSCxVQUFBLENBVVMsT0FBTyxHQUFBLGlCQUFDLEdBQWdCLEVBQUUsS0FBNEQsRUFBQTtnQkFBMUQsWUFBWSxHQUFkLEtBQTRELENBQTFELFlBQVk7Z0JBQUUsSUFBSSxHQUFwQixLQUE0RCxDQUE1QyxJQUFJO2dCQUFF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QkFBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4RTtTQUNGOztBQTNSSCxVQUFBLFdBNlJFLFVBQVUsR0FBQSxvQkFBQyxPQUFxQixFQUFBO0FBQzlCLGdCQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3BDLGdCQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBRTlDLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFekIsaUJBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbkMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsSUFBSSxFQUFBO0FBQy9CLHFCQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxBQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUssSUFBSSxDQUFDLENBQUM7YUFDbEUsQ0FBQyxDQUFDO1NBQ0o7O0FBeFNILFVBQUEsV0EwU0UsZ0JBQWdCLEdBQUEsMEJBQUMsUUFBa0MsRUFBQTtBQUNqRCxvQkFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUNyQzs7ZUE1U0gsRUFBQTs7O3NCQUFBLEVBQUEiLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlLCBEaWN0LCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBMT0dHRVIsIEludGVybmVkU3RyaW5nLCBPcGFxdWUgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IsIGNvbWJpbmVTbGljZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCBUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZXMgfSBmcm9tICcuLi9zeW50YXgvY29yZSc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jaywgQ29tcGlsZWRCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE9wY29kZSwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgUmFuZ2UgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IFZNU3RhdGUsIExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlLCBCbG9ja09wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCB7IEZyYW1lU3RhY2ssIEJsb2NrcyB9IGZyb20gJy4vZnJhbWUnO1xuXG5pbnRlcmZhY2UgVk1Jbml0aWFsT3B0aW9ucyB7XG4gIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrO1xuICBzaXplOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBWTUNvbnN0cnVjdG9yT3B0aW9ucyB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHNjb3BlOiBTY29wZTtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrO1xufVxuXG5pbnRlcmZhY2UgUmVnaXN0ZXJzIHtcbiAgb3BlcmFuZDogUGF0aFJlZmVyZW5jZTxhbnk+O1xuICBhcmdzOiBFdmFsdWF0ZWRBcmdzO1xuICBjb25kaXRpb246IFBhdGhSZWZlcmVuY2U8Ym9vbGVhbj47XG4gIGl0ZXJhdG9yOiBSZWZlcmVuY2VJdGVyYXRvcjtcbiAga2V5OiBJbnRlcm5lZFN0cmluZztcbiAgdGVtcGxhdGVzOiBEaWN0PFRlbXBsYXRlPjtcbn1cblxuaW50ZXJmYWNlIEludm9rZUxheW91dE9wdGlvbnMge1xuICBhcmdzOiBFdmFsdWF0ZWRBcmdzO1xuICBzaGFkb3c6IEludGVybmVkU3RyaW5nW107XG4gIGxheW91dDogQ29tcGlsZWRCbG9jaztcbiAgdGVtcGxhdGVzOiBUZW1wbGF0ZXM7XG4gIGNhbGxlclNjb3BlOiBTY29wZTtcbn1cblxuaW50ZXJmYWNlIFB1c2hGcmFtZU9wdGlvbnMge1xuICBibG9jazogQ29tcGlsZWRCbG9jaztcbiAgYXJncz86IEV2YWx1YXRlZEFyZ3M7XG4gIGJsb2Nrcz86IEJsb2NrcztcbiAgY2FsbGVyU2NvcGU/OiBTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncztcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTtcbn1cblxudHlwZSBPcExpc3QgPSBSYW5nZTxPcGNvZGU+O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2s8RHluYW1pY1Njb3BlPigpO1xuICBwcml2YXRlIHNjb3BlU3RhY2sgPSBuZXcgU3RhY2s8U2NvcGU+KCk7XG4gIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2s7XG4gIHB1YmxpYyB1cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrPExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+PigpO1xuICBwdWJsaWMgY2FjaGVHcm91cHMgPSBuZXcgU3RhY2s8VXBkYXRpbmdPcGNvZGU+KCk7XG4gIHB1YmxpYyBsaXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjazxMaXN0QmxvY2tPcGNvZGU+KCk7XG4gIHB1YmxpYyBmcmFtZSA9IG5ldyBGcmFtZVN0YWNrKCk7XG5cbiAgc3RhdGljIGluaXRpYWwoZW52OiBFbnZpcm9ubWVudCwgeyBlbGVtZW50U3RhY2ssIHNlbGYsIGR5bmFtaWNTY29wZSwgc2l6ZSB9OiBWTUluaXRpYWxPcHRpb25zKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBzaXplKTtcbiAgICByZXR1cm4gbmV3IFZNKHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2sgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrIH06IFZNQ29uc3RydWN0b3JPcHRpb25zKSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBWTVN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICBibG9jazogdGhpcy5zdGFjaygpLmJsb2NrKClcbiAgICB9O1xuICB9XG5cbiAgZ290byhvcDogTGFiZWxPcGNvZGUpIHtcbiAgICAvLyBhc3NlcnQodGhpcy5mcmFtZS5nZXRPcHMoKS5jb250YWlucyhvcCksIGBJbGxlZ2FsIGp1bXAgdG8gJHtvcC5sYWJlbH1gKTtcbiAgICB0aGlzLmZyYW1lLmdvdG8ob3ApO1xuICB9XG5cbiAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC50YWlsKCkpO1xuICB9XG5cbiAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgIC8vICAgICAgICAoaGVhZClcbiAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgLy8gICAgICAgICh0YWlsKVxuICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuXG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQ7XG4gICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG5cbiAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUoeyB0YWcsIHRhcmdldDogRU5EIH0pO1xuXG4gICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoeyB0YXJnZXQ6IGd1YXJkIH0pKTtcbiAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICB9XG5cbiAgZW50ZXIob3BzOiBPcFNlcSkge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgdGhpcy5zdGFjaygpLnB1c2hCbG9jaygpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUoeyBvcHMsIHN0YXRlLCBjaGlsZHJlbjogdXBkYXRpbmcgfSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJXaXRoS2V5KGtleTogSW50ZXJuZWRTdHJpbmcsIG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIHRoaXMuc3RhY2soKS5wdXNoQmxvY2soKTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHsgb3BzLCBzdGF0ZSwgY2hpbGRyZW46IHVwZGF0aW5nIH0pO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50Lm1hcFs8c3RyaW5nPmtleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIHRoaXMuc3RhY2soKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5mcmFtZS5nZXRJdGVyYXRvcigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHsgb3BzLCBzdGF0ZSwgY2hpbGRyZW46IHVwZGF0aW5nLCBhcnRpZmFjdHMgfSk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlLCB1cGRhdGluZyk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUsIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHVwZGF0aW5nKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5zdGFjaygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIHN0YWNrKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoRnJhbWUoeyBibG9jaywgYXJncywgYmxvY2tzLCBjYWxsZXJTY29wZSB9OiBQdXNoRnJhbWVPcHRpb25zKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGJsb2NrLm9wcyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MpO1xuICAgIGlmIChibG9ja3MpIHRoaXMuZnJhbWUuc2V0QmxvY2tzKGJsb2Nrcyk7XG4gICAgaWYgKGNhbGxlclNjb3BlKSB0aGlzLmZyYW1lLnNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hFdmFsRnJhbWUob3BzOiBPcFNlcSkge1xuICAgIHRoaXMuZnJhbWUucHVzaChvcHMpO1xuICB9XG5cbiAgcG9wRnJhbWUoKSB7XG4gICAgbGV0IHsgZnJhbWUgfSA9IHRoaXM7XG5cbiAgICBmcmFtZS5wb3AoKTtcbiAgICBsZXQgY3VycmVudCA9IGZyYW1lLmdldEN1cnJlbnQoKTtcblxuICAgIGlmIChjdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlU3RhY2suY3VycmVudC5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNlbGY6IFBhdGhSZWZlcmVuY2U8YW55Piwgc2l6ZTogbnVtYmVyKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgc2l6ZSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLnN0YWNrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIGV4ZWN1dGUob3Bjb2RlczogT3BTZXEsIGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTogUmVuZGVyUmVzdWx0IHtcbiAgICBMT0dHRVIuZGVidWcoXCJbVk1dIEJlZ2luIHByb2dyYW0gZXhlY3V0aW9uXCIpO1xuXG4gICAgbGV0IHsgZWxlbWVudFN0YWNrLCBmcmFtZSwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZW52IH0gPSB0aGlzO1xuXG4gICAgZWxlbWVudFN0YWNrLnB1c2hCbG9jaygpO1xuXG4gICAgdXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpKTtcbiAgICBmcmFtZS5wdXNoKG9wY29kZXMpO1xuXG4gICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG5cbiAgICBsZXQgb3Bjb2RlOiBPcGNvZGU7XG5cbiAgICB3aGlsZSAoZnJhbWUuaGFzT3Bjb2RlcygpKSB7XG4gICAgICBpZiAob3Bjb2RlID0gZnJhbWUubmV4dFN0YXRlbWVudCgpKSB7XG4gICAgICAgIExPR0dFUi5kZWJ1ZyhgW1ZNXSBPUCAke29wY29kZS50eXBlfWApO1xuICAgICAgICBMT0dHRVIudHJhY2Uob3Bjb2RlKTtcbiAgICAgICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIExPR0dFUi5kZWJ1ZyhcIltWTV0gQ29tcGxldGVkIHByb2dyYW0gZXhlY3V0aW9uXCIpO1xuXG4gICAgcmV0dXJuIG5ldyBSZW5kZXJSZXN1bHQoe1xuICAgICAgZW52LFxuICAgICAgdXBkYXRpbmc6IHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksXG4gICAgICBib3VuZHM6IGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgfSk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB5b3UgaGF2ZSBvcGNvZGVzIHRoYXQgcHVzaCBhbmQgcG9wIGEgc2NvcGUgYXJvdW5kIHRoaXMgb3Bjb2RlXG4gIC8vIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2NvcGUuXG4gIGludm9rZUJsb2NrKGJsb2NrOiBJbmxpbmVCbG9jaywgYXJnczogRXZhbHVhdGVkQXJncykge1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGUodGhpcy5lbnYpO1xuICAgIHRoaXMucHVzaEZyYW1lKHsgYmxvY2s6IGNvbXBpbGVkLCBhcmdzIH0pO1xuICB9XG5cbiAgaW52b2tlTGF5b3V0KHsgYXJncywgbGF5b3V0LCB0ZW1wbGF0ZXMsIGNhbGxlclNjb3BlIH06IEludm9rZUxheW91dE9wdGlvbnMpIHtcbiAgICB0aGlzLnB1c2hGcmFtZSh7IGJsb2NrOiBsYXlvdXQsIGJsb2NrczogdGVtcGxhdGVzLCBjYWxsZXJTY29wZSwgYXJncyB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlT3BlcmFuZChleHByOiBDb21waWxlZEV4cHJlc3Npb248YW55Pikge1xuICAgIHRoaXMuZnJhbWUuc2V0T3BlcmFuZChleHByLmV2YWx1YXRlKHRoaXMpKTtcbiAgfVxuXG4gIGV2YWx1YXRlQXJncyhhcmdzOiBDb21waWxlZEFyZ3MpIHtcbiAgICBsZXQgZXZhbGVkQXJncyA9IHRoaXMuZnJhbWUuc2V0QXJncyhhcmdzLmV2YWx1YXRlKHRoaXMpKTtcbiAgICB0aGlzLmZyYW1lLnNldE9wZXJhbmQoZXZhbGVkQXJncy5wb3NpdGlvbmFsLmF0KDApKTtcbiAgfVxuXG4gIGJpbmRQb3NpdGlvbmFsQXJncyhlbnRyaWVzOiBudW1iZXJbXSkge1xuICAgIGxldCBhcmdzID0gdGhpcy5mcmFtZS5nZXRBcmdzKCk7XG4gICAgaWYgKCFhcmdzKSByZXR1cm47XG5cbiAgICBsZXQgeyBwb3NpdGlvbmFsIH0gPSBhcmdzO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5iaW5kU3ltYm9sKGVudHJpZXNbaV0sIHBvc2l0aW9uYWwuYXQoaSkpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmROYW1lZEFyZ3MoZW50cmllczogRGljdDxudW1iZXI+KSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcbiAgICBpZiAoIWFyZ3MpIHJldHVybjtcblxuICAgIGxldCB7IG5hbWVkIH0gPSBhcmdzO1xuXG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhlbnRyaWVzKTtcbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjb3BlLmJpbmRTeW1ib2woZW50cmllc1trZXlzW2ldXSwgbmFtZWQuZ2V0KDxJbnRlcm5lZFN0cmluZz5rZXlzW2ldKSk7XG4gICAgfVxuICB9XG5cbiAgYmluZEJsb2NrcyhlbnRyaWVzOiBEaWN0PG51bWJlcj4pIHtcbiAgICBsZXQgYmxvY2tzID0gdGhpcy5mcmFtZS5nZXRCbG9ja3MoKTtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB0aGlzLmZyYW1lLmdldENhbGxlclNjb3BlKCk7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBzY29wZS5iaW5kQ2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuXG4gICAgT2JqZWN0LmtleXMoZW50cmllcykuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIHNjb3BlLmJpbmRCbG9jayhlbnRyaWVzW25hbWVdLCAoYmxvY2tzICYmIGJsb2Nrc1tuYW1lXSkgfHwgbnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKGNhbGxiYWNrOiBCaW5kRHluYW1pY1Njb3BlQ2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayh0aGlzLCB0aGlzLmR5bmFtaWNTY29wZSgpKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBCaW5kRHluYW1pY1Njb3BlQ2FsbGJhY2sgPSAodm06IFB1YmxpY1ZNLCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSkgPT4gdm9pZDtcblxuaW50ZXJmYWNlIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBoYW5kbGVFeGNlcHRpb24oaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpO1xufVxuXG5pbnRlcmZhY2UgUmV0dXJuSGFuZGxlciB7XG4gIHNldFJlbmRlclJlc3VsdChyZW5kZXJSZXN1bHQ6IFJlbmRlclJlc3VsdCk7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQStDYyxFQUFBO0FBZVosaUJBZlksRUFBQSxDQWVBLElBQWdFLEVBQUE7Z0JBQTlELEdBQUcsR0FBTCxJQUFnRSxDQUE5RCxHQUFHO2dCQUFFLEtBQUssR0FBWixJQUFnRSxDQUF6RCxLQUFLO2dCQUFFLFlBQVksR0FBMUIsSUFBZ0UsQ0FBbEQsWUFBWTtnQkFBRSxZQUFZLEdBQXhDLElBQWdFLENBQXBDLFlBQVk7O0FBYjVDLGdCQUFBLENBQUEsaUJBQWlCLEdBQUcsaUJBL0NSLEtBQUssRUErQzRCLENBQUM7QUFDOUMsZ0JBQUEsQ0FBQSxVQUFVLEdBQUcsaUJBaERELEtBQUssRUFnRGMsQ0FBQztBQUVqQyxnQkFBQSxDQUFBLG1CQUFtQixHQUFHLGlCQWxEVCxLQUFLLEVBa0QyQyxDQUFDO0FBQzlELGdCQUFBLENBQUEsV0FBVyxHQUFHLGlCQW5ERCxLQUFLLEVBbUR1QixDQUFDO0FBQzFDLGdCQUFBLENBQUEsY0FBYyxHQUFHLGlCQXBESixLQUFLLEVBb0QyQixDQUFDO0FBQzlDLGdCQUFBLENBQUEsS0FBSyxHQUFHLDhCQXpDUixVQUFVLEVBeUNjLENBQUM7QUFROUIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQzs7QUFwQlcsVUFBQSxDQVVMLE9BQU8sR0FBQSxpQkFBQyxHQUFnQixFQUFFLEtBQTRELEVBQUE7Z0JBQTFELFlBQVksR0FBZCxLQUE0RCxDQUExRCxZQUFZO2dCQUFFLElBQUksR0FBcEIsS0FBNEQsQ0FBNUMsSUFBSTtnQkFBRSxZQUFZLEdBQWxDLEtB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QUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFaEMseUJBcFhnRSxNQUFNLENBb1gvRCxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztBQUUxQyxnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWhDLGlCQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxxQkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQztTQUNGOztlQTlVVyxFQUFBOzs7c0JBQUEsRUFBQSIsImZpbGUiOiJhcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIExPR0dFUiwgT3BhcXVlLCBhc3NlcnQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVzIH0gZnJvbSAnLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgSW5saW5lQmxvY2ssIENvbXBpbGVkQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzLCBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFJhbmdlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IHsgRnJhbWVTdGFjaywgQmxvY2tzIH0gZnJvbSAnLi9mcmFtZSc7XG5cbmludGVyZmFjZSBWTUluaXRpYWxPcHRpb25zIHtcbiAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2s7XG4gIHNpemU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFZNQ29uc3RydWN0b3JPcHRpb25zIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgc2NvcGU6IFNjb3BlO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2s7XG59XG5cbmludGVyZmFjZSBQdXNoRnJhbWVPcHRpb25zIHtcbiAgYmxvY2s6IENvbXBpbGVkQmxvY2s7XG4gIGFyZ3M/OiBFdmFsdWF0ZWRBcmdzO1xuICBibG9ja3M/OiBCbG9ja3M7XG4gIGNhbGxlclNjb3BlPzogU2NvcGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljVk0ge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBnZXRBcmdzKCk6IEV2YWx1YXRlZEFyZ3M7XG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGU7XG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSk7XG59XG5cbnR5cGUgT3BMaXN0ID0gUmFuZ2U8T3Bjb2RlPjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0gaW1wbGVtZW50cyBQdWJsaWNWTSB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPFVwZGF0aW5nT3Bjb2RlPigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgZnJhbWUgPSBuZXcgRnJhbWVTdGFjaygpO1xuXG4gIHN0YXRpYyBpbml0aWFsKGVudjogRW52aXJvbm1lbnQsIHsgZWxlbWVudFN0YWNrLCBzZWxmLCBkeW5hbWljU2NvcGUsIHNpemUgfTogVk1Jbml0aWFsT3B0aW9ucykge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgc2l6ZSk7XG4gICAgcmV0dXJuIG5ldyBWTSh7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayB9OiBWTUNvbnN0cnVjdG9yT3B0aW9ucykge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpXG4gICAgfTtcbiAgfVxuXG4gIGdvdG8ob3A6IExhYmVsT3Bjb2RlKSB7XG4gICAgLy8gYXNzZXJ0KHRoaXMuZnJhbWUuZ2V0T3BzKCkuY29udGFpbnMob3ApLCBgSWxsZWdhbCBqdW1wIHRvICR7b3AubGFiZWx9YCk7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50O1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHsgdGFnLCB0YXJnZXQ6IEVORCB9KTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKHsgdGFyZ2V0OiBndWFyZCB9KSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVyV2l0aEtleShrZXk6IHN0cmluZywgb3BzOiBPcFNlcSkge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShvcHMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQubWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLmZyYW1lLmdldEl0ZXJhdG9yKCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlLCB1cGRhdGluZyk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUsIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHVwZGF0aW5nKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5zdGFjaygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIHN0YWNrKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoRnJhbWUoeyBibG9jaywgYXJncywgYmxvY2tzLCBjYWxsZXJTY29wZSB9OiBQdXNoRnJhbWVPcHRpb25zKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGJsb2NrLm9wcyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MpO1xuICAgIGlmIChibG9ja3MpIHRoaXMuZnJhbWUuc2V0QmxvY2tzKGJsb2Nrcyk7XG4gICAgaWYgKGNhbGxlclNjb3BlKSB0aGlzLmZyYW1lLnNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRGcmFtZShcbiAgICBsYXlvdXQ6IENvbXBpbGVkQmxvY2ssXG4gICAgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBibG9ja3M6IEJsb2NrcyxcbiAgICBjYWxsZXJTY29wZTogU2NvcGUsXG4gICAgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHNoYWRvdzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGxheW91dC5vcHMsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcblxuICAgIGlmIChhcmdzKSB0aGlzLmZyYW1lLnNldEFyZ3MoYXJncyk7XG4gICAgaWYgKGJsb2NrcykgdGhpcy5mcmFtZS5zZXRCbG9ja3MoYmxvY2tzKTtcbiAgICBpZiAoY2FsbGVyU2NvcGUpIHRoaXMuZnJhbWUuc2V0Q2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaEV2YWxGcmFtZShvcHM6IE9wU2VxKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKG9wcyk7XG4gIH1cblxuICBwb3BGcmFtZSgpIHtcbiAgICBsZXQgeyBmcmFtZSB9ID0gdGhpcztcblxuICAgIGZyYW1lLnBvcCgpO1xuICAgIGxldCBjdXJyZW50ID0gZnJhbWUuZ2V0Q3VycmVudCgpO1xuXG4gICAgaWYgKGN1cnJlbnQgPT09IG51bGwpIHJldHVybjtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LmNoaWxkKCkpO1xuICB9XG5cbiAgcHVzaENhbGxlclNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQuY2hpbGQoKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHB1c2hSb290U2NvcGUoc2VsZjogUGF0aFJlZmVyZW5jZTxhbnk+LCBzaXplOiBudW1iZXIpOiBTY29wZSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBzaXplKTtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBuZXdEZXN0cm95YWJsZShkOiBEZXN0cm95YWJsZSkge1xuICAgIHRoaXMuc3RhY2soKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgfVxuXG4gIC8vLyBTQ09QRSBIRUxQRVJTXG5cbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICB9XG5cbiAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbDogbnVtYmVyKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgZ2V0QXJncygpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZS5nZXRBcmdzKCk7XG4gIH1cblxuICAvLy8gRVhFQ1VUSU9OXG5cbiAgZXhlY3V0ZShvcGNvZGVzOiBPcFNlcSwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIExPR0dFUi5kZWJ1ZyhcIltWTV0gQmVnaW4gcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICBsZXQgeyBlbGVtZW50U3RhY2ssIGZyYW1lLCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBlbGVtZW50U3RhY2sucHVzaFNpbXBsZUJsb2NrKCk7XG5cbiAgICB1cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIGZyYW1lLnB1c2gob3Bjb2Rlcyk7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCBvcGNvZGU6IE9wY29kZTtcblxuICAgIHdoaWxlIChmcmFtZS5oYXNPcGNvZGVzKCkpIHtcbiAgICAgIGlmIChvcGNvZGUgPSBmcmFtZS5uZXh0U3RhdGVtZW50KCkpIHtcbiAgICAgICAgTE9HR0VSLmRlYnVnKGBbVk1dIE9QICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgICAgIExPR0dFUi50cmFjZShvcGNvZGUpO1xuICAgICAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgTE9HR0VSLmRlYnVnKFwiW1ZNXSBDb21wbGV0ZWQgcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICByZXR1cm4gbmV3IFJlbmRlclJlc3VsdCh7XG4gICAgICBlbnYsXG4gICAgICB1cGRhdGluZzogdXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSxcbiAgICAgIGJvdW5kczogZWxlbWVudFN0YWNrLnBvcEJsb2NrKClcbiAgICB9KTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHlvdSBoYXZlIG9wY29kZXMgdGhhdCBwdXNoIGFuZCBwb3AgYSBzY29wZSBhcm91bmQgdGhpcyBvcGNvZGVcbiAgLy8gaWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzY29wZS5cbiAgaW52b2tlQmxvY2soYmxvY2s6IElubGluZUJsb2NrLCBhcmdzOiBFdmFsdWF0ZWRBcmdzKSB7XG4gICAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZSh0aGlzLmVudik7XG4gICAgdGhpcy5wdXNoRnJhbWUoeyBibG9jazogY29tcGlsZWQsIGFyZ3MgfSk7XG4gIH1cblxuICBpbnZva2VMYXlvdXQoXG4gICAgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBsYXlvdXQ6IENvbXBpbGVkQmxvY2ssXG4gICAgdGVtcGxhdGVzOiBUZW1wbGF0ZXMsXG4gICAgY2FsbGVyU2NvcGU6IFNjb3BlLFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBzaGFkb3c6IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMucHVzaENvbXBvbmVudEZyYW1lKGxheW91dCwgYXJncywgdGVtcGxhdGVzLCBjYWxsZXJTY29wZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBzaGFkb3cpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGVyYW5kKGV4cHI6IENvbXBpbGVkRXhwcmVzc2lvbjxhbnk+KSB7XG4gICAgdGhpcy5mcmFtZS5zZXRPcGVyYW5kKGV4cHIuZXZhbHVhdGUodGhpcykpO1xuICB9XG5cbiAgZXZhbHVhdGVBcmdzKGFyZ3M6IENvbXBpbGVkQXJncykge1xuICAgIGxldCBldmFsZWRBcmdzID0gdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MuZXZhbHVhdGUodGhpcykpO1xuICAgIHRoaXMuZnJhbWUuc2V0T3BlcmFuZChldmFsZWRBcmdzLnBvc2l0aW9uYWwuYXQoMCkpO1xuICB9XG5cbiAgYmluZFBvc2l0aW9uYWxBcmdzKHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcblxuICAgIGFzc2VydChhcmdzLCBcIkNhbm5vdCBiaW5kIHBvc2l0aW9uYWwgYXJnc1wiKTtcblxuICAgIGxldCB7IHBvc2l0aW9uYWwgfSA9IGFyZ3M7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjb3BlLmJpbmRTeW1ib2woc3ltYm9sc1tpXSwgcG9zaXRpb25hbC5hdChpKSk7XG4gICAgfVxuICB9XG5cbiAgYmluZE5hbWVkQXJncyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcblxuICAgIGFzc2VydChhcmdzLCBcIkNhbm5vdCBiaW5kIG5hbWVkIGFyZ3NcIik7XG5cbiAgICBsZXQgeyBuYW1lZCB9ID0gYXJncztcblxuICAgIGxldCBzY29wZSA9IHRoaXMuc2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT0wOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjb3BlLmJpbmRTeW1ib2woc3ltYm9sc1tpXSwgbmFtZWQuZ2V0KG5hbWVzW2ldKSk7XG4gICAgfVxuICB9XG5cbiAgYmluZEJsb2NrcyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgbGV0IGJsb2NrcyA9IHRoaXMuZnJhbWUuZ2V0QmxvY2tzKCk7XG4gICAgbGV0IGNhbGxlclNjb3BlID0gdGhpcy5mcmFtZS5nZXRDYWxsZXJTY29wZSgpO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZSgpO1xuXG4gICAgc2NvcGUuYmluZENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcblxuICAgIGZvcihsZXQgaT0wOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjb3BlLmJpbmRCbG9jayhzeW1ib2xzW2ldLCAoYmxvY2tzICYmIGJsb2Nrc1tuYW1lc1tpXV0pIHx8IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcblxuICAgIGFzc2VydChhcmdzLCBcIkNhbm5vdCBiaW5kIGR5bmFtaWMgc2NvcGVcIik7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuc2V0KG5hbWVzW2ldLCBhcmdzLm5hbWVkLmdldChuYW1lc1tpXSkpO1xuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbihpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk7XG59XG5cbmludGVyZmFjZSBSZXR1cm5IYW5kbGVyIHtcbiAgc2V0UmVuZGVyUmVzdWx0KHJlbmRlclJlc3VsdDogUmVuZGVyUmVzdWx0KTtcbn1cbiJdfQ== enifed("glimmer-runtime/lib/vm/frame", ["exports"], function (exports) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var Frame = function Frame(ops) { - _classCallCheck(this, Frame); + 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.args = null; this.callerScope = null; this.blocks = null; this.condition = null; this.iterator = null; this.key = null; + this.componentDefinition = null; this.ops = ops; this.op = ops.head(); }; var FrameStack = (function () { function FrameStack() { - _classCallCheck(this, 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); + this.frames[frame] = new Frame(ops, component, manager, shadow); }; FrameStack.prototype.pop = function pop() { var frames = this.frames; var frame = this.frame; @@ -22617,10 +23181,18 @@ FrameStack.prototype.setKey = function setKey(key) { return this.frames[this.frame].key = key; }; + FrameStack.prototype.getComponentDefinition = function getComponentDefinition() { + return this.frames[this.frame].componentDefinition; + }; + + FrameStack.prototype.setComponentDefinition = function setComponentDefinition(definition) { + return this.frames[this.frame].componentDefinition = definition; + }; + FrameStack.prototype.getBlocks = function getBlocks() { return this.frames[this.frame].blocks; }; FrameStack.prototype.setBlocks = function setBlocks(blocks) { @@ -22633,10 +23205,22 @@ 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() { @@ -22658,24 +23242,20 @@ return FrameStack; })(); exports.FrameStack = FrameStack; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFRQSxLQUFBLEdBV0UsU0FYRixLQUFBLENBV2MsR0FBVSxFQUFBOzhCQVh4QixLQUFBOztBQUdFLFlBQUEsQ0FBQSxPQUFPLEdBQXVCLElBQUksQ0FBQztBQUNuQyxZQUFBLENBQUEsSUFBSSxHQUFrQixJQUFJLENBQUM7QUFDM0IsWUFBQSxDQUFBLFdBQVcsR0FBVSxJQUFJLENBQUM7QUFDMUIsWUFBQSxDQUFBLE1BQU0sR0FBVyxJQUFJLENBQUM7QUFDdEIsWUFBQSxDQUFBLFNBQVMsR0FBdUIsSUFBSSxDQUFDO0FBQ3JDLFlBQUEsQ0FBQSxRQUFRLEdBQXNCLElBQUksQ0FBQztBQUNuQyxZQUFBLENBQUEsR0FBRyxHQUFtQixJQUFJLENBQUM7QUFHekIsWUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixZQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUN0Qjs7UUFRSCxVQUFBO0FBQUEsaUJBQUEsVUFBQSxHQUFBO2tDQUFBLFVBQUE7O0FBQ1UsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO0FBQ3JCLGdCQUFBLENBQUEsS0FBSyxHQUFXLFNBQVMsQ0FBQztTQTJHbkM7O0FBN0dELGtCQUFBLFdBSUUsSUFBSSxHQUFBLGNBQUMsR0FBVSxFQUFBO0FBQ2IsZ0JBQUksS0FBSyxHQUFHLEFBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEdBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBRXpFLGdCQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtBQUMvQixvQkFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7QUFFRCxnQkFBSSxDQUFDLE1BQU0sQ0FB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QUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLHVCQUFPLEVBQUUsQ0FBQzthQUNYLE1BQU07QUFDTCxvQkFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ1gsdUJBQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjs7ZUE1R0gsVUFBQSIsImZpbGUiOiJmcmFtZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSW50ZXJuZWRTdHJpbmcgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBQYXRoUmVmZXJlbmNlLCBSZWZlcmVuY2VJdGVyYXRvciB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IElubGluZUJsb2NrIH0gZnJvbSAnLi4vY29tcGlsZWQvYmxvY2tzJztcbmltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE9wY29kZSwgT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5cbmNsYXNzIEZyYW1lIHtcbiAgb3BzOiBPcFNlcTtcbiAgb3A6IE9wY29kZTtcbiAgb3BlcmFuZDogUGF0aFJlZmVyZW5jZTxhbnk+ID0gbnVsbDtcbiAgYXJnczogRXZhbHVhdGVkQXJncyA9IG51bGw7XG4gIGNhbGxlclNjb3BlOiBTY29wZSA9IG51bGw7XG4gIGJsb2NrczogQmxvY2tzID0gbnVsbDtcbiAgY29uZGl0aW9uOiBSZWZlcmVuY2U8Ym9vbGVhbj4gPSBudWxsO1xuICBpdGVyYXRvcjogUmVmZXJlbmNlSXRlcmF0b3IgPSBudWxsO1xuICBrZXk6IEludGVybmVkU3RyaW5nID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxKSB7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5vcCA9IG9wcy5oZWFkKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja3Mge1xuICBkZWZhdWx0OiBJbmxpbmVCbG9jaztcbiAgaW52ZXJzZTogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFtZVN0YWNrIHtcbiAgcHJpdmF0ZSBmcmFtZXM6IEZyYW1lW10gPSBbXTtcbiAgcHJpdmF0ZSBmcmFtZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIHB1c2gob3BzOiBPcFNlcSkge1xuICAgIGxldCBmcmFtZSA9ICh0aGlzLmZyYW1lID09PSB1bmRlZmluZWQpID8gKHRoaXMuZnJhbWUgPSAwKSA6ICsrdGhpcy5mcmFtZTtcblxuICAgIGlmICh0aGlzLmZyYW1lcy5sZW5ndGggPD0gZnJhbWUpIHtcbiAgICAgIHRoaXMuZnJhbWVzLnB1c2gobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5mcmFtZXNbZnJhbWVdID0gbmV3IEZyYW1lKG9wcyk7XG4gIH1cblxuICBwb3AoKSB7XG4gICAgbGV0IHsgZnJhbWVzLCBmcmFtZSB9ID0gdGhpcztcbiAgICBmcmFtZXNbZnJhbWVdID0gbnVsbDtcbiAgICB0aGlzLmZyYW1lID0gZnJhbWUgPT09IDAgPyB1bmRlZmluZWQgOiBmcmFtZSAtIDE7XG4gIH1cblxuICBnZXRPcHMoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcHM7XG4gIH1cblxuICBnZXRDdXJyZW50KCk6IE9wY29kZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wO1xuICB9XG5cbiAgc2V0Q3VycmVudChvcDogT3Bjb2RlKTogT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3AgPSBvcDtcbiAgfVxuXG4gIGdldE9wZXJhbmQoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3BlcmFuZDtcbiAgfVxuXG4gIHNldE9wZXJhbmQ8VD4ob3BlcmFuZDogUGF0aFJlZmVyZW5jZTxUPik6IFBhdGhSZWZlcmVuY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcGVyYW5kID0gb3BlcmFuZDtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmFyZ3M7XG4gIH1cblxuICBzZXRBcmdzKGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXTtcbiAgICByZXR1cm4gZnJhbWUuYXJncyA9IGFyZ3M7XG4gIH1cblxuICBnZXRDb25kaXRpb24oKTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uO1xuICB9XG5cbiAgc2V0Q29uZGl0aW9uKGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICB9XG5cbiAgZ2V0SXRlcmF0b3IoKTogUmVmZXJlbmNlSXRlcmF0b3Ige1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pdGVyYXRvcjtcbiAgfVxuXG4gIHNldEl0ZXJhdG9yKGl0ZXJhdG9yOiBSZWZlcmVuY2VJdGVyYXRvcik6IFJlZmVyZW5jZUl0ZXJhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uaXRlcmF0b3IgPSBpdGVyYXRvcjtcbiAgfVxuXG4gIGdldEtleSgpOiBJbnRlcm5lZFN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmtleTtcbiAgfVxuXG4gIHNldEtleShrZXk6IEludGVybmVkU3RyaW5nKTogSW50ZXJuZWRTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5rZXkgPSBrZXk7XG4gIH1cblxuICBnZXRCbG9ja3MoKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzO1xuICB9XG5cbiAgc2V0QmxvY2tzKGJsb2NrczogQmxvY2tzKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzID0gYmxvY2tzO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIHNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlOiBTY29wZSk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgfVxuXG4gIGdvdG8ob3A6IExhYmVsT3Bjb2RlKSB7XG4gICAgdGhpcy5zZXRDdXJyZW50KG9wKTtcbiAgfVxuXG4gIGhhc09wY29kZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG5leHRTdGF0ZW1lbnQoKTogT3Bjb2RlIHtcbiAgICBsZXQgb3AgPSB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcDtcbiAgICBsZXQgb3BzID0gdGhpcy5nZXRPcHMoKTtcblxuICAgIGlmIChvcCkge1xuICAgICAgdGhpcy5zZXRDdXJyZW50KG9wcy5uZXh0Tm9kZShvcCkpO1xuICAgICAgcmV0dXJuIG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvcCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsS0FBQSxHQVlFLFNBWkYsS0FBQSxDQWFJLEdBQVUsRUFHb0I7WUFGdkIsU0FBQSx5REFBdUIsSUFBSTtZQUMzQixPQUFBLHlEQUF1QyxJQUFJO1lBQzNDLE1BQUEseURBQW1CLElBQUk7O0FBRnZCLFlBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFrQjtBQUMzQixZQUFBLENBQUEsT0FBTyxHQUFQLE9BQU8sQ0FBb0M7QUFDM0MsWUFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQWlCO0FBYmhDLFlBQUEsQ0FBQSxPQUFPLEdBQXVCLElBQUksQ0FBQztBQUNuQyxZQUFBLENBQUEsSUFBSSxHQUFrQixJQUFJLENBQUM7QUFDM0IsWUFBQSxDQUFBLFdBQVcsR0FBVSxJQUFJLENBQUM7QUFDMUIsWUFBQSxDQUFBLE1BQU0sR0FBVyxJQUFJLENBQUM7QUFDdEIsWUFBQSxDQUFBLFNBQVMsR0FBdUIsSUFBSSxDQUFDO0FBQ3JDLFlBQUEsQ0FBQSxRQUFRLEdBQXNCLElBQUksQ0FBQztBQUNuQyxZQUFBLENBQUEsR0FBRyxHQUFXLElBQUksQ0FBQztBQUNuQixZQUFBLENBQUEsbUJBQW1CLEdBQW1DLElBQUksQ0FBQztBQVF6RCxZQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLFlBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ3RCOztRQVFHLFVBQUE7QUFBTixpQkFBTSxVQUFBLEdBQU47QUFDVSxnQkFBQSxDQUFBLE1BQU0sR0FBWSxFQUFFLENBQUM7QUFDckIsZ0JBQUEsQ0FBQSxLQUFLLEdBQVcsU0FBUyxDQUFDO1NBK0huQzs7QUFqSUssa0JBQUEsV0FJSixJQUFJLEdBQUEsY0FBQyxHQUFVLEVBQW1HO2dCQUFqRyxTQUFTLHlEQUFjLElBQUk7Z0JBQUUsT0FBTyx5REFBZ0MsSUFBSTtnQkFBRSxNQUFNLHlEQUFhLElBQUk7O0FBQ2hILGdCQUFJLEtBQUssR0FBRyxBQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxHQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUV6RSxnQkFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUU7QUFDL0Isb0JBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO0FBRUQsZ0JBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDakU7O0FBWkcsa0JBQUEsV0FjSixHQUFHLEdBQUEsZUFBQTtnQkFDSyxNQUFNLEdBQVksSUFBSSxDQUF0QixNQUFNO2dCQUFFLEtBQUssR0FBSyxJQUFJLENBQWQsS0FBSzs7QUFDbkIsa0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNsRDs7QUFsQkcsa0JBQUEsV0FvQkosTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ3BDOztBQXRCRyxrQkFBQSxXQXdCSixVQUFVLEdBQUEsc0JBQUE7QUFDUixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbkM7O0FBMUJHLGtCQUFBLFdBNEJKLFVBQVUsR0FBQSxvQkFBQyxFQUFVLEVBQUE7QUFDbkIsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN4Qzs7QUE5Qkcsa0JBQUEsV0FnQ0osVUFBVSxHQUFBLHNCQUFBO0FBQ1IsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ3hDOztBQWxDRyxrQkFBQSxXQW9DSixVQUFVLEdBQUEsb0JBQUksT0FBeUIsRUFBQTtBQUNyQyxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQ2xEOztBQXRDRyxrQkFBQSxXQXdDSixPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDckM7O0FBMUNHLGtCQUFBLFdBNENKLE9BQU8sR0FBQSxpQkFBQyxJQUFtQixFQUFBO0FBQ3pCLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxtQkFBTyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUMxQjs7QUEvQ0csa0JBQUEsV0FpREosWUFBWSxHQUFBLHdCQUFBO0FBQ1YsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQzFDOztBQW5ERyxrQkFBQSxXQXFESixZQUFZLEdBQUEsc0JBQUMsU0FBNkIsRUFBQTtBQUN4QyxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQ3REOztBQXZERyxrQkFBQSxXQXlESixXQUFXLEdBQUEsdUJBQUE7QUFDVCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDekM7O0FBM0RHLGtCQUFBLFdBNkRKLFdBQVcsR0FBQSxxQkFBQyxRQUEyQixFQUFBO0FBQ3JDLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDcEQ7O0FBL0RHLGtCQUFBLFdBaUVKLE1BQU0sR0FBQSxrQkFBQTtBQUNKLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNwQzs7QUFuRUcsa0JBQUEsV0FxRUosTUFBTSxHQUFBLGdCQUFDLEdBQVcsRUFBQTtBQUNoQixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQzFDOztBQXZFRyxrQkFBQSxXQXlFSixzQkFBc0IsR0FBQSxrQ0FBQTtBQUNwQixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztTQUNwRDs7QUEzRUcsa0JBQUEsV0E2RUosc0JBQXNCLEdBQUEsZ0NBQUMsVUFBMEMsRUFBQTtBQUMvRCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUM7U0FDakU7O0FBL0VHLGtCQUFBLFdBaUZKLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUN2Qzs7QUFuRkcsa0JBQUEsV0FxRkosU0FBUyxHQUFBLG1CQUFDLE1BQWMsRUFBQTtBQUN0QixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ2hEOztBQXZGRyxrQkFBQSxXQXlGSixjQUFjLEdBQUEsMEJBQUE7QUFDWixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUM7U0FDNUM7O0FBM0ZHLGtCQUFBLFdBNkZKLGNBQWMsR0FBQSx3QkFBQyxXQUFrQixFQUFBO0FBQy9CLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDMUQ7O0FBL0ZHLGtCQUFBLFdBaUdKLFlBQVksR0FBQSx3QkFBQTtBQUNWLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUMxQzs7QUFuR0csa0JBQUEsV0FxR0osVUFBVSxHQUFBLHNCQUFBO0FBQ1IsbUJBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQ3hDOztBQXZHRyxrQkFBQSxXQXlHSixTQUFTLEdBQUEscUJBQUE7QUFDUCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDdkM7O0FBM0dHLGtCQUFBLFdBNkdKLElBQUksR0FBQSxjQUFDLEVBQWUsRUFBQTtBQUNsQixnQkFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNyQjs7QUEvR0csa0JBQUEsV0FpSEosVUFBVSxHQUFBLHNCQUFBO0FBQ1IsbUJBQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7U0FDakM7O0FBbkhHLGtCQUFBLFdBcUhKLGFBQWEsR0FBQSx5QkFBQTtBQUNYLGdCQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEMsZ0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUV4QixnQkFBSSxFQUFFLEVBQUU7QUFDTixvQkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsdUJBQU8sRUFBRSxDQUFDO2FBQ1gsTUFBTTtBQUNMLG9CQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDWCx1QkFBTyxJQUFJLENBQUM7YUFDYjtTQUNGOztlQWhJRyxVQUFBIiwiZmlsZSI6ImZyYW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgSW5saW5lQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciwgQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuY2xhc3MgRnJhbWUge1xuICBvcHM6IE9wU2VxO1xuICBvcDogT3Bjb2RlO1xuICBvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPGFueT4gPSBudWxsO1xuICBhcmdzOiBFdmFsdWF0ZWRBcmdzID0gbnVsbDtcbiAgY2FsbGVyU2NvcGU6IFNjb3BlID0gbnVsbDtcbiAgYmxvY2tzOiBCbG9ja3MgPSBudWxsO1xuICBjb25kaXRpb246IFJlZmVyZW5jZTxib29sZWFuPiA9IG51bGw7XG4gIGl0ZXJhdG9yOiBSZWZlcmVuY2VJdGVyYXRvciA9IG51bGw7XG4gIGtleTogc3RyaW5nID0gbnVsbDtcbiAgY29tcG9uZW50RGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxDb21wb25lbnQ+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBvcHM6IE9wU2VxLFxuICAgIHB1YmxpYyBjb21wb25lbnQ6IENvbXBvbmVudCA9IG51bGwsXG4gICAgcHVibGljIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiA9IG51bGwsXG4gICAgcHVibGljIHNoYWRvdzogc3RyaW5nW10gPSBudWxsXG4gICkge1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMub3AgPSBvcHMuaGVhZCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tzIHtcbiAgZGVmYXVsdDogSW5saW5lQmxvY2s7XG4gIGludmVyc2U6IElubGluZUJsb2NrO1xufVxuXG5leHBvcnQgY2xhc3MgRnJhbWVTdGFjayB7XG4gIHByaXZhdGUgZnJhbWVzOiBGcmFtZVtdID0gW107XG4gIHByaXZhdGUgZnJhbWU6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICBwdXNoKG9wczogT3BTZXEsIGNvbXBvbmVudDogQ29tcG9uZW50ID0gbnVsbCwgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+ID0gbnVsbCwgc2hhZG93OiBzdHJpbmdbXSA9IG51bGwpIHtcbiAgICBsZXQgZnJhbWUgPSAodGhpcy5mcmFtZSA9PT0gdW5kZWZpbmVkKSA/ICh0aGlzLmZyYW1lID0gMCkgOiArK3RoaXMuZnJhbWU7XG5cbiAgICBpZiAodGhpcy5mcmFtZXMubGVuZ3RoIDw9IGZyYW1lKSB7XG4gICAgICB0aGlzLmZyYW1lcy5wdXNoKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuZnJhbWVzW2ZyYW1lXSA9IG5ldyBGcmFtZShvcHMsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcbiAgfVxuXG4gIHBvcCgpIHtcbiAgICBsZXQgeyBmcmFtZXMsIGZyYW1lIH0gPSB0aGlzO1xuICAgIGZyYW1lc1tmcmFtZV0gPSBudWxsO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZSA9PT0gMCA/IHVuZGVmaW5lZCA6IGZyYW1lIC0gMTtcbiAgfVxuXG4gIGdldE9wcygpOiBPcFNlcSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wcztcbiAgfVxuXG4gIGdldEN1cnJlbnQoKTogT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3A7XG4gIH1cblxuICBzZXRDdXJyZW50KG9wOiBPcGNvZGUpOiBPcGNvZGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcCA9IG9wO1xuICB9XG5cbiAgZ2V0T3BlcmFuZCgpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcGVyYW5kO1xuICB9XG5cbiAgc2V0T3BlcmFuZDxUPihvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPFQ+KTogUGF0aFJlZmVyZW5jZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wZXJhbmQgPSBvcGVyYW5kO1xuICB9XG5cbiAgZ2V0QXJncygpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYXJncztcbiAgfVxuXG4gIHNldEFyZ3MoYXJnczogRXZhbHVhdGVkQXJncyk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIGxldCBmcmFtZSA9IHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdO1xuICAgIHJldHVybiBmcmFtZS5hcmdzID0gYXJncztcbiAgfVxuXG4gIGdldENvbmRpdGlvbigpOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jb25kaXRpb247XG4gIH1cblxuICBzZXRDb25kaXRpb24oY29uZGl0aW9uOiBSZWZlcmVuY2U8Ym9vbGVhbj4pOiBSZWZlcmVuY2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jb25kaXRpb24gPSBjb25kaXRpb247XG4gIH1cblxuICBnZXRJdGVyYXRvcigpOiBSZWZlcmVuY2VJdGVyYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLml0ZXJhdG9yO1xuICB9XG5cbiAgc2V0SXRlcmF0b3IoaXRlcmF0b3I6IFJlZmVyZW5jZUl0ZXJhdG9yKTogUmVmZXJlbmNlSXRlcmF0b3Ige1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pdGVyYXRvciA9IGl0ZXJhdG9yO1xuICB9XG5cbiAgZ2V0S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmtleTtcbiAgfVxuXG4gIHNldEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmtleSA9IGtleTtcbiAgfVxuXG4gIGdldENvbXBvbmVudERlZmluaXRpb24oKTogQ29tcG9uZW50RGVmaW5pdGlvbjxDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29tcG9uZW50RGVmaW5pdGlvbjtcbiAgfVxuXG4gIHNldENvbXBvbmVudERlZmluaXRpb24oZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxDb21wb25lbnQ+KTogQ29tcG9uZW50RGVmaW5pdGlvbjxDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29tcG9uZW50RGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gIH1cblxuICBnZXRCbG9ja3MoKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzO1xuICB9XG5cbiAgc2V0QmxvY2tzKGJsb2NrczogQmxvY2tzKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzID0gYmxvY2tzO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIHNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlOiBTY29wZSk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgfVxuXG4gIGdldENvbXBvbmVudCgpOiBDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jb21wb25lbnQ7XG4gIH1cblxuICBnZXRNYW5hZ2VyKCk6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm1hbmFnZXI7XG4gIH1cblxuICBnZXRTaGFkb3coKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5zaGFkb3c7XG4gIH1cblxuICBnb3RvKG9wOiBMYWJlbE9wY29kZSkge1xuICAgIHRoaXMuc2V0Q3VycmVudChvcCk7XG4gIH1cblxuICBoYXNPcGNvZGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IE9wY29kZSB7XG4gICAgbGV0IG9wID0gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3A7XG4gICAgbGV0IG9wcyA9IHRoaXMuZ2V0T3BzKCk7XG5cbiAgICBpZiAob3ApIHtcbiAgICAgIHRoaXMuc2V0Q3VycmVudChvcHMubmV4dE5vZGUob3ApKTtcbiAgICAgIHJldHVybiBvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19 enifed('glimmer-runtime/lib/vm/render-result', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/vm/update'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibVmUpdate) { 'use strict'; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var RenderResult = (function () { function RenderResult(_ref) { var env = _ref.env; var updating = _ref.updating; var bounds = _ref.bounds; - _classCallCheck(this, RenderResult); - this.env = env; this.updating = updating; this.bounds = bounds; } @@ -22719,27 +23299,19 @@ return RenderResult; })(); exports.default = RenderResult; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vcmVuZGVyLXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQVlBLFlBQUE7QUFLRSxpQkFMRixZQUFBLENBS2MsSUFBK0MsRUFBQTtnQkFBN0MsR0FBRyxHQUFMLElBQStDLENBQTdDLEdBQUc7Z0JBQUUsUUFBUSxHQUFmLElBQStDLENBQXhDLFFBQVE7Z0JBQUUsTUFBTSxHQUF2QixJQUErQyxDQUE5QixNQUFNOztrQ0FMckMsWUFBQTs7QUFNSSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCOztBQVRILG9CQUFBLFdBV0UsUUFBUSxHQUFBLG9CQUEyRDs4RUFBM0IsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUU7OytDQUF4RCxnQkFBZ0I7Z0JBQWhCLGdCQUFnQiwwQ0FBRyxLQUFLO2dCQUMzQixHQUFHLEdBQWUsSUFBSSxDQUF0QixHQUFHO2dCQUFFLFFBQVEsR0FBSyxJQUFJLENBQWpCLFFBQVE7O0FBQ25CLGdCQUFJLEVBQUUsR0FBRyx1Q0FBZSxHQUFHLEVBQUUsRUFBRSxnQkFBZ0IsRUFBaEIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELGNBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzVCOztBQWZILG9CQUFBLFdBaUJFLGFBQWEsR0FBQSx5QkFBQTtBQUNYLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDcEM7O0FBbkJILG9CQUFBLFdBcUJFLFNBQVMsR0FBQSxxQkFBQTtBQUNQLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDaEM7O0FBdkJILG9CQUFBLFdBeUJFLFFBQVEsR0FBQSxvQkFBQTtBQUNOLG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDL0I7O0FBM0JILG9CQUFBLFdBNkJFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7O0FBL0JILG9CQUFBLFdBaUNFLGVBQWUsR0FBQSwyQkFBQTtBQUNiLGtCQUFNLDBCQUEwQixDQUFDO1NBQ2xDOztBQW5DSCxvQkFBQSxXQXFDRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxnQkFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QixxQ0FqRGEsS0FBSyxDQWlEWixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEI7O2VBeENILFlBQUE7OztzQkFBQSxZQUFBIiwiZmlsZSI6InJlbmRlci1yZXN1bHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95YWJsZSwgTGlua2VkTGlzdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQm91bmRzLCBjbGVhciB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgVXBkYXRpbmdWTSwgeyBFeGNlcHRpb25IYW5kbGVyIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IHsgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi9vcGNvZGVzJztcblxuaW50ZXJmYWNlIFJlbmRlclJlc3VsdE9wdGlvbnMge1xuICBlbnY6IEVudmlyb25tZW50O1xuICB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIGJvdW5kczogQm91bmRzICYgRGVzdHJveWFibGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbmRlclJlc3VsdCBpbXBsZW1lbnRzIEJvdW5kcywgRGVzdHJveWFibGUsIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuICBwcml2YXRlIGJvdW5kczogQm91bmRzICYgRGVzdHJveWFibGU7XG5cbiAgY29uc3RydWN0b3IoeyBlbnYsIHVwZGF0aW5nLCBib3VuZHMgfSA6IFJlbmRlclJlc3VsdE9wdGlvbnMpIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLnVwZGF0aW5nID0gdXBkYXRpbmc7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICByZXJlbmRlcih7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9ID0geyBhbHdheXNSZXZhbGlkYXRlOiBmYWxzZSB9KSB7XG4gICAgbGV0IHsgZW52LCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgdm0gPSBuZXcgVXBkYXRpbmdWTShlbnYsIHsgYWx3YXlzUmV2YWxpZGF0ZSB9KTtcbiAgICB2bS5leGVjdXRlKHVwZGF0aW5nLCB0aGlzKTtcbiAgfVxuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIG9wY29kZXMoKTogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0aW5nO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIHRocm93IFwidGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXCI7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuYm91bmRzLmRlc3Ryb3koKTtcbiAgICBjbGVhcih0aGlzLmJvdW5kcyk7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vcmVuZGVyLXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFZYyxZQUFBO0FBS1osaUJBTFksWUFBQSxDQUtBLElBQStDLEVBQUE7Z0JBQTdDLEdBQUcsR0FBTCxJQUErQyxDQUE3QyxHQUFHO2dCQUFFLFFBQVEsR0FBZixJQUErQyxDQUF4QyxRQUFRO2dCQUFFLE1BQU0sR0FBdkIsSUFBK0MsQ0FBOUIsTUFBTTs7QUFDakMsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0Qjs7QUFUVyxvQkFBQSxXQVdaLFFBQVEsR0FBQSxvQkFBMkQ7OEVBQTNCLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFOzsrQ0FBeEQsZ0JBQWdCO2dCQUFoQixnQkFBZ0IsMENBQUcsS0FBSztnQkFDM0IsR0FBRyxHQUFlLElBQUksQ0FBdEIsR0FBRztnQkFBRSxRQUFRLEdBQUssSUFBSSxDQUFqQixRQUFROztBQUNuQixnQkFBSSxFQUFFLEdBQUcsdUNBQWUsR0FBRyxFQUFFLEVBQUUsZ0JBQWdCLEVBQWhCLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNuRCxjQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM1Qjs7QUFmVyxvQkFBQSxXQWlCWixhQUFhLEdBQUEseUJBQUE7QUFDWCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3BDOztBQW5CVyxvQkFBQSxXQXFCWixTQUFTLEdBQUEscUJBQUE7QUFDUCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2hDOztBQXZCVyxvQkFBQSxXQXlCWixRQUFRLEdBQUEsb0JBQUE7QUFDTixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQy9COztBQTNCVyxvQkFBQSxXQTZCWixPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3RCOztBQS9CVyxvQkFBQSxXQWlDWixlQUFlLEdBQUEsMkJBQUE7QUFDYixrQkFBTSwwQkFBMEIsQ0FBQztTQUNsQzs7QUFuQ1csb0JBQUEsV0FxQ1osT0FBTyxHQUFBLG1CQUFBO0FBQ0wsZ0JBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEIscUNBakR3QixLQUFLLENBaUR2QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEI7O2VBeENXLFlBQUE7OztzQkFBQSxZQUFBIiwiZmlsZSI6InJlbmRlci1yZXN1bHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rZWRMaXN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEZXN0cm95YWJsZUJvdW5kcywgY2xlYXIgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IFVwZGF0aW5nVk0sIHsgRXhjZXB0aW9uSGFuZGxlciB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCB7IFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5cbmludGVyZmFjZSBSZW5kZXJSZXN1bHRPcHRpb25zIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuICBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZW5kZXJSZXN1bHQgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcywgRXhjZXB0aW9uSGFuZGxlciB7XG4gIHByaXZhdGUgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJpdmF0ZSB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIHByaXZhdGUgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcztcblxuICBjb25zdHJ1Y3Rvcih7IGVudiwgdXBkYXRpbmcsIGJvdW5kcyB9IDogUmVuZGVyUmVzdWx0T3B0aW9ucykge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMudXBkYXRpbmcgPSB1cGRhdGluZztcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIHJlcmVuZGVyKHsgYWx3YXlzUmV2YWxpZGF0ZSA9IGZhbHNlIH0gPSB7IGFsd2F5c1JldmFsaWRhdGU6IGZhbHNlIH0pIHtcbiAgICBsZXQgeyBlbnYsIHVwZGF0aW5nIH0gPSB0aGlzO1xuICAgIGxldCB2bSA9IG5ldyBVcGRhdGluZ1ZNKGVudiwgeyBhbHdheXNSZXZhbGlkYXRlIH0pO1xuICAgIHZtLmV4ZWN1dGUodXBkYXRpbmcsIHRoaXMpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgb3Bjb2RlcygpOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRpbmc7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgdGhyb3cgXCJ0aGlzIHNob3VsZCBuZXZlciBoYXBwZW5cIjtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZHMuZGVzdHJveSgpO1xuICAgIGNsZWFyKHRoaXMuYm91bmRzKTtcbiAgfVxufVxuIl19 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'; - 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); } } return obj; } - - 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 } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var UpdatingVM = (function () { function UpdatingVM(env, _ref) { var _ref$alwaysRevalidate = _ref.alwaysRevalidate; var alwaysRevalidate = _ref$alwaysRevalidate === undefined ? false : _ref$alwaysRevalidate; - _classCallCheck(this, UpdatingVM); - this.frameStack = new _glimmerUtil.Stack(); this.env = env; this.dom = env.getDOM(); this.alwaysRevalidate = alwaysRevalidate; } @@ -22782,34 +23354,27 @@ })(); exports.default = UpdatingVM; var BlockOpcode = (function (_UpdatingOpcode) { - _inherits(BlockOpcode, _UpdatingOpcode); + babelHelpers.inherits(BlockOpcode, _UpdatingOpcode); - function BlockOpcode(_ref2) { - var ops = _ref2.ops; - var children = _ref2.children; - var state = _ref2.state; - - _classCallCheck(this, BlockOpcode); - + 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 block = state.block; this.ops = ops; this.children = children; this.env = env; this.scope = scope; this.dynamicScope = dynamicScope; - this.bounds = block; + this.bounds = bounds; } BlockOpcode.prototype.parentElement = function parentElement() { return this.bounds.parentElement(); }; @@ -22855,16 +23420,14 @@ })(_glimmerRuntimeLibOpcodes.UpdatingOpcode); exports.BlockOpcode = BlockOpcode; var TryOpcode = (function (_BlockOpcode) { - _inherits(TryOpcode, _BlockOpcode); + babelHelpers.inherits(TryOpcode, _BlockOpcode); - function TryOpcode(options) { - _classCallCheck(this, TryOpcode); - - _BlockOpcode.call(this, options); + 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() { @@ -22901,18 +23464,16 @@ exports.TryOpcode = TryOpcode; var ListRevalidationDelegate = (function () { function ListRevalidationDelegate(opcode, marker) { - _classCallCheck(this, ListRevalidationDelegate); - + this.opcode = opcode; + this.marker = marker; this.didInsert = false; this.didDelete = false; - this.opcode = opcode; this.map = opcode.map; this.updating = opcode['children']; - this.marker = marker; } ListRevalidationDelegate.prototype.insert = function insert(key, item, memo, before) { var map = this.map; var opcode = this.opcode; @@ -22932,16 +23493,14 @@ 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(); - tryOpcode = new TryOpcode({ - state: state, - ops: opcode.ops, - children: vm.updatingOpcodeStack.current - }); + 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; }; @@ -22983,37 +23542,42 @@ })(); exports.ListRevalidationDelegate = ListRevalidationDelegate; var ListBlockOpcode = (function (_BlockOpcode2) { - _inherits(ListBlockOpcode, _BlockOpcode2); + babelHelpers.inherits(ListBlockOpcode, _BlockOpcode2); - function ListBlockOpcode(options) { - _classCallCheck(this, ListBlockOpcode); - - _BlockOpcode2.call(this, options); + function ListBlockOpcode(ops, state, bounds, children, artifacts) { + _BlockOpcode2.call(this, ops, state, bounds, children); this.type = "list-block"; this.map = _glimmerUtil.dict(); - this.artifacts = options.artifacts; - this.tag = this._tag = new _glimmerReference.UpdatableTag(_glimmerReference.CONSTANT_TAG); + 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() { + this.lastIterated = this.artifacts.tag.value(); this._tag.update(_glimmerReference.combineSlice(this.children)); }; ListBlockOpcode.prototype.evaluate = function evaluate(vm) { var artifacts = this.artifacts; - var bounds = this.bounds; - var dom = vm.dom; + var lastIterated = this.lastIterated; - 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); + 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) { @@ -23040,12 +23604,10 @@ exports.ListBlockOpcode = ListBlockOpcode; var UpdatingVMFrame = (function () { function UpdatingVMFrame(vm, ops, handler) { - _classCallCheck(this, UpdatingVMFrame); - this.vm = vm; this.ops = ops; this.current = ops.head(); this.exceptionHandler = handler; } @@ -23069,27 +23631,24 @@ return UpdatingVMFrame; })(); exports.UpdatingVMFrame = UpdatingVMFrame; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztRQXVCQSxVQUFBO0FBTUUsaUJBTkYsVUFBQSxDQU1jLEdBQWdCLEVBQUUsSUFBNEIsRUFBQTt3Q0FBNUIsSUFBNEIsQ0FBMUIsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSzs7a0NBTjFELFVBQUE7O0FBSVUsZ0JBQUEsQ0FBQSxVQUFVLEdBQTJCLGlCQXhCVCxLQUFLLEVBd0JnQyxDQUFDO0FBR3hFLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN4QixnQkFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1NBQzFDOztBQVZILGtCQUFBLFdBWUUsT0FBTyxHQUFBLGlCQUFDLE9BQXNCLEVBQUUsT0FBeUIsRUFBQTtnQkFDakQsVUFBVSxHQUFLLElBQUksQ0FBbkIsVUFBVTs7QUFFaEIsZ0JBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTNCLG1CQUFPLElBQUksRUFBRTtBQUNYLG9CQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNO0FBRWhDLG9CQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUVyRCxvQkFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQ25CLHdCQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLDZCQUFTO2lCQUNWO0FBRUQsNkJBL0NHLE1BQU0sQ0ErQ0YsS0FBSyxjQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUcsQ0FBQztBQUN2Qyw2QkFoREcsTUFBTSxDQWdERixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFckIsc0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxD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QUFDLENBQUMsS0FBSyxDQUFHO2FBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFZCxnQkFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFPLEtBQUssTUFBRyxDQUFDO0FBRXRDLG1CQUFPLElBQUksQ0FBQztTQUNiOztlQTFESCxlQUFBO09BQXFDLFdBQVc7Ozs7UUE2RGhELGVBQUE7QUFNRSxpQkFORixlQUFBLENBTWMsRUFBYyxFQUFFLEdBQWtCLEVBQUUsT0FBeUIsRUFBQTtrQ0FOM0UsZUFBQTs7QUFPSSxnQkFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDYixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7U0FDakM7O0FBWEgsdUJBQUEsV0FhRSxJQUFJLEdBQUEsY0FBQyxFQUFrQixFQUFBO0FBQ3JCLGdCQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNuQjs7QUFmSCx1QkFBQSxXQWlCRSxhQUFhLEdBQUEseUJBQUE7Z0JBQ0wsT0FBTyxHQUFVLElBQUksQ0FBckIsT0FBTztnQkFBRSxHQUFHLEdBQUssSUFBSSxDQUFaLEdBQUc7O0FBQ2xCLGdCQUFJLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEQsbUJBQU8sT0FBTyxDQUFDO1NBQ2hCOztBQXJCSCx1QkFBQSxXQXVCRSxlQUFlLEdBQUEsMkJBQUE7QUFDYixnQkFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pDOztlQXpCSCxlQUFBIiwiZmlsZSI6InVwZGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgTE9HR0VSLCBEZXN0cm95YWJsZSwgT3BhcXVlLCBTdGFjaywgTGlua2VkTGlzdCwgSW50ZXJuZWRTdHJpbmcsIERpY3QsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHtcbiAgQ29uc3RSZWZlcmVuY2UsXG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBVcGRhdGFibGVUYWcsXG4gIGNvbWJpbmVTbGljZSxcbiAgQ09OU1RBTlRfVEFHXG59IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE9wY29kZUpTT04sIE9wU2VxLCBVcGRhdGluZ09wY29kZSwgVXBkYXRpbmdPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IERPTUhlbHBlciB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuXG5pbXBvcnQgVk0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUhlbHBlcjtcbiAgcHVibGljIGFsd2F5c1JldmFsaWRhdGU6IGJvb2xlYW47XG4gIHByaXZhdGUgZnJhbWVTdGFjazogU3RhY2s8VXBkYXRpbmdWTUZyYW1lPiA9IG5ldyBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+KCk7XG5cbiAgY29uc3RydWN0b3IoZW52OiBFbnZpcm9ubWVudCwgeyBhbHdheXNSZXZhbGlkYXRlID0gZmFsc2UgfSkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZG9tID0gZW52LmdldERPTSgpO1xuICAgIHRoaXMuYWx3YXlzUmV2YWxpZGF0ZSA9IGFsd2F5c1JldmFsaWRhdGU7XG4gIH1cblxuICBleGVjdXRlKG9wY29kZXM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICBsZXQgeyBmcmFtZVN0YWNrIH0gPSB0aGlzO1xuXG4gICAgdGhpcy50cnkob3Bjb2RlcywgaGFuZGxlcik7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGZyYW1lU3RhY2suaXNFbXB0eSgpKSBicmVhaztcblxuICAgICAgbGV0IG9wY29kZSA9IHRoaXMuZnJhbWVTdGFjay5jdXJyZW50Lm5leHRTdGF0ZW1lbnQoKTtcblxuICAgICAgaWYgKG9wY29kZSA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBMT0dHRVIuZGVidWcoYFtWTV0gT1AgJHtvcGNvZGUudHlwZX1gKTtcbiAgICAgIExPR0dFUi50cmFjZShvcGNvZGUpO1xuXG4gICAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgZ290byhvcDogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLmZyYW1lU3RhY2suY3VycmVudC5nb3RvKG9wKTtcbiAgfVxuXG4gIHRyeShvcHM6IFVwZGF0aW5nT3BTZXEsIGhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXIpIHtcbiAgICB0aGlzLmZyYW1lU3RhY2sucHVzaChuZXcgVXBkYXRpbmdWTUZyYW1lKHRoaXMsIG9wcywgaGFuZGxlcikpO1xuICB9XG5cbiAgdGhyb3coKSB7XG4gICAgdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQuaGFuZGxlRXhjZXB0aW9uKCk7XG4gICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlOiBVcGRhdGluZ09wY29kZSkge1xuICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBoYW5kbGVFeGNlcHRpb24oKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWTVN0YXRlIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgc2NvcGU6IFNjb3BlO1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgYmxvY2s6IFRyYWNrZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tPcGNvZGVPcHRpb25zIHtcbiAgb3BzOiBPcFNlcTtcbiAgc3RhdGU6IFZNU3RhdGU7XG4gIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBCb3VuZHMsIERlc3Ryb3lhYmxlIHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG4gIHB1YmxpYyBuZXh0ID0gbnVsbDtcbiAgcHVibGljIHByZXYgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50O1xuICBwcm90ZWN0ZWQgc2NvcGU6IFNjb3BlO1xuICBwcm90ZWN0ZWQgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByb3RlY3RlZCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIHByb3RlY3RlZCBib3VuZHM6IFRyYWNrZXI7XG4gIHB1YmxpYyBvcHM6IE9wU2VxO1xuXG4gIGNvbnN0cnVjdG9yKHsgb3BzLCBjaGlsZHJlbiwgc3RhdGUgfTogQmxvY2tPcGNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGJsb2NrIH0gPSBzdGF0ZTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuYm91bmRzID0gYmxvY2s7XG4gIH1cblxuICBhYnN0cmFjdCBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCBudWxsKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZHMuZGVzdHJveSgpO1xuICB9XG5cbiAgZGlkRGVzdHJveSgpIHtcbiAgICB0aGlzLmVudi5kaWREZXN0cm95KHRoaXMuYm91bmRzKTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJndWlkXCJdID0gYCR7dGhpcy5fZ3VpZH1gO1xuICAgIGRldGFpbHNbXCJiZWdpblwiXSA9IGJlZ2luLmluc3BlY3QoKTtcbiAgICBkZXRhaWxzW1wiZW5kXCJdID0gZW5kLmluc3BlY3QoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJ5T3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUgaW1wbGVtZW50cyBFeGNlcHRpb25IYW5kbGVyIHtcbiAgcHVibGljIHR5cGUgPSBcInRyeVwiO1xuXG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEJsb2NrT3Bjb2RlT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyhDT05TVEFOVF9UQUcpO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuX3RhZy51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2sucmVzdW1lKFxuICAgICAgdGhpcy5lbnYsXG4gICAgICB0aGlzLmJvdW5kcyxcbiAgICAgIHRoaXMuYm91bmRzLnJlc2V0KGVudilcbiAgICApO1xuXG4gICAgbGV0IHZtID0gbmV3IFZNKHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2sgfSk7XG4gICAgbGV0IHJlc3VsdCA9IHZtLmV4ZWN1dGUodGhpcy5vcHMpO1xuXG4gICAgdGhpcy5jaGlsZHJlbiA9IHJlc3VsdC5vcGNvZGVzKCk7XG4gICAgdGhpcy5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oKTtcbiAgICBsZXQgYmVnaW4gPSB0aGlzLm9wcy5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHRoaXMub3BzLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcblxuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wiYmVnaW5cIl0gPSBKU09OLnN0cmluZ2lmeShiZWdpbi5pbnNwZWN0KCkpO1xuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wiZW5kXCJdID0gSlNPTi5zdHJpbmdpZnkoZW5kLmluc3BlY3QoKSk7XG5cbiAgICByZXR1cm4gc3VwZXIudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICBwcml2YXRlIG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlO1xuICBwcml2YXRlIG1hcDogRGljdDxCbG9ja09wY29kZT47XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuICBwcml2YXRlIG1hcmtlcjogQ29tbWVudDtcblxuICBwcml2YXRlIGRpZEluc2VydCA9IGZhbHNlO1xuICBwcml2YXRlIGRpZERlbGV0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKG9wY29kZTogTGlzdEJsb2NrT3Bjb2RlLCBtYXJrZXI6IENvbW1lbnQpIHtcbiAgICB0aGlzLm9wY29kZSA9IG9wY29kZTtcbiAgICB0aGlzLm1hcCA9IG9wY29kZS5tYXA7XG4gICAgdGhpcy51cGRhdGluZyA9IG9wY29kZVsnY2hpbGRyZW4nXTtcbiAgICB0aGlzLm1hcmtlciA9IG1hcmtlcjtcbiAgfVxuXG4gIGluc2VydChrZXk6IEludGVybmVkU3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBJbnRlcm5lZFN0cmluZykge1xuICAgIGxldCB7IG1hcCwgb3Bjb2RlLCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgbmV4dFNpYmxpbmc6IE5vZGUgPSBudWxsO1xuICAgIGxldCByZWZlcmVuY2UgPSBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgcmVmZXJlbmNlID0gbWFwWzxzdHJpbmc+YmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU7XG5cbiAgICB2bS5leGVjdXRlKG9wY29kZS5vcHMsIHZtID0+IHtcbiAgICAgIHZtLmZyYW1lLnNldEFyZ3MoRXZhbHVhdGVkQXJncy5wb3NpdGlvbmFsKFtpdGVtLCBtZW1vXSkpO1xuICAgICAgdm0uZnJhbWUuc2V0T3BlcmFuZChpdGVtKTtcbiAgICAgIHZtLmZyYW1lLnNldENvbmRpdGlvbihuZXcgQ29uc3RSZWZlcmVuY2UodHJ1ZSkpO1xuICAgICAgdm0uZnJhbWUuc2V0S2V5KGtleSk7XG5cbiAgICAgIGxldCBzdGF0ZSA9IHZtLmNhcHR1cmUoKTtcblxuICAgICAgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh7XG4gICAgICAgIHN0YXRlLFxuICAgICAgICBvcHM6IG9wY29kZS5vcHMsXG4gICAgICAgIGNoaWxkcmVuOiB2bS51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKHRyeU9wY29kZSwgcmVmZXJlbmNlKTtcblxuICAgIG1hcFs8c3RyaW5nPmtleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEluc2VydCA9IHRydWU7XG4gIH1cblxuICByZXRhaW4oa2V5OiBJbnRlcm5lZFN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4pIHtcbiAgfVxuXG4gIG1vdmUoa2V5OiBJbnRlcm5lZFN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogSW50ZXJuZWRTdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwWzxzdHJpbmc+a2V5XTtcbiAgICBsZXQgcmVmZXJlbmNlID0gbWFwWzxzdHJpbmc+YmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogSW50ZXJuZWRTdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFs8c3RyaW5nPmtleV07XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICBvcGNvZGUuZGlkRGVzdHJveSgpO1xuICAgIHRoaXMudXBkYXRpbmcucmVtb3ZlKG9wY29kZSk7XG4gICAgZGVsZXRlIG1hcFs8c3RyaW5nPmtleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIGlmICh0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSkge1xuICAgICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrT3Bjb2RlT3B0aW9ucyBleHRlbmRzIEJsb2NrT3Bjb2RlT3B0aW9ucyB7XG4gIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExpc3RCbG9ja09wY29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IG9wdGlvbnMuYXJ0aWZhY3RzO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyhDT05TVEFOVF9UQUcpO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMuX3RhZy51cGRhdGUoY29tYmluZVNsaWNlKHRoaXMuY2hpbGRyZW4pKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBib3VuZHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgIGxldCBtYXJrZXIgPSBkb20uY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgZG9tLmluc2VydEFmdGVyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIG1hcmtlciwgYm91bmRzLmxhc3ROb2RlKCkpO1xuXG4gICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICBsZXQgc3luY2hyb25pemVyID0gbmV3IEl0ZXJhdG9yU3luY2hyb25pemVyKHsgdGFyZ2V0LCBhcnRpZmFjdHMgfSk7XG5cbiAgICBzeW5jaHJvbml6ZXIuc3luYygpO1xuXG4gICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcblxuICAgIC8vIFJ1biBub3ctdXBkYXRlZCB1cGRhdGluZyBvcGNvZGVzXG4gICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICB9XG5cbiAgdm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmc6IE5vZGUpIHtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLmZvckluaXRpYWxSZW5kZXIoXG4gICAgICB0aGlzLmVudixcbiAgICAgIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKSxcbiAgICAgIG5leHRTaWJsaW5nXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgVk0oeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oKTtcbiAgICBsZXQgbWFwID0gdGhpcy5tYXA7XG5cbiAgICBsZXQgaW5uZXIgPSBPYmplY3Qua2V5cyhtYXApLm1hcChrZXkgPT4ge1xuICAgICAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KGtleSl9OiAke21hcFtrZXldLl9ndWlkfWA7XG4gICAgfSkuam9pbihcIiwgXCIpO1xuXG4gICAganNvbltcImRldGFpbHNcIl1bXCJtYXBcIl0gPSBgeyR7aW5uZXJ9fWA7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSB2bTogVXBkYXRpbmdWTTtcbiAgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXE7XG4gIHByaXZhdGUgY3VycmVudDogVXBkYXRpbmdPcGNvZGU7XG4gIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcjtcblxuICBjb25zdHJ1Y3Rvcih2bTogVXBkYXRpbmdWTSwgb3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gICAgdGhpcy5leGNlcHRpb25IYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5jdXJyZW50ID0gb3A7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gIH1cbn1cbiJdfQ== + +// Tags +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQTJCYyxVQUFBO0FBTVosaUJBTlksVUFBQSxDQU1BLEdBQWdCLEVBQUUsSUFBNEIsRUFBQTt3Q0FBNUIsSUFBNEIsQ0FBMUIsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSzs7QUFGaEQsZ0JBQUEsQ0FBQSxVQUFVLEdBQTJCLGlCQTVCdEIsS0FBSyxFQTRCNkMsQ0FBQztBQUd4RSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUMxQzs7QUFWVyxrQkFBQSxXQVlaLE9BQU8sR0FBQSxpQkFBQyxPQUFzQixFQUFFLE9BQXlCLEVBQUE7Z0JBQ2pELFVBQVUsR0FBSyxJQUFJLENBQW5CLFVBQVU7O0FBRWhCLGdCQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUzQixtQkFBTyxJQUFJLEVBQUU7QUFDWCxvQkFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUVoQyxvQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFckQsb0JBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUNuQix3QkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0Qiw2QkFBUztpQkFDVjtBQUVELDZCQW5ERyxNQUFNLENBbURGLEtBQUssY0FBWSxNQUFNLENBQUMsSUFBSSxDQUFHLENBQUM7QUFDdkMsNkJBcERHLE1BQU0sQ0FvREYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXJCLHNCQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NB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QUE7Z0JBQ0wsT0FBTyxHQUFVLElBQUksQ0FBckIsT0FBTztnQkFBRSxHQUFHLEdBQUssSUFBSSxDQUFaLEdBQUc7O0FBQ2xCLGdCQUFJLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEQsbUJBQU8sT0FBTyxDQUFDO1NBQ2hCOztBQXJCRyx1QkFBQSxXQXVCSixlQUFlLEdBQUEsMkJBQUE7QUFDYixnQkFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pDOztlQXpCRyxlQUFBIiwiZmlsZSI6InVwZGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlLCBEeW5hbWljU2NvcGUsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVCb3VuZHMsIGNsZWFyLCBtb3ZlIGFzIG1vdmVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrLCBUcmFja2VyLCBVcGRhdGFibGVUcmFja2VyIH0gZnJvbSAnLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBMT0dHRVIsIE9wYXF1ZSwgU3RhY2ssIExpbmtlZExpc3QsIERpY3QsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHtcbiAgQ29uc3RSZWZlcmVuY2UsXG4gIFBhdGhSZWZlcmVuY2UsXG4gIEl0ZXJhdGlvbkFydGlmYWN0cyxcbiAgSXRlcmF0b3JTeW5jaHJvbml6ZXIsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUsXG5cbiAgLy8gVGFnc1xuICBjb21iaW5lLFxuICBSZXZpc2lvbixcbiAgVXBkYXRhYmxlVGFnLFxuICBjb21iaW5lU2xpY2UsXG4gIENPTlNUQU5UX1RBRyxcbiAgSU5JVElBTFxufSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBPcGNvZGVKU09OLCBPcFNlcSwgVXBkYXRpbmdPcGNvZGUsIFVwZGF0aW5nT3BTZXEgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBET01DaGFuZ2VzIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5pbXBvcnQgKiBhcyBTaW1wbGUgZnJvbSAnLi4vZG9tL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgVk0gZnJvbSAnLi9hcHBlbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGluZ1ZNIHtcbiAgcHVibGljIGVudjogRW52aXJvbm1lbnQ7XG4gIHB1YmxpYyBkb206IERPTUNoYW5nZXM7XG4gIHB1YmxpYyBhbHdheXNSZXZhbGlkYXRlOiBib29sZWFuO1xuICBwcml2YXRlIGZyYW1lU3RhY2s6IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4gPSBuZXcgU3RhY2s8VXBkYXRpbmdWTUZyYW1lPigpO1xuXG4gIGNvbnN0cnVjdG9yKGVudjogRW52aXJvbm1lbnQsIHsgYWx3YXlzUmV2YWxpZGF0ZSA9IGZhbHNlIH0pIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmRvbSA9IGVudi5nZXRET00oKTtcbiAgICB0aGlzLmFsd2F5c1JldmFsaWRhdGUgPSBhbHdheXNSZXZhbGlkYXRlO1xuICB9XG5cbiAgZXhlY3V0ZShvcGNvZGVzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgbGV0IHsgZnJhbWVTdGFjayB9ID0gdGhpcztcblxuICAgIHRoaXMudHJ5KG9wY29kZXMsIGhhbmRsZXIpO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChmcmFtZVN0YWNrLmlzRW1wdHkoKSkgYnJlYWs7XG5cbiAgICAgIGxldCBvcGNvZGUgPSB0aGlzLmZyYW1lU3RhY2suY3VycmVudC5uZXh0U3RhdGVtZW50KCk7XG5cbiAgICAgIGlmIChvcGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgTE9HR0VSLmRlYnVnKGBbVk1dIE9QICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgICBMT0dHRVIudHJhY2Uob3Bjb2RlKTtcblxuICAgICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQuZ290byhvcCk7XG4gIH1cblxuICB0cnkob3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgdGhpcy5mcmFtZVN0YWNrLnB1c2gobmV3IFVwZGF0aW5nVk1GcmFtZSh0aGlzLCBvcHMsIGhhbmRsZXIpKTtcbiAgfVxuXG4gIHRocm93KCkge1xuICAgIHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LmhhbmRsZUV4Y2VwdGlvbigpO1xuICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVk1TdGF0ZSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIHNjb3BlOiBTY29wZTtcbiAgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9ja09wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIGltcGxlbWVudHMgRGVzdHJveWFibGVCb3VuZHMge1xuICBwdWJsaWMgdHlwZSA9IFwiYmxvY2tcIjtcbiAgcHVibGljIG5leHQgPSBudWxsO1xuICBwdWJsaWMgcHJldiA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGVudjogRW52aXJvbm1lbnQ7XG4gIHByb3RlY3RlZCBzY29wZTogU2NvcGU7XG4gIHByb3RlY3RlZCBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgcHJvdGVjdGVkIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcbiAgcHJvdGVjdGVkIGJvdW5kczogRGVzdHJveWFibGVCb3VuZHM7XG4gIHB1YmxpYyBvcHM6IE9wU2VxO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogT3BTZXEsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcigpO1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gc3RhdGU7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgYmVnaW4gPSB0aGlzLm9wcy5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHRoaXMub3BzLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcImd1aWRcIl0gPSBgJHt0aGlzLl9ndWlkfWA7XG4gICAgZGV0YWlsc1tcImJlZ2luXCJdID0gYmVnaW4uaW5zcGVjdCgpO1xuICAgIGRldGFpbHNbXCJlbmRcIl0gPSBlbmQuaW5zcGVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICB0aGlzLl90YWcudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLnJlc3VtZShcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMsXG4gICAgICB0aGlzLmJvdW5kcy5yZXNldChlbnYpXG4gICAgKTtcblxuICAgIGxldCB2bSA9IG5ldyBWTSh7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrIH0pO1xuICAgIGxldCByZXN1bHQgPSB2bS5leGVjdXRlKHRoaXMub3BzKTtcblxuICAgIHRoaXMuY2hpbGRyZW4gPSByZXN1bHQub3Bjb2RlcygpO1xuICAgIHRoaXMuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImJlZ2luXCJdID0gSlNPTi5zdHJpbmdpZnkoYmVnaW4uaW5zcGVjdCgpKTtcbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImVuZFwiXSA9IEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUgaW1wbGVtZW50cyBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlIHtcbiAgcHJpdmF0ZSBtYXA6IERpY3Q8QmxvY2tPcGNvZGU+O1xuICBwcml2YXRlIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPjtcblxuICBwcml2YXRlIGRpZEluc2VydCA9IGZhbHNlO1xuICBwcml2YXRlIGRpZERlbGV0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3Bjb2RlOiBMaXN0QmxvY2tPcGNvZGUsIHByaXZhdGUgbWFya2VyOiBTaW1wbGUuQ29tbWVudCkge1xuICAgIHRoaXMubWFwID0gb3Bjb2RlLm1hcDtcbiAgICB0aGlzLnVwZGF0aW5nID0gb3Bjb2RlWydjaGlsZHJlbiddO1xuICB9XG5cbiAgaW5zZXJ0KGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIG9wY29kZSwgdXBkYXRpbmcgfSA9IHRoaXM7XG4gICAgbGV0IG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSA9IG51bGw7XG4gICAgbGV0IHJlZmVyZW5jZSA9IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXTtcbiAgICAgIG5leHRTaWJsaW5nID0gcmVmZXJlbmNlLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm1hcmtlcjtcbiAgICB9XG5cbiAgICBsZXQgdm0gPSBvcGNvZGUudm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmcpO1xuICAgIGxldCB0cnlPcGNvZGU6IFRyeU9wY29kZTtcblxuICAgIHZtLmV4ZWN1dGUob3Bjb2RlLm9wcywgdm0gPT4ge1xuICAgICAgdm0uZnJhbWUuc2V0QXJncyhFdmFsdWF0ZWRBcmdzLnBvc2l0aW9uYWwoW2l0ZW0sIG1lbW9dKSk7XG4gICAgICB2bS5mcmFtZS5zZXRPcGVyYW5kKGl0ZW0pO1xuICAgICAgdm0uZnJhbWUuc2V0Q29uZGl0aW9uKG5ldyBDb25zdFJlZmVyZW5jZSh0cnVlKSk7XG4gICAgICB2bS5mcmFtZS5zZXRLZXkoa2V5KTtcblxuICAgICAgbGV0IHN0YXRlID0gdm0uY2FwdHVyZSgpO1xuICAgICAgbGV0IHRyYWNrZXIgPSB2bS5zdGFjaygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuXG4gICAgICB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKG9wY29kZS5vcHMsIHN0YXRlLCB0cmFja2VyLCB2bS51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQpO1xuICAgIH0pO1xuXG4gICAgdHJ5T3Bjb2RlLmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuXG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKHRyeU9wY29kZSwgcmVmZXJlbmNlKTtcblxuICAgIG1hcFtrZXldID0gdHJ5T3Bjb2RlO1xuXG4gICAgdGhpcy5kaWRJbnNlcnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0YWluKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPikge1xuICB9XG5cbiAgbW92ZShrZXk6IHN0cmluZywgaXRlbTogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBtZW1vOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIGJlZm9yZTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwLCB1cGRhdGluZyB9ID0gdGhpcztcblxuICAgIGxldCBlbnRyeSA9IG1hcFtrZXldO1xuICAgIGxldCByZWZlcmVuY2UgPSBtYXBbYmVmb3JlXSB8fCBudWxsO1xuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgcmVmZXJlbmNlLmZpcnN0Tm9kZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUJvdW5kcyhlbnRyeSwgdGhpcy5tYXJrZXIpO1xuICAgIH1cblxuICAgIHVwZGF0aW5nLnJlbW92ZShlbnRyeSk7XG4gICAgdXBkYXRpbmcuaW5zZXJ0QmVmb3JlKGVudHJ5LCByZWZlcmVuY2UpO1xuICB9XG5cbiAgZGVsZXRlKGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgbWFwIH0gPSB0aGlzO1xuICAgIGxldCBvcGNvZGUgPSBtYXBba2V5XTtcbiAgICBjbGVhcihvcGNvZGUpO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgdGhpcy51cGRhdGluZy5yZW1vdmUob3Bjb2RlKTtcbiAgICBkZWxldGUgbWFwW2tleV07XG5cbiAgICB0aGlzLmRpZERlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBkb25lKCkge1xuICAgIGlmICh0aGlzLmRpZEluc2VydCB8fCB0aGlzLmRpZERlbGV0ZSkge1xuICAgICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QmxvY2tPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSB7XG4gIHB1YmxpYyB0eXBlID0gXCJsaXN0LWJsb2NrXCI7XG4gIHB1YmxpYyBtYXAgPSBkaWN0PEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHM7XG5cbiAgcHJpdmF0ZSBsYXN0SXRlcmF0ZWQ6IFJldmlzaW9uID0gSU5JVElBTDtcbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG5cbiAgY29uc3RydWN0b3Iob3BzOiBPcFNlcSwgc3RhdGU6IFZNU3RhdGUsIGJvdW5kczogVHJhY2tlciwgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+LCBhcnRpZmFjdHM6IEl0ZXJhdGlvbkFydGlmYWN0cykge1xuICAgIHN1cGVyKG9wcywgc3RhdGUsIGJvdW5kcywgY2hpbGRyZW4pO1xuICAgIHRoaXMuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgIGxldCBfdGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyhDT05TVEFOVF9UQUcpO1xuICAgIHRoaXMudGFnID0gY29tYmluZShbYXJ0aWZhY3RzLnRhZywgX3RhZ10pO1xuICB9XG5cbiAgZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG4gICAgdGhpcy5fdGFnLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgeyBhcnRpZmFjdHMsIGxhc3RJdGVyYXRlZCB9ID0gdGhpcztcblxuICAgIGlmICghYXJ0aWZhY3RzLnRhZy52YWxpZGF0ZShsYXN0SXRlcmF0ZWQpKSB7XG4gICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBsZXQgbWFya2VyID0gZG9tLmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgZG9tLmluc2VydEFmdGVyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIG1hcmtlciwgYm91bmRzLmxhc3ROb2RlKCkpO1xuXG4gICAgICBsZXQgdGFyZ2V0ID0gbmV3IExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSh0aGlzLCBtYXJrZXIpO1xuICAgICAgbGV0IHN5bmNocm9uaXplciA9IG5ldyBJdGVyYXRvclN5bmNocm9uaXplcih7IHRhcmdldCwgYXJ0aWZhY3RzIH0pO1xuXG4gICAgICBzeW5jaHJvbml6ZXIuc3luYygpO1xuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQoKS5yZW1vdmVDaGlsZChtYXJrZXIpO1xuICAgIH1cblxuICAgIC8vIFJ1biBub3ctdXBkYXRlZCB1cGRhdGluZyBvcGNvZGVzXG4gICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICB9XG5cbiAgdm1Gb3JJbnNlcnRpb24obmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlKSB7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKFxuICAgICAgdGhpcy5lbnYsXG4gICAgICB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCksXG4gICAgICBuZXh0U2libGluZ1xuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IFZNKHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2sgfSk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nVk1GcmFtZSB7XG4gIHByaXZhdGUgdm06IFVwZGF0aW5nVk07XG4gIHByaXZhdGUgb3BzOiBVcGRhdGluZ09wU2VxO1xuICBwcml2YXRlIGN1cnJlbnQ6IFVwZGF0aW5nT3Bjb2RlO1xuICBwcml2YXRlIGV4Y2VwdGlvbkhhbmRsZXI6IEV4Y2VwdGlvbkhhbmRsZXI7XG5cbiAgY29uc3RydWN0b3Iodm06IFVwZGF0aW5nVk0sIG9wczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIHRoaXMudm0gPSB2bTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmN1cnJlbnQgPSBvcHMuaGVhZCgpO1xuICAgIHRoaXMuZXhjZXB0aW9uSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuY3VycmVudCA9IG9wO1xuICB9XG5cbiAgbmV4dFN0YXRlbWVudCgpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgbGV0IHsgY3VycmVudCwgb3BzIH0gPSB0aGlzO1xuICAgIGlmIChjdXJyZW50KSB0aGlzLmN1cnJlbnQgPSBvcHMubmV4dE5vZGUoY3VycmVudCk7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgdGhpcy5leGNlcHRpb25IYW5kbGVyLmhhbmRsZUV4Y2VwdGlvbigpO1xuICB9XG59XG4iXX0= enifed('glimmer-syntax/index', ['exports', 'glimmer-syntax/lib/syntax', 'glimmer-syntax/lib/utils', 'glimmer-syntax/lib/parser'], function (exports, _glimmerSyntaxLibSyntax, _glimmerSyntaxLibUtils, _glimmerSyntaxLibParser) { 'use strict'; - 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); } } return obj; } - - _defaults(exports, _interopExportWildcard(_glimmerSyntaxLibSyntax, _defaults)); - + babelHelpers.defaults(exports, babelHelpers.interopExportWildcard(_glimmerSyntaxLibSyntax, babelHelpers.defaults)); exports.isHelper = _glimmerSyntaxLibUtils.isHelper; - exports.isSelfGet = _glimmerSyntaxLibUtils.isSelfGet; exports.preprocess = _glimmerSyntaxLibParser.preprocess; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztVQUNTLFFBQVEsMEJBQVIsUUFBUTtVQUFFLFNBQVMsMEJBQVQsU0FBUztVQUNuQixVQUFVLDJCQUFWLFVBQVUiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zeW50YXgnO1xuZXhwb3J0IHsgaXNIZWxwZXIsIGlzU2VsZkdldCB9IGZyb20gJy4vbGliL3V0aWxzJztcbmV4cG9ydCB7IHByZXByb2Nlc3MgfSBmcm9tICcuL2xpYi9wYXJzZXInO1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7VUFDUyxRQUFRLDBCQUFSLFFBQVE7VUFDUixVQUFVLDJCQUFWLFVBQVUiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zeW50YXgnO1xuZXhwb3J0IHsgaXNIZWxwZXIgfSBmcm9tICcuL2xpYi91dGlscyc7XG5leHBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSAnLi9saWIvcGFyc2VyJztcbiJdfQ== enifed("glimmer-syntax/lib/builders", ["exports"], function (exports) { // Statements + // Statements "use strict"; exports.buildMustache = buildMustache; exports.buildBlock = buildBlock; exports.buildElementModifier = buildElementModifier; @@ -23351,11 +23910,11 @@ program: buildProgram, loc: buildLoc, pos: buildPosition }; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9idWlsZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsYUFBQSxhQUFBLENBQThCLElBQUksRUFBRSxNQUFPLEVBQUUsSUFBSyxFQUFFLEdBQUksRUFBRSxHQUFJLEVBQUE7QUFDNUQsZUFBTztBQUNMLGdCQUFJLEVBQUUsbUJBQW1CO0FBQ3pCLGdCQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztBQUNyQixrQkFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FBQ3BCLGdCQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsbUJBQU8sRUFBRSxDQUFDLEdBQUc7QUFDYixlQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNuQixDQUFDO0tBQ0g7O0FBRUQsYUFBQSxVQUFBLENBQTJCLElBQUksRUFBRSxNQUFPLEVBQUUsSUFBSyxFQUFFLE9BQVEsRUFBRSxPQUFRLEVBQUUsR0FBSSxFQUFBO0FBQ3ZFLGVBQU87QUFDTCxnQkFBSSxFQUFFLGdCQUFnQjtBQUN0QixnQkFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsa0JBQU0sRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQzNDLGdCQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsbUJBQU8sRUFBRSxPQUFPLElBQUksSUFBSTtBQUN4QixtQkFBTyxFQUFFLE9BQU8sSUFBSSxJQUFJO0FBQ3hCLGVBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDO1NBQ25CLENBQUM7S0FDSDs7QUFFRCxhQUFBLG9CQUFBLENBQXFDLElBQUksRUFBRSxNQUFPLEVBQUUsSUFBSyxFQUFFLEdBQUksRUFBQTtBQUM3RCxlQUFPO0FBQ0wsZ0JBQUksRUFBRSwwQkFBMEI7QUFDaEMsZ0JBQUksRUFB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SUFBSTtnQkFBMUIsU0FBUyxHQUFhLElBQUk7Z0JBQWYsTUFBTSxHQUFLLElBQUk7O0FBQ2pFLG1CQUFPO0FBQ0wsc0JBQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQzNCLHFCQUFLLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUM7QUFDNUMsbUJBQUcsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQzthQUN2QyxDQUFDO1NBQ0g7S0FDRjtzQkFFYztBQUNiLGdCQUFRLEVBQUUsYUFBYTtBQUN2QixhQUFLLEVBQUUsVUFBVTtBQUNqQixlQUFPLEVBQUUsWUFBWTtBQUNyQixlQUFPLEVBQUUsWUFBWTtBQUNyQixlQUFPLEVBQUUsWUFBWTtBQUNyQix1QkFBZSxFQUFFLG9CQUFvQjtBQUNyQyxZQUFJLEVBQUUsU0FBUztBQUNmLFlBQUksRUFBRSxTQUFTO0FBQ2YsYUFBSyxFQUFFLFVBQVU7QUFDakIsWUFBSSxFQUFFLFNBQVM7QUFDZixjQUFNLEVBQUUsV0FBVztBQUNuQixlQUFPLEVBQUUsWUFBWTtBQUNyQixjQUFNLEVBQUUsV0FBVztBQUNuQixpQkFBUyxFQUFFLGNBQWM7QUFDekIsWUFBSSxFQUFFLFNBQVM7QUFDZixjQUFNLEVBQUUsV0FBVztBQUNuQixZQUFJLEVBQUUsU0FBUztBQUNmLFlBQUksRUFBRSxTQUFTO0FBQ2YsZUFBTyxFQUFFLFlBQVk7QUFDckIsV0FBRyxFQUFFLFFBQVE7QUFDYixXQUFHLEVBQUUsYUFBYTtLQUNuQiIsImZpbGUiOiJidWlsZGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0YXRlbWVudHNcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTXVzdGFjaGUocGF0aCwgcGFyYW1zPywgaGFzaD8sIHJhdz8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIk11c3RhY2hlU3RhdGVtZW50XCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBlc2NhcGVkOiAhcmF3LFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCbG9jayhwYXRoLCBwYXJhbXM/LCBoYXNoPywgcHJvZ3JhbT8sIGludmVyc2U/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJCbG9ja1N0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyA/IHBhcmFtcy5tYXAoYnVpbGRQYXRoKSA6IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBwcm9ncmFtOiBwcm9ncmFtIHx8IG51bGwsXG4gICAgaW52ZXJzZTogaW52ZXJzZSB8fCBudWxsLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zPywgaGFzaD8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkVsZW1lbnRNb2RpZmllclN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgbG9jOiBidWlsZExvYyhsb2MpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhcnRpYWwobmFtZSwgcGFyYW1zLCBoYXNoLCBpbmRlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlBhcnRpYWxTdGF0ZW1lbnRcIixcbiAgICBuYW1lOiBuYW1lLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBpbmRlbnQ6IGluZGVudFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb21tZW50KHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21tZW50U3RhdGVtZW50XCIsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbmNhdChwYXJ0cykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQ29uY2F0U3RhdGVtZW50XCIsXG4gICAgcGFydHM6IHBhcnRzIHx8IFtdXG4gIH07XG59XG5cbi8vIE5vZGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVsZW1lbnQodGFnLCBhdHRyaWJ1dGVzPywgbW9kaWZpZXJzPywgY2hpbGRyZW4/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJFbGVtZW50Tm9kZVwiLFxuICAgIHRhZzogdGFnIHx8IFwiXCIsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyB8fCBbXSxcbiAgICBibG9ja1BhcmFtczogW10sXG4gICAgbW9kaWZpZXJzOiBtb2RpZmllcnMgfHwgW10sXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuIHx8IFtdLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBdHRyKG5hbWUsIHZhbHVlLCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJBdHRyTm9kZVwiLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUZXh0KGNoYXJzPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiVGV4dE5vZGVcIixcbiAgICBjaGFyczogY2hhcnMgfHwgXCJcIixcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuLy8gRXhwcmVzc2lvbnNcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2V4cHIocGF0aCwgcGFyYW1zPywgaGFzaD8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlN1YkV4cHJlc3Npb25cIixcbiAgICBwYXRoOiBidWlsZFBhdGgocGF0aCksXG4gICAgcGFyYW1zOiBwYXJhbXMgfHwgW10sXG4gICAgaGFzaDogaGFzaCB8fCBidWlsZEhhc2goW10pLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYXRoKG9yaWdpbmFsLCBsb2M/KSB7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWwgIT09ICdzdHJpbmcnKSByZXR1cm4gb3JpZ2luYWw7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlBhdGhFeHByZXNzaW9uXCIsXG4gICAgb3JpZ2luYWw6IG9yaWdpbmFsLFxuICAgIHBhcnRzOiBvcmlnaW5hbC5zcGxpdCgnLicpLFxuICAgIGRhdGE6IGZhbHNlLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlN0cmluZ0xpdGVyYWxcIixcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb3JpZ2luYWw6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEJvb2xlYW4odmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkJvb2xlYW5MaXRlcmFsXCIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIk51bWJlckxpdGVyYWxcIixcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb3JpZ2luYWw6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE51bGwoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJOdWxsTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiBudWxsLFxuICAgIG9yaWdpbmFsOiBudWxsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVuZGVmaW5lZCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlVuZGVmaW5lZExpdGVyYWxcIixcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgIG9yaWdpbmFsOiB1bmRlZmluZWRcbiAgfTtcbn1cblxuLy8gTWlzY2VsbGFuZW91c1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRIYXNoKHBhaXJzPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiSGFzaFwiLFxuICAgIHBhaXJzOiBwYWlycyB8fCBbXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYWlyKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkhhc2hQYWlyXCIsXG4gICAga2V5OiBrZXksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb2dyYW0oYm9keT8sIGJsb2NrUGFyYW1zPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiUHJvZ3JhbVwiLFxuICAgIGJvZHk6IGJvZHkgfHwgW10sXG4gICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zIHx8IFtdLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFNvdXJjZShzb3VyY2U/KSB7XG4gIHJldHVybiBzb3VyY2UgfHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUG9zaXRpb24obGluZSwgY29sdW1uKSB7XG4gIHJldHVybiB7XG4gICAgbGluZTogKHR5cGVvZiBsaW5lID09PSAnbnVtYmVyJykgPyBsaW5lIDogbnVsbCxcbiAgICBjb2x1bW46ICh0eXBlb2YgY29sdW1uID09PSAnbnVtYmVyJykgPyBjb2x1bW4gOiBudWxsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTG9jKGxvYzogeyBzb3VyY2U6IGFueSwgc3RhcnQ6IGFueSwgZW5kOiBhbnkgfSk6IHsgc291cmNlOiBhbnksIHN0YXJ0OiBhbnksIGVuZDogYW55IH07XG5mdW5jdGlvbiBidWlsZExvYyhzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lPywgZW5kQ29sdW1uPywgc291cmNlPyk6IHsgc291cmNlOiBhbnksIHN0YXJ0OiBhbnksIGVuZDogYW55IH07XG5cbmZ1bmN0aW9uIGJ1aWxkTG9jKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IGxvYyA9IGFyZ3NbMF07XG5cbiAgICBpZiAodHlwZW9mIGxvYyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2UobG9jLnNvdXJjZSksXG4gICAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uKSxcbiAgICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGxvYy5lbmQubGluZSwgbG9jLmVuZC5jb2x1bW4pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IFsgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2UgXSA9IGFyZ3M7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2Uoc291cmNlKSxcbiAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pLFxuICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGVuZExpbmUsIGVuZENvbHVtbilcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbXVzdGFjaGU6IGJ1aWxkTXVzdGFjaGUsXG4gIGJsb2NrOiBidWlsZEJsb2NrLFxuICBwYXJ0aWFsOiBidWlsZFBhcnRpYWwsXG4gIGNvbW1lbnQ6IGJ1aWxkQ29tbWVudCxcbiAgZWxlbWVudDogYnVpbGRFbGVtZW50LFxuICBlbGVtZW50TW9kaWZpZXI6IGJ1aWxkRWxlbWVudE1vZGlmaWVyLFxuICBhdHRyOiBidWlsZEF0dHIsXG4gIHRleHQ6IGJ1aWxkVGV4dCxcbiAgc2V4cHI6IGJ1aWxkU2V4cHIsXG4gIHBhdGg6IGJ1aWxkUGF0aCxcbiAgc3RyaW5nOiBidWlsZFN0cmluZyxcbiAgYm9vbGVhbjogYnVpbGRCb29sZWFuLFxuICBudW1iZXI6IGJ1aWxkTnVtYmVyLFxuICB1bmRlZmluZWQ6IGJ1aWxkVW5kZWZpbmVkLFxuICBudWxsOiBidWlsZE51bGwsXG4gIGNvbmNhdDogYnVpbGRDb25jYXQsXG4gIGhhc2g6IGJ1aWxkSGFzaCxcbiAgcGFpcjogYnVpbGRQYWlyLFxuICBwcm9ncmFtOiBidWlsZFByb2dyYW0sXG4gIGxvYzogYnVpbGRMb2MsXG4gIHBvczogYnVpbGRQb3NpdGlvblxufTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9idWlsZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLGFBQUEsYUFBQSxDQUF3QixJQUFJLEVBQUUsTUFBTyxFQUFFLElBQUssRUFBRSxHQUFJLEVBQUUsR0FBSSxFQUFBO0FBQzVELGVBQU87QUFDTCxnQkFBSSxFQUFFLG1CQUFtQjtBQUN6QixnQkFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsa0JBQU0sRUFBRSxNQUFNLElBQUksRUFBRTtBQUNwQixnQkFBSSxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQzNCLG1CQUFPLEVBQUUsQ0FBQyxHQUFHO0FBQ2IsZUFBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7U0FDbkIsQ0FBQztLQUNIOztBQUVLLGFBQUEsVUFBQSxDQUFxQixJQUFJLEVBQUUsTUFBTyxFQUFFLElBQUssRUFBRSxPQUFRLEVBQUUsT0FBUSxFQUFFLEdBQUksRUFBQTtBQUN2RSxlQUFPO0FBQ0wsZ0JBQUksRUFBRSxnQkFBZ0I7QUFDdEIsZ0JBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3JCLGtCQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUMzQyxnQkFBSSxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQzNCLG1CQUFPLEVBQUUsT0FBTyxJQUFJLElBQUk7QUFDeEIsbUJBQU8sRUFBRSxPQUFPLElBQUksSUFBSTtBQUN4QixlQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNuQixDQUFDO0tBQ0g7O0FBRUssYUFBQSxvQkFBQSxDQUErQixJQUFJLEVBQUUsTUFBTyxFQUFFLElBQUssRUFBRSxHQUFJLEVBQUE7QUFDN0QsZUFBTztBQUNMLGdCQUFJLEVBQUUsMEJBQTBCO0FBQ2hDLGdCQUFJLEVB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LElBQUk7Z0JBQTFCLFNBQVMsR0FBYSxJQUFJO2dCQUFmLE1BQU0sR0FBSyxJQUFJOztBQUNqRSxtQkFBTztBQUNMLHNCQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUMzQixxQkFBSyxFQUFFLGFBQWEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0FBQzVDLG1CQUFHLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUM7YUFDdkMsQ0FBQztTQUNIO0tBQ0Y7c0JBRWM7QUFDYixnQkFBUSxFQUFFLGFBQWE7QUFDdkIsYUFBSyxFQUFFLFVBQVU7QUFDakIsZUFBTyxFQUFFLFlBQVk7QUFDckIsZUFBTyxFQUFFLFlBQVk7QUFDckIsZUFBTyxFQUFFLFlBQVk7QUFDckIsdUJBQWUsRUFBRSxvQkFBb0I7QUFDckMsWUFBSSxFQUFFLFNBQVM7QUFDZixZQUFJLEVBQUUsU0FBUztBQUNmLGFBQUssRUFBRSxVQUFVO0FBQ2pCLFlBQUksRUFBRSxTQUFTO0FBQ2YsY0FBTSxFQUFFLFdBQVc7QUFDbkIsZUFBTyxFQUFFLFlBQVk7QUFDckIsY0FBTSxFQUFFLFdBQVc7QUFDbkIsaUJBQVMsRUFBRSxjQUFjO0FBQ3pCLFlBQUksRUFBRSxTQUFTO0FBQ2YsY0FBTSxFQUFFLFdBQVc7QUFDbkIsWUFBSSxFQUFFLFNBQVM7QUFDZixZQUFJLEVBQUUsU0FBUztBQUNmLGVBQU8sRUFBRSxZQUFZO0FBQ3JCLFdBQUcsRUFBRSxRQUFRO0FBQ2IsV0FBRyxFQUFFLGFBQWE7S0FDbkIiLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdGF0ZW1lbnRzXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE11c3RhY2hlKHBhdGgsIHBhcmFtcz8sIGhhc2g/LCByYXc/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJNdXN0YWNoZVN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgZXNjYXBlZDogIXJhdyxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQmxvY2socGF0aCwgcGFyYW1zPywgaGFzaD8sIHByb2dyYW0/LCBpbnZlcnNlPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQmxvY2tTdGF0ZW1lbnRcIixcbiAgICBwYXRoOiBidWlsZFBhdGgocGF0aCksXG4gICAgcGFyYW1zOiBwYXJhbXMgPyBwYXJhbXMubWFwKGJ1aWxkUGF0aCkgOiBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgcHJvZ3JhbTogcHJvZ3JhbSB8fCBudWxsLFxuICAgIGludmVyc2U6IGludmVyc2UgfHwgbnVsbCxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRWxlbWVudE1vZGlmaWVyKHBhdGgsIHBhcmFtcz8sIGhhc2g/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJFbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRcIixcbiAgICBwYXRoOiBidWlsZFBhdGgocGF0aCksXG4gICAgcGFyYW1zOiBwYXJhbXMgfHwgW10sXG4gICAgaGFzaDogaGFzaCB8fCBidWlsZEhhc2goW10pLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYXJ0aWFsKG5hbWUsIHBhcmFtcywgaGFzaCwgaW5kZW50KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJQYXJ0aWFsU3RhdGVtZW50XCIsXG4gICAgbmFtZTogbmFtZSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgaW5kZW50OiBpbmRlbnRcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29tbWVudCh2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQ29tbWVudFN0YXRlbWVudFwiLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25jYXQocGFydHMpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkNvbmNhdFN0YXRlbWVudFwiLFxuICAgIHBhcnRzOiBwYXJ0cyB8fCBbXVxuICB9O1xufVxuXG4vLyBOb2Rlc1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGVtZW50KHRhZywgYXR0cmlidXRlcz8sIG1vZGlmaWVycz8sIGNoaWxkcmVuPywgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiRWxlbWVudE5vZGVcIixcbiAgICB0YWc6IHRhZyB8fCBcIlwiLFxuICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMgfHwgW10sXG4gICAgYmxvY2tQYXJhbXM6IFtdLFxuICAgIG1vZGlmaWVyczogbW9kaWZpZXJzIHx8IFtdLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXR0cihuYW1lLCB2YWx1ZSwgbG9jPykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQXR0ck5vZGVcIixcbiAgICBuYW1lOiBuYW1lLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVGV4dChjaGFycz8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlRleHROb2RlXCIsXG4gICAgY2hhcnM6IGNoYXJzIHx8IFwiXCIsXG4gICAgbG9jOiBidWlsZExvYyhsb2MpXG4gIH07XG59XG5cbi8vIEV4cHJlc3Npb25zXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNleHByKHBhdGgsIHBhcmFtcz8sIGhhc2g/LCBsb2M/KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJTdWJFeHByZXNzaW9uXCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGF0aChvcmlnaW5hbCwgbG9jPykge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnc3RyaW5nJykgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJQYXRoRXhwcmVzc2lvblwiLFxuICAgIG9yaWdpbmFsOiBvcmlnaW5hbCxcbiAgICBwYXJ0czogb3JpZ2luYWwuc3BsaXQoJy4nKSxcbiAgICBkYXRhOiBmYWxzZSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJTdHJpbmdMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJCb29sZWFuTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJOdW1iZXJMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROdWxsKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiTnVsbExpdGVyYWxcIixcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBvcmlnaW5hbDogbnVsbFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVbmRlZmluZWQoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJVbmRlZmluZWRMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5hbDogdW5kZWZpbmVkXG4gIH07XG59XG5cbi8vIE1pc2NlbGxhbmVvdXNcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSGFzaChwYWlycz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkhhc2hcIixcbiAgICBwYWlyczogcGFpcnMgfHwgW11cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGFpcihrZXksIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJIYXNoUGFpclwiLFxuICAgIGtleToga2V5LFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKGJvZHk/LCBibG9ja1BhcmFtcz8sIGxvYz8pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlByb2dyYW1cIixcbiAgICBib2R5OiBib2R5IHx8IFtdLFxuICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRTb3VyY2Uoc291cmNlPykge1xuICByZXR1cm4gc291cmNlIHx8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBvc2l0aW9uKGxpbmUsIGNvbHVtbikge1xuICByZXR1cm4ge1xuICAgIGxpbmU6ICh0eXBlb2YgbGluZSA9PT0gJ251bWJlcicpID8gbGluZSA6IG51bGwsXG4gICAgY29sdW1uOiAodHlwZW9mIGNvbHVtbiA9PT0gJ251bWJlcicpID8gY29sdW1uIDogbnVsbFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZExvYyhsb2M6IHsgc291cmNlOiBhbnksIHN0YXJ0OiBhbnksIGVuZDogYW55IH0pOiB7IHNvdXJjZTogYW55LCBzdGFydDogYW55LCBlbmQ6IGFueSB9O1xuZnVuY3Rpb24gYnVpbGRMb2Moc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZT8sIGVuZENvbHVtbj8sIHNvdXJjZT8pOiB7IHNvdXJjZTogYW55LCBzdGFydDogYW55LCBlbmQ6IGFueSB9O1xuXG5mdW5jdGlvbiBidWlsZExvYyguLi5hcmdzKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBsb2MgPSBhcmdzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBsb2MgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IGJ1aWxkU291cmNlKGxvYy5zb3VyY2UpLFxuICAgICAgICBzdGFydDogYnVpbGRQb3NpdGlvbihsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiksXG4gICAgICAgIGVuZDogYnVpbGRQb3NpdGlvbihsb2MuZW5kLmxpbmUsIGxvYy5lbmQuY29sdW1uKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBbIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgc291cmNlIF0gPSBhcmdzO1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IGJ1aWxkU291cmNlKHNvdXJjZSksXG4gICAgICBzdGFydDogYnVpbGRQb3NpdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uKSxcbiAgICAgIGVuZDogYnVpbGRQb3NpdGlvbihlbmRMaW5lLCBlbmRDb2x1bW4pXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG11c3RhY2hlOiBidWlsZE11c3RhY2hlLFxuICBibG9jazogYnVpbGRCbG9jayxcbiAgcGFydGlhbDogYnVpbGRQYXJ0aWFsLFxuICBjb21tZW50OiBidWlsZENvbW1lbnQsXG4gIGVsZW1lbnQ6IGJ1aWxkRWxlbWVudCxcbiAgZWxlbWVudE1vZGlmaWVyOiBidWlsZEVsZW1lbnRNb2RpZmllcixcbiAgYXR0cjogYnVpbGRBdHRyLFxuICB0ZXh0OiBidWlsZFRleHQsXG4gIHNleHByOiBidWlsZFNleHByLFxuICBwYXRoOiBidWlsZFBhdGgsXG4gIHN0cmluZzogYnVpbGRTdHJpbmcsXG4gIGJvb2xlYW46IGJ1aWxkQm9vbGVhbixcbiAgbnVtYmVyOiBidWlsZE51bWJlcixcbiAgdW5kZWZpbmVkOiBidWlsZFVuZGVmaW5lZCxcbiAgbnVsbDogYnVpbGROdWxsLFxuICBjb25jYXQ6IGJ1aWxkQ29uY2F0LFxuICBoYXNoOiBidWlsZEhhc2gsXG4gIHBhaXI6IGJ1aWxkUGFpcixcbiAgcHJvZ3JhbTogYnVpbGRQcm9ncmFtLFxuICBsb2M6IGJ1aWxkTG9jLFxuICBwb3M6IGJ1aWxkUG9zaXRpb25cbn07XG4iXX0= enifed('glimmer-syntax/lib/generation/print', ['exports'], function (exports) { 'use strict'; exports.default = build; @@ -23535,11 +24094,11 @@ } function closeBlock(block) { return ['{{/', build(block.path), '}}'].join(''); } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9nZW5lcmF0aW9uL3ByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFBQSxLQUFBOztBQUFBLGFBQUEsS0FBQSxDQUE4QixHQUFHLEVBQUE7QUFDL0IsWUFBRyxDQUFDLEdBQUcsRUFBRTtBQUNQLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRWxCLGdCQUFPLEdBQUcsQ0FBQyxJQUFJO0FBQ2IsaUJBQUssU0FBUztBQUFFO0FBQ2Qsd0JBQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5Qyx3QkFBRyxVQUFVLEVBQUU7QUFDYixrQ0FBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQzNCO0FBQ0Qsd0JBQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLDBCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQjtBQUNELHNCQUFNO0FBQUEsQUFDTixpQkFBSyxhQUFhO0FBQ2hCLHNCQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsb0JBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDeEIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO0FBQ0Qsb0JBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDdkIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxD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LEdBQUcsQ0FBQyxPQUFJO1NBQ3BDO0tBQ0Y7QUFFRCxhQUFBLFNBQUEsQ0FBbUIsS0FBSyxFQUFBO0FBQ3RCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDdEU7QUFFRCxhQUFBLFVBQUEsQ0FBb0IsS0FBSyxFQUFBO0FBQ3ZCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbEQiLCJmaWxlIjoicHJpbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZChhc3QpIHtcbiAgaWYoIWFzdCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBvdXRwdXQgPSBbXTtcblxuICBzd2l0Y2goYXN0LnR5cGUpIHtcbiAgICBjYXNlICdQcm9ncmFtJzoge1xuICAgICAgY29uc3QgY2hhaW5CbG9jayA9IGFzdC5jaGFpbmVkICYmIGFzdC5ib2R5WzBdO1xuICAgICAgaWYoY2hhaW5CbG9jaykge1xuICAgICAgICBjaGFpbkJsb2NrLmNoYWluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYm9keSA9IGJ1aWxkRWFjaChhc3QuYm9keSkuam9pbignJyk7XG4gICAgICBvdXRwdXQucHVzaChib2R5KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goJzwnLCBhc3QudGFnKTtcbiAgICAgIGlmKGFzdC5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICBvdXRwdXQucHVzaCgnICcsIGJ1aWxkRWFjaChhc3QuYXR0cmlidXRlcykuam9pbignICcpKTtcbiAgICAgIH1cbiAgICAgIGlmKGFzdC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKCcgJywgYnVpbGRFYWNoKGFzdC5tb2RpZmllcnMpLmpvaW4oJyAnKSk7XG4gICAgICB9XG4gICAgICBvdXRwdXQucHVzaCgnPicpO1xuICAgICAgb3V0cHV0LnB1c2guYXBwbHkob3V0cHV0LCBidWlsZEVhY2goYXN0LmNoaWxkcmVuKSk7XG4gICAgICBvdXRwdXQucHVzaCgnPC8nLCBhc3QudGFnLCAnPicpO1xuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0F0dHJOb2RlJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5uYW1lLCAnPScpO1xuICAgICAgY29uc3QgdmFsdWUgPSBidWlsZChhc3QudmFsdWUpO1xuICAgICAgaWYoYXN0LnZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJ1wiJywgdmFsdWUsICdcIicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICBvdXRwdXQucHVzaCgnXCInKTtcbiAgICAgIGFzdC5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYobm9kZS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChub2RlLm9yaWdpbmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChidWlsZChub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb3V0cHV0LnB1c2goJ1wiJyk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goYXN0LmNoYXJzKTtcbiAgICBicmVhaztcbiAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5vcmlnaW5hbCk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6IHtcbiAgICAgIG91dHB1dC5wdXNoKCcoJywgcGF0aFBhcmFtcyhhc3QpLCAnKScpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUgPyAndHJ1ZScgOiBmYWxzZSk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOiB7XG4gICAgICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gICAgICBpZihhc3QuY2hhaW5lZCl7XG4gICAgICAgIGxpbmVzLnB1c2goWyd7e2Vsc2UgJywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXS5qb2luKCcnKSk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgbGluZXMucHVzaChvcGVuQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIGxpbmVzLnB1c2goYnVpbGQoYXN0LnByb2dyYW0pKTtcblxuICAgICAgaWYoYXN0LmludmVyc2UpIHtcbiAgICAgICAgaWYoIWFzdC5pbnZlcnNlLmNoYWluZWQpe1xuICAgICAgICAgIGxpbmVzLnB1c2goJ3t7ZWxzZX19Jyk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaChidWlsZChhc3QuaW52ZXJzZSkpO1xuICAgICAgfVxuXG4gICAgICBpZighYXN0LmNoYWluZWQpe1xuICAgICAgICBsaW5lcy5wdXNoKGNsb3NlQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIG91dHB1dC5wdXNoKGxpbmVzLmpvaW4oJycpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3s+JywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdDb21tZW50U3RhdGVtZW50Jzoge1xuICAgICAgb3V0cHV0LnB1c2goY29tcGFjdEpvaW4oWyc8IS0tJywgYXN0LnZhbHVlLCAnLS0+J10pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGBcIiR7YXN0LnZhbHVlfVwiYCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzoge1xuICAgICAgb3V0cHV0LnB1c2goJ3VuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdOdWxsTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKCdudWxsJyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0hhc2gnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QucGFpcnMubWFwKGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkKHBhaXIpO1xuICAgICAgfSkuam9pbignICcpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnSGFzaFBhaXInOiB7XG4gICAgICBvdXRwdXQucHVzaChgJHthc3Qua2V5fT0ke2J1aWxkKGFzdC52YWx1ZSl9YCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbihhKSB7XG4gICAgaWYodHlwZW9mKGEpICE9PSAndW5kZWZpbmVkJyAmJiBhICE9PSBudWxsICYmIGEgIT09ICcnKSB7XG4gICAgICBuZXdBcnJheS5wdXNoKGEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXdBcnJheTtcbn1cblxuZnVuY3Rpb24gYnVpbGRFYWNoKGFzdHMpIHtcbiAgY29uc3Qgb3V0cHV0ID0gW107XG4gIGFzdHMuZm9yRWFjaChmdW5jdGlvbihub2RlKSB7XG4gICAgb3V0cHV0LnB1c2goYnVpbGQobm9kZSkpO1xuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gcGF0aFBhcmFtcyhhc3QpIHtcbiAgY29uc3QgbmFtZSA9IGJ1aWxkKGFzdC5uYW1lKTtcbiAgY29uc3QgcGF0aCA9IGJ1aWxkKGFzdC5wYXRoKTtcbiAgY29uc3QgcGFyYW1zID0gYnVpbGRFYWNoKGFzdC5wYXJhbXMpLmpvaW4oJyAnKTtcbiAgY29uc3QgaGFzaCA9IGJ1aWxkKGFzdC5oYXNoKTtcbiAgcmV0dXJuIGNvbXBhY3RKb2luKFtuYW1lLCBwYXRoLCBwYXJhbXMsIGhhc2hdLCAnICcpO1xufVxuXG5mdW5jdGlvbiBjb21wYWN0Sm9pbihhcnJheSwgZGVsaW1pdGVyPykge1xuICByZXR1cm4gY29tcGFjdChhcnJheSkuam9pbihkZWxpbWl0ZXIgfHwgJycpO1xufVxuXG5mdW5jdGlvbiBibG9ja1BhcmFtcyhibG9jaykge1xuICBjb25zdCBwYXJhbXMgPSBibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zO1xuICBpZihwYXJhbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGAgYXMgfCR7cGFyYW1zLmpvaW4oJywnKX18YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBvcGVuQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3sjJywgcGF0aFBhcmFtcyhibG9jayksIGJsb2NrUGFyYW1zKGJsb2NrKSwgJ319J10uam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3svJywgYnVpbGQoYmxvY2sucGF0aCksICd9fSddLmpvaW4oJycpO1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9nZW5lcmF0aW9uL3ByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFBYyxLQUFBOztBQUFBLGFBQUEsS0FBQSxDQUFnQixHQUFHLEVBQUE7QUFDL0IsWUFBRyxDQUFDLEdBQUcsRUFBRTtBQUNQLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRWxCLGdCQUFPLEdBQUcsQ0FBQyxJQUFJO0FBQ2IsaUJBQUssU0FBUztBQUFFO0FBQ2Qsd0JBQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5Qyx3QkFBRyxVQUFVLEVBQUU7QUFDYixrQ0FBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQzNCO0FBQ0Qsd0JBQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLDBCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQjtBQUNELHNCQUFNO0FBQUEsQUFDTixpQkFBSyxhQUFhO0FBQ2hCLHNCQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsb0JBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDeEIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO0FBQ0Qsb0JBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDdkIsMEJBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxD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LEdBQUcsQ0FBQyxPQUFJO1NBQ3BDO0tBQ0Y7QUFFRCxhQUFBLFNBQUEsQ0FBbUIsS0FBSyxFQUFBO0FBQ3RCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDdEU7QUFFRCxhQUFBLFVBQUEsQ0FBb0IsS0FBSyxFQUFBO0FBQ3ZCLGVBQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbEQiLCJmaWxlIjoicHJpbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZChhc3QpIHtcbiAgaWYoIWFzdCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBvdXRwdXQgPSBbXTtcblxuICBzd2l0Y2goYXN0LnR5cGUpIHtcbiAgICBjYXNlICdQcm9ncmFtJzoge1xuICAgICAgY29uc3QgY2hhaW5CbG9jayA9IGFzdC5jaGFpbmVkICYmIGFzdC5ib2R5WzBdO1xuICAgICAgaWYoY2hhaW5CbG9jaykge1xuICAgICAgICBjaGFpbkJsb2NrLmNoYWluZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYm9keSA9IGJ1aWxkRWFjaChhc3QuYm9keSkuam9pbignJyk7XG4gICAgICBvdXRwdXQucHVzaChib2R5KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goJzwnLCBhc3QudGFnKTtcbiAgICAgIGlmKGFzdC5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICBvdXRwdXQucHVzaCgnICcsIGJ1aWxkRWFjaChhc3QuYXR0cmlidXRlcykuam9pbignICcpKTtcbiAgICAgIH1cbiAgICAgIGlmKGFzdC5tb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKCcgJywgYnVpbGRFYWNoKGFzdC5tb2RpZmllcnMpLmpvaW4oJyAnKSk7XG4gICAgICB9XG4gICAgICBvdXRwdXQucHVzaCgnPicpO1xuICAgICAgb3V0cHV0LnB1c2guYXBwbHkob3V0cHV0LCBidWlsZEVhY2goYXN0LmNoaWxkcmVuKSk7XG4gICAgICBvdXRwdXQucHVzaCgnPC8nLCBhc3QudGFnLCAnPicpO1xuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0F0dHJOb2RlJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5uYW1lLCAnPScpO1xuICAgICAgY29uc3QgdmFsdWUgPSBidWlsZChhc3QudmFsdWUpO1xuICAgICAgaWYoYXN0LnZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJ1wiJywgdmFsdWUsICdcIicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICBvdXRwdXQucHVzaCgnXCInKTtcbiAgICAgIGFzdC5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYobm9kZS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChub2RlLm9yaWdpbmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChidWlsZChub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb3V0cHV0LnB1c2goJ1wiJyk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgb3V0cHV0LnB1c2goYXN0LmNoYXJzKTtcbiAgICBicmVhaztcbiAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3snLCBwYXRoUGFyYW1zKGFzdCksICd9fSddKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BhdGhFeHByZXNzaW9uJzpcbiAgICAgIG91dHB1dC5wdXNoKGFzdC5vcmlnaW5hbCk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3ViRXhwcmVzc2lvbic6IHtcbiAgICAgIG91dHB1dC5wdXNoKCcoJywgcGF0aFBhcmFtcyhhc3QpLCAnKScpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdCb29sZWFuTGl0ZXJhbCc6XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUgPyAndHJ1ZScgOiBmYWxzZSk7XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOiB7XG4gICAgICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gICAgICBpZihhc3QuY2hhaW5lZCl7XG4gICAgICAgIGxpbmVzLnB1c2goWyd7e2Vsc2UgJywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXS5qb2luKCcnKSk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgbGluZXMucHVzaChvcGVuQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIGxpbmVzLnB1c2goYnVpbGQoYXN0LnByb2dyYW0pKTtcblxuICAgICAgaWYoYXN0LmludmVyc2UpIHtcbiAgICAgICAgaWYoIWFzdC5pbnZlcnNlLmNoYWluZWQpe1xuICAgICAgICAgIGxpbmVzLnB1c2goJ3t7ZWxzZX19Jyk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaChidWlsZChhc3QuaW52ZXJzZSkpO1xuICAgICAgfVxuXG4gICAgICBpZighYXN0LmNoYWluZWQpe1xuICAgICAgICBsaW5lcy5wdXNoKGNsb3NlQmxvY2soYXN0KSk7XG4gICAgICB9XG5cbiAgICAgIG91dHB1dC5wdXNoKGxpbmVzLmpvaW4oJycpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnUGFydGlhbFN0YXRlbWVudCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbXBhY3RKb2luKFsne3s+JywgcGF0aFBhcmFtcyhhc3QpLCAnfX0nXSkpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdDb21tZW50U3RhdGVtZW50Jzoge1xuICAgICAgb3V0cHV0LnB1c2goY29tcGFjdEpvaW4oWyc8IS0tJywgYXN0LnZhbHVlLCAnLS0+J10pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnU3RyaW5nTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKGBcIiR7YXN0LnZhbHVlfVwiYCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ051bWJlckxpdGVyYWwnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QudmFsdWUpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdVbmRlZmluZWRMaXRlcmFsJzoge1xuICAgICAgb3V0cHV0LnB1c2goJ3VuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgICBjYXNlICdOdWxsTGl0ZXJhbCc6IHtcbiAgICAgIG91dHB1dC5wdXNoKCdudWxsJyk7XG4gICAgfVxuICAgIGJyZWFrO1xuICAgIGNhc2UgJ0hhc2gnOiB7XG4gICAgICBvdXRwdXQucHVzaChhc3QucGFpcnMubWFwKGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkKHBhaXIpO1xuICAgICAgfSkuam9pbignICcpKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gICAgY2FzZSAnSGFzaFBhaXInOiB7XG4gICAgICBvdXRwdXQucHVzaChgJHthc3Qua2V5fT0ke2J1aWxkKGFzdC52YWx1ZSl9YCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbihhKSB7XG4gICAgaWYodHlwZW9mKGEpICE9PSAndW5kZWZpbmVkJyAmJiBhICE9PSBudWxsICYmIGEgIT09ICcnKSB7XG4gICAgICBuZXdBcnJheS5wdXNoKGEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXdBcnJheTtcbn1cblxuZnVuY3Rpb24gYnVpbGRFYWNoKGFzdHMpIHtcbiAgY29uc3Qgb3V0cHV0ID0gW107XG4gIGFzdHMuZm9yRWFjaChmdW5jdGlvbihub2RlKSB7XG4gICAgb3V0cHV0LnB1c2goYnVpbGQobm9kZSkpO1xuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gcGF0aFBhcmFtcyhhc3QpIHtcbiAgY29uc3QgbmFtZSA9IGJ1aWxkKGFzdC5uYW1lKTtcbiAgY29uc3QgcGF0aCA9IGJ1aWxkKGFzdC5wYXRoKTtcbiAgY29uc3QgcGFyYW1zID0gYnVpbGRFYWNoKGFzdC5wYXJhbXMpLmpvaW4oJyAnKTtcbiAgY29uc3QgaGFzaCA9IGJ1aWxkKGFzdC5oYXNoKTtcbiAgcmV0dXJuIGNvbXBhY3RKb2luKFtuYW1lLCBwYXRoLCBwYXJhbXMsIGhhc2hdLCAnICcpO1xufVxuXG5mdW5jdGlvbiBjb21wYWN0Sm9pbihhcnJheSwgZGVsaW1pdGVyPykge1xuICByZXR1cm4gY29tcGFjdChhcnJheSkuam9pbihkZWxpbWl0ZXIgfHwgJycpO1xufVxuXG5mdW5jdGlvbiBibG9ja1BhcmFtcyhibG9jaykge1xuICBjb25zdCBwYXJhbXMgPSBibG9jay5wcm9ncmFtLmJsb2NrUGFyYW1zO1xuICBpZihwYXJhbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGAgYXMgfCR7cGFyYW1zLmpvaW4oJywnKX18YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBvcGVuQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3sjJywgcGF0aFBhcmFtcyhibG9jayksIGJsb2NrUGFyYW1zKGJsb2NrKSwgJ319J10uam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlQmxvY2soYmxvY2spIHtcbiAgcmV0dXJuIFsne3svJywgYnVpbGQoYmxvY2sucGF0aCksICd9fSddLmpvaW4oJycpO1xufVxuIl19 enifed("glimmer-syntax/lib/parser", ["exports", "handlebars/compiler/base", "glimmer-syntax/lib/syntax", "simple-html-tokenizer/evented-tokenizer", "simple-html-tokenizer/entity-parser", "simple-html-tokenizer/html5-named-char-refs", "glimmer-syntax/lib/parser/handlebars-node-visitors", "glimmer-syntax/lib/parser/tokenizer-event-handlers"], function (exports, _handlebarsCompilerBase, _glimmerSyntaxLibSyntax, _simpleHtmlTokenizerEventedTokenizer, _simpleHtmlTokenizerEntityParser, _simpleHtmlTokenizerHtml5NamedCharRefs, _glimmerSyntaxLibParserHandlebarsNodeVisitors, _glimmerSyntaxLibParserTokenizerEventHandlers) { "use strict"; exports.preprocess = preprocess; exports.Parser = Parser; @@ -23611,11 +24170,11 @@ } } return string.join('\n'); }; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUUEsYUFBQSxVQUFBLENBQTJCLElBQUksRUFBRSxPQUFRLEVBQUE7QUFDdkMsWUFBSSxHQUFHLEdBQUcsQUFBQyxPQUFPLElBQUksS0FBSyxRQUFRLEdBQUksSUFBSSxHQUFHLHdCQVR2QyxLQUFLLENBU3dDLElBQUksQ0FBQyxDQUFDO0FBQzFELFlBQUksUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFekQsWUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNyRCxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFELG9CQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWpELHNCQUFNLENBQUMsTUFBTSwwQkFBUyxDQUFDO0FBRXZCLHdCQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztTQUNGO0FBRUQsZUFBTyxRQUFRLENBQUM7S0FDakI7O3NCQUVjLFVBQVU7O0FBRXpCLFFBQU0sWUFBWSxHQUFHLDRGQUErQixDQUFDOztBQUVyRCxhQUFBLE1BQUEsQ0FBdUIsTUFBTSxFQUFFLE9BQU8sRUFBQTtBQUNwQyxZQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsWUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDdkIsWUFBSSxDQUFDLFNBQVMs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dGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJoYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2VcIjtcbmltcG9ydCAqIGFzIHN5bnRheCBmcm9tIFwiLi9zeW50YXhcIjtcbmltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gXCJzaW1wbGUtaHRtbC10b2tlbml6ZXIvZXZlbnRlZC10b2tlbml6ZXJcIjtcbmltcG9ydCBFbnRpdHlQYXJzZXIgZnJvbSBcInNpbXBsZS1odG1sLXRva2VuaXplci9lbnRpdHktcGFyc2VyXCI7XG5pbXBvcnQgbmFtZWRDaGFyUmVmcyBmcm9tIFwic2ltcGxlLWh0bWwtdG9rZW5pemVyL2h0bWw1LW5hbWVkLWNoYXItcmVmc1wiO1xuaW1wb3J0IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZnJvbSBcIi4vcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9yc1wiO1xuaW1wb3J0IHRva2VuaXplckV2ZW50SGFuZGxlcnMgZnJvbSBcIi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhodG1sLCBvcHRpb25zPykge1xuICBsZXQgYXN0ID0gKHR5cGVvZiBodG1sID09PSAnb2JqZWN0JykgPyBodG1sIDogcGFyc2UoaHRtbCk7XG4gIGxldCBjb21iaW5lZCA9IG5ldyBQYXJzZXIoaHRtbCwgb3B0aW9ucykuYWNjZXB0Tm9kZShhc3QpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHBsdWdpbiA9IG5ldyBvcHRpb25zLnBsdWdpbnMuYXN0W2ldKG9wdGlvbnMpO1xuXG4gICAgICBwbHVnaW4uc3ludGF4ID0gc3ludGF4O1xuXG4gICAgICBjb21iaW5lZCA9IHBsdWdpbi50cmFuc2Zvcm0oY29tYmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21iaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcHJlcHJvY2VzcztcblxuY29uc3QgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcihuYW1lZENoYXJSZWZzKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFBhcnNlcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdGhpcy5lbGVtZW50U3RhY2sgPSBbXTtcbiAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIpO1xuXG4gIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSBudWxsO1xuXG4gIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gIH1cbn1cblxuZm9yIChsZXQga2V5IGluIGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMpIHtcbiAgUGFyc2VyLnByb3RvdHlwZVtrZXldID0gaGFuZGxlYmFyc05vZGVWaXNpdG9yc1trZXldO1xufVxuXG5mb3IgKGxldCBrZXkgaW4gdG9rZW5pemVyRXZlbnRIYW5kbGVycykge1xuICBQYXJzZXIucHJvdG90eXBlW2tleV0gPSB0b2tlbml6ZXJFdmVudEhhbmRsZXJzW2tleV07XG59XG5cblBhcnNlci5wcm90b3R5cGUuYWNjZXB0Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuY3VycmVudEVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrW3RoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5zb3VyY2VGb3JNdXN0YWNoZSA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmaXJzdExpbmUgPSBtdXN0YWNoZS5sb2Muc3RhcnQubGluZSAtIDE7XG4gIGxldCBsYXN0TGluZSA9IG11c3RhY2hlLmxvYy5lbmQubGluZSAtIDE7XG4gIGxldCBjdXJyZW50TGluZSA9IGZpcnN0TGluZSAtIDE7XG4gIGxldCBmaXJzdENvbHVtbiA9IG11c3RhY2hlLmxvYy5zdGFydC5jb2x1bW4gKyAyO1xuICBsZXQgbGFzdENvbHVtbiA9IG11c3RhY2hlLmxvYy5lbmQuY29sdW1uIC0gMjtcbiAgbGV0IHN0cmluZyA9IFtdO1xuICBsZXQgbGluZTtcblxuICBpZiAoIXRoaXMuc291cmNlKSB7XG4gICAgcmV0dXJuICd7eycgKyBtdXN0YWNoZS5wYXRoLmlkLm9yaWdpbmFsICsgJ319JztcbiAgfVxuXG4gIHdoaWxlIChjdXJyZW50TGluZSA8IGxhc3RMaW5lKSB7XG4gICAgY3VycmVudExpbmUrKztcbiAgICBsaW5lID0gdGhpcy5zb3VyY2VbY3VycmVudExpbmVdO1xuXG4gICAgaWYgKGN1cnJlbnRMaW5lID09PSBmaXJzdExpbmUpIHtcbiAgICAgIGlmIChmaXJzdExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4sIGxhc3RDb2x1bW4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZSgwLCBsYXN0Q29sdW1uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmcuam9pbignXFxuJyk7XG59O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUU0sYUFBQSxVQUFBLENBQXFCLElBQUksRUFBRSxPQUFRLEVBQUE7QUFDdkMsWUFBSSxHQUFHLEdBQUcsQUFBQyxPQUFPLElBQUksS0FBSyxRQUFRLEdBQUksSUFBSSxHQUFHLHdCQVR2QyxLQUFLLENBU3dDLElBQUksQ0FBQyxDQUFDO0FBQzFELFlBQUksUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFekQsWUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNyRCxpQkFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFELG9CQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWpELHNCQUFNLENBQUMsTUFBTSwwQkFBUyxDQUFDO0FBRXZCLHdCQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztTQUNGO0FBRUQsZUFBTyxRQUFRLENBQUM7S0FDakI7O3NCQUVjLFVBQVU7O0FBRXpCLFFBQU0sWUFBWSxHQUFHLDRGQUErQixDQUFDOztBQUUvQyxhQUFBLE1BQUEsQ0FBaUIsTUFBTSxFQUFFLE9BQU8sRUFBQTtBQUNwQyxZQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsWUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDdkIsWUFBSSxDQUFDLFNBQVMs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dGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJoYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2VcIjtcbmltcG9ydCAqIGFzIHN5bnRheCBmcm9tIFwiLi9zeW50YXhcIjtcbmltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gXCJzaW1wbGUtaHRtbC10b2tlbml6ZXIvZXZlbnRlZC10b2tlbml6ZXJcIjtcbmltcG9ydCBFbnRpdHlQYXJzZXIgZnJvbSBcInNpbXBsZS1odG1sLXRva2VuaXplci9lbnRpdHktcGFyc2VyXCI7XG5pbXBvcnQgbmFtZWRDaGFyUmVmcyBmcm9tIFwic2ltcGxlLWh0bWwtdG9rZW5pemVyL2h0bWw1LW5hbWVkLWNoYXItcmVmc1wiO1xuaW1wb3J0IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZnJvbSBcIi4vcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9yc1wiO1xuaW1wb3J0IHRva2VuaXplckV2ZW50SGFuZGxlcnMgZnJvbSBcIi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhodG1sLCBvcHRpb25zPykge1xuICBsZXQgYXN0ID0gKHR5cGVvZiBodG1sID09PSAnb2JqZWN0JykgPyBodG1sIDogcGFyc2UoaHRtbCk7XG4gIGxldCBjb21iaW5lZCA9IG5ldyBQYXJzZXIoaHRtbCwgb3B0aW9ucykuYWNjZXB0Tm9kZShhc3QpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGx1Z2lucyAmJiBvcHRpb25zLnBsdWdpbnMuYXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcHRpb25zLnBsdWdpbnMuYXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHBsdWdpbiA9IG5ldyBvcHRpb25zLnBsdWdpbnMuYXN0W2ldKG9wdGlvbnMpO1xuXG4gICAgICBwbHVnaW4uc3ludGF4ID0gc3ludGF4O1xuXG4gICAgICBjb21iaW5lZCA9IHBsdWdpbi50cmFuc2Zvcm0oY29tYmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21iaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcHJlcHJvY2VzcztcblxuY29uc3QgZW50aXR5UGFyc2VyID0gbmV3IEVudGl0eVBhcnNlcihuYW1lZENoYXJSZWZzKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFBhcnNlcihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdGhpcy5lbGVtZW50U3RhY2sgPSBbXTtcbiAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIpO1xuXG4gIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSBudWxsO1xuXG4gIGlmICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gIH1cbn1cblxuZm9yIChsZXQga2V5IGluIGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMpIHtcbiAgUGFyc2VyLnByb3RvdHlwZVtrZXldID0gaGFuZGxlYmFyc05vZGVWaXNpdG9yc1trZXldO1xufVxuXG5mb3IgKGxldCBrZXkgaW4gdG9rZW5pemVyRXZlbnRIYW5kbGVycykge1xuICBQYXJzZXIucHJvdG90eXBlW2tleV0gPSB0b2tlbml6ZXJFdmVudEhhbmRsZXJzW2tleV07XG59XG5cblBhcnNlci5wcm90b3R5cGUuYWNjZXB0Tm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuY3VycmVudEVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrW3RoaXMuZWxlbWVudFN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5zb3VyY2VGb3JNdXN0YWNoZSA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmaXJzdExpbmUgPSBtdXN0YWNoZS5sb2Muc3RhcnQubGluZSAtIDE7XG4gIGxldCBsYXN0TGluZSA9IG11c3RhY2hlLmxvYy5lbmQubGluZSAtIDE7XG4gIGxldCBjdXJyZW50TGluZSA9IGZpcnN0TGluZSAtIDE7XG4gIGxldCBmaXJzdENvbHVtbiA9IG11c3RhY2hlLmxvYy5zdGFydC5jb2x1bW4gKyAyO1xuICBsZXQgbGFzdENvbHVtbiA9IG11c3RhY2hlLmxvYy5lbmQuY29sdW1uIC0gMjtcbiAgbGV0IHN0cmluZyA9IFtdO1xuICBsZXQgbGluZTtcblxuICBpZiAoIXRoaXMuc291cmNlKSB7XG4gICAgcmV0dXJuICd7eycgKyBtdXN0YWNoZS5wYXRoLmlkLm9yaWdpbmFsICsgJ319JztcbiAgfVxuXG4gIHdoaWxlIChjdXJyZW50TGluZSA8IGxhc3RMaW5lKSB7XG4gICAgY3VycmVudExpbmUrKztcbiAgICBsaW5lID0gdGhpcy5zb3VyY2VbY3VycmVudExpbmVdO1xuXG4gICAgaWYgKGN1cnJlbnRMaW5lID09PSBmaXJzdExpbmUpIHtcbiAgICAgIGlmIChmaXJzdExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4sIGxhc3RDb2x1bW4pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZSgwLCBsYXN0Q29sdW1uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmcuam9pbignXFxuJyk7XG59O1xuIl19 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) { @@ -23737,10 +24296,23 @@ 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); @@ -23816,11 +24388,11 @@ function appendDynamicAttributeValuePart(attribute, part) { attribute.isDynamic = true; attribute.parts.push(part); } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFHZTtBQUViLGVBQU8sRUFBRSxVQUFTLE9BQU8sRUFBQTtBQUN2QixnQkFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2QsZ0JBQUksSUFBSSxHQUFHLGtDQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsZ0JBQUksQ0FBQyxZQUFBO2dCQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUUvQixnQkFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFN0IsZ0JBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUFFLHVCQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7YUFBRTtBQUVoRCxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEIsb0JBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xDOztBQUdELGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLGdCQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7QUFDdkIsc0JBQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzNHO0FBRUQsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7QUFFRCxzQkFBYyxFQUFFLFVBQVMsS0FBSyxFQUFBO0FBQzVCLG1CQUFPLEtB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YixvQkFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEMsTUFBTTtBQUNMLGdCQUFJLENBQUMsSUFBSSxHQUFHLGtDQUFFLElBQUksRUFBRSxDQUFDO1NBQ3RCO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYjtBQUVELGFBQUEsa0JBQUEsQ0FBNEIsT0FBTyxFQUFFLFFBQVEsRUFBQTtZQUNyQyxJQUFJLEdBQXdCLFFBQVEsQ0FBcEMsSUFBSTtZQUFFLE1BQU0sR0FBZ0IsUUFBUSxDQUE5QixNQUFNO1lBQUUsSUFBSSxHQUFVLFFBQVEsQ0FBdEIsSUFBSTtZQUFFLEdBQUcsR0FBSyxRQUFRLENBQWhCLEdBQUc7O0FBQzdCLFlBQUksUUFBUSxHQUFHLGtDQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxlQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNsQztBQUVELGFBQUEsK0JBQUEsQ0FBeUMsU0FBUyxFQUFFLElBQUksRUFBQTtBQUN0RCxpQkFBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDM0IsaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzVCIiwiZmlsZSI6ImhhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIFByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICBsZXQgYm9keSA9IFtdO1xuICAgIGxldCBub2RlID0gYi5wcm9ncmFtKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICBsZXQgaSwgbCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKGwgPT09IDApIHsgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpOyB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuY2xvc2VkIGVsZW1lbnQgYFwiICsgcG9wcGVkTm9kZS50YWcgKyBcImAgKG9uIGxpbmUgXCIgKyBwb3BwZWROb2RlLmxvYy5zdGFydC5saW5lICsgXCIpLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSxcblxuICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24oYmxvY2spIHtcbiAgICBkZWxldGUgYmxvY2suaW52ZXJzZVN0cmlwO1xuICAgIGRlbGV0ZSBibG9jay5vcGVuU3RyaW5nO1xuICAgIGRlbGV0ZSBibG9jay5jbG9zZVN0cmlwO1xuXG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShibG9jaykgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgIT09ICdjb21tZW50JyAmJiB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gJ2RhdGEnICYmIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSAnYmVmb3JlRGF0YScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suXCIpO1xuICAgIH1cblxuICAgIGJsb2NrID0gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSA/IHRoaXMuYWNjZXB0Tm9kZShibG9jay5wcm9ncmFtKSA6IG51bGw7XG4gICAgbGV0IGludmVyc2UgPSBibG9jay5pbnZlcnNlID8gdGhpcy5hY2NlcHROb2RlKGJsb2NrLmludmVyc2UpIDogbnVsbDtcblxuICAgIGxldCBub2RlID0gYi5ibG9jayhibG9jay5wYXRoLCBibG9jay5wYXJhbXMsIGJsb2NrLmhhc2gsIHByb2dyYW0sIGludmVyc2UsIGJsb2NrLmxvYyk7XG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50UHJvZ3JhbSwgbm9kZSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHJhd011c3RhY2hlKSB7XG4gICAgbGV0IHRva2VuaXplciA9IHRoaXMudG9rZW5pemVyO1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0gPSByYXdNdXN0YWNoZTtcbiAgICBsZXQgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYyk7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShtdXN0YWNoZSkgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhY2NlcHRDb21tb25Ob2Rlcyh0aGlzLCBtdXN0YWNoZSk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgLy8gVGFnIGhlbHBlcnNcbiAgICAgIGNhc2UgXCJ0YWdOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci5zdGF0ZSA9IFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgIGNhc2UgXCJhZnRlckF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZXNcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVWYWx1ZVwiOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVVbnF1b3RlZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkXCI6XG4gICAgICBjYXNlIFwiYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRcIjpcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXCI6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbihjb21tZW50KSB7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgcGFydGlhbCk7XG4gICAgcmV0dXJuIHBhcnRpYWw7XG4gIH0sXG5cbiAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24oc2V4cHIpIHtcbiAgICByZXR1cm4gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgc2V4cHIpO1xuICB9LFxuXG4gIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAvLyBUT0RPIGFkZCBhIFN5bnRheEVycm9yIHdpdGggbG9jIGluZm9cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDMpID09PSAnLi4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYW5naW5nIGNvbnRleHQgdXNpbmcgXCIuLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gKTtcbiAgICAgIH1cbiAgICAgIHBhdGgucGFydHMgPSBbIHBhdGgucGFydHMuam9pbignLycpIF07XG4gICAgfVxuXG4gICAgZGVsZXRlIHBhdGguZGVwdGg7XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBIYXNoOiBmdW5jdGlvbihoYXNoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUoaGFzaC5wYWlyc1tpXS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbigpIHt9XG59O1xuXG5mdW5jdGlvbiBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhvcmlnaW5hbCwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIC8vIGlmIGl0IGlzIGVtcHR5LCBqdXN0IHJldHVybiB0aGUgY291bnQgb2YgbmV3bGluZXNcbiAgICAvLyBpbiBvcmlnaW5hbFxuICAgIHJldHVybiB7XG4gICAgICBsaW5lczogb3JpZ2luYWwuc3BsaXQoXCJcXG5cIikubGVuZ3RoIC0gMSxcbiAgICAgIGNvbHVtbnM6IDBcbiAgICB9O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBuZXdsaW5lcyBwcmlvciB0b1xuICAvLyBgdmFsdWVgXG4gIGxldCBkaWZmZXJlbmNlID0gb3JpZ2luYWwuc3BsaXQodmFsdWUpWzBdO1xuICBsZXQgbGluZXMgPSBkaWZmZXJlbmNlLnNwbGl0KC9cXG4vKTtcbiAgbGV0IGxpbmVDb3VudCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lczogbGluZUNvdW50LFxuICAgIGNvbHVtbnM6IGxpbmVzW2xpbmVDb3VudF0ubGVuZ3RoXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRva2VuaXplciwgY29udGVudCkge1xuICBsZXQgbGluZSA9IGNvbnRlbnQubG9jLnN0YXJ0LmxpbmU7XG4gIGxldCBjb2x1bW4gPSBjb250ZW50LmxvYy5zdGFydC5jb2x1bW47XG5cbiAgaWYgKGNvbnRlbnQucmlnaHRTdHJpcHBlZCkge1xuICAgIGxldCBvZmZzZXRzID0gY2FsY3VsYXRlUmlnaHRTdHJpcHBlZE9mZnNldHMoY29udGVudC5vcmlnaW5hbCwgY29udGVudC52YWx1ZSk7XG5cbiAgICBsaW5lID0gbGluZSArIG9mZnNldHMubGluZXM7XG4gICAgaWYgKG9mZnNldHMubGluZXMpIHtcbiAgICAgIGNvbHVtbiA9IG9mZnNldHMuY29sdW1ucztcbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uID0gY29sdW1uICsgb2Zmc2V0cy5jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIHRva2VuaXplci5saW5lID0gbGluZTtcbiAgdG9rZW5pemVyLmNvbHVtbiA9IGNvbHVtbjtcbn1cbmZ1bmN0aW9uIGFjY2VwdENvbW1vbk5vZGVzKGNvbXBpbGVyLCBub2RlKSB7XG4gIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5wYXRoKTtcblxuICBpZiAobm9kZS5wYXJhbXMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUucGFyYW1zW2ldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5wYXJhbXMgPSBbXTtcbiAgfVxuXG4gIGlmIChub2RlLmhhc2gpIHtcbiAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUuaGFzaCk7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5oYXNoID0gYi5oYXNoKCk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQsIG11c3RhY2hlKSB7XG4gIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jIH0gPSBtdXN0YWNoZTtcbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGUsIHBhcnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFHZTtBQUViLGVBQU8sRUFBRSxVQUFTLE9BQU8sRUFBQTtBQUN2QixnQkFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2QsZ0JBQUksSUFBSSxHQUFHLGtDQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsZ0JBQUksQ0FBQyxZQUFBO2dCQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUUvQixnQkFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFN0IsZ0JBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUFFLHVCQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7YUFBRTtBQUVoRCxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEIsb0JBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xDOztBQUdELGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLGdCQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7QUFDdkIsc0JBQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzNHO0FBRUQsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7QUFFRCxzQkFBYyxFQUFFLFVBQVMsS0FBSyxFQUFBO0FBQzVCLG1CQUFPLEtB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQztTQUNGLE1BQU07QUFDTCxnQkFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7QUFFRCxZQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDYixvQkFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEMsTUFBTTtBQUNMLGdCQUFJLENBQUMsSUFBSSxHQUFHLGtDQUFFLElBQUksRUFBRSxDQUFDO1NBQ3RCO0FBRUQsZUFBTyxJQUFJLENBQUM7S0FDYjtBQUVELGFBQUEsa0JBQUEsQ0FBNEIsT0FBTyxFQUFFLFFBQVEsRUFBQTtZQUNyQyxJQUFJLEdBQXdCLFFBQVEsQ0FBcEMsSUFBSTtZQUFFLE1BQU0sR0FBZ0IsUUFBUSxDQUE5QixNQUFNO1lBQUUsSUFBSSxHQUFVLFFBQVEsQ0FBdEIsSUFBSTtZQUFFLEdBQUcsR0FBSyxRQUFRLENBQWhCLEdBQUc7O0FBQzdCLFlBQUksUUFBUSxHQUFHLGtDQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxlQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNsQztBQUVELGFBQUEsK0JBQUEsQ0FBeUMsU0FBUyxFQUFFLElBQUksRUFBQTtBQUN0RCxpQkFBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDM0IsaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzVCIiwiZmlsZSI6ImhhbmRsZWJhcnMtbm9kZS12aXNpdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIFByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICBsZXQgYm9keSA9IFtdO1xuICAgIGxldCBub2RlID0gYi5wcm9ncmFtKGJvZHksIHByb2dyYW0uYmxvY2tQYXJhbXMsIHByb2dyYW0ubG9jKTtcbiAgICBsZXQgaSwgbCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG5cbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKGwgPT09IDApIHsgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpOyB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUocHJvZ3JhbS5ib2R5W2ldKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGF0IHRoZSBlbGVtZW50IHN0YWNrIGlzIGJhbGFuY2VkIHByb3Blcmx5LlxuICAgIGxldCBwb3BwZWROb2RlID0gdGhpcy5lbGVtZW50U3RhY2sucG9wKCk7XG4gICAgaWYgKHBvcHBlZE5vZGUgIT09IG5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuY2xvc2VkIGVsZW1lbnQgYFwiICsgcG9wcGVkTm9kZS50YWcgKyBcImAgKG9uIGxpbmUgXCIgKyBwb3BwZWROb2RlLmxvYy5zdGFydC5saW5lICsgXCIpLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfSxcblxuICBCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24oYmxvY2spIHtcbiAgICBkZWxldGUgYmxvY2suaW52ZXJzZVN0cmlwO1xuICAgIGRlbGV0ZSBibG9jay5vcGVuU3RyaW5nO1xuICAgIGRlbGV0ZSBibG9jay5jbG9zZVN0cmlwO1xuXG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShibG9jaykgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuc3RhdGUgIT09ICdjb21tZW50JyAmJiB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gJ2RhdGEnICYmIHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSAnYmVmb3JlRGF0YScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgYmxvY2sgbWF5IG9ubHkgYmUgdXNlZCBpbnNpZGUgYW4gSFRNTCBlbGVtZW50IG9yIGFub3RoZXIgYmxvY2suXCIpO1xuICAgIH1cblxuICAgIGJsb2NrID0gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgYmxvY2spO1xuICAgIGxldCBwcm9ncmFtID0gYmxvY2sucHJvZ3JhbSA/IHRoaXMuYWNjZXB0Tm9kZShibG9jay5wcm9ncmFtKSA6IG51bGw7XG4gICAgbGV0IGludmVyc2UgPSBibG9jay5pbnZlcnNlID8gdGhpcy5hY2NlcHROb2RlKGJsb2NrLmludmVyc2UpIDogbnVsbDtcblxuICAgIGxldCBub2RlID0gYi5ibG9jayhibG9jay5wYXRoLCBibG9jay5wYXJhbXMsIGJsb2NrLmhhc2gsIHByb2dyYW0sIGludmVyc2UsIGJsb2NrLmxvYyk7XG4gICAgbGV0IHBhcmVudFByb2dyYW0gPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG4gICAgYXBwZW5kQ2hpbGQocGFyZW50UHJvZ3JhbSwgbm9kZSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHJhd011c3RhY2hlKSB7XG4gICAgbGV0IHRva2VuaXplciA9IHRoaXMudG9rZW5pemVyO1xuICAgIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0gPSByYXdNdXN0YWNoZTtcbiAgICBsZXQgbXVzdGFjaGUgPSBiLm11c3RhY2hlKHBhdGgsIHBhcmFtcywgaGFzaCwgIWVzY2FwZWQsIGxvYyk7XG5cbiAgICBpZiAodG9rZW5pemVyLnN0YXRlID09PSAnY29tbWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kVG9Db21tZW50RGF0YSgne3snICsgdGhpcy5zb3VyY2VGb3JNdXN0YWNoZShtdXN0YWNoZSkgKyAnfX0nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhY2NlcHRDb21tb25Ob2Rlcyh0aGlzLCBtdXN0YWNoZSk7XG5cbiAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgLy8gVGFnIGhlbHBlcnNcbiAgICAgIGNhc2UgXCJ0YWdOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIHRva2VuaXplci5zdGF0ZSA9IFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI6XG4gICAgICAgIGFkZEVsZW1lbnRNb2RpZmllcih0aGlzLmN1cnJlbnROb2RlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgIGNhc2UgXCJhZnRlckF0dHJpYnV0ZU5hbWVcIjpcbiAgICAgICAgdGhpcy5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZXNcbiAgICAgIGNhc2UgXCJiZWZvcmVBdHRyaWJ1dGVWYWx1ZVwiOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVVbnF1b3RlZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkXCI6XG4gICAgICBjYXNlIFwiYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRcIjpcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXCI6XG4gICAgICAgIGFwcGVuZER5bmFtaWNBdHRyaWJ1dGVWYWx1ZVBhcnQodGhpcy5jdXJyZW50QXR0cmlidXRlLCBtdXN0YWNoZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBUT0RPOiBPbmx5IGFwcGVuZCBjaGlsZCB3aGVuIHRoZSB0b2tlbml6ZXIgc3RhdGUgbWFrZXNcbiAgICAgIC8vIHNlbnNlIHRvIGRvIHNvLCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIG11c3RhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIHVwZGF0ZVRva2VuaXplckxvY2F0aW9uKHRoaXMudG9rZW5pemVyLCBjb250ZW50KTtcblxuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplUGFydChjb250ZW50LnZhbHVlKTtcbiAgICB0aGlzLnRva2VuaXplci5mbHVzaERhdGEoKTtcbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbihjb21tZW50KSB7XG4gICAgcmV0dXJuIGNvbW1lbnQ7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgcGFydGlhbCk7XG4gICAgcmV0dXJuIHBhcnRpYWw7XG4gIH0sXG5cbiAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24oc2V4cHIpIHtcbiAgICByZXR1cm4gYWNjZXB0Q29tbW9uTm9kZXModGhpcywgc2V4cHIpO1xuICB9LFxuXG4gIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgbGV0IHsgb3JpZ2luYWwsIGxvYyB9ID0gcGF0aDtcblxuICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAvLyBUT0RPIGFkZCBhIFN5bnRheEVycm9yIHdpdGggbG9jIGluZm9cbiAgICAgIGlmIChvcmlnaW5hbC5zbGljZSgwLCAyKSA9PT0gJy4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVzaW5nIFwiLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXIgYW5kIHVubmVjZXNzYXJ5OiBcIiR7cGF0aC5vcmlnaW5hbH1cIiBvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9LmApO1xuICAgICAgfVxuICAgICAgaWYgKG9yaWdpbmFsLnNsaWNlKDAsIDMpID09PSAnLi4vJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoYW5naW5nIGNvbnRleHQgdXNpbmcgXCIuLi9cIiBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI6IFwiJHtwYXRoLm9yaWdpbmFsfVwiIG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCk7XG4gICAgICB9XG4gICAgICBpZiAob3JpZ2luYWwuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1peGluZyAnLicgYW5kICcvJyBpbiBwYXRocyBpcyBub3Qgc3VwcG9ydGVkIGluIEdsaW1tZXI7IHVzZSBvbmx5ICcuJyB0byBzZXBhcmF0ZSBwcm9wZXJ0eSBwYXRoczogXCIke3BhdGgub3JpZ2luYWx9XCIgb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gKTtcbiAgICAgIH1cbiAgICAgIHBhdGgucGFydHMgPSBbIHBhdGgucGFydHMuam9pbignLycpIF07XG4gICAgfVxuXG4gICAgZGVsZXRlIHBhdGguZGVwdGg7XG5cbiAgICAvLyBUaGlzIGlzIHRvIGZpeCBhIGJ1ZyBpbiB0aGUgSGFuZGxlYmFycyBBU1Qgd2hlcmUgdGhlIHBhdGggZXhwcmVzc2lvbnMgaW5cbiAgICAvLyBge3t0aGlzLmZvb319YCAoYW5kIHNpbWlsYXJseSBge3tmb28tYmFyIHRoaXMuZm9vIG5hbWVkPXRoaXMuZm9vfX1gIGV0YylcbiAgICAvLyBhcmUgc2ltcGx5IHR1cm5lZCBpbnRvIGB7e2Zvb319YC4gVGhlIGZpeCBpcyB0byBwdXNoIGl0IGJhY2sgb250byB0aGVcbiAgICAvLyBwYXJ0cyBhcnJheSBhbmQgbGV0IHRoZSBydW50aW1lIHNlZSB0aGUgZGlmZmVyZW5jZS4gSG93ZXZlciwgd2UgY2Fubm90XG4gICAgLy8gc2ltcGx5IHVzZSB0aGUgc3RyaW5nIGB0aGlzYCBhcyBpdCBtZWFucyBsaXRlcmFsbHkgdGhlIHByb3BlcnR5IGNhbGxlZFxuICAgIC8vIFwidGhpc1wiIGluIHRoZSBjdXJyZW50IGNvbnRleHQgKGl0IGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIHN5bnRheCBhc1xuICAgIC8vIGB7e1t0aGlzXX19YCwgd2hlcmUgdGhlIHNxdWFyZSBicmFja2V0IGFyZSBnZW5lcmFsbHkgZm9yIHRoaXMga2luZCBvZlxuICAgIC8vIGVzY2FwaW5nIOKAkyBzdWNoIGFzIGB7e2Zvby5bXCJiYXIuYmF6XCJdfX1gIHdvdWxkIG1lYW4gbG9va3VwIGEgcHJvcGVydHlcbiAgICAvLyBuYW1lZCBsaXRlcmFsbHkgXCJiYXIuYmF6XCIgb24gYHRoaXMuZm9vYCkuIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBgbnVsbGBcbiAgICAvLyBmb3IgdGhpcyBwdXJwb3NlLlxuICAgIGlmIChvcmlnaW5hbC5tYXRjaCgvXnRoaXMoXFwuLispPyQvKSkge1xuICAgICAgcGF0aC5wYXJ0cy51bnNoaWZ0KG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uKGhhc2gpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhc2gucGFpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0Tm9kZShoYXNoLnBhaXJzW2ldLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfSxcblxuICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbigpIHt9LFxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgTnVtYmVyTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uKCkge31cbn07XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJpZ2h0U3RyaXBwZWRPZmZzZXRzKG9yaWdpbmFsLCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgLy8gaWYgaXQgaXMgZW1wdHksIGp1c3QgcmV0dXJuIHRoZSBjb3VudCBvZiBuZXdsaW5lc1xuICAgIC8vIGluIG9yaWdpbmFsXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmVzOiBvcmlnaW5hbC5zcGxpdChcIlxcblwiKS5sZW5ndGggLSAxLFxuICAgICAgY29sdW1uczogMFxuICAgIH07XG4gIH1cblxuICAvLyBvdGhlcndpc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIG5ld2xpbmVzIHByaW9yIHRvXG4gIC8vIGB2YWx1ZWBcbiAgbGV0IGRpZmZlcmVuY2UgPSBvcmlnaW5hbC5zcGxpdCh2YWx1ZSlbMF07XG4gIGxldCBsaW5lcyA9IGRpZmZlcmVuY2Uuc3BsaXQoL1xcbi8pO1xuICBsZXQgbGluZUNvdW50ID0gbGluZXMubGVuZ3RoIC0gMTtcblxuICByZXR1cm4ge1xuICAgIGxpbmVzOiBsaW5lQ291bnQsXG4gICAgY29sdW1uczogbGluZXNbbGluZUNvdW50XS5sZW5ndGhcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVG9rZW5pemVyTG9jYXRpb24odG9rZW5pemVyLCBjb250ZW50KSB7XG4gIGxldCBsaW5lID0gY29udGVudC5sb2Muc3RhcnQubGluZTtcbiAgbGV0IGNvbHVtbiA9IGNvbnRlbnQubG9jLnN0YXJ0LmNvbHVtbjtcblxuICBpZiAoY29udGVudC5yaWdodFN0cmlwcGVkKSB7XG4gICAgbGV0IG9mZnNldHMgPSBjYWxjdWxhdGVSaWdodFN0cmlwcGVkT2Zmc2V0cyhjb250ZW50Lm9yaWdpbmFsLCBjb250ZW50LnZhbHVlKTtcblxuICAgIGxpbmUgPSBsaW5lICsgb2Zmc2V0cy5saW5lcztcbiAgICBpZiAob2Zmc2V0cy5saW5lcykge1xuICAgICAgY29sdW1uID0gb2Zmc2V0cy5jb2x1bW5zO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2x1bW4gPSBjb2x1bW4gKyBvZmZzZXRzLmNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgdG9rZW5pemVyLmxpbmUgPSBsaW5lO1xuICB0b2tlbml6ZXIuY29sdW1uID0gY29sdW1uO1xufVxuZnVuY3Rpb24gYWNjZXB0Q29tbW9uTm9kZXMoY29tcGlsZXIsIG5vZGUpIHtcbiAgY29tcGlsZXIuYWNjZXB0Tm9kZShub2RlLnBhdGgpO1xuXG4gIGlmIChub2RlLnBhcmFtcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5wYXJhbXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLnBhcmFtcyA9IFtdO1xuICB9XG5cbiAgaWYgKG5vZGUuaGFzaCkge1xuICAgIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5oYXNoKTtcbiAgfSBlbHNlIHtcbiAgICBub2RlLmhhc2ggPSBiLmhhc2goKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50TW9kaWZpZXIoZWxlbWVudCwgbXVzdGFjaGUpIHtcbiAgbGV0IHsgcGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IG11c3RhY2hlO1xuICBsZXQgbW9kaWZpZXIgPSBiLmVsZW1lbnRNb2RpZmllcihwYXRoLCBwYXJhbXMsIGhhc2gsIGxvYyk7XG4gIGVsZW1lbnQubW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KGF0dHJpYnV0ZSwgcGFydCkge1xuICBhdHRyaWJ1dGUuaXNEeW5hbWljID0gdHJ1ZTtcbiAgYXR0cmlidXRlLnBhcnRzLnB1c2gocGFydCk7XG59XG4iXX0= enifed("glimmer-syntax/lib/parser/tokenizer-event-handlers", ["exports", "glimmer-util", "glimmer-syntax/lib/builders", "glimmer-syntax/lib/utils"], function (exports, _glimmerUtil, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibUtils) { "use strict"; exports.default = { reset: function () { @@ -23978,14 +24550,14 @@ function assembleAttributeValue(parts, isQuoted, isDynamic, line) { if (isDynamic) { if (isQuoted) { return assembleConcatenatedValue(parts); } else { - if (parts.length === 1) { + 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 or a '>' character (on line " + line + ")")); + 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] : ""); } @@ -24021,11 +24593,11 @@ } function formatEndTagInfo(tag) { return "`" + tag.name + "` (on line " + tag.loc.end.line + ")"; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFJZTtBQUNiLGFBQUssRUFBRSxZQUFBO0FBQ0wsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pCOztBQUlELG9CQUFZLEVBQUUsWUFBQTtBQUNaLGdCQUFJLENBQUMsV0FBVyxHQUFHLGtDQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUc7QUFDckIsc0JBQU0sRUFBRSxJQUFJO0FBQ1oscUJBQUssRUFBRSxrQ0FBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ2xELG1CQUFHLEVBQUUsSUFBSTthQUNWLENBQUM7U0FDSDtBQUVELDJCQUFtQixFQUFFLFVBQVMsSUFBSSxFQUFBO0FBQ2hDLGdCQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDaEM7QUFFRCxxQkFBYSxFQUFFLFlBQUE7QUFDYixnQkFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLGtDQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTdFLG1DQXpCSyxXQUFXLENBeUJKLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEQ7O0FBSUQsaUJBQVMsRUFBRSxZQUFBO0FBQ1QsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsa0NBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsZ0JBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHO0FBQ3JCLHNCQUFNLEVBQUUsSUFBSTtBQUNaLHFCQUFLLEVBQUUsa0NBQUUsR0FBRyxDQUFDLElBQUks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Q0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3BDLGlCQUFLLEdBQUcsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO1NBQzFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUU7QUFDbkMsaUJBQUssR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsZ0NBQWdDLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFhLEdBQ3ZHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDdkM7QUFFRCxZQUFJLEtBQUssRUFBRTtBQUFFLGtCQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQUU7S0FDdkM7QUFFRCxhQUFBLGdCQUFBLENBQTBCLEdBQUcsRUFBQTtBQUMzQixlQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0tBQ2hFIiwiZmlsZSI6InRva2VuaXplci1ldmVudC1oYW5kbGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZvaWRNYXAgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IGIgZnJvbSBcIi4uL2J1aWxkZXJzXCI7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gIH0sXG5cbiAgLy8gQ29tbWVudFxuXG4gIGJlZ2luQ29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIuY29tbWVudChcIlwiKTtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmxvYyA9IHtcbiAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgIHN0YXJ0OiBiLnBvcyh0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pLFxuICAgICAgZW5kOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBhcHBlbmRUb0NvbW1lbnREYXRhOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS52YWx1ZSArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaENvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUubG9jLmVuZCA9IGIucG9zKHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtbik7XG5cbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudE5vZGUpO1xuICB9LFxuXG4gIC8vIERhdGFcblxuICBiZWdpbkRhdGE6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLnRleHQoKTtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmxvYyA9IHtcbiAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgIHN0YXJ0OiBiLnBvcyh0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW4pLFxuICAgICAgZW5kOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBhcHBlbmRUb0RhdGE6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmNoYXJzICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5sb2MuZW5kID0gYi5wb3ModGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uKTtcblxuICAgIGFwcGVuZENoaWxkKHRoaXMuY3VycmVudEVsZW1lbnQoKSwgdGhpcy5jdXJyZW50Tm9kZSk7XG4gIH0sXG5cbiAgLy8gVGFncyAtIGJhc2ljXG5cbiAgdGFnT3BlbjogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50YWdPcGVuTGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy50YWdPcGVuQ29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9LFxuXG4gIGJlZ2luU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgbmFtZTogXCJcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgYmVnaW5FbmRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGZpbmlzaFRhZzogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgbGluZSwgY29sdW1uIH0gPSB0aGlzLnRva2VuaXplcjtcblxuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIHRhZy5sb2MgPSBiLmxvYyh0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4sIGxpbmUsIGNvbHVtbik7XG5cbiAgICBpZiAodGFnLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoU3RhcnRUYWcoKTtcblxuICAgICAgaWYgKHZvaWRNYXAuaGFzT3duUHJvcGVydHkodGFnLm5hbWUpIHx8IHRhZy5zZWxmQ2xvc2luZykge1xuICAgICAgICB0aGlzLmZpbmlzaEVuZFRhZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhpcy5maW5pc2hFbmRUYWcoZmFsc2UpO1xuICAgIH1cbiAgfSxcblxuICBmaW5pc2hTdGFydFRhZzogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgbmFtZSwgYXR0cmlidXRlcywgbW9kaWZpZXJzIH0gPSB0aGlzLmN1cnJlbnROb2RlO1xuXG4gICAgbGV0IGxvYyA9IGIubG9jKHRoaXMudGFnT3BlbkxpbmUsIHRoaXMudGFnT3BlbkNvbHVtbik7XG4gICAgbGV0IGVsZW1lbnQgPSBiLmVsZW1lbnQobmFtZSwgYXR0cmlidXRlcywgbW9kaWZpZXJzLCBbXSwgbG9jKTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICB9LFxuXG4gIGZpbmlzaEVuZFRhZzogZnVuY3Rpb24oaXNWb2lkKSB7XG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudE5vZGU7XG5cbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG5cbiAgICB2YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIGlzVm9pZCk7XG5cbiAgICBlbGVtZW50LmxvYy5lbmQubGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgZWxlbWVudC5sb2MuZW5kLmNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcblxuICAgIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQpO1xuICAgIGFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gIH0sXG5cbiAgbWFya1RhZ0FzU2VsZkNsb3Npbmc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUuc2VsZkNsb3NpbmcgPSB0cnVlO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5uYW1lICs9IGNoYXI7XG4gIH0sXG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgZW5kIHRhZzogY2xvc2luZyB0YWcgbXVzdCBub3QgaGF2ZSBhdHRyaWJ1dGVzLCBgICtcbiAgICAgICAgYGluIFxcYCR7dGFnLm5hbWV9XFxgIChvbiBsaW5lICR7dGhpcy50b2tlbml6ZXIubGluZX0pLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0ge1xuICAgICAgbmFtZTogXCJcIixcbiAgICAgIHBhcnRzOiBbXSxcbiAgICAgIGlzUXVvdGVkOiBmYWxzZSxcbiAgICAgIGlzRHluYW1pYzogZmFsc2UsXG4gICAgICBzdGFydDogYi5wb3ModGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uKSxcbiAgICAgIHZhbHVlU3RhcnRMaW5lOiBudWxsLFxuICAgICAgdmFsdWVTdGFydENvbHVtbjogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLm5hbWUgKz0gY2hhcjtcbiAgfSxcblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihpc1F1b3RlZCkge1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS5pc1F1b3RlZCA9IGlzUXVvdGVkO1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS52YWx1ZVN0YXJ0TGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLnZhbHVlU3RhcnRDb2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oY2hhcikge1xuICAgIGxldCBwYXJ0cyA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZS5wYXJ0cztcblxuICAgIGlmICh0eXBlb2YgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSArPSBjaGFyO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKGNoYXIpO1xuICAgIH1cbiAgfSxcblxuICBmaW5pc2hBdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgbmFtZSwgcGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHZhbHVlU3RhcnRMaW5lLCB2YWx1ZVN0YXJ0Q29sdW1uIH0gPSB0aGlzLmN1cnJlbnRBdHRyaWJ1dGU7XG4gICAgbGV0IHZhbHVlID0gYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgdGhpcy50b2tlbml6ZXIubGluZSk7XG4gICAgdmFsdWUubG9jID0gYi5sb2MoXG4gICAgICB2YWx1ZVN0YXJ0TGluZSwgdmFsdWVTdGFydENvbHVtbixcbiAgICAgIHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtblxuICAgICk7XG5cbiAgICBsZXQgbG9jID0gYi5sb2MoXG4gICAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUuc3RhcnQubGluZSwgdGhpcy5jdXJyZW50QXR0cmlidXRlLnN0YXJ0LmNvbHVtbixcbiAgICAgIHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtblxuICAgICk7XG5cbiAgICBsZXQgYXR0cmlidXRlID0gYi5hdHRyKG5hbWUsIHZhbHVlLCBsb2MpO1xuXG4gICAgdGhpcy5jdXJyZW50Tm9kZS5hdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgbGluZSkge1xuICBpZiAoaXNEeW5hbWljKSB7XG4gICAgaWYgKGlzUXVvdGVkKSB7XG4gICAgICByZXR1cm4gYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBhIG11c3RhY2hlLCBgICtcbiAgICAgICAgICBgcHJlY2VlZGVkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPScgY2hhcmFjdGVyLCBhbmQgYCArXG4gICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPicgY2hhcmFjdGVyIChvbiBsaW5lICR7bGluZX0pYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYi50ZXh0KChwYXJ0cy5sZW5ndGggPiAwKSA/IHBhcnRzWzBdIDogXCJcIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgIGlmICh0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBhcnRzW2ldID0gYi50ZXh0KHBhcnRzW2ldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnQudHlwZSAhPT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBub2RlIGluIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWU6IFwiICsgcGFydC50eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYi5jb25jYXQocGFydHMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIHNlbGZDbG9zaW5nKSB7XG4gIGxldCBlcnJvcjtcblxuICBpZiAodm9pZE1hcFt0YWcubmFtZV0gJiYgIXNlbGZDbG9zaW5nKSB7XG4gICAgLy8gRW5nVGFnIGlzIGFsc28gY2FsbGVkIGJ5IFN0YXJ0VGFnIGZvciB2b2lkIGFuZCBzZWxmLWNsb3NpbmcgdGFncyAoaS5lLlxuICAgIC8vIDxpbnB1dD4gb3IgPGJyIC8+LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGRcbiAgICAvLyB0aHJvdyBhbiBlcnJvciBmb3IgdGhvc2UgY2FzZXMuXG4gICAgZXJyb3IgPSBcIkludmFsaWQgZW5kIHRhZyBcIiArIGZvcm1hdEVuZFRhZ0luZm8odGFnKSArIFwiICh2b2lkIGVsZW1lbnRzIGNhbm5vdCBoYXZlIGVuZCB0YWdzKS5cIjtcbiAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyb3IgPSBcIkNsb3NpbmcgdGFnIFwiICsgZm9ybWF0RW5kVGFnSW5mbyh0YWcpICsgXCIgd2l0aG91dCBhbiBvcGVuIHRhZy5cIjtcbiAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyAhPT0gdGFnLm5hbWUpIHtcbiAgICBlcnJvciA9IFwiQ2xvc2luZyB0YWcgXCIgKyBmb3JtYXRFbmRUYWdJbmZvKHRhZykgKyBcIiBkaWQgbm90IG1hdGNoIGxhc3Qgb3BlbiB0YWcgYFwiICsgZWxlbWVudC50YWcgKyBcImAgKG9uIGxpbmUgXCIgK1xuICAgICAgICAgICAgZWxlbWVudC5sb2Muc3RhcnQubGluZSArIFwiKS5cIjtcbiAgfVxuXG4gIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpOyB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEVuZFRhZ0luZm8odGFnKSB7XG4gIHJldHVybiBcImBcIiArIHRhZy5uYW1lICsgXCJgIChvbiBsaW5lIFwiICsgdGFnLmxvYy5lbmQubGluZSArIFwiKVwiO1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztzQkFJZTtBQUNiLGFBQUssRUFBRSxZQUFBO0FBQ0wsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pCOztBQUlELG9CQUFZLEVBQUUsWUFBQTtBQUNaLGdCQUFJLENBQUMsV0FBVyxHQUFHLGtDQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUc7QUFDckIsc0JBQU0sRUFBRSxJQUFJO0FBQ1oscUJBQUssRUFBRSxrQ0FBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQ2xELG1CQUFHLEVBQUUsSUFBSTthQUNWLENBQUM7U0FDSDtBQUVELDJCQUFtQixFQUFFLFVBQVMsSUFBSSxFQUFBO0FBQ2hDLGdCQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDaEM7QUFFRCxxQkFBYSxFQUFFLFlBQUE7QUFDYixnQkFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLGtDQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTdFLG1DQXpCSyxXQUFXLENBeUJKLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEQ7O0FBSUQsaUJBQVMsRUFBRSxZQUFBO0FBQ1QsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsa0NBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsZ0JBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHO0FBQ3JCLHNCQUFNLEVBQUUsSUFBSTtBQUNaLHFCQUFLLEVBQUUsa0NBQUUsR0FBRyxDQUFDLElBQUks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QUFrQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHdDQUF3QyxDQUFDO1NBQy9GLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUNwQyxpQkFBSyxHQUFHLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztTQUMxRSxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO0FBQ25DLGlCQUFLLEdBQUcsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdDQUFnQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUN2RyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO0FBRUQsWUFBSSxLQUFLLEVBQUU7QUFBRSxrQkFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUFFO0tBQ3ZDO0FBRUQsYUFBQSxnQkFBQSxDQUEwQixHQUFHLEVBQUE7QUFDM0IsZUFBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxhQUFhLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztLQUNoRSIsImZpbGUiOiJ0b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2b2lkTWFwIH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB9LFxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLmNvbW1lbnQoXCJcIik7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5sb2MgPSB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBzdGFydDogYi5wb3ModGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uKSxcbiAgICAgIGVuZDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUudmFsdWUgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hDb21tZW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmxvYy5lbmQgPSBiLnBvcyh0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW4pO1xuXG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgfSxcblxuICAvLyBEYXRhXG5cbiAgYmVnaW5EYXRhOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi50ZXh0KCk7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5sb2MgPSB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBzdGFydDogYi5wb3ModGhpcy50b2tlbml6ZXIubGluZSwgdGhpcy50b2tlbml6ZXIuY29sdW1uKSxcbiAgICAgIGVuZDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgYXBwZW5kVG9EYXRhOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5jaGFycyArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaERhdGE6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUubG9jLmVuZCA9IGIucG9zKHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtbik7XG5cbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudE5vZGUpO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIHRhZ09wZW46IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGFnT3BlbkxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMudGFnT3BlbkNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcbiAgfSxcblxuICBiZWdpblN0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ1N0YXJ0VGFnJyxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGJlZ2luRW5kVGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ0VuZFRhZycsXG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBmaW5pc2hUYWc6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IGxpbmUsIGNvbHVtbiB9ID0gdGhpcy50b2tlbml6ZXI7XG5cbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICB0YWcubG9jID0gYi5sb2ModGhpcy50YWdPcGVuTGluZSwgdGhpcy50YWdPcGVuQ29sdW1uLCBsaW5lLCBjb2x1bW4pO1xuXG4gICAgaWYgKHRhZy50eXBlID09PSAnU3RhcnRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaFN0YXJ0VGFnKCk7XG5cbiAgICAgIGlmICh2b2lkTWFwLmhhc093blByb3BlcnR5KHRhZy5uYW1lKSB8fCB0YWcuc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgdGhpcy5maW5pc2hFbmRUYWcodHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoRW5kVGFnKGZhbHNlKTtcbiAgICB9XG4gIH0sXG5cbiAgZmluaXNoU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IG5hbWUsIGF0dHJpYnV0ZXMsIG1vZGlmaWVycyB9ID0gdGhpcy5jdXJyZW50Tm9kZTtcblxuICAgIGxldCBsb2MgPSBiLmxvYyh0aGlzLnRhZ09wZW5MaW5lLCB0aGlzLnRhZ09wZW5Db2x1bW4pO1xuICAgIGxldCBlbGVtZW50ID0gYi5lbGVtZW50KG5hbWUsIGF0dHJpYnV0ZXMsIG1vZGlmaWVycywgW10sIGxvYyk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgfSxcblxuICBmaW5pc2hFbmRUYWc6IGZ1bmN0aW9uKGlzVm9pZCkge1xuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuXG4gICAgdmFsaWRhdGVFbmRUYWcodGFnLCBlbGVtZW50LCBpc1ZvaWQpO1xuXG4gICAgZWxlbWVudC5sb2MuZW5kLmxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIGVsZW1lbnQubG9jLmVuZC5jb2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG5cbiAgICBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICB9LFxuXG4gIG1hcmtUYWdBc1NlbGZDbG9zaW5nOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgfSxcblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUubmFtZSArPSBjaGFyO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBhdHRyaWJ1dGVzXG5cbiAgYmVnaW5BdHRyaWJ1dGU6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGVuZCB0YWc6IGNsb3NpbmcgdGFnIG11c3Qgbm90IGhhdmUgYXR0cmlidXRlcywgYCArXG4gICAgICAgIGBpbiBcXGAke3RhZy5uYW1lfVxcYCAob24gbGluZSAke3RoaXMudG9rZW5pemVyLmxpbmV9KS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IHtcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBwYXJ0czogW10sXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBpc0R5bmFtaWM6IGZhbHNlLFxuICAgICAgc3RhcnQ6IGIucG9zKHRoaXMudG9rZW5pemVyLmxpbmUsIHRoaXMudG9rZW5pemVyLmNvbHVtbiksXG4gICAgICB2YWx1ZVN0YXJ0TGluZTogbnVsbCxcbiAgICAgIHZhbHVlU3RhcnRDb2x1bW46IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGFwcGVuZFRvQXR0cmlidXRlTmFtZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS5uYW1lICs9IGNoYXI7XG4gIH0sXG5cbiAgYmVnaW5BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oaXNRdW90ZWQpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUuaXNRdW90ZWQgPSBpc1F1b3RlZDtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUudmFsdWVTdGFydExpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS52YWx1ZVN0YXJ0Q29sdW1uID0gdGhpcy50b2tlbml6ZXIuY29sdW1uO1xuICB9LFxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICBsZXQgcGFydHMgPSB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUucGFydHM7XG5cbiAgICBpZiAodHlwZW9mIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09PSAnc3RyaW5nJykge1xuICAgICAgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gKz0gY2hhcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMucHVzaChjaGFyKTtcbiAgICB9XG4gIH0sXG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IG5hbWUsIHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCB2YWx1ZVN0YXJ0TGluZSwgdmFsdWVTdGFydENvbHVtbiB9ID0gdGhpcy5jdXJyZW50QXR0cmlidXRlO1xuICAgIGxldCB2YWx1ZSA9IGFzc2VtYmxlQXR0cmlidXRlVmFsdWUocGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIHRoaXMudG9rZW5pemVyLmxpbmUpO1xuICAgIHZhbHVlLmxvYyA9IGIubG9jKFxuICAgICAgdmFsdWVTdGFydExpbmUsIHZhbHVlU3RhcnRDb2x1bW4sXG4gICAgICB0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW5cbiAgICApO1xuXG4gICAgbGV0IGxvYyA9IGIubG9jKFxuICAgICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLnN0YXJ0LmxpbmUsIHRoaXMuY3VycmVudEF0dHJpYnV0ZS5zdGFydC5jb2x1bW4sXG4gICAgICB0aGlzLnRva2VuaXplci5saW5lLCB0aGlzLnRva2VuaXplci5jb2x1bW5cbiAgICApO1xuXG4gICAgbGV0IGF0dHJpYnV0ZSA9IGIuYXR0cihuYW1lLCB2YWx1ZSwgbG9jKTtcblxuICAgIHRoaXMuY3VycmVudE5vZGUuYXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFzc2VtYmxlQXR0cmlidXRlVmFsdWUocGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMsIGxpbmUpIHtcbiAgaWYgKGlzRHluYW1pYykge1xuICAgIGlmIChpc1F1b3RlZCkge1xuICAgICAgcmV0dXJuIGFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUocGFydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxIHx8IChwYXJ0cy5sZW5ndGggPT09IDIgJiYgcGFydHNbMV0gPT09ICcvJykpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBhIG11c3RhY2hlLCBgICtcbiAgICAgICAgICBgcHJlY2VlZGVkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPScgY2hhcmFjdGVyLCBhbmQgYCArXG4gICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UsIGEgJz4nIGNoYXJhY3Rlciwgb3IgJy8+JyAob24gbGluZSAke2xpbmV9KWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGIudGV4dCgocGFydHMubGVuZ3RoID4gMCkgPyBwYXJ0c1swXSA6IFwiXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VtYmxlQ29uY2F0ZW5hdGVkVmFsdWUocGFydHMpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICBpZiAodHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwYXJ0c1tpXSA9IGIudGV4dChwYXJ0c1tpXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgIT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgbm9kZSBpbiBxdW90ZWQgYXR0cmlidXRlIHZhbHVlOiBcIiArIHBhcnQudHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGIuY29uY2F0KHBhcnRzKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVFbmRUYWcodGFnLCBlbGVtZW50LCBzZWxmQ2xvc2luZykge1xuICBsZXQgZXJyb3I7XG5cbiAgaWYgKHZvaWRNYXBbdGFnLm5hbWVdICYmICFzZWxmQ2xvc2luZykge1xuICAgIC8vIEVuZ1RhZyBpcyBhbHNvIGNhbGxlZCBieSBTdGFydFRhZyBmb3Igdm9pZCBhbmQgc2VsZi1jbG9zaW5nIHRhZ3MgKGkuZS5cbiAgICAvLyA8aW5wdXQ+IG9yIDxiciAvPiwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgdGhhdCBoZXJlLiBPdGhlcndpc2UsIHdlIHdvdWxkXG4gICAgLy8gdGhyb3cgYW4gZXJyb3IgZm9yIHRob3NlIGNhc2VzLlxuICAgIGVycm9yID0gXCJJbnZhbGlkIGVuZCB0YWcgXCIgKyBmb3JtYXRFbmRUYWdJbmZvKHRhZykgKyBcIiAodm9pZCBlbGVtZW50cyBjYW5ub3QgaGF2ZSBlbmQgdGFncykuXCI7XG4gIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgPT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9yID0gXCJDbG9zaW5nIHRhZyBcIiArIGZvcm1hdEVuZFRhZ0luZm8odGFnKSArIFwiIHdpdGhvdXQgYW4gb3BlbiB0YWcuXCI7XG4gIH0gZWxzZSBpZiAoZWxlbWVudC50YWcgIT09IHRhZy5uYW1lKSB7XG4gICAgZXJyb3IgPSBcIkNsb3NpbmcgdGFnIFwiICsgZm9ybWF0RW5kVGFnSW5mbyh0YWcpICsgXCIgZGlkIG5vdCBtYXRjaCBsYXN0IG9wZW4gdGFnIGBcIiArIGVsZW1lbnQudGFnICsgXCJgIChvbiBsaW5lIFwiICtcbiAgICAgICAgICAgIGVsZW1lbnQubG9jLnN0YXJ0LmxpbmUgKyBcIikuXCI7XG4gIH1cblxuICBpZiAoZXJyb3IpIHsgdGhyb3cgbmV3IEVycm9yKGVycm9yKTsgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRFbmRUYWdJbmZvKHRhZykge1xuICByZXR1cm4gXCJgXCIgKyB0YWcubmFtZSArIFwiYCAob24gbGluZSBcIiArIHRhZy5sb2MuZW5kLmxpbmUgKyBcIilcIjtcbn1cbiJdfQ== enifed("glimmer-syntax/lib/syntax", ["exports", "glimmer-syntax/lib/builders", "glimmer-syntax/lib/parser", "glimmer-syntax/lib/generation/print", "glimmer-syntax/lib/traversal/traverse", "glimmer-syntax/lib/traversal/walker"], function (exports, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibParser, _glimmerSyntaxLibGenerationPrint, _glimmerSyntaxLibTraversalTraverse, _glimmerSyntaxLibTraversalWalker) { "use strict"; exports.builders = _glimmerSyntaxLibBuilders.default; exports.parse = _glimmerSyntaxLibParser.default; @@ -24061,11 +24633,11 @@ 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== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGFBQUEsY0FBQSxDQUF3QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUE7QUFDaEQsWUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUM3QixZQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUN2QixZQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixZQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixZQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztLQUNoQjtBQUVELGtCQUFjLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFELGtCQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7c0JBRXZDLGNBQWM7O0FBRXZCLGFBQUEsZ0JBQUEsQ0FBMkIsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUE7QUFDaEQsZUFBTyxJQUFJLGNBQWMsQ0FDdkIsb0RBQW9ELEVBQ3BELElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUNsQixDQUFDO0tBQ0g7O0FBRUssYUFBQSxpQkFBQSxDQUE0QixJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQTtBQUNqRCxlQUFPLElBQUksY0FBYyxDQUN2Qix5RUFBeUUsRUFDekUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQ2xCLENBQUM7S0FDSDs7QUFFSyxhQUFBLG9DQUFBLENBQStDLElBQUksRUFBRSxHQUFHLEVBQUE7QUFDNUQsZUFBTyxJQUFJLGNBQWMsQ0FDdkIsOERBQThELEVBQzlELElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUNoQixDQUFDO0tBQ0giLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gVHJhdmVyc2FsRXJyb3IobWVzc2FnZSwgbm9kZSwgcGFyZW50LCBrZXkpIHtcbiAgdGhpcy5uYW1lID0gXCJUcmF2ZXJzYWxFcnJvclwiO1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLm5vZGUgPSBub2RlO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5rZXkgPSBrZXk7XG59XG5cblRyYXZlcnNhbEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcblRyYXZlcnNhbEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRyYXZlcnNhbEVycm9yO1xuXG5leHBvcnQgZGVmYXVsdCBUcmF2ZXJzYWxFcnJvcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbm5vdFJlbW92ZU5vZGUobm9kZSwgcGFyZW50LCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBUcmF2ZXJzYWxFcnJvcihcbiAgICBcIkNhbm5vdCByZW1vdmUgYSBub2RlIHVubGVzcyBpdCBpcyBwYXJ0IG9mIGFuIGFycmF5XCIsXG4gICAgbm9kZSwgcGFyZW50LCBrZXlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbm5vdFJlcGxhY2VOb2RlKG5vZGUsIHBhcmVudCwga2V5KSB7XG4gIHJldHVybiBuZXcgVHJhdmVyc2FsRXJyb3IoXG4gICAgXCJDYW5ub3QgcmVwbGFjZSBhIG5vZGUgd2l0aCBtdWx0aXBsZSBub2RlcyB1bmxlc3MgaXQgaXMgcGFydCBvZiBhbiBhcnJheVwiLFxuICAgIG5vZGUsIHBhcmVudCwga2V5XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQobm9kZSwga2V5KSB7XG4gIHJldHVybiBuZXcgVHJhdmVyc2FsRXJyb3IoXG4gICAgXCJSZXBsYWNpbmcgYW5kIHJlbW92aW5nIGluIGtleSBoYW5kbGVycyBpcyBub3QgeWV0IHN1cHBvcnRlZC5cIixcbiAgICBub2RlLCBudWxsLCBrZXlcbiAgKTtcbn1cbiJdfQ== 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; @@ -24074,10 +24646,19 @@ var handler = visitor[node.type] || visitor.All; var result = undefined; if (handler && handler.enter) { result = handler.enter.call(null, node); } + 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; + } + } if (result === undefined) { var keys = _glimmerSyntaxLibTypesVisitorKeys.default[node.type]; for (var i = 0; i < keys.length; i++) { visitKey(visitor, handler, node, keys[i]); } @@ -24194,11 +24775,11 @@ } } return normalizedVisitor; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQXFHQSxRQUFBOzs7QUE5RkEsYUFBQSxTQUFBLENBQW1CLE9BQU8sRUFBRSxJQUFJLEVBQUE7QUFDOUIsWUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hELFlBQUksTUFBTSxZQUFBLENBQUM7QUFFWCxZQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLGtCQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO0FBRUQsWUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQ3hCLGdCQUFJLElBQUksR0FBRywwQ0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbEMsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLHdCQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7QUFFRCxnQkFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUMzQixzQkFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN4QztTQUNGO0FBRUQsZUFBTyxNQUFNLENBQUM7S0FDZjtBQUVELGFBQUEsUUFBQSxDQUFrQixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUE7QUFDM0MsWUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLFlBQUksQ0FBQyxLQUFLLEVBQUU7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QU8sVUFBVSxLQUFLLFFBQVEsRUFBRTtBQUNsQywwQ0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3BCLHFDQUFLLEVBQUUsQUFBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUN6RSxvQ0FBSSxFQUFFLEFBQUMsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsR0FBSSxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUk7NkJBQ3ZFLENBQUM7eUJBQ0gsTUFBTSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRTtBQUMzQywwQ0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3BCLHFDQUFLLEVBQUUsVUFBVTtBQUNqQixvQ0FBSSxFQUFFLElBQUk7NkJBQ1gsQ0FBQzt5QkFDSDtxQkFDRjtpQkFDRjtBQUVELGlDQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHO0FBQ3hCLHlCQUFLLEVBQUUsQUFBQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUNuRSx3QkFBSSxFQUFFLEFBQUMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsR0FBSSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUk7QUFDaEUsd0JBQUksRUFBRSxjQUFjO2lCQUNyQixDQUFDO2FBQ0gsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUN4QyxpQ0FBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4Qix5QkFBSyxFQUFFLE9BQU87QUFDZCx3QkFBSSxFQUFFLElBQUk7QUFDVix3QkFBSSxFQUFFLGNBQWM7aUJBQ3JCLENBQUM7YUFDSDtTQUNGO0FBRUQsZUFBTyxpQkFBaUIsQ0FBQztLQUMxQiIsImZpbGUiOiJ0cmF2ZXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2aXNpdG9yS2V5cyBmcm9tICcuLi90eXBlcy92aXNpdG9yLWtleXMnO1xuaW1wb3J0IHtcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbmZ1bmN0aW9uIHZpc2l0Tm9kZSh2aXNpdG9yLCBub2RlKSB7XG4gIGxldCBoYW5kbGVyID0gdmlzaXRvcltub2RlLnR5cGVdIHx8IHZpc2l0b3IuQWxsO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChoYW5kbGVyICYmIGhhbmRsZXIuZW50ZXIpIHtcbiAgICByZXN1bHQgPSBoYW5kbGVyLmVudGVyLmNhbGwobnVsbCwgbm9kZSk7XG4gIH1cblxuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICBsZXQga2V5cyA9IHZpc2l0b3JLZXlzW25vZGUudHlwZV07XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZpc2l0S2V5KHZpc2l0b3IsIGhhbmRsZXIsIG5vZGUsIGtleXNbaV0pO1xuICAgIH1cblxuICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIuZXhpdCkge1xuICAgICAgcmVzdWx0ID0gaGFuZGxlci5leGl0LmNhbGwobnVsbCwgbm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gdmlzaXRLZXkodmlzaXRvciwgaGFuZGxlciwgbm9kZSwga2V5KSB7XG4gIGxldCB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgaWYgKCF2YWx1ZSkgeyByZXR1cm47IH1cblxuICBsZXQga2V5SGFuZGxlciA9IGhhbmRsZXIgJiYgKGhhbmRsZXIua2V5c1trZXldIHx8IGhhbmRsZXIua2V5cy5BbGwpO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChrZXlIYW5kbGVyICYmIGtleUhhbmRsZXIuZW50ZXIpIHtcbiAgICByZXN1bHQgPSBrZXlIYW5kbGVyLmVudGVyLmNhbGwobnVsbCwgbm9kZSwga2V5KTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldChub2RlLCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZpc2l0QXJyYXkodmlzaXRvciwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGxldCByZXN1bHQgPSB2aXNpdE5vZGUodmlzaXRvciwgdmFsdWUpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzaWduS2V5KG5vZGUsIGtleSwgcmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBpZiAoa2V5SGFuZGxlciAmJiBrZXlIYW5kbGVyLmV4aXQpIHtcbiAgICByZXN1bHQgPSBrZXlIYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZpc2l0QXJyYXkodmlzaXRvciwgYXJyYXkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGxldCByZXN1bHQgPSB2aXNpdE5vZGUodmlzaXRvciwgYXJyYXlbaV0pO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaSArPSBzcGxpY2VBcnJheShhcnJheSwgaSwgcmVzdWx0KSAtIDE7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbktleShub2RlLCBrZXksIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5vZGVba2V5XSA9IHJlc3VsdFswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBjYW5ub3RSZXBsYWNlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5vZGVba2V5XSA9IHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzcGxpY2VBcnJheShhcnJheSwgaW5kZXgsIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEsIC4uLnJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxLCByZXN1bHQpO1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYXZlcnNlKG5vZGUsIHZpc2l0b3IpIHtcbiAgdmlzaXROb2RlKG5vcm1hbGl6ZVZpc2l0b3IodmlzaXRvciksIG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmlzaXRvcih2aXNpdG9yKSB7XG4gIGxldCBub3JtYWxpemVkVmlzaXRvciA9IHt9O1xuXG4gIGZvciAobGV0IHR5cGUgaW4gdmlzaXRvcikge1xuICAgIGxldCBoYW5kbGVyID0gdmlzaXRvclt0eXBlXSB8fCB2aXNpdG9yLkFsbDtcbiAgICBsZXQgbm9ybWFsaXplZEtleXMgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGxldCBrZXlzID0gaGFuZGxlci5rZXlzO1xuICAgICAgaWYgKGtleXMpIHtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGtleXMpIHtcbiAgICAgICAgICBsZXQga2V5SGFuZGxlciA9IGtleXNba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkS2V5c1trZXldID0ge1xuICAgICAgICAgICAgICBlbnRlcjogKHR5cGVvZiBrZXlIYW5kbGVyLmVudGVyID09PSAnZnVuY3Rpb24nKSA/IGtleUhhbmRsZXIuZW50ZXIgOiBudWxsLFxuICAgICAgICAgICAgICBleGl0OiAodHlwZW9mIGtleUhhbmRsZXIuZXhpdCA9PT0gJ2Z1bmN0aW9uJykgPyBrZXlIYW5kbGVyLmV4aXQgOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRLZXlzW2tleV0gPSB7XG4gICAgICAgICAgICAgIGVudGVyOiBrZXlIYW5kbGVyLFxuICAgICAgICAgICAgICBleGl0OiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub3JtYWxpemVkVmlzaXRvclt0eXBlXSA9IHtcbiAgICAgICAgZW50ZXI6ICh0eXBlb2YgaGFuZGxlci5lbnRlciA9PT0gJ2Z1bmN0aW9uJykgPyBoYW5kbGVyLmVudGVyIDogbnVsbCxcbiAgICAgICAgZXhpdDogKHR5cGVvZiBoYW5kbGVyLmV4aXQgPT09ICdmdW5jdGlvbicpID8gaGFuZGxlci5leGl0IDogbnVsbCxcbiAgICAgICAga2V5czogbm9ybWFsaXplZEtleXNcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbm9ybWFsaXplZFZpc2l0b3JbdHlwZV0gPSB7XG4gICAgICAgIGVudGVyOiBoYW5kbGVyLFxuICAgICAgICBleGl0OiBudWxsLFxuICAgICAgICBrZXlzOiBub3JtYWxpemVkS2V5c1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFZpc2l0b3I7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi90cmF2ZXJzYWwvdHJhdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3NCQStHYyxRQUFBOzs7QUF4R2QsYUFBQSxTQUFBLENBQW1CLE9BQU8sRUFBRSxJQUFJLEVBQUE7QUFDOUIsWUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hELFlBQUksTUFBTSxZQUFBLENBQUM7QUFFWCxZQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQzVCLGtCQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pDO0FBRUQsWUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFDM0MsZ0JBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ25ELHNCQUFNLEdBQUcsU0FBUyxDQUFDO2FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ2hDLHVCQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDO2FBQzlDLE1BQU07QUFDTCx1QkFBTyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQzthQUM3QztTQUNGO0FBRUQsWUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQ3hCLGdCQUFJLElBQUksR0FBRywwQ0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbEMsaUJBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLHdCQUFRLENBQUMsT0FB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QUMsSUFBSSxHQUFHLElBQUk7QUFDaEUsd0JBQUksRUFBRSxjQUFjO2lCQUNyQixDQUFDO2FBQ0gsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUN4QyxpQ0FBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4Qix5QkFBSyxFQUFFLE9BQU87QUFDZCx3QkFBSSxFQUFFLElBQUk7QUFDVix3QkFBSSxFQUFFLGNBQWM7aUJBQ3JCLENBQUM7YUFDSDtTQUNGO0FBRUQsZUFBTyxpQkFBaUIsQ0FBQztLQUMxQiIsImZpbGUiOiJ0cmF2ZXJzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2aXNpdG9yS2V5cyBmcm9tICcuLi90eXBlcy92aXNpdG9yLWtleXMnO1xuaW1wb3J0IHtcbiAgY2Fubm90UmVtb3ZlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU5vZGUsXG4gIGNhbm5vdFJlcGxhY2VPclJlbW92ZUluS2V5SGFuZGxlcllldFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbmZ1bmN0aW9uIHZpc2l0Tm9kZSh2aXNpdG9yLCBub2RlKSB7XG4gIGxldCBoYW5kbGVyID0gdmlzaXRvcltub2RlLnR5cGVdIHx8IHZpc2l0b3IuQWxsO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChoYW5kbGVyICYmIGhhbmRsZXIuZW50ZXIpIHtcbiAgICByZXN1bHQgPSBoYW5kbGVyLmVudGVyLmNhbGwobnVsbCwgbm9kZSk7XG4gIH1cblxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0ICE9PSBudWxsKSB7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KG5vZGUpID09PSBKU09OLnN0cmluZ2lmeShyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiB2aXNpdEFycmF5KHZpc2l0b3IsIHJlc3VsdCkgfHwgcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmlzaXROb2RlKHZpc2l0b3IsIHJlc3VsdCkgfHwgcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBrZXlzID0gdmlzaXRvcktleXNbbm9kZS50eXBlXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmlzaXRLZXkodmlzaXRvciwgaGFuZGxlciwgbm9kZSwga2V5c1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5leGl0KSB7XG4gICAgICByZXN1bHQgPSBoYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB2aXNpdEtleSh2aXNpdG9yLCBoYW5kbGVyLCBub2RlLCBrZXkpIHtcbiAgbGV0IHZhbHVlID0gbm9kZVtrZXldO1xuICBpZiAoIXZhbHVlKSB7IHJldHVybjsgfVxuXG4gIGxldCBrZXlIYW5kbGVyID0gaGFuZGxlciAmJiAoaGFuZGxlci5rZXlzW2tleV0gfHwgaGFuZGxlci5rZXlzLkFsbCk7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGtleUhhbmRsZXIgJiYga2V5SGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmlzaXRBcnJheSh2aXNpdG9yLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCB2YWx1ZSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NpZ25LZXkobm9kZSwga2V5LCByZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChrZXlIYW5kbGVyICYmIGtleUhhbmRsZXIuZXhpdCkge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZXhpdC5jYWxsKG51bGwsIG5vZGUsIGtleSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBjYW5ub3RSZXBsYWNlT3JSZW1vdmVJbktleUhhbmRsZXJZZXQobm9kZSwga2V5KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmlzaXRBcnJheSh2aXNpdG9yLCBhcnJheSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCBhcnJheVtpXSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpICs9IHNwbGljZUFycmF5KGFycmF5LCBpLCByZXN1bHQpIC0gMTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzaWduS2V5KG5vZGUsIGtleSwgcmVzdWx0KSB7XG4gIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBjYW5ub3RSZW1vdmVOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbm9kZVtrZXldID0gcmVzdWx0WzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBjYW5ub3RSZW1vdmVOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGNhbm5vdFJlcGxhY2VOb2RlKG5vZGVba2V5XSwgbm9kZSwga2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZVtrZXldID0gcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHNwbGljZUFycmF5KGFycmF5LCBpbmRleCwgcmVzdWx0KSB7XG4gIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMSwgLi4ucmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEsIHJlc3VsdCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZSwgdmlzaXRvcikge1xuICB2aXNpdE5vZGUobm9ybWFsaXplVmlzaXRvcih2aXNpdG9yKSwgbm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWaXNpdG9yKHZpc2l0b3IpIHtcbiAgbGV0IG5vcm1hbGl6ZWRWaXNpdG9yID0ge307XG5cbiAgZm9yIChsZXQgdHlwZSBpbiB2aXNpdG9yKSB7XG4gICAgbGV0IGhhbmRsZXIgPSB2aXNpdG9yW3R5cGVdIHx8IHZpc2l0b3IuQWxsO1xuICAgIGxldCBub3JtYWxpemVkS2V5cyA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgbGV0IGtleXMgPSBoYW5kbGVyLmtleXM7XG4gICAgICBpZiAoa2V5cykge1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4ga2V5cykge1xuICAgICAgICAgIGxldCBrZXlIYW5kbGVyID0ga2V5c1trZXldO1xuICAgICAgICAgIGlmICh0eXBlb2Yga2V5SGFuZGxlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRLZXlzW2tleV0gPSB7XG4gICAgICAgICAgICAgIGVudGVyOiAodHlwZW9mIGtleUhhbmRsZXIuZW50ZXIgPT09ICdmdW5jdGlvbicpID8ga2V5SGFuZGxlci5lbnRlciA6IG51bGwsXG4gICAgICAgICAgICAgIGV4aXQ6ICh0eXBlb2Yga2V5SGFuZGxlci5leGl0ID09PSAnZnVuY3Rpb24nKSA/IGtleUhhbmRsZXIuZXhpdCA6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yga2V5SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbm9ybWFsaXplZEtleXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgZW50ZXI6IGtleUhhbmRsZXIsXG4gICAgICAgICAgICAgIGV4aXQ6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5vcm1hbGl6ZWRWaXNpdG9yW3R5cGVdID0ge1xuICAgICAgICBlbnRlcjogKHR5cGVvZiBoYW5kbGVyLmVudGVyID09PSAnZnVuY3Rpb24nKSA/IGhhbmRsZXIuZW50ZXIgOiBudWxsLFxuICAgICAgICBleGl0OiAodHlwZW9mIGhhbmRsZXIuZXhpdCA9PT0gJ2Z1bmN0aW9uJykgPyBoYW5kbGVyLmV4aXQgOiBudWxsLFxuICAgICAgICBrZXlzOiBub3JtYWxpemVkS2V5c1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBub3JtYWxpemVkVmlzaXRvclt0eXBlXSA9IHtcbiAgICAgICAgZW50ZXI6IGhhbmRsZXIsXG4gICAgICAgIGV4aXQ6IG51bGwsXG4gICAgICAgIGtleXM6IG5vcm1hbGl6ZWRLZXlzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkVmlzaXRvcjtcbn1cbiJdfQ== enifed('glimmer-syntax/lib/traversal/walker', ['exports'], function (exports) { 'use strict'; function Walker() { var order = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0]; @@ -24277,11 +24858,10 @@ exports.parseElementBlockParams = parseElementBlockParams; exports.childrenFor = childrenFor; exports.appendChild = appendChild; exports.isHelper = isHelper; - exports.isSelfGet = isSelfGet; exports.unwrapMustache = unwrapMustache; // Regex to validate the identifier for block parameters. // Based on the ID validation regex in Handlebars. var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/; @@ -24340,46 +24920,41 @@ function isHelper(mustache) { return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0; } - function isSelfGet(mustache) { - var isSimple = (!mustache.params || mustache.params.length === 0) && (!mustache.hash || mustache.hash.pairs.length === 0); - return isSimple && mustache.path.original.match(/^this./); - } - function unwrapMustache(mustache) { if (isHelper(mustache)) { return mustache; } else { return mustache.path; } } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxRQUFJLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDOzs7OztBQU10RCxhQUFBLHVCQUFBLENBQXdDLE9BQU8sRUFBQTtBQUM3QyxZQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxZQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztLQUMxQzs7QUFFRCxhQUFBLGdCQUFBLENBQTBCLE9BQU8sRUFBQTtBQUMvQixZQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNsQyxZQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFbkIsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQixxQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVDO0FBRUQsWUFBSSxPQUFPLEdBQUcsYUF2QlAsWUFBWSxDQXVCUSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFNUMsWUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7O0FBRTdFLGdCQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxnQkFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNsRyxzQkFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDOUU7QUFFRCxnQkFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLGlCQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxvQkFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsb0JBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtBQUNoQix3QkFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEMsOEJBQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLEdBQUcsS0FBSyxHQUFHLFVBQVUsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7cUJBQzNHO0FBQ0QsMEJBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3BCO2FBQ0Y7QUFFRCxnQkFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN2QixzQkFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDL0U7QUFFRCxtQkFBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsbUJBQU8sTUFBTSxDQUFDO1NBQ2Y7S0FDRjs7QUFFRCxhQUFBLFdBQUEsQ0FBNEIsSUFBSSxFQUFBO0FBQzlCLFlBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7QUFDM0IsbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjtBQUNELFlBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7QUFDL0IsbUJBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QjtLQUNGOztBQUVELGFBQUEsV0FBQSxDQUE0QixNQUFNLEVBQUUsSUFBSSxFQUFBO0FBQ3RDLG1CQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2hDOztBQUVELGFBQUEsUUFBQSxDQUF5QixRQUFRLEVBQUE7QUFDL0IsZUFBTyxBQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUNsRCxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEFBQUMsQ0FBQztLQUNyRDs7QUFFRCxhQUFBLFNBQUEsQ0FBMEIsUUFBUSxFQUFBO0FBQ2hDLFlBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQSxLQUM3RCxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQSxBQUFDLENBQUM7QUFFdkQsZUFBTyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzNEOztBQUVELGFBQUEsY0FBQSxDQUErQixRQUFRLEVBQUE7QUFDckMsWUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdEIsbUJBQU8sUUFBUSxDQUFDO1NBQ2pCLE1BQU07QUFDTCxtQkFBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO0tBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mQXJyYXkgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG4vLyBSZWdleCB0byB2YWxpZGF0ZSB0aGUgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycy5cbi8vIEJhc2VkIG9uIHRoZSBJRCB2YWxpZGF0aW9uIHJlZ2V4IGluIEhhbmRsZWJhcnMuXG5cbmxldCBJRF9JTlZFUlNFX1BBVFRFUk4gPSAvWyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0vO1xuXG4vLyBDaGVja3MgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIHRvIHNlZSBpZiBpdCB1c2VzIGJsb2NrIHBhcmFtcy5cbi8vIElmIGl0IGRvZXMsIHJlZ2lzdGVycyB0aGUgYmxvY2sgcGFyYW1zIHdpdGggdGhlIHByb2dyYW0gYW5kXG4vLyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZWxlbWVudC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQpIHtcbiAgbGV0IHBhcmFtcyA9IHBhcnNlQmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gIGlmIChwYXJhbXMpIGVsZW1lbnQuYmxvY2tQYXJhbXMgPSBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQmxvY2tQYXJhbXMoZWxlbWVudCkge1xuICBsZXQgbCA9IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7XG4gIGxldCBhdHRyTmFtZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGF0dHJOYW1lcy5wdXNoKGVsZW1lbnQuYXR0cmlidXRlc1tpXS5uYW1lKTtcbiAgfVxuXG4gIGxldCBhc0luZGV4ID0gaW5kZXhPZkFycmF5KGF0dHJOYW1lcywgJ2FzJyk7XG5cbiAgaWYgKGFzSW5kZXggIT09IC0xICYmIGwgPiBhc0luZGV4ICYmIGF0dHJOYW1lc1thc0luZGV4ICsgMV0uY2hhckF0KDApID09PSAnfCcpIHtcbiAgICAvLyBTb21lIGJhc2ljIHZhbGlkYXRpb24sIHNpbmNlIHdlJ3JlIGRvaW5nIHRoZSBwYXJzaW5nIG91cnNlbHZlc1xuICAgIGxldCBwYXJhbXNTdHJpbmcgPSBhdHRyTmFtZXMuc2xpY2UoYXNJbmRleCkuam9pbignICcpO1xuICAgIGlmIChwYXJhbXNTdHJpbmcuY2hhckF0KHBhcmFtc1N0cmluZy5sZW5ndGggLSAxKSAhPT0gJ3wnIHx8IHBhcmFtc1N0cmluZy5tYXRjaCgvXFx8L2cpLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJsb2NrIHBhcmFtZXRlcnMgc3ludGF4OiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gYXNJbmRleCArIDE7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxldCBwYXJhbSA9IGF0dHJOYW1lc1tpXS5yZXBsYWNlKC9cXHwvZywgJycpO1xuICAgICAgaWYgKHBhcmFtICE9PSAnJykge1xuICAgICAgICBpZiAoSURfSU5WRVJTRV9QQVRURVJOLnRlc3QocGFyYW0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGlkZW50aWZpZXIgZm9yIGJsb2NrIHBhcmFtZXRlcnM6IFxcJycgKyBwYXJhbSArICdcXCcgaW4gXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSB6ZXJvIGJsb2NrIHBhcmFtZXRlcnM6IFxcJycgKyBwYXJhbXNTdHJpbmcgKyAnXFwnJyk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5hdHRyaWJ1dGVzID0gZWxlbWVudC5hdHRyaWJ1dGVzLnNsaWNlKDAsIGFzSW5kZXgpO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkcmVuRm9yKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ1Byb2dyYW0nKSB7XG4gICAgcmV0dXJuIG5vZGUuYm9keTtcbiAgfVxuICBpZiAobm9kZS50eXBlID09PSAnRWxlbWVudE5vZGUnKSB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENoaWxkKHBhcmVudCwgbm9kZSkge1xuICBjaGlsZHJlbkZvcihwYXJlbnQpLnB1c2gobm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hlbHBlcihtdXN0YWNoZSkge1xuICByZXR1cm4gKG11c3RhY2hlLnBhcmFtcyAmJiBtdXN0YWNoZS5wYXJhbXMubGVuZ3RoID4gMCkgfHxcbiAgICAobXVzdGFjaGUuaGFzaCAmJiBtdXN0YWNoZS5oYXNoLnBhaXJzLmxlbmd0aCA+IDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxmR2V0KG11c3RhY2hlKSB7XG4gIGxldCBpc1NpbXBsZSA9ICghbXVzdGFjaGUucGFyYW1zIHx8IG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPT09IDApICYmXG4gICAgKCFtdXN0YWNoZS5oYXNoIHx8IG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID09PSAwKTtcblxuICByZXR1cm4gaXNTaW1wbGUgJiYgbXVzdGFjaGUucGF0aC5vcmlnaW5hbC5tYXRjaCgvXnRoaXMuLyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBNdXN0YWNoZShtdXN0YWNoZSkge1xuICBpZiAoaXNIZWxwZXIobXVzdGFjaGUpKSB7XG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtdXN0YWNoZS5wYXRoO1xuICB9XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBLFFBQUksa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7Ozs7O0FBTWhELGFBQUEsdUJBQUEsQ0FBa0MsT0FBTyxFQUFBO0FBQzdDLFlBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLFlBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0tBQzFDOztBQUVELGFBQUEsZ0JBQUEsQ0FBMEIsT0FBTyxFQUFBO0FBQy9CLFlBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ2xDLFlBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUVuQixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLHFCQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUM7QUFFRCxZQUFJLE9BQU8sR0FBRyxhQXZCUCxZQUFZLENBdUJRLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU1QyxZQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTs7QUFFN0UsZ0JBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELGdCQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ2xHLHNCQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQzthQUM5RTtBQUVELGdCQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDaEIsaUJBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLG9CQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxvQkFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ2hCLHdCQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQyw4QkFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsR0FBRyxLQUFLLEdBQUcsVUFBVSxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztxQkFDM0c7QUFDRCwwQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtBQUVELGdCQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLHNCQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMvRTtBQUVELG1CQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxtQkFBTyxNQUFNLENBQUM7U0FDZjtLQUNGOztBQUVLLGFBQUEsV0FBQSxDQUFzQixJQUFJLEVBQUE7QUFDOUIsWUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUMzQixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO0FBQ0QsWUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtBQUMvQixtQkFBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3RCO0tBQ0Y7O0FBRUssYUFBQSxXQUFBLENBQXNCLE1BQU0sRUFBRSxJQUFJLEVBQUE7QUFDdEMsbUJBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEM7O0FBRUssYUFBQSxRQUFBLENBQW1CLFFBQVEsRUFBQTtBQUMvQixlQUFPLEFBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQ2xELFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQUFBQyxDQUFDO0tBQ3JEOztBQUVLLGFBQUEsY0FBQSxDQUF5QixRQUFRLEVBQUE7QUFDckMsWUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdEIsbUJBQU8sUUFBUSxDQUFDO1NBQ2pCLE1BQU07QUFDTCxtQkFBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO0tBQ0YiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mQXJyYXkgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG4vLyBSZWdleCB0byB2YWxpZGF0ZSB0aGUgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycy5cbi8vIEJhc2VkIG9uIHRoZSBJRCB2YWxpZGF0aW9uIHJlZ2V4IGluIEhhbmRsZWJhcnMuXG5cbmxldCBJRF9JTlZFUlNFX1BBVFRFUk4gPSAvWyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0vO1xuXG4vLyBDaGVja3MgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIHRvIHNlZSBpZiBpdCB1c2VzIGJsb2NrIHBhcmFtcy5cbi8vIElmIGl0IGRvZXMsIHJlZ2lzdGVycyB0aGUgYmxvY2sgcGFyYW1zIHdpdGggdGhlIHByb2dyYW0gYW5kXG4vLyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZWxlbWVudC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWxlbWVudEJsb2NrUGFyYW1zKGVsZW1lbnQpIHtcbiAgbGV0IHBhcmFtcyA9IHBhcnNlQmxvY2tQYXJhbXMoZWxlbWVudCk7XG4gIGlmIChwYXJhbXMpIGVsZW1lbnQuYmxvY2tQYXJhbXMgPSBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQmxvY2tQYXJhbXMoZWxlbWVudCkge1xuICBsZXQgbCA9IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7XG4gIGxldCBhdHRyTmFtZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGF0dHJOYW1lcy5wdXNoKGVsZW1lbnQuYXR0cmlidXRlc1tpXS5uYW1lKTtcbiAgfVxuXG4gIGxldCBhc0luZGV4ID0gaW5kZXhPZkFycmF5KGF0dHJOYW1lcywgJ2FzJyk7XG5cbiAgaWYgKGFzSW5kZXggIT09IC0xICYmIGwgPiBhc0luZGV4ICYmIGF0dHJOYW1lc1thc0luZGV4ICsgMV0uY2hhckF0KDApID09PSAnfCcpIHtcbiAgICAvLyBTb21lIGJhc2ljIHZhbGlkYXRpb24sIHNpbmNlIHdlJ3JlIGRvaW5nIHRoZSBwYXJzaW5nIG91cnNlbHZlc1xuICAgIGxldCBwYXJhbXNTdHJpbmcgPSBhdHRyTmFtZXMuc2xpY2UoYXNJbmRleCkuam9pbignICcpO1xuICAgIGlmIChwYXJhbXNTdHJpbmcuY2hhckF0KHBhcmFtc1N0cmluZy5sZW5ndGggLSAxKSAhPT0gJ3wnIHx8IHBhcmFtc1N0cmluZy5tYXRjaCgvXFx8L2cpLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJsb2NrIHBhcmFtZXRlcnMgc3ludGF4OiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgIH1cblxuICAgIGxldCBwYXJhbXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gYXNJbmRleCArIDE7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxldCBwYXJhbSA9IGF0dHJOYW1lc1tpXS5yZXBsYWNlKC9cXHwvZywgJycpO1xuICAgICAgaWYgKHBhcmFtICE9PSAnJykge1xuICAgICAgICBpZiAoSURfSU5WRVJTRV9QQVRURVJOLnRlc3QocGFyYW0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGlkZW50aWZpZXIgZm9yIGJsb2NrIHBhcmFtZXRlcnM6IFxcJycgKyBwYXJhbSArICdcXCcgaW4gXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSB6ZXJvIGJsb2NrIHBhcmFtZXRlcnM6IFxcJycgKyBwYXJhbXNTdHJpbmcgKyAnXFwnJyk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5hdHRyaWJ1dGVzID0gZWxlbWVudC5hdHRyaWJ1dGVzLnNsaWNlKDAsIGFzSW5kZXgpO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkcmVuRm9yKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ1Byb2dyYW0nKSB7XG4gICAgcmV0dXJuIG5vZGUuYm9keTtcbiAgfVxuICBpZiAobm9kZS50eXBlID09PSAnRWxlbWVudE5vZGUnKSB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENoaWxkKHBhcmVudCwgbm9kZSkge1xuICBjaGlsZHJlbkZvcihwYXJlbnQpLnB1c2gobm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hlbHBlcihtdXN0YWNoZSkge1xuICByZXR1cm4gKG11c3RhY2hlLnBhcmFtcyAmJiBtdXN0YWNoZS5wYXJhbXMubGVuZ3RoID4gMCkgfHxcbiAgICAobXVzdGFjaGUuaGFzaCAmJiBtdXN0YWNoZS5oYXNoLnBhaXJzLmxlbmd0aCA+IDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTXVzdGFjaGUobXVzdGFjaGUpIHtcbiAgaWYgKGlzSGVscGVyKG11c3RhY2hlKSkge1xuICAgIHJldHVybiBtdXN0YWNoZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbXVzdGFjaGUucGF0aDtcbiAgfVxufVxuIl19 enifed('glimmer-util/index', ['exports', 'glimmer-util/lib/object-utils', 'glimmer-util/lib/namespaces', 'glimmer-util/lib/platform-utils', 'glimmer-util/lib/assert', 'glimmer-util/lib/array-utils', 'glimmer-util/lib/void-tag-names', 'glimmer-util/lib/logger', 'glimmer-util/lib/guid', 'glimmer-util/lib/collections', 'glimmer-util/lib/list-utils'], function (exports, _glimmerUtilLibObjectUtils, _glimmerUtilLibNamespaces, _glimmerUtilLibPlatformUtils, _glimmerUtilLibAssert, _glimmerUtilLibArrayUtils, _glimmerUtilLibVoidTagNames, _glimmerUtilLibLogger, _glimmerUtilLibGuid, _glimmerUtilLibCollections, _glimmerUtilLibListUtils) { /*globals console*/ 'use strict'; exports.getAttrNamespace = _glimmerUtilLibNamespaces.getAttrNamespace; - exports.LITERAL = _glimmerUtilLibPlatformUtils.LITERAL; - exports.InternedString = _glimmerUtilLibPlatformUtils.InternedString; + exports.Option = _glimmerUtilLibPlatformUtils.Option; + exports.Maybe = _glimmerUtilLibPlatformUtils.Maybe; exports.Opaque = _glimmerUtilLibPlatformUtils.Opaque; exports.opaque = _glimmerUtilLibPlatformUtils.opaque; - exports.symbol = _glimmerUtilLibPlatformUtils.symbol; - exports.intern = _glimmerUtilLibPlatformUtils.intern; - exports.numberKey = _glimmerUtilLibPlatformUtils.numberKey; + exports.unwrap = _glimmerUtilLibPlatformUtils.unwrap; exports.assert = _glimmerUtilLibAssert.default; exports.forEach = _glimmerUtilLibArrayUtils.forEach; exports.map = _glimmerUtilLibArrayUtils.map; exports.isArray = _glimmerUtilLibArrayUtils.isArray; exports.indexOfArray = _glimmerUtilLibArrayUtils.indexOfArray; exports.voidMap = _glimmerUtilLibVoidTagNames.default; exports.LOGGER = _glimmerUtilLibLogger.default; exports.Logger = _glimmerUtilLibLogger.Logger; exports.LogLevel = _glimmerUtilLibLogger.LogLevel; + /* tslint:disable:no-unused-variable */ + /* tslint:enable:no-unused-variable */ exports.merge = _glimmerUtilLibObjectUtils.merge; exports.assign = _glimmerUtilLibObjectUtils.assign; exports.ensureGuid = _glimmerUtilLibGuid.ensureGuid; exports.initializeGuid = _glimmerUtilLibGuid.initializeGuid; @@ -24397,11 +24972,11 @@ exports.ListNode = _glimmerUtilLibListUtils.ListNode; exports.CloneableListNode = _glimmerUtilLibListUtils.CloneableListNode; exports.ListSlice = _glimmerUtilLibListUtils.ListSlice; exports.Slice = _glimmerUtilLibListUtils.Slice; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1VBTVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0I7VUFDaEIsT0FBTyxnQ0FBUCxPQUFPO1VBQUUsY0FBYyxnQ0FBZCxjQUFjO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsU0FBUyxnQ0FBVCxTQUFTO1VBQ3ZELE1BQU0seUJBQWpCLE9BQU87VUFDUCxPQUFPLDZCQUFQLE9BQU87VUFBRSxHQUFHLDZCQUFILEdBQUc7VUFBRSxPQUFPLDZCQUFQLE9BQU87VUFBRSxZQUFZLDZCQUFaLFlBQVk7VUFDeEIsT0FBTywrQkFBbEIsT0FBTztVQUNJLE1BQU0seUJBQWpCLE9BQU87VUFBWSxNQUFNLHlCQUFOLE1BQU07VUFBRSxRQUFRLHlCQUFSLFFBQVE7OztVQUtuQyxLQUFLLDhCQUFMLEtBQUs7VUFBRSxNQUFNLDhCQUFOLE1BQU07VUFDYixVQUFVLHVCQUFWLFVBQVU7VUFBRSxjQUFjLHVCQUFkLGNBQWM7VUFBRSxPQUFPLHVCQUFQLE9BQU87VUFFbkMsS0FBSztVQUNMLEtBQUssOEJBQUwsS0FBSztVQUFFLElBQUksOEJBQUosSUFBSTtVQUFFLGtCQUFrQiw4QkFBbEIsa0JBQWtCO1VBQUUsR0FBRyw4QkFBSCxHQUFHO1VBQUUsT0FBTyw4QkFBUCxPQUFPO1VBQUUsSUFBSSw4QkFBSixJQUFJO1VBQ25ELFdBQVcsNEJBQVgsV0FBVztVQUFFLFVBQVUsNEJBQVYsVUFBVTtVQUFFLGNBQWMsNEJBQWQsY0FBYztVQUFFLFFBQVEsNEJBQVIsUUFBUTtVQUFFLGlCQUFpQiw0QkFBakIsaUJBQWlCO1VBQUUsU0FBUyw0QkFBVCxTQUFTO1VBQUUsS0FBSyw0QkFBTCxLQUFLIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWxzIGNvbnNvbGUqL1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlIHtcbiAgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi9saWIvbmFtZXNwYWNlcyc7XG5leHBvcnQgeyBMSVRFUkFMLCBJbnRlcm5lZFN0cmluZywgT3BhcXVlLCBvcGFxdWUsIHN5bWJvbCwgaW50ZXJuLCBudW1iZXJLZXkgfSBmcm9tICcuL2xpYi9wbGF0Zm9ybS11dGlscyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzc2VydCB9IGZyb20gJy4vbGliL2Fzc2VydCc7XG5leHBvcnQgeyBmb3JFYWNoLCBtYXAsIGlzQXJyYXksIGluZGV4T2ZBcnJheSB9IGZyb20gJy4vbGliL2FycmF5LXV0aWxzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdm9pZE1hcCB9IGZyb20gJy4vbGliL3ZvaWQtdGFnLW5hbWVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTE9HR0VSLCBMb2dnZXIsIExvZ0xldmVsIH0gZnJvbSAnLi9saWIvbG9nZ2VyJztcblxuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlICovXG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2xpYi9vYmplY3QtdXRpbHMnO1xuLyogdHNsaW50OmVuYWJsZTpuby11bnVzZWQtdmFyaWFibGUgKi9cbmV4cG9ydCB7IG1lcmdlLCBhc3NpZ24gfSBmcm9tICcuL2xpYi9vYmplY3QtdXRpbHMnO1xuZXhwb3J0IHsgZW5zdXJlR3VpZCwgaW5pdGlhbGl6ZUd1aWQsIEhhc0d1aWQgfSBmcm9tICcuL2xpYi9ndWlkJztcblxuZXhwb3J0IHsgdHlwZXMgfTtcbmV4cG9ydCB7IFN0YWNrLCBEaWN0LCBEaWN0V2l0aE51bWJlcktleXMsIFNldCwgRGljdFNldCwgZGljdCB9IGZyb20gJy4vbGliL2NvbGxlY3Rpb25zJztcbmV4cG9ydCB7IEVNUFRZX1NMSUNFLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgTGlzdE5vZGUsIENsb25lYWJsZUxpc3ROb2RlLCBMaXN0U2xpY2UsIFNsaWNlIH0gZnJvbSAnLi9saWIvbGlzdC11dGlscyc7XG5cbmV4cG9ydCB0eXBlIEZJWE1FPFQ+ID0gYW55O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1VBTVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0I7VUFDaEIsTUFBTSxnQ0FBTixNQUFNO1VBQUUsS0FBSyxnQ0FBTCxLQUFLO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQUUsTUFBTSxnQ0FBTixNQUFNO1VBQzFCLE1BQU0seUJBQWpCLE9BQU87VUFDUCxPQUFPLDZCQUFQLE9BQU87VUFBRSxHQUFHLDZCQUFILEdBQUc7VUFBRSxPQUFPLDZCQUFQLE9BQU87VUFBRSxZQUFZLDZCQUFaLFlBQVk7VUFDeEIsT0FBTywrQkFBbEIsT0FBTztVQUNJLE1BQU0seUJBQWpCLE9BQU87VUFBWSxNQUFNLHlCQUFOLE1BQU07VUFBRSxRQUFRLHlCQUFSLFFBQVE7Ozs7O1VBS25DLEtBQUssOEJBQUwsS0FBSztVQUFFLE1BQU0sOEJBQU4sTUFBTTtVQUNiLFVBQVUsdUJBQVYsVUFBVTtVQUFFLGNBQWMsdUJBQWQsY0FBYztVQUFFLE9BQU8sdUJBQVAsT0FBTztVQUVuQyxLQUFLO1VBQ0wsS0FBSyw4QkFBTCxLQUFLO1VBQUUsSUFBSSw4QkFBSixJQUFJO1VBQUUsa0JBQWtCLDhCQUFsQixrQkFBa0I7VUFBRSxHQUFHLDhCQUFILEdBQUc7VUFBRSxPQUFPLDhCQUFQLE9BQU87VUFBRSxJQUFJLDhCQUFKLElBQUk7VUFDbkQsV0FBVyw0QkFBWCxXQUFXO1VBQUUsVUFBVSw0QkFBVixVQUFVO1VBQUUsY0FBYyw0QkFBZCxjQUFjO1VBQUUsUUFBUSw0QkFBUixRQUFRO1VBQUUsaUJBQWlCLDRCQUFqQixpQkFBaUI7VUFBRSxTQUFTLDRCQUFULFNBQVM7VUFBRSxLQUFLLDRCQUFMLEtBQUsiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKmdsb2JhbHMgY29uc29sZSovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJveWFibGUge1xuICBkZXN0cm95KCk7XG59XG5cbmV4cG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tICcuL2xpYi9uYW1lc3BhY2VzJztcbmV4cG9ydCB7IE9wdGlvbiwgTWF5YmUsIE9wYXF1ZSwgb3BhcXVlLCB1bndyYXAgfSBmcm9tICcuL2xpYi9wbGF0Zm9ybS11dGlscyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzc2VydCB9IGZyb20gJy4vbGliL2Fzc2VydCc7XG5leHBvcnQgeyBmb3JFYWNoLCBtYXAsIGlzQXJyYXksIGluZGV4T2ZBcnJheSB9IGZyb20gJy4vbGliL2FycmF5LXV0aWxzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdm9pZE1hcCB9IGZyb20gJy4vbGliL3ZvaWQtdGFnLW5hbWVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTE9HR0VSLCBMb2dnZXIsIExvZ0xldmVsIH0gZnJvbSAnLi9saWIvbG9nZ2VyJztcblxuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlICovXG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2xpYi9vYmplY3QtdXRpbHMnO1xuLyogdHNsaW50OmVuYWJsZTpuby11bnVzZWQtdmFyaWFibGUgKi9cbmV4cG9ydCB7IG1lcmdlLCBhc3NpZ24gfSBmcm9tICcuL2xpYi9vYmplY3QtdXRpbHMnO1xuZXhwb3J0IHsgZW5zdXJlR3VpZCwgaW5pdGlhbGl6ZUd1aWQsIEhhc0d1aWQgfSBmcm9tICcuL2xpYi9ndWlkJztcblxuZXhwb3J0IHsgdHlwZXMgfTtcbmV4cG9ydCB7IFN0YWNrLCBEaWN0LCBEaWN0V2l0aE51bWJlcktleXMsIFNldCwgRGljdFNldCwgZGljdCB9IGZyb20gJy4vbGliL2NvbGxlY3Rpb25zJztcbmV4cG9ydCB7IEVNUFRZX1NMSUNFLCBMaW5rZWRMaXN0LCBMaW5rZWRMaXN0Tm9kZSwgTGlzdE5vZGUsIENsb25lYWJsZUxpc3ROb2RlLCBMaXN0U2xpY2UsIFNsaWNlIH0gZnJvbSAnLi9saWIvbGlzdC11dGlscyc7XG5cbmV4cG9ydCB0eXBlIEZJWE1FPFQsIHN0cmluZz4gPSBUO1xuIl19 enifed('glimmer-util/lib/array-utils', ['exports'], function (exports) { 'use strict'; exports.forEach = forEach; exports.map = map; @@ -24457,14 +25032,15 @@ }; exports.isArray = isArray; var indexOfArray = getIdx; exports.indexOfArray = indexOfArray; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvYXJyYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsYUFBQSxPQUFBLENBQTJCLEtBQVUsRUFBRSxRQUE4QyxFQUF3QjtZQUF0QixPQUFPLHlEQUFNLFNBQVM7O0FBQzNHLFlBQUksQ0FBQyxZQUFBO1lBQUUsQ0FBQyxZQUFBLENBQUM7QUFDVCxZQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7QUFDekIsaUJBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3hDLHdCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM5QjtTQUNGLE1BQU07QUFDTCxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsd0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUM7U0FDRjtLQUNGOztBQUVELGFBQUEsR0FBQSxDQUFvQixLQUFLLEVBQUUsUUFBUSxFQUFBO0FBQ2pDLFlBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixZQUFJLENBQUMsWUFBQTtZQUFFLENBQUMsWUFBQSxDQUFDO0FBRVQsYUFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzQztBQUVELGVBQU8sTUFBTSxDQUFDO0tBQ2Y7O0FBRUQsUUFBSSxNQUFNLFlBQUEsQ0FBQztBQUNYLFFBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsY0FBTSxHQUFHLFVBQVMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUE7QUFDaEMsbUJBQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakMsQ0FBQztLQUNILE1BQU07QUFDTCxjQUFNLEdBQUcsVUFBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQTtBQUNoQyxnQkFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDdkMsb0JBQUksR0FBRyxDQUFDLENBQUM7YUFDVixNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtBQUNuQixvQkFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDekM7QUFDRCxpQkFBSyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5QyxvQkFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ3BCLDJCQUFPLENBQUMsQ0FBQztpQkFDVjthQUNGO0FBQ0QsbUJBQU8sQ0FBQyxDQUFDLENBQUM7U0FDWCxDQUFDO0tBQ0g7QUFFTSxRQUFJLE9BQU8sR0FBSSxLQUFLLENBQUMsT0FBTyxJQUFJLFVBQVMsS0FBSyxFQUFBO0FBQ25ELGVBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixDQUFDO0tBQ25FLEFBQUMsQ0FBQzs7QUFFSSxRQUFJLFlBQVksR0FBRyxNQUFNLENBQUMiLCJmaWxlIjoiYXJyYXktdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZm9yRWFjaDxUPihhcnJheTogVFtdLCBjYWxsYmFjazogKGU/OiBULCBpPzogbnVtYmVyLCBjPzogVFtdKSA9PiB2b2lkLCBiaW5kaW5nOiBhbnk9dW5kZWZpbmVkKSB7XG4gIGxldCBpLCBsO1xuICBpZiAoYmluZGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2FsbGJhY2soYXJyYXlbaV0sIGksIGFycmF5KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2FsbGJhY2suY2FsbChiaW5kaW5nLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwKGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgb3V0cHV0ID0gW107XG4gIGxldCBpLCBsO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvdXRwdXQucHVzaChjYWxsYmFjayhhcnJheVtpXSwgaSwgYXJyYXkpKTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmxldCBnZXRJZHg7XG5pZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgZ2V0SWR4ID0gZnVuY3Rpb24oYXJyYXksIG9iaiwgZnJvbSl7XG4gICAgcmV0dXJuIGFycmF5LmluZGV4T2Yob2JqLCBmcm9tKTtcbiAgfTtcbn0gZWxzZSB7XG4gIGdldElkeCA9IGZ1bmN0aW9uKGFycmF5LCBvYmosIGZyb20pIHtcbiAgICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkIHx8IGZyb20gPT09IG51bGwpIHtcbiAgICAgIGZyb20gPSAwO1xuICAgIH0gZWxzZSBpZiAoZnJvbSA8IDApIHtcbiAgICAgIGZyb20gPSBNYXRoLm1heCgwLCBhcnJheS5sZW5ndGggKyBmcm9tKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IGZyb20sIGw9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKGFycmF5W2ldID09PSBvYmopIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfTtcbn1cblxuZXhwb3J0IGxldCBpc0FycmF5ID0gKEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oYXJyYXkpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnJheSkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59KTtcblxuZXhwb3J0IGxldCBpbmRleE9mQXJyYXkgPSBnZXRJZHg7Il19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvYXJyYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU0sYUFBQSxPQUFBLENBQXFCLEtBQVUsRUFBRSxRQUE4QyxFQUF3QjtZQUF0QixPQUFPLHlEQUFNLFNBQVM7O0FBQzNHLFlBQUksQ0FBQyxZQUFBO1lBQUUsQ0FBQyxZQUFBLENBQUM7QUFDVCxZQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7QUFDekIsaUJBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3hDLHdCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM5QjtTQUNGLE1BQU07QUFDTCxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEMsd0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUM7U0FDRjtLQUNGOztBQUVLLGFBQUEsR0FBQSxDQUFjLEtBQUssRUFBRSxRQUFRLEVBQUE7QUFDakMsWUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFlBQUksQ0FBQyxZQUFBO1lBQUUsQ0FBQyxZQUFBLENBQUM7QUFFVCxhQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxrQkFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzNDO0FBRUQsZUFBTyxNQUFNLENBQUM7S0FDZjs7QUFFRCxRQUFJLE1BQU0sWUFBQSxDQUFDO0FBQ1gsUUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUMzQixjQUFNLEdBQUcsVUFBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQTtBQUNoQyxtQkFBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqQyxDQUFDO0tBQ0gsTUFBTTtBQUNMLGNBQU0sR0FBRyxVQUFTLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFBO0FBQ2hDLGdCQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtBQUN2QyxvQkFBSSxHQUFHLENBQUMsQ0FBQzthQUNWLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFO0FBQ25CLG9CQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQzthQUN6QztBQUNELGlCQUFLLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzlDLG9CQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDcEIsMkJBQU8sQ0FBQyxDQUFDO2lCQUNWO2FBQ0Y7QUFDRCxtQkFBTyxDQUFDLENBQUMsQ0FBQztTQUNYLENBQUM7S0FDSDtBQUVNLFFBQUksT0FBTyxHQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBUyxLQUFLLEVBQUE7QUFDbkQsZUFBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssZ0JBQWdCLENBQUM7S0FDbkUsQUFBQyxDQUFDOztBQUVJLFFBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyIsImZpbGUiOiJhcnJheS11dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoPFQ+KGFycmF5OiBUW10sIGNhbGxiYWNrOiAoZT86IFQsIGk/OiBudW1iZXIsIGM/OiBUW10pID0+IHZvaWQsIGJpbmRpbmc6IGFueT11bmRlZmluZWQpIHtcbiAgbGV0IGksIGw7XG4gIGlmIChiaW5kaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjYWxsYmFjayhhcnJheVtpXSwgaSwgYXJyYXkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKGJpbmRpbmcsIGFycmF5W2ldLCBpLCBhcnJheSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBvdXRwdXQgPSBbXTtcbiAgbGV0IGksIGw7XG5cbiAgZm9yIChpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG91dHB1dC5wdXNoKGNhbGxiYWNrKGFycmF5W2ldLCBpLCBhcnJheSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxubGV0IGdldElkeDtcbmlmIChBcnJheS5wcm90b3R5cGUuaW5kZXhPZikge1xuICBnZXRJZHggPSBmdW5jdGlvbihhcnJheSwgb2JqLCBmcm9tKXtcbiAgICByZXR1cm4gYXJyYXkuaW5kZXhPZihvYmosIGZyb20pO1xuICB9O1xufSBlbHNlIHtcbiAgZ2V0SWR4ID0gZnVuY3Rpb24oYXJyYXksIG9iaiwgZnJvbSkge1xuICAgIGlmIChmcm9tID09PSB1bmRlZmluZWQgfHwgZnJvbSA9PT0gbnVsbCkge1xuICAgICAgZnJvbSA9IDA7XG4gICAgfSBlbHNlIGlmIChmcm9tIDwgMCkge1xuICAgICAgZnJvbSA9IE1hdGgubWF4KDAsIGFycmF5Lmxlbmd0aCArIGZyb20pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gZnJvbSwgbD0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0gPT09IG9iaikge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9O1xufVxuXG5leHBvcnQgbGV0IGlzQXJyYXkgPSAoQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbihhcnJheSkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycmF5KSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn0pO1xuXG5leHBvcnQgbGV0IGluZGV4T2ZBcnJheSA9IGdldElkeDsiXX0= enifed("glimmer-util/lib/assert", ["exports"], function (exports) { // import Logger from './logger'; // let alreadyWarned = false; + // import Logger from './logger'; "use strict"; exports.debugAssert = debugAssert; exports.prodAssert = prodAssert; @@ -24480,18 +25056,16 @@ function prodAssert() {} exports.default = debugAssert; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvYXNzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsYUFBQSxXQUFBLENBQTRCLElBQUksRUFBRSxHQUFHLEVBQUE7Ozs7O0FBTW5DLFlBQUksQ0FBQyxJQUFJLEVBQUU7QUFDVCxrQkFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksbUJBQW1CLENBQUMsQ0FBQztTQUM3QztLQUNGOztBQUVELGFBQUEsVUFBQSxHQUFBLEVBQStCOztzQkFFaEIsV0FBVyIsImZpbGUiOiJhc3NlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgTG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuLy8gbGV0IGFscmVhZHlXYXJuZWQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnQXNzZXJ0KHRlc3QsIG1zZykge1xuICAvLyBpZiAoIWFscmVhZHlXYXJuZWQpIHtcbiAgLy8gICBhbHJlYWR5V2FybmVkID0gdHJ1ZTtcbiAgLy8gICBMb2dnZXIud2FybihcIkRvbid0IGxlYXZlIGRlYnVnIGFzc2VydGlvbnMgb24gaW4gcHVibGljIGJ1aWxkc1wiKTtcbiAgLy8gfVxuXG4gIGlmICghdGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgXCJhc3NlcnRpb24gZmFpbHVyZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZEFzc2VydCgpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGRlYnVnQXNzZXJ0O1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvYXNzZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlNLGFBQUEsV0FBQSxDQUFzQixJQUFJLEVBQUUsR0FBRyxFQUFBOzs7OztBQU1uQyxZQUFJLENBQUMsSUFBSSxFQUFFO0FBQ1Qsa0JBQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLG1CQUFtQixDQUFDLENBQUM7U0FDN0M7S0FDRjs7QUFFSyxhQUFBLFVBQUEsR0FBQSxFQUF5Qjs7c0JBRWhCLFdBQVciLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IExvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5cbi8vIGxldCBhbHJlYWR5V2FybmVkID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0Fzc2VydCh0ZXN0LCBtc2cpIHtcbiAgLy8gaWYgKCFhbHJlYWR5V2FybmVkKSB7XG4gIC8vICAgYWxyZWFkeVdhcm5lZCA9IHRydWU7XG4gIC8vICAgTG9nZ2VyLndhcm4oXCJEb24ndCBsZWF2ZSBkZWJ1ZyBhc3NlcnRpb25zIG9uIGluIHB1YmxpYyBidWlsZHNcIik7XG4gIC8vIH1cblxuICBpZiAoIXRlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8IFwiYXNzZXJ0aW9uIGZhaWx1cmVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2RBc3NlcnQoKSB7fVxuXG5leHBvcnQgZGVmYXVsdCBkZWJ1Z0Fzc2VydDtcbiJdfQ== enifed('glimmer-util/lib/collections', ['exports', 'glimmer-util/lib/guid'], function (exports, _glimmerUtilLibGuid) { 'use strict'; exports.dict = dict; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - var proto = Object.create(null, { // without this, we will always still end up with (new // EmptyObject()).constructor === Object constructor: { value: undefined, @@ -24510,12 +25084,10 @@ return new EmptyObject(); } var DictSet = (function () { function DictSet() { - _classCallCheck(this, DictSet); - this.dict = dict(); } DictSet.prototype.add = function add(obj) { if (typeof obj === 'string') this.dict[obj] = obj;else this.dict[_glimmerUtilLibGuid.ensureGuid(obj)] = obj; @@ -24543,12 +25115,10 @@ exports.DictSet = DictSet; var Stack = (function () { function Stack() { - _classCallCheck(this, Stack); - this.stack = []; this.current = null; } Stack.prototype.push = function push(item) { @@ -24570,11 +25140,11 @@ return Stack; })(); exports.Stack = Stack; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQWlCQSxRQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTs7O0FBRzlCLG1CQUFXLEVBQUU7QUFDWCxpQkFBSyxFQUFFLFNBQVM7QUFDaEIsc0JBQVUsRUFBRSxLQUFLO0FBQ2pCLG9CQUFRLEVBQUUsSUFBSTtTQUNmO0tBQ0YsQ0FBQyxDQUFDO0FBRUgsYUFBQSxXQUFBLEdBQUEsRUFBeUI7QUFDekIsZUFBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7O0FBRTlCLGFBQUEsSUFBQSxHQUFBOzs7OztBQUtFLGVBQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQztLQUMxQjs7UUFJRCxPQUFBO0FBR0UsaUJBSEYsT0FBQSxHQUdFO2tDQUhGLE9BQUE7O0FBSUksZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFLLENBQUM7U0FDdkI7O0FBTEgsZUFBQSxXQU9FLEdBQUcsR0FBQSxhQUFDLEdBQU0sRUFBQTtBQUNSLGdCQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQWpERCxVQUFVLENBaURPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzNDLG1CQUFPLElBQUksQ0FBQztTQUNiOztBQVhILGVBQUEsV0FhRSxNQUFNLEdBQUEsaUJBQUMsR0FBTSxFQUFBO0FBQ1gsZ0JBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLENBQUMsQ0FBQyxLQUNuRCxJQUFLLEdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFFLEdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRTs7QUFoQkgsZUFBQSxXQWtCRSxPQUFPLEdBQUEsaUJBQUMsUUFBcUIsRUFBQTtnQkFDckIsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUNWLGtCQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7dUJBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUFBLENBQUMsQ0FBQztTQUN2RDs7QUFyQkgsZUFBQSxXQXVCRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFCLENBQUM7U0FDbkQ7O2VBekJILE9BQUE7Ozs7O1FBNEJBLEtBQUE7QUFBQSxpQkFBQSxLQUFBLEdBQUE7a0NBQUEsS0FBQTs7QUFDVSxnQkFBQSxDQUFBLEtBQUssR0FBUSxFQUFFLENBQUM7QUFDakIsZ0JBQUEsQ0FBQSxPQUFPLEdBQU0sSUFBSSxDQUFDO1NBa0IxQjs7QUFwQkQsYUFBQSxXQUlFLElBQUksR0FBQSxjQUFDLElBQU8sRUFBQTtBQUNWLGdCQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQixnQkFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O0FBUEgsYUFBQSxXQVNFLEdBQUcsR0FBQSxlQUFBO0FBQ0QsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDNUIsZ0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXRELG1CQUFPLElBQUksQ0FBQztTQUNiOztBQWZILGFBQUEsV0FpQkUsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1NBQ2hDOztlQW5CSCxLQUFBIiwiZmlsZSI6ImNvbGxlY3Rpb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFzR3VpZCwgZW5zdXJlR3VpZCB9IGZyb20gJy4vZ3VpZCc7XG5pbXBvcnQgeyBJbnRlcm5lZFN0cmluZyB9IGZyb20gJy4vcGxhdGZvcm0tdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpY3Q8VD4ge1xuICBbaW5kZXg6IHN0cmluZ106IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGljdFdpdGhOdW1iZXJLZXlzPFQ+IHtcbiAgW2luZGV4OiBudW1iZXJdOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldDxUPiB7XG4gIGFkZCh2YWx1ZTogVCk6IFNldDxUPjtcbiAgZGVsZXRlKHZhbHVlOiBUKTtcbiAgZm9yRWFjaChjYWxsYmFjazogKFQpID0+IHZvaWQpO1xufVxuXG5sZXQgcHJvdG8gPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgLy8gd2l0aG91dCB0aGlzLCB3ZSB3aWxsIGFsd2F5cyBzdGlsbCBlbmQgdXAgd2l0aCAobmV3XG4gIC8vIEVtcHR5T2JqZWN0KCkpLmNvbnN0cnVjdG9yID09PSBPYmplY3RcbiAgY29uc3RydWN0b3I6IHtcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBFbXB0eU9iamVjdCgpIHt9XG5FbXB0eU9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpY3Q8VD4oKTogRGljdDxUPiB7XG4gIC8vIGxldCBkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZC54ID0gMTtcbiAgLy8gZGVsZXRlIGQueDtcbiAgLy8gcmV0dXJuIGQ7XG4gIHJldHVybiBuZXcgRW1wdHlPYmplY3QoKTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0TWVtYmVyID0gSGFzR3VpZCB8IEludGVybmVkU3RyaW5nIHwgc3RyaW5nO1xuXG5leHBvcnQgY2xhc3MgRGljdFNldDxUIGV4dGVuZHMgU2V0TWVtYmVyPiBpbXBsZW1lbnRzIFNldDxUPiB7XG4gIHByaXZhdGUgZGljdDogRGljdDxUPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpY3QgPSBkaWN0PFQ+KCk7XG4gIH1cblxuICBhZGQob2JqOiBUKTogU2V0PFQ+IHtcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHRoaXMuZGljdFs8YW55Pm9ial0gPSBvYmo7XG4gICAgZWxzZSB0aGlzLmRpY3RbZW5zdXJlR3VpZCg8YW55Pm9iaildID0gb2JqO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVsZXRlKG9iajogVCkge1xuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgZGVsZXRlIHRoaXMuZGljdFs8YW55Pm9ial07XG4gICAgZWxzZSBpZiAoKG9iaiBhcyBhbnkpLl9ndWlkKSBkZWxldGUgdGhpcy5kaWN0WyhvYmogYXMgYW55KS5fZ3VpZF07XG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrOiAoVCkgPT4gdm9pZCkge1xuICAgIGxldCB7IGRpY3QgfSA9IHRoaXM7XG4gICAgT2JqZWN0LmtleXMoZGljdCkuZm9yRWFjaChrZXkgPT4gY2FsbGJhY2soZGljdFtrZXldKSk7XG4gIH1cblxuICB0b0FycmF5KCk6IEludGVybmVkU3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRpY3QpIGFzIEludGVybmVkU3RyaW5nW107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrPFQ+IHtcbiAgcHJpdmF0ZSBzdGFjazogVFtdID0gW107XG4gIHB1YmxpYyBjdXJyZW50OiBUID0gbnVsbDtcblxuICBwdXNoKGl0ZW06IFQpIHtcbiAgICB0aGlzLmN1cnJlbnQgPSBpdGVtO1xuICAgIHRoaXMuc3RhY2sucHVzaChpdGVtKTtcbiAgfVxuXG4gIHBvcCgpOiBUIHtcbiAgICBsZXQgaXRlbSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgbGV0IGxlbiA9IHRoaXMuc3RhY2subGVuZ3RoO1xuICAgIHRoaXMuY3VycmVudCA9IGxlbiA9PT0gMCA/IG51bGwgOiB0aGlzLnN0YWNrW2xlbiAtIDFdO1xuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMDtcbiAgfVxufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFnQkEsUUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7OztBQUc5QixtQkFBVyxFQUFFO0FBQ1gsaUJBQUssRUFBRSxTQUFTO0FBQ2hCLHNCQUFVLEVBQUUsS0FBSztBQUNqQixvQkFBUSxFQUFFLElBQUk7U0FDZjtLQUNGLENBQUMsQ0FBQztBQUVILGFBQUEsV0FBQSxHQUFBLEVBQXlCO0FBQ3pCLGVBQVcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOztBQUV4QixhQUFBLElBQUEsR0FBQTs7Ozs7QUFLSixlQUFPLElBQUksV0FBVyxFQUFFLENBQUM7S0FDMUI7O1FBSUssT0FBQTtBQUdKLGlCQUhJLE9BQUEsR0FHSjtBQUNFLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBSyxDQUFDO1NBQ3ZCOztBQUxHLGVBQUEsV0FPSixHQUFHLEdBQUEsYUFBQyxHQUFNLEVBQUE7QUFDUixnQkFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFoREQsVUFBVSxDQWdETyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMzQyxtQkFBTyxJQUFJLENBQUM7U0FDYjs7QUFYRyxlQUFBLFdBYUosTUFBTSxHQUFBLGlCQUFDLEdBQU0sRUFBQTtBQUNYLGdCQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxDQUFDLENBQUMsS0FDbkQsSUFBSyxHQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBRSxHQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkU7O0FBaEJHLGVBQUEsV0FrQkosT0FBTyxHQUFBLGlCQUFDLFFBQXFCLEVBQUE7Z0JBQ3JCLElBQUksR0FBSyxJQUFJLENBQWIsSUFBSTs7QUFDVixrQkFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO3VCQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFBQSxDQUFDLENBQUM7U0FDdkQ7O0FBckJHLGVBQUEsV0F1QkosT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7O2VBekJHLE9BQUE7Ozs7O1FBNEJBLEtBQUE7QUFBTixpQkFBTSxLQUFBLEdBQU47QUFDVSxnQkFBQSxDQUFBLEtBQUssR0FBUSxFQUFFLENBQUM7QUFDakIsZ0JBQUEsQ0FBQSxPQUFPLEdBQU0sSUFBSSxDQUFDO1NBa0IxQjs7QUFwQkssYUFBQSxXQUlKLElBQUksR0FBQSxjQUFDLElBQU8sRUFBQTtBQUNWLGdCQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQixnQkFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O0FBUEcsYUFBQSxXQVNKLEdBQUcsR0FBQSxlQUFBO0FBQ0QsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDNUIsZ0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzVCLGdCQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXRELG1CQUFPLElBQUksQ0FBQztTQUNiOztBQWZHLGFBQUEsV0FpQkosT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1NBQ2hDOztlQW5CRyxLQUFBIiwiZmlsZSI6ImNvbGxlY3Rpb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFzR3VpZCwgZW5zdXJlR3VpZCB9IGZyb20gJy4vZ3VpZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGljdDxUPiB7XG4gIFtpbmRleDogc3RyaW5nXTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWN0V2l0aE51bWJlcktleXM8VD4ge1xuICBbaW5kZXg6IG51bWJlcl06IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0PFQ+IHtcbiAgYWRkKHZhbHVlOiBUKTogU2V0PFQ+O1xuICBkZWxldGUodmFsdWU6IFQpO1xuICBmb3JFYWNoKGNhbGxiYWNrOiAoVCkgPT4gdm9pZCk7XG59XG5cbmxldCBwcm90byA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAvLyB3aXRob3V0IHRoaXMsIHdlIHdpbGwgYWx3YXlzIHN0aWxsIGVuZCB1cCB3aXRoIChuZXdcbiAgLy8gRW1wdHlPYmplY3QoKSkuY29uc3RydWN0b3IgPT09IE9iamVjdFxuICBjb25zdHJ1Y3Rvcjoge1xuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIEVtcHR5T2JqZWN0KCkge31cbkVtcHR5T2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuXG5leHBvcnQgZnVuY3Rpb24gZGljdDxUPigpOiBEaWN0PFQ+IHtcbiAgLy8gbGV0IGQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBkLnggPSAxO1xuICAvLyBkZWxldGUgZC54O1xuICAvLyByZXR1cm4gZDtcbiAgcmV0dXJuIG5ldyBFbXB0eU9iamVjdCgpO1xufVxuXG5leHBvcnQgdHlwZSBTZXRNZW1iZXIgPSBIYXNHdWlkIHwgc3RyaW5nO1xuXG5leHBvcnQgY2xhc3MgRGljdFNldDxUIGV4dGVuZHMgU2V0TWVtYmVyPiBpbXBsZW1lbnRzIFNldDxUPiB7XG4gIHByaXZhdGUgZGljdDogRGljdDxUPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpY3QgPSBkaWN0PFQ+KCk7XG4gIH1cblxuICBhZGQob2JqOiBUKTogU2V0PFQ+IHtcbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHRoaXMuZGljdFs8YW55Pm9ial0gPSBvYmo7XG4gICAgZWxzZSB0aGlzLmRpY3RbZW5zdXJlR3VpZCg8YW55Pm9iaildID0gb2JqO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVsZXRlKG9iajogVCkge1xuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgZGVsZXRlIHRoaXMuZGljdFs8YW55Pm9ial07XG4gICAgZWxzZSBpZiAoKG9iaiBhcyBhbnkpLl9ndWlkKSBkZWxldGUgdGhpcy5kaWN0WyhvYmogYXMgYW55KS5fZ3VpZF07XG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrOiAoVCkgPT4gdm9pZCkge1xuICAgIGxldCB7IGRpY3QgfSA9IHRoaXM7XG4gICAgT2JqZWN0LmtleXMoZGljdCkuZm9yRWFjaChrZXkgPT4gY2FsbGJhY2soZGljdFtrZXldKSk7XG4gIH1cblxuICB0b0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5kaWN0KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RhY2s8VD4ge1xuICBwcml2YXRlIHN0YWNrOiBUW10gPSBbXTtcbiAgcHVibGljIGN1cnJlbnQ6IFQgPSBudWxsO1xuXG4gIHB1c2goaXRlbTogVCkge1xuICAgIHRoaXMuY3VycmVudCA9IGl0ZW07XG4gICAgdGhpcy5zdGFjay5wdXNoKGl0ZW0pO1xuICB9XG5cbiAgcG9wKCk6IFQge1xuICAgIGxldCBpdGVtID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICBsZXQgbGVuID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgdGhpcy5jdXJyZW50ID0gbGVuID09PSAwID8gbnVsbCA6IHRoaXMuc3RhY2tbbGVuIC0gMV07XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2subGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0= enifed("glimmer-util/lib/guid", ["exports"], function (exports) { "use strict"; exports.initializeGuid = initializeGuid; exports.ensureGuid = ensureGuid; @@ -24586,30 +25156,24 @@ function ensureGuid(object) { return object._guid || initializeGuid(object); } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvZ3VpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFFBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzs7QUFNYixhQUFBLGNBQUEsQ0FBK0IsTUFBZSxFQUFBO0FBQzVDLGVBQVEsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBRTtLQUNoQzs7QUFFRCxhQUFBLFVBQUEsQ0FBMkIsTUFBZSxFQUFBO0FBQ3hDLGVBQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0MiLCJmaWxlIjoiZ3VpZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBHVUlEID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBIYXNHdWlkIHtcbiAgX2d1aWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVHdWlkKG9iamVjdDogSGFzR3VpZCk6IG51bWJlciB7XG4gIHJldHVybiAob2JqZWN0Ll9ndWlkID0gKytHVUlEKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUd1aWQob2JqZWN0OiBIYXNHdWlkKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9iamVjdC5fZ3VpZCB8fCBpbml0aWFsaXplR3VpZChvYmplY3QpO1xufSJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvZ3VpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFFBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzs7QUFNUCxhQUFBLGNBQUEsQ0FBeUIsTUFBZSxFQUFBO0FBQzVDLGVBQVEsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBRTtLQUNoQzs7QUFFSyxhQUFBLFVBQUEsQ0FBcUIsTUFBZSxFQUFBO0FBQ3hDLGVBQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0MiLCJmaWxlIjoiZ3VpZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBHVUlEID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBIYXNHdWlkIHtcbiAgX2d1aWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVHdWlkKG9iamVjdDogSGFzR3VpZCk6IG51bWJlciB7XG4gIHJldHVybiAob2JqZWN0Ll9ndWlkID0gKytHVUlEKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUd1aWQob2JqZWN0OiBIYXNHdWlkKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9iamVjdC5fZ3VpZCB8fCBpbml0aWFsaXplR3VpZChvYmplY3QpO1xufSJdfQ== enifed("glimmer-util/lib/list-utils", ["exports"], function (exports) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var ListNode = function ListNode(value) { - _classCallCheck(this, ListNode); - this.next = null; this.prev = null; this.value = value; }; exports.ListNode = ListNode; var LinkedList = (function () { function LinkedList() { - _classCallCheck(this, LinkedList); - this.clear(); } LinkedList.fromSlice = function fromSlice(slice) { var list = new LinkedList(); @@ -24733,12 +25297,10 @@ exports.LinkedList = LinkedList; var LinkedListRemover = (function () { function LinkedListRemover(node) { - _classCallCheck(this, LinkedListRemover); - this.node = node; } LinkedListRemover.prototype.destroy = function destroy() { var _node = this.node; @@ -24752,12 +25314,10 @@ return LinkedListRemover; })(); var ListSlice = (function () { function ListSlice(head, tail) { - _classCallCheck(this, ListSlice); - this._head = head; this._tail = tail; } ListSlice.toList = function toList(slice) { @@ -24820,29 +25380,25 @@ exports.ListSlice = ListSlice; var EMPTY_SLICE = new ListSlice(null, null); exports.EMPTY_SLICE = EMPTY_SLICE; }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbGlzdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztRQVNBLFFBQUEsR0FLRSxTQUxGLFFBQUEsQ0FLYyxLQUFRLEVBQUE7OEJBTHRCLFFBQUE7O0FBQ1MsWUFBQSxDQUFBLElBQUksR0FBZ0IsSUFBSSxDQUFDO0FBQ3pCLFlBQUEsQ0FBQSxJQUFJLEdBQWdCLElBQUksQ0FBQztBQUk5QixZQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7OztRQU9ILFVBQUE7QUFVRSxpQkFWRixVQUFBLEdBVUU7a0NBVkYsVUFBQTs7QUFXSSxnQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7O0FBWkgsa0JBQUEsQ0FDUyxTQUFTLEdBQUEsbUJBQThCLEtBQWUsRUFBQTtBQUMzRCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUssQ0FBQztBQUMvQixpQkFBSyxDQUFDLFdBQVcsQ0FBQyxVQUFBLENBQUM7dUJBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFBQSxDQUFDLENBQUM7QUFDL0MsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBTEgsa0JBQUEsV0FjRSxJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQWhCSCxrQkFBQSxXQWtCRSxJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQXBCSCxrQkFBQSxXQXNCRSxLQUFLLEdBQUEsaUJBQUE7QUFDSCxnQkFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQzs7QUF4Qkgsa0JBQUEsV0EwQkUsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7U0FDNUI7O0FBNUJILGtCQUFBLFdBOEJFLE9BQU8sR0FB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MkRFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLEtBQUssQ0FBQztTQUNkOztlQTdESCxTQUFBOzs7O0FBZ0VPLFFBQU0sV0FBVyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyIsImZpbGUiOiJsaXN0LXV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXN0cm95YWJsZSB7XG4gIGRlc3Ryb3koKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rZWRMaXN0Tm9kZSB7XG4gIG5leHQ6IExpbmtlZExpc3ROb2RlO1xuICBwcmV2OiBMaW5rZWRMaXN0Tm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3ROb2RlPFQ+IGltcGxlbWVudHMgTGlua2VkTGlzdE5vZGUge1xuICBwdWJsaWMgbmV4dDogTGlzdE5vZGU8VD4gPSBudWxsO1xuICBwdWJsaWMgcHJldjogTGlzdE5vZGU8VD4gPSBudWxsO1xuICBwdWJsaWMgdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gd2UgYXJlIHVuYWJsZSB0byBleHByZXNzIHRoZSBjb25zdHJhaW50IHRoYXQgVCdzIC5wcmV2IGFuZCAubmV4dCBhcmVcbi8vIHRoZW1zZWx2ZXMgVC4gSG93ZXZlciwgaXQgd2lsbCBhbHdheXMgYmUgdHJ1ZSwgc28gdHJ1c3QgdXMuXG50eXBlIHRydXN0ID0gYW55O1xuXG5leHBvcnQgY2xhc3MgTGlua2VkTGlzdDxUIGV4dGVuZHMgTGlua2VkTGlzdE5vZGU+IGltcGxlbWVudHMgU2xpY2U8VD4ge1xuICBzdGF0aWMgZnJvbVNsaWNlPFUgZXh0ZW5kcyBDbG9uZWFibGVMaXN0Tm9kZT4oc2xpY2U6IFNsaWNlPFU+KTogTGlua2VkTGlzdDxVPiB7XG4gICAgbGV0IGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVPigpO1xuICAgIHNsaWNlLmZvckVhY2hOb2RlKG4gPT4gbGlzdC5hcHBlbmQobi5jbG9uZSgpKSk7XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICBwcml2YXRlIF9oZWFkOiBUO1xuICBwcml2YXRlIF90YWlsOiBUO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfVxuXG4gIGhlYWQoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWQ7XG4gIH1cblxuICB0YWlsKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl90YWlsO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5faGVhZCA9IHRoaXMuX3RhaWwgPSBudWxsO1xuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZCA9PT0gbnVsbDtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICBsZXQgb3V0ID0gW107XG4gICAgdGhpcy5mb3JFYWNoTm9kZShuID0+IG91dC5wdXNoKG4pKTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgc3BsaWNlKHN0YXJ0OiBULCBlbmQ6IFQsIHJlZmVyZW5jZTogVCkge1xuICAgIGxldCBiZWZvcmU6IFQ7XG5cbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICBiZWZvcmUgPSB0aGlzLl90YWlsO1xuICAgICAgdGhpcy5fdGFpbCA9IGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVmb3JlID0gPFQ+cmVmZXJlbmNlLnByZXY7XG4gICAgICBlbmQubmV4dCA9IHJlZmVyZW5jZTtcbiAgICAgIHJlZmVyZW5jZS5wcmV2ID0gZW5kO1xuICAgIH1cblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIGJlZm9yZS5uZXh0ID0gc3RhcnQ7XG4gICAgICBzdGFydC5wcmV2ID0gYmVmb3JlO1xuICAgIH1cbiAgfVxuXG4gIHNwbGljZUxpc3QobGlzdDogTGlua2VkTGlzdDxUPiwgcmVmZXJlbmNlOiBUKSB7XG4gICAgaWYgKGxpc3QuaXNFbXB0eSgpKSByZXR1cm47XG4gICAgdGhpcy5zcGxpY2UobGlzdC5oZWFkKCksIGxpc3QudGFpbCgpLCByZWZlcmVuY2UpO1xuICB9XG5cbiAgbmV4dE5vZGUobm9kZTogVCk6IFQge1xuICAgIHJldHVybiA8dHJ1c3Q+bm9kZS5uZXh0O1xuICB9XG5cbiAgcHJldk5vZGUobm9kZTogVCk6IFQge1xuICAgIHJldHVybiA8dHJ1c3Q+bm9kZS5wcmV2O1xuICB9XG5cbiAgZm9yRWFjaE5vZGUoY2FsbGJhY2s6IChub2RlOiBUKSA9PiB2b2lkKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLl9oZWFkO1xuXG4gICAgd2hpbGUgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNhbGxiYWNrKDx0cnVzdD5ub2RlKTtcbiAgICAgIG5vZGUgPSA8dHJ1c3Q+bm9kZS5uZXh0O1xuICAgIH1cbiAgfVxuXG4gIGNvbnRhaW5zKG5lZWRsZTogVCk6IGJvb2xlYW4ge1xuICAgIGxldCBub2RlID0gdGhpcy5faGVhZDtcblxuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICBpZiAobm9kZSA9PT0gbmVlZGxlKSByZXR1cm4gdHJ1ZTtcbiAgICAgIG5vZGUgPSA8dHJ1c3Q+bm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGluc2VydEJlZm9yZShub2RlOiBULCByZWZlcmVuY2U6IFQgPSBudWxsKTogVCB7XG4gICAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkgcmV0dXJuIHRoaXMuYXBwZW5kKG5vZGUpO1xuXG4gICAgaWYgKHJlZmVyZW5jZS5wcmV2KSByZWZlcmVuY2UucHJldi5uZXh0ID0gbm9kZTtcbiAgICBlbHNlIHRoaXMuX2hlYWQgPSBub2RlO1xuXG4gICAgbm9kZS5wcmV2ID0gcmVmZXJlbmNlLnByZXY7XG4gICAgbm9kZS5uZXh0ID0gcmVmZXJlbmNlO1xuICAgIHJlZmVyZW5jZS5wcmV2ID0gbm9kZTtcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYXBwZW5kKG5vZGU6IFQpOiBUIHtcbiAgICBsZXQgdGFpbCA9IHRoaXMuX3RhaWw7XG5cbiAgICBpZiAodGFpbCkge1xuICAgICAgdGFpbC5uZXh0ID0gbm9kZTtcbiAgICAgIG5vZGUucHJldiA9IHRhaWw7XG4gICAgICBub2RlLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9oZWFkID0gbm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuX3RhaWwgPSBub2RlKTtcbiAgfVxuXG4gIHBvcCgpOiBUIHtcbiAgICBpZiAodGhpcy5fdGFpbCkgcmV0dXJuIHRoaXMucmVtb3ZlKHRoaXMuX3RhaWwpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJlcGVuZChub2RlOiBUKTogVCB7XG4gICAgaWYgKHRoaXMuX2hlYWQpIHJldHVybiB0aGlzLmluc2VydEJlZm9yZShub2RlLCB0aGlzLl9oZWFkKTtcbiAgICByZXR1cm4gKHRoaXMuX2hlYWQgPSB0aGlzLl90YWlsID0gbm9kZSk7XG4gIH1cblxuICByZW1vdmUobm9kZTogVCk6IFQge1xuICAgIGlmIChub2RlLnByZXYpIG5vZGUucHJldi5uZXh0ID0gbm9kZS5uZXh0O1xuICAgIGVsc2UgdGhpcy5faGVhZCA9IDx0cnVzdD5ub2RlLm5leHQ7XG5cbiAgICBpZiAobm9kZS5uZXh0KSBub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtcbiAgICBlbHNlIHRoaXMuX3RhaWwgPSA8dHJ1c3Q+bm9kZS5wcmV2O1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn1cblxuY2xhc3MgTGlua2VkTGlzdFJlbW92ZXIgaW1wbGVtZW50cyBEZXN0cm95YWJsZSB7XG4gIHByaXZhdGUgbm9kZTogTGlua2VkTGlzdE5vZGU7XG5cbiAgY29uc3RydWN0b3Iobm9kZTogTGlua2VkTGlzdE5vZGUpIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsZXQgeyBwcmV2LCBuZXh0IH0gPSB0aGlzLm5vZGU7XG4gICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICBuZXh0LnByZXYgPSBwcmV2O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpY2U8VCBleHRlbmRzIExpbmtlZExpc3ROb2RlPiB7XG4gIGhlYWQoKTogVDtcbiAgdGFpbCgpOiBUO1xuICBuZXh0Tm9kZShub2RlOiBUKTogVDtcbiAgcHJldk5vZGUobm9kZTogVCk6IFQ7XG4gIGZvckVhY2hOb2RlKGNhbGxiYWNrOiAobm9kZTogVCkgPT4gdm9pZCk7XG4gIHRvQXJyYXkoKTogVFtdO1xuICBpc0VtcHR5KCk6IGJvb2xlYW47XG4gIGNvbnRhaW5zKG5lZWRsZTogVCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvbmVhYmxlTGlzdE5vZGUgZXh0ZW5kcyBMaW5rZWRMaXN0Tm9kZSB7XG4gIGNsb25lKCk6IHRoaXM7XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0U2xpY2U8VCBleHRlbmRzIExpbmtlZExpc3ROb2RlPiBpbXBsZW1lbnRzIFNsaWNlPFQ+IHtcbiAgc3RhdGljIHRvTGlzdDxVIGV4dGVuZHMgQ2xvbmVhYmxlTGlzdE5vZGU+KHNsaWNlOiBTbGljZTxVPik6IExpbmtlZExpc3Q8VT4ge1xuICAgIGxldCBsaXN0ID0gbmV3IExpbmtlZExpc3Q8VT4oKTtcbiAgICBzbGljZS5mb3JFYWNoTm9kZShuID0+IGxpc3QuYXBwZW5kKG4uY2xvbmUoKSkpO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGVhZDogVDtcbiAgcHJpdmF0ZSBfdGFpbDogVDtcblxuICBjb25zdHJ1Y3RvcihoZWFkOiBULCB0YWlsOiBUKSB7XG4gICAgdGhpcy5faGVhZCA9IGhlYWQ7XG4gICAgdGhpcy5fdGFpbCA9IHRhaWw7XG4gIH1cblxuICBmb3JFYWNoTm9kZShjYWxsYmFjazogKG5vZGU6IFQpID0+IHZvaWQpIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX2hlYWQ7XG5cbiAgICB3aGlsZSAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgY2FsbGJhY2sobm9kZSk7XG4gICAgICBub2RlID0gdGhpcy5uZXh0Tm9kZShub2RlKTtcbiAgICB9XG4gIH1cblxuICBjb250YWlucyhuZWVkbGU6IFQpOiBib29sZWFuIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX2hlYWQ7XG5cbiAgICB3aGlsZSAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKG5vZGUgPT09IG5lZWRsZSkgcmV0dXJuIHRydWU7XG4gICAgICBub2RlID0gPHRydXN0Pm5vZGUubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoZWFkKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9oZWFkO1xuICB9XG5cbiAgdGFpbCgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdGFpbDtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICBsZXQgb3V0ID0gW107XG4gICAgdGhpcy5mb3JFYWNoTm9kZShuID0+IG91dC5wdXNoKG4pKTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgbmV4dE5vZGUobm9kZTogVCk6IFQge1xuICAgIGlmIChub2RlID09PSB0aGlzLl90YWlsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gPFQ+bm9kZS5uZXh0O1xuICB9XG5cbiAgcHJldk5vZGUobm9kZTogVCk6IFQge1xuICAgIGlmIChub2RlID09PSB0aGlzLl9oZWFkKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gPFQ+bm9kZS5wcmV2O1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVNUFRZX1NMSUNFID0gbmV3IExpc3RTbGljZShudWxsLCBudWxsKTsiXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbGlzdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFTTSxRQUFBLEdBS0osU0FMSSxRQUFBLENBS1EsS0FBUSxFQUFBO0FBSmIsWUFBQSxDQUFBLElBQUksR0FBZ0IsSUFBSSxDQUFDO0FBQ3pCLFlBQUEsQ0FBQSxJQUFJLEdBQWdCLElBQUksQ0FBQztBQUk5QixZQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7OztRQU9HLFVBQUE7QUFVSixpQkFWSSxVQUFBLEdBVUo7QUFDRSxnQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7O0FBWkcsa0JBQUEsQ0FDRyxTQUFTLEdBQUEsbUJBQThCLEtBQWUsRUFBQTtBQUMzRCxnQkFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUssQ0FBQztBQUMvQixpQkFBSyxDQUFDLFdBQVcsQ0FBQyxVQUFBLENBQUM7dUJBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7YUFBQSxDQUFDLENBQUM7QUFDL0MsbUJBQU8sSUFBSSxDQUFDO1NBQ2I7O0FBTEcsa0JBQUEsV0FjSixJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQWhCRyxrQkFBQSxXQWtCSixJQUFJLEdBQUEsZ0JBQUE7QUFDRixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25COztBQXBCRyxrQkFBQSxXQXNCSixLQUFLLEdBQUEsaUJBQUE7QUFDSCxnQkFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQzs7QUF4Qkcsa0JBQUEsV0EwQkosT0FBTyxHQUFBLG1CQUFBO0FBQ0wsbUJBQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUM7U0FDNUI7O0FBNUJHLGtCQUFBLFdBOEJKLE9BQU8sR0FBQSxtQkFBQTtBQUNMLGdCQUFJLEdBQUcsR0FB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LFNBQUE7Ozs7QUFnRUMsUUFBTSxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDIiwiZmlsZSI6Imxpc3QtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lhYmxlIHtcbiAgZGVzdHJveSgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZExpc3ROb2RlIHtcbiAgbmV4dDogTGlua2VkTGlzdE5vZGU7XG4gIHByZXY6IExpbmtlZExpc3ROb2RlO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdE5vZGU8VD4gaW1wbGVtZW50cyBMaW5rZWRMaXN0Tm9kZSB7XG4gIHB1YmxpYyBuZXh0OiBMaXN0Tm9kZTxUPiA9IG51bGw7XG4gIHB1YmxpYyBwcmV2OiBMaXN0Tm9kZTxUPiA9IG51bGw7XG4gIHB1YmxpYyB2YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyB3ZSBhcmUgdW5hYmxlIHRvIGV4cHJlc3MgdGhlIGNvbnN0cmFpbnQgdGhhdCBUJ3MgLnByZXYgYW5kIC5uZXh0IGFyZVxuLy8gdGhlbXNlbHZlcyBULiBIb3dldmVyLCBpdCB3aWxsIGFsd2F5cyBiZSB0cnVlLCBzbyB0cnVzdCB1cy5cbnR5cGUgdHJ1c3QgPSBhbnk7XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgZXh0ZW5kcyBMaW5rZWRMaXN0Tm9kZT4gaW1wbGVtZW50cyBTbGljZTxUPiB7XG4gIHN0YXRpYyBmcm9tU2xpY2U8VSBleHRlbmRzIENsb25lYWJsZUxpc3ROb2RlPihzbGljZTogU2xpY2U8VT4pOiBMaW5rZWRMaXN0PFU+IHtcbiAgICBsZXQgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFU+KCk7XG4gICAgc2xpY2UuZm9yRWFjaE5vZGUobiA9PiBsaXN0LmFwcGVuZChuLmNsb25lKCkpKTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHByaXZhdGUgX2hlYWQ6IFQ7XG4gIHByaXZhdGUgX3RhaWw6IFQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgaGVhZCgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5faGVhZDtcbiAgfVxuXG4gIHRhaWwoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3RhaWw7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLl9oZWFkID0gdGhpcy5fdGFpbCA9IG51bGw7XG4gIH1cblxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oZWFkID09PSBudWxsO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGxldCBvdXQgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hOb2RlKG4gPT4gb3V0LnB1c2gobikpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBzcGxpY2Uoc3RhcnQ6IFQsIGVuZDogVCwgcmVmZXJlbmNlOiBUKSB7XG4gICAgbGV0IGJlZm9yZTogVDtcblxuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIGJlZm9yZSA9IHRoaXMuX3RhaWw7XG4gICAgICB0aGlzLl90YWlsID0gZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWZvcmUgPSA8VD5yZWZlcmVuY2UucHJldjtcbiAgICAgIGVuZC5uZXh0ID0gcmVmZXJlbmNlO1xuICAgICAgcmVmZXJlbmNlLnByZXYgPSBlbmQ7XG4gICAgfVxuXG4gICAgaWYgKGJlZm9yZSkge1xuICAgICAgYmVmb3JlLm5leHQgPSBzdGFydDtcbiAgICAgIHN0YXJ0LnByZXYgPSBiZWZvcmU7XG4gICAgfVxuICB9XG5cbiAgc3BsaWNlTGlzdChsaXN0OiBMaW5rZWRMaXN0PFQ+LCByZWZlcmVuY2U6IFQpIHtcbiAgICBpZiAobGlzdC5pc0VtcHR5KCkpIHJldHVybjtcbiAgICB0aGlzLnNwbGljZShsaXN0LmhlYWQoKSwgbGlzdC50YWlsKCksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBuZXh0Tm9kZShub2RlOiBUKTogVCB7XG4gICAgcmV0dXJuIDx0cnVzdD5ub2RlLm5leHQ7XG4gIH1cblxuICBwcmV2Tm9kZShub2RlOiBUKTogVCB7XG4gICAgcmV0dXJuIDx0cnVzdD5ub2RlLnByZXY7XG4gIH1cblxuICBmb3JFYWNoTm9kZShjYWxsYmFjazogKG5vZGU6IFQpID0+IHZvaWQpIHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuX2hlYWQ7XG5cbiAgICB3aGlsZSAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgY2FsbGJhY2soPHRydXN0Pm5vZGUpO1xuICAgICAgbm9kZSA9IDx0cnVzdD5ub2RlLm5leHQ7XG4gICAgfVxuICB9XG5cbiAgY29udGFpbnMobmVlZGxlOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLl9oZWFkO1xuXG4gICAgd2hpbGUgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIGlmIChub2RlID09PSBuZWVkbGUpIHJldHVybiB0cnVlO1xuICAgICAgbm9kZSA9IDx0cnVzdD5ub2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaW5zZXJ0QmVmb3JlKG5vZGU6IFQsIHJlZmVyZW5jZTogVCA9IG51bGwpOiBUIHtcbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSByZXR1cm4gdGhpcy5hcHBlbmQobm9kZSk7XG5cbiAgICBpZiAocmVmZXJlbmNlLnByZXYpIHJlZmVyZW5jZS5wcmV2Lm5leHQgPSBub2RlO1xuICAgIGVsc2UgdGhpcy5faGVhZCA9IG5vZGU7XG5cbiAgICBub2RlLnByZXYgPSByZWZlcmVuY2UucHJldjtcbiAgICBub2RlLm5leHQgPSByZWZlcmVuY2U7XG4gICAgcmVmZXJlbmNlLnByZXYgPSBub2RlO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhcHBlbmQobm9kZTogVCk6IFQge1xuICAgIGxldCB0YWlsID0gdGhpcy5fdGFpbDtcblxuICAgIGlmICh0YWlsKSB7XG4gICAgICB0YWlsLm5leHQgPSBub2RlO1xuICAgICAgbm9kZS5wcmV2ID0gdGFpbDtcbiAgICAgIG5vZGUubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2hlYWQgPSBub2RlO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5fdGFpbCA9IG5vZGUpO1xuICB9XG5cbiAgcG9wKCk6IFQge1xuICAgIGlmICh0aGlzLl90YWlsKSByZXR1cm4gdGhpcy5yZW1vdmUodGhpcy5fdGFpbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcmVwZW5kKG5vZGU6IFQpOiBUIHtcbiAgICBpZiAodGhpcy5faGVhZCkgcmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG5vZGUsIHRoaXMuX2hlYWQpO1xuICAgIHJldHVybiAodGhpcy5faGVhZCA9IHRoaXMuX3RhaWwgPSBub2RlKTtcbiAgfVxuXG4gIHJlbW92ZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUucHJldikgbm9kZS5wcmV2Lm5leHQgPSBub2RlLm5leHQ7XG4gICAgZWxzZSB0aGlzLl9oZWFkID0gPHRydXN0Pm5vZGUubmV4dDtcblxuICAgIGlmIChub2RlLm5leHQpIG5vZGUubmV4dC5wcmV2ID0gbm9kZS5wcmV2O1xuICAgIGVsc2UgdGhpcy5fdGFpbCA9IDx0cnVzdD5ub2RlLnByZXY7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG5jbGFzcyBMaW5rZWRMaXN0UmVtb3ZlciBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlIHtcbiAgcHJpdmF0ZSBub2RlOiBMaW5rZWRMaXN0Tm9kZTtcblxuICBjb25zdHJ1Y3Rvcihub2RlOiBMaW5rZWRMaXN0Tm9kZSkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGxldCB7IHByZXYsIG5leHQgfSA9IHRoaXMubm9kZTtcbiAgICBwcmV2Lm5leHQgPSBuZXh0O1xuICAgIG5leHQucHJldiA9IHByZXY7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbGljZTxUIGV4dGVuZHMgTGlua2VkTGlzdE5vZGU+IHtcbiAgaGVhZCgpOiBUO1xuICB0YWlsKCk6IFQ7XG4gIG5leHROb2RlKG5vZGU6IFQpOiBUO1xuICBwcmV2Tm9kZShub2RlOiBUKTogVDtcbiAgZm9yRWFjaE5vZGUoY2FsbGJhY2s6IChub2RlOiBUKSA9PiB2b2lkKTtcbiAgdG9BcnJheSgpOiBUW107XG4gIGlzRW1wdHkoKTogYm9vbGVhbjtcbiAgY29udGFpbnMobmVlZGxlOiBUKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbG9uZWFibGVMaXN0Tm9kZSBleHRlbmRzIExpbmtlZExpc3ROb2RlIHtcbiAgY2xvbmUoKTogdGhpcztcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RTbGljZTxUIGV4dGVuZHMgTGlua2VkTGlzdE5vZGU+IGltcGxlbWVudHMgU2xpY2U8VD4ge1xuICBzdGF0aWMgdG9MaXN0PFUgZXh0ZW5kcyBDbG9uZWFibGVMaXN0Tm9kZT4oc2xpY2U6IFNsaWNlPFU+KTogTGlua2VkTGlzdDxVPiB7XG4gICAgbGV0IGxpc3QgPSBuZXcgTGlua2VkTGlzdDxVPigpO1xuICAgIHNsaWNlLmZvckVhY2hOb2RlKG4gPT4gbGlzdC5hcHBlbmQobi5jbG9uZSgpKSk7XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICBwcml2YXRlIF9oZWFkOiBUO1xuICBwcml2YXRlIF90YWlsOiBUO1xuXG4gIGNvbnN0cnVjdG9yKGhlYWQ6IFQsIHRhaWw6IFQpIHtcbiAgICB0aGlzLl9oZWFkID0gaGVhZDtcbiAgICB0aGlzLl90YWlsID0gdGFpbDtcbiAgfVxuXG4gIGZvckVhY2hOb2RlKGNhbGxiYWNrOiAobm9kZTogVCkgPT4gdm9pZCkge1xuICAgIGxldCBub2RlID0gdGhpcy5faGVhZDtcblxuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgIG5vZGUgPSB0aGlzLm5leHROb2RlKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRhaW5zKG5lZWRsZTogVCk6IGJvb2xlYW4ge1xuICAgIGxldCBub2RlID0gdGhpcy5faGVhZDtcblxuICAgIHdoaWxlIChub2RlICE9PSBudWxsKSB7XG4gICAgICBpZiAobm9kZSA9PT0gbmVlZGxlKSByZXR1cm4gdHJ1ZTtcbiAgICAgIG5vZGUgPSA8dHJ1c3Q+bm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhlYWQoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWQ7XG4gIH1cblxuICB0YWlsKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl90YWlsO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGxldCBvdXQgPSBbXTtcbiAgICB0aGlzLmZvckVhY2hOb2RlKG4gPT4gb3V0LnB1c2gobikpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBuZXh0Tm9kZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMuX3RhaWwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8VD5ub2RlLm5leHQ7XG4gIH1cblxuICBwcmV2Tm9kZShub2RlOiBUKTogVCB7XG4gICAgaWYgKG5vZGUgPT09IHRoaXMuX2hlYWQpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8VD5ub2RlLnByZXY7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRU1QVFlfU0xJQ0UgPSBuZXcgTGlzdFNsaWNlKG51bGwsIG51bGwpOyJdfQ== enifed("glimmer-util/lib/logger", ["exports"], function (exports) { "use strict"; - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - 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() { - _classCallCheck(this, NullConsole); - } + function NullConsole() {} NullConsole.prototype.log = function log(message) {}; NullConsole.prototype.warn = function warn(message) {}; @@ -24856,12 +25412,10 @@ var Logger = (function () { function Logger(_ref) { var console = _ref.console; var level = _ref.level; - _classCallCheck(this, Logger); - this.f = ALWAYS; this.force = ALWAYS; this.console = console; this.level = level; } @@ -24916,11 +25470,11 @@ 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsUUFBWSxRQUtYLENBQUE7O0FBTEQsS0FBQSxVQUFZLFFBQVEsRUFBQTtBQUNsQixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxPQUFLLENBQUE7QUFDTCxnQkFBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxPQUFLLENBQUE7QUFDTCxnQkFBQSxDQUFBLFFBQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxNQUFJLENBQUE7QUFDSixnQkFBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxPQUFLLENBQUE7S0FDTixDQUFBLENBTFcsUUFBUSxhQUFSLFFBS1gsR0FMVyxRQUFRLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FLbkI7O1FBU0QsV0FBQTtpQkFBQSxXQUFBO2tDQUFBLFdBQUE7OztBQUFBLG1CQUFBLFdBQ0UsR0FBRyxHQUFBLGFBQUMsT0FBZSxFQUFBLEVBQUk7O0FBRHpCLG1CQUFBLFdBRUUsSUFBSSxHQUFBLGNBQUMsT0FBZSxFQUFBLEVBQUk7O0FBRjFCLG1CQUFBLFdBR0UsS0FBSyxHQUFBLGVBQUMsT0FBZSxFQUFBLEVBQUk7O0FBSDNCLG1CQUFBLFdBSUUsS0FBSyxHQUFBLGlCQUFBLEVBQUs7O2VBSlosV0FBQTs7O1FBT0EsTUFBQTtBQU1FLGlCQU5GLE1BQUEsQ0FNYyxJQUF5RCxFQUFBO2dCQUF2RCxPQUFPLEdBQVQsSUFBeUQsQ0FBdkQsT0FBTztnQkFBRSxLQUFLLEdBQWhCLElBQXlELENBQTlDLEtBQUs7O2tDQU45QixNQUFBOztBQUdTLGdCQUFBLENBQUEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUNYLGdCQUFBLENBQUEsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUdwQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDdkIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCOztBQVRILGNBQUEsV0FXVSxPQUFPLEdBQUEsaUJBQUMsS0FBZSxFQUFBO0FBQzdCLG1CQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzNCOztBQWJILGNBQUEsV0FlRSxLQUFLLEdBQUEsZUFBQyxPQUFhLEVBQTZCOzhFQUFGLEVBQUU7O3lDQUF6QixVQUFVO2dCQUFWLFVBQVUsb0NBQUcsS0FBSzs7QUFDdkMsZ0JBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztBQUN6QyxnQkFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUIsZ0JBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEM7O0FBbkJILGNBQUEsV0FxQkUsS0FBSyxHQUFBLGVBQUMsT0FBWSxFQUE2Qjs4RUFBRixFQUFFOzt5Q0FBekIsVUFBVTtnQkFBVixVQUFVLG9DQUFHLEtBQUs7O0FBQ3RDLGdCQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFDekMsZ0JBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFCLGdCQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RDOztBQXpCSCxjQUFBLFdBMkJFLElBQUksR0FBQSxjQUFDLE9BQVksRUFBNkI7OEVBQUYsRUFBRTs7eUNBQXpCLFVBQVU7Z0JBQVYsVUFBVSxvQ0FBRyxLQUFLOztBQUNyQyxnQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPO0FBQ3hDLGdCQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQixnQkFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0Qzs7QUEvQkgsY0FBQSxXQWlDRSxLQUFLLEdBQUEsZUFBQyxPQUFvQixFQUFBO0FBQ3hCLGdCQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFDekMsZ0JBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCOztlQXBDSCxNQUFBOzs7OztBQXVDQSxRQUFJLFFBQVEsR0FBRyxBQUFDLE9BQU8sT0FBTyxLQUFLLFdBQVcsR0FBSSxJQUFJLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUU5RSxRQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLFFBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7c0JBRWpCLElBQUksTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMiLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xuICBUcmFjZSxcbiAgRGVidWcsXG4gIFdhcm4sXG4gIEVycm9yXG59XG5cbmludGVyZmFjZSBDb25zb2xlIHtcbiAgbG9nKG1lc3NhZ2U6IHN0cmluZyk7XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nKTtcbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nKTtcbiAgdHJhY2UoKTtcbn1cblxuY2xhc3MgTnVsbENvbnNvbGUge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKSB7fVxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZykge31cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nKSB7fVxuICB0cmFjZSgpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIGNvbnNvbGU6IENvbnNvbGU7XG4gIHB1YmxpYyBsZXZlbDogTG9nTGV2ZWw7XG4gIHB1YmxpYyBmID0gQUxXQVlTO1xuICBwdWJsaWMgZm9yY2UgPSBBTFdBWVM7XG5cbiAgY29uc3RydWN0b3IoeyBjb25zb2xlLCBsZXZlbCB9OiB7IGNvbnNvbGU6IENvbnNvbGUsIGxldmVsOiBMb2dMZXZlbCB9KSB7XG4gICAgdGhpcy5jb25zb2xlID0gY29uc29sZTtcbiAgICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gIH1cblxuICBwcml2YXRlIHNraXBwZWQobGV2ZWw6IExvZ0xldmVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxldmVsIDwgdGhpcy5sZXZlbDtcbiAgfVxuXG4gIHRyYWNlKG1lc3NhZ2U/OiBhbnksIHsgc3RhY2tUcmFjZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGlmICh0aGlzLnNraXBwZWQoTG9nTGV2ZWwuVHJhY2UpKSByZXR1cm47XG4gICAgdGhpcy5jb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICBpZiAoc3RhY2tUcmFjZSkgdGhpcy5jb25zb2xlLnRyYWNlKCk7XG4gIH1cblxuICBkZWJ1ZyhtZXNzYWdlOiBhbnksIHsgc3RhY2tUcmFjZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGlmICh0aGlzLnNraXBwZWQoTG9nTGV2ZWwuRGVidWcpKSByZXR1cm47XG4gICAgdGhpcy5jb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICBpZiAoc3RhY2tUcmFjZSkgdGhpcy5jb25zb2xlLnRyYWNlKCk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IGFueSwgeyBzdGFja1RyYWNlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgaWYgKHRoaXMuc2tpcHBlZChMb2dMZXZlbC5XYXJuKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIGlmIChzdGFja1RyYWNlKSB0aGlzLmNvbnNvbGUudHJhY2UoKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IGFueSB8IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuc2tpcHBlZChMb2dMZXZlbC5FcnJvcikpIHJldHVybjtcbiAgICB0aGlzLmNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxubGV0IF9jb25zb2xlID0gKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykgPyBuZXcgTnVsbENvbnNvbGUoKSA6IGNvbnNvbGU7XG5cbmNvbnN0IEFMV0FZUyA9IG5ldyBMb2dnZXIoeyBjb25zb2xlOiBfY29uc29sZSwgbGV2ZWw6IExvZ0xldmVsLlRyYWNlIH0pO1xuY29uc3QgTE9HX0xFVkVMID0gTG9nTGV2ZWwuV2FybjtcblxuZXhwb3J0IGRlZmF1bHQgbmV3IExvZ2dlcih7IGNvbnNvbGU6IF9jb25zb2xlLCBsZXZlbDogTE9HX0xFVkVMIH0pO1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFFBQVksUUFLWCxDQUFBOztBQUxELEtBQUEsVUFBWSxRQUFRLEVBQUE7QUFDbEIsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0FBQ0wsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0FBQ0wsZ0JBQUEsQ0FBQSxRQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsTUFBSSxDQUFBO0FBQ0osZ0JBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0tBQ04sQ0FBQSxDQUxXLFFBQVEsYUFBUixRQUtYLEdBTFcsUUFBUSxHQUFBLEVBQUEsQ0FBQSxDQUFBLENBS25COztRQVNELFdBQUE7aUJBQUEsV0FBQTs7QUFBQSxtQkFBQSxXQUNFLEdBQUcsR0FBQSxhQUFDLE9BQWUsRUFBQSxFQUFJOztBQUR6QixtQkFBQSxXQUVFLElBQUksR0FBQSxjQUFDLE9BQWUsRUFBQSxFQUFJOztBQUYxQixtQkFBQSxXQUdFLEtBQUssR0FBQSxlQUFDLE9BQWUsRUFBQSxFQUFJOztBQUgzQixtQkFBQSxXQUlFLEtBQUssR0FBQSxpQkFBQSxFQUFLOztlQUpaLFdBQUE7OztRQU9NLE1BQUE7QUFNSixpQkFOSSxNQUFBLENBTVEsSUFBeUQsRUFBQTtnQkFBdkQsT0FBTyxHQUFULElBQXlELENBQXZELE9BQU87Z0JBQUUsS0FBSyxHQUFoQixJQUF5RCxDQUE5QyxLQUFLOztBQUhyQixnQkFBQSxDQUFBLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDWCxnQkFBQSxDQUFBLEtBQUssR0FBRyxNQUFNLENBQUM7QUFHcEIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjs7QUFURyxjQUFBLFdBV0ksT0FBTyxHQUFBLGlCQUFDLEtBQWUsRUFBQTtBQUM3QixtQkFBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMzQjs7QUFiRyxjQUFBLFdBZUosS0FBSyxHQUFBLGVBQUMsT0FBYSxFQUE2Qjs4RUFBRixFQUFFOzt5Q0FBekIsVUFBVTtnQkFBVixVQUFVLG9DQUFHLEtBQUs7O0FBQ3ZDLGdCQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU87QUFDekMsZ0JBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzFCLGdCQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RDOztBQW5CRyxjQUFBLFdBcUJKLEtBQUssR0FBQSxlQUFDLE9BQVksRUFBNkI7OEVBQUYsRUFBRTs7eUNBQXpCLFVBQVU7Z0JBQVYsVUFBVSxvQ0FBRyxLQUFLOztBQUN0QyxnQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0FBQ3pDLGdCQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQixnQkFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0Qzs7QUF6QkcsY0FBQSxXQTJCSixJQUFJLEdBQUEsY0FBQyxPQUFZLEVBQTZCOzhFQUFGLEVBQUU7O3lDQUF6QixVQUFVO2dCQUFWLFVBQVUsb0NBQUcsS0FBSzs7QUFDckMsZ0JBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTztBQUN4QyxnQkFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0IsZ0JBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEM7O0FBL0JHLGNBQUEsV0FpQ0osS0FBSyxHQUFBLGVBQUMsT0FBb0IsRUFBQTtBQUN4QixnQkFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0FBQ3pDLGdCQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3Qjs7ZUFwQ0csTUFBQTs7Ozs7QUF1Q04sUUFBSSxRQUFRLEdBQUcsQUFBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEdBQUksSUFBSSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFFOUUsUUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO3NCQUVqQixJQUFJLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgVHJhY2UsXG4gIERlYnVnLFxuICBXYXJuLFxuICBFcnJvclxufVxuXG5pbnRlcmZhY2UgQ29uc29sZSB7XG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpO1xuICB3YXJuKG1lc3NhZ2U6IHN0cmluZyk7XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk7XG4gIHRyYWNlKCk7XG59XG5cbmNsYXNzIE51bGxDb25zb2xlIHtcbiAgbG9nKG1lc3NhZ2U6IHN0cmluZykge31cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpIHt9XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge31cbiAgdHJhY2UoKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSBjb25zb2xlOiBDb25zb2xlO1xuICBwdWJsaWMgbGV2ZWw6IExvZ0xldmVsO1xuICBwdWJsaWMgZiA9IEFMV0FZUztcbiAgcHVibGljIGZvcmNlID0gQUxXQVlTO1xuXG4gIGNvbnN0cnVjdG9yKHsgY29uc29sZSwgbGV2ZWwgfTogeyBjb25zb2xlOiBDb25zb2xlLCBsZXZlbDogTG9nTGV2ZWwgfSkge1xuICAgIHRoaXMuY29uc29sZSA9IGNvbnNvbGU7XG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwcGVkKGxldmVsOiBMb2dMZXZlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsZXZlbCA8IHRoaXMubGV2ZWw7XG4gIH1cblxuICB0cmFjZShtZXNzYWdlPzogYW55LCB7IHN0YWNrVHJhY2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBpZiAodGhpcy5za2lwcGVkKExvZ0xldmVsLlRyYWNlKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgaWYgKHN0YWNrVHJhY2UpIHRoaXMuY29uc29sZS50cmFjZSgpO1xuICB9XG5cbiAgZGVidWcobWVzc2FnZTogYW55LCB7IHN0YWNrVHJhY2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBpZiAodGhpcy5za2lwcGVkKExvZ0xldmVsLkRlYnVnKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgaWYgKHN0YWNrVHJhY2UpIHRoaXMuY29uc29sZS50cmFjZSgpO1xuICB9XG5cbiAgd2FybihtZXNzYWdlOiBhbnksIHsgc3RhY2tUcmFjZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGlmICh0aGlzLnNraXBwZWQoTG9nTGV2ZWwuV2FybikpIHJldHVybjtcbiAgICB0aGlzLmNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICBpZiAoc3RhY2tUcmFjZSkgdGhpcy5jb25zb2xlLnRyYWNlKCk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBhbnkgfCBhbnlbXSkge1xuICAgIGlmICh0aGlzLnNraXBwZWQoTG9nTGV2ZWwuRXJyb3IpKSByZXR1cm47XG4gICAgdGhpcy5jb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbmxldCBfY29uc29sZSA9ICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpID8gbmV3IE51bGxDb25zb2xlKCkgOiBjb25zb2xlO1xuXG5jb25zdCBBTFdBWVMgPSBuZXcgTG9nZ2VyKHsgY29uc29sZTogX2NvbnNvbGUsIGxldmVsOiBMb2dMZXZlbC5UcmFjZSB9KTtcbmNvbnN0IExPR19MRVZFTCA9IExvZ0xldmVsLldhcm47XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2dnZXIoeyBjb25zb2xlOiBfY29uc29sZSwgbGV2ZWw6IExPR19MRVZFTCB9KTtcbiJdfQ== 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 // @@ -24956,14 +25510,14 @@ function getAttrNamespace(attrName) { return WHITELIST[attrName] || null; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbmFtZXNwYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFFBQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzdDLFFBQU0sR0FBRyxHQUFHLHNDQUFzQyxDQUFDO0FBQ25ELFFBQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDO0FBRTlDLFFBQU0sU0FBUyxHQUFHO0FBQ2hCLHVCQUFlLEVBQUUsS0FBSztBQUN0Qix1QkFBZSxFQUFFLEtBQUs7QUFDdEIsb0JBQVksRUFBRSxLQUFLO0FBQ25CLG9CQUFZLEVBQUUsS0FBSztBQUNuQixvQkFBWSxFQUFFLEtBQUs7QUFDbkIscUJBQWEsRUFBRSxLQUFLO0FBQ3BCLG9CQUFZLEVBQUUsS0FBSztBQUNuQixrQkFBVSxFQUFFLEdBQUc7QUFDZixrQkFBVSxFQUFFLEdBQUc7QUFDZixtQkFBVyxFQUFFLEdBQUc7QUFDaEIsZUFBTyxFQUFFLEtBQUs7QUFDZCxxQkFBYSxFQUFFLEtBQUs7S0FDckIsQ0FBQzs7QUFFRixhQUFBLGdCQUFBLENBQWlDLFFBQVEsRUFBQTtBQUN2QyxlQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUM7S0FDcEMiLCJmaWxlIjoibmFtZXNwYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZXJlIGlzIGEgc21hbGwgd2hpdGVsaXN0IG9mIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBzcGVjaWFsbHlcbi8vIGVudW1lcmF0ZWQgaW5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMFxuLy9cbi8vID4gV2hlbiBhIGZvcmVpZ24gZWxlbWVudCBoYXMgb25lIG9mIHRoZSBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgZ2l2ZW4gYnlcbi8vID4gdGhlIGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiB0aGUgZmlyc3QgYW5kIHNlY29uZCBjZWxscyBvZiBhIHJvd1xuLy8gPiBmcm9tIHRoZSBmb2xsb3dpbmcgdGFibGUsIGl0IG11c3QgYmUgd3JpdHRlbiB1c2luZyB0aGUgbmFtZSBnaXZlbiBieVxuLy8gPiB0aGUgdGhpcmQgY2VsbCBmcm9tIHRoZSBzYW1lIHJvdy5cbi8vXG4vLyBJbiBhbGwgb3RoZXIgY2FzZXMsIGNvbG9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSByZWd1bGFyIGNoYXJhY3RlclxuLy8gd2l0aCBubyBzcGVjaWFsIG1lYW5pbmc6XG4vL1xuLy8gPiBObyBvdGhlciBuYW1lc3BhY2VkIGF0dHJpYnV0ZSBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBIVE1MIHN5bnRheC5cblxuY29uc3QgWExJTksgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5jb25zdCBYTUwgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcbmNvbnN0IFhNTE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJztcblxuY29uc3QgV0hJVEVMSVNUID0ge1xuICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LLFxuICAneGxpbms6YXJjcm9sZSc6IFhMSU5LLFxuICAneGxpbms6aHJlZic6IFhMSU5LLFxuICAneGxpbms6cm9sZSc6IFhMSU5LLFxuICAneGxpbms6c2hvdyc6IFhMSU5LLFxuICAneGxpbms6dGl0bGUnOiBYTElOSyxcbiAgJ3hsaW5rOnR5cGUnOiBYTElOSyxcbiAgJ3htbDpiYXNlJzogWE1MLFxuICAneG1sOmxhbmcnOiBYTUwsXG4gICd4bWw6c3BhY2UnOiBYTUwsXG4gICd4bWxucyc6IFhNTE5TLFxuICAneG1sbnM6eGxpbmsnOiBYTUxOU1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dHJOYW1lc3BhY2UoYXR0ck5hbWUpIHtcbiAgcmV0dXJuIFdISVRFTElTVFthdHRyTmFtZV0gfHwgbnVsbDtcbn0iXX0= -enifed("glimmer-util/lib/object-utils", ["exports"], function (exports) { +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvbmFtZXNwYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFFBQU0sS0FBSyxHQUFHLDhCQUE4QixDQUFDO0FBQzdDLFFBQU0sR0FBRyxHQUFHLHNDQUFzQyxDQUFDO0FBQ25ELFFBQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDO0FBRTlDLFFBQU0sU0FBUyxHQUFHO0FBQ2hCLHVCQUFlLEVBQUUsS0FBSztBQUN0Qix1QkFBZSxFQUFFLEtBQUs7QUFDdEIsb0JBQVksRUFBRSxLQUFLO0FBQ25CLG9CQUFZLEVBQUUsS0FBSztBQUNuQixvQkFBWSxFQUFFLEtBQUs7QUFDbkIscUJBQWEsRUFBRSxLQUFLO0FBQ3BCLG9CQUFZLEVBQUUsS0FBSztBQUNuQixrQkFBVSxFQUFFLEdBQUc7QUFDZixrQkFBVSxFQUFFLEdBQUc7QUFDZixtQkFBVyxFQUFFLEdBQUc7QUFDaEIsZUFBTyxFQUFFLEtBQUs7QUFDZCxxQkFBYSxFQUFFLEtBQUs7S0FDckIsQ0FBQzs7QUFFSSxhQUFBLGdCQUFBLENBQTJCLFFBQVEsRUFBQTtBQUN2QyxlQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUM7S0FDcEMiLCJmaWxlIjoibmFtZXNwYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZXJlIGlzIGEgc21hbGwgd2hpdGVsaXN0IG9mIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBzcGVjaWFsbHlcbi8vIGVudW1lcmF0ZWQgaW5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMFxuLy9cbi8vID4gV2hlbiBhIGZvcmVpZ24gZWxlbWVudCBoYXMgb25lIG9mIHRoZSBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgZ2l2ZW4gYnlcbi8vID4gdGhlIGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiB0aGUgZmlyc3QgYW5kIHNlY29uZCBjZWxscyBvZiBhIHJvd1xuLy8gPiBmcm9tIHRoZSBmb2xsb3dpbmcgdGFibGUsIGl0IG11c3QgYmUgd3JpdHRlbiB1c2luZyB0aGUgbmFtZSBnaXZlbiBieVxuLy8gPiB0aGUgdGhpcmQgY2VsbCBmcm9tIHRoZSBzYW1lIHJvdy5cbi8vXG4vLyBJbiBhbGwgb3RoZXIgY2FzZXMsIGNvbG9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSByZWd1bGFyIGNoYXJhY3RlclxuLy8gd2l0aCBubyBzcGVjaWFsIG1lYW5pbmc6XG4vL1xuLy8gPiBObyBvdGhlciBuYW1lc3BhY2VkIGF0dHJpYnV0ZSBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBIVE1MIHN5bnRheC5cblxuY29uc3QgWExJTksgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5jb25zdCBYTUwgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcbmNvbnN0IFhNTE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJztcblxuY29uc3QgV0hJVEVMSVNUID0ge1xuICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LLFxuICAneGxpbms6YXJjcm9sZSc6IFhMSU5LLFxuICAneGxpbms6aHJlZic6IFhMSU5LLFxuICAneGxpbms6cm9sZSc6IFhMSU5LLFxuICAneGxpbms6c2hvdyc6IFhMSU5LLFxuICAneGxpbms6dGl0bGUnOiBYTElOSyxcbiAgJ3hsaW5rOnR5cGUnOiBYTElOSyxcbiAgJ3htbDpiYXNlJzogWE1MLFxuICAneG1sOmxhbmcnOiBYTUwsXG4gICd4bWw6c3BhY2UnOiBYTUwsXG4gICd4bWxucyc6IFhNTE5TLFxuICAneG1sbnM6eGxpbmsnOiBYTUxOU1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dHJOYW1lc3BhY2UoYXR0ck5hbWUpIHtcbiAgcmV0dXJuIFdISVRFTElTVFthdHRyTmFtZV0gfHwgbnVsbDtcbn0iXX0= +enifed('glimmer-util/lib/object-utils', ['exports'], function (exports) { /*globals console*/ - "use strict"; + /*globals console*/'use strict'; exports.merge = merge; exports.assign = assign; exports.shallowCopy = shallowCopy; exports.keySet = keySet; @@ -24983,10 +25537,13 @@ for (var _len = arguments.length, assignments = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { assignments[_key - 1] = arguments[_key]; } return assignments.reduce(function (obj, extensions) { + if (typeof extensions !== 'object' || extensions === null) { + return obj; + } Object.keys(extensions).forEach(function (key) { return obj[key] = extensions[key]; }); return obj; }, obj); @@ -25014,47 +25571,29 @@ } } return count; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFQSxhQUFBLEtBQUEsQ0FBc0IsT0FBTyxFQUFFLFFBQVEsRUFBQTtBQUNyQyxhQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtBQUN6QixnQkFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQUUseUJBQVM7YUFBRTtBQUMvQyxtQkFBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztBQUNELGVBQU8sT0FBTyxDQUFDO0tBQ2hCOztBQU1ELGFBQUEsTUFBQSxDQUF1QixHQUFHLEVBQWdCOzBDQUFYLFdBQVc7QUFBWCx1QkFBVzs7O0FBQ3hDLGVBQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUE7QUFDeEMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRzt1QkFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQzthQUFBLENBQUMsQ0FBQztBQUNuRSxtQkFBTyxHQUFHLENBQUM7U0FDWixFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7O0FBRUQsYUFBQSxXQUFBLENBQTRCLEdBQUcsRUFBQTtBQUM3QixlQUFPLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdkI7O0FBRUQsYUFBQSxNQUFBLENBQXVCLEdBQUcsRUFBQTtBQUN4QixZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFYixhQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNwQixnQkFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzVCLG1CQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ2xCO1NBQ0Y7QUFFRCxlQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELGFBQUEsU0FBQSxDQUEwQixHQUFHLEVBQUE7QUFDM0IsWUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBRWQsYUFBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7QUFDcEIsZ0JBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM1QixxQkFBSyxFQUFFLENBQUM7YUFDVDtTQUNGO0FBRUQsZUFBTyxLQUFLLENBQUM7S0FDZCIsImZpbGUiOiJvYmplY3QtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKmdsb2JhbHMgY29uc29sZSovXG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShvcHRpb25zLCBkZWZhdWx0cykge1xuICBmb3IgKGxldCBwcm9wIGluIGRlZmF1bHRzKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkocHJvcCkpIHsgY29udGludWU7IH1cbiAgICBvcHRpb25zW3Byb3BdID0gZGVmYXVsdHNbcHJvcF07XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ248VCwgVT4ob2JqOiBULCBhc3NpZ25tZW50czogVSk6IFQgJiBVO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbjxULCBVLCBWPihvYmo6IFQsIGE6IFUsIGI6IFYpOiBUICYgVSAmIFY7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFYsIFc+KG9iajogVCwgYTogVSwgYjogViwgYzogVyk6IFQgJiBVICYgViAmIFc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCAuLi5hc3NpZ25tZW50cykge1xuICByZXR1cm4gYXNzaWdubWVudHMucmVkdWNlKChvYmosIGV4dGVuc2lvbnMpID0+IHtcbiAgICBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5mb3JFYWNoKGtleSA9PiBvYmpba2V5XSA9IGV4dGVuc2lvbnNba2V5XSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfSwgb2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWxsb3dDb3B5KG9iaikge1xuICByZXR1cm4gbWVyZ2Uoe30sIG9iaik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXlTZXQob2JqKSB7XG4gIGxldCBzZXQgPSB7fTtcblxuICBmb3IgKGxldCBwcm9wIGluIG9iaikge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIHNldFtwcm9wXSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleUxlbmd0aChvYmopIHtcbiAgbGV0IGNvdW50ID0gMDtcblxuICBmb3IgKGxldCBwcm9wIGluIG9iaikge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvdW50O1xufSJdfQ== -enifed('glimmer-util/lib/platform-utils', ['exports'], function (exports) { - 'use strict'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvb2JqZWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFTSxhQUFBLEtBQUEsQ0FBZ0IsT0FBTyxFQUFFLFFBQVEsRUFBQTtBQUNyQyxhQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtBQUN6QixnQkFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQUUseUJBQVM7YUFBRTtBQUMvQyxtQkFBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztBQUNELGVBQU8sT0FBTyxDQUFDO0tBQ2hCOztBQVVLLGFBQUEsTUFBQSxDQUFpQixHQUFHLEVBQWdCOzBDQUFYLFdBQVc7QUFBWCx1QkFBVzs7O0FBQ3hDLGVBQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUE7QUFDeEMsZ0JBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7QUFDekQsdUJBQU8sR0FBRyxDQUFDO2FBQ1o7QUFFRCxrQkFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO3VCQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO2FBQUEsQ0FBQyxDQUFDO0FBQ25FLG1CQUFPLEdBQUcsQ0FBQztTQUNaLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDVDs7QUFFSyxhQUFBLFdBQUEsQ0FBc0IsR0FBRyxFQUFBO0FBQzdCLGVBQU8sS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN2Qjs7QUFFSyxhQUFBLE1BQUEsQ0FBaUIsR0FBRyxFQUFBO0FBQ3hCLFlBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUViLGFBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO0FBQ3BCLGdCQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDNUIsbUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDbEI7U0FDRjtBQUVELGVBQU8sR0FBRyxDQUFDO0tBQ1o7O0FBRUssYUFBQSxTQUFBLENBQW9CLEdBQUcsRUFBQTtBQUMzQixZQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFFZCxhQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNwQixnQkFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzVCLHFCQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0Y7QUFFRCxlQUFPLEtBQUssQ0FBQztLQUNkIiwiZmlsZSI6Im9iamVjdC11dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qZ2xvYmFscyBjb25zb2xlKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGZvciAobGV0IHByb3AgaW4gZGVmYXVsdHMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeyBjb250aW51ZTsgfVxuICAgIG9wdGlvbnNbcHJvcF0gPSBkZWZhdWx0c1twcm9wXTtcbiAgfVxuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbjxULCBVPihvYmo6IFQsIGFzc2lnbm1lbnRzOiBVKTogVCAmIFU7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFY+KG9iajogVCwgYTogVSwgYjogVik6IFQgJiBVICYgVjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ248VCwgVSwgViwgVz4ob2JqOiBULCBhOiBVLCBiOiBWLCBjOiBXKTogVCAmIFUgJiBWICYgVztcbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ248VCwgVSwgViwgVywgWD4ob2JqOiBULCBhOiBVLCBiOiBWLCBjOiBXLCBkOiBYKTogVCAmIFUgJiBWICYgVyAmIFg7XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduPFQsIFUsIFYsIFcsIFgsIFk+KG9iajogVCwgYTogVSwgYjogViwgYzogVywgZDogWCwgZTogWSk6IFQgJiBVICYgViAmIFcgJiBYICYgWTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ248VCwgVSwgViwgVywgWCwgWSwgWj4ob2JqOiBULCBhOiBVLCBiOiBWLCBjOiBXLCBkOiBYLCBlOiBZLCBmOiBaKTogVCAmIFUgJiBWICYgVyAmIFggJiBZICYgWjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0OiBhbnksIC4uLnNvdXJjZXM6IGFueVtdKTogYW55O1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduKG9iaiwgLi4uYXNzaWdubWVudHMpIHtcbiAgcmV0dXJuIGFzc2lnbm1lbnRzLnJlZHVjZSgob2JqLCBleHRlbnNpb25zKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zICE9PSAnb2JqZWN0JyB8fCBleHRlbnNpb25zID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IG9ialtrZXldID0gZXh0ZW5zaW9uc1trZXldKTtcbiAgICByZXR1cm4gb2JqO1xuICB9LCBvYmopO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0NvcHkob2JqKSB7XG4gIHJldHVybiBtZXJnZSh7fSwgb2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleVNldChvYmopIHtcbiAgbGV0IHNldCA9IHt9O1xuXG4gIGZvciAobGV0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgc2V0W3Byb3BdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5TGVuZ3RoKG9iaikge1xuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY291bnQ7XG59XG4iXX0= +enifed("glimmer-util/lib/platform-utils", ["exports"], function (exports) { + "use strict"; - exports.intern = intern; exports.opaque = opaque; - exports.numberKey = numberKey; - exports.LITERAL = LITERAL; - exports.symbol = symbol; + exports.unwrap = unwrap; - function intern(str) { - return str; - // let obj = {}; - // obj[str] = 1; - // for (let key in obj) return <InternedString>key; - } - function opaque(value) { return value; } - function numberKey(num) { - return String(num); - } + // tslint:disable-line - function LITERAL(str) { - return str; + function unwrap(val) { + if (val === null || val === undefined) throw new Error("Expected value to be present"); + return val; } - - var BASE_KEY = intern('__glimmer{+ new Date()}'); - - function symbol(debugName) { - var number = +new Date(); - return intern(debugName + ' [id=' + BASE_KEY + Math.floor(Math.random() * number) + ']'); - } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcGxhdGZvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBTUEsYUFBQSxNQUFBLENBQXVCLEdBQVcsRUFBQTtBQUNoQyxlQUF1QixHQUFHLENBQUM7Ozs7S0FJNUI7O0FBSUQsYUFBQSxNQUFBLENBQXVCLEtBQWEsRUFBQTtBQUNsQyxlQUFPLEtBQUssQ0FBQztLQUNkOztBQUVELGFBQUEsU0FBQSxDQUEwQixHQUFXLEVBQUE7QUFDbkMsZUFBdUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDOztBQUVELGFBQUEsT0FBQSxDQUF3QixHQUFXLEVBQUE7QUFDakMsZUFBdUIsR0FBRyxDQUFDO0tBQzVCOztBQUVELFFBQUksUUFBUSxHQUFHLE1BQU0sMkJBQTJCLENBQUM7O0FBRWpELGFBQUEsTUFBQSxDQUF1QixTQUFTLEVBQUE7QUFDOUIsWUFBSSxNQUFNLEdBQUcsQ0FBRSxJQUFJLElBQUksRUFBRSxBQUFDLENBQUM7QUFDM0IsZUFBTyxNQUFNLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDMUYiLCJmaWxlIjoicGxhdGZvcm0tdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgSW50ZXJuZWRTdHJpbmdNYXJrZXIge1xuICBcImQwODUwMDA3LTI1YzItNDdkOC1iYjYzLWM0MDU0MDE2ZDUzOVwiOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBJbnRlcm5lZFN0cmluZyA9IEludGVybmVkU3RyaW5nTWFya2VyICYgc3RyaW5nO1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJuKHN0cjogc3RyaW5nKTogSW50ZXJuZWRTdHJpbmcge1xuICByZXR1cm4gPEludGVybmVkU3RyaW5nPnN0cjtcbiAgLy8gbGV0IG9iaiA9IHt9O1xuICAvLyBvYmpbc3RyXSA9IDE7XG4gIC8vIGZvciAobGV0IGtleSBpbiBvYmopIHJldHVybiA8SW50ZXJuZWRTdHJpbmc+a2V5O1xufVxuXG5leHBvcnQgdHlwZSBPcGFxdWUgPSB7fSB8IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGFxdWUodmFsdWU6IE9wYXF1ZSk6IE9wYXF1ZSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlcktleShudW06IG51bWJlcik6IEludGVybmVkU3RyaW5nIHtcbiAgcmV0dXJuIDxJbnRlcm5lZFN0cmluZz5TdHJpbmcobnVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExJVEVSQUwoc3RyOiBzdHJpbmcpOiBJbnRlcm5lZFN0cmluZyB7XG4gIHJldHVybiA8SW50ZXJuZWRTdHJpbmc+c3RyO1xufVxuXG5sZXQgQkFTRV9LRVkgPSBpbnRlcm4oYF9fZ2xpbW1lcnsrIG5ldyBEYXRlKCl9YCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW1ib2woZGVidWdOYW1lKTogSW50ZXJuZWRTdHJpbmcge1xuICBsZXQgbnVtYmVyID0gKyhuZXcgRGF0ZSgpKTtcbiAgcmV0dXJuIGludGVybihkZWJ1Z05hbWUgKyAnIFtpZD0nICsgQkFTRV9LRVkgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBudW1iZXIpICsgJ10nKTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcGxhdGZvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRU0sYUFBQSxNQUFBLENBQWlCLEtBQWEsRUFBQTtBQUNsQyxlQUFPLEtBQUssQ0FBQztLQUNkOzs7O0FBS0ssYUFBQSxNQUFBLENBQW9CLEdBQWEsRUFBQTtBQUNyQyxZQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxNQUFNLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQztBQUN2RixlQUFPLEdBQUcsQ0FBQztLQUNaIiwiZmlsZSI6InBsYXRmb3JtLXV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgT3BhcXVlID0ge30gfCB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gb3BhcXVlKHZhbHVlOiBPcGFxdWUpOiBPcGFxdWUge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCB0eXBlIE9wdGlvbjxUPiA9IFQgfCBudWxsOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG5leHBvcnQgdHlwZSBNYXliZTxUPiA9IE9wdGlvbjxUPiB8IHVuZGVmaW5lZDsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwPFQ+KHZhbDogTWF5YmU8VD4pOiBUIHtcbiAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBwcmVzZW50YCk7XG4gIHJldHVybiB2YWw7XG59XG4iXX0= enifed("glimmer-util/lib/quoting", ["exports"], function (exports) { "use strict"; exports.hash = hash; exports.repeat = repeat; @@ -25086,11 +25625,11 @@ str += chars; } return str; } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcXVvdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGFBQUEsWUFBQSxDQUFzQixHQUFHLEVBQUE7QUFDdkIsV0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLFdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixXQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEMsZUFBTyxHQUFHLENBQUM7S0FDWjtZQUVRLFlBQVksR0FBWixZQUFZOztBQUVyQixhQUFBLE1BQUEsQ0FBZ0IsR0FBRyxFQUFBO0FBQ2pCLGVBQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDdEM7WUFFUSxNQUFNLEdBQU4sTUFBTTs7QUFFZixhQUFBLEtBQUEsQ0FBZSxDQUFDLEVBQUE7QUFDZCxlQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ3RCO1lBRVEsS0FBSyxHQUFMLEtBQUs7O0FBRWQsYUFBQSxJQUFBLENBQXFCLEtBQUssRUFBQTtBQUN4QixlQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyQzs7QUFFRCxhQUFBLE1BQUEsQ0FBdUIsS0FBSyxFQUFFLEtBQUssRUFBQTtBQUNqQyxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDYixlQUFPLEtBQUssRUFBRSxFQUFFO0FBQ2QsZUFBRyxJQUFJLEtBQUssQ0FBQztTQUNkO0FBQ0QsZUFBTyxHQUFHLENBQUM7S0FDWiIsImZpbGUiOiJxdW90aW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cikge1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIik7XG4gIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCB7IGVzY2FwZVN0cmluZyB9O1xuXG5mdW5jdGlvbiBzdHJpbmcoc3RyKSB7XG4gIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cikgKyAnXCInO1xufVxuXG5leHBvcnQgeyBzdHJpbmcgfTtcblxuZnVuY3Rpb24gYXJyYXkoYSkge1xuICByZXR1cm4gXCJbXCIgKyBhICsgXCJdXCI7XG59XG5cbmV4cG9ydCB7IGFycmF5IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoKHBhaXJzKSB7XG4gIHJldHVybiBcIntcIiArIHBhaXJzLmpvaW4oXCIsIFwiKSArIFwifVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwZWF0KGNoYXJzLCB0aW1lcykge1xuICBsZXQgc3RyID0gXCJcIjtcbiAgd2hpbGUgKHRpbWVzLS0pIHtcbiAgICBzdHIgKz0gY2hhcnM7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItdXRpbC9saWIvcXVvdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGFBQUEsWUFBQSxDQUFzQixHQUFHLEVBQUE7QUFDdkIsV0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLFdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixXQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEMsZUFBTyxHQUFHLENBQUM7S0FDWjtZQUVRLFlBQVksR0FBWixZQUFZOztBQUVyQixhQUFBLE1BQUEsQ0FBZ0IsR0FBRyxFQUFBO0FBQ2pCLGVBQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7S0FDdEM7WUFFUSxNQUFNLEdBQU4sTUFBTTs7QUFFZixhQUFBLEtBQUEsQ0FBZSxDQUFDLEVBQUE7QUFDZCxlQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ3RCO1lBRVEsS0FBSyxHQUFMLEtBQUs7O0FBRVIsYUFBQSxJQUFBLENBQWUsS0FBSyxFQUFBO0FBQ3hCLGVBQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ3JDOztBQUVLLGFBQUEsTUFBQSxDQUFpQixLQUFLLEVBQUUsS0FBSyxFQUFBO0FBQ2pDLFlBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLGVBQU8sS0FBSyxFQUFFLEVBQUU7QUFDZCxlQUFHLElBQUksS0FBSyxDQUFDO1NBQ2Q7QUFDRCxlQUFPLEdBQUcsQ0FBQztLQUNaIiwiZmlsZSI6InF1b3RpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyKSB7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyk7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKTtcbiAgcmV0dXJuIHN0cjtcbn1cblxuZXhwb3J0IHsgZXNjYXBlU3RyaW5nIH07XG5cbmZ1bmN0aW9uIHN0cmluZyhzdHIpIHtcbiAgcmV0dXJuICdcIicgKyBlc2NhcGVTdHJpbmcoc3RyKSArICdcIic7XG59XG5cbmV4cG9ydCB7IHN0cmluZyB9O1xuXG5mdW5jdGlvbiBhcnJheShhKSB7XG4gIHJldHVybiBcIltcIiArIGEgKyBcIl1cIjtcbn1cblxuZXhwb3J0IHsgYXJyYXkgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2gocGFpcnMpIHtcbiAgcmV0dXJuIFwie1wiICsgcGFpcnMuam9pbihcIiwgXCIpICsgXCJ9XCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBlYXQoY2hhcnMsIHRpbWVzKSB7XG4gIGxldCBzdHIgPSBcIlwiO1xuICB3aGlsZSAodGltZXMtLSkge1xuICAgIHN0ciArPSBjaGFycztcbiAgfVxuICByZXR1cm4gc3RyO1xufVxuIl19 enifed("glimmer-util/lib/void-tag-names", ["exports", "glimmer-util/lib/array-utils"], function (exports, _glimmerUtilLibArrayUtils) { "use strict"; // The HTML elements in this list are speced by // http://www.w3.org/TR/html-markup/syntax.html#syntax-elements, @@ -25116,38 +25655,42 @@ exports.Expressions = Expressions; (function (Expressions) { Expressions.isUnknown = is('unknown'); Expressions.isArg = is('arg'); Expressions.isGet = is('get'); - Expressions.isSelfGet = is('self-get'); Expressions.isConcat = is('concat'); Expressions.isHelper = is('helper'); - Expressions.isHasBlock = is('hasBlock'); - Expressions.isHasBlockParams = is('hasBlockParams'); - function isValue(value) { - return value !== null && typeof value !== 'object'; + 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.isValue = isValue; + 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('openElement'); - Statements.isCloseElement = is('closeElement'); - Statements.isStaticAttr = is('staticAttr'); - Statements.isDynamicAttr = is('dynamicAttr'); + 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.isDynamicArg = is('dynamicArg'); - Statements.isStaticArg = is('staticArg'); - Statements.isTrustingAttr = is('trustingAttr'); + Statements.isDynamicArg = is('dynamic-arg'); + Statements.isStaticArg = is('static-arg'); + Statements.isTrustingAttr = is('trusting-attr'); })(Statements || (exports.Statements = Statements = {})); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItd2lyZS1mb3JtYXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLGFBQUEsRUFBQSxDQUE2QixPQUFlLEVBQUE7QUFDMUMsZUFBTyxVQUFTLEtBQVksRUFBQTtBQUMxQixtQkFBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO1NBQzdCLENBQUM7S0FDSDtBQVVELFFBQWlCLFdBQVcsQ0FpRDNCOztBQWpERCxLQUFBLFVBQWlCLFdBQVcsRUFBQztBQXFDZCxtQkFBQSxDQUFBLFNBQVMsR0FBVSxFQUFFLENBQVUsU0FBUyxDQUFDLENBQUM7QUFDMUMsbUJBQUEsQ0FBQSxLQUFLLEdBQWMsRUFBRSxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLG1CQUFBLENBQUEsS0FBSyxHQUFjLEVBQUUsQ0FBTSxLQUFLLENBQUMsQ0FBQztBQUNsQyxtQkFBQSxDQUFBLFNBQVMsR0FBVSxFQUFFLENBQVUsVUFBVSxDQUFDLENBQUM7QUFDM0MsbUJBQUEsQ0FBQSxRQUFRLEdBQVcsRUFBRSxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLG1CQUFBLENBQUEsUUFBUSxHQUFXLEVBQUUsQ0FBUyxRQUFRLENBQUMsQ0FBQztBQUN4QyxtQkFBQSxDQUFBLFVBQVUsR0FBUyxFQUFFLENBQVcsVUFBVSxDQUFDLENBQUM7QUFDNUMsbUJBQUEsQ0FBQSxnQkFBZ0IsR0FBRyxFQUFFLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFckUsaUJBQUEsT0FBQSxDQUF3QixLQUFVLEVBQUE7QUFDaEMsbUJBQU8sS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7U0FDcEQ7QUFGZSxtQkFBQSxDQUFBLE9BQU8sR0FBQSxPQUV0QixDQUFBO0tBQ0YsQ0FBQSxDQWpEZ0IsV0FBVyxhQUFYLFdBQVcsR0FBWCxXQUFXLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FpRDNCO0FBSUQsUUFBaUIsVUFBVSxDQWlEMUI7O0FBakRELEtBQUEsVUFBaUIsVUFBVSxFQUFDO0FBb0JiLGtCQUFBLENBQUEsTUFBTSxHQUFXLEVBQUUsQ0FBTyxNQUFNLENBQUMsQ0FBQztBQUNsQyxrQkFBQSxDQUFBLFFBQVEsR0FBUyxFQUFFLENBQVMsUUFBUSxDQUFDLENBQUM7QUFDdEMsa0JBQUEsQ0FBQSxTQUFTLEdBQVEsRUFBRSxDQUFVLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLGtCQUFBLENBQUEsVUFBVSxHQUFPLEVBQUUsQ0FBVyxVQUFVLENBQUMsQ0FBQztBQUMxQyxrQkFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQVEsT0FBTyxDQUFDLENBQUM7QUFDcEMsa0JBQUEsQ0FBQSxhQUFhLEdBQUksRUFBRSxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBQ2hELGtCQUFBLENBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQUNsRCxrQkFBQSxDQUFBLFlBQVksR0FBSyxFQUFFLENBQWEsWUFBWSxDQUFDLENBQUM7QUFDOUMsa0JBQUEsQ0FBQSxhQUFhLEdBQUksRUFBRSxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBQ2hELGtCQUFBLENBQUEsT0FBTyxHQUFVLEVBQUUsQ0FBUSxPQUFPLENBQUMsQ0FBQztBQUNwQyxrQkFBQSxDQUFBLFlBQVksR0FBSyxFQUFFLENBQWEsWUFBWSxDQUFDLENBQUM7QUFDOUMsa0JBQUEsQ0FBQSxXQUFXLEdBQU0sRUFBRSxDQUFZLFdBQVcsQ0FBQyxDQUFDO0FBQzVDLGtCQUFBLENBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBZSxjQUFjLENBQUMsQ0FBQztLQWlCaEUsQ0FBQSxDQWpEZ0IsVUFBVSxhQUFWLFVBQVUsR0FBVixVQUFVLEdBQUEsRUFBQSxDQUFBLENBQUEsQ0FpRDFCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgSW50ZXJuZWRTdHJpbmcgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG50eXBlIEpzb25WYWx1ZSA9XG4gICAgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IEpzb25PYmplY3RcbiAgfCBKc29uQXJyYXlcbiAgO1xuXG5pbnRlcmZhY2UgSnNvbk9iamVjdCBleHRlbmRzIERpY3Q8SnNvblZhbHVlPiB7fVxuaW50ZXJmYWNlIEpzb25BcnJheSBleHRlbmRzIEFycmF5PEpzb25WYWx1ZT4ge31cblxuLy8gVGhpcyBlbnRpcmUgZmlsZSBpcyBzZXJpYWxpemVkIHRvIGRpc2ssIHNvIGFsbCBzdHJpbmdzXG4vLyBlbmQgdXAgYmVpbmcgaW50ZXJuZWQuXG5leHBvcnQgdHlwZSBzdHIgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBUZW1wbGF0ZVJlZmVyZW5jZSA9IG51bWJlcjtcbmV4cG9ydCB0eXBlIFlpZWxkVG8gPSBzdHI7XG5cbmZ1bmN0aW9uIGlzPFQgZXh0ZW5kcyBhbnlbXT4odmFyaWFudDogc3RyaW5nKTogKHZhbHVlOiBhbnlbXSkgPT4gdmFsdWUgaXMgVCB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZTogYW55W10pOiB2YWx1ZSBpcyBUIHtcbiAgICByZXR1cm4gdmFsdWVbMF0gPT09IHZhcmlhbnQ7XG4gIH07XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29yZSB7XG4gIHR5cGUgRXhwcmVzc2lvbiA9IEV4cHJlc3Npb25zLkV4cHJlc3Npb247XG5cbiAgZXhwb3J0IHR5cGUgUGF0aCAgICAgICAgICA9IHN0cltdO1xuICBleHBvcnQgdHlwZSBQYXJhbXMgICAgICAgID0gRXhwcmVzc2lvbltdO1xuICBleHBvcnQgdHlwZSBIYXNoICAgICAgICAgID0gRGljdDxFeHByZXNzaW9uPjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBFeHByZXNzaW9ucyB7XG4gIHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbiAgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuXG4gIGV4cG9ydCB0eXBlIFVua25vd24gICAgICAgID0gWyd1bmtub3duJywgUGF0aF07XG4gIGV4cG9ydCB0eXBlIEFyZyAgICAgICAgICAgID0gWydhcmcnLCBQYXRoXTtcbiAgZXhwb3J0IHR5cGUgR2V0ICAgICAgICAgICAgPSBbJ2dldCcsIFBhdGhdO1xuICBleHBvcnQgdHlwZSBTZWxmR2V0ICAgICAgICA9IFsnc2VsZi1nZXQnLCBQYXRoXTtcbiAgZXhwb3J0IHR5cGUgVmFsdWUgICAgICAgICAgPSBzdHIgfCBudW1iZXIgfCBib29sZWFuO1xuICBleHBvcnQgdHlwZSBIYXNCbG9jayAgICAgICA9IFsnaGFzQmxvY2snLCBzdHJdO1xuICBleHBvcnQgdHlwZSBIYXNCbG9ja1BhcmFtcyA9IFsnaGFzQmxvY2tQYXJhbXMnLCBzdHJdO1xuXG4gIGV4cG9ydCB0eXBlIEV4cHJlc3Npb24gPVxuICAgICAgVW5rbm93blxuICAgIHwgQXJnXG4gICAgfCBHZXRcbiAgICB8IFNlbGZHZXRcbiAgICB8IENvbmNhdFxuICAgIHwgSGFzQmxvY2tcbiAgICB8IEhhc0Jsb2NrUGFyYW1zXG4gICAgfCBIZWxwZXJcbiAgICB8IFZhbHVlXG4gICAgO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29uY2F0IGV4dGVuZHMgQXJyYXk8YW55PiB7XG4gICAgWzBdOiAnY29uY2F0JztcbiAgICBbMV06IFBhcmFtcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIGV4dGVuZHMgQXJyYXk8YW55PiB7XG4gICAgWzBdOiAnaGVscGVyJztcbiAgICBbMV06IFBhdGg7XG4gICAgWzJdOiBQYXJhbXM7XG4gICAgWzNdOiBIYXNoO1xuICB9XG5cbiAgZXhwb3J0IGNvbnN0IGlzVW5rbm93biAgICAgICAgPSBpczxVbmtub3duPigndW5rbm93bicpO1xuICBleHBvcnQgY29uc3QgaXNBcmcgICAgICAgICAgICA9IGlzPEFyZz4oJ2FyZycpO1xuICBleHBvcnQgY29uc3QgaXNHZXQgICAgICAgICAgICA9IGlzPEdldD4oJ2dldCcpO1xuICBleHBvcnQgY29uc3QgaXNTZWxmR2V0ICAgICAgICA9IGlzPFNlbGZHZXQ+KCdzZWxmLWdldCcpO1xuICBleHBvcnQgY29uc3QgaXNDb25jYXQgICAgICAgICA9IGlzPENvbmNhdD4oJ2NvbmNhdCcpO1xuICBleHBvcnQgY29uc3QgaXNIZWxwZXIgICAgICAgICA9IGlzPEhlbHBlcj4oJ2hlbHBlcicpO1xuICBleHBvcnQgY29uc3QgaXNIYXNCbG9jayAgICAgICA9IGlzPEhhc0Jsb2NrPignaGFzQmxvY2snKTtcbiAgZXhwb3J0IGNvbnN0IGlzSGFzQmxvY2tQYXJhbXMgPSBpczxIYXNCbG9ja1BhcmFtcz4oJ2hhc0Jsb2NrUGFyYW1zJyk7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWUodmFsdWU6IGFueSk6IHZhbHVlIGlzIFZhbHVlIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMuRXhwcmVzc2lvbjtcblxuZXhwb3J0IG5hbWVzcGFjZSBTdGF0ZW1lbnRzIHtcbiAgdHlwZSBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMuRXhwcmVzc2lvbjtcbiAgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuICB0eXBlIFBhdGggPSBDb3JlLlBhdGg7XG5cbiAgZXhwb3J0IHR5cGUgVGV4dCAgICAgICAgICA9IFsndGV4dCcsIHN0cl07XG4gIGV4cG9ydCB0eXBlIEFwcGVuZCAgICAgICAgPSBbJ2FwcGVuZCcsIEV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBDb21tZW50ICAgICAgID0gWydjb21tZW50Jywgc3RyXTtcbiAgZXhwb3J0IHR5cGUgTW9kaWZpZXIgICAgICA9IFsnbW9kaWZpZXInLCBQYXRoLCBQYXJhbXMsIEhhc2hdO1xuICBleHBvcnQgdHlwZSBCbG9jayAgICAgICAgID0gWydibG9jaycsIFBhdGgsIFBhcmFtcywgSGFzaCwgVGVtcGxhdGVSZWZlcmVuY2UsIFRlbXBsYXRlUmVmZXJlbmNlXTtcbiAgZXhwb3J0IHR5cGUgT3BlbkVsZW1lbnQgICA9IFsnb3BlbkVsZW1lbnQnLCBzdHIsIHN0cltdXTtcbiAgZXhwb3J0IHR5cGUgQ2xvc2VFbGVtZW50ICA9IFsnY2xvc2VFbGVtZW50J107XG4gIGV4cG9ydCB0eXBlIFN0YXRpY0F0dHIgICAgPSBbJ3N0YXRpY0F0dHInLCBzdHIsIEV4cHJlc3Npb24sIHN0cl07XG4gIGV4cG9ydCB0eXBlIER5bmFtaWNBdHRyICAgPSBbJ2R5bmFtaWNBdHRyJywgc3RyLCBFeHByZXNzaW9uLCBzdHJdO1xuICBleHBvcnQgdHlwZSBZaWVsZCAgICAgICAgID0gWyd5aWVsZCcsIFlpZWxkVG8sIFBhcmFtc107XG4gIGV4cG9ydCB0eXBlIER5bmFtaWNBcmcgICAgPSBbJ2R5bmFtaWNBcmcnLCBzdHIsIEV4cHJlc3Npb25dO1xuICBleHBvcnQgdHlwZSBTdGF0aWNBcmcgICAgID0gWydzdGF0aWNBcmcnLCBzdHIsIEV4cHJlc3Npb25dO1xuICBleHBvcnQgdHlwZSBUcnVzdGluZ0F0dHIgID0gWyd0cnVzdGluZ0F0dHInLCBzdHIsIEV4cHJlc3Npb24sIHN0cl07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVGV4dCAgICAgICAgID0gaXM8VGV4dD4oJ3RleHQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzQXBwZW5kICAgICAgID0gaXM8QXBwZW5kPignYXBwZW5kJyk7XG4gIGV4cG9ydCBjb25zdCBpc0NvbW1lbnQgICAgICA9IGlzPENvbW1lbnQ+KCdjb21tZW50Jyk7XG4gIGV4cG9ydCBjb25zdCBpc01vZGlmaWVyICAgICA9IGlzPE1vZGlmaWVyPignbW9kaWZpZXInKTtcbiAgZXhwb3J0IGNvbnN0IGlzQmxvY2sgICAgICAgID0gaXM8QmxvY2s+KCdibG9jaycpO1xuICBleHBvcnQgY29uc3QgaXNPcGVuRWxlbWVudCAgPSBpczxPcGVuRWxlbWVudD4oJ29wZW5FbGVtZW50Jyk7XG4gIGV4cG9ydCBjb25zdCBpc0Nsb3NlRWxlbWVudCA9IGlzPENsb3NlRWxlbWVudD4oJ2Nsb3NlRWxlbWVudCcpO1xuICBleHBvcnQgY29uc3QgaXNTdGF0aWNBdHRyICAgPSBpczxTdGF0aWNBdHRyPignc3RhdGljQXR0cicpO1xuICBleHBvcnQgY29uc3QgaXNEeW5hbWljQXR0ciAgPSBpczxEeW5hbWljQXR0cj4oJ2R5bmFtaWNBdHRyJyk7XG4gIGV4cG9ydCBjb25zdCBpc1lpZWxkICAgICAgICA9IGlzPFlpZWxkPigneWllbGQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzRHluYW1pY0FyZyAgID0gaXM8RHluYW1pY0FyZz4oJ2R5bmFtaWNBcmcnKTtcbiAgZXhwb3J0IGNvbnN0IGlzU3RhdGljQXJnICAgID0gaXM8U3RhdGljQXJnPignc3RhdGljQXJnJyk7XG4gIGV4cG9ydCBjb25zdCBpc1RydXN0aW5nQXR0ciA9IGlzPFRydXN0aW5nQXR0cj4oJ3RydXN0aW5nQXR0cicpO1xuXG4gIGV4cG9ydCB0eXBlIFN0YXRlbWVudCA9XG4gICAgICBUZXh0XG4gICAgfCBBcHBlbmRcbiAgICB8IENvbW1lbnRcbiAgICB8IE1vZGlmaWVyXG4gICAgfCBCbG9ja1xuICAgIHwgT3BlbkVsZW1lbnRcbiAgICB8IENsb3NlRWxlbWVudFxuICAgIHwgU3RhdGljQXR0clxuICAgIHwgRHluYW1pY0F0dHJcbiAgICB8IFlpZWxkXG4gICAgfCBTdGF0aWNBcmdcbiAgICB8IER5bmFtaWNBcmdcbiAgICB8IFRydXN0aW5nQXR0clxuICAgIDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGVtZW50ID0gU3RhdGVtZW50cy5TdGF0ZW1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tNZXRhIHtcbiAgbW9kdWxlTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkVGVtcGxhdGUge1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRzLlN0YXRlbWVudFtdO1xuICBsb2NhbHM6IEludGVybmVkU3RyaW5nW107XG4gIG5hbWVkOiBJbnRlcm5lZFN0cmluZ1tdO1xuICB5aWVsZHM6IEludGVybmVkU3RyaW5nW107XG4gIGJsb2NrczogU2VyaWFsaXplZEJsb2NrW107XG4gIG1ldGE6IEJsb2NrTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkQmxvY2sge1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRzLlN0YXRlbWVudFtdO1xuICBsb2NhbHM6IEludGVybmVkU3RyaW5nW107XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItd2lyZS1mb3JtYXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLGFBQUEsRUFBQSxDQUE2QixPQUFlLEVBQUE7QUFDMUMsZUFBTyxVQUFTLEtBQVksRUFBQTtBQUMxQixtQkFBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDO1NBQzdCLENBQUM7S0FDSDtBQVVLLFFBQVcsV0FBVyxDQW9EM0I7O0FBcERELEtBQUEsVUFBaUIsV0FBVyxFQUFBO0FBcUNiLG1CQUFBLENBQUEsU0FBUyxHQUFVLEVBQUUsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUMxQyxtQkFBQSxDQUFBLEtBQUssR0FBYyxFQUFFLENBQU0sS0FBSyxDQUFDLENBQUM7QUFDbEMsbUJBQUEsQ0FBQSxLQUFLLEdBQWMsRUFBRSxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLG1CQUFBLENBQUEsUUFBUSxHQUFXLEVBQUUsQ0FBUyxRQUFRLENBQUMsQ0FBQztBQUN4QyxtQkFBQSxDQUFBLFFBQVEsR0FBVyxFQUFFLENBQVMsUUFBUSxDQUFDLENBQUM7QUFDeEMsbUJBQUEsQ0FBQSxVQUFVLEdBQVMsRUFBRSxDQUFXLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLG1CQUFBLENBQUEsZ0JBQWdCLEdBQUcsRUFBRSxDQUFpQixrQkFBa0IsQ0FBQyxDQUFDO0FBQzFELG1CQUFBLENBQUEsV0FBVyxHQUFRLEVBQUUsQ0FBWSxXQUFXLENBQUMsQ0FBQztBQUUzRCxpQkFBQSxnQkFBQSxDQUFpQyxLQUFVLEVBQUE7QUFDekMsZ0JBQUksS0FBSyxLQUFLLElBQUksRUFBRTtBQUNsQix1QkFBTyxJQUFJLENBQUM7YUFDYjtBQUNELG1CQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztTQUNsQztBQUxlLG1CQUFBLENBQUEsZ0JBQWdCLEdBQUEsZ0JBSy9CLENBQUE7S0FDRixDQUFBLENBcERnQixXQUFXLGFBQVgsV0FBVyxHQUFYLFdBQVcsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQW9EM0I7QUFJSyxRQUFXLFVBQVUsQ0FvRDFCOztBQXBERCxLQUFBLFVBQWlCLFVBQVUsRUFBQTtBQXFCWixrQkFBQSxDQUFBLE1BQU0sR0FBVyxFQUFFLENBQU8sTUFBTSxDQUFDLENBQUM7QUFDbEMsa0JBQUEsQ0FBQSxRQUFRLEdBQVMsRUFBRSxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLGtCQUFBLENBQUEsU0FBUyxHQUFRLEVBQUUsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUN4QyxrQkFBQSxDQUFBLFVBQVUsR0FBTyxFQUFFLENBQVcsVUFBVSxDQUFDLENBQUM7QUFDMUMsa0JBQUEsQ0FBQSxPQUFPLEdBQVUsRUFBRSxDQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLGtCQUFBLENBQUEsYUFBYSxHQUFJLEVBQUUsQ0FBYyxjQUFjLENBQUMsQ0FBQztBQUNqRCxrQkFBQSxDQUFBLGNBQWMsR0FBRyxFQUFFLENBQWUsZUFBZSxDQUFDLENBQUM7QUFDbkQsa0JBQUEsQ0FBQSxjQUFjLEdBQUcsRUFBRSxDQUFlLGVBQWUsQ0FBQyxDQUFDO0FBQ25ELGtCQUFBLENBQUEsWUFBWSxHQUFLLEVBQUUsQ0FBYSxhQUFhLENBQUMsQ0FBQztBQUMvQyxrQkFBQSxDQUFBLGFBQWEsR0FBSSxFQUFFLENBQWMsY0FBYyxDQUFDLENBQUM7QUFDakQsa0JBQUEsQ0FBQSxPQUFPLEdBQVUsRUFBRSxDQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLGtCQUFBLENBQUEsWUFBWSxHQUFLLEVBQUUsQ0FBYSxhQUFhLENBQUMsQ0FBQztBQUMvQyxrQkFBQSxDQUFBLFdBQVcsR0FBTSxFQUFFLENBQVksWUFBWSxDQUFDLENBQUM7QUFDN0Msa0JBQUEsQ0FBQSxjQUFjLEdBQUcsRUFBRSxDQUFlLGVBQWUsQ0FBQyxDQUFDO0tBa0JqRSxDQUFBLENBcERnQixVQUFVLGFBQVYsVUFBVSxHQUFWLFVBQVUsR0FBQSxFQUFBLENBQUEsQ0FBQSxDQW9EMUIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcblxudHlwZSBKc29uVmFsdWUgPVxuICAgIHN0cmluZ1xuICB8IG51bWJlclxuICB8IGJvb2xlYW5cbiAgfCBKc29uT2JqZWN0XG4gIHwgSnNvbkFycmF5XG4gIDtcblxuaW50ZXJmYWNlIEpzb25PYmplY3QgZXh0ZW5kcyBEaWN0PEpzb25WYWx1ZT4ge31cbmludGVyZmFjZSBKc29uQXJyYXkgZXh0ZW5kcyBBcnJheTxKc29uVmFsdWU+IHt9XG5cbi8vIFRoaXMgZW50aXJlIGZpbGUgaXMgc2VyaWFsaXplZCB0byBkaXNrLCBzbyBhbGwgc3RyaW5nc1xuLy8gZW5kIHVwIGJlaW5nIGludGVybmVkLlxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVGVtcGxhdGVSZWZlcmVuY2UgPSBudW1iZXI7XG5leHBvcnQgdHlwZSBZaWVsZFRvID0gc3RyO1xuXG5mdW5jdGlvbiBpczxUIGV4dGVuZHMgYW55W10+KHZhcmlhbnQ6IHN0cmluZyk6ICh2YWx1ZTogYW55W10pID0+IHZhbHVlIGlzIFQge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWU6IGFueVtdKTogdmFsdWUgaXMgVCB7XG4gICAgcmV0dXJuIHZhbHVlWzBdID09PSB2YXJpYW50O1xuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvcmUge1xuICB0eXBlIEV4cHJlc3Npb24gPSBFeHByZXNzaW9ucy5FeHByZXNzaW9uO1xuXG4gIGV4cG9ydCB0eXBlIFBhdGggICAgICAgICAgPSBzdHJbXTtcbiAgZXhwb3J0IHR5cGUgUGFyYW1zICAgICAgICA9IEV4cHJlc3Npb25bXTtcbiAgZXhwb3J0IHR5cGUgSGFzaCAgICAgICAgICA9IFtzdHJbXSwgRXhwcmVzc2lvbltdXTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBFeHByZXNzaW9ucyB7XG4gIHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbiAgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuXG4gIGV4cG9ydCB0eXBlIFVua25vd24gICAgICAgID0gWyd1bmtub3duJywgUGF0aF07XG4gIGV4cG9ydCB0eXBlIEFyZyAgICAgICAgICAgID0gWydhcmcnLCBQYXRoXTtcbiAgZXhwb3J0IHR5cGUgR2V0ICAgICAgICAgICAgPSBbJ2dldCcsIFBhdGhdO1xuICBleHBvcnQgdHlwZSBWYWx1ZSAgICAgICAgICA9IHN0ciB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gIGV4cG9ydCB0eXBlIEhhc0Jsb2NrICAgICAgID0gWydoYXMtYmxvY2snLCBzdHJdO1xuICBleHBvcnQgdHlwZSBIYXNCbG9ja1BhcmFtcyA9IFsnaGFzLWJsb2NrLXBhcmFtcycsIHN0cl07XG4gIGV4cG9ydCB0eXBlIFVuZGVmaW5lZCAgICAgID0gWyd1bmRlZmluZWQnXTtcblxuICBleHBvcnQgdHlwZSBFeHByZXNzaW9uID1cbiAgICAgIFVua25vd25cbiAgICB8IEFyZ1xuICAgIHwgR2V0XG4gICAgfCBDb25jYXRcbiAgICB8IEhhc0Jsb2NrXG4gICAgfCBIYXNCbG9ja1BhcmFtc1xuICAgIHwgSGVscGVyXG4gICAgfCBVbmRlZmluZWRcbiAgICB8IFZhbHVlXG4gICAgO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29uY2F0IGV4dGVuZHMgQXJyYXk8YW55PiB7XG4gICAgWzBdOiAnY29uY2F0JztcbiAgICBbMV06IFBhcmFtcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSGVscGVyIGV4dGVuZHMgQXJyYXk8YW55PiB7XG4gICAgWzBdOiAnaGVscGVyJztcbiAgICBbMV06IFBhdGg7XG4gICAgWzJdOiBQYXJhbXM7XG4gICAgWzNdOiBIYXNoO1xuICB9XG5cbiAgZXhwb3J0IGNvbnN0IGlzVW5rbm93biAgICAgICAgPSBpczxVbmtub3duPigndW5rbm93bicpO1xuICBleHBvcnQgY29uc3QgaXNBcmcgICAgICAgICAgICA9IGlzPEFyZz4oJ2FyZycpO1xuICBleHBvcnQgY29uc3QgaXNHZXQgICAgICAgICAgICA9IGlzPEdldD4oJ2dldCcpO1xuICBleHBvcnQgY29uc3QgaXNDb25jYXQgICAgICAgICA9IGlzPENvbmNhdD4oJ2NvbmNhdCcpO1xuICBleHBvcnQgY29uc3QgaXNIZWxwZXIgICAgICAgICA9IGlzPEhlbHBlcj4oJ2hlbHBlcicpO1xuICBleHBvcnQgY29uc3QgaXNIYXNCbG9jayAgICAgICA9IGlzPEhhc0Jsb2NrPignaGFzLWJsb2NrJyk7XG4gIGV4cG9ydCBjb25zdCBpc0hhc0Jsb2NrUGFyYW1zID0gaXM8SGFzQmxvY2tQYXJhbXM+KCdoYXMtYmxvY2stcGFyYW1zJyk7XG4gIGV4cG9ydCBjb25zdCBpc1VuZGVmaW5lZCAgICAgID0gaXM8VW5kZWZpbmVkPigndW5kZWZpbmVkJyk7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlVmFsdWUodmFsdWU6IGFueSk6IHZhbHVlIGlzIFZhbHVlIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMuRXhwcmVzc2lvbjtcblxuZXhwb3J0IG5hbWVzcGFjZSBTdGF0ZW1lbnRzIHtcbiAgdHlwZSBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMuRXhwcmVzc2lvbjtcbiAgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbiAgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuICB0eXBlIFBhdGggPSBDb3JlLlBhdGg7XG5cbiAgZXhwb3J0IHR5cGUgVGV4dCAgICAgICAgICA9IFsndGV4dCcsIHN0cl07XG4gIGV4cG9ydCB0eXBlIEFwcGVuZCAgICAgICAgPSBbJ2FwcGVuZCcsIEV4cHJlc3Npb24sIGJvb2xlYW5dO1xuICBleHBvcnQgdHlwZSBDb21tZW50ICAgICAgID0gWydjb21tZW50Jywgc3RyXTtcbiAgZXhwb3J0IHR5cGUgTW9kaWZpZXIgICAgICA9IFsnbW9kaWZpZXInLCBQYXRoLCBQYXJhbXMsIEhhc2hdO1xuICBleHBvcnQgdHlwZSBCbG9jayAgICAgICAgID0gWydibG9jaycsIFBhdGgsIFBhcmFtcywgSGFzaCwgVGVtcGxhdGVSZWZlcmVuY2UsIFRlbXBsYXRlUmVmZXJlbmNlXTtcbiAgZXhwb3J0IHR5cGUgT3BlbkVsZW1lbnQgICA9IFsnb3Blbi1lbGVtZW50Jywgc3RyLCBzdHJbXV07XG4gIGV4cG9ydCB0eXBlIEZsdXNoRWxlbWVudCAgPSBbJ2ZsdXNoLWVsZW1lbnQnXTtcbiAgZXhwb3J0IHR5cGUgQ2xvc2VFbGVtZW50ICA9IFsnY2xvc2UtZWxlbWVudCddO1xuICBleHBvcnQgdHlwZSBTdGF0aWNBdHRyICAgID0gWydzdGF0aWMtYXR0cicsIHN0ciwgRXhwcmVzc2lvbiwgc3RyXTtcbiAgZXhwb3J0IHR5cGUgRHluYW1pY0F0dHIgICA9IFsnZHluYW1pYy1hdHRyJywgc3RyLCBFeHByZXNzaW9uLCBzdHJdO1xuICBleHBvcnQgdHlwZSBZaWVsZCAgICAgICAgID0gWyd5aWVsZCcsIFlpZWxkVG8sIFBhcmFtc107XG4gIGV4cG9ydCB0eXBlIER5bmFtaWNBcmcgICAgPSBbJ2R5bmFtaWMtYXJnJywgc3RyLCBFeHByZXNzaW9uXTtcbiAgZXhwb3J0IHR5cGUgU3RhdGljQXJnICAgICA9IFsnc3RhdGljLWFyZycsIHN0ciwgRXhwcmVzc2lvbl07XG4gIGV4cG9ydCB0eXBlIFRydXN0aW5nQXR0ciAgPSBbJ3RydXN0aW5nLWF0dHInLCBzdHIsIEV4cHJlc3Npb24sIHN0cl07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVGV4dCAgICAgICAgID0gaXM8VGV4dD4oJ3RleHQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzQXBwZW5kICAgICAgID0gaXM8QXBwZW5kPignYXBwZW5kJyk7XG4gIGV4cG9ydCBjb25zdCBpc0NvbW1lbnQgICAgICA9IGlzPENvbW1lbnQ+KCdjb21tZW50Jyk7XG4gIGV4cG9ydCBjb25zdCBpc01vZGlmaWVyICAgICA9IGlzPE1vZGlmaWVyPignbW9kaWZpZXInKTtcbiAgZXhwb3J0IGNvbnN0IGlzQmxvY2sgICAgICAgID0gaXM8QmxvY2s+KCdibG9jaycpO1xuICBleHBvcnQgY29uc3QgaXNPcGVuRWxlbWVudCAgPSBpczxPcGVuRWxlbWVudD4oJ29wZW4tZWxlbWVudCcpO1xuICBleHBvcnQgY29uc3QgaXNGbHVzaEVsZW1lbnQgPSBpczxGbHVzaEVsZW1lbnQ+KCdmbHVzaC1lbGVtZW50Jyk7XG4gIGV4cG9ydCBjb25zdCBpc0Nsb3NlRWxlbWVudCA9IGlzPENsb3NlRWxlbWVudD4oJ2Nsb3NlLWVsZW1lbnQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzU3RhdGljQXR0ciAgID0gaXM8U3RhdGljQXR0cj4oJ3N0YXRpYy1hdHRyJyk7XG4gIGV4cG9ydCBjb25zdCBpc0R5bmFtaWNBdHRyICA9IGlzPER5bmFtaWNBdHRyPignZHluYW1pYy1hdHRyJyk7XG4gIGV4cG9ydCBjb25zdCBpc1lpZWxkICAgICAgICA9IGlzPFlpZWxkPigneWllbGQnKTtcbiAgZXhwb3J0IGNvbnN0IGlzRHluYW1pY0FyZyAgID0gaXM8RHluYW1pY0FyZz4oJ2R5bmFtaWMtYXJnJyk7XG4gIGV4cG9ydCBjb25zdCBpc1N0YXRpY0FyZyAgICA9IGlzPFN0YXRpY0FyZz4oJ3N0YXRpYy1hcmcnKTtcbiAgZXhwb3J0IGNvbnN0IGlzVHJ1c3RpbmdBdHRyID0gaXM8VHJ1c3RpbmdBdHRyPigndHJ1c3RpbmctYXR0cicpO1xuXG4gIGV4cG9ydCB0eXBlIFN0YXRlbWVudCA9XG4gICAgICBUZXh0XG4gICAgfCBBcHBlbmRcbiAgICB8IENvbW1lbnRcbiAgICB8IE1vZGlmaWVyXG4gICAgfCBCbG9ja1xuICAgIHwgT3BlbkVsZW1lbnRcbiAgICB8IEZsdXNoRWxlbWVudFxuICAgIHwgQ2xvc2VFbGVtZW50XG4gICAgfCBTdGF0aWNBdHRyXG4gICAgfCBEeW5hbWljQXR0clxuICAgIHwgWWllbGRcbiAgICB8IFN0YXRpY0FyZ1xuICAgIHwgRHluYW1pY0FyZ1xuICAgIHwgVHJ1c3RpbmdBdHRyXG4gICAgO1xufVxuXG5leHBvcnQgdHlwZSBTdGF0ZW1lbnQgPSBTdGF0ZW1lbnRzLlN0YXRlbWVudDtcblxuLyoqXG4gKiBBIEpTT04gb2JqZWN0IG9mIHN0YXRpYyBjb21waWxlIHRpbWUgbWV0YSBmb3IgdGhlIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlTWV0YSB7XG4gIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBKU09OIG9iamVjdCB0aGF0IHRoZSBCbG9jayB3YXMgc2VyaWFsaXplZCBpbnRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRCbG9jayB7XG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudHMuU3RhdGVtZW50W107XG4gIGxvY2Fsczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBKU09OIG9iamVjdCB0aGF0IHRoZSBjb21waWxlZCBUZW1wbGF0ZUJsb2NrIHdhcyBzZXJpYWxpemVkIGludG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBTZXJpYWxpemVkQmxvY2sge1xuICBuYW1lZDogc3RyaW5nW107XG4gIHlpZWxkczogc3RyaW5nW107XG4gIGJsb2NrczogU2VyaWFsaXplZEJsb2NrW107XG59XG5cbi8qKlxuICogQSBKU09OIG9iamVjdCB0aGF0IHRoZSBjb21waWxlZCBUZW1wbGF0ZSB3YXMgc2VyaWFsaXplZCBpbnRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRUZW1wbGF0ZTxUIGV4dGVuZHMgVGVtcGxhdGVNZXRhPiB7XG4gIGJsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaztcbiAgbWV0YTogVDtcbn1cblxuLyoqXG4gKiBBIHN0cmluZyBvZiBKU09OIGNvbnRhaW5pbmcgYSBTZXJpYWxpemVkVGVtcGxhdGVCbG9ja1xuICogQHR5cGVkZWYge3N0cmluZ30gU2VyaWFsaXplZFRlbXBsYXRlQmxvY2tKU09OXG4gKi9cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrSlNPTiA9IHN0cmluZztcblxuLyoqXG4gKiBBIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIGFzIEpTT04gYW5kIFRlbXBsYXRlTWV0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGJsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9ja0pTT047XG4gIG1ldGE6IFQ7XG59XG5cbi8qKlxuICogQSBzdHJpbmcgb2YgSmF2YXNjcmlwdCBjb250YWluaW5nIGEgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayB0byBiZVxuICogY29uY2F0ZW5hdGVkIGludG8gYSBKYXZhc2NyaXB0IG1vZHVsZS5cbiAqIEB0eXBlZGVmIHtzdHJpbmd9IFRlbXBsYXRlSmF2YXNjcmlwdFxuICovXG5leHBvcnQgdHlwZSBUZW1wbGF0ZUphdmFzY3JpcHQgPSBzdHJpbmc7XG4iXX0= enifed('handlebars/compiler/ast', ['exports'], function (exports) { 'use strict'; var AST = { Program: function (statements, blockParams, strip, locInfo) {