{"version":3,"sources":["webpack:///./node_modules/aurelia-testing/dist/native-modules/wait.js","webpack:///./node_modules/aurelia-testing/dist/native-modules/component-tester.js","webpack:///./node_modules/aurelia-testing/dist/native-modules/aurelia-testing.js","webpack:///./node_modules/aurelia-testing/dist/native-modules/compile-spy.js","webpack:///./node_modules/aurelia-testing/dist/native-modules/view-spy.js","webpack:///./node_modules/aurelia-templating/dist/native-modules/aurelia-templating.js"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","waitFor","getter","options","present","interval","timeout","timedOut","Promise","race","_","rj","setTimeout","Error","wait","element","found","NodeList","jquery","resolve","rs","then","waitForDocumentElement","selector","document","querySelector","waitForDocumentElements","querySelectorAll","StageComponent","withResources","resources","ComponentTester","this","configure","aurelia","use","standardConfiguration","bootstrap","inView","html","boundTo","bindingContext","manuallyHandleLifecycle","_prepareLifecycle","create","_this","globalResources","start","host","createElement","innerHTML","body","appendChild","enhance","rootView","root","firstElementChild","controllers","viewModel","dispose","undefined","detached","unbind","parentNode","removeChild","bindPrototype","bind","attachedPrototype","attached","waitForElement","waitForElements","config","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","CompileSpy","instruction","info","toString","Element","ViewSpy","logger","_log","lifecycleName","context","value","indexOf","view","created","ElementEvents","subscriptions","_enqueueHandler","handler","eventName","push","_dequeueHandler","index","splice","publish","detail","bubbles","cancelable","event","createCustomEvent","dispatchEvent","subscribe","captureOrOptions","defaultListenerOptions","EventHandlerImpl","subscribeOnce","subscription","pop","disposeAll","owner","once","capture","addEventListener","handleEvent","e","fn","removeEventListener","ResourceLoadContext","dependencies","addDependency","url","hasDependency","ViewCompileInstruction","targetShadowDOM","compileSurrogate","associatedModuleId","normal","BehaviorInstruction","unitTest","type","attributes","node","anchorIsContainer","hasAttribute","containerless","initiatedByBehavior","attribute","attrName","dynamic","viewFactory","inheritBindingContext","biProto","partReplacements","originalAttrName","skipContentProcessing","contentFactory","TargetInstruction","shadowSlot","parentInjectorId","contentExpression","expression","letElement","expressions","lifting","liftingInstruction","noExpressions","behaviorInstructions","providers","injectorId","elementInstruction","surrogate","values","freeze","tiProto","slotName","slotFallbackFactory","capitalMatcher","addHyphenAndLower","char","toLowerCase","_hyphenate","name","charAt","slice","replace","_isAllWhitespace","auInterpolationTarget","test","textContent","BehaviorPropertyObserver","taskQueue","obj","propertyName","selfSubscriber","initialValue","notqueued","publishing","currentValue","oldValue","getValue","setValue","newValue","is","flushing","queueMicroTask","callSubscribers","callable","addSubscriber","unsubscribe","removeSubscriber","getObserver","instance","lookup","__observers__","ctor","getPrototypeOf","constructor","behavior","get","resource","isInitialized","initialize","observerLocator","getOrCreateObserversLookup","_ensurePropertiesDefined","BindableProperty","nameOrConfig","defaultBindingMode","oneWay","changeHandler","descriptor","registerWith","properties","_configureDescriptor","configurable","enumerable","defaultValue","initializer","writable","set","defineOn","handlerName","createObserver","changeHandlerName","hasOptions","propertyChanged","concat","_initialize","observerLookup","behaviorHandlesBind","boundProperties","observer","isDynamic","_createDynamicProperty","binding","createBinding","ViewLocator","getViewStrategy","origin_1","RelativeViewStrategy","viewStrategy","assert","moduleId","makeRelativeTo","validate","$view","NoViewStrategy","StaticViewStrategy","define","viewStrategyMetadataKey","origin","strategy","createFallbackViewStrategy","ConventionalViewStrategy","convertOriginToViewUrl","endsWith","substring","mi","BindingLanguage","inspectAttribute","elementName","attrValue","createAttributeInstruction","existingInstruction","createLetExpressions","inspectTextContent","noNodes","SlotCustomAttribute","auSlotAttribute","inject","valueChanged","PassThroughSlot","anchor","destinationName","fallbackFactory","viewSlot","destinationSlot","projections","contentView","renderFallbackContent","nodes","projectionSource","ownerView","container","overrideContext","slots","ShadowDOM","distributeView","passThroughTo","addNode","removeNodes","removeView","needsFallbackRendering","removeAll","projectFrom","ShadowSlot","isContentProjectionSource","children","projectFromAnchors","destinationSlots","destination","$node","distributeNodes","auOwnerView","auProjectionSource","auAssignedSlot","_findAnchor","insertBefore","undistributeView","hasSlots","find","x","auSlotProjectFrom","auProjectionChildren","ownChildren","ii","child","fragment","idx","undistributeAll","viewIndex","lastView","current","projectTo","createComment","parent","insertNodesBefore","slot","fallbackSlots","getSlotName","defaultSlotKey","destinationOverride","childNodes","Array","currentNode","nodeType","CompositionTransactionNotifier","_compositionCount","done","_tryCompleteTransaction","CompositionTransactionOwnershipToken","_ownershipToken","thenable","_createThenable","waitForCompositionComplete","_resolveCallback","CompositionTransaction","tryCapture","enlist","token","View","bindings","firstChild","lastChild","fromCache","isBound","isAttached","controller","viewModelScope","animatableElement","_isUserControlled","returnToCache","returnViewToCache","_systemUpdate","_invokeHook","addBinding","refNode","appendNodesTo","next","end","nextSibling","Animator","enter","leave","removeClass","className","classList","remove","addClass","add","animate","runSequence","animations","registerEffect","effectName","unregisterEffect","ViewSlot","animator","contentSelectors","animateView","direction","contains","getAnimatableElement","transformChildNodesIntoView","last","insert","move","sourceIndex","targetIndex","skipAnimation","removeAt","removeMany","viewsToRemove","rmPromises","forEach","animation","removeAction","all","projectToSlots","_projectionAdd","_projectionInsert","_projectionMove","_projectionRemove","_projectionRemoveAt","_projectionRemoveMany","_projectionRemoveAll","$resolver","providerResolverInstance","ProviderResolver","id","__providerId__","invoke","elementContainerGet","BoundViewFactory","boundViewFactory","factory","part","elementEvents","compositionTransaction","ViewResources","viewResources","superGet","_element","getAttribute","setAttribute","applyInstructions","containers","shadowSlots","elementContainer","commentAnchor","slotDestination","replaceNode","tagName","contentElement","makeElementIntoAnchor","createChild","_resolvers","createElementContainer","styleStringToObject","style","firstIndexOfColon","split","trim","styleObjectToString","result","parentContainer","factoryCreateInstruction","isCaching","setCacheSize","size","doNotOverrideIfAlreadySet","getCachedView","ViewFactory","template","instructions","cacheSize","cache","Number","MAX_VALUE","parseInt","createInstruction","cachedView","instructable","cloneNode","instructables","surrogateInstruction","currentAttributeValue","styleObject","applySurrogateInstruction","nextInjectorId","lastAUTargetID","makeIntoInstructionTarget","auTargetID","defaultLetHandler","ViewCompiler","bindingLanguage","compile","source","compileInstruction","content","createTemplateFromMarkup","adoptNode","shadowDOM","_compileNode","targetId","ins","_compileSurrogate","targetLightDOM","_compileElement","getBindingLanguage","wholeText","marker","currentChild","knownAttribute","property","attr","hasValues","mapAttribute","command","primaryProperty","alteredAttr","discrete","_configureProperties","liftsContent","attrToRemove","removeAttribute","elementProperty","compiler","auShadowSlot","createDocumentFragment","makeShadowSlot","namespaceURI","getElement","processAttributes","targetProperty","ViewEngineHooksResource","register","registry","registerViewEngineHooks","load","convention","viewEngineHooks","deco","ResourceModule","moduleInstance","mainResource","onLoaded","loadContext","vs","metadata","main","loads","ResourceDescription","exportedValue","resourceTypeMeta","HtmlBehaviorResource","attributeName","ModuleAnalyzer","getAnalysis","analyze","mainResourceKey","fallbackValue","fallbackKey","conventional","resourceModule","decorates","TemplateRegistryViewStrategy","ProxyViewFactory","promise","auSlotBehavior","ViewEngine","loader","viewCompiler","moduleAnalyzer","appResources","_pluginMap","addResourcePlugin","extension","implementation","addPlugin","loadViewFactory","urlOrRegistryEntry","loadTemplate","ensureRegistryEntry","registryEntry","address","onReady","loadTemplateResources","importIds","names","map","src","debug","viewModelRequires","viewModelRequireMetadataKey","templateImportCount","req","importId","as","importViewResources","importViewModelResource","moduleImport","moduleMember","loadModule","viewModelModule","normalizedId","moduleIds","_applyLoaderPlugin","loadAllModules","imports","analysis","associatedModule","allAnalysis","lastIndexOf","ext","pluginName","applyPluginToUrl","Controller","scope","handlesBind","owningView","handlesCreated","automate","skipSelfSubscriber","__parentOverrideContext","parentOverrideContext","handlesUnbind","handlesAttached","handlesDetached","lastProviderId","doProcessContent","doProcessAttributes","attributeDefaultBindingMode","shadowDOMOptions","processContent","usesShadowDOM","childBindings","hasDynamicOptions","existing","addChildBinding","proto","htmlName","_copyInheritedProperties","registerAttribute","isArray","aliases","alias","registerElement","transientView","hasChildNodes","toReplace","removeNode","viewHost","au","attachShadow","registerInstance","boundary","__propertiesDefined__","derived","getOwn","_loop_1","prop","this_1","some","validateBehaviorName","newName","warn","viewUrl","hasParent","lookupFunctions","valueConverters","getValueConverter","bindingBehaviors","getBindingBehavior","elements","attributeMap","beforeCompile","afterCompile","beforeCreate","afterCreate","beforeBind","beforeUnbind","$resource","resourceType","name_1","templateController","bindables","currentProps","newProp","existed","j","jj","_tryAddHook","func","counter","callbackName","one","two","three","four","hooks","bindingLanguageFallback","patchInParent","newParent","originalParent","relativeToView","path","registerValueConverter","valueConverter","registerBindingBehavior","bindingBehavior","registerValue","autoRegister","impl","compose","noop","absolutePath","viewEngine","file","viewLocator","dependencyBaseUrl","entry","factoryIsReady","templateIsLoaded","from","InlineViewStrategy","markup","$deps","deps","elDeps","_i","dependencies_1","dep","exported","el","previous","SwapStrategies","before","callback","with","after","tryActivateViewModel","skipActivation","activate","model","CompositionEngine","_swap","swapStrategy","swapOrder","previousViews","currentController","compositionTransactionNotifier","_createControllerAndSwap","createController","compositionTransactionOwnershipToken","childContainer","viewModelResource","m","ensureViewModel","isClass","getOrCreateOwn","transaction","createChildObserverDecorator","selectorOrConfig","actualTarget","ChildObserver","ChildObserverBinder","noMutations","trackMutation","groupedMutations","binder","record","mutations","onChildChange","binders","bindersLength","Map","added","addedNodes","removed","removedNodes","k","onRemove","onAdd","mutationRecords","matches","assignedSlot","anchors","__childObserver__","createMutationObserver","childList","subtree","observe","items","nextElementSibling","prev","previousElementSibling","childObserver","disconnect","ElementConfigResource","registerElementConfig","instanceOrConfig","customElement","customAttribute","bindable","nameOrConfigOrTarget","key2","descriptor2","defaultShadowDOMOptions","mode","useShadowDOM","targetOrOptions","doNotProcessContent","processor","error","useViewStrategy","useView","inlineView","noView","targetOrDependencies","TemplatingEngine","compositionEngine","_container","_moduleAnalyzer","_viewCompiler","_compositionEngine","configureAnimator","unregister","compilerInstructions","letExpressions"],"mappings":"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","file":"vendors~43a9a3dd.ca099f83dcf188548544.chunk.js","sourcesContent":["var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\n/**\n * Generic function to wait for something to happen. Uses polling\n * @param getter: a getter function that returns anything else than `null` or an\n *                empty array or an empty jQuery object when the\n *                condition is met\n * @param options: lookup options, defaults to\n *                 `{present: true, interval: 50, timeout: 5000}`\n */\nexport function waitFor(getter, options) {\n    if (options === void 0) { options = { present: true, interval: 50, timeout: 5000 }; }\n    // prevents infinite recursion if the request times out\n    var timedOut = false;\n    options = __assign({ present: true, interval: 50, timeout: 5000 }, options);\n    function wait() {\n        var element = getter();\n        // boolean is needed here, hence the length > 0\n        var found = element !== null && (!(element instanceof NodeList) &&\n            !element.jquery || element.length > 0);\n        if (!options.present === !found || timedOut) {\n            return Promise.resolve(element);\n        }\n        return new Promise(function (rs) { return setTimeout(rs, options.interval); }).then(wait);\n    }\n    return Promise.race([\n        new Promise(function (_, rj) { return setTimeout(function () {\n            timedOut = true;\n            rj(new Error(options.present ? 'Element not found' : 'Element not removed'));\n        }, options.timeout); }),\n        wait()\n    ]);\n}\nexport function waitForDocumentElement(selector, options) {\n    return waitFor(function () { return document.querySelector(selector); }, options);\n}\nexport function waitForDocumentElements(selector, options) {\n    return waitFor(function () { return document.querySelectorAll(selector); }, options);\n}\n","import { View } from 'aurelia-templating';\nimport { waitFor } from './wait';\nvar StageComponent = /** @class */ (function () {\n    function StageComponent() {\n    }\n    StageComponent.withResources = function (resources) {\n        if (resources === void 0) { resources = []; }\n        return new ComponentTester().withResources(resources);\n    };\n    return StageComponent;\n}());\nexport { StageComponent };\nvar ComponentTester = /** @class */ (function () {\n    function ComponentTester() {\n        this.resources = [];\n    }\n    ComponentTester.prototype.configure = function (aurelia) {\n        return aurelia.use.standardConfiguration();\n    };\n    ComponentTester.prototype.bootstrap = function (configure) {\n        this.configure = configure;\n    };\n    ComponentTester.prototype.withResources = function (resources) {\n        this.resources = resources;\n        return this;\n    };\n    ComponentTester.prototype.inView = function (html) {\n        this.html = html;\n        return this;\n    };\n    ComponentTester.prototype.boundTo = function (bindingContext) {\n        this.bindingContext = bindingContext;\n        return this;\n    };\n    ComponentTester.prototype.manuallyHandleLifecycle = function () {\n        this._prepareLifecycle();\n        return this;\n    };\n    ComponentTester.prototype.create = function (bootstrap) {\n        var _this = this;\n        return bootstrap(function (aurelia) {\n            return Promise.resolve(_this.configure(aurelia)).then(function () {\n                if (_this.resources) {\n                    aurelia.use.globalResources(_this.resources);\n                }\n                return aurelia.start().then(function () {\n                    _this.host = document.createElement('div');\n                    _this.host.innerHTML = _this.html;\n                    document.body.appendChild(_this.host);\n                    return aurelia.enhance(_this.bindingContext, _this.host).then(function () {\n                        _this.rootView = aurelia.root;\n                        _this.element = _this.host.firstElementChild;\n                        if (aurelia.root.controllers.length) {\n                            _this.viewModel = aurelia.root.controllers[0].viewModel;\n                        }\n                        return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\n                    });\n                });\n            });\n        });\n    };\n    ComponentTester.prototype.dispose = function () {\n        if (this.host === undefined || this.rootView === undefined) {\n            throw new Error('Cannot call ComponentTester.dispose() before ComponentTester.create()');\n        }\n        this.rootView.detached();\n        this.rootView.unbind();\n        return this.host.parentNode.removeChild(this.host);\n    };\n    ComponentTester.prototype._prepareLifecycle = function () {\n        var _this = this;\n        // bind\n        var bindPrototype = View.prototype.bind;\n        // tslint:disable-next-line:no-empty\n        View.prototype.bind = function () { };\n        this.bind = function (bindingContext) { return new Promise(function (resolve) {\n            View.prototype.bind = bindPrototype;\n            if (bindingContext !== undefined) {\n                _this.bindingContext = bindingContext;\n            }\n            _this.rootView.bind(_this.bindingContext);\n            setTimeout(function () { return resolve(); }, 0);\n        }); };\n        // attached\n        var attachedPrototype = View.prototype.attached;\n        // tslint:disable-next-line:no-empty\n        View.prototype.attached = function () { };\n        this.attached = function () { return new Promise(function (resolve) {\n            View.prototype.attached = attachedPrototype;\n            _this.rootView.attached();\n            setTimeout(function () { return resolve(); }, 0);\n        }); };\n        // detached\n        this.detached = function () { return new Promise(function (resolve) {\n            _this.rootView.detached();\n            setTimeout(function () { return resolve(); }, 0);\n        }); };\n        // unbind\n        this.unbind = function () { return new Promise(function (resolve) {\n            _this.rootView.unbind();\n            setTimeout(function () { return resolve(); }, 0);\n        }); };\n    };\n    ComponentTester.prototype.waitForElement = function (selector, options) {\n        var _this = this;\n        return waitFor(function () { return _this.element.querySelector(selector); }, options);\n    };\n    ComponentTester.prototype.waitForElements = function (selector, options) {\n        var _this = this;\n        return waitFor(function () { return _this.element.querySelectorAll(selector); }, options);\n    };\n    return ComponentTester;\n}());\nexport { ComponentTester };\n","export * from './compile-spy';\nexport * from './view-spy';\nexport * from './component-tester';\nexport * from './wait';\nexport function configure(config) {\n    config.globalResources([\n        './compile-spy',\n        './view-spy'\n    ]);\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { customAttribute, TargetInstruction } from 'aurelia-templating';\nimport { inject } from 'aurelia-dependency-injection';\nimport { getLogger } from 'aurelia-logging';\nimport { DOM } from 'aurelia-pal';\n/**\n * Attribute to be placed on any element to have it emit the View Compiler's\n * TargetInstruction into the debug console, giving you insight into all the\n * parsed bindings, behaviors and event handers for the targeted element.\n */\nvar CompileSpy = /** @class */ (function () {\n    /**\n     * Creates and instanse of CompileSpy.\n     * @param element target element on where attribute is placed on.\n     * @param instruction instructions for how the target element should be enhanced.\n     */\n    function CompileSpy(element, instruction) {\n        getLogger('compile-spy').info(element.toString(), instruction);\n    }\n    CompileSpy = __decorate([\n        customAttribute('compile-spy'),\n        inject(DOM.Element, TargetInstruction)\n    ], CompileSpy);\n    return CompileSpy;\n}());\nexport { CompileSpy };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { customAttribute } from 'aurelia-templating';\nimport { getLogger } from 'aurelia-logging';\n/**\n * Attribute to be placed on any HTML element in a view to emit the View instance\n * to the debug console, giving you insight into the live View instance, including\n * all child views, live bindings, behaviors and more.\n */\nvar ViewSpy = /** @class */ (function () {\n    /**\n     * Creates a new instance of ViewSpy.\n     */\n    function ViewSpy() {\n        this.logger = getLogger('view-spy');\n    }\n    ViewSpy.prototype._log = function (lifecycleName, context) {\n        if (!this.value && lifecycleName === 'created') {\n            this.logger.info(lifecycleName, this.view);\n        }\n        else if (this.value && this.value.indexOf(lifecycleName) !== -1) {\n            this.logger.info(lifecycleName, this.view, context);\n        }\n    };\n    /**\n     * Invoked when the target view is created.\n     * @param view The target view.\n     */\n    ViewSpy.prototype.created = function (view) {\n        this.view = view;\n        this._log('created');\n    };\n    /**\n     * Invoked when the target view is bound.\n     * @param bindingContext The target view's binding context.\n     */\n    ViewSpy.prototype.bind = function (bindingContext) {\n        this._log('bind', bindingContext);\n    };\n    /**\n     * Invoked when the target element is attached to the DOM.\n     */\n    ViewSpy.prototype.attached = function () {\n        this._log('attached');\n    };\n    /**\n     * Invoked when the target element is detached from the DOM.\n     */\n    ViewSpy.prototype.detached = function () {\n        this._log('detached');\n    };\n    /**\n     * Invoked when the target element is unbound.\n     */\n    ViewSpy.prototype.unbind = function () {\n        this._log('unbind');\n    };\n    ViewSpy = __decorate([\n        customAttribute('view-spy')\n    ], ViewSpy);\n    return ViewSpy;\n}());\nexport { ViewSpy };\n","import { DOM, FEATURE, PLATFORM } from 'aurelia-pal';\nimport { TemplateRegistryEntry, Loader } from 'aurelia-loader';\nimport { metadata, Origin, protocol } from 'aurelia-metadata';\nimport { relativeToFile } from 'aurelia-path';\nimport * as LogManager from 'aurelia-logging';\nimport { subscriberCollection, bindingMode, createOverrideContext, ValueConverterResource, BindingBehaviorResource, ObserverLocator, camelCase, EventManager } from 'aurelia-binding';\nimport { Container, resolver, inject } from 'aurelia-dependency-injection';\nimport { TaskQueue } from 'aurelia-task-queue';\n\nvar ElementEvents = (function () {\r\n    function ElementEvents(element) {\r\n        this.element = element;\r\n        this.subscriptions = {};\r\n    }\r\n    ElementEvents.prototype._enqueueHandler = function (handler) {\r\n        this.subscriptions[handler.eventName] = this.subscriptions[handler.eventName] || [];\r\n        this.subscriptions[handler.eventName].push(handler);\r\n    };\r\n    ElementEvents.prototype._dequeueHandler = function (handler) {\r\n        var index;\r\n        var subscriptions = this.subscriptions[handler.eventName];\r\n        if (subscriptions) {\r\n            index = subscriptions.indexOf(handler);\r\n            if (index > -1) {\r\n                subscriptions.splice(index, 1);\r\n            }\r\n        }\r\n        return handler;\r\n    };\r\n    ElementEvents.prototype.publish = function (eventName, detail, bubbles, cancelable) {\r\n        if (detail === void 0) { detail = {}; }\r\n        if (bubbles === void 0) { bubbles = true; }\r\n        if (cancelable === void 0) { cancelable = true; }\r\n        var event = DOM.createCustomEvent(eventName, { cancelable: cancelable, bubbles: bubbles, detail: detail });\r\n        this.element.dispatchEvent(event);\r\n    };\r\n    ElementEvents.prototype.subscribe = function (eventName, handler, captureOrOptions) {\r\n        if (typeof handler === 'function') {\r\n            if (captureOrOptions === undefined) {\r\n                captureOrOptions = ElementEvents.defaultListenerOptions;\r\n            }\r\n            var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, false);\r\n            return eventHandler;\r\n        }\r\n        return undefined;\r\n    };\r\n    ElementEvents.prototype.subscribeOnce = function (eventName, handler, captureOrOptions) {\r\n        if (typeof handler === 'function') {\r\n            if (captureOrOptions === undefined) {\r\n                captureOrOptions = ElementEvents.defaultListenerOptions;\r\n            }\r\n            var eventHandler = new EventHandlerImpl(this, eventName, handler, captureOrOptions, true);\r\n            return eventHandler;\r\n        }\r\n        return undefined;\r\n    };\r\n    ElementEvents.prototype.dispose = function (eventName) {\r\n        if (eventName && typeof eventName === 'string') {\r\n            var subscriptions = this.subscriptions[eventName];\r\n            if (subscriptions) {\r\n                while (subscriptions.length) {\r\n                    var subscription = subscriptions.pop();\r\n                    if (subscription) {\r\n                        subscription.dispose();\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            this.disposeAll();\r\n        }\r\n    };\r\n    ElementEvents.prototype.disposeAll = function () {\r\n        for (var key in this.subscriptions) {\r\n            this.dispose(key);\r\n        }\r\n    };\r\n    ElementEvents.defaultListenerOptions = true;\r\n    return ElementEvents;\r\n}());\r\nvar EventHandlerImpl = (function () {\r\n    function EventHandlerImpl(owner, eventName, handler, captureOrOptions, once) {\r\n        this.owner = owner;\r\n        this.eventName = eventName;\r\n        this.handler = handler;\r\n        this.capture = typeof captureOrOptions === 'boolean' ? captureOrOptions : captureOrOptions.capture;\r\n        this.bubbles = !this.capture;\r\n        this.captureOrOptions = captureOrOptions;\r\n        this.once = once;\r\n        owner.element.addEventListener(eventName, this, captureOrOptions);\r\n        owner._enqueueHandler(this);\r\n    }\r\n    EventHandlerImpl.prototype.handleEvent = function (e) {\r\n        var fn = this.handler;\r\n        fn(e);\r\n        if (this.once) {\r\n            this.dispose();\r\n        }\r\n    };\r\n    EventHandlerImpl.prototype.dispose = function () {\r\n        this.owner.element.removeEventListener(this.eventName, this, this.captureOrOptions);\r\n        this.owner._dequeueHandler(this);\r\n        this.owner = this.handler = null;\r\n    };\r\n    return EventHandlerImpl;\r\n}());\n\nvar ResourceLoadContext = (function () {\r\n    function ResourceLoadContext() {\r\n        this.dependencies = {};\r\n    }\r\n    ResourceLoadContext.prototype.addDependency = function (url) {\r\n        this.dependencies[url] = true;\r\n    };\r\n    ResourceLoadContext.prototype.hasDependency = function (url) {\r\n        return url in this.dependencies;\r\n    };\r\n    return ResourceLoadContext;\r\n}());\r\nvar ViewCompileInstruction = (function () {\r\n    function ViewCompileInstruction(targetShadowDOM, compileSurrogate) {\r\n        if (targetShadowDOM === void 0) { targetShadowDOM = false; }\r\n        if (compileSurrogate === void 0) { compileSurrogate = false; }\r\n        this.targetShadowDOM = targetShadowDOM;\r\n        this.compileSurrogate = compileSurrogate;\r\n        this.associatedModuleId = null;\r\n    }\r\n    ViewCompileInstruction.normal = new ViewCompileInstruction();\r\n    return ViewCompileInstruction;\r\n}());\r\nvar BehaviorInstruction = (function () {\r\n    function BehaviorInstruction() {\r\n    }\r\n    BehaviorInstruction.enhance = function () {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.enhance = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.unitTest = function (type, attributes) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.type = type;\r\n        instruction.attributes = attributes || {};\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.element = function (node, type) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.type = type;\r\n        instruction.attributes = {};\r\n        instruction.anchorIsContainer = !(node.hasAttribute('containerless') || type.containerless);\r\n        instruction.initiatedByBehavior = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.attribute = function (attrName, type) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.attrName = attrName;\r\n        instruction.type = type || null;\r\n        instruction.attributes = {};\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.dynamic = function (host, viewModel, viewFactory) {\r\n        var instruction = new BehaviorInstruction();\r\n        instruction.host = host;\r\n        instruction.viewModel = viewModel;\r\n        instruction.viewFactory = viewFactory;\r\n        instruction.inheritBindingContext = true;\r\n        return instruction;\r\n    };\r\n    BehaviorInstruction.normal = new BehaviorInstruction();\r\n    return BehaviorInstruction;\r\n}());\r\nvar biProto = BehaviorInstruction.prototype;\r\nbiProto.initiatedByBehavior = false;\r\nbiProto.enhance = false;\r\nbiProto.partReplacements = null;\r\nbiProto.viewFactory = null;\r\nbiProto.originalAttrName = null;\r\nbiProto.skipContentProcessing = false;\r\nbiProto.contentFactory = null;\r\nbiProto.viewModel = null;\r\nbiProto.anchorIsContainer = false;\r\nbiProto.host = null;\r\nbiProto.attributes = null;\r\nbiProto.type = null;\r\nbiProto.attrName = null;\r\nbiProto.inheritBindingContext = false;\r\nvar TargetInstruction = (function () {\r\n    function TargetInstruction() {\r\n    }\r\n    TargetInstruction.shadowSlot = function (parentInjectorId) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.shadowSlot = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.contentExpression = function (expression) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.contentExpression = expression;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.letElement = function (expressions) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.expressions = expressions;\r\n        instruction.letElement = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.lifting = function (parentInjectorId, liftingInstruction) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.expressions = TargetInstruction.noExpressions;\r\n        instruction.behaviorInstructions = [liftingInstruction];\r\n        instruction.viewFactory = liftingInstruction.viewFactory;\r\n        instruction.providers = [liftingInstruction.type.target];\r\n        instruction.lifting = true;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.normal = function (injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.injectorId = injectorId;\r\n        instruction.parentInjectorId = parentInjectorId;\r\n        instruction.providers = providers;\r\n        instruction.behaviorInstructions = behaviorInstructions;\r\n        instruction.expressions = expressions;\r\n        instruction.anchorIsContainer = elementInstruction ? elementInstruction.anchorIsContainer : true;\r\n        instruction.elementInstruction = elementInstruction;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.surrogate = function (providers, behaviorInstructions, expressions, values) {\r\n        var instruction = new TargetInstruction();\r\n        instruction.expressions = expressions;\r\n        instruction.behaviorInstructions = behaviorInstructions;\r\n        instruction.providers = providers;\r\n        instruction.values = values;\r\n        return instruction;\r\n    };\r\n    TargetInstruction.noExpressions = Object.freeze([]);\r\n    return TargetInstruction;\r\n}());\r\nvar tiProto = TargetInstruction.prototype;\r\ntiProto.injectorId = null;\r\ntiProto.parentInjectorId = null;\r\ntiProto.shadowSlot = false;\r\ntiProto.slotName = null;\r\ntiProto.slotFallbackFactory = null;\r\ntiProto.contentExpression = null;\r\ntiProto.letElement = false;\r\ntiProto.expressions = null;\r\ntiProto.expressions = null;\r\ntiProto.providers = null;\r\ntiProto.viewFactory = null;\r\ntiProto.anchorIsContainer = false;\r\ntiProto.elementInstruction = null;\r\ntiProto.lifting = false;\r\ntiProto.values = null;\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar capitalMatcher = /([A-Z])/g;\r\nfunction addHyphenAndLower(char) {\r\n    return '-' + char.toLowerCase();\r\n}\r\nfunction _hyphenate(name) {\r\n    return (name.charAt(0).toLowerCase() + name.slice(1)).replace(capitalMatcher, addHyphenAndLower);\r\n}\r\nfunction _isAllWhitespace(node) {\r\n    return !(node.auInterpolationTarget || (/[^\\t\\n\\r ]/.test(node.textContent)));\r\n}\n\nvar BehaviorPropertyObserver = (function () {\r\n    function BehaviorPropertyObserver(taskQueue, obj, propertyName, selfSubscriber, initialValue) {\r\n        this.taskQueue = taskQueue;\r\n        this.obj = obj;\r\n        this.propertyName = propertyName;\r\n        this.notqueued = true;\r\n        this.publishing = false;\r\n        this.selfSubscriber = selfSubscriber;\r\n        this.currentValue = this.oldValue = initialValue;\r\n    }\r\n    BehaviorPropertyObserver.prototype.getValue = function () {\r\n        return this.currentValue;\r\n    };\r\n    BehaviorPropertyObserver.prototype.setValue = function (newValue) {\r\n        var oldValue = this.currentValue;\r\n        if (!Object.is(newValue, oldValue)) {\r\n            this.oldValue = oldValue;\r\n            this.currentValue = newValue;\r\n            if (this.publishing && this.notqueued) {\r\n                if (this.taskQueue.flushing) {\r\n                    this.call();\r\n                }\r\n                else {\r\n                    this.notqueued = false;\r\n                    this.taskQueue.queueMicroTask(this);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    BehaviorPropertyObserver.prototype.call = function () {\r\n        var oldValue = this.oldValue;\r\n        var newValue = this.currentValue;\r\n        this.notqueued = true;\r\n        if (Object.is(newValue, oldValue)) {\r\n            return;\r\n        }\r\n        if (this.selfSubscriber) {\r\n            this.selfSubscriber(newValue, oldValue);\r\n        }\r\n        this.callSubscribers(newValue, oldValue);\r\n        this.oldValue = newValue;\r\n    };\r\n    BehaviorPropertyObserver.prototype.callSubscribers = function (newValue, oldValue) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver.prototype.subscribe = function (context, callable) {\r\n        this.addSubscriber(context, callable);\r\n    };\r\n    BehaviorPropertyObserver.prototype.addSubscriber = function (context, callable) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver.prototype.unsubscribe = function (context, callable) {\r\n        this.removeSubscriber(context, callable);\r\n    };\r\n    BehaviorPropertyObserver.prototype.removeSubscriber = function (context, callable) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    BehaviorPropertyObserver = __decorate([\r\n        subscriberCollection()\r\n    ], BehaviorPropertyObserver);\r\n    return BehaviorPropertyObserver;\r\n}());\n\nfunction getObserver(instance, name) {\r\n    var lookup = instance.__observers__;\r\n    if (lookup === undefined) {\r\n        var ctor = Object.getPrototypeOf(instance).constructor;\r\n        var behavior = metadata.get(metadata.resource, ctor);\r\n        if (!behavior.isInitialized) {\r\n            behavior.initialize(Container.instance || new Container(), instance.constructor);\r\n        }\r\n        lookup = behavior.observerLocator.getOrCreateObserversLookup(instance);\r\n        behavior._ensurePropertiesDefined(instance, lookup);\r\n    }\r\n    return lookup[name];\r\n}\r\nvar BindableProperty = (function () {\r\n    function BindableProperty(nameOrConfig) {\r\n        if (typeof nameOrConfig === 'string') {\r\n            this.name = nameOrConfig;\r\n        }\r\n        else {\r\n            Object.assign(this, nameOrConfig);\r\n        }\r\n        this.attribute = this.attribute || _hyphenate(this.name);\r\n        var defaultBindingMode = this.defaultBindingMode;\r\n        if (defaultBindingMode === null || defaultBindingMode === undefined) {\r\n            this.defaultBindingMode = bindingMode.oneWay;\r\n        }\r\n        else if (typeof defaultBindingMode === 'string') {\r\n            this.defaultBindingMode = bindingMode[defaultBindingMode] || bindingMode.oneWay;\r\n        }\r\n        this.changeHandler = this.changeHandler || null;\r\n        this.owner = null;\r\n        this.descriptor = null;\r\n    }\r\n    BindableProperty.prototype.registerWith = function (target, behavior, descriptor) {\r\n        behavior.properties.push(this);\r\n        behavior.attributes[this.attribute] = this;\r\n        this.owner = behavior;\r\n        if (descriptor) {\r\n            this.descriptor = descriptor;\r\n            return this._configureDescriptor(descriptor);\r\n        }\r\n        return undefined;\r\n    };\r\n    BindableProperty.prototype._configureDescriptor = function (descriptor) {\r\n        var name = this.name;\r\n        descriptor.configurable = true;\r\n        descriptor.enumerable = true;\r\n        if ('initializer' in descriptor) {\r\n            this.defaultValue = descriptor.initializer;\r\n            delete descriptor.initializer;\r\n            delete descriptor.writable;\r\n        }\r\n        if ('value' in descriptor) {\r\n            this.defaultValue = descriptor.value;\r\n            delete descriptor.value;\r\n            delete descriptor.writable;\r\n        }\r\n        descriptor.get = function () {\r\n            return getObserver(this, name).getValue();\r\n        };\r\n        descriptor.set = function (value) {\r\n            getObserver(this, name).setValue(value);\r\n        };\r\n        descriptor.get.getObserver = function (obj) {\r\n            return getObserver(obj, name);\r\n        };\r\n        return descriptor;\r\n    };\r\n    BindableProperty.prototype.defineOn = function (target, behavior) {\r\n        var name = this.name;\r\n        var handlerName;\r\n        if (this.changeHandler === null) {\r\n            handlerName = name + 'Changed';\r\n            if (handlerName in target.prototype) {\r\n                this.changeHandler = handlerName;\r\n            }\r\n        }\r\n        if (this.descriptor === null) {\r\n            Object.defineProperty(target.prototype, name, this._configureDescriptor({}));\r\n        }\r\n    };\r\n    BindableProperty.prototype.createObserver = function (viewModel) {\r\n        var selfSubscriber = null;\r\n        var defaultValue = this.defaultValue;\r\n        var changeHandlerName = this.changeHandler;\r\n        var name = this.name;\r\n        var initialValue;\r\n        if (this.hasOptions) {\r\n            return undefined;\r\n        }\r\n        if (changeHandlerName in viewModel) {\r\n            if ('propertyChanged' in viewModel) {\r\n                selfSubscriber = function (newValue, oldValue) {\r\n                    viewModel[changeHandlerName](newValue, oldValue);\r\n                    viewModel.propertyChanged(name, newValue, oldValue);\r\n                };\r\n            }\r\n            else {\r\n                selfSubscriber = function (newValue, oldValue) { return viewModel[changeHandlerName](newValue, oldValue); };\r\n            }\r\n        }\r\n        else if ('propertyChanged' in viewModel) {\r\n            selfSubscriber = function (newValue, oldValue) { return viewModel.propertyChanged(name, newValue, oldValue); };\r\n        }\r\n        else if (changeHandlerName !== null) {\r\n            throw new Error(\"Change handler \".concat(changeHandlerName, \" was specified but not declared on the class.\"));\r\n        }\r\n        if (defaultValue !== undefined) {\r\n            initialValue = typeof defaultValue === 'function' ? defaultValue.call(viewModel) : defaultValue;\r\n        }\r\n        return new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, this.name, selfSubscriber, initialValue);\r\n    };\r\n    BindableProperty.prototype._initialize = function (viewModel, observerLookup, attributes, behaviorHandlesBind, boundProperties) {\r\n        var selfSubscriber;\r\n        var observer;\r\n        var attribute;\r\n        var defaultValue = this.defaultValue;\r\n        if (this.isDynamic) {\r\n            for (var key in attributes) {\r\n                this._createDynamicProperty(viewModel, observerLookup, behaviorHandlesBind, key, attributes[key], boundProperties);\r\n            }\r\n        }\r\n        else if (!this.hasOptions) {\r\n            observer = observerLookup[this.name];\r\n            if (attributes !== null) {\r\n                selfSubscriber = observer.selfSubscriber;\r\n                attribute = attributes[this.attribute];\r\n                if (behaviorHandlesBind) {\r\n                    observer.selfSubscriber = null;\r\n                }\r\n                if (typeof attribute === 'string') {\r\n                    viewModel[this.name] = attribute;\r\n                    observer.call();\r\n                }\r\n                else if (attribute) {\r\n                    boundProperties.push({ observer: observer, binding: attribute.createBinding(viewModel) });\r\n                }\r\n                else if (defaultValue !== undefined) {\r\n                    observer.call();\r\n                }\r\n                observer.selfSubscriber = selfSubscriber;\r\n            }\r\n            observer.publishing = true;\r\n        }\r\n    };\r\n    BindableProperty.prototype._createDynamicProperty = function (viewModel, observerLookup, behaviorHandlesBind, name, attribute, boundProperties) {\r\n        var changeHandlerName = name + 'Changed';\r\n        var selfSubscriber = null;\r\n        var observer;\r\n        var info;\r\n        if (changeHandlerName in viewModel) {\r\n            if ('propertyChanged' in viewModel) {\r\n                selfSubscriber = function (newValue, oldValue) {\r\n                    viewModel[changeHandlerName](newValue, oldValue);\r\n                    viewModel.propertyChanged(name, newValue, oldValue);\r\n                };\r\n            }\r\n            else {\r\n                selfSubscriber = function (newValue, oldValue) { return viewModel[changeHandlerName](newValue, oldValue); };\r\n            }\r\n        }\r\n        else if ('propertyChanged' in viewModel) {\r\n            selfSubscriber = function (newValue, oldValue) { return viewModel.propertyChanged(name, newValue, oldValue); };\r\n        }\r\n        observer = observerLookup[name] = new BehaviorPropertyObserver(this.owner.taskQueue, viewModel, name, selfSubscriber);\r\n        Object.defineProperty(viewModel, name, {\r\n            configurable: true,\r\n            enumerable: true,\r\n            get: observer.getValue.bind(observer),\r\n            set: observer.setValue.bind(observer)\r\n        });\r\n        if (behaviorHandlesBind) {\r\n            observer.selfSubscriber = null;\r\n        }\r\n        if (typeof attribute === 'string') {\r\n            viewModel[name] = attribute;\r\n            observer.call();\r\n        }\r\n        else if (attribute) {\r\n            info = { observer: observer, binding: attribute.createBinding(viewModel) };\r\n            boundProperties.push(info);\r\n        }\r\n        observer.publishing = true;\r\n        observer.selfSubscriber = selfSubscriber;\r\n    };\r\n    return BindableProperty;\r\n}());\n\nvar ViewLocator = (function () {\r\n    function ViewLocator() {\r\n    }\r\n    ViewLocator.prototype.getViewStrategy = function (value) {\r\n        if (!value) {\r\n            return null;\r\n        }\r\n        if (typeof value === 'object' && 'getViewStrategy' in value) {\r\n            var origin_1 = Origin.get(value.constructor);\r\n            value = value.getViewStrategy();\r\n            if (typeof value === 'string') {\r\n                value = new RelativeViewStrategy(value);\r\n            }\r\n            viewStrategy.assert(value);\r\n            if (origin_1.moduleId) {\r\n                value.makeRelativeTo(origin_1.moduleId);\r\n            }\r\n            return value;\r\n        }\r\n        if (typeof value === 'string') {\r\n            value = new RelativeViewStrategy(value);\r\n        }\r\n        if (viewStrategy.validate(value)) {\r\n            return value;\r\n        }\r\n        if (typeof value !== 'function') {\r\n            value = value.constructor;\r\n        }\r\n        if ('$view' in value) {\r\n            var c = value.$view;\r\n            var view = void 0;\r\n            c = typeof c === 'function' ? c.call(value) : c;\r\n            if (c === null) {\r\n                view = new NoViewStrategy();\r\n            }\r\n            else {\r\n                view = c instanceof StaticViewStrategy ? c : new StaticViewStrategy(c);\r\n            }\r\n            metadata.define(ViewLocator.viewStrategyMetadataKey, view, value);\r\n            return view;\r\n        }\r\n        var origin = Origin.get(value);\r\n        var strategy = metadata.get(ViewLocator.viewStrategyMetadataKey, value);\r\n        if (!strategy) {\r\n            if (!origin.moduleId) {\r\n                throw new Error('Cannot determine default view strategy for object.\\n' + value);\r\n            }\r\n            strategy = this.createFallbackViewStrategy(origin);\r\n        }\r\n        else if (origin.moduleId) {\r\n            strategy.moduleId = origin.moduleId;\r\n        }\r\n        return strategy;\r\n    };\r\n    ViewLocator.prototype.createFallbackViewStrategy = function (origin) {\r\n        return new ConventionalViewStrategy(this, origin);\r\n    };\r\n    ViewLocator.prototype.convertOriginToViewUrl = function (origin) {\r\n        var moduleId = origin.moduleId;\r\n        var id = (moduleId.endsWith('.js') || moduleId.endsWith('.ts')) ? moduleId.substring(0, moduleId.length - 3) : moduleId;\r\n        return id + '.html';\r\n    };\r\n    ViewLocator.viewStrategyMetadataKey = 'aurelia:view-strategy';\r\n    return ViewLocator;\r\n}());\n\nfunction mi(name) {\r\n    throw new Error(\"BindingLanguage must implement \".concat(name, \"().\"));\r\n}\r\nvar BindingLanguage = (function () {\r\n    function BindingLanguage() {\r\n    }\r\n    BindingLanguage.prototype.inspectAttribute = function (resources, elementName, attrName, attrValue) {\r\n        mi('inspectAttribute');\r\n    };\r\n    BindingLanguage.prototype.createAttributeInstruction = function (resources, element, info, existingInstruction, context) {\r\n        mi('createAttributeInstruction');\r\n    };\r\n    BindingLanguage.prototype.createLetExpressions = function (resources, element) {\r\n        mi('createLetExpressions');\r\n    };\r\n    BindingLanguage.prototype.inspectTextContent = function (resources, value) {\r\n        mi('inspectTextContent');\r\n    };\r\n    return BindingLanguage;\r\n}());\n\nvar noNodes = Object.freeze([]);\r\nvar SlotCustomAttribute = (function () {\r\n    function SlotCustomAttribute(element) {\r\n        this.element = element;\r\n        this.element.auSlotAttribute = this;\r\n    }\r\n    SlotCustomAttribute.inject = function () {\r\n        return [DOM.Element];\r\n    };\r\n    SlotCustomAttribute.prototype.valueChanged = function (newValue, oldValue) { };\r\n    return SlotCustomAttribute;\r\n}());\r\nvar PassThroughSlot = (function () {\r\n    function PassThroughSlot(anchor, name, destinationName, fallbackFactory) {\r\n        this.anchor = anchor;\r\n        this.anchor.viewSlot = this;\r\n        this.name = name;\r\n        this.destinationName = destinationName;\r\n        this.fallbackFactory = fallbackFactory;\r\n        this.destinationSlot = null;\r\n        this.projections = 0;\r\n        this.contentView = null;\r\n        var attr = new SlotCustomAttribute(this.anchor);\r\n        attr.value = this.destinationName;\r\n    }\r\n    Object.defineProperty(PassThroughSlot.prototype, \"needsFallbackRendering\", {\r\n        get: function () {\r\n            return this.fallbackFactory && this.projections === 0;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    PassThroughSlot.prototype.renderFallbackContent = function (view, nodes, projectionSource, index) {\r\n        if (this.contentView === null) {\r\n            this.contentView = this.fallbackFactory.create(this.ownerView.container);\r\n            this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\r\n            var slots = Object.create(null);\r\n            slots[this.destinationSlot.name] = this.destinationSlot;\r\n            ShadowDOM.distributeView(this.contentView, slots, projectionSource, index, this.destinationSlot.name);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.passThroughTo = function (destinationSlot) {\r\n        this.destinationSlot = destinationSlot;\r\n    };\r\n    PassThroughSlot.prototype.addNode = function (view, node, projectionSource, index) {\r\n        if (this.contentView !== null) {\r\n            this.contentView.removeNodes();\r\n            this.contentView.detached();\r\n            this.contentView.unbind();\r\n            this.contentView = null;\r\n        }\r\n        if (node.viewSlot instanceof PassThroughSlot) {\r\n            node.viewSlot.passThroughTo(this);\r\n            return;\r\n        }\r\n        this.projections++;\r\n        this.destinationSlot.addNode(view, node, projectionSource, index);\r\n    };\r\n    PassThroughSlot.prototype.removeView = function (view, projectionSource) {\r\n        this.projections--;\r\n        this.destinationSlot.removeView(view, projectionSource);\r\n        if (this.needsFallbackRendering) {\r\n            this.renderFallbackContent(null, noNodes, projectionSource);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.removeAll = function (projectionSource) {\r\n        this.projections = 0;\r\n        this.destinationSlot.removeAll(projectionSource);\r\n        if (this.needsFallbackRendering) {\r\n            this.renderFallbackContent(null, noNodes, projectionSource);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.projectFrom = function (view, projectionSource) {\r\n        this.destinationSlot.projectFrom(view, projectionSource);\r\n    };\r\n    PassThroughSlot.prototype.created = function (ownerView) {\r\n        this.ownerView = ownerView;\r\n    };\r\n    PassThroughSlot.prototype.bind = function (view) {\r\n        if (this.contentView) {\r\n            this.contentView.bind(view.bindingContext, view.overrideContext);\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.attached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.attached();\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.detached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.detached();\r\n        }\r\n    };\r\n    PassThroughSlot.prototype.unbind = function () {\r\n        if (this.contentView) {\r\n            this.contentView.unbind();\r\n        }\r\n    };\r\n    return PassThroughSlot;\r\n}());\r\nvar ShadowSlot = (function () {\r\n    function ShadowSlot(anchor, name, fallbackFactory) {\r\n        this.anchor = anchor;\r\n        this.anchor.isContentProjectionSource = true;\r\n        this.anchor.viewSlot = this;\r\n        this.name = name;\r\n        this.fallbackFactory = fallbackFactory;\r\n        this.contentView = null;\r\n        this.projections = 0;\r\n        this.children = [];\r\n        this.projectFromAnchors = null;\r\n        this.destinationSlots = null;\r\n    }\r\n    Object.defineProperty(ShadowSlot.prototype, \"needsFallbackRendering\", {\r\n        get: function () {\r\n            return this.fallbackFactory && this.projections === 0;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ShadowSlot.prototype.addNode = function (view, node, projectionSource, index, destination) {\r\n        var $node = node;\r\n        if (this.contentView !== null) {\r\n            this.contentView.removeNodes();\r\n            this.contentView.detached();\r\n            this.contentView.unbind();\r\n            this.contentView = null;\r\n        }\r\n        if ($node.viewSlot instanceof PassThroughSlot) {\r\n            $node.viewSlot.passThroughTo(this);\r\n            return;\r\n        }\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.distributeNodes(view, [$node], this.destinationSlots, this, index);\r\n        }\r\n        else {\r\n            $node.auOwnerView = view;\r\n            $node.auProjectionSource = projectionSource;\r\n            $node.auAssignedSlot = this;\r\n            var anchor = this._findAnchor(view, $node, projectionSource, index);\r\n            var parent_1 = anchor.parentNode;\r\n            parent_1.insertBefore($node, anchor);\r\n            this.children.push($node);\r\n            this.projections++;\r\n        }\r\n    };\r\n    ShadowSlot.prototype.removeView = function (view, projectionSource) {\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.undistributeView(view, this.destinationSlots, this);\r\n        }\r\n        else if (this.contentView && this.contentView.hasSlots) {\r\n            ShadowDOM.undistributeView(view, this.contentView.slots, projectionSource);\r\n        }\r\n        else {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                var children = found.auProjectionChildren;\r\n                var ownChildren = this.children;\r\n                for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    if (child.auOwnerView === view) {\r\n                        children.splice(i, 1);\r\n                        view.fragment.appendChild(child);\r\n                        i--;\r\n                        ii--;\r\n                        this.projections--;\r\n                        var idx = ownChildren.indexOf(child);\r\n                        if (idx > -1) {\r\n                            ownChildren.splice(idx, 1);\r\n                        }\r\n                    }\r\n                }\r\n                if (this.needsFallbackRendering) {\r\n                    this.renderFallbackContent(view, noNodes, projectionSource);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ShadowSlot.prototype.removeAll = function (projectionSource) {\r\n        if (this.destinationSlots !== null) {\r\n            ShadowDOM.undistributeAll(this.destinationSlots, this);\r\n        }\r\n        else if (this.contentView && this.contentView.hasSlots) {\r\n            ShadowDOM.undistributeAll(this.contentView.slots, projectionSource);\r\n        }\r\n        else {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                var children = found.auProjectionChildren;\r\n                var ownChildren = this.children;\r\n                for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    child.auOwnerView.fragment.appendChild(child);\r\n                    this.projections--;\r\n                    var idx = ownChildren.indexOf(child);\r\n                    if (idx > -1) {\r\n                        ownChildren.splice(idx, 1);\r\n                    }\r\n                }\r\n                found.auProjectionChildren = [];\r\n                if (this.needsFallbackRendering) {\r\n                    this.renderFallbackContent(null, noNodes, projectionSource);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ShadowSlot.prototype._findAnchor = function (view, node, projectionSource, index) {\r\n        if (projectionSource) {\r\n            var found = this.children.find(function (x) { return x.auSlotProjectFrom === projectionSource; });\r\n            if (found) {\r\n                if (index !== undefined) {\r\n                    var children = found.auProjectionChildren;\r\n                    var viewIndex = -1;\r\n                    var lastView = void 0;\r\n                    for (var i = 0, ii = children.length; i < ii; ++i) {\r\n                        var current = children[i];\r\n                        if (current.auOwnerView !== lastView) {\r\n                            viewIndex++;\r\n                            lastView = current.auOwnerView;\r\n                            if (viewIndex >= index && lastView !== view) {\r\n                                children.splice(i, 0, node);\r\n                                return current;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                found.auProjectionChildren.push(node);\r\n                return found;\r\n            }\r\n        }\r\n        return this.anchor;\r\n    };\r\n    ShadowSlot.prototype.projectTo = function (slots) {\r\n        this.destinationSlots = slots;\r\n    };\r\n    ShadowSlot.prototype.projectFrom = function (view, projectionSource) {\r\n        var anchor = DOM.createComment('anchor');\r\n        var parent = this.anchor.parentNode;\r\n        anchor.auSlotProjectFrom = projectionSource;\r\n        anchor.auOwnerView = view;\r\n        anchor.auProjectionChildren = [];\r\n        parent.insertBefore(anchor, this.anchor);\r\n        this.children.push(anchor);\r\n        if (this.projectFromAnchors === null) {\r\n            this.projectFromAnchors = [];\r\n        }\r\n        this.projectFromAnchors.push(anchor);\r\n    };\r\n    ShadowSlot.prototype.renderFallbackContent = function (view, nodes, projectionSource, index) {\r\n        if (this.contentView === null) {\r\n            this.contentView = this.fallbackFactory.create(this.ownerView.container);\r\n            this.contentView.bind(this.ownerView.bindingContext, this.ownerView.overrideContext);\r\n            this.contentView.insertNodesBefore(this.anchor);\r\n        }\r\n        if (this.contentView.hasSlots) {\r\n            var slots = this.contentView.slots;\r\n            var projectFromAnchors = this.projectFromAnchors;\r\n            if (projectFromAnchors !== null) {\r\n                for (var slotName in slots) {\r\n                    var slot = slots[slotName];\r\n                    for (var i = 0, ii = projectFromAnchors.length; i < ii; ++i) {\r\n                        var anchor = projectFromAnchors[i];\r\n                        slot.projectFrom(anchor.auOwnerView, anchor.auSlotProjectFrom);\r\n                    }\r\n                }\r\n            }\r\n            this.fallbackSlots = slots;\r\n            ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index);\r\n        }\r\n    };\r\n    ShadowSlot.prototype.created = function (ownerView) {\r\n        this.ownerView = ownerView;\r\n    };\r\n    ShadowSlot.prototype.bind = function (view) {\r\n        if (this.contentView) {\r\n            this.contentView.bind(view.bindingContext, view.overrideContext);\r\n        }\r\n    };\r\n    ShadowSlot.prototype.attached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.attached();\r\n        }\r\n    };\r\n    ShadowSlot.prototype.detached = function () {\r\n        if (this.contentView) {\r\n            this.contentView.detached();\r\n        }\r\n    };\r\n    ShadowSlot.prototype.unbind = function () {\r\n        if (this.contentView) {\r\n            this.contentView.unbind();\r\n        }\r\n    };\r\n    return ShadowSlot;\r\n}());\r\nvar ShadowDOM = (function () {\r\n    function ShadowDOM() {\r\n    }\r\n    ShadowDOM.getSlotName = function (node) {\r\n        if (node.auSlotAttribute === undefined) {\r\n            return ShadowDOM.defaultSlotKey;\r\n        }\r\n        return node.auSlotAttribute.value;\r\n    };\r\n    ShadowDOM.distributeView = function (view, slots, projectionSource, index, destinationOverride) {\r\n        var nodes;\r\n        if (view === null) {\r\n            nodes = noNodes;\r\n        }\r\n        else {\r\n            var childNodes = view.fragment.childNodes;\r\n            var ii = childNodes.length;\r\n            nodes = new Array(ii);\r\n            for (var i = 0; i < ii; ++i) {\r\n                nodes[i] = childNodes[i];\r\n            }\r\n        }\r\n        ShadowDOM.distributeNodes(view, nodes, slots, projectionSource, index, destinationOverride);\r\n    };\r\n    ShadowDOM.undistributeView = function (view, slots, projectionSource) {\r\n        for (var slotName in slots) {\r\n            slots[slotName].removeView(view, projectionSource);\r\n        }\r\n    };\r\n    ShadowDOM.undistributeAll = function (slots, projectionSource) {\r\n        for (var slotName in slots) {\r\n            slots[slotName].removeAll(projectionSource);\r\n        }\r\n    };\r\n    ShadowDOM.distributeNodes = function (view, nodes, slots, projectionSource, index, destinationOverride) {\r\n        for (var i = 0, ii = nodes.length; i < ii; ++i) {\r\n            var currentNode = nodes[i];\r\n            var nodeType = currentNode.nodeType;\r\n            if (currentNode.isContentProjectionSource) {\r\n                currentNode.viewSlot.projectTo(slots);\r\n                for (var slotName in slots) {\r\n                    slots[slotName].projectFrom(view, currentNode.viewSlot);\r\n                }\r\n                nodes.splice(i, 1);\r\n                ii--;\r\n                i--;\r\n            }\r\n            else if (nodeType === 1 || nodeType === 3 || currentNode.viewSlot instanceof PassThroughSlot) {\r\n                if (nodeType === 3 && _isAllWhitespace(currentNode)) {\r\n                    nodes.splice(i, 1);\r\n                    ii--;\r\n                    i--;\r\n                }\r\n                else {\r\n                    var found = slots[destinationOverride || ShadowDOM.getSlotName(currentNode)];\r\n                    if (found) {\r\n                        found.addNode(view, currentNode, projectionSource, index);\r\n                        nodes.splice(i, 1);\r\n                        ii--;\r\n                        i--;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                nodes.splice(i, 1);\r\n                ii--;\r\n                i--;\r\n            }\r\n        }\r\n        for (var slotName in slots) {\r\n            var slot = slots[slotName];\r\n            if (slot.needsFallbackRendering) {\r\n                slot.renderFallbackContent(view, nodes, projectionSource, index);\r\n            }\r\n        }\r\n    };\r\n    ShadowDOM.defaultSlotKey = '__au-default-slot-key__';\r\n    return ShadowDOM;\r\n}());\n\nvar CompositionTransactionNotifier = (function () {\r\n    function CompositionTransactionNotifier(owner) {\r\n        this.owner = owner;\r\n        this.owner._compositionCount++;\r\n    }\r\n    CompositionTransactionNotifier.prototype.done = function () {\r\n        this.owner._compositionCount--;\r\n        this.owner._tryCompleteTransaction();\r\n    };\r\n    return CompositionTransactionNotifier;\r\n}());\r\nvar CompositionTransactionOwnershipToken = (function () {\r\n    function CompositionTransactionOwnershipToken(owner) {\r\n        this.owner = owner;\r\n        this.owner._ownershipToken = this;\r\n        this.thenable = this._createThenable();\r\n    }\r\n    CompositionTransactionOwnershipToken.prototype.waitForCompositionComplete = function () {\r\n        this.owner._tryCompleteTransaction();\r\n        return this.thenable;\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype.resolve = function () {\r\n        this._resolveCallback();\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype._resolveCallback = function () {\r\n        throw new Error(\"Method not implemented.\");\r\n    };\r\n    CompositionTransactionOwnershipToken.prototype._createThenable = function () {\r\n        var _this = this;\r\n        return new Promise(function (resolve) {\r\n            _this._resolveCallback = resolve;\r\n        });\r\n    };\r\n    return CompositionTransactionOwnershipToken;\r\n}());\r\nvar CompositionTransaction = (function () {\r\n    function CompositionTransaction() {\r\n        this._ownershipToken = null;\r\n        this._compositionCount = 0;\r\n    }\r\n    CompositionTransaction.prototype.tryCapture = function () {\r\n        return this._ownershipToken === null\r\n            ? new CompositionTransactionOwnershipToken(this)\r\n            : null;\r\n    };\r\n    CompositionTransaction.prototype.enlist = function () {\r\n        return new CompositionTransactionNotifier(this);\r\n    };\r\n    CompositionTransaction.prototype._tryCompleteTransaction = function () {\r\n        if (this._compositionCount <= 0) {\r\n            this._compositionCount = 0;\r\n            if (this._ownershipToken !== null) {\r\n                var token = this._ownershipToken;\r\n                this._ownershipToken = null;\r\n                token.resolve();\r\n            }\r\n        }\r\n    };\r\n    return CompositionTransaction;\r\n}());\n\nvar View = (function () {\r\n    function View(container, viewFactory, fragment, controllers, bindings, children, slots) {\r\n        this.container = container;\r\n        this.viewFactory = viewFactory;\r\n        this.resources = viewFactory.resources;\r\n        this.fragment = fragment;\r\n        this.firstChild = fragment.firstChild;\r\n        this.lastChild = fragment.lastChild;\r\n        this.controllers = controllers;\r\n        this.bindings = bindings;\r\n        this.children = children;\r\n        this.slots = slots;\r\n        this.hasSlots = false;\r\n        this.fromCache = false;\r\n        this.isBound = false;\r\n        this.isAttached = false;\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        this.controller = null;\r\n        this.viewModelScope = null;\r\n        this.animatableElement = undefined;\r\n        this._isUserControlled = false;\r\n        this.contentView = null;\r\n        for (var _ in slots) {\r\n            this.hasSlots = true;\r\n            break;\r\n        }\r\n    }\r\n    View.prototype.returnToCache = function () {\r\n        this.viewFactory.returnViewToCache(this);\r\n    };\r\n    View.prototype.created = function () {\r\n        var i;\r\n        var ii;\r\n        var controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].created(this);\r\n        }\r\n    };\r\n    View.prototype.bind = function (bindingContext, overrideContext, _systemUpdate) {\r\n        var controllers;\r\n        var bindings;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (_systemUpdate && this._isUserControlled) {\r\n            return;\r\n        }\r\n        if (this.isBound) {\r\n            if (this.bindingContext === bindingContext) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.bindingContext = bindingContext;\r\n        this.overrideContext = overrideContext || createOverrideContext(bindingContext);\r\n        this.resources._invokeHook('beforeBind', this);\r\n        bindings = this.bindings;\r\n        for (i = 0, ii = bindings.length; i < ii; ++i) {\r\n            bindings[i].bind(this);\r\n        }\r\n        if (this.viewModelScope !== null) {\r\n            bindingContext.bind(this.viewModelScope.bindingContext, this.viewModelScope.overrideContext);\r\n            this.viewModelScope = null;\r\n        }\r\n        controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].bind(this);\r\n        }\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].bind(bindingContext, overrideContext, true);\r\n        }\r\n        if (this.hasSlots) {\r\n            ShadowDOM.distributeView(this.contentView, this.slots);\r\n        }\r\n    };\r\n    View.prototype.addBinding = function (binding) {\r\n        this.bindings.push(binding);\r\n        if (this.isBound) {\r\n            binding.bind(this);\r\n        }\r\n    };\r\n    View.prototype.unbind = function () {\r\n        var controllers;\r\n        var bindings;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isBound) {\r\n            this.isBound = false;\r\n            this.resources._invokeHook('beforeUnbind', this);\r\n            if (this.controller !== null) {\r\n                this.controller.unbind();\r\n            }\r\n            bindings = this.bindings;\r\n            for (i = 0, ii = bindings.length; i < ii; ++i) {\r\n                bindings[i].unbind();\r\n            }\r\n            controllers = this.controllers;\r\n            for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n                controllers[i].unbind();\r\n            }\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].unbind();\r\n            }\r\n            this.bindingContext = null;\r\n            this.overrideContext = null;\r\n        }\r\n    };\r\n    View.prototype.insertNodesBefore = function (refNode) {\r\n        refNode.parentNode.insertBefore(this.fragment, refNode);\r\n    };\r\n    View.prototype.appendNodesTo = function (parent) {\r\n        parent.appendChild(this.fragment);\r\n    };\r\n    View.prototype.removeNodes = function () {\r\n        var fragment = this.fragment;\r\n        var current = this.firstChild;\r\n        var end = this.lastChild;\r\n        var next;\r\n        while (current) {\r\n            next = current.nextSibling;\r\n            fragment.appendChild(current);\r\n            if (current === end) {\r\n                break;\r\n            }\r\n            current = next;\r\n        }\r\n    };\r\n    View.prototype.attached = function () {\r\n        var controllers;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        if (this.controller !== null) {\r\n            this.controller.attached();\r\n        }\r\n        controllers = this.controllers;\r\n        for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n            controllers[i].attached();\r\n        }\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].attached();\r\n        }\r\n    };\r\n    View.prototype.detached = function () {\r\n        var controllers;\r\n        var children;\r\n        var i;\r\n        var ii;\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            if (this.controller !== null) {\r\n                this.controller.detached();\r\n            }\r\n            controllers = this.controllers;\r\n            for (i = 0, ii = controllers.length; i < ii; ++i) {\r\n                controllers[i].detached();\r\n            }\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n    };\r\n    return View;\r\n}());\n\nvar Animator = (function () {\r\n    function Animator() {\r\n    }\r\n    Animator.prototype.enter = function (element) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.leave = function (element) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.removeClass = function (element, className) {\r\n        element.classList.remove(className);\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.addClass = function (element, className) {\r\n        element.classList.add(className);\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.animate = function (element, className) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.runSequence = function (animations) {\r\n        return Promise.resolve(false);\r\n    };\r\n    Animator.prototype.registerEffect = function (effectName, properties) { };\r\n    Animator.prototype.unregisterEffect = function (effectName) { };\r\n    return Animator;\r\n}());\n\nfunction getAnimatableElement(view) {\r\n    if (view.animatableElement !== undefined) {\r\n        return view.animatableElement;\r\n    }\r\n    var current = view.firstChild;\r\n    while (current && current.nodeType !== 1) {\r\n        current = current.nextSibling;\r\n    }\r\n    if (current && current.nodeType === 1) {\r\n        return (view.animatableElement = current.classList.contains('au-animate') ? current : null);\r\n    }\r\n    return (view.animatableElement = null);\r\n}\r\nvar ViewSlot = (function () {\r\n    function ViewSlot(anchor, anchorIsContainer, animator) {\r\n        if (animator === void 0) { animator = Animator.instance; }\r\n        this.anchor = anchor;\r\n        this.anchorIsContainer = anchorIsContainer;\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        this.animator = animator;\r\n        this.children = [];\r\n        this.isBound = false;\r\n        this.isAttached = false;\r\n        this.contentSelectors = null;\r\n        anchor.viewSlot = this;\r\n        anchor.isContentProjectionSource = false;\r\n    }\r\n    ViewSlot.prototype.animateView = function (view, direction) {\r\n        if (direction === void 0) { direction = 'enter'; }\r\n        var animatableElement = getAnimatableElement(view);\r\n        if (animatableElement !== null) {\r\n            switch (direction) {\r\n                case 'enter':\r\n                    return this.animator.enter(animatableElement);\r\n                case 'leave':\r\n                    return this.animator.leave(animatableElement);\r\n                default:\r\n                    throw new Error('Invalid animation direction: ' + direction);\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.transformChildNodesIntoView = function () {\r\n        var parent = this.anchor;\r\n        this.children.push({\r\n            fragment: parent,\r\n            firstChild: parent.firstChild,\r\n            lastChild: parent.lastChild,\r\n            returnToCache: function () { },\r\n            removeNodes: function () {\r\n                var last;\r\n                while (last = parent.lastChild) {\r\n                    parent.removeChild(last);\r\n                }\r\n            },\r\n            created: function () { },\r\n            bind: function () { },\r\n            unbind: function () { },\r\n            attached: function () { },\r\n            detached: function () { }\r\n        });\r\n    };\r\n    ViewSlot.prototype.bind = function (bindingContext, overrideContext) {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        if (this.isBound) {\r\n            if (this.bindingContext === bindingContext) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.bindingContext = bindingContext = bindingContext || this.bindingContext;\r\n        this.overrideContext = overrideContext = overrideContext || this.overrideContext;\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            children[i].bind(bindingContext, overrideContext, true);\r\n        }\r\n    };\r\n    ViewSlot.prototype.unbind = function () {\r\n        if (this.isBound) {\r\n            var i = void 0;\r\n            var ii = void 0;\r\n            var children = this.children;\r\n            this.isBound = false;\r\n            this.bindingContext = null;\r\n            this.overrideContext = null;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].unbind();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.add = function (view) {\r\n        if (this.anchorIsContainer) {\r\n            view.appendNodesTo(this.anchor);\r\n        }\r\n        else {\r\n            view.insertNodesBefore(this.anchor);\r\n        }\r\n        this.children.push(view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n            return this.animateView(view, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.insert = function (index, view) {\r\n        var children = this.children;\r\n        var length = children.length;\r\n        if ((index === 0 && length === 0) || index >= length) {\r\n            return this.add(view);\r\n        }\r\n        view.insertNodesBefore(children[index].firstChild);\r\n        children.splice(index, 0, view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n            return this.animateView(view, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.move = function (sourceIndex, targetIndex) {\r\n        if (sourceIndex === targetIndex) {\r\n            return;\r\n        }\r\n        var children = this.children;\r\n        var view = children[sourceIndex];\r\n        view.removeNodes();\r\n        view.insertNodesBefore(children[targetIndex].firstChild);\r\n        children.splice(sourceIndex, 1);\r\n        children.splice(targetIndex, 0, view);\r\n    };\r\n    ViewSlot.prototype.remove = function (view, returnToCache, skipAnimation) {\r\n        return this.removeAt(this.children.indexOf(view), returnToCache, skipAnimation);\r\n    };\r\n    ViewSlot.prototype.removeMany = function (viewsToRemove, returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var children = this.children;\r\n        var ii = viewsToRemove.length;\r\n        var i;\r\n        var rmPromises = [];\r\n        viewsToRemove.forEach(function (child) {\r\n            if (skipAnimation) {\r\n                child.removeNodes();\r\n                return;\r\n            }\r\n            var animation = _this.animateView(child, 'leave');\r\n            if (animation) {\r\n                rmPromises.push(animation.then(function () { return child.removeNodes(); }));\r\n            }\r\n            else {\r\n                child.removeNodes();\r\n            }\r\n        });\r\n        var removeAction = function () {\r\n            if (_this.isAttached) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    viewsToRemove[i].detached();\r\n                }\r\n            }\r\n            if (returnToCache) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    viewsToRemove[i].returnToCache();\r\n                }\r\n            }\r\n            for (i = 0; i < ii; ++i) {\r\n                var index = children.indexOf(viewsToRemove[i]);\r\n                if (index >= 0) {\r\n                    children.splice(index, 1);\r\n                }\r\n            }\r\n        };\r\n        if (rmPromises.length > 0) {\r\n            return Promise.all(rmPromises).then(function () { return removeAction(); });\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.removeAt = function (index, returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var view = this.children[index];\r\n        var removeAction = function () {\r\n            index = _this.children.indexOf(view);\r\n            view.removeNodes();\r\n            _this.children.splice(index, 1);\r\n            if (_this.isAttached) {\r\n                view.detached();\r\n            }\r\n            if (returnToCache) {\r\n                view.returnToCache();\r\n            }\r\n            return view;\r\n        };\r\n        if (!skipAnimation) {\r\n            var animation = this.animateView(view, 'leave');\r\n            if (animation) {\r\n                return animation.then(function () { return removeAction(); });\r\n            }\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.removeAll = function (returnToCache, skipAnimation) {\r\n        var _this = this;\r\n        var children = this.children;\r\n        var ii = children.length;\r\n        var i;\r\n        var rmPromises = [];\r\n        children.forEach(function (child) {\r\n            if (skipAnimation) {\r\n                child.removeNodes();\r\n                return;\r\n            }\r\n            var animation = _this.animateView(child, 'leave');\r\n            if (animation) {\r\n                rmPromises.push(animation.then(function () { return child.removeNodes(); }));\r\n            }\r\n            else {\r\n                child.removeNodes();\r\n            }\r\n        });\r\n        var removeAction = function () {\r\n            if (_this.isAttached) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    children[i].detached();\r\n                }\r\n            }\r\n            if (returnToCache) {\r\n                for (i = 0; i < ii; ++i) {\r\n                    var child = children[i];\r\n                    if (child) {\r\n                        child.returnToCache();\r\n                    }\r\n                }\r\n            }\r\n            _this.children = [];\r\n        };\r\n        if (rmPromises.length > 0) {\r\n            return Promise.all(rmPromises).then(function () { return removeAction(); });\r\n        }\r\n        return removeAction();\r\n    };\r\n    ViewSlot.prototype.attached = function () {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        var child;\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        children = this.children;\r\n        for (i = 0, ii = children.length; i < ii; ++i) {\r\n            child = children[i];\r\n            child.attached();\r\n            this.animateView(child, 'enter');\r\n        }\r\n    };\r\n    ViewSlot.prototype.detached = function () {\r\n        var i;\r\n        var ii;\r\n        var children;\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            children = this.children;\r\n            for (i = 0, ii = children.length; i < ii; ++i) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype.projectTo = function (slots) {\r\n        var _this = this;\r\n        this.projectToSlots = slots;\r\n        this.add = this._projectionAdd;\r\n        this.insert = this._projectionInsert;\r\n        this.move = this._projectionMove;\r\n        this.remove = this._projectionRemove;\r\n        this.removeAt = this._projectionRemoveAt;\r\n        this.removeMany = this._projectionRemoveMany;\r\n        this.removeAll = this._projectionRemoveAll;\r\n        this.children.forEach(function (view) { return ShadowDOM.distributeView(view, slots, _this); });\r\n    };\r\n    ViewSlot.prototype._projectionAdd = function (view) {\r\n        ShadowDOM.distributeView(view, this.projectToSlots, this);\r\n        this.children.push(view);\r\n        if (this.isAttached) {\r\n            view.attached();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionInsert = function (index, view) {\r\n        if ((index === 0 && !this.children.length) || index >= this.children.length) {\r\n            this.add(view);\r\n        }\r\n        else {\r\n            ShadowDOM.distributeView(view, this.projectToSlots, this, index);\r\n            this.children.splice(index, 0, view);\r\n            if (this.isAttached) {\r\n                view.attached();\r\n            }\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionMove = function (sourceIndex, targetIndex) {\r\n        if (sourceIndex === targetIndex) {\r\n            return;\r\n        }\r\n        var children = this.children;\r\n        var view = children[sourceIndex];\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        ShadowDOM.distributeView(view, this.projectToSlots, this, targetIndex);\r\n        children.splice(sourceIndex, 1);\r\n        children.splice(targetIndex, 0, view);\r\n    };\r\n    ViewSlot.prototype._projectionRemove = function (view, returnToCache) {\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        this.children.splice(this.children.indexOf(view), 1);\r\n        if (this.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (returnToCache) {\r\n            view.returnToCache();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionRemoveAt = function (index, returnToCache) {\r\n        var view = this.children[index];\r\n        ShadowDOM.undistributeView(view, this.projectToSlots, this);\r\n        this.children.splice(index, 1);\r\n        if (this.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (returnToCache) {\r\n            view.returnToCache();\r\n        }\r\n    };\r\n    ViewSlot.prototype._projectionRemoveMany = function (viewsToRemove, returnToCache) {\r\n        var _this = this;\r\n        viewsToRemove.forEach(function (view) { return _this.remove(view, returnToCache); });\r\n    };\r\n    ViewSlot.prototype._projectionRemoveAll = function (returnToCache) {\r\n        ShadowDOM.undistributeAll(this.projectToSlots, this);\r\n        var children = this.children;\r\n        var ii = children.length;\r\n        for (var i = 0; i < ii; ++i) {\r\n            if (returnToCache) {\r\n                children[i].returnToCache();\r\n            }\r\n            else if (this.isAttached) {\r\n                children[i].detached();\r\n            }\r\n        }\r\n        this.children = [];\r\n    };\r\n    return ViewSlot;\r\n}());\n\nvar $resolver = resolver;\r\nvar ProviderResolver = (function () {\r\n    function ProviderResolver() {\r\n    }\r\n    ProviderResolver.prototype.get = function (container, key) {\r\n        var id = key.__providerId__;\r\n        return id in container ? container[id] : (container[id] = container.invoke(key));\r\n    };\r\n    ProviderResolver = __decorate([\r\n        $resolver\r\n    ], ProviderResolver);\r\n    return ProviderResolver;\r\n}());\r\nvar providerResolverInstance = new ProviderResolver();\r\nfunction elementContainerGet(key) {\r\n    if (key === DOM.Element) {\r\n        return this.element;\r\n    }\r\n    if (key === BoundViewFactory) {\r\n        if (this.boundViewFactory) {\r\n            return this.boundViewFactory;\r\n        }\r\n        var factory = this.instruction.viewFactory;\r\n        var partReplacements = this.partReplacements;\r\n        if (partReplacements) {\r\n            factory = partReplacements[factory.part] || factory;\r\n        }\r\n        this.boundViewFactory = new BoundViewFactory(this, factory, partReplacements);\r\n        return this.boundViewFactory;\r\n    }\r\n    if (key === ViewSlot) {\r\n        if (this.viewSlot === undefined) {\r\n            this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer);\r\n            this.element.isContentProjectionSource = this.instruction.lifting;\r\n            this.children.push(this.viewSlot);\r\n        }\r\n        return this.viewSlot;\r\n    }\r\n    if (key === ElementEvents) {\r\n        return this.elementEvents || (this.elementEvents = new ElementEvents(this.element));\r\n    }\r\n    if (key === CompositionTransaction) {\r\n        return this.compositionTransaction || (this.compositionTransaction = this.parent.get(key));\r\n    }\r\n    if (key === ViewResources) {\r\n        return this.viewResources;\r\n    }\r\n    if (key === TargetInstruction) {\r\n        return this.instruction;\r\n    }\r\n    return this.superGet(key);\r\n}\r\nfunction createElementContainer(parent, element, instruction, children, partReplacements, resources) {\r\n    var container = parent.createChild();\r\n    var providers;\r\n    var i;\r\n    container.element = element;\r\n    container.instruction = instruction;\r\n    container.children = children;\r\n    container.viewResources = resources;\r\n    container.partReplacements = partReplacements;\r\n    providers = instruction.providers;\r\n    i = providers.length;\r\n    while (i--) {\r\n        container._resolvers.set(providers[i], providerResolverInstance);\r\n    }\r\n    container.superGet = container.get;\r\n    container.get = elementContainerGet;\r\n    return container;\r\n}\r\nfunction hasAttribute(name) {\r\n    return this._element.hasAttribute(name);\r\n}\r\nfunction getAttribute(name) {\r\n    return this._element.getAttribute(name);\r\n}\r\nfunction setAttribute(name, value) {\r\n    this._element.setAttribute(name, value);\r\n}\r\nfunction makeElementIntoAnchor(element, elementInstruction) {\r\n    var anchor = DOM.createComment('anchor');\r\n    if (elementInstruction) {\r\n        var firstChild = element.firstChild;\r\n        if (firstChild && firstChild.tagName === 'AU-CONTENT') {\r\n            anchor.contentElement = firstChild;\r\n        }\r\n        anchor._element = element;\r\n        anchor.hasAttribute = hasAttribute;\r\n        anchor.getAttribute = getAttribute;\r\n        anchor.setAttribute = setAttribute;\r\n    }\r\n    DOM.replaceNode(anchor, element);\r\n    return anchor;\r\n}\r\nfunction applyInstructions(containers, element, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources) {\r\n    var behaviorInstructions = instruction.behaviorInstructions;\r\n    var expressions = instruction.expressions;\r\n    var elementContainer;\r\n    var i;\r\n    var ii;\r\n    var current;\r\n    var instance;\r\n    if (instruction.contentExpression) {\r\n        bindings.push(instruction.contentExpression.createBinding(element.nextSibling));\r\n        element.nextSibling.auInterpolationTarget = true;\r\n        element.parentNode.removeChild(element);\r\n        return;\r\n    }\r\n    if (instruction.shadowSlot) {\r\n        var commentAnchor = DOM.createComment('slot');\r\n        var slot = void 0;\r\n        if (instruction.slotDestination) {\r\n            slot = new PassThroughSlot(commentAnchor, instruction.slotName, instruction.slotDestination, instruction.slotFallbackFactory);\r\n        }\r\n        else {\r\n            slot = new ShadowSlot(commentAnchor, instruction.slotName, instruction.slotFallbackFactory);\r\n        }\r\n        DOM.replaceNode(commentAnchor, element);\r\n        shadowSlots[instruction.slotName] = slot;\r\n        controllers.push(slot);\r\n        return;\r\n    }\r\n    if (instruction.letElement) {\r\n        for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n            bindings.push(expressions[i].createBinding());\r\n        }\r\n        element.parentNode.removeChild(element);\r\n        return;\r\n    }\r\n    if (behaviorInstructions.length) {\r\n        if (!instruction.anchorIsContainer) {\r\n            element = makeElementIntoAnchor(element, instruction.elementInstruction);\r\n        }\r\n        containers[instruction.injectorId] = elementContainer =\r\n            createElementContainer(containers[instruction.parentInjectorId], element, instruction, children, partReplacements, resources);\r\n        for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n            current = behaviorInstructions[i];\r\n            instance = current.type.create(elementContainer, current, element, bindings);\r\n            controllers.push(instance);\r\n        }\r\n    }\r\n    for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n        bindings.push(expressions[i].createBinding(element));\r\n    }\r\n}\r\nfunction styleStringToObject(style, target) {\r\n    var attributes = style.split(';');\r\n    var firstIndexOfColon;\r\n    var i;\r\n    var current;\r\n    var key;\r\n    var value;\r\n    target = target || {};\r\n    for (i = 0; i < attributes.length; i++) {\r\n        current = attributes[i];\r\n        firstIndexOfColon = current.indexOf(':');\r\n        key = current.substring(0, firstIndexOfColon).trim();\r\n        value = current.substring(firstIndexOfColon + 1).trim();\r\n        target[key] = value;\r\n    }\r\n    return target;\r\n}\r\nfunction styleObjectToString(obj) {\r\n    var result = '';\r\n    for (var key in obj) {\r\n        result += key + ':' + obj[key] + ';';\r\n    }\r\n    return result;\r\n}\r\nfunction applySurrogateInstruction(container, element, instruction, controllers, bindings, children) {\r\n    var behaviorInstructions = instruction.behaviorInstructions;\r\n    var expressions = instruction.expressions;\r\n    var providers = instruction.providers;\r\n    var values = instruction.values;\r\n    var i;\r\n    var ii;\r\n    var current;\r\n    var instance;\r\n    var currentAttributeValue;\r\n    i = providers.length;\r\n    while (i--) {\r\n        container._resolvers.set(providers[i], providerResolverInstance);\r\n    }\r\n    for (var key in values) {\r\n        currentAttributeValue = element.getAttribute(key);\r\n        if (currentAttributeValue) {\r\n            if (key === 'class') {\r\n                element.setAttribute('class', currentAttributeValue + ' ' + values[key]);\r\n            }\r\n            else if (key === 'style') {\r\n                var styleObject = styleStringToObject(values[key]);\r\n                styleStringToObject(currentAttributeValue, styleObject);\r\n                element.setAttribute('style', styleObjectToString(styleObject));\r\n            }\r\n        }\r\n        else {\r\n            element.setAttribute(key, values[key]);\r\n        }\r\n    }\r\n    if (behaviorInstructions.length) {\r\n        for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n            current = behaviorInstructions[i];\r\n            instance = current.type.create(container, current, element, bindings);\r\n            if (instance.contentView) {\r\n                children.push(instance.contentView);\r\n            }\r\n            controllers.push(instance);\r\n        }\r\n    }\r\n    for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n        bindings.push(expressions[i].createBinding(element));\r\n    }\r\n}\r\nvar BoundViewFactory = (function () {\r\n    function BoundViewFactory(parentContainer, viewFactory, partReplacements) {\r\n        this.parentContainer = parentContainer;\r\n        this.viewFactory = viewFactory;\r\n        this.factoryCreateInstruction = { partReplacements: partReplacements };\r\n    }\r\n    BoundViewFactory.prototype.create = function () {\r\n        var view = this.viewFactory.create(this.parentContainer.createChild(), this.factoryCreateInstruction);\r\n        view._isUserControlled = true;\r\n        return view;\r\n    };\r\n    Object.defineProperty(BoundViewFactory.prototype, \"isCaching\", {\r\n        get: function () {\r\n            return this.viewFactory.isCaching;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    BoundViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\r\n    };\r\n    BoundViewFactory.prototype.getCachedView = function () {\r\n        return this.viewFactory.getCachedView();\r\n    };\r\n    BoundViewFactory.prototype.returnViewToCache = function (view) {\r\n        this.viewFactory.returnViewToCache(view);\r\n    };\r\n    return BoundViewFactory;\r\n}());\r\nvar ViewFactory = (function () {\r\n    function ViewFactory(template, instructions, resources) {\r\n        this.isCaching = false;\r\n        this.template = template;\r\n        this.instructions = instructions;\r\n        this.resources = resources;\r\n        this.cacheSize = -1;\r\n        this.cache = null;\r\n    }\r\n    ViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        if (size) {\r\n            if (size === '*') {\r\n                size = Number.MAX_VALUE;\r\n            }\r\n            else if (typeof size === 'string') {\r\n                size = parseInt(size, 10);\r\n            }\r\n        }\r\n        if (this.cacheSize === -1 || !doNotOverrideIfAlreadySet) {\r\n            this.cacheSize = Number(size);\r\n        }\r\n        if (this.cacheSize > 0) {\r\n            this.cache = [];\r\n        }\r\n        else {\r\n            this.cache = null;\r\n        }\r\n        this.isCaching = this.cacheSize > 0;\r\n    };\r\n    ViewFactory.prototype.getCachedView = function () {\r\n        return this.cache !== null ? (this.cache.pop() || null) : null;\r\n    };\r\n    ViewFactory.prototype.returnViewToCache = function (view) {\r\n        if (view.isAttached) {\r\n            view.detached();\r\n        }\r\n        if (view.isBound) {\r\n            view.unbind();\r\n        }\r\n        if (this.cache !== null && this.cache.length < this.cacheSize) {\r\n            view.fromCache = true;\r\n            this.cache.push(view);\r\n        }\r\n    };\r\n    ViewFactory.prototype.create = function (container, createInstruction, element) {\r\n        createInstruction = createInstruction || BehaviorInstruction.normal;\r\n        var cachedView = this.getCachedView();\r\n        if (cachedView !== null) {\r\n            return cachedView;\r\n        }\r\n        var fragment = createInstruction.enhance ? this.template : this.template.cloneNode(true);\r\n        var instructables = fragment.querySelectorAll('.au-target');\r\n        var instructions = this.instructions;\r\n        var resources = this.resources;\r\n        var controllers = [];\r\n        var bindings = [];\r\n        var children = [];\r\n        var shadowSlots = Object.create(null);\r\n        var containers = { root: container };\r\n        var partReplacements = createInstruction.partReplacements;\r\n        var i;\r\n        var ii;\r\n        var view;\r\n        var instructable;\r\n        var instruction;\r\n        this.resources._invokeHook('beforeCreate', this, container, fragment, createInstruction);\r\n        if (element && this.surrogateInstruction !== null) {\r\n            applySurrogateInstruction(container, element, this.surrogateInstruction, controllers, bindings, children);\r\n        }\r\n        if (createInstruction.enhance && fragment.hasAttribute('au-target-id')) {\r\n            instructable = fragment;\r\n            instruction = instructions[instructable.getAttribute('au-target-id')];\r\n            applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\r\n        }\r\n        for (i = 0, ii = instructables.length; i < ii; ++i) {\r\n            instructable = instructables[i];\r\n            instruction = instructions[instructable.getAttribute('au-target-id')];\r\n            applyInstructions(containers, instructable, instruction, controllers, bindings, children, shadowSlots, partReplacements, resources);\r\n        }\r\n        view = new View(container, this, fragment, controllers, bindings, children, shadowSlots);\r\n        if (!createInstruction.initiatedByBehavior) {\r\n            view.created();\r\n        }\r\n        this.resources._invokeHook('afterCreate', view);\r\n        return view;\r\n    };\r\n    return ViewFactory;\r\n}());\n\nvar nextInjectorId = 0;\r\nfunction getNextInjectorId() {\r\n    return ++nextInjectorId;\r\n}\r\nvar lastAUTargetID = 0;\r\nfunction getNextAUTargetID() {\r\n    return (++lastAUTargetID).toString();\r\n}\r\nfunction makeIntoInstructionTarget(element) {\r\n    var value = element.getAttribute('class');\r\n    var auTargetID = getNextAUTargetID();\r\n    element.setAttribute('class', (value ? value + ' au-target' : 'au-target'));\r\n    element.setAttribute('au-target-id', auTargetID);\r\n    return auTargetID;\r\n}\r\nfunction makeShadowSlot(compiler, resources, node, instructions, parentInjectorId) {\r\n    var auShadowSlot = DOM.createElement('au-shadow-slot');\r\n    DOM.replaceNode(auShadowSlot, node);\r\n    var auTargetID = makeIntoInstructionTarget(auShadowSlot);\r\n    var instruction = TargetInstruction.shadowSlot(parentInjectorId);\r\n    instruction.slotName = node.getAttribute('name') || ShadowDOM.defaultSlotKey;\r\n    instruction.slotDestination = node.getAttribute('slot');\r\n    if (node.innerHTML.trim()) {\r\n        var fragment = DOM.createDocumentFragment();\r\n        var child = void 0;\r\n        while (child = node.firstChild) {\r\n            fragment.appendChild(child);\r\n        }\r\n        instruction.slotFallbackFactory = compiler.compile(fragment, resources);\r\n    }\r\n    instructions[auTargetID] = instruction;\r\n    return auShadowSlot;\r\n}\r\nvar defaultLetHandler = BindingLanguage.prototype.createLetExpressions;\r\nvar ViewCompiler = (function () {\r\n    function ViewCompiler(bindingLanguage, resources) {\r\n        this.bindingLanguage = bindingLanguage;\r\n        this.resources = resources;\r\n    }\r\n    ViewCompiler.inject = function () {\r\n        return [BindingLanguage, ViewResources];\r\n    };\r\n    ViewCompiler.prototype.compile = function (source, resources, compileInstruction) {\r\n        resources = resources || this.resources;\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        source = typeof source === 'string' ? DOM.createTemplateFromMarkup(source) : source;\r\n        var content;\r\n        var part;\r\n        var cacheSize;\r\n        if (source.content) {\r\n            part = source.getAttribute('part');\r\n            cacheSize = source.getAttribute('view-cache');\r\n            content = DOM.adoptNode(source.content);\r\n        }\r\n        else {\r\n            content = source;\r\n        }\r\n        compileInstruction.targetShadowDOM = compileInstruction.targetShadowDOM && FEATURE.shadowDOM;\r\n        resources._invokeHook('beforeCompile', content, resources, compileInstruction);\r\n        var instructions = {};\r\n        this._compileNode(content, resources, instructions, source, 'root', !compileInstruction.targetShadowDOM);\r\n        var firstChild = content.firstChild;\r\n        if (firstChild && firstChild.nodeType === 1) {\r\n            var targetId = firstChild.getAttribute('au-target-id');\r\n            if (targetId) {\r\n                var ins = instructions[targetId];\r\n                if (ins.shadowSlot || ins.lifting || (ins.elementInstruction && !ins.elementInstruction.anchorIsContainer)) {\r\n                    content.insertBefore(DOM.createComment('view'), firstChild);\r\n                }\r\n            }\r\n        }\r\n        var factory = new ViewFactory(content, instructions, resources);\r\n        factory.surrogateInstruction = compileInstruction.compileSurrogate ? this._compileSurrogate(source, resources) : null;\r\n        factory.part = part;\r\n        if (cacheSize) {\r\n            factory.setCacheSize(cacheSize);\r\n        }\r\n        resources._invokeHook('afterCompile', factory);\r\n        return factory;\r\n    };\r\n    ViewCompiler.prototype._compileNode = function (node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\r\n        switch (node.nodeType) {\r\n            case 1:\r\n                return this._compileElement(node, resources, instructions, parentNode, parentInjectorId, targetLightDOM);\r\n            case 3:\r\n                var expression = resources.getBindingLanguage(this.bindingLanguage).inspectTextContent(resources, node.wholeText);\r\n                if (expression) {\r\n                    var marker = DOM.createElement('au-marker');\r\n                    var auTargetID = makeIntoInstructionTarget(marker);\r\n                    (node.parentNode || parentNode).insertBefore(marker, node);\r\n                    node.textContent = ' ';\r\n                    instructions[auTargetID] = TargetInstruction.contentExpression(expression);\r\n                    while (node.nextSibling && node.nextSibling.nodeType === 3) {\r\n                        (node.parentNode || parentNode).removeChild(node.nextSibling);\r\n                    }\r\n                }\r\n                else {\r\n                    while (node.nextSibling && node.nextSibling.nodeType === 3) {\r\n                        node = node.nextSibling;\r\n                    }\r\n                }\r\n                return node.nextSibling;\r\n            case 11:\r\n                var currentChild = node.firstChild;\r\n                while (currentChild) {\r\n                    currentChild = this._compileNode(currentChild, resources, instructions, node, parentInjectorId, targetLightDOM);\r\n                }\r\n                break;\r\n        }\r\n        return node.nextSibling;\r\n    };\r\n    ViewCompiler.prototype._compileSurrogate = function (node, resources) {\r\n        var tagName = node.tagName.toLowerCase();\r\n        var attributes = node.attributes;\r\n        var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\r\n        var knownAttribute;\r\n        var property;\r\n        var instruction;\r\n        var i;\r\n        var ii;\r\n        var attr;\r\n        var attrName;\r\n        var attrValue;\r\n        var info;\r\n        var type;\r\n        var expressions = [];\r\n        var expression;\r\n        var behaviorInstructions = [];\r\n        var values = {};\r\n        var hasValues = false;\r\n        var providers = [];\r\n        for (i = 0, ii = attributes.length; i < ii; ++i) {\r\n            attr = attributes[i];\r\n            attrName = attr.name;\r\n            attrValue = attr.value;\r\n            info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\r\n            type = resources.getAttribute(info.attrName);\r\n            if (type) {\r\n                knownAttribute = resources.mapAttribute(info.attrName);\r\n                if (knownAttribute) {\r\n                    property = type.attributes[knownAttribute];\r\n                    if (property) {\r\n                        info.defaultBindingMode = property.defaultBindingMode;\r\n                        if (!info.command && !info.expression) {\r\n                            info.command = property.hasOptions ? 'options' : null;\r\n                        }\r\n                        if (info.command && (info.command !== 'options') && type.primaryProperty) {\r\n                            var primaryProperty = type.primaryProperty;\r\n                            attrName = info.attrName = primaryProperty.attribute;\r\n                            info.defaultBindingMode = primaryProperty.defaultBindingMode;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\r\n            if (instruction) {\r\n                if (instruction.alteredAttr) {\r\n                    type = resources.getAttribute(instruction.attrName);\r\n                }\r\n                if (instruction.discrete) {\r\n                    expressions.push(instruction);\r\n                }\r\n                else {\r\n                    if (type) {\r\n                        instruction.type = type;\r\n                        this._configureProperties(instruction, resources);\r\n                        if (type.liftsContent) {\r\n                            throw new Error('You cannot place a template controller on a surrogate element.');\r\n                        }\r\n                        else {\r\n                            behaviorInstructions.push(instruction);\r\n                        }\r\n                    }\r\n                    else {\r\n                        expressions.push(instruction.attributes[instruction.attrName]);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (type) {\r\n                    instruction = BehaviorInstruction.attribute(attrName, type);\r\n                    instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\r\n                    if (type.liftsContent) {\r\n                        throw new Error('You cannot place a template controller on a surrogate element.');\r\n                    }\r\n                    else {\r\n                        behaviorInstructions.push(instruction);\r\n                    }\r\n                }\r\n                else if (attrName !== 'id' && attrName !== 'part' && attrName !== 'replace-part') {\r\n                    hasValues = true;\r\n                    values[attrName] = attrValue;\r\n                }\r\n            }\r\n        }\r\n        if (expressions.length || behaviorInstructions.length || hasValues) {\r\n            for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n                instruction = behaviorInstructions[i];\r\n                instruction.type.compile(this, resources, node, instruction);\r\n                providers.push(instruction.type.target);\r\n            }\r\n            for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n                expression = expressions[i];\r\n                if (expression.attrToRemove !== undefined) {\r\n                    node.removeAttribute(expression.attrToRemove);\r\n                }\r\n            }\r\n            return TargetInstruction.surrogate(providers, behaviorInstructions, expressions, values);\r\n        }\r\n        return null;\r\n    };\r\n    ViewCompiler.prototype._compileElement = function (node, resources, instructions, parentNode, parentInjectorId, targetLightDOM) {\r\n        var tagName = node.tagName.toLowerCase();\r\n        var attributes = node.attributes;\r\n        var expressions = [];\r\n        var expression;\r\n        var behaviorInstructions = [];\r\n        var providers = [];\r\n        var bindingLanguage = resources.getBindingLanguage(this.bindingLanguage);\r\n        var liftingInstruction;\r\n        var viewFactory;\r\n        var type;\r\n        var elementInstruction;\r\n        var elementProperty;\r\n        var i;\r\n        var ii;\r\n        var attr;\r\n        var attrName;\r\n        var attrValue;\r\n        var originalAttrName;\r\n        var instruction;\r\n        var info;\r\n        var property;\r\n        var knownAttribute;\r\n        var auTargetID;\r\n        var injectorId;\r\n        if (tagName === 'slot') {\r\n            if (targetLightDOM) {\r\n                node = makeShadowSlot(this, resources, node, instructions, parentInjectorId);\r\n            }\r\n            return node.nextSibling;\r\n        }\r\n        else if (tagName === 'template') {\r\n            if (!('content' in node)) {\r\n                throw new Error('You cannot place a template element within ' + node.namespaceURI + ' namespace');\r\n            }\r\n            viewFactory = this.compile(node, resources);\r\n            viewFactory.part = node.getAttribute('part');\r\n        }\r\n        else {\r\n            type = resources.getElement(node.getAttribute('as-element') || tagName);\r\n            if (tagName === 'let' && !type && bindingLanguage.createLetExpressions !== defaultLetHandler) {\r\n                expressions = bindingLanguage.createLetExpressions(resources, node);\r\n                auTargetID = makeIntoInstructionTarget(node);\r\n                instructions[auTargetID] = TargetInstruction.letElement(expressions);\r\n                return node.nextSibling;\r\n            }\r\n            if (type) {\r\n                elementInstruction = BehaviorInstruction.element(node, type);\r\n                type.processAttributes(this, resources, node, attributes, elementInstruction);\r\n                behaviorInstructions.push(elementInstruction);\r\n            }\r\n        }\r\n        for (i = 0, ii = attributes.length; i < ii; ++i) {\r\n            attr = attributes[i];\r\n            originalAttrName = attrName = attr.name;\r\n            attrValue = attr.value;\r\n            info = bindingLanguage.inspectAttribute(resources, tagName, attrName, attrValue);\r\n            if (targetLightDOM && info.attrName === 'slot') {\r\n                info.attrName = attrName = 'au-slot';\r\n            }\r\n            type = resources.getAttribute(info.attrName);\r\n            elementProperty = null;\r\n            if (type) {\r\n                knownAttribute = resources.mapAttribute(info.attrName);\r\n                if (knownAttribute) {\r\n                    property = type.attributes[knownAttribute];\r\n                    if (property) {\r\n                        info.defaultBindingMode = property.defaultBindingMode;\r\n                        if (!info.command && !info.expression) {\r\n                            info.command = property.hasOptions ? 'options' : null;\r\n                        }\r\n                        if (info.command && (info.command !== 'options') && type.primaryProperty) {\r\n                            var primaryProperty = type.primaryProperty;\r\n                            attrName = info.attrName = primaryProperty.attribute;\r\n                            info.defaultBindingMode = primaryProperty.defaultBindingMode;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (elementInstruction) {\r\n                elementProperty = elementInstruction.type.attributes[info.attrName];\r\n                if (elementProperty) {\r\n                    info.defaultBindingMode = elementProperty.defaultBindingMode;\r\n                }\r\n            }\r\n            if (elementProperty) {\r\n                instruction = bindingLanguage.createAttributeInstruction(resources, node, info, elementInstruction);\r\n            }\r\n            else {\r\n                instruction = bindingLanguage.createAttributeInstruction(resources, node, info, undefined, type);\r\n            }\r\n            if (instruction) {\r\n                if (instruction.alteredAttr) {\r\n                    type = resources.getAttribute(instruction.attrName);\r\n                }\r\n                if (instruction.discrete) {\r\n                    expressions.push(instruction);\r\n                }\r\n                else {\r\n                    if (type) {\r\n                        instruction.type = type;\r\n                        this._configureProperties(instruction, resources);\r\n                        if (type.liftsContent) {\r\n                            instruction.originalAttrName = originalAttrName;\r\n                            liftingInstruction = instruction;\r\n                            break;\r\n                        }\r\n                        else {\r\n                            behaviorInstructions.push(instruction);\r\n                        }\r\n                    }\r\n                    else if (elementProperty) {\r\n                        elementInstruction.attributes[info.attrName].targetProperty = elementProperty.name;\r\n                    }\r\n                    else {\r\n                        expressions.push(instruction.attributes[instruction.attrName]);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (type) {\r\n                    instruction = BehaviorInstruction.attribute(attrName, type);\r\n                    instruction.attributes[resources.mapAttribute(attrName)] = attrValue;\r\n                    if (type.liftsContent) {\r\n                        instruction.originalAttrName = originalAttrName;\r\n                        liftingInstruction = instruction;\r\n                        break;\r\n                    }\r\n                    else {\r\n                        behaviorInstructions.push(instruction);\r\n                    }\r\n                }\r\n                else if (elementProperty) {\r\n                    elementInstruction.attributes[attrName] = attrValue;\r\n                }\r\n            }\r\n        }\r\n        if (liftingInstruction) {\r\n            liftingInstruction.viewFactory = viewFactory;\r\n            node = liftingInstruction.type.compile(this, resources, node, liftingInstruction, parentNode);\r\n            auTargetID = makeIntoInstructionTarget(node);\r\n            instructions[auTargetID] = TargetInstruction.lifting(parentInjectorId, liftingInstruction);\r\n        }\r\n        else {\r\n            var skipContentProcessing = false;\r\n            if (expressions.length || behaviorInstructions.length) {\r\n                injectorId = behaviorInstructions.length ? getNextInjectorId() : false;\r\n                for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {\r\n                    instruction = behaviorInstructions[i];\r\n                    instruction.type.compile(this, resources, node, instruction, parentNode);\r\n                    providers.push(instruction.type.target);\r\n                    skipContentProcessing = skipContentProcessing || instruction.skipContentProcessing;\r\n                }\r\n                for (i = 0, ii = expressions.length; i < ii; ++i) {\r\n                    expression = expressions[i];\r\n                    if (expression.attrToRemove !== undefined) {\r\n                        node.removeAttribute(expression.attrToRemove);\r\n                    }\r\n                }\r\n                auTargetID = makeIntoInstructionTarget(node);\r\n                instructions[auTargetID] = TargetInstruction.normal(injectorId, parentInjectorId, providers, behaviorInstructions, expressions, elementInstruction);\r\n            }\r\n            if (skipContentProcessing) {\r\n                return node.nextSibling;\r\n            }\r\n            var currentChild = node.firstChild;\r\n            while (currentChild) {\r\n                currentChild = this._compileNode(currentChild, resources, instructions, node, injectorId || parentInjectorId, targetLightDOM);\r\n            }\r\n        }\r\n        return node.nextSibling;\r\n    };\r\n    ViewCompiler.prototype._configureProperties = function (instruction, resources) {\r\n        var type = instruction.type;\r\n        var attrName = instruction.attrName;\r\n        var attributes = instruction.attributes;\r\n        var property;\r\n        var key;\r\n        var value;\r\n        var knownAttribute = resources.mapAttribute(attrName);\r\n        if (knownAttribute && attrName in attributes && knownAttribute !== attrName) {\r\n            attributes[knownAttribute] = attributes[attrName];\r\n            delete attributes[attrName];\r\n        }\r\n        for (key in attributes) {\r\n            value = attributes[key];\r\n            if (value !== null && typeof value === 'object') {\r\n                property = type.attributes[key];\r\n                if (property !== undefined) {\r\n                    value.targetProperty = property.name;\r\n                }\r\n                else {\r\n                    value.targetProperty = key;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    return ViewCompiler;\r\n}());\n\nvar ViewEngineHooksResource = (function () {\r\n    function ViewEngineHooksResource() {\r\n    }\r\n    ViewEngineHooksResource.prototype.initialize = function (container, target) {\r\n        this.instance = container.get(target);\r\n    };\r\n    ViewEngineHooksResource.prototype.register = function (registry, name) {\r\n        registry.registerViewEngineHooks(this.instance);\r\n    };\r\n    ViewEngineHooksResource.prototype.load = function (container, target) { };\r\n    ViewEngineHooksResource.convention = function (name) {\r\n        if (name.endsWith('ViewEngineHooks')) {\r\n            return new ViewEngineHooksResource();\r\n        }\r\n    };\r\n    return ViewEngineHooksResource;\r\n}());\r\nfunction viewEngineHooks(target) {\r\n    var deco = function (t) {\r\n        metadata.define(metadata.resource, new ViewEngineHooksResource(), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\n\nvar ResourceModule = (function () {\r\n    function ResourceModule(moduleId) {\r\n        this.id = moduleId;\r\n        this.moduleInstance = null;\r\n        this.mainResource = null;\r\n        this.resources = null;\r\n        this.viewStrategy = null;\r\n        this.isInitialized = false;\r\n        this.onLoaded = null;\r\n        this.loadContext = null;\r\n    }\r\n    ResourceModule.prototype.initialize = function (container) {\r\n        var current = this.mainResource;\r\n        var resources = this.resources;\r\n        var vs = this.viewStrategy;\r\n        if (this.isInitialized) {\r\n            return;\r\n        }\r\n        this.isInitialized = true;\r\n        if (current !== undefined) {\r\n            current.metadata.viewStrategy = vs;\r\n            current.initialize(container);\r\n        }\r\n        for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n            current = resources[i];\r\n            current.metadata.viewStrategy = vs;\r\n            current.initialize(container);\r\n        }\r\n    };\r\n    ResourceModule.prototype.register = function (registry, name) {\r\n        var main = this.mainResource;\r\n        var resources = this.resources;\r\n        if (main !== undefined) {\r\n            main.register(registry, name);\r\n            name = null;\r\n        }\r\n        for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n            resources[i].register(registry, name);\r\n            name = null;\r\n        }\r\n    };\r\n    ResourceModule.prototype.load = function (container, loadContext) {\r\n        if (this.onLoaded !== null) {\r\n            return this.loadContext === loadContext ? Promise.resolve() : this.onLoaded;\r\n        }\r\n        var main = this.mainResource;\r\n        var resources = this.resources;\r\n        var loads;\r\n        if (main !== undefined) {\r\n            loads = new Array(resources.length + 1);\r\n            loads[0] = main.load(container, loadContext);\r\n            for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n                loads[i + 1] = resources[i].load(container, loadContext);\r\n            }\r\n        }\r\n        else {\r\n            loads = new Array(resources.length);\r\n            for (var i = 0, ii = resources.length; i < ii; ++i) {\r\n                loads[i] = resources[i].load(container, loadContext);\r\n            }\r\n        }\r\n        this.loadContext = loadContext;\r\n        this.onLoaded = Promise.all(loads);\r\n        return this.onLoaded;\r\n    };\r\n    return ResourceModule;\r\n}());\r\nvar ResourceDescription = (function () {\r\n    function ResourceDescription(key, exportedValue, resourceTypeMeta) {\r\n        if (!resourceTypeMeta) {\r\n            resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\r\n            if (!resourceTypeMeta) {\r\n                resourceTypeMeta = new HtmlBehaviorResource();\r\n                resourceTypeMeta.elementName = _hyphenate(key);\r\n                metadata.define(metadata.resource, resourceTypeMeta, exportedValue);\r\n            }\r\n        }\r\n        if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n            if (resourceTypeMeta.elementName === undefined) {\r\n                resourceTypeMeta.elementName = _hyphenate(key);\r\n            }\r\n            else if (resourceTypeMeta.attributeName === undefined) {\r\n                resourceTypeMeta.attributeName = _hyphenate(key);\r\n            }\r\n            else if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                HtmlBehaviorResource.convention(key, resourceTypeMeta);\r\n            }\r\n        }\r\n        else if (!resourceTypeMeta.name) {\r\n            resourceTypeMeta.name = _hyphenate(key);\r\n        }\r\n        this.metadata = resourceTypeMeta;\r\n        this.value = exportedValue;\r\n    }\r\n    ResourceDescription.prototype.initialize = function (container) {\r\n        this.metadata.initialize(container, this.value);\r\n    };\r\n    ResourceDescription.prototype.register = function (registry, name) {\r\n        this.metadata.register(registry, name);\r\n    };\r\n    ResourceDescription.prototype.load = function (container, loadContext) {\r\n        return this.metadata.load(container, this.value, loadContext);\r\n    };\r\n    return ResourceDescription;\r\n}());\r\nvar ModuleAnalyzer = (function () {\r\n    function ModuleAnalyzer() {\r\n        this.cache = Object.create(null);\r\n    }\r\n    ModuleAnalyzer.prototype.getAnalysis = function (moduleId) {\r\n        return this.cache[moduleId];\r\n    };\r\n    ModuleAnalyzer.prototype.analyze = function (moduleId, moduleInstance, mainResourceKey) {\r\n        var mainResource;\r\n        var fallbackValue;\r\n        var fallbackKey;\r\n        var resourceTypeMeta;\r\n        var key;\r\n        var exportedValue;\r\n        var resources = [];\r\n        var conventional;\r\n        var vs;\r\n        var resourceModule;\r\n        resourceModule = this.cache[moduleId];\r\n        if (resourceModule) {\r\n            return resourceModule;\r\n        }\r\n        resourceModule = new ResourceModule(moduleId);\r\n        this.cache[moduleId] = resourceModule;\r\n        if (typeof moduleInstance === 'function') {\r\n            moduleInstance = { 'default': moduleInstance };\r\n        }\r\n        if (mainResourceKey) {\r\n            mainResource = new ResourceDescription(mainResourceKey, moduleInstance[mainResourceKey]);\r\n        }\r\n        for (key in moduleInstance) {\r\n            exportedValue = moduleInstance[key];\r\n            if (key === mainResourceKey || typeof exportedValue !== 'function') {\r\n                continue;\r\n            }\r\n            resourceTypeMeta = metadata.get(metadata.resource, exportedValue);\r\n            if (resourceTypeMeta) {\r\n                if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n                    ViewResources.convention(exportedValue, resourceTypeMeta);\r\n                    if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                        HtmlBehaviorResource.convention(key, resourceTypeMeta);\r\n                    }\r\n                    if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                        resourceTypeMeta.elementName = _hyphenate(key);\r\n                    }\r\n                }\r\n                if (!mainResource && resourceTypeMeta instanceof HtmlBehaviorResource && resourceTypeMeta.elementName !== null) {\r\n                    mainResource = new ResourceDescription(key, exportedValue, resourceTypeMeta);\r\n                }\r\n                else {\r\n                    resources.push(new ResourceDescription(key, exportedValue, resourceTypeMeta));\r\n                }\r\n            }\r\n            else if (viewStrategy.decorates(exportedValue)) {\r\n                vs = exportedValue;\r\n            }\r\n            else if (exportedValue instanceof TemplateRegistryEntry) {\r\n                vs = new TemplateRegistryViewStrategy(moduleId, exportedValue);\r\n            }\r\n            else {\r\n                if (conventional = ViewResources.convention(exportedValue)) {\r\n                    if (conventional.elementName !== null && !mainResource) {\r\n                        mainResource = new ResourceDescription(key, exportedValue, conventional);\r\n                    }\r\n                    else {\r\n                        resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    }\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (conventional = HtmlBehaviorResource.convention(key)) {\r\n                    if (conventional.elementName !== null && !mainResource) {\r\n                        mainResource = new ResourceDescription(key, exportedValue, conventional);\r\n                    }\r\n                    else {\r\n                        resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    }\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (conventional = ValueConverterResource.convention(key)\r\n                    || BindingBehaviorResource.convention(key)\r\n                    || ViewEngineHooksResource.convention(key)) {\r\n                    resources.push(new ResourceDescription(key, exportedValue, conventional));\r\n                    metadata.define(metadata.resource, conventional, exportedValue);\r\n                }\r\n                else if (!fallbackValue) {\r\n                    fallbackValue = exportedValue;\r\n                    fallbackKey = key;\r\n                }\r\n            }\r\n        }\r\n        if (!mainResource && fallbackValue) {\r\n            mainResource = new ResourceDescription(fallbackKey, fallbackValue);\r\n        }\r\n        resourceModule.moduleInstance = moduleInstance;\r\n        resourceModule.mainResource = mainResource;\r\n        resourceModule.resources = resources;\r\n        resourceModule.viewStrategy = vs;\r\n        return resourceModule;\r\n    };\r\n    return ModuleAnalyzer;\r\n}());\n\nvar logger = LogManager.getLogger('templating');\r\nfunction ensureRegistryEntry(loader, urlOrRegistryEntry) {\r\n    if (urlOrRegistryEntry instanceof TemplateRegistryEntry) {\r\n        return Promise.resolve(urlOrRegistryEntry);\r\n    }\r\n    return loader.loadTemplate(urlOrRegistryEntry);\r\n}\r\nvar ProxyViewFactory = (function () {\r\n    function ProxyViewFactory(promise) {\r\n        var _this = this;\r\n        promise.then(function (x) { return _this.viewFactory = x; });\r\n    }\r\n    ProxyViewFactory.prototype.create = function (container, bindingContext, createInstruction, element) {\r\n        return this.viewFactory.create(container, bindingContext, createInstruction, element);\r\n    };\r\n    Object.defineProperty(ProxyViewFactory.prototype, \"isCaching\", {\r\n        get: function () {\r\n            return this.viewFactory.isCaching;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    ProxyViewFactory.prototype.setCacheSize = function (size, doNotOverrideIfAlreadySet) {\r\n        this.viewFactory.setCacheSize(size, doNotOverrideIfAlreadySet);\r\n    };\r\n    ProxyViewFactory.prototype.getCachedView = function () {\r\n        return this.viewFactory.getCachedView();\r\n    };\r\n    ProxyViewFactory.prototype.returnViewToCache = function (view) {\r\n        this.viewFactory.returnViewToCache(view);\r\n    };\r\n    return ProxyViewFactory;\r\n}());\r\nvar auSlotBehavior = null;\r\nvar ViewEngine = (function () {\r\n    function ViewEngine(loader, container, viewCompiler, moduleAnalyzer, appResources) {\r\n        this.loader = loader;\r\n        this.container = container;\r\n        this.viewCompiler = viewCompiler;\r\n        this.moduleAnalyzer = moduleAnalyzer;\r\n        this.appResources = appResources;\r\n        this._pluginMap = {};\r\n        if (auSlotBehavior === null) {\r\n            auSlotBehavior = new HtmlBehaviorResource();\r\n            auSlotBehavior.attributeName = 'au-slot';\r\n            metadata.define(metadata.resource, auSlotBehavior, SlotCustomAttribute);\r\n        }\r\n        auSlotBehavior.initialize(container, SlotCustomAttribute);\r\n        auSlotBehavior.register(appResources);\r\n    }\r\n    ViewEngine.inject = function () {\r\n        return [Loader, Container, ViewCompiler, ModuleAnalyzer, ViewResources];\r\n    };\r\n    ViewEngine.prototype.addResourcePlugin = function (extension, implementation) {\r\n        var name = extension.replace('.', '') + '-resource-plugin';\r\n        this._pluginMap[extension] = name;\r\n        this.loader.addPlugin(name, implementation);\r\n    };\r\n    ViewEngine.prototype.loadViewFactory = function (urlOrRegistryEntry, compileInstruction, loadContext, target) {\r\n        var _this = this;\r\n        loadContext = loadContext || new ResourceLoadContext();\r\n        return ensureRegistryEntry(this.loader, urlOrRegistryEntry).then(function (registryEntry) {\r\n            var url = registryEntry.address;\r\n            if (registryEntry.onReady) {\r\n                if (!loadContext.hasDependency(url)) {\r\n                    loadContext.addDependency(url);\r\n                    return registryEntry.onReady;\r\n                }\r\n                if (registryEntry.template === null) {\r\n                    return registryEntry.onReady;\r\n                }\r\n                return Promise.resolve(new ProxyViewFactory(registryEntry.onReady));\r\n            }\r\n            loadContext.addDependency(url);\r\n            registryEntry.onReady = _this.loadTemplateResources(registryEntry, compileInstruction, loadContext, target).then(function (resources) {\r\n                registryEntry.resources = resources;\r\n                if (registryEntry.template === null) {\r\n                    return registryEntry.factory = null;\r\n                }\r\n                var viewFactory = _this.viewCompiler.compile(registryEntry.template, resources, compileInstruction);\r\n                return registryEntry.factory = viewFactory;\r\n            });\r\n            return registryEntry.onReady;\r\n        });\r\n    };\r\n    ViewEngine.prototype.loadTemplateResources = function (registryEntry, compileInstruction, loadContext, target) {\r\n        var resources = new ViewResources(this.appResources, registryEntry.address);\r\n        var dependencies = registryEntry.dependencies;\r\n        var importIds;\r\n        var names;\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        if (dependencies.length === 0 && !compileInstruction.associatedModuleId) {\r\n            return Promise.resolve(resources);\r\n        }\r\n        importIds = dependencies.map(function (x) { return x.src; });\r\n        names = dependencies.map(function (x) { return x.name; });\r\n        logger.debug(\"importing resources for \".concat(registryEntry.address), importIds);\r\n        if (target) {\r\n            var viewModelRequires = metadata.get(ViewEngine.viewModelRequireMetadataKey, target);\r\n            if (viewModelRequires) {\r\n                var templateImportCount = importIds.length;\r\n                for (var i = 0, ii = viewModelRequires.length; i < ii; ++i) {\r\n                    var req = viewModelRequires[i];\r\n                    var importId = typeof req === 'function'\r\n                        ? Origin.get(req).moduleId\r\n                        : relativeToFile(req.src || req, registryEntry.address);\r\n                    if (importIds.indexOf(importId) === -1) {\r\n                        importIds.push(importId);\r\n                        names.push(req.as);\r\n                    }\r\n                }\r\n                logger.debug(\"importing ViewModel resources for \".concat(compileInstruction.associatedModuleId), importIds.slice(templateImportCount));\r\n            }\r\n        }\r\n        return this.importViewResources(importIds, names, resources, compileInstruction, loadContext);\r\n    };\r\n    ViewEngine.prototype.importViewModelResource = function (moduleImport, moduleMember) {\r\n        var _this = this;\r\n        return this.loader.loadModule(moduleImport).then(function (viewModelModule) {\r\n            var normalizedId = Origin.get(viewModelModule).moduleId;\r\n            var resourceModule = _this.moduleAnalyzer.analyze(normalizedId, viewModelModule, moduleMember);\r\n            if (!resourceModule.mainResource) {\r\n                throw new Error(\"No view model found in module \\\"\".concat(moduleImport, \"\\\".\"));\r\n            }\r\n            resourceModule.initialize(_this.container);\r\n            return resourceModule.mainResource;\r\n        });\r\n    };\r\n    ViewEngine.prototype.importViewResources = function (moduleIds, names, resources, compileInstruction, loadContext) {\r\n        var _this = this;\r\n        loadContext = loadContext || new ResourceLoadContext();\r\n        compileInstruction = compileInstruction || ViewCompileInstruction.normal;\r\n        moduleIds = moduleIds.map(function (x) { return _this._applyLoaderPlugin(x); });\r\n        return this.loader.loadAllModules(moduleIds).then(function (imports) {\r\n            var i;\r\n            var ii;\r\n            var analysis;\r\n            var normalizedId;\r\n            var current;\r\n            var associatedModule;\r\n            var container = _this.container;\r\n            var moduleAnalyzer = _this.moduleAnalyzer;\r\n            var allAnalysis = new Array(imports.length);\r\n            for (i = 0, ii = imports.length; i < ii; ++i) {\r\n                current = imports[i];\r\n                normalizedId = Origin.get(current).moduleId;\r\n                analysis = moduleAnalyzer.analyze(normalizedId, current);\r\n                analysis.initialize(container);\r\n                analysis.register(resources, names[i]);\r\n                allAnalysis[i] = analysis;\r\n            }\r\n            if (compileInstruction.associatedModuleId) {\r\n                associatedModule = moduleAnalyzer.getAnalysis(compileInstruction.associatedModuleId);\r\n                if (associatedModule) {\r\n                    associatedModule.register(resources);\r\n                }\r\n            }\r\n            for (i = 0, ii = allAnalysis.length; i < ii; ++i) {\r\n                allAnalysis[i] = allAnalysis[i].load(container, loadContext);\r\n            }\r\n            return Promise.all(allAnalysis).then(function () { return resources; });\r\n        });\r\n    };\r\n    ViewEngine.prototype._applyLoaderPlugin = function (id) {\r\n        var index = id.lastIndexOf('.');\r\n        if (index !== -1) {\r\n            var ext = id.substring(index);\r\n            var pluginName = this._pluginMap[ext];\r\n            if (pluginName === undefined) {\r\n                return id;\r\n            }\r\n            return this.loader.applyPluginToUrl(id, pluginName);\r\n        }\r\n        return id;\r\n    };\r\n    ViewEngine.viewModelRequireMetadataKey = 'aurelia:view-model-require';\r\n    return ViewEngine;\r\n}());\n\nvar Controller = (function () {\r\n    function Controller(behavior, instruction, viewModel, container) {\r\n        this.behavior = behavior;\r\n        this.instruction = instruction;\r\n        this.viewModel = viewModel;\r\n        this.isAttached = false;\r\n        this.view = null;\r\n        this.isBound = false;\r\n        this.scope = null;\r\n        this.container = container;\r\n        this.elementEvents = container.elementEvents || null;\r\n        var observerLookup = behavior.observerLocator.getOrCreateObserversLookup(viewModel);\r\n        var handlesBind = behavior.handlesBind;\r\n        var attributes = instruction.attributes;\r\n        var boundProperties = this.boundProperties = [];\r\n        var properties = behavior.properties;\r\n        var i;\r\n        var ii;\r\n        behavior._ensurePropertiesDefined(viewModel, observerLookup);\r\n        for (i = 0, ii = properties.length; i < ii; ++i) {\r\n            properties[i]._initialize(viewModel, observerLookup, attributes, handlesBind, boundProperties);\r\n        }\r\n    }\r\n    Controller.prototype.created = function (owningView) {\r\n        if (this.behavior.handlesCreated) {\r\n            this.viewModel.created(owningView, this.view);\r\n        }\r\n    };\r\n    Controller.prototype.automate = function (overrideContext, owningView) {\r\n        this.view.bindingContext = this.viewModel;\r\n        this.view.overrideContext = overrideContext || createOverrideContext(this.viewModel);\r\n        this.view._isUserControlled = true;\r\n        if (this.behavior.handlesCreated) {\r\n            this.viewModel.created(owningView || null, this.view);\r\n        }\r\n        this.bind(this.view);\r\n    };\r\n    Controller.prototype.bind = function (scope) {\r\n        var skipSelfSubscriber = this.behavior.handlesBind;\r\n        var boundProperties = this.boundProperties;\r\n        var i;\r\n        var ii;\r\n        var x;\r\n        var observer;\r\n        var selfSubscriber;\r\n        if (this.isBound) {\r\n            if (this.scope === scope) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.scope = scope;\r\n        for (i = 0, ii = boundProperties.length; i < ii; ++i) {\r\n            x = boundProperties[i];\r\n            observer = x.observer;\r\n            selfSubscriber = observer.selfSubscriber;\r\n            observer.publishing = false;\r\n            if (skipSelfSubscriber) {\r\n                observer.selfSubscriber = null;\r\n            }\r\n            x.binding.bind(scope);\r\n            observer.call();\r\n            observer.publishing = true;\r\n            observer.selfSubscriber = selfSubscriber;\r\n        }\r\n        var overrideContext;\r\n        if (this.view !== null) {\r\n            if (skipSelfSubscriber) {\r\n                this.view.viewModelScope = scope;\r\n            }\r\n            if (this.viewModel === scope.overrideContext.bindingContext) {\r\n                overrideContext = scope.overrideContext;\r\n            }\r\n            else if (this.instruction.inheritBindingContext) {\r\n                overrideContext = createOverrideContext(this.viewModel, scope.overrideContext);\r\n            }\r\n            else {\r\n                overrideContext = createOverrideContext(this.viewModel);\r\n                overrideContext.__parentOverrideContext = scope.overrideContext;\r\n            }\r\n            this.view.bind(this.viewModel, overrideContext);\r\n        }\r\n        else if (skipSelfSubscriber) {\r\n            overrideContext = scope.overrideContext;\r\n            if (scope.overrideContext.__parentOverrideContext !== undefined\r\n                && this.viewModel.viewFactory && this.viewModel.viewFactory.factoryCreateInstruction.partReplacements) {\r\n                overrideContext = Object.assign({}, scope.overrideContext);\r\n                overrideContext.parentOverrideContext = scope.overrideContext.__parentOverrideContext;\r\n            }\r\n            this.viewModel.bind(scope.bindingContext, overrideContext);\r\n        }\r\n    };\r\n    Controller.prototype.unbind = function () {\r\n        if (this.isBound) {\r\n            var boundProperties = this.boundProperties;\r\n            var i = void 0;\r\n            var ii = void 0;\r\n            this.isBound = false;\r\n            this.scope = null;\r\n            if (this.view !== null) {\r\n                this.view.unbind();\r\n            }\r\n            if (this.behavior.handlesUnbind) {\r\n                this.viewModel.unbind();\r\n            }\r\n            if (this.elementEvents !== null) {\r\n                this.elementEvents.disposeAll();\r\n            }\r\n            for (i = 0, ii = boundProperties.length; i < ii; ++i) {\r\n                boundProperties[i].binding.unbind();\r\n            }\r\n        }\r\n    };\r\n    Controller.prototype.attached = function () {\r\n        if (this.isAttached) {\r\n            return;\r\n        }\r\n        this.isAttached = true;\r\n        if (this.behavior.handlesAttached) {\r\n            this.viewModel.attached();\r\n        }\r\n        if (this.view !== null) {\r\n            this.view.attached();\r\n        }\r\n    };\r\n    Controller.prototype.detached = function () {\r\n        if (this.isAttached) {\r\n            this.isAttached = false;\r\n            if (this.view !== null) {\r\n                this.view.detached();\r\n            }\r\n            if (this.behavior.handlesDetached) {\r\n                this.viewModel.detached();\r\n            }\r\n        }\r\n    };\r\n    return Controller;\r\n}());\n\nvar lastProviderId = 0;\r\nfunction nextProviderId() {\r\n    return ++lastProviderId;\r\n}\r\nfunction doProcessContent() { return true; }\r\nfunction doProcessAttributes() { }\r\nvar HtmlBehaviorResource = (function () {\r\n    function HtmlBehaviorResource() {\r\n        this.elementName = null;\r\n        this.attributeName = null;\r\n        this.attributeDefaultBindingMode = undefined;\r\n        this.liftsContent = false;\r\n        this.targetShadowDOM = false;\r\n        this.shadowDOMOptions = null;\r\n        this.processAttributes = doProcessAttributes;\r\n        this.processContent = doProcessContent;\r\n        this.usesShadowDOM = false;\r\n        this.childBindings = null;\r\n        this.hasDynamicOptions = false;\r\n        this.containerless = false;\r\n        this.properties = [];\r\n        this.attributes = {};\r\n        this.isInitialized = false;\r\n        this.primaryProperty = null;\r\n    }\r\n    HtmlBehaviorResource.convention = function (name, existing) {\r\n        var behavior;\r\n        if (name.endsWith('CustomAttribute')) {\r\n            behavior = existing || new HtmlBehaviorResource();\r\n            behavior.attributeName = _hyphenate(name.substring(0, name.length - 15));\r\n        }\r\n        if (name.endsWith('CustomElement')) {\r\n            behavior = existing || new HtmlBehaviorResource();\r\n            behavior.elementName = _hyphenate(name.substring(0, name.length - 13));\r\n        }\r\n        return behavior;\r\n    };\r\n    HtmlBehaviorResource.prototype.addChildBinding = function (behavior) {\r\n        if (this.childBindings === null) {\r\n            this.childBindings = [];\r\n        }\r\n        this.childBindings.push(behavior);\r\n    };\r\n    HtmlBehaviorResource.prototype.initialize = function (container, target) {\r\n        var proto = target.prototype;\r\n        var properties = this.properties;\r\n        var attributeName = this.attributeName;\r\n        var attributeDefaultBindingMode = this.attributeDefaultBindingMode;\r\n        var i;\r\n        var ii;\r\n        var current;\r\n        if (this.isInitialized) {\r\n            return;\r\n        }\r\n        this.isInitialized = true;\r\n        target.__providerId__ = nextProviderId();\r\n        this.observerLocator = container.get(ObserverLocator);\r\n        this.taskQueue = container.get(TaskQueue);\r\n        this.target = target;\r\n        this.usesShadowDOM = this.targetShadowDOM && FEATURE.shadowDOM;\r\n        this.handlesCreated = ('created' in proto);\r\n        this.handlesBind = ('bind' in proto);\r\n        this.handlesUnbind = ('unbind' in proto);\r\n        this.handlesAttached = ('attached' in proto);\r\n        this.handlesDetached = ('detached' in proto);\r\n        this.htmlName = this.elementName || this.attributeName;\r\n        if (attributeName !== null) {\r\n            if (properties.length === 0) {\r\n                new BindableProperty({\r\n                    name: 'value',\r\n                    changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\r\n                    attribute: attributeName,\r\n                    defaultBindingMode: attributeDefaultBindingMode\r\n                }).registerWith(target, this);\r\n            }\r\n            current = properties[0];\r\n            if (properties.length === 1 && current.name === 'value') {\r\n                current.isDynamic = current.hasOptions = this.hasDynamicOptions;\r\n                current.defineOn(target, this);\r\n            }\r\n            else {\r\n                for (i = 0, ii = properties.length; i < ii; ++i) {\r\n                    properties[i].defineOn(target, this);\r\n                    if (properties[i].primaryProperty) {\r\n                        if (this.primaryProperty) {\r\n                            throw new Error('Only one bindable property on a custom element can be defined as the default');\r\n                        }\r\n                        this.primaryProperty = properties[i];\r\n                    }\r\n                }\r\n                current = new BindableProperty({\r\n                    name: 'value',\r\n                    changeHandler: 'valueChanged' in proto ? 'valueChanged' : null,\r\n                    attribute: attributeName,\r\n                    defaultBindingMode: attributeDefaultBindingMode\r\n                });\r\n                current.hasOptions = true;\r\n                current.registerWith(target, this);\r\n            }\r\n        }\r\n        else {\r\n            for (i = 0, ii = properties.length; i < ii; ++i) {\r\n                properties[i].defineOn(target, this);\r\n            }\r\n            this._copyInheritedProperties(container, target);\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype.register = function (registry, name) {\r\n        var _this = this;\r\n        if (this.attributeName !== null) {\r\n            registry.registerAttribute(name || this.attributeName, this, this.attributeName);\r\n            if (Array.isArray(this.aliases)) {\r\n                this.aliases\r\n                    .forEach(function (alias) {\r\n                    registry.registerAttribute(alias, _this, _this.attributeName);\r\n                });\r\n            }\r\n        }\r\n        if (this.elementName !== null) {\r\n            registry.registerElement(name || this.elementName, this);\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype.aliases = function (aliases) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    HtmlBehaviorResource.prototype.load = function (container, target, loadContext, viewStrategy, transientView) {\r\n        var _this = this;\r\n        var options;\r\n        if (this.elementName !== null) {\r\n            viewStrategy = container.get(ViewLocator).getViewStrategy(viewStrategy || this.viewStrategy || target);\r\n            options = new ViewCompileInstruction(this.targetShadowDOM, true);\r\n            if (!viewStrategy.moduleId) {\r\n                viewStrategy.moduleId = Origin.get(target).moduleId;\r\n            }\r\n            return viewStrategy\r\n                .loadViewFactory(container.get(ViewEngine), options, loadContext, target)\r\n                .then(function (viewFactory) {\r\n                if (!transientView || !_this.viewFactory) {\r\n                    _this.viewFactory = viewFactory;\r\n                }\r\n                return viewFactory;\r\n            });\r\n        }\r\n        return Promise.resolve(this);\r\n    };\r\n    HtmlBehaviorResource.prototype.compile = function (compiler, resources, node, instruction, parentNode) {\r\n        if (this.liftsContent) {\r\n            if (!instruction.viewFactory) {\r\n                var template = DOM.createElement('template');\r\n                var fragment = DOM.createDocumentFragment();\r\n                var cacheSize = node.getAttribute('view-cache');\r\n                var part = node.getAttribute('part');\r\n                node.removeAttribute(instruction.originalAttrName);\r\n                DOM.replaceNode(template, node, parentNode);\r\n                fragment.appendChild(node);\r\n                instruction.viewFactory = compiler.compile(fragment, resources);\r\n                if (part) {\r\n                    instruction.viewFactory.part = part;\r\n                    node.removeAttribute('part');\r\n                }\r\n                if (cacheSize) {\r\n                    instruction.viewFactory.setCacheSize(cacheSize);\r\n                    node.removeAttribute('view-cache');\r\n                }\r\n                node = template;\r\n            }\r\n        }\r\n        else if (this.elementName !== null) {\r\n            var partReplacements = {};\r\n            if (this.processContent(compiler, resources, node, instruction) && node.hasChildNodes()) {\r\n                var currentChild = node.firstChild;\r\n                var contentElement = this.usesShadowDOM ? null : DOM.createElement('au-content');\r\n                var nextSibling = void 0;\r\n                var toReplace = void 0;\r\n                while (currentChild) {\r\n                    nextSibling = currentChild.nextSibling;\r\n                    if (currentChild.tagName === 'TEMPLATE' && (toReplace = currentChild.getAttribute('replace-part'))) {\r\n                        partReplacements[toReplace] = compiler.compile(currentChild, resources);\r\n                        DOM.removeNode(currentChild, parentNode);\r\n                        instruction.partReplacements = partReplacements;\r\n                    }\r\n                    else if (contentElement !== null) {\r\n                        if (currentChild.nodeType === 3 && _isAllWhitespace(currentChild)) {\r\n                            DOM.removeNode(currentChild, parentNode);\r\n                        }\r\n                        else {\r\n                            contentElement.appendChild(currentChild);\r\n                        }\r\n                    }\r\n                    currentChild = nextSibling;\r\n                }\r\n                if (contentElement !== null && contentElement.hasChildNodes()) {\r\n                    node.appendChild(contentElement);\r\n                }\r\n                instruction.skipContentProcessing = false;\r\n            }\r\n            else {\r\n                instruction.skipContentProcessing = true;\r\n            }\r\n        }\r\n        else if (!this.processContent(compiler, resources, node, instruction)) {\r\n            instruction.skipContentProcessing = true;\r\n        }\r\n        return node;\r\n    };\r\n    HtmlBehaviorResource.prototype.create = function (container, instruction, element, bindings) {\r\n        var viewHost;\r\n        var au = null;\r\n        instruction = instruction || BehaviorInstruction.normal;\r\n        element = element || null;\r\n        bindings = bindings || null;\r\n        if (this.elementName !== null && element) {\r\n            if (this.usesShadowDOM) {\r\n                viewHost = element.attachShadow(this.shadowDOMOptions);\r\n                container.registerInstance(DOM.boundary, viewHost);\r\n            }\r\n            else {\r\n                viewHost = element;\r\n                if (this.targetShadowDOM) {\r\n                    container.registerInstance(DOM.boundary, viewHost);\r\n                }\r\n            }\r\n        }\r\n        if (element !== null) {\r\n            element.au = au = element.au || {};\r\n        }\r\n        var viewModel = instruction.viewModel || container.get(this.target);\r\n        var controller = new Controller(this, instruction, viewModel, container);\r\n        var childBindings = this.childBindings;\r\n        var viewFactory;\r\n        if (this.liftsContent) {\r\n            au.controller = controller;\r\n        }\r\n        else if (this.elementName !== null) {\r\n            viewFactory = instruction.viewFactory || this.viewFactory;\r\n            container.viewModel = viewModel;\r\n            if (viewFactory) {\r\n                controller.view = viewFactory.create(container, instruction, element);\r\n            }\r\n            if (element !== null) {\r\n                au.controller = controller;\r\n                if (controller.view) {\r\n                    if (!this.usesShadowDOM && (element.childNodes.length === 1 || element.contentElement)) {\r\n                        var contentElement = element.childNodes[0] || element.contentElement;\r\n                        controller.view.contentView = { fragment: contentElement };\r\n                        contentElement.parentNode && DOM.removeNode(contentElement);\r\n                    }\r\n                    if (instruction.anchorIsContainer) {\r\n                        if (childBindings !== null) {\r\n                            for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                                controller.view.addBinding(childBindings[i].create(element, viewModel, controller));\r\n                            }\r\n                        }\r\n                        controller.view.appendNodesTo(viewHost);\r\n                    }\r\n                    else {\r\n                        controller.view.insertNodesBefore(viewHost);\r\n                    }\r\n                }\r\n                else if (childBindings !== null) {\r\n                    for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                        bindings.push(childBindings[i].create(element, viewModel, controller));\r\n                    }\r\n                }\r\n            }\r\n            else if (controller.view) {\r\n                controller.view.controller = controller;\r\n                if (childBindings !== null) {\r\n                    for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                        controller.view.addBinding(childBindings[i].create(instruction.host, viewModel, controller));\r\n                    }\r\n                }\r\n            }\r\n            else if (childBindings !== null) {\r\n                for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                    bindings.push(childBindings[i].create(instruction.host, viewModel, controller));\r\n                }\r\n            }\r\n        }\r\n        else if (childBindings !== null) {\r\n            for (var i = 0, ii = childBindings.length; i < ii; ++i) {\r\n                bindings.push(childBindings[i].create(element, viewModel, controller));\r\n            }\r\n        }\r\n        if (au !== null) {\r\n            au[this.htmlName] = controller;\r\n        }\r\n        if (instruction.initiatedByBehavior && viewFactory) {\r\n            controller.view.created();\r\n        }\r\n        return controller;\r\n    };\r\n    HtmlBehaviorResource.prototype._ensurePropertiesDefined = function (instance, lookup) {\r\n        var properties;\r\n        var i;\r\n        var ii;\r\n        var observer;\r\n        if ('__propertiesDefined__' in lookup) {\r\n            return;\r\n        }\r\n        lookup.__propertiesDefined__ = true;\r\n        properties = this.properties;\r\n        for (i = 0, ii = properties.length; i < ii; ++i) {\r\n            observer = properties[i].createObserver(instance);\r\n            if (observer !== undefined) {\r\n                lookup[observer.propertyName] = observer;\r\n            }\r\n        }\r\n    };\r\n    HtmlBehaviorResource.prototype._copyInheritedProperties = function (container, target) {\r\n        var behavior;\r\n        var derived = target;\r\n        while (true) {\r\n            var proto = Object.getPrototypeOf(target.prototype);\r\n            target = proto && proto.constructor;\r\n            if (!target) {\r\n                return;\r\n            }\r\n            behavior = metadata.getOwn(metadata.resource, target);\r\n            if (behavior) {\r\n                break;\r\n            }\r\n        }\r\n        behavior.initialize(container, target);\r\n        var _loop_1 = function (i, ii) {\r\n            var prop = behavior.properties[i];\r\n            if (this_1.properties.some(function (p) { return p.name === prop.name; })) {\r\n                return \"continue\";\r\n            }\r\n            new BindableProperty(prop).registerWith(derived, this_1);\r\n        };\r\n        var this_1 = this;\r\n        for (var i = 0, ii = behavior.properties.length; i < ii; ++i) {\r\n            _loop_1(i);\r\n        }\r\n    };\r\n    return HtmlBehaviorResource;\r\n}());\n\nfunction register(lookup, name, resource, type) {\r\n    if (!name) {\r\n        return;\r\n    }\r\n    var existing = lookup[name];\r\n    if (existing) {\r\n        if (existing !== resource) {\r\n            throw new Error(\"Attempted to register \".concat(type, \" when one with the same name already exists. Name: \").concat(name, \".\"));\r\n        }\r\n        return;\r\n    }\r\n    lookup[name] = resource;\r\n}\r\nfunction validateBehaviorName(name, type) {\r\n    if (/[A-Z]/.test(name)) {\r\n        var newName = _hyphenate(name);\r\n        LogManager\r\n            .getLogger('templating')\r\n            .warn(\"'\".concat(name, \"' is not a valid \").concat(type, \" name and has been converted to '\").concat(newName, \"'. Upper-case letters are not allowed because the DOM is not case-sensitive.\"));\r\n        return newName;\r\n    }\r\n    return name;\r\n}\r\nvar conventionMark = '__au_resource__';\r\nvar ViewResources = (function () {\r\n    function ViewResources(parent, viewUrl) {\r\n        this.bindingLanguage = null;\r\n        this.parent = parent || null;\r\n        this.hasParent = this.parent !== null;\r\n        this.viewUrl = viewUrl || '';\r\n        this.lookupFunctions = {\r\n            valueConverters: this.getValueConverter.bind(this),\r\n            bindingBehaviors: this.getBindingBehavior.bind(this)\r\n        };\r\n        this.attributes = Object.create(null);\r\n        this.elements = Object.create(null);\r\n        this.valueConverters = Object.create(null);\r\n        this.bindingBehaviors = Object.create(null);\r\n        this.attributeMap = Object.create(null);\r\n        this.values = Object.create(null);\r\n        this.beforeCompile = this.afterCompile = this.beforeCreate = this.afterCreate = this.beforeBind = this.beforeUnbind = false;\r\n    }\r\n    ViewResources.convention = function (target, existing) {\r\n        var resource;\r\n        if (existing && conventionMark in existing) {\r\n            return existing;\r\n        }\r\n        if ('$resource' in target) {\r\n            var config = target.$resource;\r\n            if (typeof config === 'string') {\r\n                resource = existing || new HtmlBehaviorResource();\r\n                resource[conventionMark] = true;\r\n                if (!resource.elementName) {\r\n                    resource.elementName = validateBehaviorName(config, 'custom element');\r\n                }\r\n            }\r\n            else {\r\n                if (typeof config === 'function') {\r\n                    config = config.call(target);\r\n                }\r\n                if (typeof config === 'string') {\r\n                    config = { name: config };\r\n                }\r\n                config = Object.assign({}, config);\r\n                var resourceType = config.type || 'element';\r\n                var name_1 = config.name;\r\n                switch (resourceType) {\r\n                    case 'element':\r\n                    case 'attribute':\r\n                        resource = existing || new HtmlBehaviorResource();\r\n                        resource[conventionMark] = true;\r\n                        if (resourceType === 'element') {\r\n                            if (!resource.elementName) {\r\n                                resource.elementName = name_1\r\n                                    ? validateBehaviorName(name_1, 'custom element')\r\n                                    : _hyphenate(target.name);\r\n                            }\r\n                        }\r\n                        else {\r\n                            if (!resource.attributeName) {\r\n                                resource.attributeName = name_1\r\n                                    ? validateBehaviorName(name_1, 'custom attribute')\r\n                                    : _hyphenate(target.name);\r\n                            }\r\n                        }\r\n                        if ('templateController' in config) {\r\n                            config.liftsContent = config.templateController;\r\n                            delete config.templateController;\r\n                        }\r\n                        if ('defaultBindingMode' in config && resource.attributeDefaultBindingMode !== undefined) {\r\n                            config.attributeDefaultBindingMode = config.defaultBindingMode;\r\n                            delete config.defaultBindingMode;\r\n                        }\r\n                        delete config.name;\r\n                        Object.assign(resource, config);\r\n                        break;\r\n                    case 'valueConverter':\r\n                        resource = new ValueConverterResource(camelCase(name_1 || target.name));\r\n                        break;\r\n                    case 'bindingBehavior':\r\n                        resource = new BindingBehaviorResource(camelCase(name_1 || target.name));\r\n                        break;\r\n                    case 'viewEngineHooks':\r\n                        resource = new ViewEngineHooksResource();\r\n                        break;\r\n                }\r\n            }\r\n            if (resource instanceof HtmlBehaviorResource) {\r\n                var bindables = typeof config === 'string' ? undefined : config.bindables;\r\n                var currentProps = resource.properties;\r\n                if (Array.isArray(bindables)) {\r\n                    for (var i = 0, ii = bindables.length; ii > i; ++i) {\r\n                        var prop = bindables[i];\r\n                        if (!prop || (typeof prop !== 'string' && !prop.name)) {\r\n                            throw new Error(\"Invalid bindable property at \\\"\".concat(i, \"\\\" for class \\\"\").concat(target.name, \"\\\". Expected either a string or an object with \\\"name\\\" property.\"));\r\n                        }\r\n                        var newProp = new BindableProperty(prop);\r\n                        var existed = false;\r\n                        for (var j = 0, jj = currentProps.length; jj > j; ++j) {\r\n                            if (currentProps[j].name === newProp.name) {\r\n                                existed = true;\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (existed) {\r\n                            continue;\r\n                        }\r\n                        newProp.registerWith(target, resource);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return resource;\r\n    };\r\n    ViewResources.prototype._tryAddHook = function (obj, name) {\r\n        if (typeof obj[name] === 'function') {\r\n            var func = obj[name].bind(obj);\r\n            var counter = 1;\r\n            var callbackName = void 0;\r\n            while (this[callbackName = name + counter.toString()] !== undefined) {\r\n                counter++;\r\n            }\r\n            this[name] = true;\r\n            this[callbackName] = func;\r\n        }\r\n    };\r\n    ViewResources.prototype._invokeHook = function (name, one, two, three, four) {\r\n        if (this.hasParent) {\r\n            this.parent._invokeHook(name, one, two, three, four);\r\n        }\r\n        if (this[name]) {\r\n            this[name + '1'](one, two, three, four);\r\n            var callbackName = name + '2';\r\n            if (this[callbackName]) {\r\n                this[callbackName](one, two, three, four);\r\n                callbackName = name + '3';\r\n                if (this[callbackName]) {\r\n                    this[callbackName](one, two, three, four);\r\n                    var counter = 4;\r\n                    while (this[callbackName = name + counter.toString()] !== undefined) {\r\n                        this[callbackName](one, two, three, four);\r\n                        counter++;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ViewResources.prototype.registerViewEngineHooks = function (hooks) {\r\n        this._tryAddHook(hooks, 'beforeCompile');\r\n        this._tryAddHook(hooks, 'afterCompile');\r\n        this._tryAddHook(hooks, 'beforeCreate');\r\n        this._tryAddHook(hooks, 'afterCreate');\r\n        this._tryAddHook(hooks, 'beforeBind');\r\n        this._tryAddHook(hooks, 'beforeUnbind');\r\n    };\r\n    ViewResources.prototype.getBindingLanguage = function (bindingLanguageFallback) {\r\n        return this.bindingLanguage || (this.bindingLanguage = bindingLanguageFallback);\r\n    };\r\n    ViewResources.prototype.patchInParent = function (newParent) {\r\n        var originalParent = this.parent;\r\n        this.parent = newParent || null;\r\n        this.hasParent = this.parent !== null;\r\n        if (newParent.parent === null) {\r\n            newParent.parent = originalParent;\r\n            newParent.hasParent = originalParent !== null;\r\n        }\r\n    };\r\n    ViewResources.prototype.relativeToView = function (path) {\r\n        return relativeToFile(path, this.viewUrl);\r\n    };\r\n    ViewResources.prototype.registerElement = function (tagName, behavior) {\r\n        register(this.elements, tagName, behavior, 'an Element');\r\n    };\r\n    ViewResources.prototype.getElement = function (tagName) {\r\n        return this.elements[tagName] || (this.hasParent ? this.parent.getElement(tagName) : null);\r\n    };\r\n    ViewResources.prototype.mapAttribute = function (attribute) {\r\n        return this.attributeMap[attribute] || (this.hasParent ? this.parent.mapAttribute(attribute) : null);\r\n    };\r\n    ViewResources.prototype.registerAttribute = function (attribute, behavior, knownAttribute) {\r\n        this.attributeMap[attribute] = knownAttribute;\r\n        register(this.attributes, attribute, behavior, 'an Attribute');\r\n    };\r\n    ViewResources.prototype.getAttribute = function (attribute) {\r\n        return this.attributes[attribute] || (this.hasParent ? this.parent.getAttribute(attribute) : null);\r\n    };\r\n    ViewResources.prototype.registerValueConverter = function (name, valueConverter) {\r\n        register(this.valueConverters, name, valueConverter, 'a ValueConverter');\r\n    };\r\n    ViewResources.prototype.getValueConverter = function (name) {\r\n        return this.valueConverters[name] || (this.hasParent ? this.parent.getValueConverter(name) : null);\r\n    };\r\n    ViewResources.prototype.registerBindingBehavior = function (name, bindingBehavior) {\r\n        register(this.bindingBehaviors, name, bindingBehavior, 'a BindingBehavior');\r\n    };\r\n    ViewResources.prototype.getBindingBehavior = function (name) {\r\n        return this.bindingBehaviors[name] || (this.hasParent ? this.parent.getBindingBehavior(name) : null);\r\n    };\r\n    ViewResources.prototype.registerValue = function (name, value) {\r\n        register(this.values, name, value, 'a value');\r\n    };\r\n    ViewResources.prototype.getValue = function (name) {\r\n        return this.values[name] || (this.hasParent ? this.parent.getValue(name) : null);\r\n    };\r\n    ViewResources.prototype.autoRegister = function (container, impl) {\r\n        var resourceTypeMeta = metadata.getOwn(metadata.resource, impl);\r\n        if (resourceTypeMeta) {\r\n            if (resourceTypeMeta instanceof HtmlBehaviorResource) {\r\n                ViewResources.convention(impl, resourceTypeMeta);\r\n                if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                    HtmlBehaviorResource.convention(impl.name, resourceTypeMeta);\r\n                }\r\n                if (resourceTypeMeta.attributeName === null && resourceTypeMeta.elementName === null) {\r\n                    resourceTypeMeta.elementName = _hyphenate(impl.name);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            resourceTypeMeta = ViewResources.convention(impl)\r\n                || HtmlBehaviorResource.convention(impl.name)\r\n                || ValueConverterResource.convention(impl.name)\r\n                || BindingBehaviorResource.convention(impl.name)\r\n                || ViewEngineHooksResource.convention(impl.name);\r\n            if (!resourceTypeMeta) {\r\n                resourceTypeMeta = new HtmlBehaviorResource();\r\n                resourceTypeMeta.elementName = _hyphenate(impl.name);\r\n            }\r\n            metadata.define(metadata.resource, resourceTypeMeta, impl);\r\n        }\r\n        resourceTypeMeta.initialize(container, impl);\r\n        resourceTypeMeta.register(this, undefined);\r\n        return resourceTypeMeta;\r\n    };\r\n    return ViewResources;\r\n}());\n\nvar viewStrategy = protocol.create('aurelia:view-strategy', {\r\n    validate: function (target) {\r\n        if (!(typeof target.loadViewFactory === 'function')) {\r\n            return 'View strategies must implement: loadViewFactory(viewEngine: ViewEngine, compileInstruction: ViewCompileInstruction, loadContext?: ResourceLoadContext): Promise<ViewFactory>';\r\n        }\r\n        return true;\r\n    },\r\n    compose: function (target) {\r\n        if (!(typeof target.makeRelativeTo === 'function')) {\r\n            target.makeRelativeTo = PLATFORM.noop;\r\n        }\r\n    }\r\n});\r\nvar RelativeViewStrategy = (function () {\r\n    function RelativeViewStrategy(path) {\r\n        this.path = path;\r\n        this.absolutePath = null;\r\n    }\r\n    RelativeViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        if (this.absolutePath === null && this.moduleId) {\r\n            this.absolutePath = relativeToFile(this.path, this.moduleId);\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(this.absolutePath || this.path, compileInstruction, loadContext, target);\r\n    };\r\n    RelativeViewStrategy.prototype.makeRelativeTo = function (file) {\r\n        if (this.absolutePath === null) {\r\n            this.absolutePath = relativeToFile(this.path, file);\r\n        }\r\n    };\r\n    RelativeViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], RelativeViewStrategy);\r\n    return RelativeViewStrategy;\r\n}());\r\nvar ConventionalViewStrategy = (function () {\r\n    function ConventionalViewStrategy(viewLocator, origin) {\r\n        this.moduleId = origin.moduleId;\r\n        this.viewUrl = viewLocator.convertOriginToViewUrl(origin);\r\n    }\r\n    ConventionalViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(this.viewUrl, compileInstruction, loadContext, target);\r\n    };\r\n    ConventionalViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], ConventionalViewStrategy);\r\n    return ConventionalViewStrategy;\r\n}());\r\nvar NoViewStrategy = (function () {\r\n    function NoViewStrategy(dependencies, dependencyBaseUrl) {\r\n        this.dependencies = dependencies || null;\r\n        this.dependencyBaseUrl = dependencyBaseUrl || '';\r\n    }\r\n    NoViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        var dependencies = this.dependencies;\r\n        if (entry && entry.factoryIsReady) {\r\n            return Promise.resolve(null);\r\n        }\r\n        this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\r\n        entry.dependencies = [];\r\n        entry.templateIsLoaded = true;\r\n        if (dependencies !== null) {\r\n            for (var i = 0, ii = dependencies.length; i < ii; ++i) {\r\n                var current = dependencies[i];\r\n                if (typeof current === 'string' || typeof current === 'function') {\r\n                    entry.addDependency(current);\r\n                }\r\n                else {\r\n                    entry.addDependency(current.from, current.as);\r\n                }\r\n            }\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    NoViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], NoViewStrategy);\r\n    return NoViewStrategy;\r\n}());\r\nvar TemplateRegistryViewStrategy = (function () {\r\n    function TemplateRegistryViewStrategy(moduleId, entry) {\r\n        this.moduleId = moduleId;\r\n        this.entry = entry;\r\n    }\r\n    TemplateRegistryViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        if (entry.factoryIsReady) {\r\n            return Promise.resolve(entry.factory);\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    TemplateRegistryViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], TemplateRegistryViewStrategy);\r\n    return TemplateRegistryViewStrategy;\r\n}());\r\nvar InlineViewStrategy = (function () {\r\n    function InlineViewStrategy(markup, dependencies, dependencyBaseUrl) {\r\n        this.markup = markup;\r\n        this.dependencies = dependencies || null;\r\n        this.dependencyBaseUrl = dependencyBaseUrl || '';\r\n    }\r\n    InlineViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var entry = this.entry;\r\n        var dependencies = this.dependencies;\r\n        if (entry && entry.factoryIsReady) {\r\n            return Promise.resolve(entry.factory);\r\n        }\r\n        this.entry = entry = new TemplateRegistryEntry(this.moduleId || this.dependencyBaseUrl);\r\n        entry.template = DOM.createTemplateFromMarkup(this.markup);\r\n        if (dependencies !== null) {\r\n            for (var i = 0, ii = dependencies.length; i < ii; ++i) {\r\n                var current = dependencies[i];\r\n                if (typeof current === 'string' || typeof current === 'function') {\r\n                    entry.addDependency(current);\r\n                }\r\n                else {\r\n                    entry.addDependency(current.from, current.as);\r\n                }\r\n            }\r\n        }\r\n        compileInstruction.associatedModuleId = this.moduleId;\r\n        return viewEngine.loadViewFactory(entry, compileInstruction, loadContext, target);\r\n    };\r\n    InlineViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], InlineViewStrategy);\r\n    return InlineViewStrategy;\r\n}());\r\nvar StaticViewStrategy = (function () {\r\n    function StaticViewStrategy(config) {\r\n        if (typeof config === 'string' || (config instanceof DOM.Element && config.tagName === 'TEMPLATE')) {\r\n            config = {\r\n                template: config\r\n            };\r\n        }\r\n        this.template = config.template;\r\n        this.dependencies = config.dependencies || [];\r\n        this.factoryIsReady = false;\r\n        this.onReady = null;\r\n        this.moduleId = 'undefined';\r\n    }\r\n    StaticViewStrategy.prototype.loadViewFactory = function (viewEngine, compileInstruction, loadContext, target) {\r\n        var _this = this;\r\n        if (this.factoryIsReady) {\r\n            return Promise.resolve(this.factory);\r\n        }\r\n        var $deps = this.dependencies;\r\n        var deps = typeof $deps === 'function' ? $deps() : $deps;\r\n        deps = deps ? deps : [];\r\n        deps = Array.isArray(deps) ? deps : [deps];\r\n        return Promise.all(deps).then(function (dependencies) {\r\n            var container = viewEngine.container;\r\n            var appResources = viewEngine.appResources;\r\n            var viewCompiler = viewEngine.viewCompiler;\r\n            var viewResources = new ViewResources(appResources);\r\n            var resource;\r\n            var elDeps = [];\r\n            if (target) {\r\n                viewResources.autoRegister(container, target);\r\n            }\r\n            for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\r\n                var dep = dependencies_1[_i];\r\n                if (typeof dep === 'function') {\r\n                    resource = viewResources.autoRegister(container, dep);\r\n                    if (resource.elementName !== null) {\r\n                        elDeps.push(resource);\r\n                    }\r\n                }\r\n                else if (dep && typeof dep === 'object') {\r\n                    for (var key in dep) {\r\n                        var exported = dep[key];\r\n                        if (typeof exported === 'function') {\r\n                            resource = viewResources.autoRegister(container, exported);\r\n                            if (resource.elementName !== null) {\r\n                                elDeps.push(resource);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    throw new Error(\"dependency neither function nor object. Received: \\\"\".concat(typeof dep, \"\\\"\"));\r\n                }\r\n            }\r\n            return Promise.all(elDeps.map(function (el) { return el.load(container, el.target); })).then(function () {\r\n                var factory = _this.template !== null\r\n                    ? viewCompiler.compile(_this.template, viewResources, compileInstruction)\r\n                    : null;\r\n                _this.factoryIsReady = true;\r\n                _this.factory = factory;\r\n                return factory;\r\n            });\r\n        });\r\n    };\r\n    StaticViewStrategy = __decorate([\r\n        viewStrategy()\r\n    ], StaticViewStrategy);\r\n    return StaticViewStrategy;\r\n}());\n\nfunction remove(viewSlot, previous) {\r\n    return Array.isArray(previous)\r\n        ? viewSlot.removeMany(previous, true)\r\n        : viewSlot.remove(previous, true);\r\n}\r\nvar SwapStrategies = {\r\n    before: function (viewSlot, previous, callback) {\r\n        return (previous === undefined)\r\n            ? callback()\r\n            : callback().then(function () { return remove(viewSlot, previous); });\r\n    },\r\n    with: function (viewSlot, previous, callback) {\r\n        return (previous === undefined)\r\n            ? callback()\r\n            : Promise.all([remove(viewSlot, previous), callback()]);\r\n    },\r\n    after: function (viewSlot, previous, callback) {\r\n        return Promise.resolve(viewSlot.removeAll(true)).then(callback);\r\n    }\r\n};\n\nfunction tryActivateViewModel(context) {\r\n    if (context.skipActivation || typeof context.viewModel.activate !== 'function') {\r\n        return Promise.resolve();\r\n    }\r\n    return context.viewModel.activate(context.model) || Promise.resolve();\r\n}\r\nvar CompositionEngine = (function () {\r\n    function CompositionEngine(viewEngine, viewLocator) {\r\n        this.viewEngine = viewEngine;\r\n        this.viewLocator = viewLocator;\r\n    }\r\n    CompositionEngine.prototype._swap = function (context, view) {\r\n        var swapStrategy = SwapStrategies[context.swapOrder] || SwapStrategies.after;\r\n        var previousViews = context.viewSlot.children.slice();\r\n        return swapStrategy(context.viewSlot, previousViews, function () {\r\n            return Promise.resolve(context.viewSlot.add(view)).then(function () {\r\n                if (context.currentController) {\r\n                    context.currentController.unbind();\r\n                }\r\n            });\r\n        }).then(function () {\r\n            if (context.compositionTransactionNotifier) {\r\n                context.compositionTransactionNotifier.done();\r\n            }\r\n        });\r\n    };\r\n    CompositionEngine.prototype._createControllerAndSwap = function (context) {\r\n        var _this = this;\r\n        return this.createController(context).then(function (controller) {\r\n            if (context.compositionTransactionOwnershipToken) {\r\n                return context.compositionTransactionOwnershipToken\r\n                    .waitForCompositionComplete()\r\n                    .then(function () {\r\n                    controller.automate(context.overrideContext, context.owningView);\r\n                    return _this._swap(context, controller.view);\r\n                })\r\n                    .then(function () { return controller; });\r\n            }\r\n            controller.automate(context.overrideContext, context.owningView);\r\n            return _this._swap(context, controller.view).then(function () { return controller; });\r\n        });\r\n    };\r\n    CompositionEngine.prototype.createController = function (context) {\r\n        var _this = this;\r\n        var childContainer;\r\n        var viewModel;\r\n        var viewModelResource;\r\n        var m;\r\n        return this\r\n            .ensureViewModel(context)\r\n            .then(tryActivateViewModel)\r\n            .then(function () {\r\n            childContainer = context.childContainer;\r\n            viewModel = context.viewModel;\r\n            viewModelResource = context.viewModelResource;\r\n            m = viewModelResource.metadata;\r\n            var viewStrategy = _this.viewLocator.getViewStrategy(context.view || viewModel);\r\n            if (context.viewResources) {\r\n                viewStrategy.makeRelativeTo(context.viewResources.viewUrl);\r\n            }\r\n            return m.load(childContainer, viewModelResource.value, null, viewStrategy, true);\r\n        }).then(function (viewFactory) { return m.create(childContainer, BehaviorInstruction.dynamic(context.host, viewModel, viewFactory)); });\r\n    };\r\n    CompositionEngine.prototype.ensureViewModel = function (context) {\r\n        var childContainer = context.childContainer = (context.childContainer || context.container.createChild());\r\n        if (typeof context.viewModel === 'string') {\r\n            context.viewModel = context.viewResources\r\n                ? context.viewResources.relativeToView(context.viewModel)\r\n                : context.viewModel;\r\n            return this.viewEngine.importViewModelResource(context.viewModel).then(function (viewModelResource) {\r\n                childContainer.autoRegister(viewModelResource.value);\r\n                if (context.host) {\r\n                    childContainer.registerInstance(DOM.Element, context.host);\r\n                }\r\n                context.viewModel = childContainer.viewModel = childContainer.get(viewModelResource.value);\r\n                context.viewModelResource = viewModelResource;\r\n                return context;\r\n            });\r\n        }\r\n        var ctor = context.viewModel.constructor;\r\n        var isClass = typeof context.viewModel === 'function';\r\n        if (isClass) {\r\n            ctor = context.viewModel;\r\n            childContainer.autoRegister(ctor);\r\n        }\r\n        var m = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, ctor);\r\n        m.elementName = m.elementName || 'dynamic-element';\r\n        m.initialize(isClass ? childContainer : (context.container || childContainer), ctor);\r\n        context.viewModelResource = { metadata: m, value: ctor };\r\n        if (context.host) {\r\n            childContainer.registerInstance(DOM.Element, context.host);\r\n        }\r\n        childContainer.viewModel = context.viewModel = isClass ? childContainer.get(ctor) : context.viewModel;\r\n        return Promise.resolve(context);\r\n    };\r\n    CompositionEngine.prototype.compose = function (context) {\r\n        var _this = this;\r\n        context.childContainer = context.childContainer || context.container.createChild();\r\n        context.view = this.viewLocator.getViewStrategy(context.view);\r\n        var transaction = context.childContainer.get(CompositionTransaction);\r\n        var compositionTransactionOwnershipToken = transaction.tryCapture();\r\n        if (compositionTransactionOwnershipToken) {\r\n            context.compositionTransactionOwnershipToken = compositionTransactionOwnershipToken;\r\n        }\r\n        else {\r\n            context.compositionTransactionNotifier = transaction.enlist();\r\n        }\r\n        if (context.viewModel) {\r\n            return this._createControllerAndSwap(context);\r\n        }\r\n        else if (context.view) {\r\n            if (context.viewResources) {\r\n                context.view.makeRelativeTo(context.viewResources.viewUrl);\r\n            }\r\n            return context.view.loadViewFactory(this.viewEngine, new ViewCompileInstruction()).then(function (viewFactory) {\r\n                var result = viewFactory.create(context.childContainer);\r\n                result.bind(context.bindingContext, context.overrideContext);\r\n                if (context.compositionTransactionOwnershipToken) {\r\n                    return context.compositionTransactionOwnershipToken.waitForCompositionComplete()\r\n                        .then(function () { return _this._swap(context, result); })\r\n                        .then(function () { return result; });\r\n                }\r\n                return _this._swap(context, result).then(function () { return result; });\r\n            });\r\n        }\r\n        else if (context.viewSlot) {\r\n            context.viewSlot.removeAll();\r\n            if (context.compositionTransactionNotifier) {\r\n                context.compositionTransactionNotifier.done();\r\n            }\r\n            return Promise.resolve(null);\r\n        }\r\n        return Promise.resolve(null);\r\n    };\r\n    CompositionEngine = __decorate([\r\n        inject(ViewEngine, ViewLocator)\r\n    ], CompositionEngine);\r\n    return CompositionEngine;\r\n}());\n\nvar animationEvent = {\r\n    enterBegin: 'animation:enter:begin',\r\n    enterActive: 'animation:enter:active',\r\n    enterDone: 'animation:enter:done',\r\n    enterTimeout: 'animation:enter:timeout',\r\n    leaveBegin: 'animation:leave:begin',\r\n    leaveActive: 'animation:leave:active',\r\n    leaveDone: 'animation:leave:done',\r\n    leaveTimeout: 'animation:leave:timeout',\r\n    staggerNext: 'animation:stagger:next',\r\n    removeClassBegin: 'animation:remove-class:begin',\r\n    removeClassActive: 'animation:remove-class:active',\r\n    removeClassDone: 'animation:remove-class:done',\r\n    removeClassTimeout: 'animation:remove-class:timeout',\r\n    addClassBegin: 'animation:add-class:begin',\r\n    addClassActive: 'animation:add-class:active',\r\n    addClassDone: 'animation:add-class:done',\r\n    addClassTimeout: 'animation:add-class:timeout',\r\n    animateBegin: 'animation:animate:begin',\r\n    animateActive: 'animation:animate:active',\r\n    animateDone: 'animation:animate:done',\r\n    animateTimeout: 'animation:animate:timeout',\r\n    sequenceBegin: 'animation:sequence:begin',\r\n    sequenceDone: 'animation:sequence:done'\r\n};\n\nfunction createChildObserverDecorator(selectorOrConfig, all) {\r\n    return function (target, key, descriptor) {\r\n        var actualTarget = typeof key === 'string' ? target.constructor : target;\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\r\n        if (typeof selectorOrConfig === 'string') {\r\n            selectorOrConfig = {\r\n                selector: selectorOrConfig,\r\n                name: key\r\n            };\r\n        }\r\n        if (descriptor) {\r\n            descriptor.writable = true;\r\n            descriptor.configurable = true;\r\n        }\r\n        selectorOrConfig.all = all;\r\n        r.addChildBinding(new ChildObserver(selectorOrConfig));\r\n    };\r\n}\r\nfunction children(selectorOrConfig) {\r\n    return createChildObserverDecorator(selectorOrConfig, true);\r\n}\r\nfunction child(selectorOrConfig) {\r\n    return createChildObserverDecorator(selectorOrConfig, false);\r\n}\r\nvar ChildObserver = (function () {\r\n    function ChildObserver(config) {\r\n        this.name = config.name;\r\n        this.changeHandler = config.changeHandler || this.name + 'Changed';\r\n        this.selector = config.selector;\r\n        this.all = config.all;\r\n    }\r\n    ChildObserver.prototype.create = function (viewHost, viewModel, controller) {\r\n        return new ChildObserverBinder(this.selector, viewHost, this.name, viewModel, controller, this.changeHandler, this.all);\r\n    };\r\n    return ChildObserver;\r\n}());\r\nvar noMutations = [];\r\nfunction trackMutation(groupedMutations, binder, record) {\r\n    var mutations = groupedMutations.get(binder);\r\n    if (!mutations) {\r\n        mutations = [];\r\n        groupedMutations.set(binder, mutations);\r\n    }\r\n    mutations.push(record);\r\n}\r\nfunction onChildChange(mutations, observer) {\r\n    var binders = observer.binders;\r\n    var bindersLength = binders.length;\r\n    var groupedMutations = new Map();\r\n    for (var i = 0, ii = mutations.length; i < ii; ++i) {\r\n        var record = mutations[i];\r\n        var added = record.addedNodes;\r\n        var removed = record.removedNodes;\r\n        for (var j = 0, jj = removed.length; j < jj; ++j) {\r\n            var node = removed[j];\r\n            if (node.nodeType === 1) {\r\n                for (var k = 0; k < bindersLength; ++k) {\r\n                    var binder = binders[k];\r\n                    if (binder.onRemove(node)) {\r\n                        trackMutation(groupedMutations, binder, record);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        for (var j = 0, jj = added.length; j < jj; ++j) {\r\n            var node = added[j];\r\n            if (node.nodeType === 1) {\r\n                for (var k = 0; k < bindersLength; ++k) {\r\n                    var binder = binders[k];\r\n                    if (binder.onAdd(node)) {\r\n                        trackMutation(groupedMutations, binder, record);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    groupedMutations.forEach(function (mutationRecords, binder) {\r\n        if (binder.isBound && binder.changeHandler !== null) {\r\n            binder.viewModel[binder.changeHandler](mutationRecords);\r\n        }\r\n    });\r\n}\r\nvar ChildObserverBinder = (function () {\r\n    function ChildObserverBinder(selector, viewHost, property, viewModel, controller, changeHandler, all) {\r\n        this.selector = selector;\r\n        this.viewHost = viewHost;\r\n        this.property = property;\r\n        this.viewModel = viewModel;\r\n        this.controller = controller;\r\n        this.changeHandler = changeHandler in viewModel ? changeHandler : null;\r\n        this.usesShadowDOM = controller.behavior.usesShadowDOM;\r\n        this.all = all;\r\n        if (!this.usesShadowDOM && controller.view && controller.view.contentView) {\r\n            this.contentView = controller.view.contentView;\r\n        }\r\n        else {\r\n            this.contentView = null;\r\n        }\r\n        this.source = null;\r\n        this.isBound = false;\r\n    }\r\n    ChildObserverBinder.prototype.matches = function (element) {\r\n        if (element.matches(this.selector)) {\r\n            if (this.contentView === null) {\r\n                return true;\r\n            }\r\n            var contentView = this.contentView;\r\n            var assignedSlot = element.auAssignedSlot;\r\n            if (assignedSlot && assignedSlot.projectFromAnchors) {\r\n                var anchors = assignedSlot.projectFromAnchors;\r\n                for (var i = 0, ii = anchors.length; i < ii; ++i) {\r\n                    if (anchors[i].auOwnerView === contentView) {\r\n                        return true;\r\n                    }\r\n                }\r\n                return false;\r\n            }\r\n            return element.auOwnerView === contentView;\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.source = source;\r\n        }\r\n        this.isBound = true;\r\n        var viewHost = this.viewHost;\r\n        var viewModel = this.viewModel;\r\n        var observer = viewHost.__childObserver__;\r\n        if (!observer) {\r\n            observer = viewHost.__childObserver__ = DOM.createMutationObserver(onChildChange);\r\n            var options = {\r\n                childList: true,\r\n                subtree: !this.usesShadowDOM\r\n            };\r\n            observer.observe(viewHost, options);\r\n            observer.binders = [];\r\n        }\r\n        observer.binders.push(this);\r\n        if (this.usesShadowDOM) {\r\n            var current = viewHost.firstElementChild;\r\n            if (this.all) {\r\n                var items = viewModel[this.property];\r\n                if (!items) {\r\n                    items = viewModel[this.property] = [];\r\n                }\r\n                else {\r\n                    items.splice(0);\r\n                }\r\n                while (current) {\r\n                    if (this.matches(current)) {\r\n                        items.push(current.au && current.au.controller ? current.au.controller.viewModel : current);\r\n                    }\r\n                    current = current.nextElementSibling;\r\n                }\r\n                if (this.changeHandler !== null) {\r\n                    this.viewModel[this.changeHandler](noMutations);\r\n                }\r\n            }\r\n            else {\r\n                while (current) {\r\n                    if (this.matches(current)) {\r\n                        var value = current.au && current.au.controller ? current.au.controller.viewModel : current;\r\n                        this.viewModel[this.property] = value;\r\n                        if (this.changeHandler !== null) {\r\n                            this.viewModel[this.changeHandler](value);\r\n                        }\r\n                        break;\r\n                    }\r\n                    current = current.nextElementSibling;\r\n                }\r\n            }\r\n        }\r\n    };\r\n    ChildObserverBinder.prototype.onRemove = function (element) {\r\n        if (this.matches(element)) {\r\n            var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\r\n            if (this.all) {\r\n                var items = (this.viewModel[this.property] || (this.viewModel[this.property] = []));\r\n                var index = items.indexOf(value);\r\n                if (index !== -1) {\r\n                    items.splice(index, 1);\r\n                }\r\n                return true;\r\n            }\r\n            var currentValue = this.viewModel[this.property];\r\n            if (currentValue === value) {\r\n                this.viewModel[this.property] = null;\r\n                if (this.isBound && this.changeHandler !== null) {\r\n                    this.viewModel[this.changeHandler](value);\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.onAdd = function (element) {\r\n        if (this.matches(element)) {\r\n            var value = element.au && element.au.controller ? element.au.controller.viewModel : element;\r\n            if (this.all) {\r\n                var items = (this.viewModel[this.property] || (this.viewModel[this.property] = []));\r\n                if (this.selector === '*') {\r\n                    items.push(value);\r\n                    return true;\r\n                }\r\n                var index = 0;\r\n                var prev = element.previousElementSibling;\r\n                while (prev) {\r\n                    if (this.matches(prev)) {\r\n                        index++;\r\n                    }\r\n                    prev = prev.previousElementSibling;\r\n                }\r\n                items.splice(index, 0, value);\r\n                return true;\r\n            }\r\n            this.viewModel[this.property] = value;\r\n            if (this.isBound && this.changeHandler !== null) {\r\n                this.viewModel[this.changeHandler](value);\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    ChildObserverBinder.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        this.source = null;\r\n        var childObserver = this.viewHost.__childObserver__;\r\n        if (childObserver) {\r\n            var binders = childObserver.binders;\r\n            if (binders && binders.length) {\r\n                var idx = binders.indexOf(this);\r\n                if (idx !== -1) {\r\n                    binders.splice(idx, 1);\r\n                }\r\n                if (binders.length === 0) {\r\n                    childObserver.disconnect();\r\n                    this.viewHost.__childObserver__ = null;\r\n                }\r\n            }\r\n            if (this.usesShadowDOM) {\r\n                this.viewModel[this.property] = null;\r\n            }\r\n        }\r\n    };\r\n    return ChildObserverBinder;\r\n}());\n\nvar ElementConfigResource = (function () {\r\n    function ElementConfigResource() {\r\n    }\r\n    ElementConfigResource.prototype.initialize = function (container, target) { };\r\n    ElementConfigResource.prototype.register = function (registry, name) { };\r\n    ElementConfigResource.prototype.load = function (container, target) {\r\n        var config = new target();\r\n        var eventManager = container.get(EventManager);\r\n        eventManager.registerElementConfig(config);\r\n    };\r\n    return ElementConfigResource;\r\n}());\n\nfunction resource(instanceOrConfig) {\r\n    return function (target) {\r\n        var isConfig = typeof instanceOrConfig === 'string' || Object.getPrototypeOf(instanceOrConfig) === Object.prototype;\r\n        if (isConfig) {\r\n            target.$resource = instanceOrConfig;\r\n        }\r\n        else {\r\n            metadata.define(metadata.resource, instanceOrConfig, target);\r\n        }\r\n    };\r\n}\r\nfunction behavior(override) {\r\n    return function (target) {\r\n        if (override instanceof HtmlBehaviorResource) {\r\n            metadata.define(metadata.resource, override, target);\r\n        }\r\n        else {\r\n            var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n            Object.assign(r, override);\r\n        }\r\n    };\r\n}\r\nfunction customElement(name) {\r\n    return function (target) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n        r.elementName = validateBehaviorName(name, 'custom element');\r\n    };\r\n}\r\nfunction customAttribute(name, defaultBindingMode, aliases) {\r\n    return function (target) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, target);\r\n        r.attributeName = validateBehaviorName(name, 'custom attribute');\r\n        r.attributeDefaultBindingMode = defaultBindingMode;\r\n        r.aliases = aliases;\r\n    };\r\n}\r\nfunction templateController(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.liftsContent = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction bindable(nameOrConfigOrTarget, key, descriptor) {\r\n    var deco = function (target, key2, descriptor2) {\r\n        var actualTarget = key2 ? target.constructor : target;\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, actualTarget);\r\n        var prop;\r\n        if (key2) {\r\n            nameOrConfigOrTarget = nameOrConfigOrTarget || {};\r\n            nameOrConfigOrTarget.name = key2;\r\n        }\r\n        prop = new BindableProperty(nameOrConfigOrTarget);\r\n        return prop.registerWith(actualTarget, r, descriptor2);\r\n    };\r\n    if (!nameOrConfigOrTarget) {\r\n        return deco;\r\n    }\r\n    if (key) {\r\n        var target = nameOrConfigOrTarget;\r\n        nameOrConfigOrTarget = null;\r\n        return deco(target, key, descriptor);\r\n    }\r\n    return deco;\r\n}\r\nfunction dynamicOptions(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.hasDynamicOptions = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nvar defaultShadowDOMOptions = { mode: 'open' };\r\nfunction useShadowDOM(targetOrOptions) {\r\n    var options = typeof targetOrOptions === 'function' || !targetOrOptions\r\n        ? defaultShadowDOMOptions\r\n        : targetOrOptions;\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.targetShadowDOM = true;\r\n        r.shadowDOMOptions = options;\r\n    };\r\n    return typeof targetOrOptions === 'function' ? deco(targetOrOptions) : deco;\r\n}\r\nfunction processAttributes(processor) {\r\n    return function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.processAttributes = function (compiler, resources, node, attributes, elementInstruction) {\r\n            try {\r\n                processor(compiler, resources, node, attributes, elementInstruction);\r\n            }\r\n            catch (error) {\r\n                LogManager.getLogger('templating').error(error);\r\n            }\r\n        };\r\n    };\r\n}\r\nfunction doNotProcessContent() { return false; }\r\nfunction processContent(processor) {\r\n    return function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.processContent = processor ? function (compiler, resources, node, instruction) {\r\n            try {\r\n                return processor(compiler, resources, node, instruction);\r\n            }\r\n            catch (error) {\r\n                LogManager.getLogger('templating').error(error);\r\n                return false;\r\n            }\r\n        } : doNotProcessContent;\r\n    };\r\n}\r\nfunction containerless(target) {\r\n    var deco = function (t) {\r\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, t);\r\n        r.containerless = true;\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction useViewStrategy(strategy) {\r\n    return function (target) {\r\n        metadata.define(ViewLocator.viewStrategyMetadataKey, strategy, target);\r\n    };\r\n}\r\nfunction useView(path) {\r\n    return useViewStrategy(new RelativeViewStrategy(path));\r\n}\r\nfunction inlineView(markup, dependencies, dependencyBaseUrl) {\r\n    return useViewStrategy(new InlineViewStrategy(markup, dependencies, dependencyBaseUrl));\r\n}\r\nfunction noView(targetOrDependencies, dependencyBaseUrl) {\r\n    var target;\r\n    var dependencies;\r\n    if (typeof targetOrDependencies === 'function') {\r\n        target = targetOrDependencies;\r\n    }\r\n    else {\r\n        dependencies = targetOrDependencies;\r\n        target = undefined;\r\n    }\r\n    var deco = function (t) {\r\n        metadata.define(ViewLocator.viewStrategyMetadataKey, new NoViewStrategy(dependencies, dependencyBaseUrl), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction view(templateOrConfig) {\r\n    return function (target) {\r\n        target.$view = templateOrConfig;\r\n    };\r\n}\r\nfunction elementConfig(target) {\r\n    var deco = function (t) {\r\n        metadata.define(metadata.resource, new ElementConfigResource(), t);\r\n    };\r\n    return target ? deco(target) : deco;\r\n}\r\nfunction viewResources() {\r\n    var resources = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        resources[_i] = arguments[_i];\r\n    }\r\n    return function (target) {\r\n        metadata.define(ViewEngine.viewModelRequireMetadataKey, resources, target);\r\n    };\r\n}\n\nvar TemplatingEngine = (function () {\r\n    function TemplatingEngine(container, moduleAnalyzer, viewCompiler, compositionEngine) {\r\n        this._container = container;\r\n        this._moduleAnalyzer = moduleAnalyzer;\r\n        this._viewCompiler = viewCompiler;\r\n        this._compositionEngine = compositionEngine;\r\n        container.registerInstance(Animator, Animator.instance = new Animator());\r\n    }\r\n    TemplatingEngine.prototype.configureAnimator = function (animator) {\r\n        this._container.unregister(Animator);\r\n        this._container.registerInstance(Animator, Animator.instance = animator);\r\n    };\r\n    TemplatingEngine.prototype.compose = function (context) {\r\n        return this._compositionEngine.compose(context);\r\n    };\r\n    TemplatingEngine.prototype.enhance = function (instruction) {\r\n        if (instruction instanceof DOM.Element) {\r\n            instruction = { element: instruction };\r\n        }\r\n        var compilerInstructions = { letExpressions: [] };\r\n        var resources = instruction.resources || this._container.get(ViewResources);\r\n        this._viewCompiler._compileNode(instruction.element, resources, compilerInstructions, instruction.element.parentNode, 'root', true);\r\n        var factory = new ViewFactory(instruction.element, compilerInstructions, resources);\r\n        var container = instruction.container || this._container.createChild();\r\n        var view = factory.create(container, BehaviorInstruction.enhance());\r\n        view.bind(instruction.bindingContext || {}, instruction.overrideContext);\r\n        view.firstChild = view.lastChild = view.fragment;\r\n        view.fragment = DOM.createDocumentFragment();\r\n        view.attached();\r\n        return view;\r\n    };\r\n    TemplatingEngine.inject = [Container, ModuleAnalyzer, ViewCompiler, CompositionEngine];\r\n    return TemplatingEngine;\r\n}());\n\nexport { Animator, BehaviorInstruction, BehaviorPropertyObserver, BindableProperty, BindingLanguage, BoundViewFactory, CompositionEngine, CompositionTransaction, CompositionTransactionNotifier, CompositionTransactionOwnershipToken, Controller, ConventionalViewStrategy, ElementConfigResource, ElementEvents, HtmlBehaviorResource, InlineViewStrategy, ModuleAnalyzer, NoViewStrategy, PassThroughSlot, RelativeViewStrategy, ResourceDescription, ResourceLoadContext, ResourceModule, ShadowDOM, ShadowSlot, SlotCustomAttribute, StaticViewStrategy, SwapStrategies, TargetInstruction, TemplateRegistryViewStrategy, TemplatingEngine, View, ViewCompileInstruction, ViewCompiler, ViewEngine, ViewEngineHooksResource, ViewFactory, ViewLocator, ViewResources, ViewSlot, _hyphenate, _isAllWhitespace, animationEvent, behavior, bindable, child, children, containerless, customAttribute, customElement, dynamicOptions, elementConfig, inlineView, noView, processAttributes, processContent, resource, templateController, useShadowDOM, useView, useViewStrategy, validateBehaviorName, view, viewEngineHooks, viewResources, viewStrategy };\n//# sourceMappingURL=aurelia-templating.js.map\n"],"sourceRoot":""}