From 86b896e5324fec5c90602cd929d3e96751f85ecb Mon Sep 17 00:00:00 2001 From: InverseBot Date: Wed, 31 Jan 2018 01:30:02 -0500 Subject: [PATCH] (js/css) Update generated files --- UI/WebServerResources/js/Mailer.services.js | 2 +- .../js/Mailer.services.js.map | 2 +- .../js/vendor/angular-ui-router.js | 146 +- .../js/vendor/angular-ui-router.js.map | 24 +- .../js/vendor/angular-ui-router.min.js | 4 +- .../js/vendor/angular-ui-router.min.js.map | 1270 ++++++++--------- 6 files changed, 756 insertions(+), 692 deletions(-) diff --git a/UI/WebServerResources/js/Mailer.services.js b/UI/WebServerResources/js/Mailer.services.js index ffae7e770..a0e4af9c3 100644 --- a/UI/WebServerResources/js/Mailer.services.js +++ b/UI/WebServerResources/js/Mailer.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(t){"function"!=typeof t.then&&(angular.extend(this,t),_.forEach(this.identities,function(e){e.fullName?e.full=e.fullName+" <"+e.email+">":e.full="<"+e.email+">"}),e.$log.debug("Account: "+JSON.stringify(t,void 0,2)))}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(t,n,s,i,o,a,r,l){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Preferences:a,$Mailbox:r,$Message:l}),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",e.$factory),e.$findAll=function(t){return t?e.$unwrapCollection(t):e.$$resource.fetch("","mailAccounts").then(function(t){return e.$unwrapCollection(t)})},e.$unwrapCollection=function(t){var n=[];return angular.forEach(t,function(t,s){t.id=s,n[s]=new e(t)}),e.$accounts=n,n},e.prototype.getLength=function(){return this.$flattenMailboxes().length},e.prototype.getItemAtIndex=function(e){var t;return t=this.$flattenMailboxes(),e>=0&&e=0,e.children&&e.children.length>0&&i(e.children)})};if(e.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(e.$Preferences.settings.Mail.ExpandedFolders))try{s=angular.fromJson(e.$Preferences.settings.Mail.ExpandedFolders)}catch(t){e.$log.warn("Can't parse list of expanded folders. String was: "+e.$Preferences.settings.Mail.ExpandedFolders),s=[]}else s=e.$Preferences.settings.Mail.ExpandedFolders;n.$expanded=s.indexOf("/"+n.id)>=0,s.length>0&&i(n.$mailboxes)}return e.$accounts&&(n.$expanded|=1==e.$accounts.length),n.$flattenMailboxes({reload:!0}),n.$mailboxes}):e.$q.when(this.$mailboxes)},e.prototype.$flattenMailboxes=function(t){var n=[],s=[],i=function(e){_.forEach(e,function(e){n.push(e),(t&&t.all||e.$expanded)&&e.children&&e.children.length>0&&i(e.children)})};return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(i(this.$mailboxes),t&&t.all||(this.$$flattenMailboxes=n,t&&t.saveState&&(_.forEach(e.$accounts,function(e){e.$expanded&&s.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},s)}),e.$$resource.post(null,"saveFoldersState",s)))):n=this.$$flattenMailboxes,n},e.prototype.$getMailboxByType=function(e){var t=function(n){var s=_.find(n,function(t){return t.type==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$getMailboxByPath=function(e){var t=function(n){var s=_.find(n,function(t){return t.path==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$newMailbox=function(t,n){var s=this;return e.$$resource.post(t.toString(),"createFolder",{name:n}).then(function(){s.$getMailboxes({reload:!0})})},e.prototype.$certificate=function(){var t=this;return this.security&&this.security.hasCertificate?this.$$certificate?e.$q.when(this.$$certificate):e.$$resource.fetch(this.id.toString(),"certificate").then(function(e){return t.$$certificate=e,e}):e.$q.reject()},e.prototype.$removeCertificate=function(){var t=this;return e.$$resource.fetch(this.id.toString(),"removeCertificate").then(function(){t.security.hasCertificate=!1})},e.prototype.updateQuota=function(e){var t,n;t=Math.round(1e4*e.usedSpace/e.maxQuota)/100,n=l("quotasFormat").formatted(t,Math.round(e.maxQuota/10.24)/100),this.$quota={percent:t,description:n}},e.prototype.$newMessage=function(t){var n=this;return e.$$resource.fetch(this.id.toString(),"compose").then(function(t){e.$log.debug("New message (compose): "+JSON.stringify(t,void 0,2));return new e.$Message(t.accountId,n.$getMailboxByPath(t.mailboxPath),t)}).then(function(s){return e.$$resource.fetch(s.$absolutePath({asDraft:!0}),"edit").then(function(i){var o=e.$Preferences.defaults.AuxiliaryMailAccounts[n.id];return o.security&&(o.security.alwaysSign&&(i.sign=!0),o.security.alwaysEncrypt&&(i.encrypt=!0)),e.$log.debug("New message (edit): "+JSON.stringify(i,void 0,2)),angular.extend(s.editable,i),s.isNew=!0,t&&t.mailto&&(angular.isObject(t.mailto)?angular.extend(s.editable,t.mailto):s.$parseMailto(t.mailto)),s})})},e.prototype.$addDelegate=function(t){var n=this,s=e.$q.defer(),i={uid:t.uid};return!t.uid||_.indexOf(_.map(this.delegates,"uid"),t.uid)>-1?s.resolve():e.$$resource.fetch(this.id.toString(),"addDelegate",i).then(function(){n.delegates.push(t),s.resolve(n.users)},function(e,t){s.reject(l("An error occured please try again."))}),s.promise},e.prototype.$removeDelegate=function(t){var n=this,s={uid:t};return e.$$resource.fetch(this.id.toString(),"removeDelegate",s).then(function(){var e=_.indexOf(_.map(n.delegates,"uid"),t);e>=0&&n.delegates.splice(e,1)})}}(),function(){"use strict";function e(t,n){if(this.$account=t,"function"!=typeof n.then){if(this.init(n),this.name&&!this.path){var s=e.$$resource.create("createFolder",this.name);this.$unwrap(s)}}else this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function(t,n,s,i,o,a,r,l,c){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:a,$$Acl:r,$Preferences:l,$query:{sort:"arrival",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:!1,$virtualPath:!1,PRELOAD:c}),l.settings.Mail.SortingState&&(e.$query.sort=l.settings.Mail.SortingState[0],e.$query.asc=parseInt(l.settings.Mail.SortingState[1])),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",e.$factory),e.$find=function(t,n){var s;return s=n&&n.all?this.$$resource.fetch(t.id.toString(),"viewAll"):this.$$resource.fetch(t.id.toString(),"view"),e.$unwrapCollection(t,s)},e.$unwrapCollection=function(t,n){var s=[],i=function(n,s){for(var o=0;o=0&&e=0},e.prototype.isNoSelect=function(){return this.flags.indexOf("noselect")>=0},e.prototype.getClassName=function(e){return!1},e.prototype.$rename=function(){var t,n,s,i,o=this;return this.name==this.$shadowData.name?e.$q.when():(n=(t=function(e,n){var s=null;return _.find(n,function(e){return e.path==o.path})?s=e:angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e,e.children))}),s})(null,this.$account.$mailboxes),s=null===n?this.$account.$mailboxes:n.children,i=_.indexOf(_.map(s,"id"),this.id),this.$save().then(function(e){var t,n=o.path;o.init(e),s.splice(i,1),t=_.find(s,function(e){return"folder"==e.type&&e.name.localeCompare(o.name)>0}),i=t?_.indexOf(_.map(s,"id"),t.id):s.length,s.splice(i,0,o);var a=new RegExp("^"+n),r=function(e){_.forEach(e.children,function(e){e.path=e.path.replace(a,o.path),e.id=e.$id(),r(e)})};r(o)}))},e.prototype.$compact=function(){var t=this;return e.$$resource.post(this.id,"expunge").then(function(e){e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$canFolderAs=function(){return"folder"==this.type&&0===this.level},e.prototype.$setFolderAs=function(t){return e.$$resource.post(this.id,"setAs"+t+"Folder")},e.prototype.$emptyTrash=function(){var t=this;return e.$$resource.post(this.id,"emptyTrash").then(function(e){t.$messages=[],t.uidsMap={},t.unseenCount=0,angular.isDefined(t.children)&&t.children.length&&t.$account.$getMailboxes({reload:!0}),e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$markAsRead=function(){var t=this;return e.$$resource.post(this.id,"markRead").then(function(){t.unseenCount=0,_.forEach(t.$messages,function(e){e.isread=!0})})},e.prototype.$flagMessages=function(t,n,s){var i={msgUIDs:_.map(t,"uid"),flags:n,operation:s};return e.$$resource.post(this.id,"addOrRemoveLabel",i).then(function(){return t})},e.prototype.saveSelectedMessages=function(){var t,n;return t=_.filter(this.$messages,function(e){return e.selected}),{uids:n=_.map(t,"uid")},{filename:l("Saved Messages.zip")},e.$$resource.download(this.id,"saveMessages",{uids:n})},e.prototype.exportFolder=function(){var t;return t={filename:this.name+".zip"},e.$$resource.download(this.id,"exportFolder",null,t)},e.prototype.$delete=function(t){var n=this;return e.$$resource.post(this.id,"delete",t).then(function(){return n.$account.$getMailboxes({reload:!0}),!0})},e.prototype.$_deleteMessages=function(e,t){var n,s=this,i=this.$messages.length;return n=_.filter(t,function(e,t){return!e.isread}),this.unseenCount-=n.length,_.forEachRight(this.$messages,function(t,n){var o=_.findIndex(e,function(e){return t.uid==e});o>-1?(e.splice(o,1),delete s.uidsMap[t.uid],t.uid==s.selectedMessage&&delete s.selectedMessage,s.$messages.splice(n,1),nt.uids.length-1)&&(n.$topIndex=0),n.init(t),n.uids&&(e.$log.debug("unwrapping "+n.uids.length+" messages"),a=_.invokeMap(n.headers[0],"toLowerCase"),n.headers.splice(0,1),n.threaded&&(o=n.uids[0],n.uids.splice(0,1)),_.reduce(n.uids,function(t,s,a){var r,l;return r=n.threaded?_.zipObject(o,s):{uid:s.toString()},n.uidsMap[r.uid]=a,(l=new e.$Message(n.$account.id,n,r,!0)).selected=i.indexOf(l.uid)>-1,t.push(l),t},n.$messages),_.forEach(n.headers,function(e){var t=_.zipObject(a,e),s=n.uidsMap[t.uid.toString()];_.extend(n.$messages[s],t)})),e.$log.debug("mailbox "+n.id+" ready"),n.$isLoading=!1,s.resolve(n.$messages)})},function(e){angular.extend(n,e),n.isError=!0,n.$isLoading=!1,s.reject()}),s.promise},e.prototype.$unwrapHeaders=function(t){var n=this;t.then(function(t){e.$timeout(function(){var e,s;t.length>0&&(e=_.invokeMap(t[0],"toLowerCase"),t.splice(0,1),_.forEach(t,function(t){t=_.zipObject(e,t),s=n.uidsMap[t.uid.toString()],angular.isDefined(s)&&_.extend(n.$messages[s],t)}))})})},e.prototype.$updateSubscribe=function(){var t=this.subscribed?"subscribe":"unsubscribe";e.$$resource.post(this.id,t)}}(),function(){"use strict";function e(e,t,n,s){this.accountId=e,this.$mailbox=t,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},this.selected=!1,"function"!=typeof n.then?(!angular.isUndefined(s)&&s||(angular.extend(this,n),this.$formatFullAddresses()),this.uid=parseInt(n.uid)):this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","sgMessage_STATUS","Resource","Preferences",function(t,n,s,i,o,a,r){return angular.extend(e,{STATUS:o,$q:t,$timeout:n,$log:s,$$resource:new a(i.activeUser("folderURL")+"Mail",i.activeUser()),$Preferences:r,$avatar:angular.bind(r,r.avatar)}),r.defaults.SOGoMailLabelsColors&&(e.$tags=r.defaults.SOGoMailLabelsColors),r.defaults.SOGoMailDisplayRemoteInlineImages&&"always"==r.defaults.SOGoMailDisplayRemoteInlineImages&&(e.$displayRemoteInlineImages=!0),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMessage_STATUS",{NOT_LOADED:0,DELAYED_LOADING:1,LOADING:2,LOADED:3,DELAYED_MS:300}).factory("Message",e.$factory),e.filterTags=function(t,n){var s=new RegExp(t,"i"),i=[];return _.forEach(_.keys(e.$tags),function(t){var o=e.$tags[t];-1!=o[0].search(s)&&(_.includes(n,t)||i.push({name:t,description:o[0],color:o[1]}))}),i},e.prototype.$absolutePath=function(t){var n=this,s=this.id;function i(){var e;return(e=_.map(n.$mailbox.path.split("/"),function(e){return"folder"+e.asCSSIdentifier()})).splice(0,0,n.accountId),e.join("/")}return(angular.isUndefined(this.id)||t&&t.nocache)&&(this.id=i()+"/"+this.uid,s=this.id),t&&t.asDraft&&this.draftId&&(s=i()+"/"+this.draftId),t&&t.withResourcePath&&(s=e.$$resource.path(s)),s},e.prototype.$setUID=function(e){var t,n=this.uid||-1,s=this;n!=parseInt(e)&&(this.uid=parseInt(e),this.$absolutePath({nocache:!0}),n>-1?(n=n.toString(),angular.isDefined(this.$mailbox.uidsMap[n])&&(t=this.$mailbox.uidsMap[n],this.$mailbox.uidsMap[e]=t,delete this.$mailbox.uidsMap[n],_.forEach(["from","to","subject"],function(e){s.$mailbox.$messages[t][e]=s[e]}))):this.$mailbox.constructor.selectedFolder&&"draft"==this.$mailbox.constructor.selectedFolder.type&&this.$mailbox.constructor.selectedFolder.$filter())},e.prototype.$formatFullAddresses=function(){var t=this,n=_.map(t.$mailbox.$account.identities,"email");_.forEach(["from","to","cc","bcc","reply-to"],function(s){_.forEach(t[s],function(t){t.name&&t.name!=t.email?(t.full=t.name+" <"+t.email+">",t.name.length<10?t.shortname=t.name:t.name.split(" ").length&&(t.shortname=_.first(_.last(t.name.split(/, */)).split(/ +/)).replace("'",""))):t.email&&(t.full="<"+t.email+">",t.shortname=t.email.split("@")[0]),t.image=e.$avatar(t.email,32),_.indexOf(n,t.email)>=0&&(t.shortname=l("me"))})})},e.prototype.$shortRecipients=function(e){var t=this,n=[],s=0,i=0;return _.forEach(["to","cc","bcc"],function(o){i+=t[o]?t[o].length:0,_.forEach(t[o],function(t,i){se&&n.push(l("and %{0} more...",i-e)),n.join(", ")},e.prototype.$shortAddress=function(e){var t="";return this[e]&&this[e].length>0&&(t=this[e][0].name||this[e][0].email||""),t},e.prototype.allowReplyAll=function(){var e=0;return e=_.reduce(["to","cc"],_.bind(function(e,t){return this[t]?e+this[t].length:e},this),e),!this.isDraft&&e>1},e.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0,delete this.$parts},e.prototype.$content=function(){var t=this,n=[],s=function(i){i.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==i.type?s(_.find(i.content,function(e){return i.preferredPart==e.contentType})):angular.isArray(i.content)?("UIxMailPartSignedViewer"==i.type&&1===i["supports-smime"]?t.signed={valid:i.valid,certificate:i.certificates[i.certificates.length-1],message:i.message}:"UIxMailPartEncryptedViewer"==i.type&&(t.encrypted={valid:i.valid},i.valid?t.encrypted.message=l("This message is encrypted"):t.encrypted.message=l("This message can't be decrypted. Please make sure you have uploaded your S/MIME certificate from the mail preferences module.")),_.forEach(i.content,function(e){s(e)})):(angular.isUndefined(i.safeContent)&&(i.safeContent=i.content,t.$hasUnsafeContent|=i.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==i.type?(i.html=!0,t.$loadUnsafeContent||e.$displayRemoteInlineImages?(angular.isUndefined(i.unsafeContent)&&(i.unsafeContent=document.createElement("div"),i.unsafeContent.innerHTML=i.safeContent,angular.forEach(["src","data","classid","background","style"],function(e){var t,n,s,o=i.unsafeContent.querySelectorAll("[unsafe-"+e+"]");for(s=0;s"}),n={to:t},_.forEach(["subject","body"],function(t){var i=new RegExp(t+"=([^&]+)");t="body"==t?"text":t,(s=i.exec(e))&&(n[t]=decodeURIComponent(s[1]))}),_.forEach(["cc","bcc"],function(t){var i=new RegExp(t+"=([^&]+)");(s=i.exec(e))&&(n[t]=_.map(decodeURIComponent(s[1]).split(","),function(e){return"<"+e.trim()+">"}))}),angular.extend(this.editable,n))},e.prototype.$reply=function(){return this.$newDraft("reply")},e.prototype.$replyAll=function(){return this.$newDraft("replyall")},e.prototype.$forward=function(){return this.$newDraft("forward")},e.prototype.$newDraft=function(t){var n=this;return e.$$resource.fetch(this.$absolutePath(),t).then(function(s){var i,o;return e.$log.debug("New "+t+": "+JSON.stringify(s,void 0,2)),i=n.$mailbox.$account.$getMailboxByPath(s.mailboxPath),o=new e(s.accountId,i,s),e.$$resource.fetch(o.$absolutePath({asDraft:!0}),"edit").then(function(s){e.$log.debug("New "+t+": "+JSON.stringify(s,void 0,2)+" original UID: "+n.uid);var i=e.$Preferences.defaults.AuxiliaryMailAccounts[n.$mailbox.$account.id];return i.security&&(i.security.alwaysSign&&(s.sign=!0),i.security.alwaysEncrypt&&(s.encrypt=!0)),angular.extend(o.editable,s),o.origin={message:n,action:t},o})})},e.prototype.$save=function(){var t=this,n=this.editable;return e.$log.debug("save = "+JSON.stringify(n,void 0,2)),e.$$resource.save(this.$absolutePath({asDraft:!0}),n).then(function(n){e.$log.debug("save = "+JSON.stringify(n,void 0,2)),t.$setUID(n.uid),t.$reload(),t.isNew=!1})},e.prototype.$send=function(){var t=this,n=angular.copy(this.editable);return e.$log.debug("send = "+JSON.stringify(n,void 0,2)),e.$$resource.post(this.$absolutePath({asDraft:!0}),"send",n).then(function(n){return"success"==n.status?(angular.isDefined(t.origin)&&(t.origin.action.startsWith("reply")?t.origin.message.isanswered=!0:"forward"==t.origin.action&&(t.origin.message.isforwarded=!0)),n):e.$q.reject(n.data)})},e.prototype.$unwrap=function(t){var n=this;return this.$loaded=e.STATUS.DELAYED_LOADING,e.$timeout(function(){n.$loaded!=e.STATUS.LOADED&&(n.$loaded=e.STATUS.LOADING)},e.STATUS.DELAYED_MS),this.$futureMessageData=t.then(function(t){return 0===n.isread&&(n.isread=!0,n.$mailbox.unseenCount--),e.$timeout(function(){return angular.extend(n,t),n.$formatFullAddresses(),n.$loadUnsafeContent=!1,n.$loaded=e.STATUS.LOADED,n})}),this.$futureMessageData},e.prototype.$omit=function(e){var t={},n=e&&e.privateAttributes;return angular.forEach(this,function(e,s){("constructor"!=s&&"$"!=s[0]||n)&&(t[s]=e)}),t},e.prototype.download=function(){var t,n;return t={uids:[this.uid]},n={filename:this.subject+".zip"},e.$$resource.download(this.$mailbox.id,"saveMessages",t,n)},e.prototype.downloadAttachments=function(){var t;return t={filename:l("attachments")+"-"+this.uid+".zip"},e.$$resource.download(this.$absolutePath(),"archiveAttachments",null,t)}}(),function(){"use strict";function e(){this.show=!1,this.message=null,this.elements=[]}e.$factory=["$document","$timeout","$mdPanel","sgHotkeys",function(t,n,s,i){return angular.extend(e,{$document:t,$timeout:n,$mdPanel:s,sgHotkeys:i}),new e}],e.prototype.setMessage=function(e){this.message=e},e.prototype.registerImage=function(e){this.elements.push(e)},e.prototype.registerHotkeys=function(t){this.keys=[e.sgHotkeys.createHotkey({key:"left",description:l("View previous item"),callback:angular.bind(t,t.previousImage)}),e.sgHotkeys.createHotkey({key:"right",description:l("View next item"),callback:angular.bind(t,t.nextImage)})],_.forEach(this.keys,function(t){e.sgHotkeys.registerHotkey(t)})},e.prototype.showGallery=function(t,n){var s=this,i=e.$mdPanel,o=angular.element(this.message.parts.content[n].content).find("img")[0].src,a=_.filter(this.message.attachmentAttrs,function(e){return 0===e.mimetype.indexOf("image/")}),r=_.findIndex(a,function(e){return e.url.indexOf(o)>=0});angular.element(e.$document[0].body).addClass("sg-image-gallery-backdrop");var c=i.newPanelPosition().absolute(),u=i.newPanelAnimation().openFrom(t.target).duration(100).withAnimation(i.animation.FADE),d={attachTo:angular.element(document.body),locals:{lastIndex:a.length-1,images:a,selectedIndex:r,selectedImage:a[r]},bindToController:!0,controller:h,controllerAs:"$panelCtrl",position:c,animation:u,targetEvent:t,fullscreen:!0,hasBackdrop:!0,template:['','
',' '," arrow_back"," ",' image','
',' '," file_download"," ","
",'
',' '," navigate_before"," ",' ',' '," navigate_next"," ","
",'
','
',' ',"
","
","
"].join(""),trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0,onOpenComplete:function(){s.show=!0,_.forEach(e.$document.find("sg-image-gallery")[0].getElementsByClassName("sg-image-thumbnail"),function(t){var n=t.children[0];angular.element(n).one("load",function(){n.naturalWidth0&&this.selectImage(this.selectedIndex-1)}}},angular.module("SOGo.MailerUI").factory("ImageGallery",e.$factory)}(),function(){"use strict";function e(e){this.$account=e}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Mailbox","sgMailbox_PRELOAD",function(t,n,s,i,o,a,r,l){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:r,selectedFolder:null,PRELOAD:l}),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("VirtualMailbox",e.$factory),e.$absolutePath=function(e){return[e,"virtual"].join("/")},e.prototype.init=function(e){this.$isLoading=!1,this.$mailboxes=[],this.uidsMap={},angular.extend(this,e),this.id=this.$id()},e.prototype.setMailboxes=function(e){this.$mailboxes=e,_.forEach(this.$mailboxes,function(e){e.$messages=[],e.uidsMap={}})},e.prototype.startSearch=function(t,n){var s=this,i=e.$q.when();this.$isLoading=!0,_.forEach(this.$mailboxes,function(o){i=i.then(function(){if(s.$isLoading)return e.$log.debug("searching mailbox "+o.path),o.$filter({sort:"date",asc:!1,match:t},n)})}),i.finally(function(){s.$isLoading=!1})},e.prototype.stopSearch=function(){e.$log.debug("stopping search..."),this.$isLoading=!1},e.prototype.selectFolder=function(){},e.prototype.resetSelectedMessage=function(){_.forEach(this.$mailboxes,function(e){delete e.selectedMessage})},e.prototype.hasSelectedMessage=function(){return angular.isDefined(_.find(this.$mailboxes,function(e){return angular.isDefined(e.selectedMessage)}))},e.prototype.isSelectedMessage=function(e,t){return angular.isDefined(_.find(this.$mailboxes,function(n){return n.path==t&&n.selectedMessage==e}))},e.prototype.getLength=function(){var e=0;return angular.isDefined(this.$mailboxes)?(_.forEach(this.$mailboxes,function(t){e+=t.$messages.length}),e):e},e.prototype.getItemAtIndex=function(e){var t,n,s,i,o;if(angular.isDefined(this.$mailboxes)&&e>=0)for(t=0,n=0;n0){var s=_.map(t,"uid");o.push(t);var r=e.$$resource.post(n,"addOrRemoveLabel",_.assign(i,{msgUIDs:s}));a.push(r)}}),e.$q.all(a).then(function(){return _.flatten(o)})},e.prototype.$deleteMessages=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$deleteMessages(e);n.push(s)}}),e.$q.all(n)},e.prototype.$markOrUnMarkMessagesAsJunk=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$markOrUnMarkMessagesAsJunk(e);n.push(s)}}),e.$q.all(n)},e.prototype.$copyMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var i=e[0].$mailbox.$copyMessages(e,n);s.push(i)}}),e.$q.all(s)},e.prototype.$moveMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var i=e[0].$mailbox.$moveMessages(e,n);s.push(i)}}),e.$q.all(s)}}(),function(){"use strict";e.$inject=["$window","$scope","$timeout","$q","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","sgHotkeys","encodeUriFilter","sgSettings","sgFocus","Dialog","Preferences","Account","Mailbox"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b){var v=this,y=angular.element(e.document).find("title").attr("sg-default")||"SOGo",M=[];this.$onInit=function(){e.$mailboxController=v,this.service=b,this.accounts=r,this.account=c,this.selectedFolder=u,this.messageDialog=null,this.mode={search:!1,multiple:0},(n=M).push(d.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:v.searchMode})),n.push(d.createHotkey({key:l("hotkey_compose"),description:l("Write a new message"),callback:function(e){null===v.messageDialog&&v.newMessage(e)}})),n.push(d.createHotkey({key:l("hotkey_junk"),description:l("Mark the selected messages as junk"),callback:v.markOrUnMarkMessagesAsJunk})),n.push(d.createHotkey({key:"space",description:l("Toggle item"),callback:v.toggleMessageSelection})),n.push(d.createHotkey({key:"shift+space",description:l("Toggle range of items"),callback:v.toggleMessageSelection})),n.push(d.createHotkey({key:"up",description:l("View next item"),callback:C,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"down",description:l("View previous item"),callback:w,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"shift+up",description:l("Add next item to selection"),callback:I,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"shift+down",description:l("Add previous item to selection"),callback:E,preventInClass:["sg-mail-part"]})),_.forEach(["backspace","delete"],function(e){n.push(d.createHotkey({key:e,description:l("Delete selected message or folder"),callback:v.confirmDeleteSelectedMessages}))}),_.forEach(n,function(e){d.registerHotkey(e)});var n;angular.element(e).on("beforeunload",x),t.$on("$destroy",function(){angular.element(e).off("beforeunload",x),_.forEach(M,function(e){d.deregisterHotkey(e)})}),t.$watch(function(){return v.selectedFolder.unseenCount},function(t){var n=y+" - ";t&&(n+="("+t+") "),n+=v.selectedFolder.$displayName,e.document.title=n})};function x(e){return v.selectedFolder.$compact()}this.centerIsClose=function(e){return this.selectedFolder.hasSelectedMessage()&&!!e},this.sort=function(e){v.selectedFolder.$filter({sort:e})},this.sortedBy=function(e){return b.$query.sort==e},this.searchMode=function(){v.mode.search=!0,f("search")},this.cancelSearch=function(){v.mode.search=!1,v.selectedFolder.$filter().then(function(){v.selectedFolder.selectedMessage&&n(function(){v.selectedFolder.$topIndex=v.selectedFolder.uidsMap[v.selectedFolder.selectedMessage]})})},this.composeWindowEnabled=function(){return p.defaults.SOGoMailComposeWindowEnabled},this.newMessage=function(t,n){var s;null===v.messageDialog&&(n||"popup"==p.defaults.SOGoMailComposeWindow?function(){var t=[g.baseURL(),"UIxMailPopupView#!/Mail",v.account.id,h(h(v.selectedFolder.path)),"new"].join("/"),n=v.selectedFolder.$id()+"/"+Math.random(0,1e3);console.debug(t),e.open(t,n,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}():(s=v.account.$newMessage(),v.messageDialog=o.show({parent:angular.element(document.body),targetEvent:t,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:v.account,stateMessage:s}}).catch().finally(function(){v.messageDialog=null})))};function C(e){var t=v.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t--,v.selectedFolder.$topIndex>0&&v.selectedFolder.$topIndex--):(t=v.selectedFolder.getLength()-1,v.selectedFolder.$topIndex=v.selectedFolder.getLength()),t>-1&&v.selectMessage(v.selectedFolder.$messages[t]),e.preventDefault(),t}function w(e){var t=v.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t++,v.selectedFolder.$topIndex=0&&v.toggleMessageSelection(e,v.selectedFolder.$messages[t])}function E(e){var t;v.selectedFolder.hasSelectedMessage()&&(t=w(e))>=0&&v.toggleMessageSelection(e,v.selectedFolder.$messages[t])}this.selectMessage=function(e){b.$virtualMode?i.go("mail.account.virtualMailbox.message",{mailboxId:h(e.$mailbox.path),messageId:e.uid}):i.go("mail.account.mailbox.message",{messageId:e.uid})},this.toggleMessageSelection=function(e,t){var n,s,i,o=v.selectedFolder;if(t||(t=o.$selectedMessage()),!t)return!0;if(t.selected=!t.selected,v.mode.multiple+=t.selected?1:-1,e.shiftKey&&o.$selectedCount()>1){for(s=(n=o.uidsMap[t.uid])-2;s>=0&&!o.$messages[s].selected;)s--;if(s<0)for(s=n+2;s=0&&s0&&(a-=1,s=v.selectedFolder.$messages[a]),t0&&(v.messageDialog=m.confirm(l("Confirmation"),l("Are you sure you want to delete the selected messages?"),{ok:l("Delete")}).then(function(){var e=v.selectedFolder.hasSelectedMessage();v.selectedFolder.$deleteMessages(t).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)},function(n){v.messageDialog=m.confirm(l("Warning"),l("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),{ok:l("Delete")}).then(function(){v.selectedFolder.$deleteMessages(t,{withoutTrash:!0}).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)})})})}).finally(function(){v.messageDialog=null})),e.preventDefault()},this.markOrUnMarkMessagesAsJunk=function(){var e=v.selectedFolder.hasSelectedMessage(),t=v.selectedFolder.$selectedMessages();0===_.size(t)&&e&&(t=[v.selectedFolder.$selectedMessage()]),_.size(t)>0&&v.selectedFolder.$markOrUnMarkMessagesAsJunk(t).then(function(){var n="/"+v.account.id+"/folderINBOX";"junk"!=v.selectedFolder.type&&(n="/"+v.account.$getMailboxByType("junk").id),v.selectedFolder.$moveMessages(t,n).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)})})},this.copySelectedMessages=function(e){var t=v.selectedFolder.$selectedMessages();_.size(t)>0&&v.selectedFolder.$copyMessages(t,"/"+e).then(function(){a.show(a.simple().content(l("%{0} message(s) copied",v.selectedFolder.$selectedCount())).position("top right").hideDelay(2e3))})},this.moveSelectedMessages=function(e){var t=v.selectedFolder.hasSelectedMessage(),n=v.selectedFolder.$selectedMessages(),s=v.selectedFolder.$selectedCount();_.size(n)>0&&v.selectedFolder.$moveMessages(n,"/"+e).then(function(e){a.show(a.simple().content(l("%{0} message(s) moved",s)).position("top right").hideDelay(2e3)),b.$virtualMode?t&&i.go("mail.account.virtualMailbox"):A(t,e)})},this.selectAll=function(){var e=0;_.forEach(S(),function(t){for(var n=0,s=t.$messages.length;n0&&v.selectedFolder.$flagMessages(e,"\\Flagged","add").then(function(e){_.forEach(e,function(e){e.isflagged=!0})})},this.markSelectedMessagesAsUnread=function(){var e=v.selectedFolder.$selectedMessages();_.size(e)>0&&v.selectedFolder.$flagMessages(e,"seen","remove").then(function(e){_.forEach(e,function(e){e.isread&&e.$mailbox.unseenCount++,e.isread=!1})})},this.markSelectedMessagesAsRead=function(){var e=v.selectedFolder.$selectedMessages();_.size(e)>0&&v.selectedFolder.$flagMessages(e,"seen","add").then(function(e){_.forEach(e,function(e){e.isread||e.$mailbox.unseenCount--,e.isread=!0})})}}angular.module("SOGo.MailerUI").controller("MailboxController",e),t.$inject=["$delegate"];function t(e){return e[0].controller.prototype.resetScroll=function(){"messagesList"==this.$element.parent().attr("id")?this.updateSize():this.scrollTo(0)},e}angular.module("material.components.virtualRepeat").decorator("mdVirtualRepeatContainerDirective",t)}(),function(){"use strict";e.$inject=["$scope","$state","$transitions","$timeout","$window","$mdDialog","$mdToast","sgFocus","encodeUriFilter","Dialog","sgSettings","sgHotkeys","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b){var v,y,M=this,x=[];this.$onInit=function(){this.service=f,this.accounts=b,this.currentSearchParam="",this.search={options:{"":"",subject:l("Enter Subject"),from:l("Enter From"),to:l("Enter To"),cc:l("Enter Cc"),body:l("Enter Body")},subfolders:1,match:"AND",params:[]},this.showSubscribedOnly=$.defaults.SOGoMailShowSubscribedFoldersOnly,this.refreshUnseenCount(),t=x,_.forEach(["backspace","delete"],function(e){t.push(h.createHotkey({key:e,description:l("Delete selected message or folder"),callback:function(){f.selectedFolderController&&f.selectedFolder&&!f.selectedFolder.hasSelectedMessage()&&f.selectedFolderController.confirmDelete(f.selectedFolder)}}))}),_.forEach(t,function(e){h.registerHotkey(e)});var t;e.$on("$destroy",function(){_.forEach(x,function(e){h.deregisterHotkey(e)})})};this.hideAdvancedSearch=function(){M.service.$virtualPath=!1,M.service.$virtualMode=!1,v=M.accounts[0],y=M.searchPreviousMailbox,t.go("mail.account.mailbox",{accountId:v.id,mailboxId:c(y.path)})},this.toggleAdvancedSearch=function(){if(f.selectedFolder.$isLoading)M.virtualMailbox.stopSearch();else{var e,n=[],s=function(e){_.forEach(e,function(e){n.push(e),e.children&&e.children.length>0&&s(e.children)})};M.virtualMailbox=new m(M.accounts[0]),f.$virtualMode||(M.searchPreviousMailbox=f.selectedFolder),f.selectedFolder=M.virtualMailbox,f.$virtualMode=!0,angular.isDefined(f.$virtualPath)?(e=M.accounts[0].$getMailboxByPath(f.$virtualPath),n.push(e),M.search.subfolders&&e.children.length&&s(e.children)):n=M.accounts[0].$flattenMailboxes(),M.virtualMailbox.setMailboxes(n),M.virtualMailbox.startSearch(M.search.match,M.search.params),"mail.account.virtualMailbox"!=t.$current.name&&t.go("mail.account.virtualMailbox",{accountId:M.accounts[0].id})}},this.addSearchParam=function(e){return M.currentSearchParam=e,r("advancedSearch"),!1},this.newSearchParam=function(e){if(e.length&&M.currentSearchParam.length){var t=0,n=M.currentSearchParam;return e.startsWith("!")&&(t=1,e=e.substring(1).trim()),M.currentSearchParam="",{searchBy:n,searchInput:e,negative:t}}},this.toggleAccountState=function(e){e.$expanded=!e.$expanded,e.$flattenMailboxes({reload:!0,saveState:!0}),s(function(){angular.element(i).triggerHandler("resize")},150)},this.subscribe=function(e){o.show({templateUrl:e.id+"/subscribe",controller:t,controllerAs:"subscriptions",clickOutsideToClose:!0,escapeToClose:!0,locals:{srcAccount:e}}).finally(function(){e.$getMailboxes({reload:!0})}),t.$inject=["$scope","$mdDialog","srcAccount"];function t(e,t,n){var s=this;s.loading=!0,s.filter={name:""},s.account=new g({id:n.id,name:n.name}),s.close=function(){t.hide()},s.account.$getMailboxes({reload:!0,all:!0}).then(function(){s.loading=!1})}},this.newFolder=function(e){u.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(t){e.$newMailbox(e.id,t).then(function(){},function(e,n){u.alert(l('An error occured while creating the mailbox "%{0}".',t),l(e.error))})})},this.delegate=function(e){o.show({templateUrl:e.id+"/delegation",controller:t,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:p,account:e}}),t.$inject=["$scope","$mdDialog","User","account"];function t(e,t,n,s){var i=this;i.users=s.delegates,i.account=s,i.userToAdd="",i.searchText="",i.userFilter=function(e){return n.$filter(e,s.delegates)},i.closeModal=function(){t.hide()},i.removeUser=function(e){s.$removeDelegate(e.uid).catch(function(e,t){u.alert(l("Warning"),l("An error occured please try again."))})},i.addUser=function(e){e&&s.$addDelegate(e).then(function(){i.userToAdd="",i.searchText=""},function(e){u.alert(l("Warning"),e)})}}},this.refreshUnseenCount=function(){var e,t=i.unseenCountFolders;_.forEach(M.accounts,function(e){_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)})}),g.$$resource.post("","unseenCount",{mailboxes:t}).then(function(e){_.forEach(M.accounts,function(t){_.forEach(t.$$flattenMailboxes,function(t){e[t.id]&&(t.unseenCount=e[t.id])})})}),(e=$.defaults.SOGoRefreshViewCheck)&&"manually"!=e&&s(M.refreshUnseenCount,1e3*e.timeInterval())},this.isDroppableFolder=function(e,t){return t.id!=e.id&&!t.isNoSelect()},this.dragSelectedMessages=function(e,n,s){var i,o,r,c,u,d;i="/"+n.id,0===(o=e.$selectedMessages()).length&&(o=[e.$selectedMessage()]),r=_.map(o,"uid"),c=e.selectedMessage&&r.indexOf(e.selectedMessage)>=0,"copy"==s?(u=e.$copyMessages(o,i),d=l("%{0} message(s) copied",o.length)):(u=e.$moveMessages(o,i),d=l("%{0} message(s) moved",o.length)),u.then(function(){c&&t.go("mail.account.mailbox"),a.show(a.simple().content(d).position("top right").hideDelay(2e3))})}}angular.module("SOGo.MailerUI").controller("MailboxesController",e)}(),function(){"use strict";e.$inject=["$window","$scope","$state","$mdMedia","$mdDialog","sgConstant","stateAccounts","stateAccount","stateMailbox","stateMessage","sgHotkeys","encodeUriFilter","sgSettings","ImageGallery","sgFocus","Dialog","Preferences","Calendar","Component","Account","Mailbox","Message"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b,v,y,M,x){var C=this,w=[];this.$onInit=function(){e.$messageController=C,f.setMessage(u),this.$state=n,this.accounts=a,this.account=r,this.mailbox=c,this.message=u,this.service=x,this.tags={searchText:"",selected:""},this.showFlags=u.flags&&u.flags.length>0,this.$showDetailedRecipients=!1,C.showRawSource=!1,(s=w).push(d.createHotkey({key:l("hotkey_reply"),description:l("Reply to the message"),callback:E(angular.bind(C,C.reply))})),s.push(d.createHotkey({key:l("hotkey_replyall"),description:l("Reply to sender and all recipients"),callback:E(angular.bind(C,C.replyAll))})),s.push(d.createHotkey({key:l("hotkey_forward"),description:l("Forward selected message"),callback:E(angular.bind(C,C.forward))})),s.push(d.createHotkey({key:l("hotkey_flag"),description:l("Flagged"),callback:E(angular.bind(u,u.toggleFlag))})),_.forEach(["backspace","delete"],function(e){s.push(d.createHotkey({key:e,callback:E(function(e){0===C.mailbox.$selectedCount()&&C.deleteMessage(),e.preventDefault()})}))}),_.forEach(s,function(e){d.registerHotkey(e)});var s;e.opener?(t.$watchCollection(function(){return C.message.flags},function(e,t){var n;(e||t)&&(n=S()).messageCtrl&&n.messageCtrl.service.$timeout(function(){n.messageCtrl.showFlags=!0,n.messageCtrl.message.flags=e})}),t.$watch(function(){return C.message.isflagged},function(e,t){var n=S();n.mailboxCtrl&&n.mailboxCtrl.service.$timeout(function(){_.find(n.mailboxCtrl.selectedFolder.$messages,{uid:C.message.uid}).isflagged=e})})):t.$watchCollection(function(){return C.message.flags},function(e,t){var n,s,i;(e||t)&&(n=e||[],s=t||[],_.forEach(n,function(e,t){angular.isObject(e)&&(n[t]=e.name)}),n.length>s.length?(i=_.difference(n,s),_.forEach(i,function(e){C.message.addTag(e)})):n.length0&&(t.mailbox.messageDialog=arguments[0]),t.mailbox.messageDialog):null}function E(e){return function(){if(null===I())return e.apply(C,arguments)}}function S(){var t,n,s={};return e.opener&&e.opener.$mailboxController&&e.opener.$mailboxController.selectedFolder.$id()==c.$id()&&(n=e.opener.$mailboxController,s.mailboxCtrl=n,e.opener.$messageController&&e.opener.$messageController.message.uid==u.uid&&(t=e.opener.$messageController,s.messageCtrl=t)),s}this.addFlags=function(e){this.showFlags=!0,m("flags")},this.toggleDetailedRecipients=function(e){this.$showDetailedRecipients=!this.$showDetailedRecipients,e.stopPropagation(),e.preventDefault()},this.filterMailtoLinks=function(e){var t;"A"==e.target.tagName&&"href"in e.target.attributes&&(t=e.target.attributes.href.value,/^mailto:([^\?]+)/.exec(t)&&(delete e.target.attributes.target,this.newMessage(e,t)))},this.deleteMessage=function(){var e,t,i,a,r,l=S();l.messageCtrl?(e=l.mailboxCtrl.selectedFolder,t=l.messageCtrl.message,i=l.messageCtrl.$state):(e=c,t=u,i=n),e.$deleteMessages([t]).then(function(n){var l=n;if(t=null,angular.isDefined(i)){n>0&&(l-=1,a=e.$messages[l]),ne.$lastVisibleIndex&&(e.$topIndex=l-(e.$lastVisibleIndex-e.$topIndex))):i.go("mail.account.mailbox").then(function(){t=null,delete e.selectedMessage})}catch(e){}}C.closePopup()})};function A(e,t){null===I()&&I(i.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:C.account,stateMessage:t}}).finally(function(){I(null),C.closePopup()}))}this._showMailEditorInPopup=function(e){return!g.isPopup&&"popup"==$.defaults.SOGoMailComposeWindow&&(this.openInPopup(e),!0)},this.close=function(){n.go("mail.account.mailbox").then(function(){C.message=null,delete c.selectedMessage})},this.reply=function(e){this._showMailEditorInPopup("reply")||A(e,this.message.$reply())},this.replyAll=function(e){this._showMailEditorInPopup("replyall")||A(e,this.message.$replyAll())},this.forward=function(e){this._showMailEditorInPopup("forward")||A(e,this.message.$forward())},this.edit=function(e){this._showMailEditorInPopup("edit")||this.message.$editableContent().then(function(){A(e,C.message)})},this.openInPopup=function(t){var n=[g.baseURL(),"UIxMailPopupView#!/Mail",this.message.accountId,h(h(this.message.$mailbox.path)),this.message.uid].join("/"),s=this.message.$absolutePath();t&&(n+="/"+t),e.open(n,s,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))},this.closePopup=function(){e.opener&&e.close()},this.newMessage=function(e,t){e.stopPropagation(),e.preventDefault(),this.account.$newMessage({mailto:t}).then(function(t){A(e,t)})},this.toggleRawSource=function(e){this.showRawSource||this.message.$rawSource?this.showRawSource=!this.showRawSource:x.$$resource.post(this.message.id,"viewsource").then(function(e){C.message.$rawSource=e,C.showRawSource=!0})},this.print=function(t){e.print()},this.convertToEvent=function(e){return F(e,"appointment")},this.convertToTask=function(e){return F(e,"task")};function F(e,t){C.message.$plainContent().then(function(n){var s={pid:b.$defaultCalendar(),type:t,summary:n.subject,comment:n.content},o=new v(s),a=[g.activeUser("folderURL"),"Calendar","UIx"+t.capitalize()+"EditorTemplate"].join("/");return i.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:a,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:o}})})}}angular.module("SOGo.MailerUI").controller("MessageController",e)}(),function(){"use strict";e.$inject=["$scope","$window","$stateParams","$mdConstant","$mdDialog","$mdToast","FileUploader","stateAccount","stateMessage","encodeUriFilter","$timeout","Dialog","AddressBook","Card","Preferences"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m){var p=this;p.addRecipient=function(e,t){var n,s,i,o,a,r=/([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)/i;if(n=p.message.editable[t],angular.isString(e)){for(a="",o=0;o',' '," {{$ctrl.mailbox.$icon}}"," ",'

',' ',' ',"

",' ',' '," ",' more_vert'].join(""),controller:"sgMailboxListItemController",controllerAs:"$ctrl"}})}(),function(){e.$inject=["$scope","$element","Mailbox"];function e(e,t,n){var s=this;this.$onInit=function(){var t=["uid","isread","isflagged","flags","subject"];this.MailboxService=n,"draft"==n.selectedFolder.type&&t.push("subject"),e.$watch(function(){return s.message?[_.pick(s.message,t)]:null},function(e,t){s.message&&s.onUpdate()},!0)},this.onUpdate=function(){this.message.isread?t.removeClass("unread"):t.addClass("unread"),n.selectedFolder.isSelectedMessage(this.message.uid,this.message.$mailbox.path)?t.addClass("md-default-theme md-accent md-bg md-hue-2"):t.removeClass("md-default-theme md-accent md-bg md-hue-2")},this.setVisibility=function(e,t){t?e.classList.remove("ng-hide"):e.classList.add("ng-hide")}}angular.module("SOGo.MailerUI").controller("sgMessageListItemController",e).directive("sgMessageListItem",function(){return{restrict:"C",scope:{},bindToController:{message:"=sgMessage"},controller:"sgMessageListItemController"}})}(),function(){e.$inject=["$scope","$element","$parse","$state","$mdUtil","$mdToast","Mailbox","Message","encodeUriFilter"];function e(e,t,n,s,i,o,a,r,l){var c=this;this.$postLink=function(){var n,s,o,l;this.parentController=e.parentController,o=this.parentController.onUpdate,l=this.parentController.setVisibility,_.forEach(t.find("div"),function(e){e.classList.contains("sg-tile-content")?n=angular.element(e):e.classList.contains("sg-tile-icons")&&(s=angular.element(e))}),this.priorityIconElement=n.find("md-icon")[0],a.$virtualMode&&(this.mailboxNameElement=n.find("span")[0],this.mailboxNameElement.classList.remove("ng-hide")),this.senderElement=n.find("span")[1],_.forEach(n.find("div"),function(e){e.classList.contains("sg-tile-subject")?c.subjectElement=e:e.classList.contains("sg-tile-size")?c.sizeElement=e:e.classList.contains("sg-tile-date")&&(c.dateElement=e)}),_.forEach(s.find("md-icon"),function(e){"star"==e.textContent?c.flagIconElement=e:"reply"==e.textContent?c.answerIconElement=e:"forward"==e.textContent?c.forwardIconElement=e:"attach_file"==e.textContent&&(c.attachmentIconElement=e)}),this.parentController.onUpdate=function(){var e;c.message=c.parentController.message;var n=i.nodesToArray(t[0].querySelectorAll(".sg-category"));for(_.forEach(n,function(e){t[0].removeChild(e)}),e=0;e');a.css("left",3*e+"px"),a.css("background-color",c.service.$tags[s][1]),t.prepend(a)}}c.mailboxNameElement&&(c.mailboxNameElement.innerHTML=c.message.$mailbox.$displayName),"sent"==c.MailboxService.selectedFolder.type?c.senderElement.innerHTML=c.message.$shortAddress("to").encodeEntities():c.senderElement.innerHTML=c.message.$shortAddress("from").encodeEntities(),c.message.priority&&c.message.priority.level<3?(c.priorityIconElement.classList.remove("ng-hide"),c.message.priority.level<2?c.priorityIconElement.classList.add("md-warn"):c.priorityIconElement.classList.remove("md-warn")):c.priorityIconElement.classList.add("ng-hide"),c.subjectElement.innerHTML=c.message.subject.encodeEntities(),c.sizeElement.innerHTML=c.message.size,c.dateElement.innerHTML=c.message.relativedate,l(c.flagIconElement,c.message.isflagged),l(c.answerIconElement,c.message.isanswered),l(c.forwardIconElement,c.message.isforwarded),l(c.attachmentIconElement,c.message.hasattachment),angular.bind(c.parentController,o)()},this.service=r,this.MailboxService=a}}angular.module("SOGo.MailerUI").controller("sgMessageListItemMainController",e).directive("sgMessageListItemMain",function(){return{restrict:"C",require:"^^sgMessageListItem",scope:{},template:['
','
',"
",' \x3c!-- mailbox --\x3e',' error'," \x3c!-- sender or recipient --\x3e","
",'
\x3c!-- date --\x3e
',"
",'
','
\x3c!-- subject --\x3e
','
\x3c!-- size --\x3e
',"
","
",'
',' star',' reply',' forward',' attach_file',"
",'
',' \x3c!-- message loading progress --\x3e',"
"].join(""),link:function(e,t,n,s){e.parentController=s},controller:"sgMessageListItemMainController",controllerAs:"$ctrl"}})}(),function(){"use strict";e.$inject=["$element","ImageGallery"];function e(e,t){var n=this;this.$postLink=function(){t.registerImage(e),e.on("click",this.showImage)},this.showImage=function(e){"IMG"==e.target.tagName&&t.showGallery(e,n.partIndex)}}angular.module("SOGo.MailerUI").directive("sgZoomableImage",function(){return{restrict:"A",bindToController:{partIndex:"=sgZoomableImage"},controller:e}})}(); +!function(){"use strict";function e(t){"function"!=typeof t.then&&(angular.extend(this,t),_.forEach(this.identities,function(e){e.fullName?e.full=e.fullName+" <"+e.email+">":e.full="<"+e.email+">"}),e.$log.debug("Account: "+JSON.stringify(t,void 0,2)))}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(t,n,s,i,o,a,r,l){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Preferences:a,$Mailbox:r,$Message:l}),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",e.$factory),e.$findAll=function(t){return t?e.$unwrapCollection(t):e.$$resource.fetch("","mailAccounts").then(function(t){return e.$unwrapCollection(t)})},e.$unwrapCollection=function(t){var n=[];return angular.forEach(t,function(t,s){t.id=s,n[s]=new e(t)}),e.$accounts=n,n},e.prototype.getLength=function(){return this.$flattenMailboxes().length},e.prototype.getItemAtIndex=function(e){var t;return t=this.$flattenMailboxes(),e>=0&&e=0,e.children&&e.children.length>0&&i(e.children)})};if(e.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(e.$Preferences.settings.Mail.ExpandedFolders))try{s=angular.fromJson(e.$Preferences.settings.Mail.ExpandedFolders)}catch(t){e.$log.warn("Can't parse list of expanded folders. String was: "+e.$Preferences.settings.Mail.ExpandedFolders),s=[]}else s=e.$Preferences.settings.Mail.ExpandedFolders;n.$expanded=s.indexOf("/"+n.id)>=0,s.length>0&&i(n.$mailboxes)}return e.$accounts&&(n.$expanded|=1==e.$accounts.length),n.$flattenMailboxes({reload:!0}),n.$mailboxes}):e.$q.when(this.$mailboxes)},e.prototype.$flattenMailboxes=function(t){var n=[],s=[],i=function(e){_.forEach(e,function(e){n.push(e),(t&&t.all||e.$expanded)&&e.children&&e.children.length>0&&i(e.children)})};return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(i(this.$mailboxes),t&&t.all||(this.$$flattenMailboxes=n,t&&t.saveState&&(_.forEach(e.$accounts,function(e){e.$expanded&&s.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},s)}),e.$$resource.post(null,"saveFoldersState",s)))):n=this.$$flattenMailboxes,n},e.prototype.$getMailboxByType=function(e){var t=function(n){var s=_.find(n,function(t){return t.type==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$getMailboxByPath=function(e){var t=function(n){var s=_.find(n,function(t){return t.path==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$newMailbox=function(t,n){var s=this;return e.$$resource.post(t.toString(),"createFolder",{name:n}).then(function(){s.$getMailboxes({reload:!0})})},e.prototype.$certificate=function(){var t=this;return this.security&&this.security.hasCertificate?this.$$certificate?e.$q.when(this.$$certificate):e.$$resource.fetch(this.id.toString(),"certificate").then(function(e){return t.$$certificate=e,e}):e.$q.reject()},e.prototype.$removeCertificate=function(){var t=this;return e.$$resource.fetch(this.id.toString(),"removeCertificate").then(function(){t.security.hasCertificate=!1})},e.prototype.updateQuota=function(e){var t,n;t=Math.round(1e4*e.usedSpace/e.maxQuota)/100,n=l("quotasFormat").formatted(t,Math.round(e.maxQuota/10.24)/100),this.$quota={percent:t,description:n}},e.prototype.$newMessage=function(t){var n=this;return e.$$resource.fetch(this.id.toString(),"compose").then(function(t){e.$log.debug("New message (compose): "+JSON.stringify(t,void 0,2));return new e.$Message(t.accountId,n.$getMailboxByPath(t.mailboxPath),t)}).then(function(s){return e.$$resource.fetch(s.$absolutePath({asDraft:!0}),"edit").then(function(i){var o=e.$Preferences.defaults.AuxiliaryMailAccounts[n.id];return o.security&&(o.security.alwaysSign&&(i.sign=!0),o.security.alwaysEncrypt&&(i.encrypt=!0)),e.$log.debug("New message (edit): "+JSON.stringify(i,void 0,2)),angular.extend(s.editable,i),s.isNew=!0,t&&t.mailto&&(angular.isObject(t.mailto)?angular.extend(s.editable,t.mailto):s.$parseMailto(t.mailto)),s})})},e.prototype.$addDelegate=function(t){var n=this,s=e.$q.defer(),i={uid:t.uid};return!t.uid||_.indexOf(_.map(this.delegates,"uid"),t.uid)>-1?s.resolve():e.$$resource.fetch(this.id.toString(),"addDelegate",i).then(function(){n.delegates.push(t),s.resolve(n.users)},function(e,t){s.reject(l("An error occured please try again."))}),s.promise},e.prototype.$removeDelegate=function(t){var n=this,s={uid:t};return e.$$resource.fetch(this.id.toString(),"removeDelegate",s).then(function(){var e=_.indexOf(_.map(n.delegates,"uid"),t);e>=0&&n.delegates.splice(e,1)})}}(),function(){"use strict";function e(t,n){if(this.$account=t,"function"!=typeof n.then){if(this.init(n),this.name&&!this.path){var s=e.$$resource.create("createFolder",this.name);this.$unwrap(s)}}else this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function(t,n,s,i,o,a,r,l,c){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:a,$$Acl:r,$Preferences:l,$query:{sort:"arrival",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:!1,$virtualPath:!1,PRELOAD:c}),l.settings.Mail.SortingState&&(e.$query.sort=l.settings.Mail.SortingState[0],e.$query.asc=parseInt(l.settings.Mail.SortingState[1])),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",e.$factory),e.$find=function(t,n){var s;return s=n&&n.all?this.$$resource.fetch(t.id.toString(),"viewAll"):this.$$resource.fetch(t.id.toString(),"view"),e.$unwrapCollection(t,s)},e.$unwrapCollection=function(t,n){var s=[],i=function(n,s){for(var o=0;o=0&&e=0},e.prototype.isNoSelect=function(){return this.flags.indexOf("noselect")>=0},e.prototype.getClassName=function(e){return!1},e.prototype.$rename=function(){var t,n,s,i,o=this;return this.name==this.$shadowData.name?e.$q.when():(n=(t=function(e,n){var s=null;return _.find(n,function(e){return e.path==o.path})?s=e:angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e,e.children))}),s})(null,this.$account.$mailboxes),s=null===n?this.$account.$mailboxes:n.children,i=_.indexOf(_.map(s,"id"),this.id),this.$save().then(function(e){var t,n=o.path;o.init(e),s.splice(i,1),t=_.find(s,function(e){return"folder"==e.type&&e.name.localeCompare(o.name)>0}),i=t?_.indexOf(_.map(s,"id"),t.id):s.length,s.splice(i,0,o);var a=new RegExp("^"+n),r=function(e){_.forEach(e.children,function(e){e.path=e.path.replace(a,o.path),e.id=e.$id(),r(e)})};r(o)}))},e.prototype.$compact=function(){var t=this;return e.$$resource.post(this.id,"expunge").then(function(e){e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$canFolderAs=function(){return"folder"==this.type&&0===this.level},e.prototype.$setFolderAs=function(t){return e.$$resource.post(this.id,"setAs"+t+"Folder")},e.prototype.$emptyTrash=function(){var t=this;return e.$$resource.post(this.id,"emptyTrash").then(function(e){t.$messages=[],t.uidsMap={},t.unseenCount=0,angular.isDefined(t.children)&&t.children.length&&t.$account.$getMailboxes({reload:!0}),e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$markAsRead=function(){var t=this;return e.$$resource.post(this.id,"markRead").then(function(){t.unseenCount=0,_.forEach(t.$messages,function(e){e.isread=!0})})},e.prototype.$flagMessages=function(t,n,s){var i={msgUIDs:_.map(t,"uid"),flags:n,operation:s};return e.$$resource.post(this.id,"addOrRemoveLabel",i).then(function(){return t})},e.prototype.saveSelectedMessages=function(){var t,n;return t=_.filter(this.$messages,function(e){return e.selected}),{uids:n=_.map(t,"uid")},{filename:l("Saved Messages.zip")},e.$$resource.download(this.id,"saveMessages",{uids:n})},e.prototype.exportFolder=function(){var t;return t={filename:this.name+".zip"},e.$$resource.download(this.id,"exportFolder",null,t)},e.prototype.$delete=function(t){var n=this;return e.$$resource.post(this.id,"delete",t).then(function(){return n.$account.$getMailboxes({reload:!0}),!0})},e.prototype.$_deleteMessages=function(e,t){var n,s=this,i=this.$messages.length;return n=_.filter(t,function(e,t){return!e.isread}),this.unseenCount-=n.length,_.forEachRight(this.$messages,function(t,n){var o=_.findIndex(e,function(e){return t.uid==e});o>-1?(e.splice(o,1),delete s.uidsMap[t.uid],t.uid==s.selectedMessage&&delete s.selectedMessage,s.$messages.splice(n,1),nt.uids.length-1)&&(n.$topIndex=0),n.init(t),n.uids&&(e.$log.debug("unwrapping "+n.uids.length+" messages"),a=_.invokeMap(n.headers[0],"toLowerCase"),n.headers.splice(0,1),n.threaded&&(o=n.uids[0],n.uids.splice(0,1)),_.reduce(n.uids,function(t,s,a){var r,l;return r=n.threaded?_.zipObject(o,s):{uid:s.toString()},n.uidsMap[r.uid]=a,(l=new e.$Message(n.$account.id,n,r,!0)).selected=i.indexOf(l.uid)>-1,t.push(l),t},n.$messages),_.forEach(n.headers,function(e){var t=_.zipObject(a,e),s=n.uidsMap[t.uid.toString()];_.extend(n.$messages[s],t)})),e.$log.debug("mailbox "+n.id+" ready"),n.$isLoading=!1,s.resolve(n.$messages)})},function(e){angular.extend(n,e),n.isError=!0,n.$isLoading=!1,s.reject()}),s.promise},e.prototype.$unwrapHeaders=function(t){var n=this;t.then(function(t){e.$timeout(function(){var e,s;t.length>0&&(e=_.invokeMap(t[0],"toLowerCase"),t.splice(0,1),_.forEach(t,function(t){t=_.zipObject(e,t),s=n.uidsMap[t.uid.toString()],angular.isDefined(s)&&_.extend(n.$messages[s],t)}))})})},e.prototype.$updateSubscribe=function(){var t=this.subscribed?"subscribe":"unsubscribe";e.$$resource.post(this.id,t)}}(),function(){"use strict";function e(e,t,n,s){this.accountId=e,this.$mailbox=t,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},this.selected=!1,"function"!=typeof n.then?(!angular.isUndefined(s)&&s||(angular.extend(this,n),this.$formatFullAddresses()),this.uid=parseInt(n.uid)):this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","sgMessage_STATUS","Resource","Preferences",function(t,n,s,i,o,a,r){return angular.extend(e,{STATUS:o,$q:t,$timeout:n,$log:s,$$resource:new a(i.activeUser("folderURL")+"Mail",i.activeUser()),$Preferences:r,$avatar:angular.bind(r,r.avatar)}),r.defaults.SOGoMailLabelsColors&&(e.$tags=r.defaults.SOGoMailLabelsColors),r.defaults.SOGoMailDisplayRemoteInlineImages&&"always"==r.defaults.SOGoMailDisplayRemoteInlineImages&&(e.$displayRemoteInlineImages=!0),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMessage_STATUS",{NOT_LOADED:0,DELAYED_LOADING:1,LOADING:2,LOADED:3,DELAYED_MS:300}).factory("Message",e.$factory),e.filterTags=function(t,n){var s=new RegExp(t,"i"),i=[];return _.forEach(_.keys(e.$tags),function(t){var o=e.$tags[t];-1!=o[0].search(s)&&(_.includes(n,t)||i.push({name:t,description:o[0],color:o[1]}))}),i},e.prototype.$absolutePath=function(t){var n=this,s=this.id;function i(){var e;return(e=_.map(n.$mailbox.path.split("/"),function(e){return"folder"+e.asCSSIdentifier()})).splice(0,0,n.accountId),e.join("/")}return(angular.isUndefined(this.id)||t&&t.nocache)&&(this.id=i()+"/"+this.uid,s=this.id),t&&t.asDraft&&this.draftId&&(s=i()+"/"+this.draftId),t&&t.withResourcePath&&(s=e.$$resource.path(s)),s},e.prototype.$setUID=function(e){var t,n=this.uid||-1,s=this;n!=parseInt(e)&&(this.uid=parseInt(e),this.$absolutePath({nocache:!0}),n>-1?(n=n.toString(),angular.isDefined(this.$mailbox.uidsMap[n])&&(t=this.$mailbox.uidsMap[n],this.$mailbox.uidsMap[e]=t,delete this.$mailbox.uidsMap[n],_.forEach(["from","to","subject"],function(e){s.$mailbox.$messages[t][e]=s[e]}))):this.$mailbox.constructor.selectedFolder&&"draft"==this.$mailbox.constructor.selectedFolder.type&&this.$mailbox.constructor.selectedFolder.$filter())},e.prototype.$formatFullAddresses=function(){var t=this,n=_.map(t.$mailbox.$account.identities,"email");_.forEach(["from","to","cc","bcc","reply-to"],function(s){_.forEach(t[s],function(t){t.name&&t.name!=t.email?(t.full=t.name+" <"+t.email+">",t.name.length<10?t.shortname=t.name:t.name.split(" ").length&&(t.shortname=_.first(_.last(t.name.split(/, */)).split(/ +/)).replace("'",""))):t.email&&(t.full="<"+t.email+">",t.shortname=t.email.split("@")[0]),t.image=e.$avatar(t.email,32),_.indexOf(n,t.email)>=0&&(t.shortname=l("me"))})})},e.prototype.$shortRecipients=function(e){var t=this,n=[],s=0,i=0;return _.forEach(["to","cc","bcc"],function(o){i+=t[o]?t[o].length:0,_.forEach(t[o],function(t,i){se&&n.push(l("and %{0} more...",i-e)),n.join(", ")},e.prototype.$shortAddress=function(e){var t="";return this[e]&&this[e].length>0&&(t=this[e][0].name||this[e][0].email||""),t},e.prototype.allowReplyAll=function(){var e=0;return e=_.reduce(["to","cc"],_.bind(function(e,t){return this[t]?e+this[t].length:e},this),e),!this.isDraft&&e>1},e.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0,delete this.$parts},e.prototype.$content=function(){var t=this,n=[],s=function(i){i.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==i.type?s(_.find(i.content,function(e){return i.preferredPart==e.contentType})):angular.isArray(i.content)?("UIxMailPartSignedViewer"==i.type&&1===i["supports-smime"]?t.signed={valid:i.valid,certificate:i.certificates[i.certificates.length-1],message:i.message}:"UIxMailPartEncryptedViewer"==i.type&&(t.encrypted={valid:i.valid},i.valid?t.encrypted.message=l("This message is encrypted"):t.encrypted.message=l("This message can't be decrypted. Please make sure you have uploaded your S/MIME certificate from the mail preferences module.")),_.forEach(i.content,function(e){s(e)})):(angular.isUndefined(i.safeContent)&&(i.safeContent=i.content,t.$hasUnsafeContent|=i.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==i.type?(i.html=!0,t.$loadUnsafeContent||e.$displayRemoteInlineImages?(angular.isUndefined(i.unsafeContent)&&(i.unsafeContent=document.createElement("div"),i.unsafeContent.innerHTML=i.safeContent,angular.forEach(["src","data","classid","background","style"],function(e){var t,n,s,o=i.unsafeContent.querySelectorAll("[unsafe-"+e+"]");for(s=0;s"}),n={to:t},_.forEach(["subject","body"],function(t){var i=new RegExp(t+"=([^&]+)");t="body"==t?"text":t,(s=i.exec(e))&&(n[t]=decodeURIComponent(s[1]))}),_.forEach(["cc","bcc"],function(t){var i=new RegExp(t+"=([^&]+)");(s=i.exec(e))&&(n[t]=_.map(decodeURIComponent(s[1]).split(","),function(e){return"<"+e.trim()+">"}))}),angular.extend(this.editable,n))},e.prototype.$reply=function(){return this.$newDraft("reply")},e.prototype.$replyAll=function(){return this.$newDraft("replyall")},e.prototype.$forward=function(){return this.$newDraft("forward")},e.prototype.$newDraft=function(t){var n=this;return e.$$resource.fetch(this.$absolutePath(),t).then(function(s){var i,o;return e.$log.debug("New "+t+": "+JSON.stringify(s,void 0,2)),i=n.$mailbox.$account.$getMailboxByPath(s.mailboxPath),o=new e(s.accountId,i,s),e.$$resource.fetch(o.$absolutePath({asDraft:!0}),"edit").then(function(s){e.$log.debug("New "+t+": "+JSON.stringify(s,void 0,2)+" original UID: "+n.uid);var i=e.$Preferences.defaults.AuxiliaryMailAccounts[n.$mailbox.$account.id];return i.security&&(i.security.alwaysSign&&(s.sign=!0),i.security.alwaysEncrypt&&(s.encrypt=!0)),angular.extend(o.editable,s),o.origin={message:n,action:t},o})})},e.prototype.$save=function(){var t=this,n=this.editable;return e.$log.debug("save = "+JSON.stringify(n,void 0,2)),e.$$resource.save(this.$absolutePath({asDraft:!0}),n).then(function(n){e.$log.debug("save = "+JSON.stringify(n,void 0,2)),t.$setUID(n.uid),t.$reload(),t.isNew=!1})},e.prototype.$send=function(){var t=this,n=angular.copy(this.editable);return e.$log.debug("send = "+JSON.stringify(n,void 0,2)),e.$$resource.post(this.$absolutePath({asDraft:!0}),"send",n).then(function(n){return"success"==n.status?(angular.isDefined(t.origin)&&(t.origin.action.startsWith("reply")?t.origin.message.isanswered=!0:"forward"==t.origin.action&&(t.origin.message.isforwarded=!0)),n):e.$q.reject(n.data)})},e.prototype.$unwrap=function(t){var n=this;return this.$loaded=e.STATUS.DELAYED_LOADING,e.$timeout(function(){n.$loaded!=e.STATUS.LOADED&&(n.$loaded=e.STATUS.LOADING)},e.STATUS.DELAYED_MS),this.$futureMessageData=t.then(function(t){return 0===n.isread&&(n.isread=!0,n.$mailbox.unseenCount--),e.$timeout(function(){return angular.extend(n,t),n.$formatFullAddresses(),n.$loadUnsafeContent=!1,n.$loaded=e.STATUS.LOADED,n})}),this.$futureMessageData},e.prototype.$omit=function(e){var t={},n=e&&e.privateAttributes;return angular.forEach(this,function(e,s){("constructor"!=s&&"$"!=s[0]||n)&&(t[s]=e)}),t},e.prototype.download=function(){var t,n;return t={uids:[this.uid]},n={filename:this.subject+".zip"},e.$$resource.download(this.$mailbox.id,"saveMessages",t,n)},e.prototype.downloadAttachments=function(){var t;return t={filename:l("attachments")+"-"+this.uid+".zip"},e.$$resource.download(this.$absolutePath(),"archiveAttachments",null,t)}}(),function(){"use strict";function e(){this.show=!1,this.message=null,this.elements=[]}e.$factory=["$document","$timeout","$mdPanel","sgHotkeys",function(t,n,s,i){return angular.extend(e,{$document:t,$timeout:n,$mdPanel:s,sgHotkeys:i}),new e}],e.prototype.setMessage=function(e){this.message=e},e.prototype.registerImage=function(e){this.elements.push(e)},e.prototype.registerHotkeys=function(t){this.keys=[e.sgHotkeys.createHotkey({key:"left",description:l("View previous item"),callback:angular.bind(t,t.previousImage)}),e.sgHotkeys.createHotkey({key:"right",description:l("View next item"),callback:angular.bind(t,t.nextImage)})],_.forEach(this.keys,function(t){e.sgHotkeys.registerHotkey(t)})},e.prototype.showGallery=function(t,n){var s=this,i=e.$mdPanel,o=angular.element(this.message.parts.content[n].content).find("img")[0].src,a=_.filter(this.message.attachmentAttrs,function(e){return 0===e.mimetype.indexOf("image/")}),r=_.findIndex(a,function(e){return e.url.indexOf(o)>=0});angular.element(e.$document[0].body).addClass("sg-image-gallery-backdrop");var c=i.newPanelPosition().absolute(),u=i.newPanelAnimation().openFrom(t.target).duration(100).withAnimation(i.animation.FADE),d={attachTo:angular.element(document.body),locals:{lastIndex:a.length-1,images:a,selectedIndex:r,selectedImage:a[r]},bindToController:!0,controller:h,controllerAs:"$panelCtrl",position:c,animation:u,targetEvent:t,fullscreen:!0,hasBackdrop:!0,template:['','
',' '," arrow_back"," ",' image','
',' '," file_download"," ","
",'
',' '," navigate_before"," ",' ',' '," navigate_next"," ","
",'
','
',' ',"
","
","
"].join(""),trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0,onOpenComplete:function(){s.show=!0,_.forEach(e.$document.find("sg-image-gallery")[0].getElementsByClassName("sg-image-thumbnail"),function(t){var n=t.children[0];angular.element(n).one("load",function(){n.naturalWidth0&&this.selectImage(this.selectedIndex-1)}}},angular.module("SOGo.MailerUI").factory("ImageGallery",e.$factory)}(),function(){"use strict";function e(e){this.$account=e}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Mailbox","sgMailbox_PRELOAD",function(t,n,s,i,o,a,r,l){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new o(i.activeUser("folderURL")+"Mail",i.activeUser()),$Message:r,selectedFolder:null,PRELOAD:l}),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("VirtualMailbox",e.$factory),e.$absolutePath=function(e){return[e,"virtual"].join("/")},e.prototype.init=function(e){this.$isLoading=!1,this.$mailboxes=[],this.uidsMap={},angular.extend(this,e),this.id=this.$id()},e.prototype.setMailboxes=function(e){this.$mailboxes=e,_.forEach(this.$mailboxes,function(e){e.$messages=[],e.uidsMap={}})},e.prototype.startSearch=function(t,n){var s=this,i=e.$q.when();this.$isLoading=!0,_.forEach(this.$mailboxes,function(o){i=i.then(function(){if(s.$isLoading)return e.$log.debug("searching mailbox "+o.path),o.$filter({sort:"date",asc:!1,match:t},n)})}),i.finally(function(){s.$isLoading=!1})},e.prototype.stopSearch=function(){e.$log.debug("stopping search..."),this.$isLoading=!1},e.prototype.selectFolder=function(){},e.prototype.resetSelectedMessage=function(){_.forEach(this.$mailboxes,function(e){delete e.selectedMessage})},e.prototype.hasSelectedMessage=function(){return angular.isDefined(_.find(this.$mailboxes,function(e){return angular.isDefined(e.selectedMessage)}))},e.prototype.isSelectedMessage=function(e,t){return angular.isDefined(_.find(this.$mailboxes,function(n){return n.path==t&&n.selectedMessage==e}))},e.prototype.getLength=function(){var e=0;return angular.isDefined(this.$mailboxes)?(_.forEach(this.$mailboxes,function(t){e+=t.$messages.length}),e):e},e.prototype.getItemAtIndex=function(e){var t,n,s,i,o;if(angular.isDefined(this.$mailboxes)&&e>=0)for(t=0,n=0;n0){var s=_.map(t,"uid");o.push(t);var r=e.$$resource.post(n,"addOrRemoveLabel",_.assign(i,{msgUIDs:s}));a.push(r)}}),e.$q.all(a).then(function(){return _.flatten(o)})},e.prototype.$deleteMessages=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$deleteMessages(e);n.push(s)}}),e.$q.all(n)},e.prototype.$markOrUnMarkMessagesAsJunk=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$markOrUnMarkMessagesAsJunk(e);n.push(s)}}),e.$q.all(n)},e.prototype.$copyMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var i=e[0].$mailbox.$copyMessages(e,n);s.push(i)}}),e.$q.all(s)},e.prototype.$moveMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var i=e[0].$mailbox.$moveMessages(e,n);s.push(i)}}),e.$q.all(s)}}(),function(){"use strict";e.$inject=["$window","$scope","$timeout","$q","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","sgHotkeys","encodeUriFilter","sgSettings","sgFocus","Dialog","Preferences","Account","Mailbox"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b){var v=this,y=angular.element(e.document).find("title").attr("sg-default")||"SOGo",M=[];this.$onInit=function(){e.$mailboxController=v,this.service=b,this.accounts=r,this.account=c,this.selectedFolder=u,this.messageDialog=null,this.mode={search:!1,multiple:0},(n=M).push(d.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:v.searchMode})),n.push(d.createHotkey({key:l("hotkey_compose"),description:l("Write a new message"),callback:function(e){null===v.messageDialog&&v.newMessage(e)}})),n.push(d.createHotkey({key:l("hotkey_junk"),description:l("Mark the selected messages as junk"),callback:v.markOrUnMarkMessagesAsJunk})),n.push(d.createHotkey({key:"space",description:l("Toggle item"),callback:v.toggleMessageSelection})),n.push(d.createHotkey({key:"shift+space",description:l("Toggle range of items"),callback:v.toggleMessageSelection})),n.push(d.createHotkey({key:"up",description:l("View next item"),callback:C,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"down",description:l("View previous item"),callback:w,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"shift+up",description:l("Add next item to selection"),callback:I,preventInClass:["sg-mail-part"]})),n.push(d.createHotkey({key:"shift+down",description:l("Add previous item to selection"),callback:E,preventInClass:["sg-mail-part"]})),_.forEach(["backspace","delete"],function(e){n.push(d.createHotkey({key:e,description:l("Delete selected message or folder"),callback:v.confirmDeleteSelectedMessages}))}),_.forEach(n,function(e){d.registerHotkey(e)});var n;angular.element(e).on("beforeunload",x),t.$on("$destroy",function(){angular.element(e).off("beforeunload",x),_.forEach(M,function(e){d.deregisterHotkey(e)})}),t.$watch(function(){return v.selectedFolder.unseenCount},function(t){var n=y+" - ";t&&(n+="("+t+") "),n+=v.selectedFolder.$displayName,e.document.title=n})};function x(e){return v.selectedFolder.$compact()}this.centerIsClose=function(e){return this.selectedFolder.hasSelectedMessage()&&!!e},this.sort=function(e){v.selectedFolder.$filter({sort:e})},this.sortedBy=function(e){return b.$query.sort==e},this.searchMode=function(){v.mode.search=!0,f("search")},this.cancelSearch=function(){v.mode.search=!1,v.selectedFolder.$filter().then(function(){v.selectedFolder.selectedMessage&&n(function(){v.selectedFolder.$topIndex=v.selectedFolder.uidsMap[v.selectedFolder.selectedMessage]})})},this.composeWindowEnabled=function(){return p.defaults.SOGoMailComposeWindowEnabled},this.newMessage=function(t,n){var s;null===v.messageDialog&&(n||"popup"==p.defaults.SOGoMailComposeWindow?function(){var t=[g.baseURL(),"UIxMailPopupView#!/Mail",v.account.id,h(h(v.selectedFolder.path)),"new"].join("/"),n=v.selectedFolder.$id()+"/"+Math.random(0,1e3);console.debug(t),e.open(t,n,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}():(s=v.account.$newMessage(),v.messageDialog=o.show({parent:angular.element(document.body),targetEvent:t,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:v.account,stateMessage:s}}).catch().finally(function(){v.messageDialog=null})))};function C(e){var t=v.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t--,v.selectedFolder.$topIndex>0&&v.selectedFolder.$topIndex--):(t=v.selectedFolder.getLength()-1,v.selectedFolder.$topIndex=v.selectedFolder.getLength()),t>-1&&v.selectMessage(v.selectedFolder.$messages[t]),e.preventDefault(),t}function w(e){var t=v.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t++,v.selectedFolder.$topIndex=0&&v.toggleMessageSelection(e,v.selectedFolder.$messages[t])}function E(e){var t;v.selectedFolder.hasSelectedMessage()&&(t=w(e))>=0&&v.toggleMessageSelection(e,v.selectedFolder.$messages[t])}this.selectMessage=function(e){b.$virtualMode?i.go("mail.account.virtualMailbox.message",{mailboxId:h(e.$mailbox.path),messageId:e.uid}):i.go("mail.account.mailbox.message",{messageId:e.uid})},this.toggleMessageSelection=function(e,t){var n,s,i,o=v.selectedFolder;if(t||(t=o.$selectedMessage()),!t)return!0;if(t.selected=!t.selected,v.mode.multiple+=t.selected?1:-1,e.shiftKey&&o.$selectedCount()>1){for(s=(n=o.uidsMap[t.uid])-2;s>=0&&!o.$messages[s].selected;)s--;if(s<0)for(s=n+2;s=0&&s0&&(a-=1,s=v.selectedFolder.$messages[a]),t0&&(v.messageDialog=m.confirm(l("Confirmation"),l("Are you sure you want to delete the selected messages?"),{ok:l("Delete")}).then(function(){var e=v.selectedFolder.hasSelectedMessage();v.selectedFolder.$deleteMessages(t).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)},function(n){v.messageDialog=m.confirm(l("Warning"),l("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),{ok:l("Delete")}).then(function(){v.selectedFolder.$deleteMessages(t,{withoutTrash:!0}).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)})})})}).finally(function(){v.messageDialog=null})),e.preventDefault()},this.markOrUnMarkMessagesAsJunk=function(){var e=v.selectedFolder.hasSelectedMessage(),t=v.selectedFolder.$selectedMessages();0===_.size(t)&&e&&(t=[v.selectedFolder.$selectedMessage()]),_.size(t)>0&&v.selectedFolder.$markOrUnMarkMessagesAsJunk(t).then(function(){var n="/"+v.account.id+"/folderINBOX";"junk"!=v.selectedFolder.type&&(n="/"+v.account.$getMailboxByType("junk").id),v.selectedFolder.$moveMessages(t,n).then(function(t){b.$virtualMode?e&&i.go("mail.account.virtualMailbox"):A(e,t)})})},this.copySelectedMessages=function(e){var t=v.selectedFolder.$selectedMessages();_.size(t)>0&&v.selectedFolder.$copyMessages(t,"/"+e).then(function(){a.show(a.simple().content(l("%{0} message(s) copied",v.selectedFolder.$selectedCount())).position("top right").hideDelay(2e3))})},this.moveSelectedMessages=function(e){var t=v.selectedFolder.hasSelectedMessage(),n=v.selectedFolder.$selectedMessages(),s=v.selectedFolder.$selectedCount();_.size(n)>0&&v.selectedFolder.$moveMessages(n,"/"+e).then(function(e){a.show(a.simple().content(l("%{0} message(s) moved",s)).position("top right").hideDelay(2e3)),b.$virtualMode?t&&i.go("mail.account.virtualMailbox"):A(t,e)})},this.selectAll=function(){var e=0;_.forEach(S(),function(t){for(var n=0,s=t.$messages.length;n0&&v.selectedFolder.$flagMessages(e,"\\Flagged","add").then(function(e){_.forEach(e,function(e){e.isflagged=!0})})},this.markSelectedMessagesAsUnread=function(){var e=v.selectedFolder.$selectedMessages();_.size(e)>0&&v.selectedFolder.$flagMessages(e,"seen","remove").then(function(e){_.forEach(e,function(e){e.isread&&e.$mailbox.unseenCount++,e.isread=!1})})},this.markSelectedMessagesAsRead=function(){var e=v.selectedFolder.$selectedMessages();_.size(e)>0&&v.selectedFolder.$flagMessages(e,"seen","add").then(function(e){_.forEach(e,function(e){e.isread||e.$mailbox.unseenCount--,e.isread=!0})})}}angular.module("SOGo.MailerUI").controller("MailboxController",e),t.$inject=["$delegate"];function t(e){return e[0].controller.prototype.resetScroll=function(){"messagesList"==this.$element.parent().attr("id")?this.updateSize():this.scrollTo(0)},e}angular.module("material.components.virtualRepeat").decorator("mdVirtualRepeatContainerDirective",t)}(),function(){"use strict";e.$inject=["$scope","$state","$transitions","$timeout","$window","$mdDialog","$mdToast","sgFocus","encodeUriFilter","Dialog","sgSettings","sgHotkeys","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b){var v,y,M=this,x=[];this.$onInit=function(){this.service=f,this.accounts=b,this.currentSearchParam="",this.search={options:{"":"",subject:l("Enter Subject"),from:l("Enter From"),to:l("Enter To"),cc:l("Enter Cc"),body:l("Enter Body")},subfolders:1,match:"AND",params:[]},this.showSubscribedOnly=$.defaults.SOGoMailShowSubscribedFoldersOnly,this.refreshUnseenCount(),t=x,_.forEach(["backspace","delete"],function(e){t.push(h.createHotkey({key:e,description:l("Delete selected message or folder"),callback:function(){f.selectedFolderController&&f.selectedFolder&&!f.selectedFolder.hasSelectedMessage()&&f.selectedFolderController.confirmDelete(f.selectedFolder)}}))}),_.forEach(t,function(e){h.registerHotkey(e)});var t;e.$on("$destroy",function(){_.forEach(x,function(e){h.deregisterHotkey(e)})})};this.hideAdvancedSearch=function(){M.service.$virtualPath=!1,M.service.$virtualMode=!1,v=M.accounts[0],y=M.searchPreviousMailbox,t.go("mail.account.mailbox",{accountId:v.id,mailboxId:c(y.path)})},this.toggleAdvancedSearch=function(){if(f.selectedFolder.$isLoading)M.virtualMailbox.stopSearch();else{var e,n=[],s=function(e){_.forEach(e,function(e){n.push(e),e.children&&e.children.length>0&&s(e.children)})};M.virtualMailbox=new m(M.accounts[0]),f.$virtualMode||(M.searchPreviousMailbox=f.selectedFolder),f.selectedFolder=M.virtualMailbox,f.$virtualMode=!0,angular.isDefined(f.$virtualPath)?(e=M.accounts[0].$getMailboxByPath(f.$virtualPath),n.push(e),M.search.subfolders&&e.children.length&&s(e.children)):n=M.accounts[0].$flattenMailboxes(),M.virtualMailbox.setMailboxes(n),M.virtualMailbox.startSearch(M.search.match,M.search.params),"mail.account.virtualMailbox"!=t.$current.name&&t.go("mail.account.virtualMailbox",{accountId:M.accounts[0].id})}},this.addSearchParam=function(e){return M.currentSearchParam=e,r("advancedSearch"),!1},this.newSearchParam=function(e){if(e.length&&M.currentSearchParam.length){var t=0,n=M.currentSearchParam;return e.startsWith("!")&&(t=1,e=e.substring(1).trim()),M.currentSearchParam="",{searchBy:n,searchInput:e,negative:t}}},this.toggleAccountState=function(e){e.$expanded=!e.$expanded,e.$flattenMailboxes({reload:!0,saveState:!0}),s(function(){angular.element(i).triggerHandler("resize")},150)},this.subscribe=function(e){o.show({templateUrl:e.id+"/subscribe",controller:t,controllerAs:"subscriptions",clickOutsideToClose:!0,escapeToClose:!0,locals:{srcAccount:e}}).finally(function(){e.$getMailboxes({reload:!0})}),t.$inject=["$scope","$mdDialog","srcAccount"];function t(e,t,n){var s=this;s.loading=!0,s.filter={name:""},s.account=new g({id:n.id,name:n.name}),s.close=function(){t.hide()},s.account.$getMailboxes({reload:!0,all:!0}).then(function(){s.loading=!1})}},this.newFolder=function(e){u.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(t){e.$newMailbox(e.id,t).then(function(){},function(e,n){u.alert(l('An error occured while creating the mailbox "%{0}".',t),l(e.error))})})},this.delegate=function(e){o.show({templateUrl:e.id+"/delegation",controller:t,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:p,account:e}}),t.$inject=["$scope","$mdDialog","User","account"];function t(e,t,n,s){var i=this;i.users=s.delegates,i.account=s,i.userToAdd="",i.searchText="",i.userFilter=function(e){return n.$filter(e,s.delegates)},i.closeModal=function(){t.hide()},i.removeUser=function(e){s.$removeDelegate(e.uid).catch(function(e,t){u.alert(l("Warning"),l("An error occured please try again."))})},i.addUser=function(e){e&&s.$addDelegate(e).then(function(){i.userToAdd="",i.searchText=""},function(e){u.alert(l("Warning"),e)})}}},this.refreshUnseenCount=function(){var e,t=i.unseenCountFolders;_.forEach(M.accounts,function(e){_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)})}),g.$$resource.post("","unseenCount",{mailboxes:t}).then(function(e){_.forEach(M.accounts,function(t){_.forEach(t.$$flattenMailboxes,function(t){e[t.id]&&(t.unseenCount=e[t.id])})})}),(e=$.defaults.SOGoRefreshViewCheck)&&"manually"!=e&&s(M.refreshUnseenCount,1e3*e.timeInterval())},this.isDroppableFolder=function(e,t){return t.id!=e.id&&!t.isNoSelect()},this.dragSelectedMessages=function(e,n,s){var i,o,r,c,u,d;i="/"+n.id,0===(o=e.$selectedMessages()).length&&(o=[e.$selectedMessage()]),r=_.map(o,"uid"),c=e.selectedMessage&&r.indexOf(e.selectedMessage)>=0,"copy"==s?(u=e.$copyMessages(o,i),d=l("%{0} message(s) copied",o.length)):(u=e.$moveMessages(o,i),d=l("%{0} message(s) moved",o.length)),u.then(function(){c&&t.go("mail.account.mailbox"),a.show(a.simple().content(d).position("top right").hideDelay(2e3))})}}angular.module("SOGo.MailerUI").controller("MailboxesController",e)}(),function(){"use strict";e.$inject=["$window","$scope","$state","$mdMedia","$mdDialog","sgConstant","stateAccounts","stateAccount","stateMailbox","stateMessage","sgHotkeys","encodeUriFilter","sgSettings","ImageGallery","sgFocus","Dialog","Preferences","Calendar","Component","Account","Mailbox","Message"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p,$,b,v,y,M,x){var C=this,w=[];this.$onInit=function(){e.$messageController=C,f.setMessage(u),this.$state=n,this.accounts=a,this.account=r,this.mailbox=c,this.message=u,this.service=x,this.tags={searchText:"",selected:""},this.showFlags=u.flags&&u.flags.length>0,this.$showDetailedRecipients=!1,C.showRawSource=!1,(s=w).push(d.createHotkey({key:l("hotkey_reply"),description:l("Reply to the message"),callback:E(angular.bind(C,C.reply))})),s.push(d.createHotkey({key:l("hotkey_replyall"),description:l("Reply to sender and all recipients"),callback:E(angular.bind(C,C.replyAll))})),s.push(d.createHotkey({key:l("hotkey_forward"),description:l("Forward selected message"),callback:E(angular.bind(C,C.forward))})),s.push(d.createHotkey({key:l("hotkey_flag"),description:l("Flagged"),callback:E(angular.bind(u,u.toggleFlag))})),_.forEach(["backspace","delete"],function(e){s.push(d.createHotkey({key:e,callback:E(function(e){0===C.mailbox.$selectedCount()&&C.deleteMessage(),e.preventDefault()})}))}),_.forEach(s,function(e){d.registerHotkey(e)});var s;e.opener?(t.$watchCollection(function(){return C.message.flags},function(e,t){var n;(e||t)&&(n=S()).messageCtrl&&n.messageCtrl.service.$timeout(function(){n.messageCtrl.showFlags=!0,n.messageCtrl.message.flags=e})}),t.$watch(function(){return C.message.isflagged},function(e,t){var n=S();n.mailboxCtrl&&n.mailboxCtrl.service.$timeout(function(){_.find(n.mailboxCtrl.selectedFolder.$messages,{uid:C.message.uid}).isflagged=e})})):t.$watchCollection(function(){return C.message.flags},function(e,t){var n,s,i;(e||t)&&(n=e||[],s=t||[],_.forEach(n,function(e,t){angular.isObject(e)&&(n[t]=e.name)}),n.length>s.length?(i=_.difference(n,s),_.forEach(i,function(e){C.message.addTag(e)})):n.length0&&(t.mailbox.messageDialog=arguments[0]),t.mailbox.messageDialog):null}function E(e){return function(){if(null===I())return e.apply(C,arguments)}}function S(){var t,n,s={};return e.opener&&e.opener.$mailboxController&&e.opener.$mailboxController.selectedFolder.$id()==c.$id()&&(n=e.opener.$mailboxController,s.mailboxCtrl=n,e.opener.$messageController&&e.opener.$messageController.message.uid==u.uid&&(t=e.opener.$messageController,s.messageCtrl=t)),s}this.addFlags=function(e){this.showFlags=!0,m("flags")},this.toggleDetailedRecipients=function(e){this.$showDetailedRecipients=!this.$showDetailedRecipients,e.stopPropagation(),e.preventDefault()},this.filterMailtoLinks=function(e){var t;"A"==e.target.tagName&&"href"in e.target.attributes&&(t=e.target.attributes.href.value,/^mailto:([^\?]+)/.exec(t)&&(delete e.target.attributes.target,this.newMessage(e,t)))},this.deleteMessage=function(){var e,t,i,a,r,l=S();l.messageCtrl?(e=l.mailboxCtrl.selectedFolder,t=l.messageCtrl.message,i=l.messageCtrl.$state):(e=c,t=u,i=n),e.$deleteMessages([t]).then(function(n){var l=n;if(t=null,angular.isDefined(i)){n>0&&(l-=1,a=e.$messages[l]),ne.$lastVisibleIndex&&(e.$topIndex=l-(e.$lastVisibleIndex-e.$topIndex))):i.go("mail.account.mailbox").then(function(){t=null,delete e.selectedMessage})}catch(e){}}C.closePopup()})};function A(e,t){null===I()&&I(i.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:C.account,stateMessage:t}}).finally(function(){I(null),C.closePopup()}))}this._showMailEditorInPopup=function(e){return!g.isPopup&&"popup"==$.defaults.SOGoMailComposeWindow&&(this.openInPopup(e),!0)},this.close=function(){n.go("mail.account.mailbox").then(function(){C.message=null,delete c.selectedMessage})},this.reply=function(e){this._showMailEditorInPopup("reply")||A(e,this.message.$reply())},this.replyAll=function(e){this._showMailEditorInPopup("replyall")||A(e,this.message.$replyAll())},this.forward=function(e){this._showMailEditorInPopup("forward")||A(e,this.message.$forward())},this.edit=function(e){this._showMailEditorInPopup("edit")||this.message.$editableContent().then(function(){A(e,C.message)})},this.openInPopup=function(t){var n=[g.baseURL(),"UIxMailPopupView#!/Mail",this.message.accountId,h(h(this.message.$mailbox.path)),this.message.uid].join("/"),s=this.message.$absolutePath();t&&(n+="/"+t),e.open(n,s,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))},this.closePopup=function(){e.opener&&e.close()},this.newMessage=function(e,t){e.stopPropagation(),e.preventDefault(),this.account.$newMessage({mailto:t}).then(function(t){A(e,t)})},this.toggleRawSource=function(e){this.showRawSource||this.message.$rawSource?this.showRawSource=!this.showRawSource:x.$$resource.post(this.message.id,"viewsource").then(function(e){C.message.$rawSource=e,C.showRawSource=!0})},this.print=function(t){e.print()},this.convertToEvent=function(e){return F(e,"appointment")},this.convertToTask=function(e){return F(e,"task")};function F(e,t){C.message.$plainContent().then(function(n){var s={pid:b.$defaultCalendar(),type:t,summary:n.subject,comment:n.content},o=new v(s),a=[g.activeUser("folderURL"),"Calendar","UIx"+t.capitalize()+"EditorTemplate"].join("/");return i.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:a,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:o}})})}}angular.module("SOGo.MailerUI").controller("MessageController",e)}(),function(){"use strict";e.$inject=["$scope","$window","$stateParams","$mdConstant","$mdUtil","$mdDialog","$mdToast","FileUploader","stateAccount","stateMessage","encodeUriFilter","$timeout","Dialog","AddressBook","Card","Preferences"];function e(e,t,n,s,i,o,a,r,c,u,d,h,g,f,m,p){var $=this;this.$onInit=function(){$.addRecipient=S,$.autocomplete={to:{},cc:{},bcc:{}},$.autosave=null,$.autosaveDrafts=A,$.cancel=x,$.contactFilter=E,$.isFullscreen=!1,$.hideBcc=0===u.editable.bcc.length,$.hideCc=0===u.editable.cc.length,$.identities=_.uniq(_.map(c.identities,"full")),$.message=u,$.recipientSeparatorKeys=[s.KEY_CODE.ENTER,s.KEY_CODE.TAB,s.KEY_CODE.COMMA,s.KEY_CODE.SEMICOLON],$.removeAttachment=M,$.save=C,$.send=w,$.sendState=!1,$.toggleFullscreen=I,$.uploader=new r({url:$.message.$absolutePath({asDraft:!0,withResourcePath:!0})+"/save",autoUpload:!0,alias:"attachments",removeAfterUpload:!1,onSuccessItem:function(e,t,n,s){$.message.$setUID(t.uid),$.message.$reload({asDraft:!1}),e.inlineUrl=t.lastAttachmentAttrs[0].url},onCancelItem:function(e,t,n,s){$.message.$deleteAttachment(e.file.name),this.removeFromQueue(e)},onErrorItem:function(e,t,n,s){a.show(a.simple().content(l('Error while uploading the file "%{0}":',e.file.name)+" "+(t.message?l(t.message):"")).position("top right").action(l("OK")).hideDelay(!1)),this.removeFromQueue(e)}}),p.defaults.SOGoMailAutoSave&&($.autosave=h($.autosaveDrafts,1e3*p.defaults.SOGoMailAutoSave*60)),$.localeCode=p.defaults.LocaleCode,e.$on("$destroy",function(){$.uploader.destroy()}),"reply"==n.actionName?u.$reply().then(function(e){$.message=e,$.hideCc=!e.editable.cc||0===e.editable.cc.length,$.hideBcc=!e.editable.bcc||0===e.editable.bcc.length,v()}):"replyall"==n.actionName?u.$replyAll().then(function(e){$.message=e,$.hideCc=!e.editable.cc||0===e.editable.cc.length,$.hideBcc=!e.editable.bcc||0===e.editable.bcc.length,v()}):"forward"==n.actionName?u.$forward().then(function(e){$.message=e,v(),y()}):angular.isDefined(u)&&($.message=u,v(),y())};function b(){var e,n={};try{t.opener&&"$mailboxController"in t.opener&&"selectedFolder"in t.opener.$mailboxController&&("draft"==t.opener.$mailboxController.selectedFolder.type?(n.draftMailboxCtrl=t.opener.$mailboxController,"$messageController"in t.opener&&t.opener.$messageController.message.uid==u.uid&&(n.draftMessageCtrl=t.opener.$messageController)):u.origin&&(e=u.origin.message,t.opener.$mailboxController.selectedFolder.$id()==e.$mailbox.$id()&&(n.originMailboxCtrl=t.opener.$mailboxController)))}catch(e){}return n}function v(){$.uploader.url=$.message.$absolutePath({asDraft:!0,withResourcePath:!0})+"/save"}function y(){var e,t,n,s=$.message.editable.attachmentAttrs;if(s)for(e=0;e',' '," {{$ctrl.mailbox.$icon}}"," ",'

',' ',' ',"

",' ',' '," ",' more_vert'].join(""),controller:"sgMailboxListItemController",controllerAs:"$ctrl"}})}(),function(){e.$inject=["$scope","$element","Mailbox"];function e(e,t,n){var s=this;this.$onInit=function(){var t=["uid","isread","isflagged","flags","subject"];this.MailboxService=n,"draft"==n.selectedFolder.type&&t.push("subject"),e.$watch(function(){return s.message?[_.pick(s.message,t)]:null},function(e,t){s.message&&s.onUpdate()},!0)},this.onUpdate=function(){this.message.isread?t.removeClass("unread"):t.addClass("unread"),n.selectedFolder.isSelectedMessage(this.message.uid,this.message.$mailbox.path)?t.addClass("md-default-theme md-accent md-bg md-hue-2"):t.removeClass("md-default-theme md-accent md-bg md-hue-2")},this.setVisibility=function(e,t){t?e.classList.remove("ng-hide"):e.classList.add("ng-hide")}}angular.module("SOGo.MailerUI").controller("sgMessageListItemController",e).directive("sgMessageListItem",function(){return{restrict:"C",scope:{},bindToController:{message:"=sgMessage"},controller:"sgMessageListItemController"}})}(),function(){e.$inject=["$scope","$element","$parse","$state","$mdUtil","$mdToast","Mailbox","Message","encodeUriFilter"];function e(e,t,n,s,i,o,a,r,l){var c=this;this.$postLink=function(){var n,s,o,l;this.parentController=e.parentController,o=this.parentController.onUpdate,l=this.parentController.setVisibility,_.forEach(t.find("div"),function(e){e.classList.contains("sg-tile-content")?n=angular.element(e):e.classList.contains("sg-tile-icons")&&(s=angular.element(e))}),this.priorityIconElement=n.find("md-icon")[0],a.$virtualMode&&(this.mailboxNameElement=n.find("span")[0],this.mailboxNameElement.classList.remove("ng-hide")),this.senderElement=n.find("span")[1],_.forEach(n.find("div"),function(e){e.classList.contains("sg-tile-subject")?c.subjectElement=e:e.classList.contains("sg-tile-size")?c.sizeElement=e:e.classList.contains("sg-tile-date")&&(c.dateElement=e)}),_.forEach(s.find("md-icon"),function(e){"star"==e.textContent?c.flagIconElement=e:"reply"==e.textContent?c.answerIconElement=e:"forward"==e.textContent?c.forwardIconElement=e:"attach_file"==e.textContent&&(c.attachmentIconElement=e)}),this.parentController.onUpdate=function(){var e;c.message=c.parentController.message;var n=i.nodesToArray(t[0].querySelectorAll(".sg-category"));for(_.forEach(n,function(e){t[0].removeChild(e)}),e=0;e');a.css("left",3*e+"px"),a.css("background-color",c.service.$tags[s][1]),t.prepend(a)}}c.mailboxNameElement&&(c.mailboxNameElement.innerHTML=c.message.$mailbox.$displayName),"sent"==c.MailboxService.selectedFolder.type?c.senderElement.innerHTML=c.message.$shortAddress("to").encodeEntities():c.senderElement.innerHTML=c.message.$shortAddress("from").encodeEntities(),c.message.priority&&c.message.priority.level<3?(c.priorityIconElement.classList.remove("ng-hide"),c.message.priority.level<2?c.priorityIconElement.classList.add("md-warn"):c.priorityIconElement.classList.remove("md-warn")):c.priorityIconElement.classList.add("ng-hide"),c.subjectElement.innerHTML=c.message.subject.encodeEntities(),c.sizeElement.innerHTML=c.message.size,c.dateElement.innerHTML=c.message.relativedate,l(c.flagIconElement,c.message.isflagged),l(c.answerIconElement,c.message.isanswered),l(c.forwardIconElement,c.message.isforwarded),l(c.attachmentIconElement,c.message.hasattachment),angular.bind(c.parentController,o)()},this.service=r,this.MailboxService=a}}angular.module("SOGo.MailerUI").controller("sgMessageListItemMainController",e).directive("sgMessageListItemMain",function(){return{restrict:"C",require:"^^sgMessageListItem",scope:{},template:['
','
',"
",' \x3c!-- mailbox --\x3e',' error'," \x3c!-- sender or recipient --\x3e","
",'
\x3c!-- date --\x3e
',"
",'
','
\x3c!-- subject --\x3e
','
\x3c!-- size --\x3e
',"
","
",'
',' star',' reply',' forward',' attach_file',"
",'
',' \x3c!-- message loading progress --\x3e',"
"].join(""),link:function(e,t,n,s){e.parentController=s},controller:"sgMessageListItemMainController",controllerAs:"$ctrl"}})}(),function(){"use strict";e.$inject=["$element","ImageGallery"];function e(e,t){var n=this;this.$postLink=function(){t.registerImage(e),e.on("click",this.showImage)},this.showImage=function(e){"IMG"==e.target.tagName&&t.showGallery(e,n.partIndex)}}angular.module("SOGo.MailerUI").directive("sgZoomableImage",function(){return{restrict:"A",bindToController:{partIndex:"=sgZoomableImage"},controller:e}})}(); //# sourceMappingURL=Mailer.services.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Mailer.services.js.map b/UI/WebServerResources/js/Mailer.services.js.map index c3dd1064d..c7d582d5b 100644 --- a/UI/WebServerResources/js/Mailer.services.js.map +++ b/UI/WebServerResources/js/Mailer.services.js.map @@ -1 +1 @@ -{"version":3,"sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js","Mailer/sgImageGallery.service.js","Mailer/VirtualMailbox.service.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgAccountSection.directive.js","Mailer/sgIMIP.directive.js","Mailer/sgMailboxListItem.directive.js","Mailer/sgMessageListItem.directive.js","Mailer/sgMessageListItemMain.directive.js","Mailer/sgZoomableImage.directive.js"],"names":["Account","futureAccountData","then","angular","extend","this","_","forEach","identities","identity","fullName","full","email","$log","debug","JSON","stringify","undefined","$factory","$q","$timeout","Settings","Resource","Preferences","Mailbox","Message","$$resource","activeUser","$Preferences","$Mailbox","$Message","module","e","factory","$findAll","data","$unwrapCollection","fetch","o","collection","i","id","$accounts","prototype","getLength","$flattenMailboxes","length","getItemAtIndex","index","expandedMailboxes","$getMailboxes","options","_this","$mailboxes","reload","$find","$expanded","expandedFolders","_visit","mailboxes","indexOf","children","settings","Mail","ExpandedFolders","isString","fromJson","warn","when","allMailboxes","push","all","$$flattenMailboxes","saveState","account","reduce","mailbox","post","$getMailboxByType","type","_find","find","$getMailboxByPath","path","$newMailbox","name","toString","$certificate","security","hasCertificate","$$certificate","reject","$removeCertificate","updateQuota","percent","description","Math","round","usedSpace","maxQuota","l","formatted","$quota","$newMessage","accountId","mailboxPath","message","$absolutePath","asDraft","accountDefaults","defaults","AuxiliaryMailAccounts","alwaysSign","sign","alwaysEncrypt","encrypt","editable","isNew","mailto","isObject","$parseMailto","$addDelegate","user","deferred","defer","param","uid","map","delegates","resolve","users","status","promise","$removeDelegate","splice","futureMailboxData","$account","init","newMailboxData","create","$unwrap","Acl","PRELOAD","$$Acl","$query","sort","asc","selectedFolder","$refreshTimeout","$virtualMode","$virtualPath","SortingState","parseInt","constant","LOOKAHEAD","SIZE","createMailboxes","level","quotas","split","component","asCSSIdentifier","join","isUndefined","uidsMap","headers","$isLoading","$messages","$id","$acl","$displayName","$isEditable","isEditable","$isSpecial","$icon","$isNoInferiors","isNoInferiors","$shadowData","$omit","selectFolder","$lastVisibleIndex","max","$loadMessage","$selectedMessages","filter","selected","$selectedCount","isSelectedMessage","messageId","selectedMessage","$selectedMessage","$selectedMessageIndex","hasSelectedMessage","isDefined","$filter","sortingAttributes","filters","unseenCount","cancel","searchInput","secondFilter","match","searchBy","copy","refreshViewCheck","SOGoRefreshViewCheck","f","bind","timeInterval","endIndex","uids","futureHeadersData","startIndex","loaded","subject","min","loading","$unwrapHeaders","flags","isNoSelect","getClassName","base","$rename","findParent","parent","parentMailbox","$save","sibling","oldPath","localeCompare","pathRE","RegExp","_updateChildren","child","replace","$compact","$canFolderAs","$setFolderAs","$emptyTrash","$markAsRead","isread","$flagMessages","messages","operation","msgUIDs","saveSelectedMessages","selectedMessages","selectedUIDs","filename","download","exportFolder","$delete","$_deleteMessages","unseen","firstIndex","forEachRight","selectedIndex","findIndex","$deleteMessages","$markOrUnMarkMessagesAsJunk","method","$copyMessages","folder","$moveMessages","$reset","value","key","save","response","error","$futureMailboxData","$topIndex","invokeMap","threaded","msgs","msg","msgObject","zipObject","isError","j","messageHeaders","$updateSubscribe","action","subscribed","futureMessageData","lazy","$mailbox","$hasUnsafeContent","$loadUnsafeContent","to","cc","bcc","$formatFullAddresses","Message_STATUS","STATUS","$avatar","avatar","SOGoMailLabelsColors","$tags","SOGoMailDisplayRemoteInlineImages","$displayRemoteInlineImages","NOT_LOADED","DELAYED_LOADING","LOADING","LOADED","DELAYED_MS","filterTags","query","excludedTags","re","results","keys","tag","pair","search","includes","color","buildPath","nocache","draftId","withResourcePath","$setUID","oldUID","attr","constructor","shortname","first","last","image","$shortRecipients","result","count","total","$shortAddress","address","allowReplyAll","recipientsCount","isDraft","loadUnsafeContent","$parts","$content","parts","part","msgclass","content","alternatePart","preferredPart","contentType","isArray","signed","valid","certificate","certificates","encrypted","mixedPart","safeContent","html","unsafeContent","document","createElement","innerHTML","suffix","element","elements","querySelectorAll","removeAttr","compile","$editableContent","from","toLowerCase","text","$plainContent","addTag","$addOrRemoveTag","removeTag","$imipAction","$reload","$sendMDN","shouldAskReceipt","$deleteAttachment","attachmentAttrs","attachment","toggleFlag","isflagged","$loaded","useCache","$futureMessageData","exec","decodeURIComponent","trim","$reply","$newDraft","$replyAll","$forward","origin","$send","startsWith","isanswered","isforwarded","privateAttributes","downloadAttachments","ImageGallery","show","$document","$mdPanel","sgHotkeys","setMessage","registerImage","registerHotkeys","$ctrl","createHotkey","callback","previousImage","nextImage","registerHotkey","showGallery","$event","partIndex","partSrc","src","images","attrs","mimetype","url","body","addClass","panelPosition","newPanelPosition","absolute","panelAnimation","newPanelAnimation","openFrom","target","duration","withAnimation","animation","FADE","config","attachTo","locals","lastIndex","selectedImage","bindToController","controller","PanelController","controllerAs","position","targetEvent","fullscreen","hasBackdrop","template","trapFocus","clickOutsideToClose","escapeToClose","focusOnOpen","onOpenComplete","getElementsByClassName","imgContainer","imgEl","one","naturalWidth","naturalHeight","classList","add","remove","onDomRemoved","removeClass","hotkeys","deregisterHotkey","open","mdPanelRef","$inject","close","selectImage","VirtualMailbox","setMailboxes","startSearch","params","finally","stopSearch","resetSelectedMessage","len","k","transform","messagesMap","sum","allMessages","promises","assign","flatten","MailboxController","$window","$scope","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","encodeUriFilter","sgSettings","focus","Dialog","vm","defaultWindowTitle","$onInit","$mailboxController","service","accounts","messageDialog","mode","multiple","searchMode","newMessage","markOrUnMarkMessagesAsJunk","toggleMessageSelection","_nextMessage","preventInClass","_previousMessage","_addNextMessageToSelection","_addPreviousMessageToSelection","hotkey","confirmDeleteSelectedMessages","on","_compactBeforeUnload","$on","off","$watch","title","event","centerIsClose","navController_centerIsClose","field","sortedBy","cancelSearch","composeWindowEnabled","SOGoMailComposeWindowEnabled","inPopup","SOGoMailComposeWindow","baseURL","wId","random","console","_newMessageInPopup","templateUrl","stateMessage","catch","selectMessage","preventDefault","go","mailboxId","nextSelectedIndex","shiftKey","stopPropagation","_currentMailboxes","_unselectMessage","nextMessage","previousMessage","nextIndex","size","confirm","ok","deleteSelectedMessage","withoutTrash","moveSelectedMessage","dstFolder","copySelectedMessages","simple","hideDelay","moveSelectedMessages","selectAll","unselectMessages","markSelectedMessagesAsFlagged","markSelectedMessagesAsUnread","markSelectedMessagesAsRead","mdVirtualRepeatContainerDirectiveDecorator","$delegate","resetScroll","$element","updateSize","scrollTo","decorator","MailboxesController","$transitions","User","currentSearchParam","","subfolders","showSubscribedOnly","SOGoMailShowSubscribedFoldersOnly","refreshUnseenCount","selectedFolderController","confirmDelete","hideAdvancedSearch","searchPreviousMailbox","toggleAdvancedSearch","virtualMailbox","root","folders","$current","addSearchParam","v","newSearchParam","pattern","n","searchParam","substring","negative","toggleAccountState","triggerHandler","subscribe","SubscriptionsDialogController","srcAccount","hide","newFolder","parentFolder","prompt","alert","delegate","MailboxDelegationController","userToAdd","searchText","userFilter","closeModal","removeUser","addUser","unseenCountFolders","isDroppableFolder","srcFolder","dragSelectedMessages","dstId","clearMessageView","success","MessageController","$mdMedia","sgConstant","Calendar","Component","$messageController","tags","showFlags","$showDetailedRecipients","showRawSource","_unlessInDialog","reply","replyAll","forward","deleteMessage","opener","$watchCollection","newTags","oldTags","ctrls","$parentControllers","messageCtrl","wasflagged","mailboxCtrl","_newTags","_oldTags","difference","_messageDialog","arguments","apply","addFlags","toggleDetailedRecipients","filterMailtoLinks","href","tagName","attributes","state","parentCtrls","closePopup","_showMailEditor","_showMailEditorInPopup","isPopup","openInPopup","edit","toggleRawSource","$rawSource","print","convertToEvent","_convertToComponent","convertToTask","componentData","pid","$defaultCalendar","summary","comment","capitalize","stateComponent","MessageEditorController","$stateParams","$mdConstant","FileUploader","AddressBook","Card","addRecipient","contact","recipients","recipient","list","emailRE","charCodeAt","test","charAt","$isList","expandable","refs","ref","$shortFormat","container","c_name","listId","autocomplete","autosave","autosaveDrafts","SOGoMailAutoSave","contactFilter","$filterAll","cards","explodedCards","manyCards","card","uniqBy","$$fullname","$$email","isFullscreen","hideBcc","hideCc","uniq","recipientSeparatorKeys","KEY_CODE","ENTER","TAB","COMMA","SEMICOLON","removeAttachment","item","isUploading","uploader","cancelItem","file","getElementById","prop","draftMailboxCtrl","draftMessageCtrl","send","sendState","originMailboxCtrl","errorMessage","statusText","toggleFullscreen","autoUpload","alias","removeAfterUpload","onSuccessItem","inlineUrl","lastAttachmentAttrs","onCancelItem","removeFromQueue","onErrorItem","localeCode","LocaleCode","destroy","actionName","addAttachments","originMessage","fileItem","FileItem","progress","isUploaded","isSuccess","queue","SendMessageToastController","closeToast","sgAccountController","$mdSidenav","$postLink","quotaElement","div","contains","addMailboxController","mailboxController","selectedMailboxCtrl","ctrl","unselectFolder","directive","restrict","scope","sgImipController","delegateInvitation","delegatedTo","iCalendarAction","receiveUpdates","c_email","viewer","pathToAttachment","link","iElement","sgImipPath","sgMailboxListItemController","editMode","accountController","selectableElement","clickableElement","inputContainer","inputElement","moreOptionsButton","childLevel","editFolder","select","saveFolder","disabled","revertEditing","showMenu","relativeTo","addPanelPosition","xPosition","ALIGN_START","yPosition","ALIGN_TOPS","itemCtrl","MenuController","panelRef","panelEl","$menuCtrl","markFolderRead","compactFolder","emptyTrashFolder","showAdvancedSearch","share","$users","usersWithACL","setFolderAs","require","sgMessageListItemController","watchedAttrs","MailboxService","pick","newId","oldId","onUpdate","setVisibility","visible","sgMessageListItemMainController","$parse","$mdUtil","contentDivElement","iconsDivElement","parentControllerOnUpdate","parentController","priorityIconElement","mailboxNameElement","senderElement","subjectElement","sizeElement","dateElement","textContent","flagIconElement","answerIconElement","forwardIconElement","attachmentIconElement","flagElements","nodesToArray","flagElement","removeChild","css","prepend","encodeEntities","priority","relativedate","hasattachment","sgZoomableImageController","showImage"],"mappings":"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","file":"Mailer.services.js"} \ No newline at end of file +{"version":3,"sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js","Mailer/sgImageGallery.service.js","Mailer/VirtualMailbox.service.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgAccountSection.directive.js","Mailer/sgIMIP.directive.js","Mailer/sgMailboxListItem.directive.js","Mailer/sgMessageListItem.directive.js","Mailer/sgMessageListItemMain.directive.js","Mailer/sgZoomableImage.directive.js"],"names":["Account","futureAccountData","then","angular","extend","this","_","forEach","identities","identity","fullName","full","email","$log","debug","JSON","stringify","undefined","$factory","$q","$timeout","Settings","Resource","Preferences","Mailbox","Message","$$resource","activeUser","$Preferences","$Mailbox","$Message","module","e","factory","$findAll","data","$unwrapCollection","fetch","o","collection","i","id","$accounts","prototype","getLength","$flattenMailboxes","length","getItemAtIndex","index","expandedMailboxes","$getMailboxes","options","_this","$mailboxes","reload","$find","$expanded","expandedFolders","_visit","mailboxes","indexOf","children","settings","Mail","ExpandedFolders","isString","fromJson","warn","when","allMailboxes","push","all","$$flattenMailboxes","saveState","account","reduce","mailbox","post","$getMailboxByType","type","_find","find","$getMailboxByPath","path","$newMailbox","name","toString","$certificate","security","hasCertificate","$$certificate","reject","$removeCertificate","updateQuota","percent","description","Math","round","usedSpace","maxQuota","l","formatted","$quota","$newMessage","accountId","mailboxPath","message","$absolutePath","asDraft","accountDefaults","defaults","AuxiliaryMailAccounts","alwaysSign","sign","alwaysEncrypt","encrypt","editable","isNew","mailto","isObject","$parseMailto","$addDelegate","user","deferred","defer","param","uid","map","delegates","resolve","users","status","promise","$removeDelegate","splice","futureMailboxData","$account","init","newMailboxData","create","$unwrap","Acl","PRELOAD","$$Acl","$query","sort","asc","selectedFolder","$refreshTimeout","$virtualMode","$virtualPath","SortingState","parseInt","constant","LOOKAHEAD","SIZE","createMailboxes","level","quotas","split","component","asCSSIdentifier","join","isUndefined","uidsMap","headers","$isLoading","$messages","$id","$acl","$displayName","$isEditable","isEditable","$isSpecial","$icon","$isNoInferiors","isNoInferiors","$shadowData","$omit","selectFolder","$lastVisibleIndex","max","$loadMessage","$selectedMessages","filter","selected","$selectedCount","isSelectedMessage","messageId","selectedMessage","$selectedMessage","$selectedMessageIndex","hasSelectedMessage","isDefined","$filter","sortingAttributes","filters","unseenCount","cancel","searchInput","secondFilter","match","searchBy","copy","refreshViewCheck","SOGoRefreshViewCheck","f","bind","timeInterval","endIndex","uids","futureHeadersData","startIndex","loaded","subject","min","loading","$unwrapHeaders","flags","isNoSelect","getClassName","base","$rename","findParent","parent","parentMailbox","$save","sibling","oldPath","localeCompare","pathRE","RegExp","_updateChildren","child","replace","$compact","$canFolderAs","$setFolderAs","$emptyTrash","$markAsRead","isread","$flagMessages","messages","operation","msgUIDs","saveSelectedMessages","selectedMessages","selectedUIDs","filename","download","exportFolder","$delete","$_deleteMessages","unseen","firstIndex","forEachRight","selectedIndex","findIndex","$deleteMessages","$markOrUnMarkMessagesAsJunk","method","$copyMessages","folder","$moveMessages","$reset","value","key","save","response","error","$futureMailboxData","$topIndex","invokeMap","threaded","msgs","msg","msgObject","zipObject","isError","j","messageHeaders","$updateSubscribe","action","subscribed","futureMessageData","lazy","$mailbox","$hasUnsafeContent","$loadUnsafeContent","to","cc","bcc","$formatFullAddresses","Message_STATUS","STATUS","$avatar","avatar","SOGoMailLabelsColors","$tags","SOGoMailDisplayRemoteInlineImages","$displayRemoteInlineImages","NOT_LOADED","DELAYED_LOADING","LOADING","LOADED","DELAYED_MS","filterTags","query","excludedTags","re","results","keys","tag","pair","search","includes","color","buildPath","nocache","draftId","withResourcePath","$setUID","oldUID","attr","constructor","shortname","first","last","image","$shortRecipients","result","count","total","$shortAddress","address","allowReplyAll","recipientsCount","isDraft","loadUnsafeContent","$parts","$content","parts","part","msgclass","content","alternatePart","preferredPart","contentType","isArray","signed","valid","certificate","certificates","encrypted","mixedPart","safeContent","html","unsafeContent","document","createElement","innerHTML","suffix","element","elements","querySelectorAll","removeAttr","compile","$editableContent","from","toLowerCase","text","$plainContent","addTag","$addOrRemoveTag","removeTag","$imipAction","$reload","$sendMDN","shouldAskReceipt","$deleteAttachment","attachmentAttrs","attachment","toggleFlag","isflagged","$loaded","useCache","$futureMessageData","exec","decodeURIComponent","trim","$reply","$newDraft","$replyAll","$forward","origin","$send","startsWith","isanswered","isforwarded","privateAttributes","downloadAttachments","ImageGallery","show","$document","$mdPanel","sgHotkeys","setMessage","registerImage","registerHotkeys","$ctrl","createHotkey","callback","previousImage","nextImage","registerHotkey","showGallery","$event","partIndex","partSrc","src","images","attrs","mimetype","url","body","addClass","panelPosition","newPanelPosition","absolute","panelAnimation","newPanelAnimation","openFrom","target","duration","withAnimation","animation","FADE","config","attachTo","locals","lastIndex","selectedImage","bindToController","controller","PanelController","controllerAs","position","targetEvent","fullscreen","hasBackdrop","template","trapFocus","clickOutsideToClose","escapeToClose","focusOnOpen","onOpenComplete","getElementsByClassName","imgContainer","imgEl","one","naturalWidth","naturalHeight","classList","add","remove","onDomRemoved","removeClass","hotkeys","deregisterHotkey","open","mdPanelRef","$inject","close","selectImage","VirtualMailbox","setMailboxes","startSearch","params","finally","stopSearch","resetSelectedMessage","len","k","transform","messagesMap","sum","allMessages","promises","assign","flatten","MailboxController","$window","$scope","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","encodeUriFilter","sgSettings","focus","Dialog","vm","defaultWindowTitle","$onInit","$mailboxController","service","accounts","messageDialog","mode","multiple","searchMode","newMessage","markOrUnMarkMessagesAsJunk","toggleMessageSelection","_nextMessage","preventInClass","_previousMessage","_addNextMessageToSelection","_addPreviousMessageToSelection","hotkey","confirmDeleteSelectedMessages","on","_compactBeforeUnload","$on","off","$watch","title","event","centerIsClose","navController_centerIsClose","field","sortedBy","cancelSearch","composeWindowEnabled","SOGoMailComposeWindowEnabled","inPopup","SOGoMailComposeWindow","baseURL","wId","random","console","_newMessageInPopup","templateUrl","stateMessage","catch","selectMessage","preventDefault","go","mailboxId","nextSelectedIndex","shiftKey","stopPropagation","_currentMailboxes","_unselectMessage","nextMessage","previousMessage","nextIndex","size","confirm","ok","deleteSelectedMessage","withoutTrash","moveSelectedMessage","dstFolder","copySelectedMessages","simple","hideDelay","moveSelectedMessages","selectAll","unselectMessages","markSelectedMessagesAsFlagged","markSelectedMessagesAsUnread","markSelectedMessagesAsRead","mdVirtualRepeatContainerDirectiveDecorator","$delegate","resetScroll","$element","updateSize","scrollTo","decorator","MailboxesController","$transitions","User","currentSearchParam","","subfolders","showSubscribedOnly","SOGoMailShowSubscribedFoldersOnly","refreshUnseenCount","selectedFolderController","confirmDelete","hideAdvancedSearch","searchPreviousMailbox","toggleAdvancedSearch","virtualMailbox","root","folders","$current","addSearchParam","v","newSearchParam","pattern","n","searchParam","substring","negative","toggleAccountState","triggerHandler","subscribe","SubscriptionsDialogController","srcAccount","hide","newFolder","parentFolder","prompt","alert","delegate","MailboxDelegationController","userToAdd","searchText","userFilter","closeModal","removeUser","addUser","unseenCountFolders","isDroppableFolder","srcFolder","dragSelectedMessages","dstId","clearMessageView","success","MessageController","$mdMedia","sgConstant","Calendar","Component","$messageController","tags","showFlags","$showDetailedRecipients","showRawSource","_unlessInDialog","reply","replyAll","forward","deleteMessage","opener","$watchCollection","newTags","oldTags","ctrls","$parentControllers","messageCtrl","wasflagged","mailboxCtrl","_newTags","_oldTags","difference","_messageDialog","arguments","apply","addFlags","toggleDetailedRecipients","filterMailtoLinks","href","tagName","attributes","state","parentCtrls","closePopup","_showMailEditor","_showMailEditorInPopup","isPopup","openInPopup","edit","toggleRawSource","$rawSource","print","convertToEvent","_convertToComponent","convertToTask","componentData","pid","$defaultCalendar","summary","comment","capitalize","stateComponent","MessageEditorController","$stateParams","$mdConstant","$mdUtil","FileUploader","AddressBook","Card","addRecipient","autocomplete","autosave","autosaveDrafts","contactFilter","isFullscreen","hideBcc","hideCc","uniq","recipientSeparatorKeys","KEY_CODE","ENTER","TAB","COMMA","SEMICOLON","removeAttachment","send","sendState","toggleFullscreen","uploader","autoUpload","alias","removeAfterUpload","onSuccessItem","item","inlineUrl","lastAttachmentAttrs","onCancelItem","file","removeFromQueue","onErrorItem","SOGoMailAutoSave","localeCode","LocaleCode","destroy","actionName","_updateFileUploader","_addAttachments","originMessage","draftMailboxCtrl","draftMessageCtrl","originMailboxCtrl","fileItem","FileItem","progress","isUploaded","isSuccess","queue","isUploading","cancelItem","getElementById","prop","errorMessage","statusText","$filterAll","cards","explodedCards","manyCards","card","uniqBy","$$fullname","$$email","contact","recipients","recipient","list","emailRE","charCodeAt","test","charAt","$isList","expandable","refs","ref","$shortFormat","container","c_name","listId","SendMessageToastController","closeToast","sgAccountController","$mdSidenav","$postLink","quotaElement","div","contains","addMailboxController","mailboxController","selectedMailboxCtrl","ctrl","unselectFolder","directive","restrict","scope","sgImipController","delegateInvitation","delegatedTo","iCalendarAction","receiveUpdates","c_email","viewer","pathToAttachment","link","iElement","sgImipPath","sgMailboxListItemController","editMode","accountController","selectableElement","clickableElement","inputContainer","inputElement","moreOptionsButton","childLevel","editFolder","select","saveFolder","disabled","revertEditing","showMenu","relativeTo","addPanelPosition","xPosition","ALIGN_START","yPosition","ALIGN_TOPS","itemCtrl","MenuController","panelRef","panelEl","$menuCtrl","markFolderRead","compactFolder","emptyTrashFolder","showAdvancedSearch","share","$users","usersWithACL","setFolderAs","require","sgMessageListItemController","watchedAttrs","MailboxService","pick","newId","oldId","onUpdate","setVisibility","visible","sgMessageListItemMainController","$parse","contentDivElement","iconsDivElement","parentControllerOnUpdate","parentController","priorityIconElement","mailboxNameElement","senderElement","subjectElement","sizeElement","dateElement","textContent","flagIconElement","answerIconElement","forwardIconElement","attachmentIconElement","flagElements","nodesToArray","flagElement","removeChild","css","prepend","encodeEntities","priority","relativedate","hasattachment","sgZoomableImageController","showImage"],"mappings":"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","file":"Mailer.services.js"} \ No newline at end of file diff --git a/UI/WebServerResources/js/vendor/angular-ui-router.js b/UI/WebServerResources/js/vendor/angular-ui-router.js index 5a068ed29..33be2fc10 100644 --- a/UI/WebServerResources/js/vendor/angular-ui-router.js +++ b/UI/WebServerResources/js/vendor/angular-ui-router.js @@ -4,7 +4,7 @@ * This causes it to be incompatible with plugins that depend on @uirouter/core. * We recommend switching to the ui-router-core.js and ui-router-angularjs.js bundles instead. * For more information, see https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles - * @version v1.0.13 + * @version v1.0.14 * @link https://ui-router.github.io * @license MIT License, http://www.opensource.org/licenses/MIT */ @@ -715,10 +715,10 @@ function find(collection, callback) { /** Given an object, returns a new object, where each property is transformed by the callback function */ var mapObj = map; /** Maps an array or object properties using a callback function */ -function map(collection, callback) { - var result = isArray(collection) ? [] : {}; - forEach(collection, function (item, i) { return result[i] = callback(item, i); }); - return result; +function map(collection, callback, target) { + target = target || (isArray(collection) ? [] : {}); + forEach(collection, function (item, i) { return target[i] = callback(item, i); }); + return target; } /** * Given an object, return its enumerable property values @@ -1030,19 +1030,27 @@ var silentRejection = function (error) { /** * @module common - */ /** for typedoc */ + */ +/** for typedoc */ var Queue = /** @class */ (function () { function Queue(_items, _limit) { if (_items === void 0) { _items = []; } if (_limit === void 0) { _limit = null; } this._items = _items; this._limit = _limit; + this._evictListeners = []; + this.onEvict = pushTo(this._evictListeners); } Queue.prototype.enqueue = function (item) { var items = this._items; items.push(item); if (this._limit && items.length > this._limit) - items.shift(); + this.evict(); + return item; + }; + Queue.prototype.evict = function () { + var item = this._items.shift(); + this._evictListeners.forEach(function (fn) { return fn(item); }); return item; }; Queue.prototype.dequeue = function () { @@ -1849,7 +1857,7 @@ var RegisteredHook = /** @class */ (function () { * } */ RegisteredHook.prototype._getDefaultMatchCriteria = function () { - return map(this.tranSvc._pluginapi._getPathTypes(), function () { return true; }); + return mapObj(this.tranSvc._pluginapi._getPathTypes(), function () { return true; }); }; /** * Gets matching nodes as [[IMatchingNodes]] @@ -2384,9 +2392,8 @@ var PathNode = /** @class */ (function () { this.resolvables = state.resolvables.map(function (res) { return res.clone(); }); } } - /** Returns a clone of the PathNode */ - PathNode.clone = function (node) { - return new PathNode(node); + PathNode.prototype.clone = function () { + return new PathNode(this); }; /** Sets [[paramValues]] for the node, from the values of an object hash */ PathNode.prototype.applyRawParams = function (params) { @@ -2424,6 +2431,11 @@ var PathNode = /** @class */ (function () { var params = paramsFn ? paramsFn(this) : this.paramSchema; return Param.changed(params, this.paramValues, node.paramValues); }; + /** + * Returns a clone of the PathNode + * @deprecated use instance method `node.clone()` + */ + PathNode.clone = function (node) { return node.clone(); }; return PathNode; }()); @@ -2518,17 +2530,19 @@ var PathUtils = /** @class */ (function () { } /** Given a retained node, return a new node which uses the to node's param values */ function applyToParams(retainedNode, idx) { - var cloned = PathNode.clone(retainedNode); + var cloned = retainedNode.clone(); cloned.paramValues = toPath[idx].paramValues; return cloned; } var from, retained, exiting, entering, to; from = fromPath; - retained = from.slice(0, keep).map(applyToParams); // applyToParams to update dynamic params + retained = from.slice(0, keep); exiting = from.slice(keep); + // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped + var retainedWithToParams = retained.map(applyToParams); entering = toPath.slice(keep); - to = (retained).concat(entering); - return { from: from, to: to, retained: retained, exiting: exiting, entering: entering }; + to = (retainedWithToParams).concat(entering); + return { from: from, to: to, retained: retained, retainedWithToParams: retainedWithToParams, exiting: exiting, entering: entering }; }; /** * Returns a new path which is: the subpath of the first path which matches the second path. @@ -2633,7 +2647,7 @@ var Resolvable = /** @class */ (function () { this.resolved = data !== undefined; this.promise = this.resolved ? services.$q.when(this.data) : undefined; } - else if (isObject(arg1) && arg1.token && isFunction(arg1.resolveFn)) { + else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) { var literal = arg1; return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data); } @@ -2686,6 +2700,7 @@ var Resolvable = /** @class */ (function () { var applyResolvedValue = function (resolvedValue) { _this.data = resolvedValue; _this.resolved = true; + _this.resolveFn = null; trace.traceResolvableResolved(_this, trans); return _this.data; }; @@ -5999,10 +6014,10 @@ var UIRouter = /** @class */ (function () { this.trace = trace; /** Provides services related to ui-view synchronization */ this.viewService = new ViewService(); - /** Provides services related to Transitions */ - this.transitionService = new TransitionService(this); /** Global router state */ this.globals = new UIRouterGlobals(); + /** Provides services related to Transitions */ + this.transitionService = new TransitionService(this); /** * Deprecated for public use. Use [[urlService]] instead. * @deprecated Use [[urlService]] instead @@ -6130,17 +6145,35 @@ var UIRouter = /** @class */ (function () { /** @module hooks */ /** */ function addCoreResolvables(trans) { - trans.addResolvable({ token: UIRouter, deps: [], resolveFn: function () { return trans.router; }, data: trans.router }, ''); - trans.addResolvable({ token: Transition, deps: [], resolveFn: function () { return trans; }, data: trans }, ''); - trans.addResolvable({ token: '$transition$', deps: [], resolveFn: function () { return trans; }, data: trans }, ''); - trans.addResolvable({ token: '$stateParams', deps: [], resolveFn: function () { return trans.params(); }, data: trans.params() }, ''); + trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), ''); + trans.addResolvable(Resolvable.fromData(Transition, trans), ''); + trans.addResolvable(Resolvable.fromData('$transition$', trans), ''); + trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), ''); trans.entering().forEach(function (state) { - trans.addResolvable({ token: '$state$', deps: [], resolveFn: function () { return state; }, data: state }, state); + trans.addResolvable(Resolvable.fromData('$state$', state), state); }); } var registerAddCoreResolvables = function (transitionService) { return transitionService.onCreate({}, addCoreResolvables); }; +var TRANSITION_TOKENS = ['$transition$', Transition]; +var isTransition = inArray(TRANSITION_TOKENS); +// References to Transition in the treeChanges pathnodes makes all +// previous Transitions reachable in memory, causing a memory leak +// This function removes resolves for '$transition$' and `Transition` from the treeChanges. +// Do not use this on current transitions, only on old ones. +var treeChangesCleanup = function (trans) { + // If the resolvable is a Transition, return a new resolvable with null data + var replaceTransitionWithNull = function (r) { + return isTransition(r.token) ? Resolvable.fromData(r.token, null) : r; + }; + var cleanPath = function (path) { return path.map(function (node) { + var resolvables = node.resolvables.map(replaceTransitionWithNull); + return extend(node.clone(), { resolvables: resolvables }); + }); }; + var treeChanges = trans.treeChanges(); + mapObj(treeChanges, cleanPath, treeChanges); +}; /** @module hooks */ /** */ /** @@ -6601,6 +6634,7 @@ var TransitionService = /** @class */ (function () { this._defineCorePaths(); this._defineCoreEvents(); this._registerCoreTransitionHooks(); + _router.globals.successfulTransitions.onEvict(treeChangesCleanup); } /** * Registers a [[TransitionHookFn]], called *while a transition is being constructed*. @@ -7811,7 +7845,7 @@ var UIRouterPluginBase = /** @class */ (function () { -var index$1 = Object.freeze({ +var index = Object.freeze({ root: root, fromJson: fromJson, toJson: toJson, @@ -9325,6 +9359,17 @@ uiStateDirective = ['$uiRouter', '$timeout', * * ``` * + * Arrays are also supported as values in the `ngClass`-like interface. + * This allows multiple states to add `active` class. + * + * #### Example: + * Given the following template, with "admin.roles" being the current state, the class will be added too: + * ```html + *
+ * Roles + *
+ * ``` + * * When the current state is "admin.roles" the "active" class will be applied to both the `
` and `` elements. * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`. * @@ -9357,14 +9402,7 @@ uiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter', // Fall back to using $interpolate below } uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope); - if (isObject(uiSrefActive)) { - forEach(uiSrefActive, function (stateOrName, activeClass) { - if (isString(stateOrName)) { - var ref = parseStateRef(stateOrName); - addState(ref.state, $scope.$eval(ref.paramExpr), activeClass); - } - }); - } + setStatesFromDefinitionObject(uiSrefActive); // Allow uiSref to communicate with uiSrefActive[Equals] this.$$addStateInfo = function (newState, newParams) { // we already got an explicit state provided by ui-sref-active, so we @@ -9379,11 +9417,45 @@ uiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter', function updateAfterTransition(trans) { trans.promise.then(update, noop); } - $scope.$on('$stateChangeSuccess', update); - $scope.$on('$destroy', $uiRouter.transitionService.onStart({}, updateAfterTransition)); + $scope.$on('$destroy', setupEventListeners()); if ($uiRouter.globals.transition) { updateAfterTransition($uiRouter.globals.transition); } + function setupEventListeners() { + var deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged); + var deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition); + var deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update); + return function cleanUp() { + deregisterStatesChangedListener(); + deregisterOnStartListener(); + deregisterStateChangeSuccessListener(); + }; + } + function handleStatesChanged() { + setStatesFromDefinitionObject(uiSrefActive); + } + function setStatesFromDefinitionObject(statesDefinition) { + if (isObject(statesDefinition)) { + states = []; + forEach(statesDefinition, function (stateOrName, activeClass) { + // Helper function to abstract adding state. + var addStateForClass = function (stateOrName, activeClass) { + var ref = parseStateRef(stateOrName); + addState(ref.state, $scope.$eval(ref.paramExpr), activeClass); + }; + if (isString(stateOrName)) { + // If state is string, just add it. + addStateForClass(stateOrName, activeClass); + } + else if (isArray(stateOrName)) { + // If state is an array, iterate over it and add each array item individually. + forEach(stateOrName, function (stateOrName) { + addStateForClass(stateOrName, activeClass); + }); + } + }); + } + } function addState(stateName, stateParams, activeClass) { var state = $state.get(stateName, stateContext($element)); var stateInfo = { @@ -9901,10 +9973,10 @@ ng.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); * Main entry point for angular 1.x build * @module ng1 */ /** */ -var index = 'ui.router'; +var index$1 = 'ui.router'; -exports['default'] = index; -exports.core = index$1; +exports.default = index$1; +exports.core = index; exports.watchDigests = watchDigests; exports.getLocals = getLocals; exports.getNg1ViewConfigFactory = getNg1ViewConfigFactory; diff --git a/UI/WebServerResources/js/vendor/angular-ui-router.js.map b/UI/WebServerResources/js/vendor/angular-ui-router.js.map index b0148d339..5de7ecde6 100644 --- a/UI/WebServerResources/js/vendor/angular-ui-router.js.map +++ b/UI/WebServerResources/js/vendor/angular-ui-router.js.map @@ -91,20 +91,20 @@ "/**\n * @coreapi\n * @module state\n */\n/** for typedoc */\nimport { StateDeclaration, _ViewDeclaration, _StateDeclaration, LazyLoadResult } from './interface';\nimport { defaults, values, find, inherit } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Param } from '../params/param';\nimport { UrlMatcher } from '../url/urlMatcher';\nimport { Resolvable } from '../resolve/resolvable';\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { TargetState } from './targetState';\nimport { Transition } from '../transition/transition';\nimport { Glob } from '../common/glob';\nimport { isObject, isFunction } from '../common/predicates';\n\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nexport class StateObject {\n /** The parent [[StateObject]] */\n public parent: StateObject;\n\n /** The name used to register the state */\n public name: string;\n\n /** Prototypally inherits from [[StateDeclaration.abstract]] */\n public abstract: boolean;\n\n /** Prototypally inherits from [[StateDeclaration.resolve]] */\n public resolve: ({ [key: string]: (string|any[]|Function) }|any[]);\n\n /** A list of [[Resolvable]] objects. The internal representation of [[resolve]]. */\n public resolvables: Resolvable[];\n\n /** Prototypally inherits from [[StateDeclaration.resolvePolicy]] */\n public resolvePolicy: any;\n\n /** A compiled URLMatcher which detects when the state's URL is matched */\n public url: UrlMatcher;\n\n /** The parameters for the state, built from the URL and [[StateDeclaration.params]] */\n public params: { [key: string]: Param };\n\n /**\n * The views for the state.\n * Note: `@uirouter/core` does not register a builder for views.\n * The framework specific code should register a `views` builder.\n */\n public views: { [key: string]: _ViewDeclaration; };\n\n /**\n * The original [[StateDeclaration]] used to build this [[StateObject]].\n * Note: `this` object also prototypally inherits from the `self` declaration object.\n */\n public self: StateDeclaration;\n\n /** The nearest parent [[StateObject]] which has a URL */\n public navigable: StateObject;\n\n /** The parent [[StateObject]] objects from this state up to the root */\n public path: StateObject[];\n\n /**\n * Prototypally inherits from [[StateDeclaration.data]]\n * Note: This is the only field on the [[StateDeclaration]] which is mutated.\n * The definition object's `data` field is replaced with a new object\n * which prototypally inherits from the parent state definition's `data` field.\n */\n public data: any;\n\n /**\n * An object containing the parent States' names as keys and\n * true as their values.\n */\n public includes: { [name: string]: boolean };\n\n /** Prototypally inherits from [[StateDeclaration.onExit]] */\n public onExit: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onRetain]] */\n public onRetain: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onEnter]] */\n public onEnter: TransitionStateHookFn;\n\n /** Prototypally inherits from [[StateDeclaration.lazyLoad]] */\n public lazyLoad: (transition: Transition, state: StateDeclaration) => Promise;\n\n /** Prototypally inherits from [[StateDeclaration.redirectTo]] */\n redirectTo: (\n string |\n (($transition$: Transition) => TargetState) |\n { state: (string|StateDeclaration), params: { [key: string]: any }}\n );\n\n /** @hidden */\n __stateObjectCache: {\n /** Might be null */\n nameGlob?: Glob,\n };\n\n /**\n * Create a state object to put the private/internal implementation details onto.\n * The object's prototype chain looks like:\n * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n *\n * @param stateDecl the user-supplied State Declaration\n * @returns {StateObject} an internal State object\n */\n static create(stateDecl: _StateDeclaration): StateObject {\n stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n\n const state = inherit(inherit(stateDecl, StateObject.prototype)) as StateObject;\n stateDecl.$$state = () => state;\n state.self = stateDecl;\n state.__stateObjectCache = {\n nameGlob: Glob.fromString(state.name), // might return null\n };\n return state;\n }\n\n /** Predicate which returns true if the object is an class with @State() decorator */\n static isStateClass = (stateDecl: _StateDeclaration): stateDecl is ({ new (): StateDeclaration }) =>\n isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n\n /** Predicate which returns true if the object is an internal [[StateObject]] object */\n static isState = (obj: any): obj is StateObject =>\n isObject(obj['__stateObjectCache']);\n\n\n /** @deprecated use State.create() */\n constructor(config?: StateDeclaration) {\n return StateObject.create(config || {});\n }\n\n /**\n * Returns true if the provided parameter is the same state.\n *\n * Compares the identity of the state against the passed value, which is either an object\n * reference to the actual `State` instance, the original definition object passed to\n * `$stateProvider.state()`, or the fully-qualified name.\n *\n * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n * into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n * @returns Returns `true` if `ref` matches the current `State` instance.\n */\n is(ref: StateObject|StateDeclaration|string): boolean {\n return this === ref || this.self === ref || this.fqn() === ref;\n }\n\n /**\n * @deprecated this does not properly handle dot notation\n * @returns Returns a dot-separated name of the state.\n */\n fqn(): string {\n if (!this.parent || !(this.parent instanceof this.constructor)) return this.name;\n const name = this.parent.fqn();\n return name ? name + '.' + this.name : this.name;\n }\n\n /**\n * Returns the root node of this state's tree.\n *\n * @returns The root of this state's tree.\n */\n root(): StateObject {\n return this.parent && this.parent.root() || this;\n }\n\n /**\n * Gets the state's `Param` objects\n *\n * Gets the list of [[Param]] objects owned by the state.\n * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n *\n * @param opts options\n */\n parameters(opts?: { inherit?: boolean, matchingKeys?: any }): Param[] {\n opts = defaults(opts, { inherit: true, matchingKeys: null });\n const inherited = opts.inherit && this.parent && this.parent.parameters() || [];\n return inherited.concat(values(this.params))\n .filter(param => !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id));\n }\n\n /**\n * Returns a single [[Param]] that is owned by the state\n *\n * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n * @param id the name of the [[Param]] to return\n * @param opts options\n */\n parameter(id: string, opts: { inherit?: boolean } = {}): Param {\n return (\n this.url && this.url.parameter(id, opts) ||\n find(values(this.params), propEq('id', id)) ||\n opts.inherit && this.parent && this.parent.parameter(id)\n );\n }\n\n toString() {\n return this.fqn();\n }\n}\n", "/** Predicates\n *\n * These predicates return true/false based on the input.\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_predicates\n */\n/** */\nimport { and, not, pipe, prop, or } from './hof';\nimport { Predicate } from './common'; // has or is using\nimport { StateObject } from '../state/stateObject';\n\nconst toStr = Object.prototype.toString;\nconst tis = (t: string) => (x: any) => typeof(x) === t;\nexport const isUndefined = tis('undefined');\nexport const isDefined = not(isUndefined);\nexport const isNull = (o: any) => o === null;\nexport const isNullOrUndefined = or(isNull, isUndefined);\nexport const isFunction: (x: any) => x is Function = tis('function');\nexport const isNumber: (x: any) => x is number = tis('number');\nexport const isString = <(x: any) => x is string> tis('string');\nexport const isObject = (x: any) => x !== null && typeof x === 'object';\nexport const isArray = Array.isArray;\nexport const isDate: (x: any) => x is Date = ((x: any) => toStr.call(x) === '[object Date]');\nexport const isRegExp: (x: any) => x is RegExp = ((x: any) => toStr.call(x) === '[object RegExp]');\nexport const isState: (x: any) => x is StateObject = StateObject.isState;\n\n/**\n * Predicate which checks if a value is injectable\n *\n * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n * where all the elements in the array are Strings, except the last one, which is a Function\n */\nexport function isInjectable(val: any) {\n if (isArray(val) && val.length) {\n const head = val.slice(0, -1), tail = val.slice(-1);\n return !(head.filter(not(isString)).length || tail.filter(not(isFunction)).length);\n }\n return isFunction(val);\n}\n\n/**\n * Predicate which checks if a value looks like a Promise\n *\n * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n */\nexport const isPromise = <(x: any) => x is Promise> and(isObject, pipe(prop('then'), isFunction));\n\n", "/**\n * This module is a stub for core services such as Dependency Injection or Browser Location.\n * Core services may be implemented by a specific framework, such as ng1 or ng2, or be pure javascript.\n *\n * @module common\n */\n/** for typedoc */\nimport { IInjectable, Obj } from './common';\nimport { Disposable } from '../interface';\nimport { UrlParts } from '../url/interface';\n\nexport let notImplemented = (fnname: string) => () => {\n throw new Error(`${fnname}(): No coreservices implementation for UI-Router is loaded.`);\n};\n\nconst services: CoreServices = {\n $q: undefined,\n $injector: undefined,\n};\n\nexport interface $QLikeDeferred {\n resolve: (val?: any) => void;\n reject: (reason?: any) => void;\n promise: Promise;\n}\n\nexport interface $QLike {\n when(value?: T | PromiseLike): Promise;\n reject(reason: any): Promise;\n defer(): $QLikeDeferred;\n all(promises: { [key: string]: Promise }): Promise;\n all(promises: Promise[]): Promise;\n}\n\nexport interface $InjectorLike {\n strictDi?: boolean;\n get(token: any): any;\n get(token: any): T;\n has(token: any): boolean;\n invoke(fn: IInjectable, context?: any, locals?: Obj): any;\n annotate(fn: IInjectable, strictDi?: boolean): any[];\n}\n\nexport interface CoreServices {\n $q: $QLike;\n $injector: $InjectorLike;\n}\n\nexport interface LocationServices extends Disposable {\n /**\n * Gets the current url string\n *\n * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n *\n * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n * have a base HREF prepended ([[PushStateLocationServices]]).\n *\n * The raw URL in the browser might be:\n *\n * ```\n * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n * ```\n *\n * or\n *\n * ```\n * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n * ```\n *\n * then this method returns:\n *\n * ```\n * /internal/path/123?param1=foo#anchor\n * ```\n *\n *\n * #### Example:\n * ```js\n * locationServices.url(); // \"/some/path?query=value#anchor\"\n * ```\n *\n * @returns the current value of the url, as a string.\n */\n url(): string;\n\n /**\n * Updates the url, or gets the current url\n *\n * Updates the url, changing it to the value in `newurl`\n *\n * #### Example:\n * ```js\n * locationServices.url(\"/some/path?query=value#anchor\", true);\n * ```\n *\n * @param newurl The new value for the URL.\n * This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n * It should not include the protocol, site, port, or base path of an absolute HREF.\n * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n * @return the url (after potentially being processed)\n */\n url(newurl: string, replace?: boolean, state?: any): string;\n\n /**\n * Gets the path part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n *\n * @return the path portion of the url\n */\n path(): string;\n\n /**\n * Gets the search part of the current url as an object\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n *\n * @return the search (querystring) portion of the url, as an object\n */\n search(): { [key: string]: any };\n\n /**\n * Gets the hash part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n *\n * @return the hash (anchor) portion of the url\n */\n hash(): string;\n\n /**\n * Registers a url change handler\n *\n * #### Example:\n * ```js\n * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n * ```\n *\n * @param callback a function that will be called when the url is changing\n * @return a function that de-registers the callback\n */\n onChange(callback: Function): Function;\n}\n\n/**\n * This service returns the location configuration\n *\n * This service returns information about the location configuration.\n * This service is primarily used when building URLs (e.g., for `hrefs`)\n */\nexport interface LocationConfig extends Disposable {\n /**\n * Gets the port, e.g., `80`\n *\n * @return the port number\n */\n port(): number;\n /**\n * Gets the protocol, e.g., `http`\n *\n * @return the protocol\n */\n protocol(): string;\n /**\n * Gets the host, e.g., `localhost`\n *\n * @return the protocol\n */\n host(): string;\n /**\n * Gets the base Href, e.g., `http://localhost/approot/`\n *\n * @return the application's base href\n */\n baseHref(): string;\n /**\n * Returns true when running in pushstate mode\n *\n * @return true when running in pushstate mode\n */\n html5Mode(): boolean;\n /**\n * Gets the hashPrefix (when not running in pushstate mode)\n *\n * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n *\n * @return the hash prefix\n */\n hashPrefix(): string;\n /**\n * Sets the hashPrefix (when not running in pushstate mode)\n *\n * @return the new hash prefix\n */\n hashPrefix(newprefix: string): string;\n}\n\nexport { services };\n", - "/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @preferred\n * @module common\n */\n/** for typedoc */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nimport { StateObject } from '../state/stateObject';\n\ndeclare const global;\nexport const root: any = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) || this;\nconst angular = root.angular || {};\n\nexport const fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport const toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport const forEach = angular.forEach || _forEach;\nexport const extend = Object.assign || _extend;\nexport const equals = angular.equals || _equals;\nexport function identity(x: any) { return x; }\nexport function noop(): any {}\n\nexport type Mapper = (x: X, key?: (string|number)) => T;\nexport interface TypedMap { [key: string]: T; }\nexport type Predicate = (x?: X) => boolean;\n/**\n * An ng1-style injectable\n *\n * This could be a (non-minified) function such as:\n * ```js\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an explicitly annotated function (minify safe)\n * ```js\n * injectableFunction.$inject = [ 'SomeDependency' ];\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an array style annotated function (minify safe)\n * ```js\n * ['SomeDependency', function injectableFunction(SomeDependency) {\n *\n * }];\n * ```\n *\n * @publicapi\n */\nexport type IInjectable = (Function|any[]);\n\nexport interface Obj extends Object {\n [key: string]: any;\n}\n\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source: Function, target: Obj, bind: Function, fnNames?: string[], latebind = false): Obj {\n const bindFunction = (fnName) =>\n source()[fnName].bind(bind());\n\n const makeLateRebindFn = fnName => function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n\n fnNames = fnNames || Object.keys(source());\n\n return fnNames.reduce((acc, name) => {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n\n\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport const inherit = (parent: Obj, extra?: Obj) =>\n extend(Object.create(parent), extra);\n\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport const inArray: typeof _inArray = curry(_inArray) as any;\nexport function _inArray(array: any[], obj: any): boolean;\nexport function _inArray(array: any[]): (obj: any) => boolean;\nexport function _inArray(array, obj?): any {\n return array.indexOf(obj) !== -1;\n}\n\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport const removeFrom: typeof _removeFrom = curry(_removeFrom) as any;\nexport function _removeFrom(array: T[], obj: T): T[];\nexport function _removeFrom(array: T[]): (obj: T) => T[];\nexport function _removeFrom(array, obj?) {\n const idx = array.indexOf(obj);\n if (idx >= 0) array.splice(idx, 1);\n return array;\n}\n\n/** pushes a values to an array and returns the value */\nexport const pushTo: typeof _pushTo = curry(_pushTo) as any;\nexport function _pushTo(arr: T[], val: T): T ;\nexport function _pushTo(arr: T[]): (val: T) => T ;\nexport function _pushTo(arr, val?): any {\n return (arr.push(val), val);\n}\n\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport const deregAll = (functions: Function[]) =>\n functions.slice().forEach(fn => {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts, ...defaultsList: Obj[]) {\n const _defaultsList = defaultsList.concat({}).reverse();\n const defaultVals = extend.apply(null, _defaultsList);\n return extend({}, defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport const mergeR = (memo: Obj, item: Obj) => extend(memo, item);\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first: StateObject, second: StateObject) {\n const path: StateObject[] = [];\n\n for (const n in first.path) { // tslint:disable-line:forin\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj: Obj, propNames: string[]): Obj {\n const objCopy = {};\n for (const _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj: Obj, propNames: string[]): Obj {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce((acc, key) => (acc[key] = obj[key], acc), {});\n}\n\n\n/** Given an array of objects, maps each element to a named property of the element. */\nexport function pluck(collection: Obj[], propName: string): T[];\n/** Given an object, maps each property of the object to a named property of the property. */\nexport function pluck(collection: { [key: string]: any }, propName: string): { [key: string]: any };\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection: any, propName: string): any {\n return map(collection, > prop(propName));\n}\n\n\n/** Given an array of objects, returns a new array containing only the elements which passed the callback predicate */\nexport function filter(collection: T[], callback: (t: T, key?: number) => boolean): T[];\n/** Given an object, returns a new object with only those properties that passed the callback predicate */\nexport function filter(collection: TypedMap, callback: (t: T, key?: string) => boolean): TypedMap;\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection: any, callback: Function): T {\n const arr = isArray(collection), result: any = arr ? [] : {};\n const accept = arr ? x => result.push(x) : (x, key) => result[key] = x;\n forEach(collection, function(item, i) {\n if (callback(item, i)) accept(item, i);\n });\n return result;\n}\n\n\n/** Given an object, return the first property of that object which passed the callback predicate */\nexport function find(collection: TypedMap, callback: Predicate): T;\n/** Given an array of objects, returns the first object which passed the callback predicate */\nexport function find(collection: T[], callback: Predicate): T;\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection: any, callback: any) {\n let result;\n\n forEach(collection, function(item, i) {\n if (result) return;\n if (callback(item, i)) result = item;\n });\n\n return result;\n}\n\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport let mapObj: (collection: { [key: string]: T }, callback: Mapper) => { [key: string]: U } = map;\n/** Given an array, returns a new array, where each element is transformed by the callback function */\nexport function map(collection: T[], callback: Mapper): U[];\nexport function map(collection: { [key: string]: T }, callback: Mapper): { [key: string]: U };\n/** Maps an array or object properties using a callback function */\nexport function map(collection: any, callback: any): any {\n const result = isArray(collection) ? [] : {};\n forEach(collection, (item, i) => result[i] = callback(item, i));\n return result;\n}\n\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport const values: ( (obj: TypedMap) => T[]) = (obj: Obj) =>\n Object.keys(obj).map(key => obj[key]);\n\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport const allTrueR = (memo: boolean, elem: any) => memo && elem;\n\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport const anyTrueR = (memo: boolean, elem: any) => memo || elem;\n\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnestR = (memo: any[], elem: any[]) => memo.concat(elem);\n\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flattenR = (memo: any[], elem: any) =>\n isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr: any[], obj: any) {\n arr.push(obj);\n return arr;\n}\n\n/** Reduce function that filters out duplicates */\nexport const uniqR = (acc: T[], token: T): T[] =>\n inArray(acc, token) ? acc : pushR(acc, token);\n\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnest = (arr: any[]) => arr.reduce(unnestR, []);\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flatten = (arr: any[]) => arr.reduce(flattenR, []);\n\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport const assertPredicate: (predicate: Predicate, errMsg: (string|Function)) => Predicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport const assertMap: (mapFn: (t: T) => U, errMsg: (string|Function)) => (t: T) => U = assertFn;\nexport function assertFn(predicateOrMap: Function, errMsg: (string|Function) = 'assert failure'): any {\n return (obj) => {\n const result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? ( errMsg)(obj) : errMsg);\n }\n return result;\n };\n}\n\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport const pairs = (obj: Obj) =>\n Object.keys(obj).map(key => [ key, obj[key]] );\n\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples(...args: any[]): any[] {\n if (args.length === 0) return [];\n const maxArrayLen = args.reduce((min, arr) => Math.min(arr.length, min), 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n const result = [];\n\n for (let i = 0; i < maxArrayLen; i++) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1: result.push([args[0][i]]); break;\n case 2: result.push([args[0][i], args[1][i]]); break;\n case 3: result.push([args[0][i], args[1][i], args[2][i]]); break;\n case 4: result.push([args[0][i], args[1][i], args[2][i], args[3][i]]); break;\n default:\n result.push(args.map(array => array[i])); break;\n }\n }\n\n return result;\n}\n\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo: TypedMap, keyValTuple: any[]) {\n let key: string, value: any;\n if (isArray(keyValTuple)) [key, value] = keyValTuple;\n if (!isString(key)) throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n\n/** Get the last element of an array */\nexport function tail(arr: T[]): T {\n return arr.length && arr[arr.length - 1] || undefined;\n}\n\n/**\n * shallow copy from src to dest\n */\nexport function copy(src: Obj, dest?: Obj) {\n if (dest) Object.keys(dest).forEach(key => delete dest[key]);\n if (!dest) dest = {};\n return extend(dest, src);\n}\n\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj: (any[]|any), cb: (el, idx?) => void, _this: Obj) {\n if (isArray(obj)) return obj.forEach(cb, _this);\n Object.keys(obj).forEach(key => cb(obj[key], key));\n}\n\n/** Like Object.assign() */\nexport function _extend(toObj: Obj, ...fromObjs: Obj[]): any;\nexport function _extend(toObj: Obj): any {\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n if (!obj) continue;\n const keys = Object.keys(obj);\n\n for (let j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n\n return toObj;\n}\n\nfunction _equals(o1: any, o2: any): boolean {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n const t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object') return false;\n\n const tup = [o1, o2];\n if (all(isArray)(tup)) return _arraysEq(o1, o2);\n if (all(isDate)(tup)) return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup)) return o1.toString() === o2.toString();\n if (all(isFunction)(tup)) return true; // meh\n\n const predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce((b, fn) => b || !!fn(tup), false)) return false;\n\n const keys: { [i: string]: boolean } = {};\n for (const key in o1) { // tslint:disable-line:forin\n if (!_equals(o1[key], o2[key])) return false;\n keys[key] = true;\n }\n for (const key in o2) {\n if (!keys[key]) return false;\n }\n\n return true;\n}\n\nfunction _arraysEq(a1: any[], a2: any[]) {\n if (a1.length !== a2.length) return false;\n return arrayTuples(a1, a2).reduce((b, t) => b && _equals(t[0], t[1]), true);\n}\n\n// issue #2676\nexport const silenceUncaughtInPromise = (promise: Promise) =>\n promise.catch(e => 0) && promise;\nexport const silentRejection = (error: any) =>\n silenceUncaughtInPromise(services.$q.reject(error));\n", - "/**\n * @module common\n */ /** for typedoc */\n\nexport class Queue {\n constructor(private _items: T[] = [], private _limit: number = null) { }\n\n enqueue(item: T) {\n const items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit) items.shift();\n return item;\n }\n\n dequeue(): T {\n if (this.size())\n return this._items.splice(0, 1)[0];\n }\n\n clear(): Array {\n const current = this._items;\n this._items = [];\n return current;\n }\n\n size(): number {\n return this._items.length;\n }\n\n remove(item: T) {\n const idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n }\n\n peekTail(): T {\n return this._items[this._items.length - 1];\n }\n\n peekHead(): T {\n if (this.size())\n return this._items[0];\n }\n}\n", + "/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @preferred\n * @module common\n */\n/** for typedoc */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nimport { StateObject } from '../state/stateObject';\n\ndeclare const global;\nexport const root: any = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) || this;\nconst angular = root.angular || {};\n\nexport const fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport const toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport const forEach = angular.forEach || _forEach;\nexport const extend = Object.assign || _extend;\nexport const equals = angular.equals || _equals;\nexport function identity(x: any) { return x; }\nexport function noop(): any {}\n\nexport type Mapper = (x: X, key?: (string|number)) => T;\nexport interface TypedMap { [key: string]: T; }\nexport type Predicate = (x?: X) => boolean;\n/**\n * An ng1-style injectable\n *\n * This could be a (non-minified) function such as:\n * ```js\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an explicitly annotated function (minify safe)\n * ```js\n * injectableFunction.$inject = [ 'SomeDependency' ];\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an array style annotated function (minify safe)\n * ```js\n * ['SomeDependency', function injectableFunction(SomeDependency) {\n *\n * }];\n * ```\n *\n * @publicapi\n */\nexport type IInjectable = (Function|any[]);\n\nexport interface Obj extends Object {\n [key: string]: any;\n}\n\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source: Function, target: Obj, bind: Function, fnNames?: string[], latebind = false): Obj {\n const bindFunction = (fnName) =>\n source()[fnName].bind(bind());\n\n const makeLateRebindFn = fnName => function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n\n fnNames = fnNames || Object.keys(source());\n\n return fnNames.reduce((acc, name) => {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n\n\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport const inherit = (parent: Obj, extra?: Obj) =>\n extend(Object.create(parent), extra);\n\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport const inArray: typeof _inArray = curry(_inArray) as any;\nexport function _inArray(array: any[], obj: any): boolean;\nexport function _inArray(array: any[]): (obj: any) => boolean;\nexport function _inArray(array, obj?): any {\n return array.indexOf(obj) !== -1;\n}\n\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport const removeFrom: typeof _removeFrom = curry(_removeFrom) as any;\nexport function _removeFrom(array: T[], obj: T): T[];\nexport function _removeFrom(array: T[]): (obj: T) => T[];\nexport function _removeFrom(array, obj?) {\n const idx = array.indexOf(obj);\n if (idx >= 0) array.splice(idx, 1);\n return array;\n}\n\n/** pushes a values to an array and returns the value */\nexport const pushTo: typeof _pushTo = curry(_pushTo) as any;\nexport function _pushTo(arr: T[], val: T): T ;\nexport function _pushTo(arr: T[]): (val: T) => T ;\nexport function _pushTo(arr, val?): any {\n return (arr.push(val), val);\n}\n\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport const deregAll = (functions: Function[]) =>\n functions.slice().forEach(fn => {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts, ...defaultsList: Obj[]) {\n const _defaultsList = defaultsList.concat({}).reverse();\n const defaultVals = extend.apply(null, _defaultsList);\n return extend({}, defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport const mergeR = (memo: Obj, item: Obj) => extend(memo, item);\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first: StateObject, second: StateObject) {\n const path: StateObject[] = [];\n\n for (const n in first.path) { // tslint:disable-line:forin\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj: Obj, propNames: string[]): Obj {\n const objCopy = {};\n for (const _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj: Obj, propNames: string[]): Obj {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce((acc, key) => (acc[key] = obj[key], acc), {});\n}\n\n\n/** Given an array of objects, maps each element to a named property of the element. */\nexport function pluck(collection: Obj[], propName: string): T[];\n/** Given an object, maps each property of the object to a named property of the property. */\nexport function pluck(collection: { [key: string]: any }, propName: string): { [key: string]: any };\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection: any, propName: string): any {\n return map(collection, > prop(propName));\n}\n\n\n/** Given an array of objects, returns a new array containing only the elements which passed the callback predicate */\nexport function filter(collection: T[], callback: (t: T, key?: number) => boolean): T[];\n/** Given an object, returns a new object with only those properties that passed the callback predicate */\nexport function filter(collection: TypedMap, callback: (t: T, key?: string) => boolean): TypedMap;\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection: any, callback: Function): T {\n const arr = isArray(collection), result: any = arr ? [] : {};\n const accept = arr ? x => result.push(x) : (x, key) => result[key] = x;\n forEach(collection, function(item, i) {\n if (callback(item, i)) accept(item, i);\n });\n return result;\n}\n\n\n/** Given an object, return the first property of that object which passed the callback predicate */\nexport function find(collection: TypedMap, callback: Predicate): T;\n/** Given an array of objects, returns the first object which passed the callback predicate */\nexport function find(collection: T[], callback: Predicate): T;\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection: any, callback: any) {\n let result;\n\n forEach(collection, function(item, i) {\n if (result) return;\n if (callback(item, i)) result = item;\n });\n\n return result;\n}\n\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport let mapObj: (collection: { [key: string]: T }, callback: Mapper, target?: typeof collection) => { [key: string]: U } = map;\n/** Given an array, returns a new array, where each element is transformed by the callback function */\nexport function map(collection: T[], callback: Mapper, target?: typeof collection): U[];\nexport function map(collection: { [key: string]: T }, callback: Mapper, target?: typeof collection): { [key: string]: U };\n/** Maps an array or object properties using a callback function */\nexport function map(collection: any, callback: any, target: typeof collection): any {\n target = target || (isArray(collection) ? [] : {});\n forEach(collection, (item, i) => target[i] = callback(item, i));\n return target;\n}\n\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport const values: ( (obj: TypedMap) => T[]) = (obj: Obj) =>\n Object.keys(obj).map(key => obj[key]);\n\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport const allTrueR = (memo: boolean, elem: any) => memo && elem;\n\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport const anyTrueR = (memo: boolean, elem: any) => memo || elem;\n\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnestR = (memo: any[], elem: any[]) => memo.concat(elem);\n\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flattenR = (memo: any[], elem: any) =>\n isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr: any[], obj: any) {\n arr.push(obj);\n return arr;\n}\n\n/** Reduce function that filters out duplicates */\nexport const uniqR = (acc: T[], token: T): T[] =>\n inArray(acc, token) ? acc : pushR(acc, token);\n\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnest = (arr: any[]) => arr.reduce(unnestR, []);\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flatten = (arr: any[]) => arr.reduce(flattenR, []);\n\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport const assertPredicate: (predicate: Predicate, errMsg: (string|Function)) => Predicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport const assertMap: (mapFn: (t: T) => U, errMsg: (string|Function)) => (t: T) => U = assertFn;\nexport function assertFn(predicateOrMap: Function, errMsg: (string|Function) = 'assert failure'): any {\n return (obj) => {\n const result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? ( errMsg)(obj) : errMsg);\n }\n return result;\n };\n}\n\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport const pairs = (obj: Obj) =>\n Object.keys(obj).map(key => [ key, obj[key]] );\n\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples(...args: any[]): any[] {\n if (args.length === 0) return [];\n const maxArrayLen = args.reduce((min, arr) => Math.min(arr.length, min), 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n const result = [];\n\n for (let i = 0; i < maxArrayLen; i++) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1: result.push([args[0][i]]); break;\n case 2: result.push([args[0][i], args[1][i]]); break;\n case 3: result.push([args[0][i], args[1][i], args[2][i]]); break;\n case 4: result.push([args[0][i], args[1][i], args[2][i], args[3][i]]); break;\n default:\n result.push(args.map(array => array[i])); break;\n }\n }\n\n return result;\n}\n\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo: TypedMap, keyValTuple: any[]) {\n let key: string, value: any;\n if (isArray(keyValTuple)) [key, value] = keyValTuple;\n if (!isString(key)) throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n\n/** Get the last element of an array */\nexport function tail(arr: T[]): T {\n return arr.length && arr[arr.length - 1] || undefined;\n}\n\n/**\n * shallow copy from src to dest\n */\nexport function copy(src: Obj, dest?: Obj) {\n if (dest) Object.keys(dest).forEach(key => delete dest[key]);\n if (!dest) dest = {};\n return extend(dest, src);\n}\n\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj: (any[]|any), cb: (el, idx?) => void, _this: Obj) {\n if (isArray(obj)) return obj.forEach(cb, _this);\n Object.keys(obj).forEach(key => cb(obj[key], key));\n}\n\n/** Like Object.assign() */\nexport function _extend(toObj: Obj, ...fromObjs: Obj[]): any;\nexport function _extend(toObj: Obj): any {\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n if (!obj) continue;\n const keys = Object.keys(obj);\n\n for (let j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n\n return toObj;\n}\n\nfunction _equals(o1: any, o2: any): boolean {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n const t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object') return false;\n\n const tup = [o1, o2];\n if (all(isArray)(tup)) return _arraysEq(o1, o2);\n if (all(isDate)(tup)) return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup)) return o1.toString() === o2.toString();\n if (all(isFunction)(tup)) return true; // meh\n\n const predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce((b, fn) => b || !!fn(tup), false)) return false;\n\n const keys: { [i: string]: boolean } = {};\n for (const key in o1) { // tslint:disable-line:forin\n if (!_equals(o1[key], o2[key])) return false;\n keys[key] = true;\n }\n for (const key in o2) {\n if (!keys[key]) return false;\n }\n\n return true;\n}\n\nfunction _arraysEq(a1: any[], a2: any[]) {\n if (a1.length !== a2.length) return false;\n return arrayTuples(a1, a2).reduce((b, t) => b && _equals(t[0], t[1]), true);\n}\n\n// issue #2676\nexport const silenceUncaughtInPromise = (promise: Promise) =>\n promise.catch(e => 0) && promise;\nexport const silentRejection = (error: any) =>\n silenceUncaughtInPromise(services.$q.reject(error));\n", + "import { pushTo } from './common';\n\n/**\n * @module common\n */\n/** for typedoc */\n\nexport class Queue {\n private _evictListeners: ((item: T) => void)[] = [];\n public onEvict = pushTo(this._evictListeners);\n\n constructor(private _items: T[] = [], private _limit: number = null) { }\n\n enqueue(item: T) {\n const items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit) this.evict();\n return item;\n }\n\n evict(): T {\n const item: T = this._items.shift();\n this._evictListeners.forEach(fn => fn(item));\n return item;\n }\n\n dequeue(): T {\n if (this.size())\n return this._items.splice(0, 1)[0];\n }\n\n clear(): Array {\n const current = this._items;\n this._items = [];\n return current;\n }\n\n size(): number {\n return this._items.length;\n }\n\n remove(item: T) {\n const idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n }\n\n peekTail(): T {\n return this._items[this._items.length - 1];\n }\n\n peekHead(): T {\n if (this.size())\n return this._items[0];\n }\n}\n", "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n'use strict';\nimport { extend, silentRejection } from '../common/common';\nimport { stringify } from '../common/strings';\nimport { is } from '../common/hof';\n\nexport enum RejectType {\n SUPERSEDED = 2, ABORTED = 3, INVALID = 4, IGNORED = 5, ERROR = 6,\n}\n\n/** @hidden */\nlet id = 0;\n\nexport class Rejection {\n $id = id++;\n type: number;\n message: string;\n detail: any;\n redirected: boolean;\n\n /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n static isRejectionPromise(obj: any): boolean {\n return obj && (typeof obj.then === 'function') && is(Rejection)(obj._transitionRejection);\n }\n\n /** Returns a Rejection due to transition superseded */\n static superseded(detail?: any, options?: any): Rejection {\n const message = 'The transition has been superseded by a different transition';\n const rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n if (options && options.redirected) {\n rejection.redirected = true;\n }\n return rejection;\n }\n\n /** Returns a Rejection due to redirected transition */\n static redirected(detail?: any): Rejection {\n return Rejection.superseded(detail, { redirected: true });\n }\n\n /** Returns a Rejection due to invalid transition */\n static invalid(detail?: any): Rejection {\n const message = 'This transition is invalid';\n return new Rejection(RejectType.INVALID, message, detail);\n }\n\n /** Returns a Rejection due to ignored transition */\n static ignored(detail?: any): Rejection {\n const message = 'The transition was ignored';\n return new Rejection(RejectType.IGNORED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static aborted(detail?: any): Rejection {\n const message = 'The transition has been aborted';\n return new Rejection(RejectType.ABORTED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static errored(detail?: any): Rejection {\n const message = 'The transition errored';\n return new Rejection(RejectType.ERROR, message, detail);\n }\n\n /**\n * Returns a Rejection\n *\n * Normalizes a value as a Rejection.\n * If the value is already a Rejection, returns it.\n * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n *\n * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n */\n static normalize(detail?: Rejection | Error | any): Rejection {\n return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n }\n\n constructor(type: number, message?: string, detail?: any) {\n this.type = type;\n this.message = message;\n this.detail = detail;\n }\n\n toString() {\n const detailString = (d: any) =>\n d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d);\n const detail = detailString(this.detail);\n const { $id, type, message } = this;\n return `Transition Rejection($id: ${$id} type: ${type}, message: ${message}, detail: ${detail})`;\n }\n\n toPromise(): Promise {\n return extend(silentRejection(this), { _transitionRejection: this });\n }\n}\n", "/**\n * # Transition tracing (debug)\n *\n * Enable transition tracing to print transition information to the console,\n * in order to help debug your application.\n * Tracing logs detailed information about each Transition to your console.\n *\n * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n *\n * ### ES6\n * ```js\n * import {trace} from \"ui-router-ng2\"; // or \"angular-ui-router\"\n * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n * ```\n *\n * ### CJS\n * ```js\n * let trace = require(\"angular-ui-router\").trace; // or \"ui-router-ng2\"\n * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n * ```\n *\n * ### Globals\n * ```js\n * let trace = window[\"angular-ui-router\"].trace; // or \"ui-router-ng2\"\n * trace.enable(); // Trace everything (very verbose)\n * ```\n *\n * ### Angular 1:\n * ```js\n * app.run($trace => $trace.enable());\n * ```\n *\n * @coreapi\n * @module trace\n */\n/* tslint:disable:no-console */\nimport { parse } from '../common/hof';\nimport { isFunction, isNumber } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { ViewTuple } from '../view';\nimport { ActiveUIView, ViewConfig, ViewContext } from '../view/interface';\nimport { stringify, functionToString, maxLength, padString } from './strings';\nimport { Resolvable } from '../resolve/resolvable';\nimport { PathNode } from '../path/pathNode';\nimport { PolicyWhen } from '../resolve/interface';\nimport { TransitionHook } from '../transition/transitionHook';\nimport { HookResult } from '../transition/interface';\nimport { StateObject } from '../state/stateObject';\n\n/** @hidden */\nfunction uiViewString (uiview: ActiveUIView) {\n if (!uiview) return 'ui-view (defunct)';\n const state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n return `[ui-view#${uiview.id} ${uiview.$type}:${uiview.fqn} (${uiview.name}@${state})]`;\n}\n\n/** @hidden */\nconst viewConfigString = (viewConfig: ViewConfig) => {\n const view = viewConfig.viewDecl;\n const state = view.$context.name || '(root)';\n return `[View#${viewConfig.$id} from '${state}' state]: target ui-view: '${view.$uiViewName}@${view.$uiViewContextAnchor}'`;\n};\n\n/** @hidden */\nfunction normalizedCat(input: Category|string): string {\n return isNumber(input) ? Category[input] : Category[Category[input]];\n}\n\n/** @hidden */\nconst consoleLog = Function.prototype.bind.call(console.log, console);\n\n/** @hidden */\nconst consoletable = isFunction(console.table) ? console.table.bind(console) : consoleLog.bind(console);\n\n\n/**\n * Trace categories Enum\n *\n * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n *\n * `trace.enable(Category.TRANSITION)`\n *\n * These can also be provided using a matching string, or position ordinal\n *\n * `trace.enable(\"TRANSITION\")`\n *\n * `trace.enable(1)`\n */\nexport enum Category {\n RESOLVE, TRANSITION, HOOK, UIVIEW, VIEWCONFIG,\n}\n\n/** @hidden */\nconst _tid = parse('$id');\n\n/** @hidden */\nconst _rid = parse('router.$id');\n\n/** @hidden */\nconst transLbl = (trans) => `Transition #${_tid(trans)}-${_rid(trans)}`;\n\n/**\n * Prints UI-Router Transition trace information to the console.\n */\nexport class Trace {\n /** @hidden */\n approximateDigests: number;\n\n /** @hidden */\n private _enabled: { [key: string]: boolean } = {};\n\n /** @hidden */\n constructor() {\n this.approximateDigests = 0;\n }\n\n /** @hidden */\n private _set(enabled: boolean, categories: Category[]) {\n if (!categories.length) {\n categories = Object.keys(Category)\n .map(k => parseInt(k, 10))\n .filter(k => !isNaN(k))\n .map(key => Category[key]);\n }\n categories.map(normalizedCat).forEach(category => this._enabled[category] = enabled);\n }\n\n /**\n * Enables a trace [[Category]]\n *\n * ```js\n * trace.enable(\"TRANSITION\");\n * ```\n *\n * @param categories categories to enable. If `categories` is omitted, all categories are enabled.\n * Also takes strings (category name) or ordinal (category position)\n */\n enable(...categories: (Category|string|number)[]);\n enable(...categories: any[]) { this._set(true, categories); }\n /**\n * Disables a trace [[Category]]\n *\n * ```js\n * trace.disable(\"VIEWCONFIG\");\n * ```\n *\n * @param categories categories to disable. If `categories` is omitted, all categories are disabled.\n * Also takes strings (category name) or ordinal (category position)\n */\n disable(...categories: (Category|string|number)[]);\n disable(...categories: any[]) { this._set(false, categories); }\n\n /**\n * Retrieves the enabled stateus of a [[Category]]\n *\n * ```js\n * trace.enabled(\"VIEWCONFIG\"); // true or false\n * ```\n *\n * @returns boolean true if the category is enabled\n */\n enabled(category: (Category|string|number)): boolean {\n return !!this._enabled[normalizedCat(category)];\n }\n\n /** @internalapi called by ui-router code */\n traceTransitionStart(trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: Started -> ${stringify(trans)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceTransitionIgnored(trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: Ignored <> ${stringify(trans)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceHookInvocation(step: TransitionHook, trans: Transition, options: any) {\n if (!this.enabled(Category.HOOK)) return;\n const event = parse('traceData.hookType')(options) || 'internal',\n context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown',\n name = functionToString((step as any).registeredHook.callback);\n console.log(`${transLbl(trans)}: Hook -> ${event} context: ${context}, ${maxLength(200, name)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceHookResult(hookResult: HookResult, trans: Transition, transitionOptions: any) {\n if (!this.enabled(Category.HOOK)) return;\n console.log(`${transLbl(trans)}: <- Hook returned: ${maxLength(200, stringify(hookResult))}`);\n }\n\n /** @internalapi called by ui-router code */\n traceResolvePath(path: PathNode[], when: PolicyWhen, trans?: Transition) {\n if (!this.enabled(Category.RESOLVE)) return;\n console.log(`${transLbl(trans)}: Resolving ${path} (${when})`);\n }\n\n /** @internalapi called by ui-router code */\n traceResolvableResolved(resolvable: Resolvable, trans?: Transition) {\n if (!this.enabled(Category.RESOLVE)) return;\n console.log(`${transLbl(trans)}: <- Resolved ${resolvable} to: ${maxLength(200, stringify(resolvable.data))}`);\n }\n\n /** @internalapi called by ui-router code */\n traceError(reason: any, trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: <- Rejected ${stringify(trans)}, reason: ${reason}`);\n }\n\n /** @internalapi called by ui-router code */\n traceSuccess(finalState: StateObject, trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: <- Success ${stringify(trans)}, final state: ${finalState.name}`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewEvent(event: string, viewData: ActiveUIView, extra = '') {\n if (!this.enabled(Category.UIVIEW)) return;\n console.log(`ui-view: ${padString(30, event)} ${uiViewString(viewData)}${extra}`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewConfigUpdated(viewData: ActiveUIView, context: ViewContext) {\n if (!this.enabled(Category.UIVIEW)) return;\n this.traceUIViewEvent('Updating', viewData, ` with ViewConfig from context='${context}'`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewFill(viewData: ActiveUIView, html: string) {\n if (!this.enabled(Category.UIVIEW)) return;\n this.traceUIViewEvent('Fill', viewData, ` with: ${maxLength(200, html)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceViewSync(pairs: ViewTuple[]) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n const uivheader = 'uiview component fqn';\n const cfgheader = 'view config state (view name)';\n const mapping = pairs.map(({ uiView, viewConfig }) => {\n const uiv = uiView && uiView.fqn;\n const cfg = viewConfig && `${viewConfig.viewDecl.$context.name}: (${viewConfig.viewDecl.$name})`;\n return { [uivheader]: uiv, [cfgheader]: cfg };\n }).sort((a, b) => (a[uivheader] || '').localeCompare(b[uivheader] || ''));\n\n consoletable(mapping);\n }\n\n /** @internalapi called by ui-router code */\n traceViewServiceEvent(event: string, viewConfig: ViewConfig) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n console.log(`VIEWCONFIG: ${event} ${viewConfigString(viewConfig)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceViewServiceUIViewEvent(event: string, viewData: ActiveUIView) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n console.log(`VIEWCONFIG: ${event} ${uiViewString(viewData)}`);\n }\n}\n\n/**\n * The [[Trace]] singleton\n *\n * #### Example:\n * ```js\n * import {trace} from \"angular-ui-router\";\n * trace.enable(1, 5);\n * ```\n */\nconst trace = new Trace();\nexport { trace };\n", - "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { StateDeclaration } from '../state/interface';\nimport { Predicate } from '../common/common';\n\nimport { Transition } from './transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TargetState } from '../state/targetState';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * The TransitionOptions object can be used to change the behavior of a transition.\n *\n * It is passed as the third argument to [[StateService.go]], [[StateService.transitionTo]].\n * It can also be used with a `uiSref`.\n */\nexport interface TransitionOptions {\n /**\n * This option changes how the Transition interacts with the browser's location bar (URL).\n *\n * - If `true`, it will update the url in the location bar.\n * - If `false`, it will not update the url in the location bar.\n * - If it is the string `\"replace\"`, it will update the url and also replace the last history record.\n *\n * @default `true`\n */\n location ?: (boolean|string);\n\n /**\n * When transitioning to relative path (e.g '`^`'), this option defines which state to be relative from.\n * @default `$state.current`\n */\n relative ?: (string|StateDeclaration|StateObject);\n\n /**\n * This option sets whether or not the transition's parameter values should be inherited from\n * the current parameter values.\n *\n * - If `true`, it will inherit parameter values from the current parameter values.\n * - If `false`, only the parameters which are provided to `transitionTo` will be used.\n *\n * @default `false`\n */\n inherit ?: boolean;\n\n /**\n * @deprecated\n */\n notify ?: boolean;\n\n /**\n * This option may be used to force states which are currently active to reload.\n *\n * During a normal transition, a state is \"retained\" if:\n * - It was previously active\n * - The state's parameter values have not changed\n * - All the parent states' parameter values have not changed\n *\n * Forcing a reload of a state will cause it to be exited and entered, which will:\n * - Refetch that state's resolve data\n * - Exit the state (onExit hook)\n * - Re-enter the state (onEnter hook)\n * - Re-render the views (controllers and templates)\n *\n * - When `true`, the destination state (and all parent states) will be reloaded.\n * - When it is a string and is the name of a state, or when it is a State object,\n * that state and any children states will be reloaded.\n *\n * @default `false`\n */\n reload ?: (boolean|string|StateDeclaration|StateObject);\n /**\n * You can define your own Transition Options inside this property and use them, e.g., from a Transition Hook\n */\n custom ?: any;\n /** @internalapi */\n reloadState ?: (StateObject);\n /** @internalapi\n * If this transition is a redirect, this property should be the original Transition (which was redirected to this one)\n */\n redirectedFrom?: Transition;\n /** @internalapi */\n current ?: () => Transition;\n /** @internalapi */\n source ?: 'sref' | 'url' | 'redirect' | 'otherwise' | 'unknown';\n}\n\n/** @internalapi */\nexport interface TransitionHookOptions {\n current ?: () => Transition; // path?\n transition ?: Transition;\n hookType ?: string;\n target ?: any;\n traceData ?: any;\n bind ?: any;\n stateHook ?: boolean;\n}\n\n/**\n * TreeChanges encapsulates the various Paths that are involved in a Transition.\n *\n * Get a TreeChanges object using [[Transition.treeChanges]]\n *\n * A UI-Router Transition is from one Path in a State Tree to another Path. For a given Transition,\n * this object stores the \"to\" and \"from\" paths, as well as subsets of those: the \"retained\",\n * \"exiting\" and \"entering\" paths.\n *\n * Each path in TreeChanges is an array of [[PathNode]] objects. Each PathNode in the array corresponds to a portion\n * of a nested state.\n *\n * For example, if you had a nested state named `foo.bar.baz`, it would have three\n * portions, `foo, bar, baz`. If you transitioned **to** `foo.bar.baz` and inspected the [[TreeChanges.to]]\n * Path, you would find a node in the array for each portion: `foo`, `bar`, and `baz`.\n *\n * ---\n *\n * @todo show visual state tree\n */\nexport interface TreeChanges {\n /** @nodoc */\n [key: string]: PathNode[];\n\n /** The path of nodes in the state tree that the transition is coming *from* */\n from: PathNode[];\n\n /** The path of nodes in the state tree that the transition is going *to* */\n to: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n */\n retained: PathNode[];\n\n /**\n * The path of previously active nodes that the transition is exiting.\n *\n * After the Transition is successful, these nodes are no longer active.\n *\n * Note that a state that is being reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n exiting: PathNode[];\n\n /**\n * The path of nodes that the transition is entering.\n *\n * After the Transition is successful, these nodes will be active.\n * Because they are entering, they have their resolves fetched, `onEnter` hooks run, and their views\n * (component(s) or controller(s)+template(s)) refreshed.\n *\n * Note that a state that is reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n entering: PathNode[];\n}\n\nexport type IHookRegistration = (matchCriteria: HookMatchCriteria, callback: HookFn, options?: HookRegOptions) => Function;\n\n/**\n * The signature for Transition Hooks.\n *\n * Transition hooks are callback functions that hook into the lifecycle of transitions.\n * As a transition runs, it reaches certain lifecycle events.\n * As each event occurs, the hooks which are registered for the event are called (in priority order).\n *\n * A transition hook may alter a Transition by returning a [[HookResult]].\n *\n * #### See:\n *\n * - [[IHookRegistry.onBefore]]\n * - [[IHookRegistry.onStart]]\n * - [[IHookRegistry.onFinish]]\n * - [[IHookRegistry.onSuccess]]\n * - [[IHookRegistry.onError]]\n *\n * @param transition the current [[Transition]]\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n *\n */\nexport interface TransitionHookFn {\n (transition: Transition): HookResult;\n}\n\n/**\n * The signature for Transition State Hooks.\n *\n * A function which hooks into a lifecycle event for a specific state.\n *\n * Transition State Hooks are callback functions that hook into the lifecycle events of specific states during a transition.\n * As a transition runs, it may exit some states, retain (keep) states, and enter states.\n * As each lifecycle event occurs, the hooks which are registered for the event and that state are called (in priority order).\n *\n * #### See:\n *\n * - [[IHookRegistry.onExit]]\n * - [[IHookRegistry.onRetain]]\n * - [[IHookRegistry.onEnter]]\n *\n * @param transition the current [[Transition]]\n * @param state the [[StateObject]] that the hook is bound to\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n */\nexport interface TransitionStateHookFn {\n (transition: Transition, state: StateDeclaration): HookResult;\n}\n\n/**\n * The signature for Transition onCreate Hooks.\n *\n * Transition onCreate Hooks are callbacks that allow customization or preprocessing of\n * a Transition before it is returned from [[TransitionService.create]]\n *\n * @param transition the [[Transition]] that was just created\n * @return a [[Transition]] which will then be returned from [[TransitionService.create]]\n */\nexport interface TransitionCreateHookFn {\n (transition: Transition): void;\n}\n\nexport type HookFn = (TransitionHookFn|TransitionStateHookFn|TransitionCreateHookFn);\n\n/**\n * The return value of a [[TransitionHookFn]] or [[TransitionStateHookFn]]\n *\n * When returned from a [[TransitionHookFn]] or [[TransitionStateHookFn]], these values alter the running [[Transition]]:\n *\n * - `false`: the transition will be cancelled.\n * - [[TargetState]]: the transition will be redirected to the new target state (see: [[StateService.target]])\n * - `Promise`: the transition will wait for the promise to resolve or reject\n * - If the promise is rejected (or resolves to `false`), the transition will be cancelled\n * - If the promise resolves to a [[TargetState]], the transition will be redirected\n * - If the promise resolves to anything else, the transition will resume\n * - Anything else: the transition will resume\n */\nexport type HookResult = (boolean | TargetState | void | Promise);\n\n/**\n * These options may be provided when registering a Transition Hook (such as `onStart`)\n */\nexport interface HookRegOptions {\n /**\n * Sets the priority of the registered hook\n *\n * Hooks of the same type (onBefore, onStart, etc) are invoked in priority order. A hook with a higher priority\n * is invoked before a hook with a lower priority.\n *\n * The default hook priority is 0\n */\n priority?: number;\n\n /**\n * Specifies what `this` is bound to during hook invocation.\n */\n bind?: any;\n\n /**\n * Limits the number of times that the hook will be invoked.\n * Once the hook has been invoked this many times, it is automatically deregistered.\n */\n invokeLimit?: number;\n}\n\n/**\n * This interface specifies the api for registering Transition Hooks. Both the\n * [[TransitionService]] and also the [[Transition]] object itself implement this interface.\n * Note: the Transition object only allows hooks to be registered before the Transition is started.\n */\nexport interface IHookRegistry {\n /** @hidden place to store the hooks */\n _registeredHooks: { [key: string]: RegisteredHook[] };\n\n /**\n * Registers a [[TransitionHookFn]], called *before a transition starts*.\n *\n * Registers a transition lifecycle hook, which is invoked before a transition even begins.\n * This hook can be useful to implement logic which prevents a transition from even starting, such\n * as authentication, redirection\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onBefore` hooks are invoked *before a Transition starts*.\n * No resolves have been fetched yet.\n * Each `onBefore` hook is invoked synchronously, in the same call stack as [[StateService.transitionTo]].\n * The registered `onBefore` hooks are invoked in priority order.\n *\n * Note: during the `onBefore` phase, additional hooks can be added to the specific [[Transition]] instance.\n * These \"on-the-fly\" hooks only affect the currently running transition..\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * If any hook modifies the transition *synchronously* (by throwing, returning `false`, or returning\n * a [[TargetState]]), the remainder of the hooks are skipped.\n * If a hook returns a promise, the remainder of the `onBefore` hooks are still invoked synchronously.\n * All promises are resolved, and processed asynchronously before the `onStart` phase of the Transition.\n *\n * ### Examples\n *\n * #### Default Substate\n *\n * This example redirects any transition from 'home' to 'home.dashboard'. This is commonly referred to as a\n * \"default substate\".\n *\n * @example\n * ```js\n * // ng2\n * transitionService.onBefore({ to: 'home' }, (trans: Transition) =>\n * trans.router.stateService.target(\"home.dashboard\"));\n * ```\n *\n * #### Data Driven Default Substate\n *\n * This example provides data-driven default substate functionality. It matches on a transition to any state\n * which has `defaultSubstate: \"some.sub.state\"` defined. See: [[Transition.to]] which returns the \"to state\"\n * definition.\n *\n * @example\n * ```js\n * // ng1\n * // state declaration\n * {\n * name: 'home',\n * template: '
',\n * defaultSubstate: 'home.dashboard'\n * }\n *\n * var criteria = {\n * to: function(state) {\n * return state.defaultSubstate != null;\n * }\n * }\n *\n * $transitions.onBefore(criteria, function(trans: Transition) {\n * var substate = trans.to().defaultSubstate;\n * return trans.router.stateService.target(substate);\n * });\n * ```\n *\n *\n * #### Require authentication\n *\n * This example cancels a transition to a state which requires authentication, if the user is not currently authenticated.\n *\n * This example assumes a state tree where all states which require authentication are children of a parent `'requireauth'` state.\n * This example assumes `MyAuthService` synchronously returns a boolean from `isAuthenticated()`.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onBefore( { to: 'requireauth.**' }, function(trans) {\n * var myAuthService = trans.injector().get('MyAuthService');\n * // If isAuthenticated returns false, the transition is cancelled.\n * return myAuthService.isAuthenticated();\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @returns a function which deregisters the hook.\n */\n onBefore(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called when a transition starts.\n *\n * Registers a transition lifecycle hook, which is invoked as a transition starts running.\n * This hook can be useful to perform some asynchronous action before completing a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onStart` hooks are invoked asynchronously when the Transition starts running.\n * This happens after the `onBefore` phase is complete.\n * At this point, the Transition has not yet exited nor entered any states.\n * The registered `onStart` hooks are invoked in priority order.\n *\n * Note: A built-in `onStart` hook with high priority is used to fetch any eager resolve data.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Example\n *\n * #### Login during transition\n *\n * This example intercepts any transition to a state which requires authentication, when the user is\n * not currently authenticated. It allows the user to authenticate asynchronously, then resumes the\n * transition. If the user did not authenticate successfully, it redirects to the \"guest\" state, which\n * does not require authentication.\n *\n * This example assumes:\n * - a state tree where all states which require authentication are children of a parent `'auth'` state.\n * - `MyAuthService.isAuthenticated()` synchronously returns a boolean.\n * - `MyAuthService.authenticate()` presents a login dialog, and returns a promise which is resolved\n * or rejected, whether or not the login attempt was successful.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onStart( { to: 'auth.**' }, function(trans) {\n * var $state = trans.router.stateService;\n * var MyAuthService = trans.injector().get('MyAuthService');\n *\n * // If the user is not authenticated\n * if (!MyAuthService.isAuthenticated()) {\n *\n * // Then return a promise for a successful login.\n * // The transition will wait for this promise to settle\n *\n * return MyAuthService.authenticate().catch(function() {\n *\n * // If the authenticate() method failed for whatever reason,\n * // redirect to a 'guest' state which doesn't require auth.\n * return $state.target(\"guest\");\n * });\n * }\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onStart(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is entered.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being entered.\n *\n * Since this hook is run only when the specific state is being *entered*, it can be useful for\n * performing tasks when entering a submodule/feature area such as initializing a stateful service,\n * or for guarding access to a submodule/feature area.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onEnter` hooks generally specify `{ entering: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onEnter` hooks are invoked when the Transition is entering a state.\n * States are entered after the `onRetain` phase is complete.\n * If more than one state is being entered, the parent state is entered first.\n * The registered `onEnter` hooks for a state are invoked in priority order.\n *\n * Note: A built-in `onEnter` hook with high priority is used to fetch lazy resolve data for states being entered.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onEnter` hooks using the [[TransitionService]], you may define an `onEnter` hook\n * directly on a state declaration (see: [[StateDeclaration.onEnter]]).\n *\n *\n * ### Examples\n *\n * #### Audit Log\n *\n * This example uses a service to log that a user has entered the admin section of an app.\n * This assumes that there are substates of the \"admin\" state, such as \"admin.users\", \"admin.pages\", etc.\n * @example\n * ```\n *\n * $transitions.onEnter({ entering: 'admin' }, function(transition, state) {\n * var AuditService = trans.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * ```\n *\n * #### Audit Log (inside a state declaration)\n *\n * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.\n * ```\n * {\n * name: 'admin',\n * component: 'admin',\n * onEnter: function($transition$, $state$) {\n * var AuditService = $transition$.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * }\n * ```\n *\n * Note: A state declaration's `onEnter` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onEnter(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is retained/kept.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) for\n * a specific state that was previously active will remain active (is not being entered nor exited).\n *\n * This hook is invoked when a state is \"retained\" or \"kept\".\n * It means the transition is coming *from* a substate of the retained state *to* a substate of the retained state.\n * This hook can be used to perform actions when the user moves from one substate to another, such as between steps in a wizard.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onRetain` hooks generally specify `{ retained: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onRetain` hooks are invoked after any `onExit` hooks have been fired.\n * If more than one state is retained, the child states' `onRetain` hooks are invoked first.\n * The registered `onRetain` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onRetain` hooks using the [[TransitionService]], you may define an `onRetain` hook\n * directly on a state declaration (see: [[StateDeclaration.onRetain]]).\n *\n * Note: A state declaration's `onRetain` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onRetain(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is exited.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being exited.\n *\n * Since this hook is run only when the specific state is being *exited*, it can be useful for\n * performing tasks when leaving a submodule/feature area such as cleaning up a stateful service,\n * or for preventing the user from leaving a state or submodule until some criteria is satisfied.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onExit` hooks generally specify `{ exiting: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onExit` hooks are invoked when the Transition is exiting a state.\n * States are exited after any `onStart` phase is complete.\n * If more than one state is being exited, the child states are exited first.\n * The registered `onExit` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onExit` hooks using the [[TransitionService]], you may define an `onExit` hook\n * directly on a state declaration (see: [[StateDeclaration.onExit]]).\n *\n * Note: A state declaration's `onExit` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onExit(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called *just before a transition finishes*.\n *\n * Registers a transition lifecycle hook, which is invoked just before a transition finishes.\n * This hook is a last chance to cancel or redirect a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onFinish` hooks are invoked after the `onEnter` phase is complete.\n * These hooks are invoked just before the transition is \"committed\".\n * Each hook is invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onFinish(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a successful transition completed.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition successfully completes.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onSuccess` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If the Transition is successful and its promise is resolved, then the `onSuccess` hooks are invoked.\n * Since these hooks are run after the transition is over, their return value is ignored.\n * The `onSuccess` hooks are invoked in priority order.\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onSuccess(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a transition has errored.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition has been rejected for any reason.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * The `onError` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If a Transition fails, its promise is rejected and the `onError` hooks are invoked.\n * The `onError` hooks are invoked in priority order.\n *\n * Since these hooks are run after the transition is over, their return value is ignored.\n *\n * A transition \"errors\" if it was started, but failed to complete (for any reason).\n * A *non-exhaustive list* of reasons a transition can error:\n *\n * - A transition was cancelled because a new transition started while it was still running (`Transition superseded`)\n * - A transition was cancelled by a Transition Hook returning false\n * - A transition was redirected by a Transition Hook returning a [[TargetState]]\n * - A Transition Hook or resolve function threw an error\n * - A Transition Hook returned a rejected promise\n * - A resolve function returned a rejected promise\n *\n * To check the failure reason, inspect the return value of [[Transition.error]].\n *\n * Note: `onError` should be used for targeted error handling, or error recovery.\n * For simple catch-all error reporting, use [[StateService.defaultErrorHandler]].\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onError(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Returns all the registered hooks of a given `hookName` type\n *\n * #### Example:\n * ```\n * $transitions.getHooks(\"onEnter\")\n * ```\n */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/** A predicate type which tests if a [[StateObject]] passes some test. Returns a boolean. */\nexport type IStateMatch = Predicate;\n\n/**\n * This object is used to configure whether or not a Transition Hook is invoked for a particular transition,\n * based on the Transition's \"to state\" and \"from state\".\n *\n * Each property (`to`, `from`, `exiting`, `retained`, and `entering`) can be a state [[Glob]] string,\n * a boolean, or a function that takes a state and returns a boolean (see [[HookMatchCriterion]])\n *\n * All properties are optional. If any property is omitted, it is replaced with the value `true`, and always matches.\n * To match any transition, use an empty criteria object `{}`.\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from the `parent` state and going to the `parent.child` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.child'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any substate of `parent` and going directly to the `parent` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any substate of `mymodule`\n * var match = {\n * to: 'mymodule.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any state that has `data.authRequired`\n * // set to a truthy value.\n * var match = {\n * to: function(state) {\n * return state.data != null && state.data.authRequired === true;\n * }\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition that is exiting `parent.child`\n * var match = {\n * exiting: 'parent.child'\n * }\n * ```\n */\nexport interface HookMatchCriteria {\n [key: string]: HookMatchCriterion | undefined;\n\n /** A [[HookMatchCriterion]] to match the destination state */\n to?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match the original (from) state */\n from?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be exiting */\n exiting?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be retained */\n retained?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be entering */\n entering?: HookMatchCriterion;\n}\n\nexport interface IMatchingNodes {\n [key: string]: PathNode[];\n\n to: PathNode[];\n from: PathNode[];\n exiting: PathNode[];\n retained: PathNode[];\n entering: PathNode[];\n}\n\n/** @hidden */\nexport interface RegisteredHooks {\n [key: string]: RegisteredHook[];\n}\n\n/** @hidden */\nexport interface PathTypes {\n [key: string]: PathType;\n\n to: PathType;\n from: PathType;\n exiting: PathType;\n retained: PathType;\n entering: PathType;\n}\n\n/** @hidden */\nexport interface PathType {\n name: string;\n scope: TransitionHookScope;\n}\n\n/**\n * Hook Criterion used to match a transition.\n *\n * A [[Glob]] string that matches the name of a state.\n *\n * Or, a function with the signature `function(state) { return matches; }`\n * which should return a boolean to indicate if a state matches.\n *\n * Or, `true` to always match\n */\nexport type HookMatchCriterion = (string|IStateMatch|boolean);\n\nexport enum TransitionHookPhase { CREATE, BEFORE, RUN, SUCCESS, ERROR }\nexport enum TransitionHookScope { TRANSITION, STATE }\n", + "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { StateDeclaration } from '../state/interface';\nimport { Predicate } from '../common/common';\n\nimport { Transition } from './transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TargetState } from '../state/targetState';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * The TransitionOptions object can be used to change the behavior of a transition.\n *\n * It is passed as the third argument to [[StateService.go]], [[StateService.transitionTo]].\n * It can also be used with a `uiSref`.\n */\nexport interface TransitionOptions {\n /**\n * This option changes how the Transition interacts with the browser's location bar (URL).\n *\n * - If `true`, it will update the url in the location bar.\n * - If `false`, it will not update the url in the location bar.\n * - If it is the string `\"replace\"`, it will update the url and also replace the last history record.\n *\n * @default `true`\n */\n location ?: (boolean|string);\n\n /**\n * When transitioning to relative path (e.g '`^`'), this option defines which state to be relative from.\n * @default `$state.current`\n */\n relative ?: (string|StateDeclaration|StateObject);\n\n /**\n * This option sets whether or not the transition's parameter values should be inherited from\n * the current parameter values.\n *\n * - If `true`, it will inherit parameter values from the current parameter values.\n * - If `false`, only the parameters which are provided to `transitionTo` will be used.\n *\n * @default `false`\n */\n inherit ?: boolean;\n\n /**\n * @deprecated\n */\n notify ?: boolean;\n\n /**\n * This option may be used to force states which are currently active to reload.\n *\n * During a normal transition, a state is \"retained\" if:\n * - It was previously active\n * - The state's parameter values have not changed\n * - All the parent states' parameter values have not changed\n *\n * Forcing a reload of a state will cause it to be exited and entered, which will:\n * - Refetch that state's resolve data\n * - Exit the state (onExit hook)\n * - Re-enter the state (onEnter hook)\n * - Re-render the views (controllers and templates)\n *\n * - When `true`, the destination state (and all parent states) will be reloaded.\n * - When it is a string and is the name of a state, or when it is a State object,\n * that state and any children states will be reloaded.\n *\n * @default `false`\n */\n reload ?: (boolean|string|StateDeclaration|StateObject);\n /**\n * You can define your own Transition Options inside this property and use them, e.g., from a Transition Hook\n */\n custom ?: any;\n /** @internalapi */\n reloadState ?: (StateObject);\n /** @internalapi\n * If this transition is a redirect, this property should be the original Transition (which was redirected to this one)\n */\n redirectedFrom?: Transition;\n /** @internalapi */\n current ?: () => Transition;\n /** @internalapi */\n source ?: 'sref' | 'url' | 'redirect' | 'otherwise' | 'unknown';\n}\n\n/** @internalapi */\nexport interface TransitionHookOptions {\n current ?: () => Transition; // path?\n transition ?: Transition;\n hookType ?: string;\n target ?: any;\n traceData ?: any;\n bind ?: any;\n stateHook ?: boolean;\n}\n\n/**\n * TreeChanges encapsulates the various Paths that are involved in a Transition.\n *\n * Get a TreeChanges object using [[Transition.treeChanges]]\n *\n * A UI-Router Transition is from one Path in a State Tree to another Path. For a given Transition,\n * this object stores the \"to\" and \"from\" paths, as well as subsets of those: the \"retained\",\n * \"exiting\" and \"entering\" paths.\n *\n * Each path in TreeChanges is an array of [[PathNode]] objects. Each PathNode in the array corresponds to a portion\n * of a nested state.\n *\n * For example, if you had a nested state named `foo.bar.baz`, it would have three\n * portions, `foo, bar, baz`. If you transitioned **to** `foo.bar.baz` and inspected the [[TreeChanges.to]]\n * Path, you would find a node in the array for each portion: `foo`, `bar`, and `baz`.\n *\n * ---\n *\n * @todo show visual state tree\n */\nexport interface TreeChanges {\n /** @nodoc */\n [key: string]: PathNode[];\n\n /** The path of nodes in the state tree that the transition is coming *from* */\n from: PathNode[];\n\n /** The path of nodes in the state tree that the transition is going *to* */\n to: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n */\n retained: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining with updated \"to params\" applied.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n *\n * This is a shallow copy of [[retained]], but with new (dynamic) parameter values from [[to]] applied.\n */\n retainedWithToParams: PathNode[];\n\n /**\n * The path of previously active nodes that the transition is exiting.\n *\n * After the Transition is successful, these nodes are no longer active.\n *\n * Note that a state that is being reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n exiting: PathNode[];\n\n /**\n * The path of nodes that the transition is entering.\n *\n * After the Transition is successful, these nodes will be active.\n * Because they are entering, they have their resolves fetched, `onEnter` hooks run, and their views\n * (component(s) or controller(s)+template(s)) refreshed.\n *\n * Note that a state that is reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n entering: PathNode[];\n}\n\nexport type IHookRegistration = (matchCriteria: HookMatchCriteria, callback: HookFn, options?: HookRegOptions) => Function;\n\n/**\n * The signature for Transition Hooks.\n *\n * Transition hooks are callback functions that hook into the lifecycle of transitions.\n * As a transition runs, it reaches certain lifecycle events.\n * As each event occurs, the hooks which are registered for the event are called (in priority order).\n *\n * A transition hook may alter a Transition by returning a [[HookResult]].\n *\n * #### See:\n *\n * - [[IHookRegistry.onBefore]]\n * - [[IHookRegistry.onStart]]\n * - [[IHookRegistry.onFinish]]\n * - [[IHookRegistry.onSuccess]]\n * - [[IHookRegistry.onError]]\n *\n * @param transition the current [[Transition]]\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n *\n */\nexport interface TransitionHookFn {\n (transition: Transition): HookResult;\n}\n\n/**\n * The signature for Transition State Hooks.\n *\n * A function which hooks into a lifecycle event for a specific state.\n *\n * Transition State Hooks are callback functions that hook into the lifecycle events of specific states during a transition.\n * As a transition runs, it may exit some states, retain (keep) states, and enter states.\n * As each lifecycle event occurs, the hooks which are registered for the event and that state are called (in priority order).\n *\n * #### See:\n *\n * - [[IHookRegistry.onExit]]\n * - [[IHookRegistry.onRetain]]\n * - [[IHookRegistry.onEnter]]\n *\n * @param transition the current [[Transition]]\n * @param state the [[StateObject]] that the hook is bound to\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n */\nexport interface TransitionStateHookFn {\n (transition: Transition, state: StateDeclaration): HookResult;\n}\n\n/**\n * The signature for Transition onCreate Hooks.\n *\n * Transition onCreate Hooks are callbacks that allow customization or preprocessing of\n * a Transition before it is returned from [[TransitionService.create]]\n *\n * @param transition the [[Transition]] that was just created\n * @return a [[Transition]] which will then be returned from [[TransitionService.create]]\n */\nexport interface TransitionCreateHookFn {\n (transition: Transition): void;\n}\n\nexport type HookFn = (TransitionHookFn|TransitionStateHookFn|TransitionCreateHookFn);\n\n/**\n * The return value of a [[TransitionHookFn]] or [[TransitionStateHookFn]]\n *\n * When returned from a [[TransitionHookFn]] or [[TransitionStateHookFn]], these values alter the running [[Transition]]:\n *\n * - `false`: the transition will be cancelled.\n * - [[TargetState]]: the transition will be redirected to the new target state (see: [[StateService.target]])\n * - `Promise`: the transition will wait for the promise to resolve or reject\n * - If the promise is rejected (or resolves to `false`), the transition will be cancelled\n * - If the promise resolves to a [[TargetState]], the transition will be redirected\n * - If the promise resolves to anything else, the transition will resume\n * - Anything else: the transition will resume\n */\nexport type HookResult = (boolean | TargetState | void | Promise);\n\n/**\n * These options may be provided when registering a Transition Hook (such as `onStart`)\n */\nexport interface HookRegOptions {\n /**\n * Sets the priority of the registered hook\n *\n * Hooks of the same type (onBefore, onStart, etc) are invoked in priority order. A hook with a higher priority\n * is invoked before a hook with a lower priority.\n *\n * The default hook priority is 0\n */\n priority?: number;\n\n /**\n * Specifies what `this` is bound to during hook invocation.\n */\n bind?: any;\n\n /**\n * Limits the number of times that the hook will be invoked.\n * Once the hook has been invoked this many times, it is automatically deregistered.\n */\n invokeLimit?: number;\n}\n\n/**\n * This interface specifies the api for registering Transition Hooks. Both the\n * [[TransitionService]] and also the [[Transition]] object itself implement this interface.\n * Note: the Transition object only allows hooks to be registered before the Transition is started.\n */\nexport interface IHookRegistry {\n /** @hidden place to store the hooks */\n _registeredHooks: { [key: string]: RegisteredHook[] };\n\n /**\n * Registers a [[TransitionHookFn]], called *before a transition starts*.\n *\n * Registers a transition lifecycle hook, which is invoked before a transition even begins.\n * This hook can be useful to implement logic which prevents a transition from even starting, such\n * as authentication, redirection\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onBefore` hooks are invoked *before a Transition starts*.\n * No resolves have been fetched yet.\n * Each `onBefore` hook is invoked synchronously, in the same call stack as [[StateService.transitionTo]].\n * The registered `onBefore` hooks are invoked in priority order.\n *\n * Note: during the `onBefore` phase, additional hooks can be added to the specific [[Transition]] instance.\n * These \"on-the-fly\" hooks only affect the currently running transition..\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * If any hook modifies the transition *synchronously* (by throwing, returning `false`, or returning\n * a [[TargetState]]), the remainder of the hooks are skipped.\n * If a hook returns a promise, the remainder of the `onBefore` hooks are still invoked synchronously.\n * All promises are resolved, and processed asynchronously before the `onStart` phase of the Transition.\n *\n * ### Examples\n *\n * #### Default Substate\n *\n * This example redirects any transition from 'home' to 'home.dashboard'. This is commonly referred to as a\n * \"default substate\".\n *\n * @example\n * ```js\n * // ng2\n * transitionService.onBefore({ to: 'home' }, (trans: Transition) =>\n * trans.router.stateService.target(\"home.dashboard\"));\n * ```\n *\n * #### Data Driven Default Substate\n *\n * This example provides data-driven default substate functionality. It matches on a transition to any state\n * which has `defaultSubstate: \"some.sub.state\"` defined. See: [[Transition.to]] which returns the \"to state\"\n * definition.\n *\n * @example\n * ```js\n * // ng1\n * // state declaration\n * {\n * name: 'home',\n * template: '
',\n * defaultSubstate: 'home.dashboard'\n * }\n *\n * var criteria = {\n * to: function(state) {\n * return state.defaultSubstate != null;\n * }\n * }\n *\n * $transitions.onBefore(criteria, function(trans: Transition) {\n * var substate = trans.to().defaultSubstate;\n * return trans.router.stateService.target(substate);\n * });\n * ```\n *\n *\n * #### Require authentication\n *\n * This example cancels a transition to a state which requires authentication, if the user is not currently authenticated.\n *\n * This example assumes a state tree where all states which require authentication are children of a parent `'requireauth'` state.\n * This example assumes `MyAuthService` synchronously returns a boolean from `isAuthenticated()`.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onBefore( { to: 'requireauth.**' }, function(trans) {\n * var myAuthService = trans.injector().get('MyAuthService');\n * // If isAuthenticated returns false, the transition is cancelled.\n * return myAuthService.isAuthenticated();\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @returns a function which deregisters the hook.\n */\n onBefore(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called when a transition starts.\n *\n * Registers a transition lifecycle hook, which is invoked as a transition starts running.\n * This hook can be useful to perform some asynchronous action before completing a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onStart` hooks are invoked asynchronously when the Transition starts running.\n * This happens after the `onBefore` phase is complete.\n * At this point, the Transition has not yet exited nor entered any states.\n * The registered `onStart` hooks are invoked in priority order.\n *\n * Note: A built-in `onStart` hook with high priority is used to fetch any eager resolve data.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Example\n *\n * #### Login during transition\n *\n * This example intercepts any transition to a state which requires authentication, when the user is\n * not currently authenticated. It allows the user to authenticate asynchronously, then resumes the\n * transition. If the user did not authenticate successfully, it redirects to the \"guest\" state, which\n * does not require authentication.\n *\n * This example assumes:\n * - a state tree where all states which require authentication are children of a parent `'auth'` state.\n * - `MyAuthService.isAuthenticated()` synchronously returns a boolean.\n * - `MyAuthService.authenticate()` presents a login dialog, and returns a promise which is resolved\n * or rejected, whether or not the login attempt was successful.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onStart( { to: 'auth.**' }, function(trans) {\n * var $state = trans.router.stateService;\n * var MyAuthService = trans.injector().get('MyAuthService');\n *\n * // If the user is not authenticated\n * if (!MyAuthService.isAuthenticated()) {\n *\n * // Then return a promise for a successful login.\n * // The transition will wait for this promise to settle\n *\n * return MyAuthService.authenticate().catch(function() {\n *\n * // If the authenticate() method failed for whatever reason,\n * // redirect to a 'guest' state which doesn't require auth.\n * return $state.target(\"guest\");\n * });\n * }\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onStart(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is entered.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being entered.\n *\n * Since this hook is run only when the specific state is being *entered*, it can be useful for\n * performing tasks when entering a submodule/feature area such as initializing a stateful service,\n * or for guarding access to a submodule/feature area.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onEnter` hooks generally specify `{ entering: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onEnter` hooks are invoked when the Transition is entering a state.\n * States are entered after the `onRetain` phase is complete.\n * If more than one state is being entered, the parent state is entered first.\n * The registered `onEnter` hooks for a state are invoked in priority order.\n *\n * Note: A built-in `onEnter` hook with high priority is used to fetch lazy resolve data for states being entered.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onEnter` hooks using the [[TransitionService]], you may define an `onEnter` hook\n * directly on a state declaration (see: [[StateDeclaration.onEnter]]).\n *\n *\n * ### Examples\n *\n * #### Audit Log\n *\n * This example uses a service to log that a user has entered the admin section of an app.\n * This assumes that there are substates of the \"admin\" state, such as \"admin.users\", \"admin.pages\", etc.\n * @example\n * ```\n *\n * $transitions.onEnter({ entering: 'admin' }, function(transition, state) {\n * var AuditService = trans.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * ```\n *\n * #### Audit Log (inside a state declaration)\n *\n * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.\n * ```\n * {\n * name: 'admin',\n * component: 'admin',\n * onEnter: function($transition$, $state$) {\n * var AuditService = $transition$.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * }\n * ```\n *\n * Note: A state declaration's `onEnter` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onEnter(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is retained/kept.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) for\n * a specific state that was previously active will remain active (is not being entered nor exited).\n *\n * This hook is invoked when a state is \"retained\" or \"kept\".\n * It means the transition is coming *from* a substate of the retained state *to* a substate of the retained state.\n * This hook can be used to perform actions when the user moves from one substate to another, such as between steps in a wizard.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onRetain` hooks generally specify `{ retained: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onRetain` hooks are invoked after any `onExit` hooks have been fired.\n * If more than one state is retained, the child states' `onRetain` hooks are invoked first.\n * The registered `onRetain` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onRetain` hooks using the [[TransitionService]], you may define an `onRetain` hook\n * directly on a state declaration (see: [[StateDeclaration.onRetain]]).\n *\n * Note: A state declaration's `onRetain` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onRetain(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is exited.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being exited.\n *\n * Since this hook is run only when the specific state is being *exited*, it can be useful for\n * performing tasks when leaving a submodule/feature area such as cleaning up a stateful service,\n * or for preventing the user from leaving a state or submodule until some criteria is satisfied.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onExit` hooks generally specify `{ exiting: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onExit` hooks are invoked when the Transition is exiting a state.\n * States are exited after any `onStart` phase is complete.\n * If more than one state is being exited, the child states are exited first.\n * The registered `onExit` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onExit` hooks using the [[TransitionService]], you may define an `onExit` hook\n * directly on a state declaration (see: [[StateDeclaration.onExit]]).\n *\n * Note: A state declaration's `onExit` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onExit(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called *just before a transition finishes*.\n *\n * Registers a transition lifecycle hook, which is invoked just before a transition finishes.\n * This hook is a last chance to cancel or redirect a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onFinish` hooks are invoked after the `onEnter` phase is complete.\n * These hooks are invoked just before the transition is \"committed\".\n * Each hook is invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onFinish(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a successful transition completed.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition successfully completes.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onSuccess` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If the Transition is successful and its promise is resolved, then the `onSuccess` hooks are invoked.\n * Since these hooks are run after the transition is over, their return value is ignored.\n * The `onSuccess` hooks are invoked in priority order.\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onSuccess(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a transition has errored.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition has been rejected for any reason.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * The `onError` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If a Transition fails, its promise is rejected and the `onError` hooks are invoked.\n * The `onError` hooks are invoked in priority order.\n *\n * Since these hooks are run after the transition is over, their return value is ignored.\n *\n * A transition \"errors\" if it was started, but failed to complete (for any reason).\n * A *non-exhaustive list* of reasons a transition can error:\n *\n * - A transition was cancelled because a new transition started while it was still running (`Transition superseded`)\n * - A transition was cancelled by a Transition Hook returning false\n * - A transition was redirected by a Transition Hook returning a [[TargetState]]\n * - A Transition Hook or resolve function threw an error\n * - A Transition Hook returned a rejected promise\n * - A resolve function returned a rejected promise\n *\n * To check the failure reason, inspect the return value of [[Transition.error]].\n *\n * Note: `onError` should be used for targeted error handling, or error recovery.\n * For simple catch-all error reporting, use [[StateService.defaultErrorHandler]].\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onError(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Returns all the registered hooks of a given `hookName` type\n *\n * #### Example:\n * ```\n * $transitions.getHooks(\"onEnter\")\n * ```\n */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/** A predicate type which tests if a [[StateObject]] passes some test. Returns a boolean. */\nexport type IStateMatch = Predicate;\n\n/**\n * This object is used to configure whether or not a Transition Hook is invoked for a particular transition,\n * based on the Transition's \"to state\" and \"from state\".\n *\n * Each property (`to`, `from`, `exiting`, `retained`, and `entering`) can be a state [[Glob]] string,\n * a boolean, or a function that takes a state and returns a boolean (see [[HookMatchCriterion]])\n *\n * All properties are optional. If any property is omitted, it is replaced with the value `true`, and always matches.\n * To match any transition, use an empty criteria object `{}`.\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from the `parent` state and going to the `parent.child` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.child'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any substate of `parent` and going directly to the `parent` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any substate of `mymodule`\n * var match = {\n * to: 'mymodule.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any state that has `data.authRequired`\n * // set to a truthy value.\n * var match = {\n * to: function(state) {\n * return state.data != null && state.data.authRequired === true;\n * }\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition that is exiting `parent.child`\n * var match = {\n * exiting: 'parent.child'\n * }\n * ```\n */\nexport interface HookMatchCriteria {\n [key: string]: HookMatchCriterion | undefined;\n\n /** A [[HookMatchCriterion]] to match the destination state */\n to?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match the original (from) state */\n from?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be exiting */\n exiting?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be retained */\n retained?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be entering */\n entering?: HookMatchCriterion;\n}\n\nexport interface IMatchingNodes {\n [key: string]: PathNode[];\n\n to: PathNode[];\n from: PathNode[];\n exiting: PathNode[];\n retained: PathNode[];\n entering: PathNode[];\n}\n\n/** @hidden */\nexport interface RegisteredHooks {\n [key: string]: RegisteredHook[];\n}\n\n/** @hidden */\nexport interface PathTypes {\n [key: string]: PathType;\n\n to: PathType;\n from: PathType;\n exiting: PathType;\n retained: PathType;\n entering: PathType;\n}\n\n/** @hidden */\nexport interface PathType {\n name: string;\n scope: TransitionHookScope;\n}\n\n/**\n * Hook Criterion used to match a transition.\n *\n * A [[Glob]] string that matches the name of a state.\n *\n * Or, a function with the signature `function(state) { return matches; }`\n * which should return a boolean to indicate if a state matches.\n *\n * Or, `true` to always match\n */\nexport type HookMatchCriterion = (string|IStateMatch|boolean);\n\nexport enum TransitionHookPhase { CREATE, BEFORE, RUN, SUCCESS, ERROR }\nexport enum TransitionHookScope { TRANSITION, STATE }\n", "/**\n * @coreapi\n * @module state\n */ /** for typedoc */\n\nimport { StateDeclaration, StateOrName, TargetStateDef } from './interface';\nimport { TransitionOptions } from '../transition/interface';\nimport { StateObject } from './stateObject';\nimport { isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { extend } from '../common';\nimport { StateRegistry } from './stateRegistry';\nimport { RawParams } from '../params';\n\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nexport class TargetState {\n private _definition: StateObject;\n private _params: RawParams;\n private _options: TransitionOptions;\n\n /** Returns true if the object has a state property that might be a state or state name */\n static isDef = (obj): obj is TargetStateDef =>\n obj && obj.state && (isString(obj.state) || isString(obj.state.name));\n\n /**\n * The TargetState constructor\n *\n * Note: Do not construct a `TargetState` manually.\n * To create a `TargetState`, use the [[StateService.target]] factory method.\n *\n * @param _stateRegistry The StateRegistry to use to look up the _definition\n * @param _identifier An identifier for a state.\n * Either a fully-qualified state name, or the object used to define the state.\n * @param _params Parameters for the target state\n * @param _options Transition options.\n *\n * @internalapi\n */\n constructor(\n private _stateRegistry: StateRegistry,\n private _identifier: StateOrName,\n _params?: RawParams,\n _options?: TransitionOptions,\n ) {\n this._identifier = _identifier;\n this._params = extend({}, _params || {});\n this._options = extend({}, _options || {});\n this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n }\n\n /** The name of the state this object targets */\n name(): string {\n return this._definition && this._definition.name || this._identifier;\n }\n\n /** The identifier used when creating this TargetState */\n identifier(): StateOrName {\n return this._identifier;\n }\n\n /** The target parameter values */\n params(): RawParams {\n return this._params;\n }\n\n /** The internal state object (if it was found) */\n $state(): StateObject {\n return this._definition;\n }\n\n /** The internal state declaration (if it was found) */\n state(): StateDeclaration {\n return this._definition && this._definition.self;\n }\n\n /** The target options */\n options() {\n return this._options;\n }\n\n /** True if the target state was found */\n exists(): boolean {\n return !!(this._definition && this._definition.self);\n }\n\n /** True if the object is valid */\n valid(): boolean {\n return !this.error();\n }\n\n /** If the object is invalid, returns the reason why */\n error(): string {\n const base = this.options().relative;\n if (!this._definition && !!base) {\n const stateName = base.name ? base.name : base;\n return `Could not resolve '${this.name()}' from state '${stateName}'`;\n }\n if (!this._definition)\n return `No such state '${this.name()}'`;\n if (!this._definition.self)\n return `State '${this.name()}' has an invalid definition`;\n }\n\n toString() {\n return `'${this.name()}'${stringify(this.params())}`;\n }\n\n /**\n * Returns a copy of this TargetState which targets a different state.\n * The new TargetState has the same parameter values and transition options.\n *\n * @param state The new state that should be targeted\n */\n withState(state: StateOrName): TargetState {\n return new TargetState(this._stateRegistry, state, this._params, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified parameter values.\n *\n * @param params the new parameter values to use\n * @param replace When false (default) the new parameter values will be merged with the current values.\n * When true the parameter values will be used instead of the current values.\n */\n withParams(params: RawParams, replace = false): TargetState {\n const newParams: RawParams = replace ? params : extend({}, this._params, params);\n return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified Transition Options.\n *\n * @param options the new options to use\n * @param replace When false (default) the new options will be merged with the current options.\n * When true the options will be used instead of the current options.\n */\n withOptions(options: TransitionOptions, replace = false): TargetState {\n const newOpts = replace ? options : extend({}, this._options, options);\n return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n }\n}\n", "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport { TransitionHookOptions, HookResult, TransitionHookPhase } from './interface';\nimport { defaults, noop, silentRejection } from '../common/common';\nimport { fnToString, maxLength } from '../common/strings';\nimport { isPromise } from '../common/predicates';\nimport { is, parse } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { Rejection } from './rejectFactory';\nimport { TargetState } from '../state/targetState';\nimport { Transition } from './transition';\nimport { TransitionEventType } from './transitionEventType';\nimport { RegisteredHook } from './hookRegistry';\nimport { StateDeclaration } from '../state/interface';\n\nconst defaultOptions: TransitionHookOptions = {\n current: noop,\n transition: null,\n traceData: {},\n bind: null,\n};\n\nexport type GetResultHandler = (hook: TransitionHook) => ResultHandler;\nexport type GetErrorHandler = (hook: TransitionHook) => ErrorHandler;\n\nexport type ResultHandler = (result: HookResult) => Promise;\nexport type ErrorHandler = (error: any) => Promise;\n\n/** @hidden */\nexport class TransitionHook {\n type: TransitionEventType;\n\n /**\n * These GetResultHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static HANDLE_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) =>\n hook.handleHookResult(result);\n\n /**\n * If the result is a promise rejection, log it.\n * Otherwise, ignore the result.\n */\n static LOG_REJECTED_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) => {\n isPromise(result) && result.catch(err =>\n hook.logError(Rejection.normalize(err)));\n return undefined;\n }\n\n /**\n * These GetErrorHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static LOG_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n hook.logError(error);\n\n static REJECT_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n silentRejection(error);\n\n static THROW_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) => {\n throw error;\n }\n\n /**\n * Chains together an array of TransitionHooks.\n *\n * Given a list of [[TransitionHook]] objects, chains them together.\n * Each hook is invoked after the previous one completes.\n *\n * #### Example:\n * ```js\n * var hooks: TransitionHook[] = getHooks();\n * let promise: Promise = TransitionHook.chain(hooks);\n *\n * promise.then(handleSuccess, handleError);\n * ```\n *\n * @param hooks the list of hooks to chain together\n * @param waitFor if provided, the chain is `.then()`'ed off this promise\n * @returns a `Promise` for sequentially invoking the hooks (in order)\n */\n static chain(hooks: TransitionHook[], waitFor?: Promise): Promise {\n // Chain the next hook off the previous\n const createHookChainR = (prev: Promise, nextHook: TransitionHook) =>\n prev.then(() => nextHook.invokeHook());\n return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n }\n\n\n /**\n * Invokes all the provided TransitionHooks, in order.\n * Each hook's return value is checked.\n * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n * If no hook returns a promise, then all hooks are processed synchronously.\n *\n * @param hooks the list of TransitionHooks to invoke\n * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n *\n * @returns a promise for the async result, or the result of the callback\n */\n static invokeHooks(hooks: TransitionHook[], doneCallback: (result?: HookResult) => T): Promise | T {\n for (let idx = 0; idx < hooks.length; idx++) {\n const hookResult = hooks[idx].invokeHook();\n\n if (isPromise(hookResult)) {\n const remainingHooks = hooks.slice(idx + 1);\n\n return TransitionHook.chain(remainingHooks, hookResult)\n .then(doneCallback);\n }\n }\n\n return doneCallback();\n }\n\n /**\n * Run all TransitionHooks, ignoring their return value.\n */\n static runAllHooks(hooks: TransitionHook[]): void {\n hooks.forEach(hook => hook.invokeHook());\n }\n\n constructor(private transition: Transition,\n private stateContext: StateDeclaration,\n private registeredHook: RegisteredHook,\n private options: TransitionHookOptions) {\n this.options = defaults(options, defaultOptions);\n this.type = registeredHook.eventType;\n }\n\n private isSuperseded = () =>\n this.type.hookPhase === TransitionHookPhase.RUN && !this.options.transition.isActive();\n\n logError(err): any {\n this.transition.router.stateService.defaultErrorHandler()(err);\n }\n\n invokeHook(): Promise | void {\n const hook = this.registeredHook;\n if (hook._deregistered) return;\n\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n const options = this.options;\n trace.traceHookInvocation(this, this.transition, options);\n\n const invokeCallback = () =>\n hook.callback.call(options.bind, this.transition, this.stateContext);\n\n const normalizeErr = err =>\n Rejection.normalize(err).toPromise();\n\n const handleError = err =>\n hook.eventType.getErrorHandler(this)(err);\n\n const handleResult = result =>\n hook.eventType.getResultHandler(this)(result);\n\n try {\n const result = invokeCallback();\n\n if (!this.type.synchronous && isPromise(result)) {\n return result.catch(normalizeErr)\n .then(handleResult, handleError);\n } else {\n return handleResult(result);\n }\n } catch (err) {\n // If callback throws (synchronously)\n return handleError(Rejection.normalize(err));\n } finally {\n if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n hook.deregister();\n }\n }\n }\n\n /**\n * This method handles the return value of a Transition Hook.\n *\n * A hook can return false (cancel), a TargetState (redirect),\n * or a promise (which may later resolve to false or a redirect)\n *\n * This also handles \"transition superseded\" -- when a new transition\n * was started while the hook was still running\n */\n handleHookResult(result: HookResult): Promise {\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n // Hook returned a promise\n if (isPromise(result)) {\n // Wait for the promise, then reprocess with the resulting value\n return result.then(val => this.handleHookResult(val));\n }\n\n trace.traceHookResult(result, this.transition, this.options);\n\n // Hook returned false\n if (result === false) {\n // Abort this Transition\n return Rejection.aborted('Hook aborted transition').toPromise();\n }\n\n const isTargetState = is(TargetState);\n // hook returned a TargetState\n if (isTargetState(result)) {\n // Halt the current Transition and redirect (a new Transition) to the TargetState.\n return Rejection.redirected(result).toPromise();\n }\n }\n\n\n /**\n * Return a Rejection promise if the transition is no longer current due\n * to a stopped router (disposed), or a new transition has started and superseded this one.\n */\n private getNotCurrentRejection() {\n const router = this.transition.router;\n\n // The router is stopped\n if (router._disposed) {\n return Rejection.aborted(`UIRouter instance #${router.$id} has been stopped (disposed)`).toPromise();\n }\n\n if (this.transition._aborted) {\n return Rejection.aborted().toPromise();\n }\n\n // This transition is no longer current.\n // Another transition started while this hook was still running.\n if (this.isSuperseded()) {\n // Abort this transition\n return Rejection.superseded(this.options.current()).toPromise();\n }\n }\n\n toString() {\n const { options, registeredHook } = this;\n const event = parse('traceData.hookType')(options) || 'internal',\n context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown',\n name = fnToString(registeredHook.callback);\n return `${event} context: ${context}, ${maxLength(200, name)}`;\n }\n\n}\n", - "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { extend, removeFrom, tail, values, identity, map } from '../common/common';\nimport { isString, isFunction } from '../common/predicates';\nimport { PathNode } from '../path/pathNode';\nimport {\n TransitionStateHookFn, TransitionHookFn, TransitionHookPhase, TransitionHookScope, IHookRegistry, PathType,\n} from './interface'; // has or is using\n\nimport {\n HookRegOptions, HookMatchCriteria, TreeChanges,\n HookMatchCriterion, IMatchingNodes, HookFn,\n} from './interface';\nimport { Glob } from '../common/glob';\nimport { StateObject } from '../state/stateObject';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionService } from './transitionService';\n\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @hidden\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state: StateObject, criterion: HookMatchCriterion) {\n const toMatch = isString(criterion) ? [criterion] : criterion;\n\n function matchGlobs(_state: StateObject) {\n const globStrings = toMatch;\n for (let i = 0; i < globStrings.length; i++) {\n const glob = new Glob(globStrings[i]);\n\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n\n const matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state);\n}\n\n/**\n * @internalapi\n * The registration data for a registered transition hook\n */\nexport class RegisteredHook {\n priority: number;\n bind: any;\n invokeCount = 0;\n invokeLimit: number;\n _deregistered = false;\n\n constructor(public tranSvc: TransitionService,\n public eventType: TransitionEventType,\n public callback: HookFn,\n public matchCriteria: HookMatchCriteria,\n public removeHookFromRegistry: (hook: RegisteredHook) => void,\n options: HookRegOptions = {} as any) {\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n private _matchingNodes(nodes: PathNode[], criterion: HookMatchCriterion): PathNode[] {\n if (criterion === true) return nodes;\n const matching = nodes.filter(node => matchState(node.state, criterion));\n return matching.length ? matching : null;\n }\n\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n private _getDefaultMatchCriteria(): HookMatchCriteria {\n return map(this.tranSvc._pluginapi._getPathTypes(), () => true);\n }\n\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n private _getMatchingNodes(treeChanges: TreeChanges): IMatchingNodes {\n const criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n const paths: PathType[] = values(this.tranSvc._pluginapi._getPathTypes());\n\n return paths.reduce((mn: IMatchingNodes, pathtype: PathType) => {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n const isStateHook = pathtype.scope === TransitionHookScope.STATE;\n const path = treeChanges[pathtype.name] || [];\n const nodes: PathNode[] = isStateHook ? path : [tail(path)];\n\n mn[pathtype.name] = this._matchingNodes(nodes, criteria[pathtype.name]);\n return mn;\n }, {} as IMatchingNodes);\n }\n\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n matches(treeChanges: TreeChanges): IMatchingNodes {\n const matches = this._getMatchingNodes(treeChanges);\n\n // Check if all the criteria matched the TreeChanges object\n const allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n }\n\n deregister() {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n }\n}\n\n/** @hidden Return a registration function of the requested type. */\nexport function makeEvent(registry: IHookRegistry, transitionService: TransitionService, eventType: TransitionEventType) {\n // Create the object which holds the registered transition hooks.\n const _registeredHooks = registry._registeredHooks = (registry._registeredHooks || {});\n const hooks = _registeredHooks[eventType.name] = [];\n const removeHookFn: (hook: RegisteredHook) => void = removeFrom(hooks);\n\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n\n function hookRegistrationFn(matchObject, callback, options = {}) {\n const registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n\n return hookRegistrationFn;\n}\n", + "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { isString, isFunction, Glob, extend, removeFrom, tail, values, identity, mapObj } from '../common';\nimport { PathNode } from '../path/pathNode';\nimport {\n TransitionStateHookFn, TransitionHookFn, TransitionHookPhase, // has or is using\n TransitionHookScope, IHookRegistry, PathType,\n} from './interface';\n\nimport { HookRegOptions, HookMatchCriteria, TreeChanges, HookMatchCriterion, IMatchingNodes, HookFn } from './interface';\nimport { StateObject } from '../state/stateObject';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionService } from './transitionService';\n\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @hidden\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state: StateObject, criterion: HookMatchCriterion) {\n const toMatch = isString(criterion) ? [criterion] : criterion;\n\n function matchGlobs(_state: StateObject) {\n const globStrings = toMatch;\n for (let i = 0; i < globStrings.length; i++) {\n const glob = new Glob(globStrings[i]);\n\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n\n const matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state);\n}\n\n/**\n * @internalapi\n * The registration data for a registered transition hook\n */\nexport class RegisteredHook {\n priority: number;\n bind: any;\n invokeCount = 0;\n invokeLimit: number;\n _deregistered = false;\n\n constructor(public tranSvc: TransitionService,\n public eventType: TransitionEventType,\n public callback: HookFn,\n public matchCriteria: HookMatchCriteria,\n public removeHookFromRegistry: (hook: RegisteredHook) => void,\n options: HookRegOptions = {} as any) {\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n private _matchingNodes(nodes: PathNode[], criterion: HookMatchCriterion): PathNode[] {\n if (criterion === true) return nodes;\n const matching = nodes.filter(node => matchState(node.state, criterion));\n return matching.length ? matching : null;\n }\n\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n private _getDefaultMatchCriteria(): HookMatchCriteria {\n return mapObj(this.tranSvc._pluginapi._getPathTypes(), () => true);\n }\n\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n private _getMatchingNodes(treeChanges: TreeChanges): IMatchingNodes {\n const criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n const paths: PathType[] = values(this.tranSvc._pluginapi._getPathTypes());\n\n return paths.reduce((mn: IMatchingNodes, pathtype: PathType) => {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n const isStateHook = pathtype.scope === TransitionHookScope.STATE;\n const path = treeChanges[pathtype.name] || [];\n const nodes: PathNode[] = isStateHook ? path : [tail(path)];\n\n mn[pathtype.name] = this._matchingNodes(nodes, criteria[pathtype.name]);\n return mn;\n }, {} as IMatchingNodes);\n }\n\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n matches(treeChanges: TreeChanges): IMatchingNodes {\n const matches = this._getMatchingNodes(treeChanges);\n\n // Check if all the criteria matched the TreeChanges object\n const allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n }\n\n deregister() {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n }\n}\n\n/** @hidden Return a registration function of the requested type. */\nexport function makeEvent(registry: IHookRegistry, transitionService: TransitionService, eventType: TransitionEventType) {\n // Create the object which holds the registered transition hooks.\n const _registeredHooks = registry._registeredHooks = (registry._registeredHooks || {});\n const hooks = _registeredHooks[eventType.name] = [];\n const removeHookFn: (hook: RegisteredHook) => void = removeFrom(hooks);\n\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n\n function hookRegistrationFn(matchObject, callback, options = {}) {\n const registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n\n return hookRegistrationFn;\n}\n", "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n\nimport { extend, tail, assertPredicate, unnestR, identity } from '../common/common';\nimport { isArray } from '../common/predicates';\n\nimport {\n TransitionOptions, TransitionHookOptions, IHookRegistry, TreeChanges, IMatchingNodes,\n TransitionHookPhase, TransitionHookScope,\n} from './interface';\n\nimport { Transition } from './transition';\nimport { TransitionHook } from './transitionHook';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TransitionService } from './transitionService';\nimport { TransitionEventType } from './transitionEventType';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * This class returns applicable TransitionHooks for a specific Transition instance.\n *\n * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n * myTransition.onEnter(...). The HookBuilder finds matching RegisteredHooks (where the match criteria is\n * determined by the type of hook)\n *\n * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n *\n * The HookBuilder constructor is given the $transitions service and a Transition instance. Thus, a HookBuilder\n * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n * in the Transition class, so we must also provide the Transition's _treeChanges)\n *\n */\nexport class HookBuilder {\n constructor(private transition: Transition) { }\n\n buildHooksForPhase(phase: TransitionHookPhase): TransitionHook[] {\n const $transitions = this.transition.router.transitionService;\n return $transitions._pluginapi._getEvents(phase)\n .map(type => this.buildHooks(type))\n .reduce(unnestR, [])\n .filter(identity);\n }\n\n /**\n * Returns an array of newly built TransitionHook objects.\n *\n * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n * - For each of the [[PathNode]]s, creates a TransitionHook\n *\n * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n */\n buildHooks(hookType: TransitionEventType): TransitionHook[] {\n const transition = this.transition;\n const treeChanges = transition.treeChanges();\n\n // Find all the matching registered hooks for a given hook type\n const matchingHooks = this.getMatchingHooks(hookType, treeChanges);\n if (!matchingHooks) return [];\n\n const baseHookOptions = {\n transition: transition,\n current: transition.options().current,\n };\n\n const makeTransitionHooks = (hook: RegisteredHook) => {\n // Fetch the Nodes that caused this hook to match.\n const matches: IMatchingNodes = hook.matches(treeChanges);\n // Select the PathNode[] that will be used as TransitionHook context objects\n const matchingNodes: PathNode[] = matches[hookType.criteriaMatchPath.name];\n\n // Return an array of HookTuples\n return matchingNodes.map(node => {\n const _options = extend({\n bind: hook.bind,\n traceData: { hookType: hookType.name, context: node },\n }, baseHookOptions);\n\n const state = hookType.criteriaMatchPath.scope === TransitionHookScope.STATE ? node.state.self : null;\n const transitionHook = new TransitionHook(transition, state, hook, _options);\n return { hook, node, transitionHook };\n });\n };\n\n return matchingHooks.map(makeTransitionHooks)\n .reduce(unnestR, [])\n .sort(tupleSort(hookType.reverseSort))\n .map(tuple => tuple.transitionHook);\n }\n\n /**\n * Finds all RegisteredHooks from:\n * - The Transition object instance hook registry\n * - The TransitionService ($transitions) global hook registry\n *\n * which matched:\n * - the eventType\n * - the matchCriteria (to, from, exiting, retained, entering)\n *\n * @returns an array of matched [[RegisteredHook]]s\n */\n public getMatchingHooks(hookType: TransitionEventType, treeChanges: TreeChanges): RegisteredHook[] {\n const isCreate = hookType.hookPhase === TransitionHookPhase.CREATE;\n\n // Instance and Global hook registries\n const $transitions = this.transition.router.transitionService;\n const registries = isCreate ? [ $transitions ] : [ this.transition, $transitions ];\n\n return registries.map((reg: IHookRegistry) => reg.getHooks(hookType.name)) // Get named hooks from registries\n .filter(assertPredicate(isArray, `broken event named: ${hookType.name}`)) // Sanity check\n .reduce(unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n .filter(hook => hook.matches(treeChanges)); // Only those satisfying matchCriteria\n }\n}\n\ninterface HookTuple { hook: RegisteredHook, node: PathNode, transitionHook: TransitionHook }\n\n/**\n * A factory for a sort function for HookTuples.\n *\n * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n * the EventHook priority.\n *\n * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n * @returns a tuple sort function\n */\nfunction tupleSort(reverseDepthSort = false) {\n return function nodeDepthThenPriority(l: HookTuple, r: HookTuple): number {\n const factor = reverseDepthSort ? -1 : 1;\n const depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n };\n}\n", "/**\n * @coreapi\n * @module params\n */\n/** */\nimport { extend, filter, map } from '../common/common';\nimport { isArray, isDefined } from '../common/predicates';\nimport { ParamTypeDefinition } from './interface';\n\n/**\n * An internal class which implements [[ParamTypeDefinition]].\n *\n * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n * When a param type definition is registered, an instance of this class is created internally.\n *\n * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n *\n * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n *\n * #### Example:\n * ```js\n * var paramTypeDef = {\n * decode: function(val) { return parseInt(val, 10); },\n * encode: function(val) { return val && val.toString(); },\n * equals: function(a, b) { return this.is(a) && a === b; },\n * is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n * pattern: /\\d+/\n * }\n *\n * var paramType = new ParamType(paramTypeDef);\n * ```\n * @internalapi\n */\nexport class ParamType implements ParamTypeDefinition {\n /** @inheritdoc */\n pattern: RegExp = /.*/;\n /** The name/id of the parameter type */\n name: string;\n /** @inheritdoc */\n raw: boolean;\n /** @inheritdoc */\n dynamic: boolean;\n /** @inheritdoc */\n inherit = true;\n\n /**\n * @param def A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `ParamType`'s public interface.\n * @returns a new ParamType object\n */\n constructor(def: ParamTypeDefinition) {\n extend(this, def);\n }\n\n\n // consider these four methods to be \"abstract methods\" that should be overridden\n /** @inheritdoc */\n is(val: any, key?: string): boolean { return true; }\n /** @inheritdoc */\n encode(val: any, key?: string): (string|string[]) { return val; }\n /** @inheritdoc */\n decode(val: string, key?: string): any { return val; }\n /** @inheritdoc */\n equals(a: any, b: any): boolean { return a == b; } // tslint:disable-line:triple-equals\n\n\n $subPattern() {\n const sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n }\n\n toString() {\n return `{ParamType:${this.name}}`;\n }\n\n /** Given an encoded string, or a decoded object, returns a decoded object */\n $normalize(val: any) {\n return this.is(val) ? val : this.decode(val);\n }\n\n /**\n * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\n $asArray(mode: (boolean|'auto'), isSearch: boolean) {\n if (!mode) return this;\n if (mode === 'auto' && !isSearch) throw new Error(\"'auto' array mode is for query parameters only\");\n return new ( ArrayType)(this, mode);\n }\n}\n\n/**\n * Wraps up a `ParamType` object to handle array values.\n * @internalapi\n */\nfunction ArrayType(type: ParamType, mode: (boolean|'auto')) {\n // Wrap non-array value as array\n function arrayWrap(val: any): any[] {\n return isArray(val) ? val : (isDefined(val) ? [ val ] : []);\n }\n\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val: any) {\n switch (val.length) {\n case 0: return undefined;\n case 1: return mode === 'auto' ? val[0] : val;\n default: return val;\n }\n }\n\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback: (x: any) => any, allTruthyMode?: boolean) {\n return function handleArray(val: any) {\n if (isArray(val) && val.length === 0) return val;\n const arr = arrayWrap(val);\n const result = map(arr, callback);\n return (allTruthyMode === true) ? filter(result, x => !x).length === 0 : arrayUnwrap(result);\n };\n }\n\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback: (l: any, r: any) => boolean) {\n return function handleArray(val1: any, val2: any) {\n const left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length) return false;\n for (let i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i])) return false;\n }\n return true;\n };\n }\n\n ['encode', 'decode', 'equals', '$normalize'].forEach(name => {\n const paramTypeFn = type[name].bind(type);\n const wrapperFn: Function = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n this[name] = wrapperFn(paramTypeFn);\n });\n\n extend(this, {\n dynamic: type.dynamic,\n name: type.name,\n pattern: type.pattern,\n inherit: type.inherit,\n is: arrayHandler(type.is.bind(type), true),\n $arrayMode: mode,\n });\n}\n", "/**\n * @coreapi\n * @module params\n */ /** for typedoc */\nimport { extend, filter, map, allTrueR } from '../common/common';\nimport { prop } from '../common/hof';\nimport { isInjectable, isDefined, isString, isArray, isUndefined } from '../common/predicates';\nimport { RawParams, ParamDeclaration } from '../params/interface';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nimport { ParamTypes } from './paramTypes';\nimport { UrlMatcherFactory } from '../url/urlMatcherFactory';\n\n/** @hidden */\nconst hasOwn = Object.prototype.hasOwnProperty;\n\n/** @hidden */\nconst isShorthand = (cfg: ParamDeclaration) =>\n ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n\n/** @internalapi */\nexport enum DefType {\n PATH,\n SEARCH,\n CONFIG,\n}\n\n/** @hidden */\nfunction unwrapShorthand(cfg: ParamDeclaration): ParamDeclaration {\n cfg = isShorthand(cfg) && { value: cfg } as any || cfg;\n\n getStaticDefaultValue['__cacheable'] = true;\n function getStaticDefaultValue() {\n return cfg.value;\n }\n\n return extend(cfg, {\n $$fn: isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue,\n });\n}\n\n/** @hidden */\nfunction getType(cfg: ParamDeclaration, urlType: ParamType, location: DefType, id: string, paramTypes: ParamTypes) {\n if (cfg.type && urlType && urlType.name !== 'string') throw new Error(`Param '${id}' has two type configurations.`);\n if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type as string)) return paramTypes.type(cfg.type as string);\n if (urlType) return urlType;\n if (!cfg.type) {\n const type = location === DefType.CONFIG ? 'any' :\n location === DefType.PATH ? 'path' :\n location === DefType.SEARCH ? 'query' : 'string';\n return paramTypes.type(type);\n }\n return cfg.type instanceof ParamType ? cfg.type : paramTypes.type(cfg.type as string);\n}\n\n/**\n * @internalapi\n * returns false, true, or the squash value to indicate the \"default parameter url squash policy\".\n */\nfunction getSquashPolicy(config: ParamDeclaration, isOptional: boolean, defaultPolicy: (boolean|string)) {\n const squash = config.squash;\n if (!isOptional || squash === false) return false;\n if (!isDefined(squash) || squash == null) return defaultPolicy;\n if (squash === true || isString(squash)) return squash;\n throw new Error(`Invalid squash policy: '${squash}'. Valid policies: false, true, or arbitrary string`);\n}\n\n/** @internalapi */\nfunction getReplace(config: ParamDeclaration, arrayMode: boolean, isOptional: boolean, squash: (string|boolean)) {\n const defaultPolicy = [\n { from: '', to: (isOptional || arrayMode ? undefined : '') },\n { from: null, to: (isOptional || arrayMode ? undefined : '') },\n ];\n\n const replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash)) replace.push({ from: squash, to: undefined });\n\n const configuredKeys = map(replace, prop('from'));\n return filter(defaultPolicy, item => configuredKeys.indexOf(item.from) === -1).concat(replace);\n}\n\n\n/** @internalapi */\nexport class Param {\n id: string;\n type: ParamType;\n location: DefType;\n isOptional: boolean;\n dynamic: boolean;\n raw: boolean;\n squash: (boolean|string);\n replace: [{ to: any, from: any }];\n inherit: boolean;\n array: boolean;\n config: any;\n /** Cache the default value if it is a static value */\n _defaultValueCache: {\n defaultValue: any,\n };\n\n static values(params: Param[], values: RawParams = {}): RawParams {\n const paramValues = {} as RawParams;\n for (const param of params) {\n paramValues[param.id] = param.value(values[param.id]);\n }\n return paramValues;\n }\n\n /**\n * Finds [[Param]] objects which have different param values\n *\n * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n *\n * @param params: The list of Param objects to filter\n * @param values1: The first set of parameter values\n * @param values2: the second set of parameter values\n *\n * @returns any Param objects whose values were different between values1 and values2\n */\n static changed(params: Param[], values1: RawParams = {}, values2: RawParams = {}): Param[] {\n return params.filter(param => !param.type.equals(values1[param.id], values2[param.id]));\n }\n\n /**\n * Checks if two param value objects are equal (for a set of [[Param]] objects)\n *\n * @param params The list of [[Param]] objects to check\n * @param values1 The first set of param values\n * @param values2 The second set of param values\n *\n * @returns true if the param values in values1 and values2 are equal\n */\n static equals(params: Param[], values1 = {}, values2 = {}): boolean {\n return Param.changed(params, values1, values2).length === 0;\n }\n\n /** Returns true if a the parameter values are valid, according to the Param definitions */\n static validates(params: Param[], values: RawParams = {}): boolean {\n return params.map(param => param.validates(values[param.id])).reduce(allTrueR, true);\n }\n\n constructor(id: string, type: ParamType, config: ParamDeclaration, location: DefType, urlMatcherFactory: UrlMatcherFactory) {\n config = unwrapShorthand(config);\n type = getType(config, type, location, id, urlMatcherFactory.paramTypes);\n const arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === DefType.SEARCH) : type;\n const isOptional = config.value !== undefined || location === DefType.SEARCH;\n const dynamic = isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n const raw = isDefined(config.raw) ? !!config.raw : !!type.raw;\n const squash = getSquashPolicy(config, isOptional, urlMatcherFactory.defaultSquashPolicy());\n const replace = getReplace(config, arrayMode, isOptional, squash);\n const inherit = isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n const arrayDefaults = { array: (location === DefType.SEARCH ? 'auto' : false) };\n const arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n\n extend(this, { id, type, location, isOptional, dynamic, raw, squash, replace, inherit, array: arrayMode, config });\n }\n\n isDefaultValue(value: any): boolean {\n return this.isOptional && this.type.equals(this.value(), value);\n }\n\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n value(value?: any): any {\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n const getDefaultValue = () => {\n if (this._defaultValueCache) return this._defaultValueCache.defaultValue;\n\n if (!services.$injector) throw new Error('Injectable functions cannot be called at configuration time');\n\n const defaultValue = services.$injector.invoke(this.config.$$fn);\n\n if (defaultValue !== null && defaultValue !== undefined && !this.type.is(defaultValue))\n throw new Error(`Default value (${defaultValue}) for parameter '${this.id}' is not an instance of ParamType (${this.type.name})`);\n\n if (this.config.$$fn['__cacheable']) {\n this._defaultValueCache = { defaultValue };\n }\n\n return defaultValue;\n };\n\n const replaceSpecialValues = (val: any) => {\n for (const tuple of this.replace) {\n if (tuple.from === val) return tuple.to;\n }\n return val;\n };\n\n value = replaceSpecialValues(value);\n\n return isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n }\n\n isSearch(): boolean {\n return this.location === DefType.SEARCH;\n }\n\n validates(value: any): boolean {\n // There was no parameter value, but the param is optional\n if ((isUndefined(value) || value === null) && this.isOptional) return true;\n\n // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n const normalized = this.type.$normalize(value);\n if (!this.type.is(normalized)) return false;\n\n // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n const encoded = this.type.encode(normalized);\n return !(isString(encoded) && !this.type.pattern.exec( encoded));\n }\n\n toString() {\n return `{Param:${this.id} ${this.type} squash: '${this.squash}' optional: ${this.isOptional}}`;\n }\n}\n", - "/** @module path */ /** for typedoc */\nimport { extend, applyPairs, find, allTrueR, pairs, arrayTuples } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\n\n/**\n * @internalapi\n *\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nexport class PathNode {\n /** The state being entered, exited, or retained */\n public state: StateObject;\n /** The parameters declared on the state */\n public paramSchema: Param[];\n /** The parameter values that belong to the state */\n public paramValues: { [key: string]: any };\n /** The individual (stateful) resolvable objects that belong to the state */\n public resolvables: Resolvable[];\n /** The state's declared view configuration objects */\n public views: ViewConfig[];\n\n /** Returns a clone of the PathNode */\n static clone(node: PathNode) {\n return new PathNode(node);\n }\n\n /** Creates a copy of a PathNode */\n constructor(node: PathNode);\n /** Creates a new (empty) PathNode for a State */\n constructor(state: StateObject);\n constructor(stateOrNode: any) {\n if (stateOrNode instanceof PathNode) {\n const node: PathNode = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n } else {\n const state: StateObject = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(res => res.clone());\n }\n }\n\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n applyRawParams(params: RawParams): PathNode {\n const getParamVal = (paramDef: Param) => [ paramDef.id, paramDef.value(params[paramDef.id]) ];\n this.paramValues = this.paramSchema.reduce((memo, pDef) => applyPairs(memo, getParamVal(pDef)), {});\n return this;\n }\n\n /** Gets a specific [[Param]] metadata that belongs to the node */\n parameter(name: string): Param {\n return find(this.paramSchema, propEq('id', name));\n }\n\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n equals(node: PathNode, paramsFn?: GetParamsFn): boolean {\n const diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n }\n\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n diff(node: PathNode, paramsFn?: GetParamsFn): Param[] | false {\n if (this.state !== node.state) return false;\n\n const params: Param[] = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n }\n}\n\n/** @hidden */\nexport type GetParamsFn = (pathNode: PathNode) => Param[];\n", - "/** @module path */ /** for typedoc */\n\nimport {\n extend, find, pick, omit, tail, mergeR, values, unnestR, Predicate, inArray, arrayTuples,\n} from '../common/common';\nimport { prop, propEq, not } from '../common/hof';\n\nimport { RawParams } from '../params/interface';\nimport { TreeChanges } from '../transition/interface';\nimport { ViewConfig } from '../view/interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { GetParamsFn, PathNode } from './pathNode';\nimport { ViewService } from '../view/view';\nimport { Param } from '../params/param';\nimport { StateRegistry } from '../state';\n\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nexport class PathUtils {\n /** Given a PathNode[], create an TargetState */\n static makeTargetState(registry: StateRegistry, path: PathNode[]): TargetState {\n const state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n }\n\n static buildPath(targetState: TargetState) {\n const toParams = targetState.params();\n return targetState.$state().path.map(state => new PathNode(state).applyRawParams(toParams));\n }\n\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n static buildToPath(fromPath: PathNode[], targetState: TargetState): PathNode[] {\n const toPath: PathNode[] = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n }\n\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n static applyViewConfigs($view: ViewService, path: PathNode[], states: StateObject[]) {\n // Only apply the viewConfigs to the nodes for the given states\n path.filter(node => inArray(states, node.state)).forEach(node => {\n const viewDecls: _ViewDeclaration[] = values(node.state.views || {});\n const subPath = PathUtils.subPath(path, n => n === node);\n const viewConfigs: ViewConfig[][] = viewDecls.map(view => $view.createViewConfig(subPath, view));\n node.views = viewConfigs.reduce(unnestR, []);\n });\n }\n\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n static inheritParams(fromPath: PathNode[], toPath: PathNode[], toKeys: string[] = []): PathNode[] {\n function nodeParamVals(path: PathNode[], state: StateObject): RawParams {\n const node: PathNode = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n\n const noInherit = fromPath.map(node => node.paramSchema)\n .reduce(unnestR, [])\n .filter(param => !param.inherit)\n .map(prop('id'));\n\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode: PathNode): PathNode {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n let toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n const incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n const fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n const ownParamVals: RawParams = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n }\n\n static nonDynamicParams = (node: PathNode): Param[] =>\n node.state.parameters({ inherit: false })\n .filter(param => !param.dynamic);\n\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n static treeChanges(fromPath: PathNode[], toPath: PathNode[], reloadState: StateObject): TreeChanges {\n const max = Math.min(fromPath.length, toPath.length);\n let keep = 0;\n\n const nodesMatch = (node1: PathNode, node2: PathNode) =>\n node1.equals(node2, PathUtils.nonDynamicParams);\n\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode: PathNode, idx: number): PathNode {\n const cloned = PathNode.clone(retainedNode);\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n\n let from: PathNode[], retained: PathNode[], exiting: PathNode[], entering: PathNode[], to: PathNode[];\n\n from = fromPath;\n retained = from.slice(0, keep).map(applyToParams); // applyToParams to update dynamic params\n exiting = from.slice(keep);\n entering = toPath.slice(keep);\n to = (retained).concat(entering);\n\n return { from, to, retained, exiting, entering };\n }\n\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n static matching(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): PathNode[] {\n let done = false;\n const tuples: PathNode[][] = arrayTuples(pathA, pathB);\n return tuples.reduce((matching, [nodeA, nodeB]) => {\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n }\n\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n static equals(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): boolean {\n return pathA.length === pathB.length &&\n PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n }\n\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n static subPath(path: PathNode[], predicate: Predicate): PathNode[] {\n const node = find(path, predicate);\n const elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n }\n\n /** Gets the raw parameter values from a path */\n static paramValues = (path: PathNode[]) =>\n path.reduce((acc, node) => extend(acc, node.paramValues), {});\n}\n", - "/**\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { extend, equals, inArray, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { ResolvePolicy, ResolvableLiteral, resolvePolicies } from './interface';\n\nimport { ResolveContext } from './resolveContext';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { isNullOrUndefined } from '../common/predicates';\n\n\n// TODO: explicitly make this user configurable\nexport let defaultResolvePolicy: ResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nexport class Resolvable implements ResolvableLiteral {\n token: any;\n policy: ResolvePolicy;\n resolveFn: Function;\n deps: any[];\n\n data: any;\n resolved = false;\n promise: Promise = undefined;\n\n static fromData = (token: any, data: any) =>\n new Resolvable(token, () => data, null, null, data);\n\n /** This constructor creates a Resolvable copy */\n constructor(resolvable: Resolvable)\n\n /** This constructor creates a new Resolvable from the plain old [[ResolvableLiteral]] javascript object */\n constructor(resolvable: ResolvableLiteral)\n\n /**\n * This constructor creates a new `Resolvable`\n *\n * #### Example:\n * ```js\n * var resolvable1 = new Resolvable('mytoken', http => http.get('foo.json').toPromise(), [Http]);\n *\n * var resolvable2 = new Resolvable(UserService, dep => new UserService(dep.data), [SomeDependency]);\n *\n * var resolvable1Clone = new Resolvable(resolvable1);\n * ```\n *\n * @param token The new resolvable's injection token, such as `\"userList\"` (a string) or `UserService` (a class).\n * When this token is used during injection, the resolved value will be injected.\n * @param resolveFn The function that returns the resolved value, or a promise for the resolved value\n * @param deps An array of dependencies, which will be injected into the `resolveFn`\n * @param policy the [[ResolvePolicy]] defines when and how the Resolvable is processed\n * @param data Pre-resolved data. If the resolve value is already known, it may be provided here.\n */\n constructor(token: any, resolveFn: Function, deps?: any[], policy?: ResolvePolicy, data?: any)\n constructor(arg1: any, resolveFn?: Function, deps?: any[], policy?: ResolvePolicy, data?: any) {\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n } else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1)) throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn)) throw new Error('new Resolvable(): resolveFn argument must be a function');\n\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n } else if (isObject(arg1) && arg1.token && isFunction(arg1.resolveFn)) {\n const literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n\n getPolicy(state: StateObject): ResolvePolicy {\n const thisPolicy = this.policy || {};\n const statePolicy = state && state.resolvePolicy || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n }\n\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n resolve(resolveContext: ResolveContext, trans?: Transition) {\n const $q = services.$q;\n\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n const getResolvableDependencies = () =>\n $q.all(resolveContext.getDependencies(this).map(resolvable =>\n resolvable.get(resolveContext, trans))) as Promise;\n\n // Invokes the resolve function passing the resolved dependencies as arguments\n const invokeResolveFn = (resolvedDeps: any[]) =>\n this.resolveFn.apply(null, resolvedDeps);\n\n /**\n * For RXWAIT policy:\n *\n * Given an observable returned from a resolve function:\n * - enables .cache() mode (this allows multicast subscribers)\n * - then calls toPromise() (this triggers subscribe() and thus fetches)\n * - Waits for the promise, then return the cached observable (not the first emitted value).\n */\n const waitForRx = (observable$: any) => {\n const cached = observable$.cache(1);\n return cached.take(1).toPromise().then(() => cached);\n };\n\n // If the resolve policy is RXWAIT, wait for the observable to emit something. otherwise pass through.\n const node: PathNode = resolveContext.findNode(this);\n const state: StateObject = node && node.state;\n const maybeWaitForRx = this.getPolicy(state).async === 'RXWAIT' ? waitForRx : identity;\n\n // After the final value has been resolved, update the state of the Resolvable\n const applyResolvedValue = (resolvedValue: any) => {\n this.data = resolvedValue;\n this.resolved = true;\n trace.traceResolvableResolved(this, trans);\n return this.data;\n };\n\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return this.promise = $q.when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(maybeWaitForRx)\n .then(applyResolvedValue);\n }\n\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n get(resolveContext: ResolveContext, trans?: Transition): Promise {\n return this.promise || this.resolve(resolveContext, trans);\n }\n\n toString() {\n return `Resolvable(token: ${stringify(this.token)}, requires: [${this.deps.map(stringify)}])`;\n }\n\n clone(): Resolvable {\n return new Resolvable(this);\n }\n}\n", + "/** @module path */ /** for typedoc */\nimport { extend, applyPairs, find, allTrueR, pairs, arrayTuples } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\n\n/**\n * @internalapi\n *\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nexport class PathNode {\n /** The state being entered, exited, or retained */\n public state: StateObject;\n /** The parameters declared on the state */\n public paramSchema: Param[];\n /** The parameter values that belong to the state */\n public paramValues: { [key: string]: any };\n /** The individual (stateful) resolvable objects that belong to the state */\n public resolvables: Resolvable[];\n /** The state's declared view configuration objects */\n public views: ViewConfig[];\n\n /**\n * Returns a clone of the PathNode\n * @deprecated use instance method `node.clone()`\n */\n static clone = (node: PathNode) => node.clone();\n\n /** Creates a copy of a PathNode */\n constructor(node: PathNode);\n /** Creates a new (empty) PathNode for a State */\n constructor(state: StateObject);\n constructor(stateOrNode: any) {\n if (stateOrNode instanceof PathNode) {\n const node: PathNode = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n } else {\n const state: StateObject = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(res => res.clone());\n }\n }\n\n clone() {\n return new PathNode(this);\n }\n\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n applyRawParams(params: RawParams): PathNode {\n const getParamVal = (paramDef: Param) => [ paramDef.id, paramDef.value(params[paramDef.id]) ];\n this.paramValues = this.paramSchema.reduce((memo, pDef) => applyPairs(memo, getParamVal(pDef)), {});\n return this;\n }\n\n /** Gets a specific [[Param]] metadata that belongs to the node */\n parameter(name: string): Param {\n return find(this.paramSchema, propEq('id', name));\n }\n\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n equals(node: PathNode, paramsFn?: GetParamsFn): boolean {\n const diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n }\n\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n diff(node: PathNode, paramsFn?: GetParamsFn): Param[] | false {\n if (this.state !== node.state) return false;\n\n const params: Param[] = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n }\n}\n\n/** @hidden */\nexport type GetParamsFn = (pathNode: PathNode) => Param[];\n", + "/** @module path */ /** for typedoc */\n\nimport {\n extend, find, pick, omit, tail, mergeR, values, unnestR, Predicate, inArray, arrayTuples,\n} from '../common/common';\nimport { prop, propEq, not } from '../common/hof';\n\nimport { RawParams } from '../params/interface';\nimport { TreeChanges } from '../transition/interface';\nimport { ViewConfig } from '../view/interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { GetParamsFn, PathNode } from './pathNode';\nimport { ViewService } from '../view/view';\nimport { Param } from '../params/param';\nimport { StateRegistry } from '../state';\n\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nexport class PathUtils {\n /** Given a PathNode[], create an TargetState */\n static makeTargetState(registry: StateRegistry, path: PathNode[]): TargetState {\n const state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n }\n\n static buildPath(targetState: TargetState) {\n const toParams = targetState.params();\n return targetState.$state().path.map(state => new PathNode(state).applyRawParams(toParams));\n }\n\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n static buildToPath(fromPath: PathNode[], targetState: TargetState): PathNode[] {\n const toPath: PathNode[] = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n }\n\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n static applyViewConfigs($view: ViewService, path: PathNode[], states: StateObject[]) {\n // Only apply the viewConfigs to the nodes for the given states\n path.filter(node => inArray(states, node.state)).forEach(node => {\n const viewDecls: _ViewDeclaration[] = values(node.state.views || {});\n const subPath = PathUtils.subPath(path, n => n === node);\n const viewConfigs: ViewConfig[][] = viewDecls.map(view => $view.createViewConfig(subPath, view));\n node.views = viewConfigs.reduce(unnestR, []);\n });\n }\n\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n static inheritParams(fromPath: PathNode[], toPath: PathNode[], toKeys: string[] = []): PathNode[] {\n function nodeParamVals(path: PathNode[], state: StateObject): RawParams {\n const node: PathNode = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n\n const noInherit = fromPath.map(node => node.paramSchema)\n .reduce(unnestR, [])\n .filter(param => !param.inherit)\n .map(prop('id'));\n\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode: PathNode): PathNode {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n let toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n const incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n const fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n const ownParamVals: RawParams = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n }\n\n static nonDynamicParams = (node: PathNode): Param[] =>\n node.state.parameters({ inherit: false })\n .filter(param => !param.dynamic);\n\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n static treeChanges(fromPath: PathNode[], toPath: PathNode[], reloadState: StateObject): TreeChanges {\n const max = Math.min(fromPath.length, toPath.length);\n let keep = 0;\n\n const nodesMatch = (node1: PathNode, node2: PathNode) =>\n node1.equals(node2, PathUtils.nonDynamicParams);\n\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode: PathNode, idx: number): PathNode {\n const cloned = retainedNode.clone();\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n\n let from: PathNode[], retained: PathNode[], exiting: PathNode[], entering: PathNode[], to: PathNode[];\n\n from = fromPath;\n retained = from.slice(0, keep);\n exiting = from.slice(keep);\n\n // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n const retainedWithToParams = retained.map(applyToParams);\n entering = toPath.slice(keep);\n to = (retainedWithToParams).concat(entering);\n\n return { from, to, retained, retainedWithToParams, exiting, entering };\n }\n\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n static matching(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): PathNode[] {\n let done = false;\n const tuples: PathNode[][] = arrayTuples(pathA, pathB);\n return tuples.reduce((matching, [nodeA, nodeB]) => {\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n }\n\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n static equals(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): boolean {\n return pathA.length === pathB.length &&\n PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n }\n\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n static subPath(path: PathNode[], predicate: Predicate): PathNode[] {\n const node = find(path, predicate);\n const elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n }\n\n /** Gets the raw parameter values from a path */\n static paramValues = (path: PathNode[]) =>\n path.reduce((acc, node) => extend(acc, node.paramValues), {});\n}\n", + "/**\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { extend, equals, inArray, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { ResolvePolicy, ResolvableLiteral, resolvePolicies } from './interface';\n\nimport { ResolveContext } from './resolveContext';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { isNullOrUndefined } from '../common/predicates';\n\n\n// TODO: explicitly make this user configurable\nexport let defaultResolvePolicy: ResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nexport class Resolvable implements ResolvableLiteral {\n token: any;\n policy: ResolvePolicy;\n resolveFn: Function;\n deps: any[];\n\n data: any;\n resolved = false;\n promise: Promise = undefined;\n\n static fromData = (token: any, data: any) =>\n new Resolvable(token, () => data, null, null, data);\n\n /** This constructor creates a Resolvable copy */\n constructor(resolvable: Resolvable)\n\n /** This constructor creates a new Resolvable from the plain old [[ResolvableLiteral]] javascript object */\n constructor(resolvable: ResolvableLiteral)\n\n /**\n * This constructor creates a new `Resolvable`\n *\n * #### Example:\n * ```js\n * var resolvable1 = new Resolvable('mytoken', http => http.get('foo.json').toPromise(), [Http]);\n *\n * var resolvable2 = new Resolvable(UserService, dep => new UserService(dep.data), [SomeDependency]);\n *\n * var resolvable1Clone = new Resolvable(resolvable1);\n * ```\n *\n * @param token The new resolvable's injection token, such as `\"userList\"` (a string) or `UserService` (a class).\n * When this token is used during injection, the resolved value will be injected.\n * @param resolveFn The function that returns the resolved value, or a promise for the resolved value\n * @param deps An array of dependencies, which will be injected into the `resolveFn`\n * @param policy the [[ResolvePolicy]] defines when and how the Resolvable is processed\n * @param data Pre-resolved data. If the resolve value is already known, it may be provided here.\n */\n constructor(token: any, resolveFn: Function, deps?: any[], policy?: ResolvePolicy, data?: any)\n constructor(arg1: any, resolveFn?: Function, deps?: any[], policy?: ResolvePolicy, data?: any) {\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n } else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1)) throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn)) throw new Error('new Resolvable(): resolveFn argument must be a function');\n\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n } else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n const literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n\n getPolicy(state: StateObject): ResolvePolicy {\n const thisPolicy = this.policy || {};\n const statePolicy = state && state.resolvePolicy || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n }\n\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n resolve(resolveContext: ResolveContext, trans?: Transition) {\n const $q = services.$q;\n\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n const getResolvableDependencies = () =>\n $q.all(resolveContext.getDependencies(this).map(resolvable =>\n resolvable.get(resolveContext, trans))) as Promise;\n\n // Invokes the resolve function passing the resolved dependencies as arguments\n const invokeResolveFn = (resolvedDeps: any[]) =>\n this.resolveFn.apply(null, resolvedDeps);\n\n /**\n * For RXWAIT policy:\n *\n * Given an observable returned from a resolve function:\n * - enables .cache() mode (this allows multicast subscribers)\n * - then calls toPromise() (this triggers subscribe() and thus fetches)\n * - Waits for the promise, then return the cached observable (not the first emitted value).\n */\n const waitForRx = (observable$: any) => {\n const cached = observable$.cache(1);\n return cached.take(1).toPromise().then(() => cached);\n };\n\n // If the resolve policy is RXWAIT, wait for the observable to emit something. otherwise pass through.\n const node: PathNode = resolveContext.findNode(this);\n const state: StateObject = node && node.state;\n const maybeWaitForRx = this.getPolicy(state).async === 'RXWAIT' ? waitForRx : identity;\n\n // After the final value has been resolved, update the state of the Resolvable\n const applyResolvedValue = (resolvedValue: any) => {\n this.data = resolvedValue;\n this.resolved = true;\n this.resolveFn = null;\n trace.traceResolvableResolved(this, trans);\n return this.data;\n };\n\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return this.promise = $q.when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(maybeWaitForRx)\n .then(applyResolvedValue);\n }\n\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n get(resolveContext: ResolveContext, trans?: Transition): Promise {\n return this.promise || this.resolve(resolveContext, trans);\n }\n\n toString() {\n return `Resolvable(token: ${stringify(this.token)}, requires: [${this.deps.map(stringify)}])`;\n }\n\n clone(): Resolvable {\n return new Resolvable(this);\n }\n}\n", "/**\n * # The Resolve subsystem\n *\n * This subsystem is an asynchronous, hierarchical Dependency Injection system.\n *\n * Typically, resolve is configured on a state using a [[StateDeclaration.resolve]] declaration.\n *\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { Resolvable } from './resolvable';\n\n/**\n * An interface which is similar to an Angular 2 `Provider`\n */\nexport interface ProviderLike {\n provide: any,\n useClass?: any,\n useFactory?: Function,\n useValue?: any,\n useExisting?: any,\n deps?: any[]\n}\n\n/**\n * A plain object used to describe a [[Resolvable]]\n *\n * These objects may be used in the [[StateDeclaration.resolve]] array to declare\n * async data that the state or substates require.\n *\n * #### Example:\n * ```js\n *\n * var state = {\n * name: 'main',\n * resolve: [\n * { token: 'myData', deps: [MyDataApi], resolveFn: (myDataApi) => myDataApi.getData() },\n * ],\n * }\n * ```\n */\nexport interface ResolvableLiteral {\n /**\n * A Dependency Injection token\n *\n * This Resolvable's DI token.\n * The Resolvable will be injectable elsewhere using the token.\n */\n token: any;\n\n /**\n * A function which fetches the Resolvable's data\n *\n * A function which returns one of:\n *\n * - The resolved value (synchronously)\n * - A promise for the resolved value\n * - An Observable of the resolved value(s)\n *\n * This function will be provided the dependencies listed in [[deps]] as its arguments.\n * The resolve system will asynchronously fetch the dependencies before invoking this function.\n */\n resolveFn: Function;\n\n /**\n * Defines the Resolve Policy\n *\n * A policy that defines when to invoke the resolve,\n * and whether to wait for async and unwrap the data\n */\n policy?: ResolvePolicy;\n\n /**\n * The Dependency Injection tokens\n *\n * This is an array of Dependency Injection tokens for the dependencies of the [[resolveFn]].\n *\n * The DI tokens are references to other `Resolvables`, or to other\n * services from the native DI system.\n */\n deps?: any[];\n\n /** Pre-resolved data. */\n data?: any\n}\n\n/**\n * Defines how a resolve is processed during a transition\n *\n * This object is the [[StateDeclaration.resolvePolicy]] property.\n *\n * #### Example:\n * ```js\n * // Fetched when the resolve's state is being entered.\n * // Wait for the promise to resolve.\n * var policy1 = { when: \"LAZY\", async: \"WAIT\" }\n *\n * // Fetched when the Transition is starting.\n * // Do not wait for the returned promise to resolve.\n * // Inject the raw promise/value\n * var policy2 = { when: \"EAGER\", async: \"NOWAIT\" }\n * ```\n *\n * The policy for a given Resolvable is merged from three sources (highest priority first):\n *\n * - 1) Individual resolve definition\n * - 2) State definition\n * - 3) Global default\n *\n * #### Example:\n * ```js\n * // Wait for an Observable to emit one item.\n * // Since `wait` is not specified, it uses the `wait`\n * // policy defined on the state, or the global default\n * // if no `wait` policy is defined on the state\n * var myResolvablePolicy = { async: \"RXWAIT\" }\n * ```\n */\nexport interface ResolvePolicy {\n /**\n * Defines when a Resolvable is resolved (fetched) during a transition\n *\n * - `LAZY` (default)\n * - Resolved as the resolve's state is being entered\n * - `EAGER`\n * - Resolved as the transition is starting\n *\n * #### Example:\n * Resolves for `main` and `main.home` are fetched when each state is entered.\n * All of `main` resolves are processed before fetching `main.home` resolves.\n * ```js\n * var state = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { when: 'LAZY' }, // default\n * }\n *\n * var state = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { when: 'LAZY' }, // default\n * }\n * ```\n *\n * #### Example:\n * Resolves for `main` and `main.home` are fetched at the same time when the transition starts.\n * This happens earlier in the lifecycle than when states are entered.\n * All of the `main` and `main.home` resolves are fetched as soon as possible.\n * ```js\n * var mainState = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { when: 'EAGER' },\n * }\n *\n * var homeState = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { when: 'EAGER' },\n * }\n * ```\n */\n when?: PolicyWhen;\n\n /**\n * Determines the unwrapping behavior of asynchronous resolve values.\n *\n * - `WAIT` (default)\n * - If a promise is returned from the resolveFn, wait for the promise before proceeding\n * - The unwrapped value from the promise\n * - `NOWAIT`\n * - If a promise is returned from the resolve, do not wait for the promise.\n * - Any other value returned is wrapped in a promise.\n * - The promise will not be unwrapped.\n * - The promise itself will be provided when the resolve is injected or bound elsewhere.\n * - `RXWAIT`\n * - When an Observable is returned from the resolveFn, wait until the Observable emits at least one item.\n * - The Observable item will not be unwrapped.\n * - The Observable stream itself will be provided when the resolve is injected or bound elsewhere.\n *\n * #### Example:\n * The `Transition` will not wait for the resolve promise(s) from `main` to settle before continuing.\n * Resolves for `main` will be provided to components wrapped in a `Promise`.\n *\n * The `Transition` will wait for the `main.home` resolve promises.\n * Resolved values will be unwrapped before being provided to components.\n * ```js\n * var mainState = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { async: 'NOWAIT' },\n * }\n * var homeState = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { async: 'WAIT' }, // default\n * }\n * ```\n */\n async?: PolicyAsync;\n}\n\nexport type PolicyWhen = 'LAZY' | 'EAGER' ;\nexport type PolicyAsync = 'WAIT' | 'NOWAIT' | 'RXWAIT' ;\n\n/** @internalapi */\nexport let resolvePolicies = {\n when: {\n LAZY: 'LAZY',\n EAGER: 'EAGER',\n },\n async: {\n WAIT: 'WAIT',\n NOWAIT: 'NOWAIT',\n RXWAIT: 'RXWAIT',\n },\n};\n", "/** @module resolve */\n/** for typedoc */\nimport { find, tail, uniqR, unnestR, inArray } from '../common/common';\nimport { propEq, not } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services, $InjectorLike } from '../common/coreservices';\nimport { resolvePolicies, PolicyWhen, ResolvePolicy } from './interface';\nimport { PathNode } from '../path/pathNode';\nimport { Resolvable } from './resolvable';\nimport { StateObject } from '../state/stateObject';\nimport { PathUtils } from '../path/pathUtils';\nimport { stringify } from '../common/strings';\nimport { Transition } from '../transition/transition';\nimport { UIInjector } from '../interface';\nimport { isUndefined } from '../common';\n\nconst whens = resolvePolicies.when;\nconst ALL_WHENS = [whens.EAGER, whens.LAZY];\nconst EAGER_WHENS = [whens.EAGER];\n\n// tslint:disable-next-line:no-inferrable-types\nexport const NATIVE_INJECTOR_TOKEN: string = 'Native Injector';\n\n/**\n * Encapsulates Dependency Injection for a path of nodes\n *\n * UI-Router states are organized as a tree.\n * A nested state has a path of ancestors to the root of the tree.\n * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n *\n * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n */\nexport class ResolveContext {\n _injector: UIInjector;\n\n constructor(private _path: PathNode[]) { }\n\n /** Gets all the tokens found in the resolve context, de-duplicated */\n getTokens(): any[] {\n return this._path.reduce((acc, node) => acc.concat(node.resolvables.map(r => r.token)), []).reduce(uniqR, []);\n }\n\n /**\n * Gets the Resolvable that matches the token\n *\n * Gets the last Resolvable that matches the token in this context, or undefined.\n * Throws an error if it doesn't exist in the ResolveContext\n */\n getResolvable(token: any): Resolvable {\n const matching = this._path.map(node => node.resolvables)\n .reduce(unnestR, [])\n .filter((r: Resolvable) => r.token === token);\n return tail(matching);\n }\n\n /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n getPolicy(resolvable: Resolvable): ResolvePolicy {\n const node = this.findNode(resolvable);\n return resolvable.getPolicy(node.state);\n }\n\n /**\n * Returns a ResolveContext that includes a portion of this one\n *\n * Given a state, this method creates a new ResolveContext from this one.\n * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n *\n * #### Why\n *\n * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n * This method is used to create a narrower context when injecting ancestor nodes.\n *\n * @example\n * `let ABCD = new ResolveContext([A, B, C, D]);`\n *\n * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n * However, `B` should only be able to access resolvables from `A`, `B`.\n *\n * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n * `let AB = ABCD.subcontext(a)`\n */\n subContext(state: StateObject): ResolveContext {\n return new ResolveContext(PathUtils.subPath(this._path, node => node.state === state));\n }\n\n /**\n * Adds Resolvables to the node that matches the state\n *\n * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n * The resolvable is added to the node matching the `state` parameter.\n *\n * These new resolvables are not automatically fetched.\n * The calling code should either fetch them, fetch something that depends on them,\n * or rely on [[resolvePath]] being called when some state is being entered.\n *\n * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n *\n * @param newResolvables the new Resolvables\n * @param state Used to find the node to put the resolvable on\n */\n addResolvables(newResolvables: Resolvable[], state: StateObject) {\n const node = find(this._path, propEq('state', state));\n const keys = newResolvables.map(r => r.token);\n node.resolvables = node.resolvables.filter(r => keys.indexOf(r.token) === -1).concat(newResolvables);\n }\n\n /**\n * Returns a promise for an array of resolved path Element promises\n *\n * @param when\n * @param trans\n * @returns {Promise|any}\n */\n resolvePath(when: PolicyWhen = 'LAZY', trans?: Transition): Promise<{ token: any, value: any }[]> {\n // This option determines which 'when' policy Resolvables we are about to fetch.\n const whenOption: string = inArray(ALL_WHENS, when) ? when : 'LAZY';\n // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n const matchedWhens = whenOption === resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n\n // get the subpath to the state argument, if provided\n trace.traceResolvePath(this._path, when, trans);\n\n const matchesPolicy = (acceptedVals: string[], whenOrAsync: 'when'|'async') =>\n (resolvable: Resolvable) =>\n inArray(acceptedVals, this.getPolicy(resolvable)[whenOrAsync]);\n\n // Trigger all the (matching) Resolvables in the path\n // Reduce all the \"WAIT\" Resolvables into an array\n const promises: Promise[] = this._path.reduce((acc, node) => {\n const nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n const nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n const wait = nodeResolvables.filter(not(matchesPolicy(['NOWAIT'], 'async')));\n\n // For the matching Resolvables, start their async fetch process.\n const subContext = this.subContext(node.state);\n const getResult = (r: Resolvable) => r.get(subContext, trans)\n // Return a tuple that includes the Resolvable's token\n .then(value => ({ token: r.token, value: value }));\n nowait.forEach(getResult);\n return acc.concat(wait.map(getResult));\n }, []);\n\n // Wait for all the \"WAIT\" resolvables\n return services.$q.all(promises);\n }\n\n injector(): UIInjector {\n return this._injector || (this._injector = new UIInjectorImpl(this));\n }\n\n findNode(resolvable: Resolvable): PathNode {\n return find(this._path, (node: PathNode) => inArray(node.resolvables, resolvable));\n }\n\n /**\n * Gets the async dependencies of a Resolvable\n *\n * Given a Resolvable, returns its dependencies as a Resolvable[]\n */\n getDependencies(resolvable: Resolvable): Resolvable[] {\n const node = this.findNode(resolvable);\n // Find which other resolvables are \"visible\" to the `resolvable` argument\n // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n const subPath: PathNode[] = PathUtils.subPath(this._path, x => x === node) || this._path;\n const availableResolvables: Resolvable[] = subPath\n .reduce((acc, _node) => acc.concat(_node.resolvables), []) // all of subpath's resolvables\n .filter(res => res !== resolvable); // filter out the `resolvable` argument\n\n const getDependency = (token: any) => {\n const matching = availableResolvables.filter(r => r.token === token);\n if (matching.length) return tail(matching);\n\n const fromInjector = this.injector().getNative(token);\n if (isUndefined(fromInjector)) {\n throw new Error('Could not find Dependency Injection token: ' + stringify(token));\n }\n\n return new Resolvable(token, () => fromInjector, [], fromInjector);\n };\n\n return resolvable.deps.map(getDependency);\n }\n}\n\nclass UIInjectorImpl implements UIInjector {\n native: $InjectorLike;\n\n constructor(public context: ResolveContext) {\n this.native = this.get(NATIVE_INJECTOR_TOKEN) || services.$injector;\n }\n\n get(token: any) {\n const resolvable = this.context.getResolvable(token);\n if (resolvable) {\n if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n return resolvable.get(this.context);\n }\n\n if (!resolvable.resolved) {\n throw new Error('Resolvable async .get() not complete:' + stringify(resolvable.token));\n }\n return resolvable.data;\n }\n\n return this.getNative(token);\n }\n\n getAsync(token: any) {\n const resolvable = this.context.getResolvable(token);\n if (resolvable) return resolvable.get(this.context);\n return services.$q.when(this.native.get(token));\n }\n\n getNative(token: any) {\n return this.native && this.native.get(token);\n }\n}\n", "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { stringify } from '../common/strings';\nimport { map, find, extend, mergeR, tail, omit, arrayTuples, unnestR, identity, anyTrueR } from '../common/common';\nimport { isObject, isUndefined } from '../common/predicates';\nimport { prop, propEq, val, not, is } from '../common/hof';\nimport { StateDeclaration, StateOrName } from '../state/interface';\nimport {\n TransitionOptions, TreeChanges, IHookRegistry, TransitionHookPhase, RegisteredHooks, HookRegOptions,\n HookMatchCriteria, TransitionStateHookFn, TransitionHookFn,\n} from './interface'; // has or is using\nimport { TransitionHook } from './transitionHook';\nimport { matchState, makeEvent, RegisteredHook } from './hookRegistry';\nimport { HookBuilder } from './hookBuilder';\nimport { PathNode } from '../path/pathNode';\nimport { PathUtils } from '../path/pathUtils';\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { UIRouter } from '../router';\nimport { UIInjector } from '../interface';\nimport { RawParams } from '../params/interface';\nimport { ResolvableLiteral } from '../resolve/interface';\n\n/** @hidden */\nconst stateSelf: (_state: StateObject) => StateDeclaration = prop('self');\n\n/**\n * Represents a transition between two states.\n *\n * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n *\n * This object contains all contextual information about the to/from states, parameters, resolves.\n * It has information about all states being entered and exited as a result of the transition.\n */\nexport class Transition implements IHookRegistry {\n\n /** @hidden */\n static diToken = Transition;\n\n /**\n * A unique identifier for the transition.\n *\n * This is an auto incrementing integer, starting from `0`.\n */\n $id: number;\n\n /**\n * A reference to the [[UIRouter]] instance\n *\n * This reference can be used to access the router services, such as the [[StateService]]\n */\n router: UIRouter;\n\n /** @hidden */\n private _deferred = services.$q.defer();\n /**\n * This promise is resolved or rejected based on the outcome of the Transition.\n *\n * When the transition is successful, the promise is resolved\n * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n */\n promise: Promise = this._deferred.promise;\n /**\n * A boolean which indicates if the transition was successful\n *\n * After a successful transition, this value is set to true.\n * After an unsuccessful transition, this value is set to false.\n *\n * The value will be undefined if the transition is not complete\n */\n success: boolean;\n /** @hidden */\n _aborted: boolean;\n /** @hidden */\n private _error: any;\n\n /** @hidden Holds the hook registration functions such as those passed to Transition.onStart() */\n _registeredHooks: RegisteredHooks = { };\n\n /** @hidden */\n private _options: TransitionOptions;\n /** @hidden */\n private _treeChanges: TreeChanges;\n /** @hidden */\n private _targetState: TargetState;\n /** @hidden */\n private _hookBuilder = new HookBuilder(this);\n\n\n /** @hidden */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /** @hidden\n * Creates the transition-level hook registration functions\n * (which can then be used to register hooks)\n */\n private createTransitionHookRegFns() {\n this.router.transitionService._pluginapi._getEvents()\n .filter(type => type.hookPhase !== TransitionHookPhase.CREATE)\n .forEach(type => makeEvent(this, this.router.transitionService, type));\n }\n\n /** @internalapi */\n getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /**\n * Creates a new Transition object.\n *\n * If the target state is not valid, an error is thrown.\n *\n * @internalapi\n *\n * @param fromPath The path of [[PathNode]]s from which the transition is leaving. The last node in the `fromPath`\n * encapsulates the \"from state\".\n * @param targetState The target state and parameters being transitioned to (also, the transition options)\n * @param router The [[UIRouter]] instance\n */\n constructor(fromPath: PathNode[], targetState: TargetState, router: UIRouter) {\n this.router = router;\n this._targetState = targetState;\n\n if (!targetState.valid()) {\n throw new Error(targetState.error());\n }\n\n // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n this._options = extend({ current: val(this) }, targetState.options());\n this.$id = router.transitionService._transitionCount++;\n const toPath = PathUtils.buildToPath(fromPath, targetState);\n this._treeChanges = PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n this.createTransitionHookRegFns();\n\n const onCreateHooks = this._hookBuilder.buildHooksForPhase(TransitionHookPhase.CREATE);\n TransitionHook.invokeHooks(onCreateHooks, () => null);\n\n this.applyViewConfigs(router);\n }\n\n private applyViewConfigs(router: UIRouter) {\n const enteringStates = this._treeChanges.entering.map(node => node.state);\n PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n }\n\n /**\n * @internalapi\n *\n * @returns the internal from [State] object\n */\n $from() {\n return tail(this._treeChanges.from).state;\n }\n\n /**\n * @internalapi\n *\n * @returns the internal to [State] object\n */\n $to() {\n return tail(this._treeChanges.to).state;\n }\n\n /**\n * Returns the \"from state\"\n *\n * Returns the state that the transition is coming *from*.\n *\n * @returns The state declaration object for the Transition's (\"from state\").\n */\n from(): StateDeclaration {\n return this.$from().self;\n }\n\n /**\n * Returns the \"to state\"\n *\n * Returns the state that the transition is going *to*.\n *\n * @returns The state declaration object for the Transition's target state (\"to state\").\n */\n to(): StateDeclaration {\n return this.$to().self;\n }\n\n /**\n * Gets the Target State\n *\n * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n *\n * @returns the [[TargetState]] of this Transition\n */\n targetState() {\n return this._targetState;\n }\n\n /**\n * Determines whether two transitions are equivalent.\n * @deprecated\n */\n is(compare: (Transition|{to?: any, from?: any})): boolean {\n if (compare instanceof Transition) {\n // TODO: Also compare parameters\n return this.is({ to: compare.$to().name, from: compare.$from().name });\n }\n return !(\n (compare.to && !matchState(this.$to(), compare.to)) ||\n (compare.from && !matchState(this.$from(), compare.from))\n );\n }\n\n /**\n * Gets transition parameter values\n *\n * Returns the parameter values for a transition as key/value pairs.\n * This object is immutable.\n *\n * By default, returns the new parameter values (for the \"to state\").\n *\n * #### Example:\n * ```js\n * var toParams = transition.params();\n * ```\n *\n * To return the previous parameter values, supply `'from'` as the `pathname` argument.\n *\n * #### Example:\n * ```js\n * var fromParams = transition.params('from');\n * ```\n *\n * @param pathname the name of the treeChanges path to get parameter values for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n *\n * @returns transition parameter values for the desired path.\n */\n params(pathname?: string): any;\n params(pathname?: string): T;\n params(pathname = 'to') {\n return Object.freeze(this._treeChanges[pathname].map(prop('paramValues')).reduce(mergeR, {}));\n }\n\n\n /**\n * Creates a [[UIInjector]] Dependency Injector\n *\n * Returns a Dependency Injector for the Transition's target state (to state).\n * The injector provides resolve values which the target state has access to.\n *\n * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n *\n * #### Example:\n * ```js\n * .onEnter({ entering: 'myState' }, trans => {\n * var myResolveValue = trans.injector().get('myResolve');\n * // Inject a global service from the global/native injector (if it exists)\n * var MyService = trans.injector().get('MyService');\n * })\n * ```\n *\n * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n * You can use [[UIInjector.getAsync]] to get a promise for the data.\n * #### Example:\n * ```js\n * .onBefore({}, trans => {\n * return trans.injector().getAsync('myResolve').then(myResolveValue =>\n * return myResolveValue !== 'ABORT';\n * });\n * });\n * ```\n *\n * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n * #### Example:\n * ```js\n * .onEnter({ to: 'foo.bar' }, trans => {\n * // returns result of `foo` state's `myResolve` resolve\n * // even though `foo.bar` also has a `myResolve` resolve\n * var fooData = trans.injector('foo').get('myResolve');\n * });\n * ```\n *\n * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n * The resolve data from the `from` path will be returned.\n * #### Example:\n * ```js\n * .onExit({ exiting: 'foo.bar' }, trans => {\n * // Gets the resolve value of `myResolve` from the state being exited\n * var fooData = trans.injector(null, 'from').get('myResolve');\n * });\n * ```\n *\n *\n * @param state Limits the resolves provided to only the resolves the provided state has access to.\n * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n *\n * @returns a [[UIInjector]]\n */\n injector(state?: StateOrName, pathName = 'to'): UIInjector {\n let path: PathNode[] = this._treeChanges[pathName];\n if (state) path = PathUtils.subPath(path, node => node.state === state || node.state.name === state);\n return new ResolveContext(path).injector();\n }\n\n /**\n * Gets all available resolve tokens (keys)\n *\n * This method can be used in conjunction with [[injector]] to inspect the resolve values\n * available to the Transition.\n *\n * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n * in the Transition's [[TreeChanges.to]] path.\n *\n * #### Example:\n * This example logs all resolve values\n * ```js\n * let tokens = trans.getResolveTokens();\n * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n * ```\n *\n * #### Example:\n * This example creates promises for each resolve value.\n * This triggers fetches of resolves (if any have not yet been fetched).\n * When all promises have all settled, it logs the resolve values.\n * ```js\n * let tokens = trans.getResolveTokens();\n * let promise = tokens.map(token => trans.injector().getAsync(token));\n * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n * ```\n *\n * Note: Angular 1 users whould use `$q.all()`\n *\n * @param pathname resolve context's path name (e.g., `to` or `from`)\n *\n * @returns an array of resolve tokens (keys)\n */\n getResolveTokens(pathname = 'to'): any[] {\n return new ResolveContext(this._treeChanges[pathname]).getTokens();\n }\n\n /**\n * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n *\n * Allows a transition hook to dynamically add a Resolvable to this Transition.\n *\n * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n *\n * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n * If no `state` is provided then the root state is used.\n * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n *\n * The `state` argument also scopes the resolved data.\n * The resolved data is available from the injector for that `state` and any children states.\n *\n * #### Example:\n * ```js\n * transitionService.onBefore({}, transition => {\n * transition.addResolvable({\n * token: 'myResolve',\n * deps: ['MyService'],\n * resolveFn: myService => myService.getData()\n * });\n * });\n * ```\n *\n * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n */\n addResolvable(resolvable: Resolvable|ResolvableLiteral, state: StateOrName = ''): void {\n resolvable = is(Resolvable)(resolvable) ? resolvable : new Resolvable(resolvable);\n\n const stateName: string = (typeof state === 'string') ? state : state.name;\n const topath = this._treeChanges.to;\n const targetNode = find(topath, node => node.state.name === stateName);\n const resolveContext: ResolveContext = new ResolveContext(topath);\n resolveContext.addResolvables([resolvable as Resolvable], targetNode.state);\n }\n\n /**\n * Gets the transition from which this transition was redirected.\n *\n * If the current transition is a redirect, this method returns the transition that was redirected.\n *\n * #### Example:\n * ```js\n * let transitionA = $state.go('A').transition\n * transitionA.onStart({}, () => $state.target('B'));\n * $transitions.onSuccess({ to: 'B' }, (trans) => {\n * trans.to().name === 'B'; // true\n * trans.redirectedFrom() === transitionA; // true\n * });\n * ```\n *\n * @returns The previous Transition, or null if this Transition is not the result of a redirection\n */\n redirectedFrom(): Transition {\n return this._options.redirectedFrom || null;\n }\n\n /**\n * Gets the original transition in a redirect chain\n *\n * A transition might belong to a long chain of multiple redirects.\n * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n *\n * #### Example:\n * ```js\n * // states\n * registry.register({ name: 'A', redirectTo: 'B' });\n * registry.register({ name: 'B', redirectTo: 'C' });\n * registry.register({ name: 'C', redirectTo: 'D' });\n * registry.register({ name: 'D' });\n *\n * let transitionA = $state.go('A').transition\n *\n * $transitions.onSuccess({ to: 'D' }, (trans) => {\n * trans.to().name === 'D'; // true\n * trans.redirectedFrom().to().name === 'C'; // true\n * trans.originalTransition() === transitionA; // true\n * trans.originalTransition().to().name === 'A'; // true\n * });\n * ```\n *\n * @returns The original Transition that started a redirect chain\n */\n originalTransition(): Transition {\n const rf = this.redirectedFrom();\n return (rf && rf.originalTransition()) || this;\n }\n\n /**\n * Get the transition options\n *\n * @returns the options for this Transition.\n */\n options(): TransitionOptions {\n return this._options;\n }\n\n /**\n * Gets the states being entered.\n *\n * @returns an array of states that will be entered during this transition.\n */\n entering(): StateDeclaration[] {\n return map(this._treeChanges.entering, prop('state')).map(stateSelf);\n }\n\n /**\n * Gets the states being exited.\n *\n * @returns an array of states that will be exited during this transition.\n */\n exiting(): StateDeclaration[] {\n return map(this._treeChanges.exiting, prop('state')).map(stateSelf).reverse();\n }\n\n /**\n * Gets the states being retained.\n *\n * @returns an array of states that are already entered from a previous Transition, that will not be\n * exited during this Transition\n */\n retained(): StateDeclaration[] {\n return map(this._treeChanges.retained, prop('state')).map(stateSelf);\n }\n\n /**\n * Get the [[ViewConfig]]s associated with this Transition\n *\n * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n *\n * @param pathname the name of the path to fetch views for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n *\n * @returns a list of ViewConfig objects for the given path.\n */\n views(pathname = 'entering', state?: StateObject): ViewConfig[] {\n let path = this._treeChanges[pathname];\n path = !state ? path : path.filter(propEq('state', state));\n return path.map(prop('views')).filter(identity).reduce(unnestR, []);\n }\n\n /**\n * Return the transition's tree changes\n *\n * A transition goes from one state/parameters to another state/parameters.\n * During a transition, states are entered and/or exited.\n *\n * This function returns various branches (paths) which represent the changes to the\n * active state tree that are caused by the transition.\n *\n * @param pathname The name of the tree changes path to get:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n */\n treeChanges(pathname: string): PathNode[];\n treeChanges(): TreeChanges;\n treeChanges(pathname?: string) {\n return pathname ? this._treeChanges[pathname] : this._treeChanges;\n }\n\n /**\n * Creates a new transition that is a redirection of the current one.\n *\n * This transition can be returned from a [[TransitionService]] hook to\n * redirect a transition to a new state and/or set of parameters.\n *\n * @internalapi\n *\n * @returns Returns a new [[Transition]] instance.\n */\n redirect(targetState: TargetState): Transition {\n let redirects = 1, trans: Transition = this;\n // tslint:disable-next-line:no-conditional-assignment\n while ((trans = trans.redirectedFrom()) != null) {\n if (++redirects > 20) throw new Error(`Too many consecutive Transition redirects (20+)`);\n }\n\n const redirectOpts: TransitionOptions = { redirectedFrom: this, source: 'redirect' };\n // If the original transition was caused by URL sync, then use { location: 'replace' }\n // on the new transition (unless the target state explicitly specifies location: false).\n // This causes the original url to be replaced with the url for the redirect target\n // so the original url disappears from the browser history.\n if (this.options().source === 'url' && targetState.options().location !== false) {\n redirectOpts.location = 'replace';\n }\n\n const newOptions = extend({}, this.options(), targetState.options(), redirectOpts);\n targetState = targetState.withOptions(newOptions, true);\n\n const newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n const originalEnteringNodes = this._treeChanges.entering;\n const redirectEnteringNodes = newTransition._treeChanges.entering;\n\n // --- Re-use resolve data from original transition ---\n // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n // (because of the redirect), the resolves fetched by the original transition are still valid in the\n // redirected transition.\n //\n // This allows you to define a redirect on a parent state which depends on an async resolve value.\n // You can wait for the resolve, then redirect to a child state based on the result.\n // The redirected transition does not have to re-fetch the resolve.\n // ---------------------------------------------------------\n\n const nodeIsReloading = (reloadState: StateObject) => (node: PathNode) => {\n return reloadState && node.state.includes[reloadState.name];\n };\n\n // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n const matchingEnteringNodes: PathNode[] = PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, PathUtils.nonDynamicParams)\n .filter(not(nodeIsReloading(targetState.options().reloadState)));\n\n // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n matchingEnteringNodes.forEach((node, idx) => {\n node.resolvables = originalEnteringNodes[idx].resolvables;\n });\n\n return newTransition;\n }\n\n /** @hidden If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n private _changedParams(): Param[] {\n const tc = this._treeChanges;\n\n /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n // If user explicitly wants a reload\n if (this._options.reload) return undefined;\n // If any states are exiting or entering\n if (tc.exiting.length || tc.entering.length) return undefined;\n // If to/from path lengths differ\n if (tc.to.length !== tc.from.length) return undefined;\n // If the to/from paths are different\n const pathsDiffer: boolean = arrayTuples(tc.to, tc.from)\n .map(tuple => tuple[0].state !== tuple[1].state)\n .reduce(anyTrueR, false);\n if (pathsDiffer) return undefined;\n\n // Find any parameter values that differ\n const nodeSchemas: Param[][] = tc.to.map((node: PathNode) => node.paramSchema);\n const [toValues, fromValues] = [tc.to, tc.from].map(path => path.map(x => x.paramValues));\n const tuples = arrayTuples(nodeSchemas, toValues, fromValues);\n\n return tuples.map(([schema, toVals, fromVals]) => Param.changed(schema, toVals, fromVals)).reduce(unnestR, []);\n }\n\n /**\n * Returns true if the transition is dynamic.\n *\n * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n *\n * @returns true if the Transition is dynamic\n */\n dynamic(): boolean {\n const changes = this._changedParams();\n return !changes ? false : changes.map(x => x.dynamic).reduce(anyTrueR, false);\n }\n\n /**\n * Returns true if the transition is ignored.\n *\n * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n *\n * @returns true if the Transition is ignored.\n */\n ignored(): boolean {\n return !!this._ignoredReason();\n }\n\n /** @hidden */\n _ignoredReason(): 'SameAsCurrent'|'SameAsPending'|undefined {\n const pending = this.router.globals.transition;\n const reloadState = this._options.reloadState;\n\n const same = (pathA, pathB) => {\n if (pathA.length !== pathB.length) return false;\n const matching = PathUtils.matching(pathA, pathB);\n return pathA.length === matching.filter(node => !reloadState || !node.state.includes[reloadState.name]).length;\n };\n\n const newTC = this.treeChanges();\n const pendTC = pending && pending.treeChanges();\n\n if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting)) return 'SameAsPending';\n if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to)) return 'SameAsCurrent';\n }\n\n /**\n * Runs the transition\n *\n * This method is generally called from the [[StateService.transitionTo]]\n *\n * @internalapi\n *\n * @returns a promise for a successful transition.\n */\n run(): Promise {\n const runAllHooks = TransitionHook.runAllHooks;\n\n // Gets transition hooks array for the given phase\n const getHooksFor = (phase: TransitionHookPhase) =>\n this._hookBuilder.buildHooksForPhase(phase);\n\n // When the chain is complete, then resolve or reject the deferred\n const transitionSuccess = () => {\n trace.traceSuccess(this.$to(), this);\n this.success = true;\n this._deferred.resolve(this.to());\n runAllHooks(getHooksFor(TransitionHookPhase.SUCCESS));\n };\n\n const transitionError = (reason: any) => {\n trace.traceError(reason, this);\n this.success = false;\n this._deferred.reject(reason);\n this._error = reason;\n runAllHooks(getHooksFor(TransitionHookPhase.ERROR));\n };\n\n const runTransition = () => {\n // Wait to build the RUN hook chain until the BEFORE hooks are done\n // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n const allRunHooks = getHooksFor(TransitionHookPhase.RUN);\n const done = () => services.$q.when(undefined);\n return TransitionHook.invokeHooks(allRunHooks, done);\n };\n\n const startTransition = () => {\n const globals = this.router.globals;\n\n globals.lastStartedTransitionId = this.$id;\n globals.transition = this;\n globals.transitionHistory.enqueue(this);\n\n trace.traceTransitionStart(this);\n\n return services.$q.when(undefined);\n };\n\n const allBeforeHooks = getHooksFor(TransitionHookPhase.BEFORE);\n TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n .then(runTransition)\n .then(transitionSuccess, transitionError);\n\n return this.promise;\n }\n\n /** Checks if this transition is currently active/running. */\n isActive = () =>\n this.router.globals.transition === this;\n\n /**\n * Checks if the Transition is valid\n *\n * @returns true if the Transition is valid\n */\n valid() {\n return !this.error() || this.success !== undefined;\n }\n\n /**\n * Aborts this transition\n *\n * Imperative API to abort a Transition.\n * This only applies to Transitions that are not yet complete.\n */\n abort() {\n // Do not set flag if the transition is already complete\n if (isUndefined(this.success)) {\n this._aborted = true;\n }\n }\n\n /**\n * The Transition error reason.\n *\n * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n *\n * @returns an error message explaining why the transition is invalid, or the reason the transition failed.\n */\n error() {\n const state: StateObject = this.$to();\n\n if (state.self.abstract)\n return `Cannot transition to abstract state '${state.name}'`;\n\n const paramDefs = state.parameters(), values = this.params();\n const invalidParams = paramDefs.filter(param => !param.validates(values[param.id]));\n if (invalidParams.length) {\n return `Param values not valid for state '${state.name}'. Invalid params: [ ${invalidParams.map(param => param.id).join(', ')} ]`;\n }\n\n if (this.success === false)\n return this._error;\n }\n\n /**\n * A string representation of the Transition\n *\n * @returns A string representation of the Transition\n */\n toString () {\n const fromStateOrName = this.from();\n const toStateOrName = this.to();\n\n const avoidEmptyHash = (params: RawParams) =>\n (params['#'] !== null && params['#'] !== undefined) ? params : omit(params, ['#']);\n\n // (X) means the to state is invalid.\n const id = this.$id,\n from = isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName,\n fromParams = stringify(avoidEmptyHash(this._treeChanges.from.map(prop('paramValues')).reduce(mergeR, {}))),\n toValid = this.valid() ? '' : '(X) ',\n to = isObject(toStateOrName) ? toStateOrName.name : toStateOrName,\n toParams = stringify(avoidEmptyHash(this.params()));\n\n return `Transition#${id}( '${from}'${fromParams} -> ${toValid}'${to}'${toParams} )`;\n }\n}\n", @@ -125,8 +125,8 @@ "/**\n * @coreapi\n * @module view\n */ /** for typedoc */\nimport { equals, applyPairs, removeFrom, TypedMap, inArray } from '../common/common';\nimport { curry, prop } from '../common/hof';\nimport { isString, isArray } from '../common/predicates';\nimport { trace } from '../common/trace';\nimport { PathNode } from '../path/pathNode';\nimport { ActiveUIView, ViewContext, ViewConfig } from './interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nexport type ViewConfigFactory = (path: PathNode[], decl: _ViewDeclaration) => ViewConfig|ViewConfig[];\n\nexport interface ViewServicePluginAPI {\n _rootViewContext(context?: ViewContext): ViewContext;\n _viewConfigFactory(viewType: string, factory: ViewConfigFactory);\n _registeredUIViews(): ActiveUIView[];\n _activeViewConfigs(): ViewConfig[];\n _onSync(listener: ViewSyncListener): Function;\n}\n\n// A uiView and its matching viewConfig\nexport interface ViewTuple {\n uiView: ActiveUIView;\n viewConfig: ViewConfig;\n}\n\nexport interface ViewSyncListener {\n (viewTuples: ViewTuple[]): void;\n}\n\n/**\n * The View service\n *\n * This service pairs existing `ui-view` components (which live in the DOM)\n * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n *\n * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n * The views from exited states are deactivated via [[deactivateViewConfig]].\n * (See: the [[registerActivateViews]] Transition Hook)\n *\n * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n *\n * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n * are configured with the matching [[ViewConfig]](s)\n *\n */\nexport class ViewService {\n private _uiViews: ActiveUIView[] = [];\n private _viewConfigs: ViewConfig[] = [];\n private _rootContext: ViewContext;\n private _viewConfigFactories: { [key: string]: ViewConfigFactory } = {};\n private _listeners: ViewSyncListener[] = [];\n\n public _pluginapi: ViewServicePluginAPI = {\n _rootViewContext: this._rootViewContext.bind(this),\n _viewConfigFactory: this._viewConfigFactory.bind(this),\n _registeredUIViews: () => this._uiViews,\n _activeViewConfigs: () => this._viewConfigs,\n _onSync: (listener: ViewSyncListener) => {\n this._listeners.push(listener);\n return () => removeFrom(this._listeners, listener);\n },\n };\n\n /**\n * Given a ui-view and a ViewConfig, determines if they \"match\".\n *\n * A ui-view has a fully qualified name (fqn) and a context object. The fqn is built from its overall location in\n * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n *\n * A ViewConfig has a target ui-view name and a context anchor. The ui-view name can be a simple name, or\n * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n *\n * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n *\n * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n * - the ui-view's name matches the ViewConfig's target name\n * - the ui-view's context matches the ViewConfig's anchor\n *\n * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n * - There exists a parent ui-view where:\n * - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n * - the parent ui-view's context matches the ViewConfig's anchor\n * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n *\n * Example:\n *\n * DOM:\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * uiViews: [\n * { fqn: \"$default\", creationContext: { name: \"\" } },\n * { fqn: \"$default.foo\", creationContext: { name: \"A\" } },\n * { fqn: \"$default.foo.$default\", creationContext: { name: \"A.B\" } }\n * { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n * ]\n *\n * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n *\n * - ViewConfig1: { uiViewName: \"bar\", uiViewContextAnchor: \"A.B.C\" }\n * - ViewConfig2: { uiViewName: \"$default.bar\", uiViewContextAnchor: \"A.B\" }\n * - ViewConfig3: { uiViewName: \"foo.$default.bar\", uiViewContextAnchor: \"A\" }\n * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n *\n * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n * - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n * - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n * the tail of the ui-view's fqn \"default.bar\"\n *\n * @internalapi\n */\n static matches = (uiViewsByFqn: TypedMap, uiView: ActiveUIView) => (viewConfig: ViewConfig) => {\n // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n if (uiView.$type !== viewConfig.viewDecl.$type) return false;\n\n // Split names apart from both viewConfig and uiView into segments\n const vc = viewConfig.viewDecl;\n const vcSegments = vc.$uiViewName.split('.');\n const uivSegments = uiView.fqn.split('.');\n\n // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n if (!equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n return false;\n\n // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n const negOffset = (1 - vcSegments.length) || undefined;\n const fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n const uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n }\n\n /**\n * Normalizes a view's name from a state.views configuration block.\n *\n * This should be used by a framework implementation to calculate the values for\n * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n *\n * @param context the context object (state declaration) that the view belongs to\n * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n *\n * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n */\n static normalizeUIViewTarget(context: ViewContext, rawViewName = '') {\n // TODO: Validate incoming view name with a regexp to allow:\n // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n const viewAtContext: string[] = rawViewName.split('@');\n let uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n let uiViewContextAnchor = isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n\n // Handle relative view-name sugar syntax.\n // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n const relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n if (relativeViewNameSugar) {\n // Clobbers existing contextAnchor (rawViewName validation will fix this)\n uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n }\n\n if (uiViewName.charAt(0) === '!') {\n uiViewName = uiViewName.substr(1);\n uiViewContextAnchor = ''; // target absolutely from root\n }\n\n // handle parent relative targeting \"^.^.^\"\n const relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n if (relativeMatch.exec(uiViewContextAnchor)) {\n const anchorState = uiViewContextAnchor.split('.')\n .reduce(((anchor, x) => anchor.parent), context);\n uiViewContextAnchor = anchorState.name;\n } else if (uiViewContextAnchor === '.') {\n uiViewContextAnchor = context.name;\n }\n\n return { uiViewName, uiViewContextAnchor };\n }\n\n constructor() { }\n\n private _rootViewContext(context?: ViewContext): ViewContext {\n return this._rootContext = context || this._rootContext;\n }\n\n private _viewConfigFactory(viewType: string, factory: ViewConfigFactory) {\n this._viewConfigFactories[viewType] = factory;\n }\n\n createViewConfig(path: PathNode[], decl: _ViewDeclaration): ViewConfig[] {\n const cfgFactory = this._viewConfigFactories[decl.$type];\n if (!cfgFactory) throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n const cfgs = cfgFactory(path, decl);\n return isArray(cfgs) ? cfgs : [cfgs];\n }\n\n /**\n * Deactivates a ViewConfig.\n *\n * This function deactivates a `ViewConfig`.\n * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n *\n * @param viewConfig The ViewConfig view to deregister.\n */\n deactivateViewConfig(viewConfig: ViewConfig) {\n trace.traceViewServiceEvent('<- Removing', viewConfig);\n removeFrom(this._viewConfigs, viewConfig);\n }\n\n activateViewConfig(viewConfig: ViewConfig) {\n trace.traceViewServiceEvent('-> Registering', viewConfig);\n this._viewConfigs.push(viewConfig);\n }\n\n\n sync() {\n const uiViewsByFqn: TypedMap =\n this._uiViews.map(uiv => [uiv.fqn, uiv]).reduce(applyPairs, {});\n\n // Return a weighted depth value for a uiView.\n // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n // plus the depth of the state that is populating the uiView\n function uiViewDepth(uiView: ActiveUIView) {\n const stateDepth = (context: ViewContext) =>\n context && context.parent ? stateDepth(context.parent) + 1 : 1;\n return (uiView.fqn.split('.').length * 10000) + stateDepth(uiView.creationContext);\n }\n\n // Return the ViewConfig's context's depth in the context tree.\n function viewConfigDepth(config: ViewConfig) {\n let context: ViewContext = config.viewDecl.$context, count = 0;\n while (++count && context.parent) context = context.parent;\n return count;\n }\n\n // Given a depth function, returns a compare function which can return either ascending or descending order\n const depthCompare = curry((depthFn, posNeg, left, right) => posNeg * (depthFn(left) - depthFn(right)));\n\n const matchingConfigPair = (uiView: ActiveUIView): ViewTuple => {\n const matchingConfigs = this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n if (matchingConfigs.length > 1) {\n // This is OK. Child states can target a ui-view that the parent state also targets (the child wins)\n // Sort by depth and return the match from the deepest child\n // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n }\n return { uiView, viewConfig: matchingConfigs[0] };\n };\n\n const configureUIView = (tuple: ViewTuple) => {\n // If a parent ui-view is reconfigured, it could destroy child ui-views.\n // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n if (this._uiViews.indexOf(tuple.uiView) !== -1)\n tuple.uiView.configUpdated(tuple.viewConfig);\n };\n\n // Sort views by FQN and state depth. Process uiviews nearest the root first.\n const uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n const matchedViewConfigs = uiViewTuples.map(tuple => tuple.viewConfig);\n const unmatchedConfigTuples = this._viewConfigs\n .filter(config => !inArray(matchedViewConfigs, config))\n .map(viewConfig => ({ uiView: undefined, viewConfig }));\n\n uiViewTuples.forEach(configureUIView);\n\n const allTuples: ViewTuple[] = uiViewTuples.concat(unmatchedConfigTuples);\n this._listeners.forEach(cb => cb(allTuples));\n trace.traceViewSync(allTuples);\n }\n\n /**\n * Registers a `ui-view` component\n *\n * When a `ui-view` component is created, it uses this method to register itself.\n * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n *\n * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n * and what the view's state context is.\n *\n * Note: There is no corresponding `deregisterUIView`.\n * A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n *\n * @param uiView The metadata for a UIView\n * @return a de-registration function used when the view is destroyed.\n */\n registerUIView(uiView: ActiveUIView) {\n trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n const uiViews = this._uiViews;\n const fqnAndTypeMatches = (uiv: ActiveUIView) => uiv.fqn === uiView.fqn && uiv.$type === uiView.$type;\n if (uiViews.filter(fqnAndTypeMatches).length)\n trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n\n uiViews.push(uiView);\n this.sync();\n\n return () => {\n const idx = uiViews.indexOf(uiView);\n if (idx === -1) {\n trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n return;\n }\n trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n removeFrom(uiViews)(uiView);\n };\n }\n\n /**\n * Returns the list of views currently available on the page, by fully-qualified name.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n available() {\n return this._uiViews.map(prop('fqn'));\n }\n\n /**\n * Returns the list of views on the page containing loaded content.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n active() {\n return this._uiViews.filter(prop('$config')).map(prop('name'));\n }\n\n}\n", "/**\n * @coreapi\n * @module core\n */ /** */\nimport { StateParams } from './params/stateParams';\nimport { StateDeclaration } from './state/interface';\nimport { StateObject } from './state/stateObject';\nimport { Transition } from './transition/transition';\nimport { Queue } from './common/queue';\nimport { Disposable } from './interface';\n\n/**\n * Global router state\n *\n * This is where we hold the global mutable state such as current state, current\n * params, current transition, etc.\n */\nexport class UIRouterGlobals implements Disposable {\n /**\n * Current parameter values\n *\n * The parameter values from the latest successful transition\n */\n params: StateParams = new StateParams();\n\n /**\n * Current state\n *\n * The to-state from the latest successful transition\n */\n current: StateDeclaration;\n\n /**\n * Current state (internal object)\n *\n * The to-state from the latest successful transition\n * @internalapi\n */\n $current: StateObject;\n\n /**\n * The current started/running transition.\n * This transition has reached at least the onStart phase, but is not yet complete\n */\n transition: Transition;\n\n /** @internalapi */\n lastStartedTransitionId = -1;\n\n /** @internalapi */\n transitionHistory = new Queue([], 1);\n\n /** @internalapi */\n successfulTransitions = new Queue([], 1);\n\n dispose() {\n this.transitionHistory.clear();\n this.successfulTransitions.clear();\n this.transition = null;\n }\n}\n", "/**\n * @coreapi\n * @module url\n */ /** */\n\nimport { UIRouter } from '../router';\nimport { LocationServices, notImplemented, LocationConfig } from '../common/coreservices';\nimport { noop, createProxyFunctions } from '../common/common';\nimport { UrlConfigApi, UrlSyncApi, UrlRulesApi, UrlParts, MatchResult } from './interface';\n\n/** @hidden */\nconst makeStub = (keys: string[]): any =>\n keys.reduce((acc, key) => (acc[key] = notImplemented(key), acc), { dispose: noop });\n\n/* tslint:disable:align */\n/** @hidden */ const locationServicesFns = ['url', 'path', 'search', 'hash', 'onChange'];\n/** @hidden */ const locationConfigFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n/** @hidden */ const umfFns = ['type', 'caseInsensitive', 'strictMode', 'defaultSquashPolicy'];\n/** @hidden */ const rulesFns = ['sort', 'when', 'initial', 'otherwise', 'rules', 'rule', 'removeRule'];\n/** @hidden */ const syncFns = ['deferIntercept', 'listen', 'sync', 'match'];\n/* tslint:enable:align */\n\n/**\n * API for URL management\n */\nexport class UrlService implements LocationServices, UrlSyncApi {\n /** @hidden */\n static locationServiceStub: LocationServices = makeStub(locationServicesFns);\n /** @hidden */\n static locationConfigStub: LocationConfig = makeStub(locationConfigFns);\n\n /**\n * A nested API for managing URL rules and rewrites\n *\n * See: [[UrlRulesApi]] for details\n */\n rules: UrlRulesApi;\n\n /**\n * A nested API to configure the URL and retrieve URL information\n *\n * See: [[UrlConfigApi]] for details\n */\n config: UrlConfigApi;\n\n /** @hidden */\n private router: UIRouter;\n\n /** @hidden */\n constructor(router: UIRouter, lateBind = true) {\n this.router = router;\n this.rules = {} as any;\n this.config = {} as any;\n\n // proxy function calls from UrlService to the LocationService/LocationConfig\n const locationServices = () => router.locationService;\n createProxyFunctions(locationServices, this, locationServices, locationServicesFns, lateBind);\n\n const locationConfig = () => router.locationConfig;\n createProxyFunctions(locationConfig, this.config, locationConfig, locationConfigFns, lateBind);\n\n const umf = () => router.urlMatcherFactory;\n createProxyFunctions(umf, this.config, umf, umfFns);\n\n const urlRouter = () => router.urlRouter;\n createProxyFunctions(urlRouter, this.rules, urlRouter, rulesFns);\n createProxyFunctions(urlRouter, this, urlRouter, syncFns);\n }\n\n /** @inheritdoc */\n url(): string;\n /** @inheritdoc */\n url(newurl: string, replace?: boolean, state?): void;\n url(newurl?, replace?, state?): any { return; }\n /** @inheritdoc */\n path(): string { return; }\n /** @inheritdoc */\n search(): { [key: string]: any } { return; }\n /** @inheritdoc */\n hash(): string { return; }\n /** @inheritdoc */\n onChange(callback: Function): Function { return; }\n\n\n /**\n * Returns the current URL parts\n *\n * This method returns the current URL components as a [[UrlParts]] object.\n *\n * @returns the current url parts\n */\n parts(): UrlParts {\n return { path: this.path(), search: this.search(), hash: this.hash() };\n }\n\n dispose() { }\n\n /** @inheritdoc */\n sync(evt?) { return; }\n /** @inheritdoc */\n listen(enabled?: boolean): Function { return; }\n /** @inheritdoc */\n deferIntercept(defer?: boolean) { return; }\n /** @inheritdoc */\n match(urlParts: UrlParts): MatchResult { return; }\n\n}\n", - "/**\n * @coreapi\n * @module core\n */ /** */\nimport { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { UIRouterPlugin, Disposable } from './interface';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { LocationServices, LocationConfig } from './common/coreservices';\nimport { Trace, trace } from './common/trace';\n\n/** @hidden */\nlet _routerInstance = 0;\n\n/**\n * The master class used to instantiate an instance of UI-Router.\n *\n * UI-Router (for each specific framework) will create an instance of this class during bootstrap.\n * This class instantiates and wires the UI-Router services together.\n *\n * After a new instance of the UIRouter class is created, it should be configured for your app.\n * For instance, app states should be registered with the [[UIRouter.stateRegistry]].\n *\n * ---\n *\n * Normally the framework code will bootstrap UI-Router.\n * If you are bootstrapping UIRouter manually, tell it to monitor the URL by calling\n * [[UrlService.listen]] then [[UrlService.sync]].\n */\nexport class UIRouter {\n /** @hidden */ $id = _routerInstance++;\n /** @hidden */ _disposed = false;\n /** @hidden */ private _disposables: Disposable[] = [];\n\n /** Provides trace information to the console */\n trace: Trace = trace;\n\n /** Provides services related to ui-view synchronization */\n viewService = new ViewService();\n\n /** Provides services related to Transitions */\n transitionService: TransitionService = new TransitionService(this);\n\n /** Global router state */\n globals: UIRouterGlobals = new UIRouterGlobals();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlMatcherFactory: UrlMatcherFactory = new UrlMatcherFactory();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlRouter: UrlRouter = new UrlRouter(this);\n\n /** Provides a registry for states, and related registration services */\n stateRegistry: StateRegistry = new StateRegistry(this);\n\n /** Provides services related to states */\n stateService = new StateService(this);\n\n /** Provides services related to the URL */\n urlService: UrlService = new UrlService(this);\n\n /** @hidden plugin instances are registered here */\n private _plugins: { [key: string]: UIRouterPlugin } = {};\n\n\n /** Registers an object to be notified when the router is disposed */\n disposable(disposable: Disposable) {\n this._disposables.push(disposable);\n }\n\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @param disposable (optional) the disposable to dispose\n */\n dispose(disposable?: any): void {\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n\n this._disposed = true;\n this._disposables.slice().forEach(d => {\n try {\n typeof d.dispose === 'function' && d.dispose(this);\n removeFrom(this._disposables, d);\n } catch (ignored) {}\n });\n }\n\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internalapi\n */\n constructor(\n public locationService: LocationServices = UrlService.locationServiceStub,\n public locationConfig: LocationConfig = UrlService.locationConfigStub,\n ) {\n\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlRouter);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n\n /** Add plugin (as ES6 class) */\n plugin(plugin: { new(router: UIRouter, options?: any): T }, options?: any): T;\n /** Add plugin (as javascript constructor function) */\n plugin(plugin: { (router: UIRouter, options?: any): void }, options?: any): T;\n /** Add plugin (as javascript factory function) */\n plugin(plugin: PluginFactory, options?: any): T;\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n plugin(plugin: any, options: any = {}): T {\n const pluginInstance = new plugin(this, options);\n if (!pluginInstance.name) throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return this._plugins[pluginInstance.name] = pluginInstance;\n }\n\n /**\n * Returns registered plugins\n *\n * Returns the registered plugin of the given `pluginName`.\n * If no `pluginName` is given, returns all registered plugins\n *\n * @param pluginName (optional) the name of the plugin to get\n * @return the named plugin (undefined if not found), or all plugins (if `pluginName` is omitted)\n */\n getPlugin(pluginName: string): UIRouterPlugin;\n getPlugin(): UIRouterPlugin[];\n getPlugin(pluginName?: string): UIRouterPlugin|UIRouterPlugin[] {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n }\n}\n\n/** @internalapi */\nexport type PluginFactory = (router: UIRouter, options?: any) => T;\n", - "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { TransitionService } from '../transition/transitionService';\n\nfunction addCoreResolvables(trans: Transition) {\n trans.addResolvable({ token: UIRouter, deps: [], resolveFn: () => trans.router, data: trans.router }, '');\n trans.addResolvable({ token: Transition, deps: [], resolveFn: () => trans, data: trans }, '');\n trans.addResolvable({ token: '$transition$', deps: [], resolveFn: () => trans, data: trans }, '');\n trans.addResolvable({ token: '$stateParams', deps: [], resolveFn: () => trans.params(), data: trans.params() }, '');\n\n trans.entering().forEach(state => {\n trans.addResolvable({ token: '$state$', deps: [], resolveFn: () => state, data: state }, state);\n });\n}\n\nexport const registerAddCoreResolvables = (transitionService: TransitionService) =>\n transitionService.onCreate({}, addCoreResolvables);\n", + "/**\n * @coreapi\n * @module core\n */ /** */\nimport { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { UIRouterPlugin, Disposable } from './interface';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { LocationServices, LocationConfig } from './common/coreservices';\nimport { Trace, trace } from './common/trace';\n\n/** @hidden */\nlet _routerInstance = 0;\n\n/**\n * The master class used to instantiate an instance of UI-Router.\n *\n * UI-Router (for each specific framework) will create an instance of this class during bootstrap.\n * This class instantiates and wires the UI-Router services together.\n *\n * After a new instance of the UIRouter class is created, it should be configured for your app.\n * For instance, app states should be registered with the [[UIRouter.stateRegistry]].\n *\n * ---\n *\n * Normally the framework code will bootstrap UI-Router.\n * If you are bootstrapping UIRouter manually, tell it to monitor the URL by calling\n * [[UrlService.listen]] then [[UrlService.sync]].\n */\nexport class UIRouter {\n /** @hidden */ $id = _routerInstance++;\n /** @hidden */ _disposed = false;\n /** @hidden */ private _disposables: Disposable[] = [];\n\n /** Provides trace information to the console */\n trace: Trace = trace;\n\n /** Provides services related to ui-view synchronization */\n viewService = new ViewService();\n\n /** Global router state */\n globals: UIRouterGlobals = new UIRouterGlobals();\n\n /** Provides services related to Transitions */\n transitionService: TransitionService = new TransitionService(this);\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlMatcherFactory: UrlMatcherFactory = new UrlMatcherFactory();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlRouter: UrlRouter = new UrlRouter(this);\n\n /** Provides a registry for states, and related registration services */\n stateRegistry: StateRegistry = new StateRegistry(this);\n\n /** Provides services related to states */\n stateService = new StateService(this);\n\n /** Provides services related to the URL */\n urlService: UrlService = new UrlService(this);\n\n /** @hidden plugin instances are registered here */\n private _plugins: { [key: string]: UIRouterPlugin } = {};\n\n\n /** Registers an object to be notified when the router is disposed */\n disposable(disposable: Disposable) {\n this._disposables.push(disposable);\n }\n\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @param disposable (optional) the disposable to dispose\n */\n dispose(disposable?: any): void {\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n\n this._disposed = true;\n this._disposables.slice().forEach(d => {\n try {\n typeof d.dispose === 'function' && d.dispose(this);\n removeFrom(this._disposables, d);\n } catch (ignored) {}\n });\n }\n\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internalapi\n */\n constructor(\n public locationService: LocationServices = UrlService.locationServiceStub,\n public locationConfig: LocationConfig = UrlService.locationConfigStub,\n ) {\n\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlRouter);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n\n /** Add plugin (as ES6 class) */\n plugin(plugin: { new(router: UIRouter, options?: any): T }, options?: any): T;\n /** Add plugin (as javascript constructor function) */\n plugin(plugin: { (router: UIRouter, options?: any): void }, options?: any): T;\n /** Add plugin (as javascript factory function) */\n plugin(plugin: PluginFactory, options?: any): T;\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n plugin(plugin: any, options: any = {}): T {\n const pluginInstance = new plugin(this, options);\n if (!pluginInstance.name) throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return this._plugins[pluginInstance.name] = pluginInstance;\n }\n\n /**\n * Returns registered plugins\n *\n * Returns the registered plugin of the given `pluginName`.\n * If no `pluginName` is given, returns all registered plugins\n *\n * @param pluginName (optional) the name of the plugin to get\n * @return the named plugin (undefined if not found), or all plugins (if `pluginName` is omitted)\n */\n getPlugin(pluginName: string): UIRouterPlugin;\n getPlugin(): UIRouterPlugin[];\n getPlugin(pluginName?: string): UIRouterPlugin|UIRouterPlugin[] {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n }\n}\n\n/** @internalapi */\nexport type PluginFactory = (router: UIRouter, options?: any) => T;\n", + "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { TransitionService } from '../transition/transitionService';\nimport { Resolvable } from '../resolve';\nimport { extend, inArray, map, mapObj, unnestR, values } from '../common';\nimport { PathNode } from '../path';\nimport { TreeChanges } from \"../transition\";\n\nfunction addCoreResolvables(trans: Transition) {\n trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), '');\n trans.addResolvable(Resolvable.fromData(Transition, trans), '');\n trans.addResolvable(Resolvable.fromData('$transition$', trans), '');\n trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), '');\n\n trans.entering().forEach(state => {\n trans.addResolvable(Resolvable.fromData('$state$', state), state);\n });\n}\n\nexport const registerAddCoreResolvables = (transitionService: TransitionService) =>\n transitionService.onCreate({}, addCoreResolvables);\n\nconst TRANSITION_TOKENS = ['$transition$', Transition];\nconst isTransition = inArray(TRANSITION_TOKENS);\n\n// References to Transition in the treeChanges pathnodes makes all\n// previous Transitions reachable in memory, causing a memory leak\n// This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n// Do not use this on current transitions, only on old ones.\nexport const treeChangesCleanup = (trans: Transition) => {\n // If the resolvable is a Transition, return a new resolvable with null data\n const replaceTransitionWithNull = (r: Resolvable): Resolvable =>\n isTransition(r.token) ? Resolvable.fromData(r.token, null) : r;\n\n const cleanPath = (path: PathNode[]) => path.map((node: PathNode) => {\n const resolvables = node.resolvables.map(replaceTransitionWithNull);\n return extend(node.clone(), { resolvables });\n });\n\n const treeChanges: TreeChanges = trans.treeChanges();\n mapObj(treeChanges, cleanPath, treeChanges);\n};\n", "/** @module hooks */ /** */\nimport { isString, isFunction } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { services } from '../common/coreservices';\nimport { TargetState } from '../state/targetState';\nimport { TransitionService } from '../transition/transitionService';\nimport { TransitionHookFn } from '../transition/interface';\n\n/**\n * A [[TransitionHookFn]] that redirects to a different state or params\n *\n * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n *\n * See [[StateDeclaration.redirectTo]]\n */\nconst redirectToHook: TransitionHookFn = (trans: Transition) => {\n const redirect = trans.to().redirectTo;\n if (!redirect) return;\n\n const $state = trans.router.stateService;\n\n function handleResult(result: any) {\n if (!result) return;\n if (result instanceof TargetState) return result;\n if (isString(result)) return $state.target( result, trans.params(), trans.options());\n if (result['state'] || result['params'])\n return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n }\n\n if (isFunction(redirect)) {\n return services.$q.when(redirect(trans)).then(handleResult);\n }\n return handleResult(redirect);\n};\n\nexport const registerRedirectToHook = (transitionService: TransitionService) =>\n transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectToHook);\n", "/** @module hooks */\n/** for typedoc */\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { Transition } from '../transition/transition';\nimport { TransitionService } from '../transition/transitionService';\nimport { StateDeclaration } from '../state/interface';\nimport { StateObject } from '../state/stateObject';\n\n/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n *\n * @hidden\n */\nfunction makeEnterExitRetainHook(hookName: string): TransitionStateHookFn {\n return (transition: Transition, state: StateDeclaration) => {\n const _state: StateObject = state.$$state();\n const hookFn: TransitionStateHookFn = _state[hookName];\n return hookFn(transition, state);\n };\n}\n\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nconst onExitHook: TransitionStateHookFn = makeEnterExitRetainHook('onExit');\nexport const registerOnExitHook = (transitionService: TransitionService) =>\n transitionService.onExit({ exiting: state => !!state.onExit }, onExitHook);\n\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nconst onRetainHook: TransitionStateHookFn = makeEnterExitRetainHook('onRetain');\nexport const registerOnRetainHook = (transitionService: TransitionService) =>\n transitionService.onRetain({ retained: state => !!state.onRetain }, onRetainHook);\n\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nconst onEnterHook: TransitionStateHookFn = makeEnterExitRetainHook('onEnter');\nexport const registerOnEnterHook = (transitionService: TransitionService) =>\n transitionService.onEnter({ entering: state => !!state.onEnter }, onEnterHook);\n\n", "/** @module hooks */\n/** for typedoc */\nimport { noop } from '../common/common';\nimport { Transition } from '../transition/transition';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { TransitionStateHookFn, TransitionHookFn } from '../transition/interface';\nimport { TransitionService } from '../transition/transitionService';\nimport { val } from '../common/hof';\nimport { StateDeclaration } from '../state/interface';\n\nexport const RESOLVE_HOOK_PRIORITY = 1000;\n\n/**\n * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n *\n * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n *\n * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nconst eagerResolvePath: TransitionHookFn = (trans: Transition) =>\n new ResolveContext(trans.treeChanges().to)\n .resolvePath('EAGER', trans)\n .then(noop);\n\nexport const registerEagerResolvePath = (transitionService: TransitionService) =>\n transitionService.onStart({}, eagerResolvePath, { priority: RESOLVE_HOOK_PRIORITY });\n\n/**\n * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n *\n * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n *\n * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nconst lazyResolveState: TransitionStateHookFn = (trans: Transition, state: StateDeclaration) =>\n new ResolveContext(trans.treeChanges().to)\n .subContext(state.$$state())\n .resolvePath('LAZY', trans)\n .then(noop);\n\nexport const registerLazyResolveState = (transitionService: TransitionService) =>\n transitionService.onEnter({ entering: val(true) }, lazyResolveState, { priority: RESOLVE_HOOK_PRIORITY });\n\n\n/**\n * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n *\n * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n *\n * After all entering states have been entered, this hook resolves any remaining Resolvables.\n * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n *\n * See [[StateDeclaration.resolve]]\n */\nconst resolveRemaining: TransitionHookFn = (trans: Transition) =>\n new ResolveContext(trans.treeChanges().to)\n .resolvePath('LAZY', trans)\n .then(noop);\n\nexport const registerResolveRemaining = (transitionService: TransitionService) =>\n transitionService.onFinish({}, resolveRemaining, { priority: RESOLVE_HOOK_PRIORITY });\n", @@ -137,7 +137,7 @@ "/** @module transition */ /** */\nimport { TransitionHookPhase, PathType } from './interface';\nimport { GetErrorHandler, GetResultHandler, TransitionHook } from './transitionHook';\n/**\n * This class defines a type of hook, such as `onBefore` or `onEnter`.\n * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n *\n * @interalapi\n */\nexport class TransitionEventType {\n /* tslint:disable:no-inferrable-types */\n constructor(public name: string,\n public hookPhase: TransitionHookPhase,\n public hookOrder: number,\n public criteriaMatchPath: PathType,\n public reverseSort: boolean = false,\n public getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n public getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n public synchronous: boolean = false,\n ) { }\n}\n", "/** @module hooks */ /** */\n\nimport { trace } from '../common/trace';\nimport { Rejection } from '../transition/rejectFactory';\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans: Transition) {\n const ignoredReason = trans._ignoredReason();\n if (!ignoredReason) return;\n\n trace.traceTransitionIgnored(trans);\n\n const pending = trans.router.globals.transition;\n\n // The user clicked a link going back to the *current state* ('A')\n // However, there is also a pending transition in flight (to 'B')\n // Abort the transition to 'B' because the user now wants to be back at 'A'.\n if (ignoredReason === 'SameAsCurrent' && pending) {\n pending.abort();\n }\n\n return Rejection.ignored().toPromise();\n}\n\nexport const registerIgnoredTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n", "/** @module hooks */ /** */\n\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans: Transition) {\n if (!trans.valid()) {\n throw new Error(trans.error());\n }\n}\n\nexport const registerInvalidTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n", - "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport {\n IHookRegistry, TransitionOptions, TransitionHookScope, TransitionHookPhase, TransitionCreateHookFn, HookMatchCriteria,\n HookRegOptions, PathTypes, PathType, RegisteredHooks, TransitionHookFn, TransitionStateHookFn,\n} from './interface';\nimport { Transition } from './transition';\nimport { makeEvent, RegisteredHook } from './hookRegistry';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from '../path/pathNode';\nimport { ViewService } from '../view/view';\nimport { UIRouter } from '../router';\nimport { registerAddCoreResolvables } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook, GetResultHandler, GetErrorHandler } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { Disposable } from '../interface'; // has or is using\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport let defaultTransOpts: TransitionOptions = {\n location : true,\n relative : null,\n inherit : false,\n notify : true,\n reload : false,\n custom : {},\n current : () => null,\n source : 'unknown',\n};\n\n\n/**\n * Plugin API for Transition Service\n * @internalapi\n */\nexport interface TransitionServicePluginAPI {\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n */\n _definePathType(name: string, hookScope: TransitionHookScope);\n\n /**\n * Gets a Path definition used as a criterion against a TreeChanges path\n */\n _getPathTypes(): PathTypes;\n\n /**\n * Defines a transition hook type and returns a transition hook registration\n * function (which can then be used to register hooks of this type).\n */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort?: boolean,\n getResultHandler?: GetResultHandler,\n getErrorHandler?: GetErrorHandler,\n rejectIfSuperseded?: boolean);\n\n /**\n * Returns the known event types, such as `onBefore`\n * If a phase argument is provided, returns only events for the given phase.\n */\n _getEvents(phase?: TransitionHookPhase): TransitionEventType[];\n\n /** Returns the hooks registered for the given hook name */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n */\nexport class TransitionService implements IHookRegistry, Disposable {\n /** @hidden */\n _transitionCount = 0;\n\n /** @hidden */\n public $view: ViewService;\n\n /** @hidden The transition hook types, such as `onEnter`, `onStart`, etc */\n private _eventTypes: TransitionEventType[] = [];\n /** @hidden The registered transition hooks */\n _registeredHooks = { } as RegisteredHooks;\n /** @hidden The paths on a criteria object */\n private _criteriaPaths = { } as PathTypes;\n /** @hidden */\n private _router: UIRouter;\n\n /** @internalapi */\n _pluginapi: TransitionServicePluginAPI;\n\n /**\n * This object has hook de-registration functions for the built-in hooks.\n * This can be used by third parties libraries that wish to customize the behaviors\n *\n * @hidden\n */\n _deregisterHookFns: {\n addCoreResolves: Function;\n ignored: Function;\n invalid: Function;\n redirectTo: Function;\n onExit: Function;\n onRetain: Function;\n onEnter: Function;\n eagerResolve: Function;\n lazyResolve: Function;\n resolveAll: Function;\n loadViews: Function;\n activateViews: Function;\n updateGlobals: Function;\n updateUrl: Function;\n lazyLoad: Function;\n };\n\n /** @hidden */\n constructor(_router: UIRouter) {\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]);\n\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n }\n\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internalapi\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n onCreate(criteria: HookMatchCriteria, callback: TransitionCreateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /**\n * dispose\n * @internalapi\n */\n dispose(router: UIRouter) {\n values(this._registeredHooks).forEach((hooksArray: RegisteredHook[]) => hooksArray.forEach(hook => {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n }));\n }\n\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n create(fromPath: PathNode[], targetState: TargetState): Transition {\n return new Transition(fromPath, targetState, this._router);\n }\n\n /** @hidden */\n private _defineCoreEvents() {\n const Phase = TransitionHookPhase;\n const TH = TransitionHook;\n const paths = this._criteriaPaths;\n const NORMAL_SORT = false, REVERSE_SORT = true;\n const SYNCHRONOUS = true;\n\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n }\n\n /** @hidden */\n private _defineCorePaths() {\n const { STATE, TRANSITION } = TransitionHookScope;\n\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n }\n\n /** @hidden */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort = false,\n getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n synchronous = false) {\n const eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n }\n\n /** @hidden */ // tslint:disable-next-line\n private _getEvents(phase?: TransitionHookPhase): TransitionEventType[] {\n const transitionHookTypes = isDefined(phase) ?\n this._eventTypes.filter(type => type.hookPhase === phase) :\n this._eventTypes.slice();\n\n return transitionHookTypes.sort((l, r) => {\n const cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n }\n\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @hidden\n */\n private _definePathType(name: string, hookScope: TransitionHookScope) {\n this._criteriaPaths[name] = { name, scope: hookScope };\n }\n\n /** * @hidden */ // tslint:disable-next-line\n private _getPathTypes(): PathTypes {\n return this._criteriaPaths;\n }\n\n /** @hidden */\n public getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /** @hidden */\n private _registerCoreTransitionHooks() {\n const fns = this._deregisterHookFns;\n\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n }\n}\n", + "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport {\n IHookRegistry, TransitionOptions, TransitionHookScope, TransitionHookPhase, TransitionCreateHookFn, HookMatchCriteria,\n HookRegOptions, PathTypes, PathType, RegisteredHooks, TransitionHookFn, TransitionStateHookFn,\n} from './interface';\nimport { Transition } from './transition';\nimport { makeEvent, RegisteredHook } from './hookRegistry';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from '../path/pathNode';\nimport { ViewService } from '../view/view';\nimport { UIRouter } from '../router';\nimport { registerAddCoreResolvables, treeChangesCleanup } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook, GetResultHandler, GetErrorHandler } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { Disposable } from '../interface'; // has or is using\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport let defaultTransOpts: TransitionOptions = {\n location : true,\n relative : null,\n inherit : false,\n notify : true,\n reload : false,\n custom : {},\n current : () => null,\n source : 'unknown',\n};\n\n\n/**\n * Plugin API for Transition Service\n * @internalapi\n */\nexport interface TransitionServicePluginAPI {\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n */\n _definePathType(name: string, hookScope: TransitionHookScope);\n\n /**\n * Gets a Path definition used as a criterion against a TreeChanges path\n */\n _getPathTypes(): PathTypes;\n\n /**\n * Defines a transition hook type and returns a transition hook registration\n * function (which can then be used to register hooks of this type).\n */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort?: boolean,\n getResultHandler?: GetResultHandler,\n getErrorHandler?: GetErrorHandler,\n rejectIfSuperseded?: boolean);\n\n /**\n * Returns the known event types, such as `onBefore`\n * If a phase argument is provided, returns only events for the given phase.\n */\n _getEvents(phase?: TransitionHookPhase): TransitionEventType[];\n\n /** Returns the hooks registered for the given hook name */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n */\nexport class TransitionService implements IHookRegistry, Disposable {\n /** @hidden */\n _transitionCount = 0;\n\n /** @hidden */\n public $view: ViewService;\n\n /** @hidden The transition hook types, such as `onEnter`, `onStart`, etc */\n private _eventTypes: TransitionEventType[] = [];\n /** @hidden The registered transition hooks */\n _registeredHooks = { } as RegisteredHooks;\n /** @hidden The paths on a criteria object */\n private _criteriaPaths = { } as PathTypes;\n /** @hidden */\n private _router: UIRouter;\n\n /** @internalapi */\n _pluginapi: TransitionServicePluginAPI;\n\n /**\n * This object has hook de-registration functions for the built-in hooks.\n * This can be used by third parties libraries that wish to customize the behaviors\n *\n * @hidden\n */\n _deregisterHookFns: {\n addCoreResolves: Function;\n ignored: Function;\n invalid: Function;\n redirectTo: Function;\n onExit: Function;\n onRetain: Function;\n onEnter: Function;\n eagerResolve: Function;\n lazyResolve: Function;\n resolveAll: Function;\n loadViews: Function;\n activateViews: Function;\n updateGlobals: Function;\n updateUrl: Function;\n lazyLoad: Function;\n };\n\n /** @hidden */\n constructor(_router: UIRouter) {\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]);\n\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n _router.globals.successfulTransitions.onEvict(treeChangesCleanup);\n }\n\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internalapi\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n onCreate(criteria: HookMatchCriteria, callback: TransitionCreateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /**\n * dispose\n * @internalapi\n */\n dispose(router: UIRouter) {\n values(this._registeredHooks).forEach((hooksArray: RegisteredHook[]) => hooksArray.forEach(hook => {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n }));\n }\n\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n create(fromPath: PathNode[], targetState: TargetState): Transition {\n return new Transition(fromPath, targetState, this._router);\n }\n\n /** @hidden */\n private _defineCoreEvents() {\n const Phase = TransitionHookPhase;\n const TH = TransitionHook;\n const paths = this._criteriaPaths;\n const NORMAL_SORT = false, REVERSE_SORT = true;\n const SYNCHRONOUS = true;\n\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n }\n\n /** @hidden */\n private _defineCorePaths() {\n const { STATE, TRANSITION } = TransitionHookScope;\n\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n }\n\n /** @hidden */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort = false,\n getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n synchronous = false) {\n const eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n }\n\n /** @hidden */ // tslint:disable-next-line\n private _getEvents(phase?: TransitionHookPhase): TransitionEventType[] {\n const transitionHookTypes = isDefined(phase) ?\n this._eventTypes.filter(type => type.hookPhase === phase) :\n this._eventTypes.slice();\n\n return transitionHookTypes.sort((l, r) => {\n const cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n }\n\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @hidden\n */\n private _definePathType(name: string, hookScope: TransitionHookScope) {\n this._criteriaPaths[name] = { name, scope: hookScope };\n }\n\n /** * @hidden */ // tslint:disable-next-line\n private _getPathTypes(): PathTypes {\n return this._criteriaPaths;\n }\n\n /** @hidden */\n public getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /** @hidden */\n private _registerCoreTransitionHooks() {\n const fns = this._deregisterHookFns;\n\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n }\n}\n", "/**\n * @coreapi\n * @module state\n */\n/** */\nimport { createProxyFunctions, defaults, extend, inArray, noop, removeFrom, silenceUncaughtInPromise, silentRejection } from '../common/common';\nimport { isDefined, isObject, isString } from '../common/predicates';\nimport { Queue } from '../common/queue';\nimport { services } from '../common/coreservices';\n\nimport { PathUtils } from '../path/pathUtils';\nimport { PathNode } from '../path/pathNode';\n\nimport { HookResult, TransitionOptions } from '../transition/interface';\nimport { defaultTransOpts } from '../transition/transitionService';\nimport { Rejection, RejectType } from '../transition/rejectFactory';\nimport { Transition } from '../transition/transition';\n\nimport { HrefOptions, LazyLoadResult, StateDeclaration, StateOrName, TransitionPromise } from './interface';\nimport { StateObject } from './stateObject';\nimport { TargetState } from './targetState';\n\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Glob } from '../common/glob';\nimport { UIRouter } from '../router';\nimport { UIInjector } from '../interface';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { lazyLoadState } from '../hooks/lazyLoad';\nimport { not, val } from '../common/hof';\nimport { StateParams } from '../params/stateParams';\n\nexport type OnInvalidCallback =\n (toState?: TargetState, fromState?: TargetState, injector?: UIInjector) => HookResult;\n\n/**\n * Provides state related service functions\n *\n * This class provides services related to ui-router states.\n * An instance of this class is located on the global [[UIRouter]] object.\n */\nexport class StateService {\n /** @internalapi */\n invalidCallbacks: OnInvalidCallback[] = [];\n\n /**\n * The [[Transition]] currently in progress (or null)\n *\n * This is a passthrough through to [[UIRouterGlobals.transition]]\n */\n get transition() { return this.router.globals.transition; }\n /**\n * The latest successful state parameters\n *\n * This is a passthrough through to [[UIRouterGlobals.params]]\n */\n get params(): StateParams { return this.router.globals.params; }\n /**\n * The current [[StateDeclaration]]\n *\n * This is a passthrough through to [[UIRouterGlobals.current]]\n */\n get current() { return this.router.globals.current; }\n /**\n * The current [[StateObject]]\n *\n * This is a passthrough through to [[UIRouterGlobals.$current]]\n */\n get $current() { return this.router.globals.$current; }\n\n /** @internalapi */\n constructor(private router: UIRouter) {\n const getters = ['current', '$current', 'params', 'transition'];\n const boundFns = Object.keys(StateService.prototype).filter(not(inArray(getters)));\n createProxyFunctions(val(StateService.prototype), this, val(this), boundFns);\n }\n\n /** @internalapi */\n dispose() {\n this.defaultErrorHandler(noop);\n this.invalidCallbacks = [];\n }\n\n /**\n * Handler for when [[transitionTo]] is called with an invalid state.\n *\n * Invokes the [[onInvalid]] callbacks, in natural order.\n * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n *\n * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n *\n * @internalapi\n */\n private _handleInvalidTargetState(fromPath: PathNode[], toState: TargetState) {\n const fromState = PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n const globals = this.router.globals;\n const latestThing = () => globals.transitionHistory.peekTail();\n const latest = latestThing();\n const callbackQueue = new Queue(this.invalidCallbacks.slice());\n const injector = new ResolveContext(fromPath).injector();\n\n const checkForRedirect = (result: HookResult) => {\n if (!(result instanceof TargetState)) {\n return;\n }\n\n let target = result;\n // Recreate the TargetState, in case the state is now defined.\n target = this.target(target.identifier(), target.params(), target.options());\n\n if (!target.valid()) {\n return Rejection.invalid(target.error()).toPromise();\n }\n\n if (latestThing() !== latest) {\n return Rejection.superseded().toPromise();\n }\n\n return this.transitionTo(target.identifier(), target.params(), target.options());\n };\n\n function invokeNextCallback() {\n const nextCallback = callbackQueue.dequeue();\n if (nextCallback === undefined) return Rejection.invalid(toState.error()).toPromise();\n\n const callbackResult = services.$q.when(nextCallback(toState, fromState, injector));\n return callbackResult.then(checkForRedirect).then(result => result || invokeNextCallback());\n }\n\n return invokeNextCallback();\n }\n\n /**\n * Registers an Invalid State handler\n *\n * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n * has been called with an invalid state reference parameter\n *\n * Example:\n * ```js\n * stateService.onInvalid(function(to, from, injector) {\n * if (to.name() === 'foo') {\n * let lazyLoader = injector.get('LazyLoadService');\n * return lazyLoader.load('foo')\n * .then(() => stateService.target('foo'));\n * }\n * });\n * ```\n *\n * @param {function} callback invoked when the toState is invalid\n * This function receives the (invalid) toState, the fromState, and an injector.\n * The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n * If one is returned, it is treated as a redirect.\n *\n * @returns a function which deregisters the callback\n */\n onInvalid(callback: OnInvalidCallback): Function {\n this.invalidCallbacks.push(callback);\n return function deregisterListener() {\n removeFrom(this.invalidCallbacks)(callback);\n }.bind(this);\n }\n\n\n /**\n * Reloads the current state\n *\n * A method that force reloads the current state, or a partial state hierarchy.\n * All resolves are re-resolved, and components reinstantiated.\n *\n * #### Example:\n * ```js\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * $state.reload();\n * }\n * });\n * ```\n *\n * Note: `reload()` is just an alias for:\n *\n * ```js\n * $state.transitionTo($state.current, $state.params, {\n * reload: true, inherit: false\n * });\n * ```\n *\n * @param reloadState A state name or a state object.\n * If present, this state and all its children will be reloaded, but ancestors will not reload.\n *\n * #### Example:\n * ```js\n * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n * //and current state is 'contacts.detail.item'\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * //will reload 'contact.detail' and nested 'contact.detail.item' states\n * $state.reload('contact.detail');\n * }\n * });\n * ```\n *\n * @returns A promise representing the state of the new transition. See [[StateService.go]]\n */\n reload(reloadState?: StateOrName): Promise {\n return this.transitionTo(this.current, this.params, {\n reload: isDefined(reloadState) ? reloadState : true,\n inherit: false,\n notify: false,\n });\n }\n\n /**\n * Transition to a different state and/or parameters\n *\n * Convenience method for transitioning to a new state.\n *\n * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n * inherit from the current parameter values (because of `inherit: true`).\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.go('contact.detail');\n * };\n * });\n * ```\n *\n * @param to Absolute state name, state object, or relative state path (relative to current state).\n *\n * Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to the parent state\n * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n *\n * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n *\n * Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n * This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n *\n * @param options Transition options\n *\n * @returns {promise} A promise representing the state of the new transition.\n */\n go(to: StateOrName, params?: RawParams, options?: TransitionOptions): TransitionPromise {\n const defautGoOpts = { relative: this.$current, inherit: true };\n const transOpts = defaults(options, defautGoOpts, defaultTransOpts);\n return this.transitionTo(to, params, transOpts);\n }\n\n /**\n * Creates a [[TargetState]]\n *\n * This is a factory method for creating a TargetState\n *\n * This may be returned from a Transition Hook to redirect a transition, for example.\n */\n target(identifier: StateOrName, params?: RawParams, options: TransitionOptions = {}): TargetState {\n // If we're reloading, find the state object to reload from\n if (isObject(options.reload) && !(options.reload).name)\n throw new Error('Invalid reload state object');\n const reg = this.router.stateRegistry;\n options.reloadState = options.reload === true ? reg.root() : reg.matcher.find( options.reload, options.relative);\n\n if (options.reload && !options.reloadState)\n throw new Error(`No such reload state '${(isString(options.reload) ? options.reload : (options.reload).name)}'`);\n\n return new TargetState(this.router.stateRegistry, identifier, params, options);\n }\n\n private getCurrentPath(): PathNode[] {\n const globals = this.router.globals;\n const latestSuccess: Transition = globals.successfulTransitions.peekTail();\n const rootPath = () => [ new PathNode(this.router.stateRegistry.root()) ];\n return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n }\n\n /**\n * Low-level method for transitioning to a new state.\n *\n * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.transitionTo('contact.detail');\n * };\n * });\n * ```\n *\n * @param to State name or state object.\n * @param toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param options Transition options\n *\n * @returns A promise representing the state of the new transition. See [[go]]\n */\n transitionTo(to: StateOrName, toParams: RawParams = {}, options: TransitionOptions = {}): TransitionPromise {\n const router = this.router;\n const globals = router.globals;\n options = defaults(options, defaultTransOpts);\n const getCurrent = () =>\n globals.transition;\n options = extend(options, { current: getCurrent });\n\n const ref: TargetState = this.target(to, toParams, options);\n const currentPath = this.getCurrentPath();\n\n if (!ref.exists())\n return this._handleInvalidTargetState(currentPath, ref);\n\n if (!ref.valid())\n return silentRejection(ref.error());\n\n /**\n * Special handling for Ignored, Aborted, and Redirected transitions\n *\n * The semantics for the transition.run() promise and the StateService.transitionTo()\n * promise differ. For instance, the run() promise may be rejected because it was\n * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n * no error occurred. Likewise, the transition.run() promise may be rejected because of\n * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n */\n const rejectedTransitionHandler = (trans: Transition) => (error: any): Promise => {\n if (error instanceof Rejection) {\n const isLatest = router.globals.lastStartedTransitionId === trans.$id;\n\n if (error.type === RejectType.IGNORED) {\n isLatest && router.urlRouter.update();\n // Consider ignored `Transition.run()` as a successful `transitionTo`\n return services.$q.when(globals.current);\n }\n\n const detail: any = error.detail;\n if (error.type === RejectType.SUPERSEDED && error.redirected && detail instanceof TargetState) {\n // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n // by returning the promise for the new (redirect) `Transition.run()`.\n const redirect: Transition = trans.redirect(detail);\n return redirect.run().catch(rejectedTransitionHandler(redirect));\n }\n\n if (error.type === RejectType.ABORTED) {\n isLatest && router.urlRouter.update();\n return services.$q.reject(error);\n }\n }\n\n const errorHandler = this.defaultErrorHandler();\n errorHandler(error);\n\n return services.$q.reject(error);\n };\n\n const transition = this.router.transitionService.create(currentPath, ref);\n const transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n silenceUncaughtInPromise(transitionToPromise); // issue #2676\n\n // Return a promise for the transition, which also has the transition object on it.\n return extend(transitionToPromise, { transition });\n }\n\n /**\n * Checks if the current state *is* the provided state\n *\n * Similar to [[includes]] but only checks for the full state name.\n * If params is supplied then it will be tested for strict equality against the current\n * active params object, so all params must match with none missing and no extras.\n *\n * #### Example:\n * ```js\n * $state.$current.name = 'contacts.details.item';\n *\n * // absolute name\n * $state.is('contact.details.item'); // returns true\n * $state.is(contactDetailItemStateObject); // returns true\n * ```\n *\n * // relative name (. and ^), typically from a template\n * // E.g. from the 'contacts.details' template\n * ```html\n *
Item
\n * ```\n *\n * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns Returns true if it is the state.\n */\n is(stateOrName: StateOrName, params?: RawParams, options?: { relative?: StateOrName }): boolean {\n options = defaults(options, { relative: this.$current });\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state)) return undefined;\n if (this.$current !== state) return false;\n if (!params) return true;\n\n const schema: Param[] = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n }\n\n /**\n * Checks if the current state *includes* the provided state\n *\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * #### Example when `$state.$current.name === 'contacts.details.item'`\n * ```js\n * // Using partial names\n * $state.includes(\"contacts\"); // returns true\n * $state.includes(\"contacts.details\"); // returns true\n * $state.includes(\"contacts.details.item\"); // returns true\n * $state.includes(\"contacts.list\"); // returns false\n * $state.includes(\"about\"); // returns false\n * ```\n *\n * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n * ```js\n * $state.includes(\"*.details.*.*\"); // returns true\n * $state.includes(\"*.details.**\"); // returns true\n * $state.includes(\"**.item.**\"); // returns true\n * $state.includes(\"*.details.item.url\"); // returns true\n * $state.includes(\"*.details.*.url\"); // returns true\n * $state.includes(\"*.details.*\"); // returns false\n * $state.includes(\"item.**\"); // returns false\n * ```\n *\n * @param stateOrName A partial name, relative name, glob pattern,\n * or state object to be searched for within the current state name.\n * @param params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n includes(stateOrName: StateOrName, params?: RawParams, options?: TransitionOptions): boolean {\n options = defaults(options, { relative: this.$current });\n const glob = isString(stateOrName) && Glob.fromString( stateOrName);\n\n if (glob) {\n if (!glob.matches(this.$current.name)) return false;\n stateOrName = this.$current.name;\n }\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n\n if (!isDefined(state)) return undefined;\n if (!isDefined(include[state.name])) return false;\n if (!params) return true;\n\n const schema: Param[] = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n }\n\n\n /**\n * Generates a URL for a state and parameters\n *\n * Returns the url for the given state populated with the given params.\n *\n * #### Example:\n * ```js\n * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n * ```\n *\n * @param stateOrName The state name or state object you'd like to generate a url from.\n * @param params An object of parameter values to fill the state's required parameters.\n * @param options Options object. The options are:\n *\n * @returns {string} compiled state url\n */\n href(stateOrName: StateOrName, params: RawParams, options?: HrefOptions): string {\n const defaultHrefOpts = {\n lossy: true,\n inherit: true,\n absolute: false,\n relative: this.$current,\n };\n options = defaults(options, defaultHrefOpts);\n params = params || {};\n\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n\n if (!isDefined(state)) return null;\n if (options.inherit) params = this.params.$inherit(params, this.$current, state);\n\n const nav = (state && options.lossy) ? state.navigable : state;\n\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return this.router.urlRouter.href(nav.url, params, {\n absolute: options.absolute,\n });\n }\n\n /** @hidden */\n private _defaultErrorHandler: ((_error: any) => void) = function $defaultErrorHandler($error$) {\n if ($error$ instanceof Error && $error$.stack) {\n console.error($error$);\n console.error($error$.stack);\n } else if ($error$ instanceof Rejection) {\n console.error($error$.toString());\n if ($error$.detail && $error$.detail.stack)\n console.error($error$.detail.stack);\n } else {\n console.error($error$);\n }\n };\n\n /**\n * Sets or gets the default [[transitionTo]] error handler.\n *\n * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n * This includes errors caused by resolves and transition hooks.\n *\n * Note:\n * This handler does not receive certain Transition rejections.\n * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n *\n * The built-in default error handler logs the error to the console.\n *\n * You can provide your own custom handler.\n *\n * #### Example:\n * ```js\n * stateService.defaultErrorHandler(function() {\n * // Do not log transitionTo errors\n * });\n * ```\n *\n * @param handler a global error handler function\n * @returns the current global error handler\n */\n defaultErrorHandler(handler?: (error: any) => void): (error: any) => void {\n return this._defaultErrorHandler = handler || this._defaultErrorHandler;\n }\n\n /**\n * Gets a registered [[StateDeclaration]] object\n *\n * Returns the state declaration object for any specific state, or for all registered states.\n *\n * @param stateOrName (absolute or relative) If provided, will only get the declaration object for the requested state.\n * If not provided, returns an array of ALL states.\n * @param base When `stateOrName` is a relative state reference (such as `.bar.baz`), the state will be retrieved relative to this state.\n *\n * @returns a [[StateDeclaration]] object (or array of all registered [[StateDeclaration]] objects.)\n */\n get(stateOrName: StateOrName, base: StateOrName): StateDeclaration;\n get(stateOrName: StateOrName): StateDeclaration;\n get(): StateDeclaration[];\n get(stateOrName?: StateOrName, base?: StateOrName): any {\n const reg = this.router.stateRegistry;\n if (arguments.length === 0) return reg.get();\n return reg.get(stateOrName, base || this.$current);\n }\n\n /**\n * Lazy loads a state\n *\n * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n *\n * @param stateOrName the state that should be lazy loaded\n * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n * This noop transition is not actually run.\n *\n * @returns a promise to lazy load\n */\n lazyLoad(stateOrName: StateOrName, transition?: Transition): Promise {\n const state: StateDeclaration = this.get(stateOrName);\n if (!state || !state.lazyLoad) throw new Error('Can not lazy load ' + stateOrName);\n\n const currentPath = this.getCurrentPath();\n const target = PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n transition = transition || this.router.transitionService.create(currentPath, target);\n\n return lazyLoadState(transition, state);\n }\n}\n", "/**\n * # Transition subsystem\n *\n * This module contains APIs related to a Transition.\n *\n * See:\n * - [[TransitionService]]\n * - [[Transition]]\n * - [[HookFn]], [[TransitionHookFn]], [[TransitionStateHookFn]], [[HookMatchCriteria]], [[HookResult]]\n *\n * @coreapi\n * @preferred\n * @module transition\n */ /** for typedoc */\nexport * from './interface';\nexport * from './hookBuilder';\nexport * from './hookRegistry';\nexport * from './rejectFactory';\nexport * from './transition';\nexport * from './transitionHook';\nexport * from './transitionEventType';\nexport * from './transitionService';\n\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { isArray, isObject, $QLike } from '../common/index';\n\n/**\n * An angular1-like promise api\n *\n * This object implements four methods similar to the\n * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This API provides native ES6 promise support wrapped as a $q-like API.\n * Internally, UI-Router uses this $q object to perform promise operations.\n * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n *\n * $q-like promise api\n */\nexport const $q = {\n /** Normalizes a value as a promise */\n when: (val) => new Promise((resolve, reject) => resolve(val)),\n\n /** Normalizes a value as a promise rejection */\n reject: (val) => new Promise((resolve, reject) => { reject(val); }),\n\n /** @returns a deferred object, which has `resolve` and `reject` functions */\n defer: () => {\n const deferred: any = {};\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n },\n\n /** Like Promise.all(), but also supports object key/promise notation like $q */\n all: (promises: { [key: string]: Promise } | Promise[]) => {\n if (isArray(promises)) {\n return Promise.all(promises);\n }\n\n if (isObject(promises)) {\n // Convert promises map to promises array.\n // When each promise resolves, map it to a tuple { key: key, val: val }\n const chain = Object.keys(promises)\n .map(key => promises[key].then(val => ({ key, val })));\n\n // Then wait for all promises to resolve, and convert them back to an object\n return $q.all(chain).then(values =>\n values.reduce((acc, tuple) => { acc[tuple.key] = tuple.val; return acc; }, {}));\n }\n },\n} as $QLike;\n", @@ -161,7 +161,7 @@ "/** @module url */ /** */\nimport {\n UIRouter, UrlRouter, LocationServices, $InjectorLike, BaseUrlRule, UrlRuleHandlerFn, UrlMatcher,\n IInjectable,\n} from '@uirouter/core';\nimport { services, isString, isFunction, isArray, identity } from '@uirouter/core';\n\nexport interface RawNg1RuleFunction {\n ($injector: $InjectorLike, $location: LocationServices): string|void;\n}\n\n/**\n * Manages rules for client-side URL\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class manages the router rules for what to do when the URL changes.\n *\n * This provider remains for backwards compatibility.\n *\n * @deprecated\n */\nexport class UrlRouterProvider {\n /** @hidden */ _router: UIRouter;\n /** @hidden */ _urlRouter: UrlRouter;\n\n static injectableHandler(router: UIRouter, handler): UrlRuleHandlerFn {\n return match =>\n services.$injector.invoke(handler, null, { $match: match, $stateParams: router.globals.params });\n }\n\n /** @hidden */\n constructor(router: UIRouter) {\n this._router = router;\n this._urlRouter = router.urlRouter;\n }\n\n /** @hidden */\n $get() {\n const urlRouter = this._urlRouter;\n urlRouter.update(true);\n if (!urlRouter.interceptDeferred) urlRouter.listen();\n return urlRouter;\n }\n\n /**\n * Registers a url handler function.\n *\n * Registers a low level url handler (a `rule`).\n * A rule detects specific URL patterns and returns a redirect, or performs some action.\n *\n * If a rule returns a string, the URL is replaced with the string, and all rules are fired again.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // Here's an example of how you might allow case insensitive urls\n * $urlRouterProvider.rule(function ($injector, $location) {\n * var path = $location.path(),\n * normalized = path.toLowerCase();\n *\n * if (path !== normalized) {\n * return normalized;\n * }\n * });\n * });\n * ```\n *\n * @param ruleFn\n * Handler function that takes `$injector` and `$location` services as arguments.\n * You can use them to detect a url and return a different url as a string.\n *\n * @return [[UrlRouterProvider]] (`this`)\n */\n rule(ruleFn: RawNg1RuleFunction): UrlRouterProvider {\n if (!isFunction(ruleFn)) throw new Error(\"'rule' must be a function\");\n\n const match = () =>\n ruleFn(services.$injector, this._router.locationService);\n\n const rule = new BaseUrlRule(match, identity);\n this._urlRouter.rule(rule);\n return this;\n }\n\n /**\n * Defines the path or behavior to use when no url can be matched.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // if the path doesn't match any of the urls you configured\n * // otherwise will take care of routing the user to the\n * // specified url\n * $urlRouterProvider.otherwise('/index');\n *\n * // Example of using function rule as param\n * $urlRouterProvider.otherwise(function ($injector, $location) {\n * return '/a/valid/url';\n * });\n * });\n * ```\n *\n * @param rule\n * The url path you want to redirect to or a function rule that returns the url path or performs a `$state.go()`.\n * The function version is passed two params: `$injector` and `$location` services, and should return a url string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n otherwise(rule: string | RawNg1RuleFunction): UrlRouterProvider {\n const urlRouter = this._urlRouter;\n\n if (isString(rule)) {\n urlRouter.otherwise(rule);\n } else if (isFunction(rule)) {\n urlRouter.otherwise(() => rule(services.$injector, this._router.locationService));\n } else {\n throw new Error(\"'rule' must be a string or function\");\n }\n\n return this;\n }\n\n /**\n * Registers a handler for a given url matching.\n *\n * If the handler is a string, it is\n * treated as a redirect, and is interpolated according to the syntax of match\n * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n *\n * If the handler is a function, it is injectable.\n * It gets invoked if `$location` matches.\n * You have the option of inject the match object as `$match`.\n *\n * The handler can return\n *\n * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n * will continue trying to find another one that matches.\n * - **string** which is treated as a redirect and passed to `$location.url()`\n * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n * if ($state.$current.navigable !== state ||\n * !equalForKeys($match, $stateParams) {\n * $state.transitionTo(state, $match, false);\n * }\n * });\n * });\n * ```\n *\n * @param what A pattern string to match, compiled as a [[UrlMatcher]].\n * @param handler The path (or function that returns a path) that you want to redirect your user to.\n * @param ruleCallback [optional] A callback that receives the `rule` registered with [[UrlMatcher.rule]]\n *\n * Note: the handler may also invoke arbitrary code, such as `$state.go()`\n */\n when(what: (RegExp|UrlMatcher|string), handler: string|IInjectable) {\n if (isArray(handler) || isFunction(handler)) {\n handler = UrlRouterProvider.injectableHandler(this._router, handler);\n }\n\n this._urlRouter.when(what, handler as any);\n return this;\n }\n\n /**\n * Disables monitoring of the URL.\n *\n * Call this method before UI-Router has bootstrapped.\n * It will stop UI-Router from performing the initial url sync.\n *\n * This can be useful to perform some asynchronous initialization before the router starts.\n * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // Prevent $urlRouter from automatically intercepting URL changes;\n * $urlRouterProvider.deferIntercept();\n * })\n *\n * app.run(function (MyService, $urlRouter, $http) {\n * $http.get(\"/stuff\").then(function(resp) {\n * MyService.doStuff(resp.data);\n * $urlRouter.listen();\n * $urlRouter.sync();\n * });\n * });\n * ```\n *\n * @param defer Indicates whether to defer location change interception.\n * Passing no parameter is equivalent to `true`.\n */\n deferIntercept(defer?: boolean) {\n this._urlRouter.deferIntercept(defer);\n }\n}\n", "/**\n * # Angular 1 types\n *\n * UI-Router core provides various Typescript types which you can use for code completion and validating parameter values, etc.\n * The customizations to the core types for Angular UI-Router are documented here.\n *\n * The optional [[$resolve]] service is also documented here.\n *\n * @module ng1\n * @preferred\n */\n/** for typedoc */\nimport { ng as angular } from './angular';\nimport {\n IRootScopeService, IQService, ILocationService, ILocationProvider, IHttpService, ITemplateCacheService,\n} from 'angular';\nimport {\n services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext,\n unnestR, TypedMap,\n} from '@uirouter/core';\nimport { ng1ViewsBuilder, getNg1ViewConfigFactory } from './statebuilders/views';\nimport { TemplateFactory } from './templateFactory';\nimport { StateProvider } from './stateProvider';\nimport { getStateHookBuilder } from './statebuilders/onEnterExitRetain';\nimport { Ng1LocationServices } from './locationServices';\nimport { UrlRouterProvider } from './urlRouterProvider';\nimport IInjectorService = angular.auto.IInjectorService; // tslint:disable-line\n\nangular.module('ui.router.angular1', []);\nconst mod_init = angular.module('ui.router.init', []);\nconst mod_util = angular.module('ui.router.util', ['ng', 'ui.router.init']);\nconst mod_rtr = angular.module('ui.router.router', ['ui.router.util']);\nconst mod_state = angular.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);\nconst mod_main = angular.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);\nlet mod_cmpt = angular.module('ui.router.compat', ['ui.router']); // tslint:disable-line\n\ndeclare module '@uirouter/core/lib/router' {\n interface UIRouter { // tslint:disable-line:no-shadowed-variable\n /** @hidden */\n stateProvider: StateProvider;\n /** @hidden */\n urlRouterProvider: UrlRouterProvider;\n }\n}\n\nlet router: UIRouter = null;\n\n$uiRouterProvider.$inject = ['$locationProvider'];\n/** This angular 1 provider instantiates a Router and exposes its services via the angular injector */\nfunction $uiRouterProvider($locationProvider: ILocationProvider) {\n\n // Create a new instance of the Router when the $uiRouterProvider is initialized\n router = this.router = new UIRouter();\n router.stateProvider = new StateProvider(router.stateRegistry, router.stateService);\n\n // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties\n router.stateRegistry.decorator('views', ng1ViewsBuilder);\n router.stateRegistry.decorator('onExit', getStateHookBuilder('onExit'));\n router.stateRegistry.decorator('onRetain', getStateHookBuilder('onRetain'));\n router.stateRegistry.decorator('onEnter', getStateHookBuilder('onEnter'));\n\n router.viewService._pluginapi._viewConfigFactory('ng1', getNg1ViewConfigFactory());\n\n const ng1LocationService = router.locationService = router.locationConfig = new Ng1LocationServices($locationProvider);\n\n Ng1LocationServices.monkeyPatchPathParameterType(router);\n\n // backwards compat: also expose router instance as $uiRouterProvider.router\n router['router'] = router;\n router['$get'] = $get;\n $get.$inject = ['$location', '$browser', '$sniffer', '$rootScope', '$http', '$templateCache'];\n function $get($location: ILocationService, $browser: any, $sniffer: any, $rootScope: ng.IScope, $http: IHttpService, $templateCache: ITemplateCacheService) {\n ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser);\n delete router['router'];\n delete router['$get'];\n return router;\n }\n return router;\n}\n\nconst getProviderFor = (serviceName) => [ '$uiRouterProvider', ($urp) => {\n const service = $urp.router[serviceName];\n service['$get'] = () => service;\n return service;\n}];\n\n// This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)\nrunBlock.$inject = ['$injector', '$q', '$uiRouter'];\nfunction runBlock($injector: IInjectorService, $q: IQService, $uiRouter: UIRouter) {\n services.$injector = $injector;\n services.$q = $q;\n\n // The $injector is now available.\n // Find any resolvables that had dependency annotation deferred\n $uiRouter.stateRegistry.get()\n .map(x => x.$$state().resolvables)\n .reduce(unnestR, [])\n .filter(x => x.deps === 'deferred')\n .forEach(resolvable => resolvable.deps = $injector.annotate(resolvable.resolveFn, $injector.strictDi));\n}\n\n// $urlRouter service and $urlRouterProvider\nconst getUrlRouterProvider = (uiRouter: UIRouter) =>\n uiRouter.urlRouterProvider = new UrlRouterProvider(uiRouter);\n\n// $state service and $stateProvider\n// $urlRouter service and $urlRouterProvider\nconst getStateProvider = () =>\n extend(router.stateProvider, { $get: () => router.stateService });\n\nwatchDigests.$inject = ['$rootScope'];\nexport function watchDigests($rootScope: IRootScopeService) {\n $rootScope.$watch(function() { trace.approximateDigests++; });\n}\n\nmod_init .provider('$uiRouter', $uiRouterProvider);\nmod_rtr .provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);\nmod_util .provider('$urlService', getProviderFor('urlService'));\nmod_util .provider('$urlMatcherFactory', ['$uiRouterProvider', () => router.urlMatcherFactory]);\nmod_util .provider('$templateFactory', () => new TemplateFactory());\nmod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));\nmod_state.provider('$uiRouterGlobals', getProviderFor('globals'));\nmod_state.provider('$transitions', getProviderFor('transitionService'));\nmod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);\n\nmod_state.factory ('$stateParams', ['$uiRouter', ($uiRouter: UIRouter) => $uiRouter.globals.params]);\nmod_main .factory ('$view', () => router.viewService);\nmod_main .service ('$trace', () => trace);\n\nmod_main .run (watchDigests);\nmod_util .run (['$urlMatcherFactory', function ($urlMatcherFactory: UrlMatcherFactory) { }]);\nmod_state.run (['$state', function ($state: StateService) { }]);\nmod_rtr .run (['$urlRouter', function ($urlRouter: UrlRouter) { }]);\nmod_init .run (runBlock);\n\n/** @hidden TODO: find a place to move this */\nexport const getLocals = (ctx: ResolveContext): TypedMap => {\n const tokens = ctx.getTokens().filter(isString);\n\n const tuples = tokens .map(key => {\n const resolvable = ctx.getResolvable(key);\n const waitPolicy = ctx.getPolicy(resolvable).async;\n return [ key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data ];\n });\n\n return tuples.reduce(applyPairs, {});\n};\n\n", "/**\n * # Angular 1 injectable services\n *\n * This is a list of the objects which can be injected using angular's injector.\n *\n * There are three different kind of injectable objects:\n *\n * ## **Provider** objects\n * #### injectable into a `.config()` block during configtime\n *\n * - [[$uiRouterProvider]]: The UI-Router instance\n * - [[$stateProvider]]: State registration\n * - [[$transitionsProvider]]: Transition hooks\n * - [[$urlServiceProvider]]: All URL related public APIs\n *\n * - [[$uiViewScrollProvider]]: Disable ui-router view scrolling\n * - [[$urlRouterProvider]]: (deprecated) Url matching rules\n * - [[$urlMatcherFactoryProvider]]: (deprecated) Url parsing config\n *\n * ## **Service** objects\n * #### injectable globally during runtime\n *\n * - [[$uiRouter]]: The UI-Router instance\n * - [[$trace]]: Enable transition trace/debug\n * - [[$transitions]]: Transition hooks\n * - [[$state]]: Imperative state related APIs\n * - [[$stateRegistry]]: State registration\n * - [[$urlService]]: All URL related public APIs\n * - [[$uiRouterGlobals]]: Global variables\n * - [[$uiViewScroll]]: Scroll an element into view\n *\n * - [[$stateParams]]: (deprecated) Global state param values\n * - [[$urlRouter]]: (deprecated) URL synchronization\n * - [[$urlMatcherFactory]]: (deprecated) URL parsing config\n *\n * ## **Per-Transition** objects\n *\n * - These kind of objects are injectable into:\n * - Resolves ([[Ng1StateDeclaration.resolve]]),\n * - Transition Hooks ([[TransitionService.onStart]], etc),\n * - Routed Controllers ([[Ng1ViewDeclaration.controller]])\n *\n * #### Different instances are injected based on the [[Transition]]\n *\n * - [[$transition$]]: The current Transition object\n * - [[$stateParams]]: State param values for pending Transition (deprecated)\n * - Any resolve data defined using [[Ng1StateDeclaration.resolve]]\n *\n * @ng1api\n * @preferred\n * @module injectables\n */ /** */\n/* tslint:disable:prefer-const */\nimport { StateProvider } from './stateProvider';\nimport {\n StateService, TransitionService, Transition, UrlRouter, UrlMatcherFactory,\n StateParams, StateRegistry, UIRouterGlobals, UIRouter, Trace, UrlService,\n} from '@uirouter/core';\nimport { UIViewScrollProvider } from './viewScroll';\nimport { UrlRouterProvider } from './urlRouterProvider';\n\n/**\n * The current (or pending) State Parameters\n *\n * An injectable global **Service Object** which holds the state parameters for the latest **SUCCESSFUL** transition.\n *\n * The values are not updated until *after* a `Transition` successfully completes.\n *\n * **Also:** an injectable **Per-Transition Object** object which holds the pending state parameters for the pending `Transition` currently running.\n *\n * ### Deprecation warning:\n *\n * The value injected for `$stateParams` is different depending on where it is injected.\n *\n * - When injected into an angular service, the object injected is the global **Service Object** with the parameter values for the latest successful `Transition`.\n * - When injected into transition hooks, resolves, or view controllers, the object is the **Per-Transition Object** with the parameter values for the running `Transition`.\n *\n * Because of these confusing details, this service is deprecated.\n *\n * ### Instead of using the global `$stateParams` service object,\n * inject [[$uiRouterGlobals]] and use [[UIRouterGlobals.params]]\n *\n * ```js\n * MyService.$inject = ['$uiRouterGlobals'];\n * function MyService($uiRouterGlobals) {\n * return {\n * paramValues: function () {\n * return $uiRouterGlobals.params;\n * }\n * }\n * }\n * ```\n *\n * ### Instead of using the per-transition `$stateParams` object,\n * inject the current `Transition` (as [[$transition$]]) and use [[Transition.params]]\n *\n * ```js\n * MyController.$inject = ['$transition$'];\n * function MyController($transition$) {\n * var username = $transition$.params().username;\n * // .. do something with username\n * }\n * ```\n *\n * ---\n *\n * This object can be injected into other services.\n *\n * #### Deprecated Example:\n * ```js\n * SomeService.$inject = ['$http', '$stateParams'];\n * function SomeService($http, $stateParams) {\n * return {\n * getUser: function() {\n * return $http.get('/api/users/' + $stateParams.username);\n * }\n * }\n * };\n * angular.service('SomeService', SomeService);\n * ```\n * @deprecated\n */\nlet $stateParams: StateParams;\n\n/**\n * Global UI-Router variables\n *\n * The router global state as a **Service Object** (injectable during runtime).\n *\n * This object contains globals such as the current state and current parameter values.\n */\nlet $uiRouterGlobals: UIRouterGlobals;\n\n/**\n * The UI-Router instance\n *\n * The [[UIRouter]] singleton (the router instance) as a **Service Object** (injectable during runtime).\n *\n * This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.\n * It has references to the other UI-Router services\n *\n * #### Note: This object is also exposed as [[$uiRouterProvider]] for injection during angular config time.\n */\nlet $uiRouter: UIRouter ;\n\n/**\n * The UI-Router instance\n *\n * The [[UIRouter]] singleton (the router instance) as a **Provider Object** (injectable during config phase).\n *\n * This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.\n * It has references to the other UI-Router services\n *\n * #### Note: This object is also exposed as [[$uiRouter]] for injection during runtime.\n */\nlet $uiRouterProvider: UIRouter;\n\n/**\n * Transition debug/tracing\n *\n * The [[Trace]] singleton as a **Service Object** (injectable during runtime).\n *\n * Enables or disables Transition tracing which can help to debug issues.\n */\nlet $trace: Trace;\n\n/**\n * The Transition Service\n *\n * The [[TransitionService]] singleton as a **Service Object** (injectable during runtime).\n *\n * This angular service exposes the [[TransitionService]] singleton, which is primarily\n * used to register global transition hooks.\n *\n * #### Note: This object is also exposed as [[$transitionsProvider]] for injection during the config phase.\n */\nlet $transitions: TransitionService;\n\n/**\n * The Transition Service\n *\n * The [[TransitionService]] singleton as a **Provider Object** (injectable during config phase)\n *\n * This angular service exposes the [[TransitionService]] singleton, which is primarily\n * used to register global transition hooks.\n *\n * #### Note: This object is also exposed as [[$transitions]] for injection during runtime.\n */\nlet $transitionsProvider: TransitionService;\n\n/**\n * The current [[Transition]] object\n *\n * The current [[Transition]] object as a **Per-Transition Object** (injectable into Resolve, Hooks, Controllers)\n *\n * This object returns information about the current transition, including:\n *\n * - To/from states\n * - To/from parameters\n * - Transition options\n * - States being entered, exited, and retained\n * - Resolve data\n * - A Promise for the transition\n * - Any transition failure information\n * - An injector for both Service and Per-Transition Objects\n */\nlet $transition$: Transition;\n\n/**\n * The State Service\n *\n * The [[StateService]] singleton as a **Service Object** (injectable during runtime).\n *\n * This service used to manage and query information on registered states.\n * It exposes state related APIs including:\n *\n * - Start a [[Transition]]\n * - Imperatively lazy load states\n * - Check if a state is currently active\n * - Look up states by name\n * - Build URLs for a state+parameters\n * - Configure the global Transition error handler\n *\n * This angular service exposes the [[StateService]] singleton.\n */\nlet $state: StateService;\n\n/**\n * The State Registry\n *\n * The [[StateRegistry]] singleton as a **Service Object** (injectable during runtime).\n *\n * This service is used to register/deregister states.\n * It has state registration related APIs including:\n *\n * - Register/deregister states\n * - Listen for state registration/deregistration\n * - Get states by name\n * - Add state decorators (to customize the state creation process)\n *\n * #### Note: This object is also exposed as [[$stateRegistryProvider]] for injection during the config phase.\n */\nlet $stateRegistry: StateRegistry;\n\n/**\n * The State Registry\n *\n * The [[StateRegistry]] singleton as a **Provider Object** (injectable during config time).\n *\n * This service is used to register/deregister states.\n * It has state registration related APIs including:\n *\n * - Register/deregister states\n * - Listen for state registration/deregistration\n * - Get states by name\n * - Add state decorators (to customize the state creation process)\n *\n * #### Note: This object is also exposed as [[$stateRegistry]] for injection during runtime.\n */\nlet $stateRegistryProvider: StateRegistry;\n\n/**\n * The View Scroll provider\n *\n * The [[UIViewScrollProvider]] as a **Provider Object** (injectable during config time).\n *\n * This angular service exposes the [[UIViewScrollProvider]] singleton and is\n * used to disable UI-Router's scroll behavior.\n */\nlet $uiViewScrollProvider: UIViewScrollProvider;\n\n/**\n * The View Scroll function\n *\n * The View Scroll function as a **Service Object** (injectable during runtime).\n *\n * This is a function that scrolls an element into view.\n * The element is scrolled after a `$timeout` so the DOM has time to refresh.\n *\n * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,\n * this can be enabled by calling [[UIViewScrollProvider.useAnchorScroll]].\n *\n * Note: this function is used by the [[directives.uiView]] when the `autoscroll` expression evaluates to true.\n */\nlet $uiViewScroll: ($element: JQuery) => void;\n\n/**\n * The StateProvider\n *\n * An angular1-only [[StateProvider]] as a **Provider Object** (injectable during config time).\n *\n * This angular service exposes the [[StateProvider]] singleton.\n *\n * The `StateProvider` is primarily used to register states or add custom state decorators.\n *\n * ##### Note: This provider is a ng1 vestige.\n * It is a passthrough to [[$stateRegistry]] and [[$state]].\n */\nlet $stateProvider: StateProvider;\n\n/**\n * The URL Service Provider\n *\n * The [[UrlService]] singleton as a **Provider Object** (injectable during the angular config phase).\n *\n * A service used to configure and interact with the URL.\n * It has URL related APIs including:\n *\n * - register custom Parameter types `UrlService.config.type` ([[UrlConfigApi.type]])\n * - add URL rules: `UrlService.rules.when` ([[UrlRulesApi.when]])\n * - configure behavior when no url matches: `UrlService.rules.otherwise` ([[UrlRulesApi.otherwise]])\n * - delay initial URL synchronization [[UrlService.deferIntercept]].\n * - get or set the current url: [[UrlService.url]]\n *\n * ##### Note: This service can also be injected during runtime as [[$urlService]].\n */\nlet $urlServiceProvider: UrlService;\n\n/**\n * The URL Service\n *\n * The [[UrlService]] singleton as a **Service Object** (injectable during runtime).\n *\n * Note: This service can also be injected during the config phase as [[$urlServiceProvider]].\n *\n * Used to configure the URL.\n * It has URL related APIs including:\n *\n * - register custom Parameter types `UrlService.config.type` ([[UrlConfigApi.type]])\n * - add URL rules: `UrlService.rules.when` ([[UrlRulesApi.when]])\n * - configure behavior when no url matches: `UrlService.rules.otherwise` ([[UrlRulesApi.otherwise]])\n * - delay initial URL synchronization [[UrlService.deferIntercept]].\n * - get or set the current url: [[UrlService.url]]\n *\n * ##### Note: This service can also be injected during the config phase as [[$urlServiceProvider]].\n */\nlet $urlService: UrlService;\n\n/**\n * The URL Router Provider\n *\n * ### Deprecation warning: This object is now considered internal. Use [[$urlServiceProvider]] instead.\n *\n * The [[UrlRouter]] singleton as a **Provider Object** (injectable during config time).\n *\n * #### Note: This object is also exposed as [[$urlRouter]] for injection during runtime.\n *\n * @deprecated\n */\nlet $urlRouterProvider: UrlRouterProvider;\n\n/**\n * The Url Router\n *\n * ### Deprecation warning: This object is now considered internal. Use [[$urlService]] instead.\n *\n * The [[UrlRouter]] singleton as a **Service Object** (injectable during runtime).\n *\n * #### Note: This object is also exposed as [[$urlRouterProvider]] for injection during angular config time.\n *\n * @deprecated\n */\nlet $urlRouter: UrlRouter;\n\n/**\n * The URL Matcher Factory\n *\n * ### Deprecation warning: This object is now considered internal. Use [[$urlService]] instead.\n *\n * The [[UrlMatcherFactory]] singleton as a **Service Object** (injectable during runtime).\n *\n * This service is used to set url mapping options, define custom parameter types, and create [[UrlMatcher]] objects.\n *\n * #### Note: This object is also exposed as [[$urlMatcherFactoryProvider]] for injection during angular config time.\n *\n * @deprecated\n */\nlet $urlMatcherFactory: UrlMatcherFactory;\n\n/**\n * The URL Matcher Factory\n *\n * ### Deprecation warning: This object is now considered internal. Use [[$urlService]] instead.\n *\n * The [[UrlMatcherFactory]] singleton as a **Provider Object** (injectable during config time).\n *\n * This service is used to set url mapping options, define custom parameter types, and create [[UrlMatcher]] objects.\n *\n * #### Note: This object is also exposed as [[$urlMatcherFactory]] for injection during runtime.\n *\n * @deprecated\n */\nlet $urlMatcherFactoryProvider: UrlMatcherFactory;\n\n\n\n", - "/**\n * # Angular 1 Directives\n *\n * These are the directives included in UI-Router for Angular 1.\n * These directives are used in templates to create viewports and link/navigate to states.\n *\n * @ng1api\n * @preferred\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IAugmentedJQuery, ITimeoutService, IScope, IInterpolateService } from 'angular';\n\nimport {\n Obj, extend, forEach, tail, isString, isObject, isArray, parse, noop, unnestR, identity, uniqR, inArray, removeFrom,\n RawParams, PathNode, StateOrName, StateService, StateDeclaration, UIRouter,\n} from '@uirouter/core';\nimport { UIViewData } from './viewDirective';\nimport EventHandler = JQuery.EventHandler;\n\n/** @hidden Used for typedoc */\nexport interface ng1_directive {} // tslint:disable-line:class-name\n\n/** @hidden */\nfunction parseStateRef(ref: string) {\n let parsed;\n const paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n if (paramsOnly) ref = '(' + paramsOnly[1] + ')';\n\n parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n}\n\n/** @hidden */\nfunction stateContext(el: IAugmentedJQuery) {\n const $uiView: UIViewData = (el.parent() as IAugmentedJQuery).inheritedData('$uiView');\n const path: PathNode[] = parse('$cfg.path')($uiView);\n return path ? tail(path).state.name : undefined;\n}\n\n/** @hidden */\nfunction processedDef($state: StateService, $element: IAugmentedJQuery, def: Def): Def {\n const uiState = def.uiState || $state.current.name;\n const uiStateOpts = extend(defaultOpts($element, $state), def.uiStateOpts || {});\n const href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n return { uiState, uiStateParams: def.uiStateParams, uiStateOpts, href };\n}\n\n/** @hidden */\ninterface TypeInfo {\n attr: string;\n isAnchor: boolean;\n clickable: boolean;\n}\n\n/** @hidden */\nfunction getTypeInfo(el: IAugmentedJQuery): TypeInfo {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n const isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n const isForm = el[0].nodeName === 'FORM';\n\n return {\n attr: isForm ? 'action' : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop('tagName').toUpperCase() === 'A',\n clickable: !isForm,\n };\n}\n\n/** @hidden */\nfunction clickHook(el: IAugmentedJQuery, $state: StateService, $timeout: ITimeoutService, type: TypeInfo, getDef: () => Def) {\n return function (e: JQueryMouseEventObject) {\n const button = e.which || e.button, target = getDef();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n const transition = $timeout(function () {\n $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the
directive.\n let ignorePreventDefaultCount = type.isAnchor && !target.href ? 1 : 0;\n\n e.preventDefault = function () {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\n/** @hidden */\nfunction defaultOpts(el: IAugmentedJQuery, $state: StateService) {\n return {\n relative: stateContext(el) || $state.$current,\n inherit: true,\n source: 'sref',\n };\n}\n\n/** @hidden */\nfunction bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: EventHandler, uiStateOpts: any): void {\n let events;\n\n if (uiStateOpts) {\n events = uiStateOpts.events;\n }\n\n if (!isArray(events)) {\n events = ['click'];\n }\n\n const on = element.on ? 'on' : 'bind';\n for (const event of events) {\n element[on](event, hookFn);\n }\n\n scope.$on('$destroy', function() {\n const off = element.off ? 'off' : 'unbind';\n for (const event of events) {\n element[off](event, hookFn);\n }\n });\n}\n\n/**\n * `ui-sref`: A directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of the `ui-sref` is the name of the state to link to.\n *\n * #### Example:\n * This will activate the `home` state when the link is clicked.\n * ```html\n * Home\n * ```\n *\n * ### Relative Links\n * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create a relative `ui-sref` which always targets the same destination.\n *\n * #### Example:\n * Both these links are relative to the parent state, even when a child state is currently active.\n * ```html\n * child 1 state\n * child 2 state\n * ```\n *\n * This link activates the parent state.\n * ```html\n * Return\n * ```\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * #### Example:\n * Assuming the `users` state has a url of `/users/`\n * ```html\n * Users\n * ```\n *\n * ### Parameter Values\n * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n * The content inside the parentheses is an expression, evaluated to the parameter values.\n *\n * #### Example:\n * This example renders a list of links to users.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ user.displayName }}\n *
  • \n * ```\n *\n * Note:\n * The parameter values expression is `$watch`ed for updates.\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-sref-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Examples\n * If you have the following template:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n * \n * ```\n *\n * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n *
      \n *
    • \n * Joe\n *
    • \n *
    • \n * Alice\n *
    • \n *
    • \n * Bob\n *
    • \n *
    \n *\n * Home\n * ```\n *\n * ### Notes\n *\n * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n *\n * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n */\nlet uiSrefDirective: ng1_directive;\nuiSrefDirective = ['$uiRouter', '$timeout',\n function $StateRefDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const ref = parseStateRef(attrs.uiSref);\n rawDef.uiState = ref.state;\n rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function (val) {\n rawDef.uiStateParams = extend({}, val);\n update();\n }, true);\n rawDef.uiStateParams = extend({}, scope.$eval(ref.paramExpr));\n }\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n/**\n * `ui-state`: A fully dynamic directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n *\n * #### Example:\n * Create a list of links.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Relative Links\n * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create relative `ui-state` which always targets the same destination.\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * ### Parameter Values\n * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n * Param values should be provided using the `ui-state-params` attribute.\n * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * This example renders a list of links with param values.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-state-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Notes\n *\n * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n * However, it might be simpler to use [[uiSref]] parameter-only links.\n *\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n * ```\n */\nlet uiStateDirective: ng1_directive;\nuiStateDirective = ['$uiRouter', '$timeout',\n function $StateRefDynamicDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n const watchDeregFns = inputAttrs.reduce((acc, attr) => (acc[attr] = noop, acc), {});\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n inputAttrs.forEach((field) => {\n rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n\n attrs.$observe(field, (expr) => {\n watchDeregFns[field]();\n watchDeregFns[field] = scope.$watch(expr, (newval) => {\n rawDef[field] = newval;\n update();\n }, true);\n });\n });\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n\n/**\n * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n *\n * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n * related directive's state is active (and remove them when it is inactive).\n *\n * The primary use-case is to highlight the active link in navigation menus,\n * distinguishing it from the inactive menu items.\n *\n * ### Linking to a `ui-sref` or `ui-state`\n * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n *\n * ### Matching\n *\n * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n * This is a \"fuzzy match\" which uses [[StateService.includes]].\n *\n * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n * This is an \"exact match\" which uses [[StateService.is]].\n *\n * ### Parameter values\n * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n *\n * #### Example:\n * ```html\n *
  • \n * {{ user.lastName }}\n *
  • \n * ```\n *\n * ### Examples\n *\n * Given the following template:\n * #### Example:\n * ```html\n * \n * ```\n *\n * When the app state is `app.user` (or any child state),\n * and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *\n * ```html\n * \n * ```\n *\n * ### Glob mode\n *\n * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n * The objects keys represent active class names and values represent the respective state names/globs.\n * `ui-sref-active` will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * #### Example:\n * Given the following template, with \"admin\" being an abstract state:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `
    ` and `` elements.\n * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n *\n * ### Notes:\n *\n * - The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n */\nlet uiSrefActiveDirective: ng1_directive;\nuiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter',\n function $StateRefActiveDirective($state: StateService, $stateParams: Obj, $interpolate: IInterpolateService, $uiRouter: UIRouter) {\n return {\n restrict: 'A',\n controller: ['$scope', '$element', '$attrs',\n function ($scope: IScope, $element: IAugmentedJQuery, $attrs: any) {\n const states: StateData[] = [];\n let activeEqClass: string;\n let uiSrefActive: any;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n if (isObject(uiSrefActive)) {\n forEach(uiSrefActive, function (stateOrName: StateOrName, activeClass: string) {\n if (isString(stateOrName)) {\n const ref = parseStateRef(stateOrName);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n }\n });\n }\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState: string, newParams: Obj) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n const deregister = addState(newState, newParams, uiSrefActive);\n update();\n return deregister;\n };\n\n function updateAfterTransition(trans) {\n trans.promise.then(update, noop);\n }\n\n $scope.$on('$stateChangeSuccess', update);\n $scope.$on('$destroy', $uiRouter.transitionService.onStart({}, updateAfterTransition));\n if ($uiRouter.globals.transition) {\n updateAfterTransition($uiRouter.globals.transition);\n }\n\n function addState(stateName: string, stateParams: Obj, activeClass: string) {\n const state = $state.get(stateName, stateContext($element));\n\n const stateInfo = {\n state: state || { name: stateName },\n params: stateParams,\n activeClass: activeClass,\n };\n\n states.push(stateInfo);\n\n return function removeState() {\n removeFrom(states)(stateInfo);\n };\n }\n\n // Update route state\n function update() {\n const splitClasses = str =>\n str.split(/\\s/).filter(identity);\n const getClasses = (stateList: StateData[]) =>\n stateList.map(x => x.activeClass).map(splitClasses).reduce(unnestR, []);\n\n const allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(uniqR, []);\n const fuzzyClasses = getClasses(states.filter(x => $state.includes(x.state.name, x.params)));\n const exactlyMatchesAny = !!states.filter(x => $state.is(x.state.name, x.params)).length;\n const exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n\n const addClasses = fuzzyClasses.concat(exactClasses).reduce(uniqR, []);\n const removeClasses = allClasses.filter(cls => !inArray(addClasses, cls));\n\n $scope.$evalAsync(() => {\n addClasses.forEach(className => $element.addClass(className));\n removeClasses.forEach(className => $element.removeClass(className));\n });\n }\n\n update();\n }],\n };\n }];\n\n/** @hidden */\ninterface Def { uiState: string; href: string; uiStateParams: Obj; uiStateOpts: any; }\n/** @hidden */\ninterface StateData { state: StateDeclaration; params: RawParams; activeClass: string; }\n\nangular.module('ui.router.state')\n .directive('uiSref', uiSrefDirective)\n .directive('uiSrefActive', uiSrefActiveDirective)\n .directive('uiSrefActiveEq', uiSrefActiveDirective)\n .directive('uiState', uiStateDirective);\n", + "/**\n * # Angular 1 Directives\n *\n * These are the directives included in UI-Router for Angular 1.\n * These directives are used in templates to create viewports and link/navigate to states.\n *\n * @ng1api\n * @preferred\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IAugmentedJQuery, ITimeoutService, IScope, IInterpolateService } from 'angular';\n\nimport {\n Obj, extend, forEach, tail, isString, isObject, isArray, parse, noop, unnestR, identity, uniqR, inArray, removeFrom,\n RawParams, PathNode, StateOrName, StateService, StateDeclaration, UIRouter,\n} from '@uirouter/core';\nimport { UIViewData } from './viewDirective';\nimport EventHandler = JQuery.EventHandler;\n\n/** @hidden Used for typedoc */\nexport interface ng1_directive {} // tslint:disable-line:class-name\n\n/** @hidden */\nfunction parseStateRef(ref: string) {\n let parsed;\n const paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n if (paramsOnly) ref = '(' + paramsOnly[1] + ')';\n\n parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n}\n\n/** @hidden */\nfunction stateContext(el: IAugmentedJQuery) {\n const $uiView: UIViewData = (el.parent() as IAugmentedJQuery).inheritedData('$uiView');\n const path: PathNode[] = parse('$cfg.path')($uiView);\n return path ? tail(path).state.name : undefined;\n}\n\n/** @hidden */\nfunction processedDef($state: StateService, $element: IAugmentedJQuery, def: Def): Def {\n const uiState = def.uiState || $state.current.name;\n const uiStateOpts = extend(defaultOpts($element, $state), def.uiStateOpts || {});\n const href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n return { uiState, uiStateParams: def.uiStateParams, uiStateOpts, href };\n}\n\n/** @hidden */\ninterface TypeInfo {\n attr: string;\n isAnchor: boolean;\n clickable: boolean;\n}\n\n/** @hidden */\nfunction getTypeInfo(el: IAugmentedJQuery): TypeInfo {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n const isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n const isForm = el[0].nodeName === 'FORM';\n\n return {\n attr: isForm ? 'action' : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop('tagName').toUpperCase() === 'A',\n clickable: !isForm,\n };\n}\n\n/** @hidden */\nfunction clickHook(el: IAugmentedJQuery, $state: StateService, $timeout: ITimeoutService, type: TypeInfo, getDef: () => Def) {\n return function (e: JQueryMouseEventObject) {\n const button = e.which || e.button, target = getDef();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n const transition = $timeout(function () {\n $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the directive.\n let ignorePreventDefaultCount = type.isAnchor && !target.href ? 1 : 0;\n\n e.preventDefault = function () {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\n/** @hidden */\nfunction defaultOpts(el: IAugmentedJQuery, $state: StateService) {\n return {\n relative: stateContext(el) || $state.$current,\n inherit: true,\n source: 'sref',\n };\n}\n\n/** @hidden */\nfunction bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: EventHandler, uiStateOpts: any): void {\n let events;\n\n if (uiStateOpts) {\n events = uiStateOpts.events;\n }\n\n if (!isArray(events)) {\n events = ['click'];\n }\n\n const on = element.on ? 'on' : 'bind';\n for (const event of events) {\n element[on](event, hookFn);\n }\n\n scope.$on('$destroy', function() {\n const off = element.off ? 'off' : 'unbind';\n for (const event of events) {\n element[off](event, hookFn);\n }\n });\n}\n\n/**\n * `ui-sref`: A directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of the `ui-sref` is the name of the state to link to.\n *\n * #### Example:\n * This will activate the `home` state when the link is clicked.\n * ```html\n * Home\n * ```\n *\n * ### Relative Links\n * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create a relative `ui-sref` which always targets the same destination.\n *\n * #### Example:\n * Both these links are relative to the parent state, even when a child state is currently active.\n * ```html\n * child 1 state\n * child 2 state\n * ```\n *\n * This link activates the parent state.\n * ```html\n * Return\n * ```\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * #### Example:\n * Assuming the `users` state has a url of `/users/`\n * ```html\n * Users\n * ```\n *\n * ### Parameter Values\n * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n * The content inside the parentheses is an expression, evaluated to the parameter values.\n *\n * #### Example:\n * This example renders a list of links to users.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ user.displayName }}\n *
  • \n * ```\n *\n * Note:\n * The parameter values expression is `$watch`ed for updates.\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-sref-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Examples\n * If you have the following template:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n * \n * ```\n *\n * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n *
      \n *
    • \n * Joe\n *
    • \n *
    • \n * Alice\n *
    • \n *
    • \n * Bob\n *
    • \n *
    \n *\n * Home\n * ```\n *\n * ### Notes\n *\n * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n *\n * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n */\nlet uiSrefDirective: ng1_directive;\nuiSrefDirective = ['$uiRouter', '$timeout',\n function $StateRefDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const ref = parseStateRef(attrs.uiSref);\n rawDef.uiState = ref.state;\n rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function (val) {\n rawDef.uiStateParams = extend({}, val);\n update();\n }, true);\n rawDef.uiStateParams = extend({}, scope.$eval(ref.paramExpr));\n }\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n/**\n * `ui-state`: A fully dynamic directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n *\n * #### Example:\n * Create a list of links.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Relative Links\n * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create relative `ui-state` which always targets the same destination.\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * ### Parameter Values\n * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n * Param values should be provided using the `ui-state-params` attribute.\n * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * This example renders a list of links with param values.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-state-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Notes\n *\n * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n * However, it might be simpler to use [[uiSref]] parameter-only links.\n *\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n * ```\n */\nlet uiStateDirective: ng1_directive;\nuiStateDirective = ['$uiRouter', '$timeout',\n function $StateRefDynamicDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n const watchDeregFns = inputAttrs.reduce((acc, attr) => (acc[attr] = noop, acc), {});\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n inputAttrs.forEach((field) => {\n rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n\n attrs.$observe(field, (expr) => {\n watchDeregFns[field]();\n watchDeregFns[field] = scope.$watch(expr, (newval) => {\n rawDef[field] = newval;\n update();\n }, true);\n });\n });\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n\n/**\n * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n *\n * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n * related directive's state is active (and remove them when it is inactive).\n *\n * The primary use-case is to highlight the active link in navigation menus,\n * distinguishing it from the inactive menu items.\n *\n * ### Linking to a `ui-sref` or `ui-state`\n * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n *\n * ### Matching\n *\n * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n * This is a \"fuzzy match\" which uses [[StateService.includes]].\n *\n * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n * This is an \"exact match\" which uses [[StateService.is]].\n *\n * ### Parameter values\n * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n *\n * #### Example:\n * ```html\n *
  • \n * {{ user.lastName }}\n *
  • \n * ```\n *\n * ### Examples\n *\n * Given the following template:\n * #### Example:\n * ```html\n * \n * ```\n *\n * When the app state is `app.user` (or any child state),\n * and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *\n * ```html\n * \n * ```\n *\n * ### Glob mode\n *\n * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n * The objects keys represent active class names and values represent the respective state names/globs.\n * `ui-sref-active` will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * #### Example:\n * Given the following template, with \"admin\" being an abstract state:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * Arrays are also supported as values in the `ngClass`-like interface.\n * This allows multiple states to add `active` class.\n *\n * #### Example:\n * Given the following template, with \"admin.roles\" being the current state, the class will be added too:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `
    ` and `` elements.\n * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n *\n * ### Notes:\n *\n * - The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n */\nlet uiSrefActiveDirective: ng1_directive;\nuiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter',\n function $StateRefActiveDirective($state: StateService, $stateParams: Obj, $interpolate: IInterpolateService, $uiRouter: UIRouter) {\n return {\n restrict: 'A',\n controller: ['$scope', '$element', '$attrs',\n function ($scope: IScope, $element: IAugmentedJQuery, $attrs: any) {\n let states: StateData[] = [];\n let activeEqClass: string;\n let uiSrefActive: any;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n setStatesFromDefinitionObject(uiSrefActive);\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState: string, newParams: Obj) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n const deregister = addState(newState, newParams, uiSrefActive);\n update();\n return deregister;\n };\n\n function updateAfterTransition(trans) {\n trans.promise.then(update, noop);\n }\n $scope.$on('$destroy', setupEventListeners());\n if ($uiRouter.globals.transition) {\n updateAfterTransition($uiRouter.globals.transition);\n }\n\n function setupEventListeners () {\n const deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged);\n const deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition);\n const deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update);\n return function cleanUp () {\n deregisterStatesChangedListener();\n deregisterOnStartListener();\n deregisterStateChangeSuccessListener();\n };\n }\n\n function handleStatesChanged () {\n setStatesFromDefinitionObject(uiSrefActive);\n }\n\n function setStatesFromDefinitionObject (statesDefinition: object) {\n if (isObject(statesDefinition)) {\n states = [];\n forEach(statesDefinition, function (stateOrName: StateOrName | Array, activeClass: string) {\n // Helper function to abstract adding state.\n const addStateForClass = function (stateOrName: string, activeClass: string) {\n const ref = parseStateRef(stateOrName);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n };\n\n if (isString(stateOrName)) {\n // If state is string, just add it.\n addStateForClass(stateOrName as string, activeClass)\n } else if (isArray(stateOrName)) {\n // If state is an array, iterate over it and add each array item individually.\n forEach(stateOrName, function (stateOrName: string) {\n addStateForClass(stateOrName, activeClass)\n });\n }\n });\n }\n }\n\n function addState(stateName: string, stateParams: Obj, activeClass: string) {\n const state = $state.get(stateName, stateContext($element));\n\n const stateInfo = {\n state: state || { name: stateName },\n params: stateParams,\n activeClass: activeClass,\n };\n\n states.push(stateInfo);\n\n return function removeState() {\n removeFrom(states)(stateInfo);\n };\n }\n\n // Update route state\n function update() {\n const splitClasses = str =>\n str.split(/\\s/).filter(identity);\n const getClasses = (stateList: StateData[]) =>\n stateList.map(x => x.activeClass).map(splitClasses).reduce(unnestR, []);\n\n const allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(uniqR, []);\n const fuzzyClasses = getClasses(states.filter(x => $state.includes(x.state.name, x.params)));\n const exactlyMatchesAny = !!states.filter(x => $state.is(x.state.name, x.params)).length;\n const exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n\n const addClasses = fuzzyClasses.concat(exactClasses).reduce(uniqR, []);\n const removeClasses = allClasses.filter(cls => !inArray(addClasses, cls));\n\n $scope.$evalAsync(() => {\n addClasses.forEach(className => $element.addClass(className));\n removeClasses.forEach(className => $element.removeClass(className));\n });\n }\n\n update();\n }],\n };\n }];\n\n/** @hidden */\ninterface Def { uiState: string; href: string; uiStateParams: Obj; uiStateOpts: any; }\n/** @hidden */\ninterface StateData { state: StateDeclaration; params: RawParams; activeClass: string; }\n\nangular.module('ui.router.state')\n .directive('uiSref', uiSrefDirective)\n .directive('uiSrefActive', uiSrefActiveDirective)\n .directive('uiSrefActiveEq', uiSrefActiveDirective)\n .directive('uiState', uiStateDirective);\n", "/** @module ng1 */ /** for typedoc */\n\nimport { ng as angular } from './angular';\nimport { Obj, StateService, StateOrName } from '@uirouter/core';\n\n/**\n * `isState` Filter: truthy if the current state is the parameter\n *\n * Translates to [[StateService.is]] `$state.is(\"stateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state is 'stateName'
    \n * ```\n */\n$IsStateFilter.$inject = ['$state'];\nexport function $IsStateFilter($state: StateService) {\n const isFilter: any = function(state: StateOrName, params: Obj, options?: { relative?: StateOrName }) {\n return $state.is(state, params, options);\n };\n isFilter.$stateful = true;\n return isFilter;\n}\n\n/**\n * `includedByState` Filter: truthy if the current state includes the parameter\n *\n * Translates to [[StateService.includes]]` $state.is(\"fullOrPartialStateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state includes 'fullOrPartialStateName'
    \n * ```\n */\n$IncludedByStateFilter.$inject = ['$state'];\nexport function $IncludedByStateFilter($state: StateService) {\n const includesFilter: any = function(state: StateOrName, params: Obj, options: { relative?: StateOrName }) {\n return $state.includes(state, params, options);\n };\n includesFilter.$stateful = true;\n return includesFilter;\n}\n\nangular.module('ui.router.state')\n .filter('isState', $IsStateFilter)\n .filter('includedByState', $IncludedByStateFilter);\n", "/**\n * @ng1api\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IInterpolateService, IScope, ITranscludeFunction, IAugmentedJQuery, ITimeoutService } from 'angular';\n\nimport {\n extend, unnestR, filter, tail, isDefined, isFunction, isString, trace, parse,\n ActiveUIView, TransitionService, ResolveContext, Transition, PathNode, StateDeclaration,\n Param, kebobString, HookRegOptions, ViewService, $QLike, Obj, TypedMap, noop,\n} from '@uirouter/core';\nimport { Ng1ViewConfig } from '../statebuilders/views';\nimport { Ng1Controller, Ng1StateDeclaration } from '../interface';\nimport { getLocals } from '../services';\nimport { ng1_directive } from './stateDirectives';\n\n/** @hidden */\nexport type UIViewData = {\n $cfg: Ng1ViewConfig;\n $uiView: ActiveUIView;\n};\n\n/** @hidden */\nexport type UIViewAnimData = {\n $animEnter: Promise;\n $animLeave: Promise;\n $$animLeave: { resolve: () => any; } // \"deferred\"\n};\n\n/**\n * `ui-view`: A viewport directive which is filled in by a view from the active state.\n *\n * ### Attributes\n *\n * - `name`: (Optional) A view name.\n * The name should be unique amongst the other views in the same state.\n * You can have views of the same name that live in different states.\n * The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).\n *\n * - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.\n * Uses [[$uiViewScroll]] to do the scrolling.\n *\n * - `onload`: Expression to evaluate whenever the view updates.\n *\n * #### Example:\n * A view can be unnamed or named.\n * ```html\n * \n *
    \n *\n * \n *
    \n *\n * \n * \n * ```\n *\n * You can only have one unnamed view within any template (or root html). If you are only using a\n * single view and it is unnamed then you can populate it like so:\n *\n * ```html\n *
    \n * $stateProvider.state(\"home\", {\n * template: \"

    HELLO!

    \"\n * })\n * ```\n *\n * The above is a convenient shortcut equivalent to specifying your view explicitly with the\n * [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * But typically you'll only use the views property if you name your view or have more than one view\n * in the same template. There's not really a compelling reason to name a view if its the only one,\n * but you could if you wanted, like so:\n *\n * ```html\n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"main\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * Really though, you'll use views to set up multiple views:\n *\n * ```html\n *
    \n *
    \n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * },\n * \"chart\": {\n * template: \"\"\n * },\n * \"data\": {\n * template: \"\"\n * }\n * }\n * })\n * ```\n *\n * #### Examples for `autoscroll`:\n * ```html\n * \n * \n *\n * \n * \n * \n * \n * ```\n *\n * Resolve data:\n *\n * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n * can be customized using [[Ng1ViewDeclaration.resolveAs]]). This can be then accessed from the template.\n *\n * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n * controller is instantiated. The `$onInit()` hook can be used to perform initialization code which\n * depends on `$resolve` data.\n *\n * #### Example:\n * ```js\n * $stateProvider.state('home', {\n * template: '',\n * resolve: {\n * user: function(UserService) { return UserService.fetchUser(); }\n * }\n * });\n * ```\n */\nexport let uiView: ng1_directive;\nuiView = ['$view', '$animate', '$uiViewScroll', '$interpolate', '$q',\nfunction $ViewDirective($view: ViewService, $animate: any, $uiViewScroll: any, $interpolate: IInterpolateService, $q: $QLike) {\n\n function getRenderer(attrs: Obj, scope: IScope) {\n return {\n enter: function(element: JQuery, target: any, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.enter(element, null, target).then(cb);\n } else {\n $animate.enter(element, null, target, cb);\n }\n },\n leave: function(element: JQuery, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.leave(element).then(cb);\n } else {\n $animate.leave(element, cb);\n }\n },\n };\n }\n\n function configsEqual(config1: Ng1ViewConfig, config2: Ng1ViewConfig) {\n return config1 === config2;\n }\n\n const rootData = {\n $cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },\n $uiView: { },\n };\n\n const directive = {\n count: 0,\n restrict: 'ECA',\n terminal: true,\n priority: 400,\n transclude: 'element',\n compile: function (tElement: JQuery, tAttrs: Obj, $transclude: ITranscludeFunction) {\n\n return function (scope: IScope, $element: IAugmentedJQuery, attrs: Obj) {\n const onloadExp = attrs['onload'] || '',\n autoScrollExp = attrs['autoscroll'],\n renderer = getRenderer(attrs, scope),\n inherited = $element.inheritedData('$uiView') || rootData,\n name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';\n\n let previousEl: JQuery,\n currentEl: JQuery,\n currentScope: IScope,\n viewConfig: Ng1ViewConfig,\n unregister: Function;\n\n const activeUIView: ActiveUIView = {\n $type: 'ng1',\n id: directive.count++, // Global sequential ID for ui-view tags added to DOM\n name: name, // ui-view name (
    \n fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name, // fully qualified name, describes location in DOM\n config: null, // The ViewConfig loaded (from a state.views definition)\n configUpdated: configUpdatedCallback, // Called when the matching ViewConfig changes\n get creationContext() { // The context in which this ui-view \"tag\" was created\n const fromParentTagConfig = parse('$cfg.viewDecl.$context')(inherited);\n // Allow \n // See https://github.com/angular-ui/ui-router/issues/3355\n const fromParentTag = parse('$uiView.creationContext')(inherited);\n return fromParentTagConfig || fromParentTag;\n },\n };\n\n trace.traceUIViewEvent('Linking', activeUIView);\n\n function configUpdatedCallback(config?: Ng1ViewConfig) {\n if (config && !(config instanceof Ng1ViewConfig)) return;\n if (configsEqual(viewConfig, config)) return;\n trace.traceUIViewConfigUpdated(activeUIView, config && config.viewDecl && config.viewDecl.$context);\n\n viewConfig = config;\n updateView(config);\n }\n\n $element.data('$uiView', { $uiView: activeUIView });\n\n updateView();\n\n unregister = $view.registerUIView(activeUIView);\n scope.$on('$destroy', function() {\n trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);\n unregister();\n });\n\n function cleanupLastView() {\n if (previousEl) {\n trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));\n previousEl.remove();\n previousEl = null;\n }\n\n if (currentScope) {\n trace.traceUIViewEvent('Destroying scope', activeUIView);\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentEl) {\n const _viewData = currentEl.data('$uiViewAnim');\n trace.traceUIViewEvent('Animate out', _viewData);\n renderer.leave(currentEl, function() {\n _viewData.$$animLeave.resolve();\n previousEl = null;\n });\n\n previousEl = currentEl;\n currentEl = null;\n }\n }\n\n function updateView(config?: Ng1ViewConfig) {\n const newScope = scope.$new();\n const animEnter = $q.defer(), animLeave = $q.defer();\n\n const $uiViewData: UIViewData = {\n $cfg: config,\n $uiView: activeUIView,\n };\n\n const $uiViewAnim: UIViewAnimData = {\n $animEnter: animEnter.promise,\n $animLeave: animLeave.promise,\n $$animLeave: animLeave,\n };\n\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoading\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n *\n * Fired once the view **begins loading**, *before* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n newScope.$emit('$viewContentLoading', name);\n\n const cloned = $transclude(newScope, function(clone) {\n clone.data('$uiViewAnim', $uiViewAnim);\n clone.data('$uiView', $uiViewData);\n renderer.enter(clone, $element, function onUIViewEnter() {\n animEnter.resolve();\n if (currentScope) currentScope.$emit('$viewContentAnimationEnded');\n\n if (isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n $uiViewScroll(clone);\n }\n });\n\n cleanupLastView();\n });\n\n currentEl = cloned;\n currentScope = newScope;\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoaded\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description *\n * Fired once the view is **loaded**, *after* the DOM is rendered.\n *\n * @param {Object} event Event object.\n */\n currentScope.$emit('$viewContentLoaded', config || viewConfig);\n currentScope.$eval(onloadExp);\n }\n };\n },\n };\n\n return directive;\n}];\n\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$transitions', '$view', '$q', '$timeout'];\n/** @hidden */\nfunction $ViewDirectiveFill($compile: angular.ICompileService,\n $controller: angular.IControllerService,\n $transitions: TransitionService,\n $view: ViewService,\n $q: angular.IQService,\n $timeout: ITimeoutService) {\n const getControllerAs = parse('viewDecl.controllerAs');\n const getResolveAs = parse('viewDecl.resolveAs');\n\n return {\n restrict: 'ECA',\n priority: -400,\n compile: function (tElement: JQuery) {\n const initial = tElement.html();\n tElement.empty();\n\n return function (scope: IScope, $element: JQuery) {\n const data: UIViewData = $element.data('$uiView');\n if (!data) {\n $element.html(initial);\n $compile($element.contents() as any)(scope);\n return;\n }\n\n const cfg: Ng1ViewConfig = data.$cfg || { viewDecl: {}, getTemplate: noop };\n const resolveCtx: ResolveContext = cfg.path && new ResolveContext(cfg.path);\n $element.html(cfg.getTemplate($element, resolveCtx) || initial);\n trace.traceUIViewFill(data.$uiView, $element.html());\n\n const link = $compile($element.contents() as any);\n const controller = cfg.controller;\n const controllerAs: string = getControllerAs(cfg);\n const resolveAs: string = getResolveAs(cfg);\n const locals = resolveCtx && getLocals(resolveCtx);\n\n scope[resolveAs] = locals;\n\n if (controller) {\n const controllerInstance = $controller(controller, extend({}, locals, { $scope: scope, $element: $element }));\n if (controllerAs) {\n scope[controllerAs] = controllerInstance;\n scope[controllerAs][resolveAs] = locals;\n }\n\n // TODO: Use $view service as a central point for registering component-level hooks\n // Then, when a component is created, tell the $view service, so it can invoke hooks\n // $view.componentLoaded(controllerInstance, { $scope: scope, $element: $element });\n // scope.$on('$destroy', () => $view.componentUnloaded(controllerInstance, { $scope: scope, $element: $element }));\n\n $element.data('$ngControllerController', controllerInstance);\n $element.children().data('$ngControllerController', controllerInstance);\n\n registerControllerCallbacks($q, $transitions, controllerInstance, scope, cfg);\n }\n\n // Wait for the component to appear in the DOM\n if (isString(cfg.viewDecl.component)) {\n const cmp = cfg.viewDecl.component;\n const kebobName = kebobString(cmp);\n const tagRegexp = new RegExp(`^(x-|data-)?${kebobName}$`, 'i');\n\n const getComponentController = () => {\n const directiveEl = [].slice.call($element[0].children)\n .filter((el: Element) => el && el.tagName && tagRegexp.exec(el.tagName)) ;\n\n return directiveEl && angular.element(directiveEl).data(`$${cmp}Controller`);\n };\n\n const deregisterWatch = scope.$watch(getComponentController, function(ctrlInstance) {\n if (!ctrlInstance) return;\n registerControllerCallbacks($q, $transitions, ctrlInstance, scope, cfg);\n deregisterWatch();\n });\n }\n\n link(scope);\n };\n },\n };\n}\n\n/** @hidden */\nconst hasComponentImpl = typeof (angular as any).module('ui.router')['component'] === 'function';\n/** @hidden incrementing id */\nlet _uiCanExitId = 0;\n\n/** @hidden TODO: move these callbacks to $view and/or `/hooks/components.ts` or something */\nfunction registerControllerCallbacks($q: angular.IQService,\n $transitions: TransitionService,\n controllerInstance: Ng1Controller,\n $scope: IScope,\n cfg: Ng1ViewConfig) {\n // Call $onInit() ASAP\n if (isFunction(controllerInstance.$onInit) && !(cfg.viewDecl.component && hasComponentImpl)) {\n controllerInstance.$onInit();\n }\n\n const viewState: Ng1StateDeclaration = tail(cfg.path).state.self;\n\n const hookOptions: HookRegOptions = { bind: controllerInstance };\n // Add component-level hook for onParamsChange\n if (isFunction(controllerInstance.uiOnParamsChanged)) {\n const resolveContext: ResolveContext = new ResolveContext(cfg.path);\n const viewCreationTrans = resolveContext.getResolvable('$transition$').data;\n\n // Fire callback on any successful transition\n const paramsUpdated = ($transition$: Transition) => {\n // Exit early if the $transition$ is the same as the view was created within.\n // Exit early if the $transition$ will exit the state the view is for.\n if ($transition$ === viewCreationTrans || $transition$.exiting().indexOf(viewState as StateDeclaration) !== -1) return;\n\n const toParams = $transition$.params('to') as TypedMap;\n const fromParams = $transition$.params>('from') as TypedMap;\n const toSchema: Param[] = $transition$.treeChanges().to.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n const fromSchema: Param[] = $transition$.treeChanges().from.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n\n // Find the to params that have different values than the from params\n const changedToParams = toSchema.filter((param: Param) => {\n const idx = fromSchema.indexOf(param);\n return idx === -1 || !fromSchema[idx].type.equals(toParams[param.id], fromParams[param.id]);\n });\n\n // Only trigger callback if a to param has changed or is new\n if (changedToParams.length) {\n const changedKeys: string[] = changedToParams.map(x => x.id);\n // Filter the params to only changed/new to params. `$transition$.params()` may be used to get all params.\n const newValues = filter(toParams, (val, key) => changedKeys.indexOf(key) !== -1);\n controllerInstance.uiOnParamsChanged(newValues, $transition$);\n }\n };\n $scope.$on('$destroy', $transitions.onSuccess({}, paramsUpdated, hookOptions));\n }\n\n // Add component-level hook for uiCanExit\n if (isFunction(controllerInstance.uiCanExit)) {\n const id = _uiCanExitId++;\n const cacheProp = '_uiCanExitIds';\n\n // Returns true if a redirect transition already answered truthy\n const prevTruthyAnswer = (trans: Transition) =>\n !!trans && (trans[cacheProp] && trans[cacheProp][id] === true || prevTruthyAnswer(trans.redirectedFrom()));\n\n // If a user answered yes, but the transition was later redirected, don't also ask for the new redirect transition\n const wrappedHook = (trans: Transition) => {\n let promise;\n const ids = trans[cacheProp] = trans[cacheProp] || {};\n\n if (!prevTruthyAnswer(trans)) {\n promise = $q.when(controllerInstance.uiCanExit(trans));\n promise.then(val => ids[id] = (val !== false));\n }\n return promise;\n };\n\n const criteria = { exiting: viewState.name };\n $scope.$on('$destroy', $transitions.onBefore(criteria, wrappedHook, hookOptions));\n }\n}\n\nangular.module('ui.router.state').directive('uiView', uiView);\nangular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n", "/** @module ng1 */ /** */\nimport { ng as angular } from './angular';\nimport { IServiceProviderFactory } from 'angular';\nimport IAnchorScrollService = angular.IAnchorScrollService;\nimport ITimeoutService = angular.ITimeoutService;\n\nexport interface UIViewScrollProvider {\n /**\n * Uses standard anchorScroll behavior\n *\n * Reverts [[$uiViewScroll]] back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)\n * service for scrolling based on the url anchor.\n */\n useAnchorScroll(): void;\n}\n\n\n/** @hidden */\nfunction $ViewScrollProvider() {\n\n let useAnchorScroll = false;\n\n this.useAnchorScroll = function () {\n useAnchorScroll = true;\n };\n\n this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll: IAnchorScrollService, $timeout: ITimeoutService): Function {\n if (useAnchorScroll) {\n return $anchorScroll;\n }\n\n return function ($element: JQuery) {\n return $timeout(function () {\n $element[0].scrollIntoView();\n }, 0, false);\n };\n }];\n}\n\nangular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n", @@ -186,5 +186,5 @@ "__extends", "id" ], - "mappings": "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" + "mappings": ";;;;;;;;;;;;;;;;AAMA,IAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,AAAO,IAAM,EAAE,GAAG,CAAC,cAAc,IAAIA,qBAAqB,IAAI,cAAc,GAAG,cAAc;;ACR7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,eAAsB,EAAY;IAChC,IAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;IAEnC,iBAAiB,IAAW;QAC1B,IAAI,IAAI,CAAC,MAAM,IAAI,gBAAgB;YACjC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO;YACL,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACxD,CAAC;KACH;IACD,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B;;;;;;;AAUD;IACE,IAAM,IAAI,GAAG,SAAS,CAAC;IACvB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO,CAAC,EAAE;YAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;KACf,CAAC;CACH;;;;;;;AAQD;IAAqB,eAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,0BAAoB;;IACvC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAChE;;;;;;;AAQD,AAAO,IAAM,IAAI,GAAG,UAAC,IAAY;IAC7B,OAAA,UAAC,GAAQ,IAAK,OAAA,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAA;CAAA,CAAC;;;;;;;;AASnC,AAAO,IAAM,MAAM,GAAG,KAAK,CAAC,UAAC,IAAY,EAAE,IAAS,EAAE,GAAQ,IAAK,OAAA,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAA,CAAC,CAAC;;;;;;;;;AAU9F,AAAO,IAAM,KAAK,GAAG,UAAC,IAAY;IAC9B,OAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAAA,CAAC;;;;;AAMhD,AAAO,IAAM,GAAG,GAA2C,UAAC,EAAkB;IAC1E,OAAA;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAAK,OAAA,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;KAAA;CAAA,CAAC;;;;;AAM9C,aAAoB,GAAmB,EAAE,GAAmB;IAC1D,OAAO;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAAK,OAAA,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;KAAA,CAAC;CAC3E;;;;;AAMD,YAAmB,GAAmB,EAAE,GAAmB;IACzD,OAAO;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAAK,OAAA,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;KAAA,CAAC;CAC3E;;;;;;;AAQD,AAAO,IAAM,GAAG,GAAG,UAAC,GAAmB;IACnC,OAAA,UAAC,GAAU,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAA,EAAE,IAAI,CAAY,GAAA;CAAA,CAAC;;AAGzE,AAAO,IAAM,GAAG,GAAG,UAAC,GAAmB;IACnC,OAAA,UAAC,GAAU,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAA,EAAE,KAAK,CAAY,GAAA;CAAA,CAAC;;AAG1E,AAAO,IAAM,EAAE,GAAG,UAAK,IAAyB;IAC5C,OAAA,UAAC,GAAQ;QACL,QAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,YAAY,IAAI;KAAC;CAAA,CAAC;;AAGzE,AAAO,IAAM,EAAE,GAAkC,UAAC,KAAU,IAAK,OAAA,UAAC,KAAU;IACxE,OAAA,KAAK,KAAK,KAAK;CAAA,GAAA,CAAC;;AAGpB,AAAO,IAAM,GAAG,GAAG,UAAK,CAAI,IAAK,OAAA,cAAM,OAAA,CAAC,GAAA,GAAA,CAAC;AAMzC,gBAAuB,MAAc,EAAE,IAAY;IACjD,OAAO,UAAC,GAAQ;QACZ,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;KAAA,CAAC;CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CD,iBAAwB,MAAoB;IAC1C,OAAO,UAAS,CAAM;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C;KACF,CAAC;CACH;;AClOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA;IAeE,cAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACpC,GAAG,CAAC,UAAA,GAAG;YACN,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,oBAAoB,CAAC;YAC9C,IAAI,GAAG,KAAK,GAAG;gBAAG,OAAO,UAAU,CAAC;YACpC,OAAyB,KAAK,GAAG,GAAG,CAAC;SACtC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;KACpD;;IArBM,OAAE,GAAT,UAAU,IAAY;QACpB,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;;IAGM,eAAU,GAAjB,UAAkB,IAAY;QAC5B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9C;IAgBD,sBAAO,GAAP,UAAQ,IAAY;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;KACrC;IACH,WAAC;CAAA;;ACnED;;;;;;;;;;AAUA;;IA+GE,qBAAY,MAAyB;QACnC,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KACzC;;;;;;;;;IAxBM,kBAAM,GAAb,UAAc,SAA4B;QACxC,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,EAAE,GAAG,SAAS,CAAC;QAE9E,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAgB,CAAC;QAChF,SAAS,CAAC,OAAO,GAAG,cAAM,OAAA,KAAK,GAAA,CAAC;QAChC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QACvB,KAAK,CAAC,kBAAkB,GAAG;YACzB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;SACtC,CAAC;QACF,OAAO,KAAK,CAAC;KACd;;;;;;;;;;;;IA2BD,wBAAE,GAAF,UAAG,GAAwC;QACzC,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;KAChE;;;;;IAMD,yBAAG,GAAH;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC;QACjF,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KAClD;;;;;;IAOD,0BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;KAClD;;;;;;;;;;IAWD,gCAAU,GAAV,UAAW,IAAgD;QACzD,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;KACxF;;;;;;;;IASD,+BAAS,GAAT,UAAU,EAAU,EAAE,IAAgC;QAAhC,qBAAA,EAAA,SAAgC;QACpD,QACI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAC1D;KACH;IAED,8BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;KACnB;;IAhFM,wBAAY,GAAG,UAAC,SAA4B;QACjD,OAAA,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI;KAAA,CAAC;;IAG1D,mBAAO,GAAG,UAAC,GAAQ;QACxB,OAAA,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;KAAA,CAAC;IA4ExC,kBAAC;CAAA;;AClND;;;;;;;;AAQA,AAIA,IAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACxC,IAAM,GAAG,GAAG,UAAC,CAAS,IAAK,OAAA,UAAC,CAAM,IAAK,OAAA,QAAO,CAAC,CAAC,KAAK,CAAC,GAAA,GAAA,CAAC;AACvD,AAAO,IAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;AAC5C,AAAO,IAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,AAAO,IAAM,MAAM,GAAG,UAAC,CAAM,IAAK,OAAA,CAAC,KAAK,IAAI,GAAA,CAAC;AAC7C,AAAO,IAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACzD,AAAO,IAAM,UAAU,GAAoC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3E,AAAO,IAAM,QAAQ,GAAkC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrE,AAAO,IAAM,QAAQ,GAA6B,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChE,AAAO,IAAM,QAAQ,GAAG,UAAC,CAAM,IAAK,OAAA,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,GAAA,CAAC;AACxE,AAAO,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACrC,AAAO,IAAM,MAAM,IAAiC,UAAC,CAAM,IAAK,OAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,GAAA,CAAC,CAAC;AACnG,AAAO,IAAM,QAAQ,IAAmC,UAAC,CAAM,IAAK,OAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,GAAA,CAAC,CAAC;AACzG,AAAO,IAAM,OAAO,GAAiC,WAAW,CAAC,OAAO,CAAC;;;;;;;AAQzE,sBAA6BC,MAAQ;IACnC,IAAI,OAAO,CAACA,MAAG,CAAC,IAAIA,MAAG,CAAC,MAAM,EAAE;QAC9B,IAAM,IAAI,GAAGA,MAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAGA,MAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KACpF;IACD,OAAO,UAAU,CAACA,MAAG,CAAC,CAAC;CACxB;;;;;;AAOD,AAAO,IAAM,SAAS,GAAmC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;;ACnC/F,IAAI,cAAc,GAAG,UAAC,MAAc,IAAK,OAAA;IAC9C,MAAM,IAAI,KAAK,CAAI,MAAM,gEAA6D,CAAC,CAAC;CACzF,GAAA,CAAC;AAEF,IAAM,QAAQ,GAAiB;IAC7B,EAAE,EAAE,SAAS;IACb,SAAS,EAAE,SAAS;CACrB;;AClBD;;;;;;;;;AASA,AAMO,IAAM,IAAI,GAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI;KAC7E,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAIC,SAAI,CAAC;AAC7E,IAAMC,SAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAEnC,AAAO,IAAM,QAAQ,GAAGA,SAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,AAAO,IAAM,MAAM,GAAGA,SAAO,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,AAAO,IAAM,OAAO,GAAGA,SAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;AACnD,AAAO,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;AAC/C,AAAO,IAAM,MAAM,GAAGA,SAAO,CAAC,MAAM,IAAI,OAAO,CAAC;AAChD,kBAAyB,CAAM,IAAI,OAAO,CAAC,CAAC,EAAE;AAC9C,mBAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8F9B,8BAAqC,MAAgB,EAAE,MAAW,EAAE,IAAc,EAAE,OAAkB,EAAE,QAAgB;IAAhB,yBAAA,EAAA,gBAAgB;IACtH,IAAM,YAAY,GAAG,UAAC,MAAM;QACxB,OAAA,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAAA,CAAC;IAElC,IAAM,gBAAgB,GAAG,UAAA,MAAM,IAAI,OAAA;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC9C,GAAA,CAAC;IAEF,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI;QAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC;KACZ,EAAE,MAAM,CAAC,CAAC;CACZ;;;;;AAOD,AAAO,IAAM,OAAO,GAAG,UAAC,MAAW,EAAE,KAAW;IAC5C,OAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;CAAA,CAAC;;AAGzC,AAAO,IAAM,OAAO,GAAoB,KAAK,CAAC,QAAQ,CAAQ,CAAC;AAG/D,kBAAyB,KAAK,EAAE,GAAI;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CAClC;;;;;AAMD,AAAO,IAAM,UAAU,GAAuB,KAAK,CAAC,WAAW,CAAQ,CAAC;AAGxE,qBAA4B,KAAK,EAAE,GAAI;IACrC,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,IAAI,CAAC;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;CACd;;AAGD,AAAO,IAAM,MAAM,GAAmB,KAAK,CAAC,OAAO,CAAQ,CAAC;AAG5D,iBAAwB,GAAG,EAAEF,MAAI;IAC/B,QAAQ,GAAG,CAAC,IAAI,CAACA,MAAG,CAAC,EAAEA,MAAG,EAAE;CAC7B;;AAGD,AAAO,IAAM,QAAQ,GAAG,UAAC,SAAqB;IAC1C,OAAA,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,UAAA,EAAE;QAC1B,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,EAAE,CAAC;QACjC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;KAC3B,CAAC;CAAA,CAAC;;;;;;AAMP,kBAAyB,IAAI;IAAE,sBAAsB;SAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;QAAtB,qCAAsB;;IACnD,IAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,IAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC5E;;AAGD,AAAO,IAAM,MAAM,GAAG,UAAC,IAAS,EAAE,IAAS,IAAK,OAAA,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAA,CAAC;;;;;;;;AASnE,mBAA0B,KAAkB,EAAE,MAAmB;IAC/D,IAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,KAAK,IAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;QAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1B;IACD,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;AAaD,cAAqB,GAAQ,EAAE,SAAmB;IAChD,IAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,IAAM,KAAK,IAAI,GAAG,EAAE;QACvB,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;KACF;IACD,OAAO,OAAO,CAAC;CAChB;;;;;;;;;;;;;AAcD,cAAqB,GAAQ,EAAE,SAAmB;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SAClB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SAC/B,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,QAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAC,EAAE,EAAE,CAAC,CAAC;CAC3D;;;;AAUD,eAAsB,UAAe,EAAE,QAAgB;IACrD,OAAO,GAAG,CAAC,UAAU,EAAwB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC9D;;AAQD,gBAA0B,UAAe,EAAE,QAAkB;IAC3D,IAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,GAAQ,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7D,IAAM,MAAM,GAAG,GAAG,GAAG,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,GAAG,UAAC,CAAC,EAAE,GAAG,IAAK,OAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAA,CAAC;IACvE,OAAO,CAAC,UAAU,EAAE,UAAS,IAAI,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,OAAU,MAAM,CAAC;CAClB;;AAQD,cAAqB,UAAe,EAAE,QAAa;IACjD,IAAI,MAAM,CAAC;IAEX,OAAO,CAAC,UAAU,EAAE,UAAS,IAAI,EAAE,CAAC;QAClC,IAAI,MAAM;YAAE,OAAO;QACnB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC;KACtC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;CACf;;AAGD,AAAO,IAAI,MAAM,GAAyH,GAAG,CAAC;;AAK9I,aAAoB,UAAe,EAAE,QAAa,EAAE,MAAyB;IAC3E,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,EAAE,UAAC,IAAI,EAAE,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;CACf;;;;;;;;;;;AAYD,AAAO,IAAM,MAAM,GAAoC,UAAC,GAAQ;IAC5D,OAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,GAAG,CAAC,GAAA,CAAC;CAAA,CAAC;;;;;;;;;;;;;;AAe1C,AAAO,IAAM,QAAQ,GAAI,UAAC,IAAa,EAAE,IAAS,IAAK,OAAA,IAAI,IAAI,IAAI,GAAA,CAAC;;;;;;;;;;;;;;AAepE,AAAO,IAAM,QAAQ,GAAI,UAAC,IAAa,EAAE,IAAS,IAAK,OAAA,IAAI,IAAI,IAAI,GAAA,CAAC;;;;;;;;;;AAWpE,AAAO,IAAM,OAAO,GAAK,UAAC,IAAW,EAAE,IAAW,IAAK,OAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAA,CAAC;;;;;;;;;;;AAYzE,AAAO,IAAM,QAAQ,GAAI,UAAC,IAAW,EAAE,IAAS;IAC5C,OAAA,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;CAAA,CAAC;;;;;AAM/E,eAAsB,GAAU,EAAE,GAAQ;IACxC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;CACZ;;AAGD,AAAO,IAAM,KAAK,GAAG,UAAK,GAAQ,EAAE,KAAQ;IACxC,OAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;CAAA,CAAC;;;;;;;;;;;AAYlD,AAAO,IAAM,MAAM,GAAM,UAAC,GAAU,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAA,CAAC;;;;;;;;;;;AAWjE,AAAO,IAAM,OAAO,GAAK,UAAC,GAAU,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAA,CAAC;;;;;;;;;;;;;;AAelE,AAAO,IAAM,eAAe,GAA6E,QAAQ,CAAC;;;;;;;;;;;;;;;;;AAiBlH,AAAO,IAAM,SAAS,GAA0E,QAAQ,CAAC;AACzG,kBAAyB,cAAwB,EAAE,MAA4C;IAA5C,uBAAA,EAAA,yBAA4C;IAC7F,OAAO,UAAC,GAAG;QACT,IAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAe,MAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;SACzE;QACD,OAAO,MAAM,CAAC;KACf,CAAC;CACH;;;;;;;;;;AAWD,AAAO,IAAM,KAAK,GAAG,UAAC,GAAQ;IAC1B,OAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,CAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAA,CAAE;CAAA,CAAC;;;;;;;;;;;;;;;AAgBnD;IAA4B,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAA,EAAE,gBAAgB,CAAC,CAAC;IAC3F,IAAM,MAAM,GAAG,EAAE,CAAC;4BAET,CAAC;;;QAGR,QAAQ,IAAI,CAAC,MAAM;YACjB,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACzC,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACrD,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YACjE,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAM;YAC7E;gBACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC,CAAC;gBAAC,MAAM;SACnD;KACF;IAXD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE;gBAA3B,CAAC;KAWT;IAED,OAAO,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;AAsBD,oBAA2B,IAAmB,EAAE,WAAkB;IAChE,IAAI,GAAW,EAAE,KAAU,CAAC;IAC5B,IAAI,OAAO,CAAC,WAAW,CAAC;QAAG,oBAAG,EAAE,sBAAK,CAAgB;IACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClB,OAAO,IAAI,CAAC;CACb;;AAGD,cAAwB,GAAQ;IAC9B,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;CACvD;;;;AAKD,cAAqB,GAAQ,EAAE,IAAU;IACvC,IAAI,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,EAAE,CAAC;IACrB,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CAC1B;;AAGD,kBAAkB,GAAgB,EAAE,EAAsB,EAAE,KAAU;IACpE,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAA,CAAC,CAAC;CACpD;AAID,iBAAwB,KAAU;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,IAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,KAAK,CAAC;CACd;AAED,iBAAiB,EAAO,EAAE,EAAO;IAC/B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACxC,IAAM,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;IACrC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE/C,IAAM,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3D,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAM,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,EAAE,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAA,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/E,IAAM,IAAI,GAA6B,EAAE,CAAC;IAC1C,KAAK,IAAM,GAAG,IAAI,EAAE,EAAE;QACpB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAClB;IACD,KAAK,IAAM,GAAG,IAAI,EAAE,EAAE;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;KAC9B;IAED,OAAO,IAAI,CAAC;CACb;AAED,mBAAmB,EAAS,EAAE,EAAS;IACrC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAA,EAAE,IAAI,CAAC,CAAC;CAC7E;;AAGD,AAAO,IAAM,wBAAwB,GAAG,UAAC,OAAqB;IAC1D,OAAA,OAAO,CAAC,KAAK,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,GAAA,CAAC,IAAI,OAAO;CAAA,CAAC;AACrC,AAAO,IAAM,eAAe,GAAG,UAAC,KAAU;IACtC,OAAA,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAAA;;ACnlBvD;;;;AAKA;IAIE,eAAoB,MAAgB,EAAU,MAAqB;QAA/C,uBAAA,EAAA,WAAgB;QAAU,uBAAA,EAAA,aAAqB;QAA/C,WAAM,GAAN,MAAM,CAAU;QAAU,WAAM,GAAN,MAAM,CAAe;QAH3D,oBAAe,GAA0B,EAAE,CAAC;QAC7C,YAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAE0B;IAExE,uBAAO,GAAP,UAAQ,IAAO;QACb,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;KACb;IAED,qBAAK,GAAL;QACE,IAAM,IAAI,GAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,uBAAO,GAAP;QACE,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;IAED,qBAAK,GAAL;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;KAChB;IAED,oBAAI,GAAJ;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3B;IAED,sBAAM,GAAN,UAAO,IAAO;QACZ,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAClD;IAED,wBAAQ,GAAR;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC5C;IAED,wBAAQ,GAAR;QACE,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACzB;IACH,YAAC;CAAA;;ACtDD;;;;AAIA;AAKA,WAAY,UAAU;IACpB,uDAAc,CAAA;IAAE,iDAAW,CAAA;IAAE,iDAAW,CAAA;IAAE,iDAAW,CAAA;IAAE,6CAAS,CAAA;CACjE,EAFWG,kBAAU,KAAVA,kBAAU,QAErB;;AAGD,IAAI,EAAE,GAAG,CAAC,CAAC;AAEX;IAgEE,mBAAY,IAAY,EAAE,OAAgB,EAAE,MAAY;QA/DxD,QAAG,GAAG,EAAE,EAAE,CAAC;QAgET,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;;IA5DM,4BAAkB,GAAzB,UAA0B,GAAQ;QAChC,OAAO,GAAG,KAAK,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;KAC3F;;IAGM,oBAAU,GAAjB,UAAkB,MAAY,EAAE,OAAa;QAC3C,IAAM,OAAO,GAAG,8DAA8D,CAAC;QAC/E,IAAM,SAAS,GAAG,IAAI,SAAS,CAACA,kBAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;YACjC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;SAC7B;QACD,OAAO,SAAS,CAAC;KAClB;;IAGM,oBAAU,GAAjB,UAAkB,MAAY;QAC5B,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3D;;IAGM,iBAAO,GAAd,UAAe,MAAY;QACzB,IAAM,OAAO,GAAG,4BAA4B,CAAC;QAC7C,OAAO,IAAI,SAAS,CAACA,kBAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;;IAGM,iBAAO,GAAd,UAAe,MAAY;QACzB,IAAM,OAAO,GAAG,4BAA4B,CAAC;QAC7C,OAAO,IAAI,SAAS,CAACA,kBAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;;IAGM,iBAAO,GAAd,UAAe,MAAY;QACzB,IAAM,OAAO,GAAG,iCAAiC,CAAC;QAClD,OAAO,IAAI,SAAS,CAACA,kBAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;;IAGM,iBAAO,GAAd,UAAe,MAAY;QACzB,IAAM,OAAO,GAAG,wBAAwB,CAAC;QACzC,OAAO,IAAI,SAAS,CAACA,kBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACzD;;;;;;;;;;IAWM,mBAAS,GAAhB,UAAiB,MAAgC;QAC/C,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACnE;IAQD,4BAAQ,GAAR;QACE,IAAM,YAAY,GAAG,UAAC,CAAM;YACxB,OAAA,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;SAAA,CAAC;QAChF,IAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAA,SAA6B,EAA3B,YAAG,EAAE,cAAI,EAAE,oBAAO,CAAU;QACpC,OAAO,+BAA6B,GAAG,eAAU,IAAI,mBAAc,OAAO,kBAAa,MAAM,MAAG,CAAC;KAClG;IAED,6BAAS,GAAT;QACE,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;KACtE;IACH,gBAAC;CAAA;;ACjGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,AAaA;AACA,sBAAuB,MAAoB;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,mBAAmB,CAAC;IACxC,IAAM,KAAK,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC;IAC1F,OAAO,cAAY,MAAM,CAAC,EAAE,SAAI,MAAM,CAAC,KAAK,SAAI,MAAM,CAAC,GAAG,UAAK,MAAM,CAAC,IAAI,SAAI,KAAK,OAAI,CAAC;CAC3F;;AAGD,IAAM,gBAAgB,GAAG,UAAC,UAAsB;IAC9C,IAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;IACjC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC;IAC7C,OAAO,WAAS,UAAU,CAAC,GAAG,eAAU,KAAK,mCAA8B,IAAI,CAAC,WAAW,SAAI,IAAI,CAAC,oBAAoB,MAAG,CAAC;CAC7H,CAAC;;AAGF,uBAAuB,KAAsB;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAGC,gBAAQ,CAAC,KAAK,CAAC,GAAGA,gBAAQ,CAACA,gBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;CACtE;;AAGD,IAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;AAGtE,IAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;;;;;;;;;;;;AAgBxG;AAAA,WAAY,QAAQ;IAClB,6CAAO,CAAA;IAAE,mDAAU,CAAA;IAAE,uCAAI,CAAA;IAAE,2CAAM,CAAA;IAAE,mDAAU,CAAA;CAC9C,EAFWA,gBAAQ,KAARA,gBAAQ,QAEnB;;AAGD,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;;AAG1B,IAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;;AAGjC,IAAM,QAAQ,GAAG,UAAC,KAAK,IAAK,OAAA,iBAAe,IAAI,CAAC,KAAK,CAAC,SAAI,IAAI,CAAC,KAAK,CAAG,GAAA,CAAC;;;;AAKxE;;IAQE;;QAHQ,aAAQ,GAA+B,EAAE,CAAC;QAIhD,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;KAC7B;;IAGO,oBAAI,GAAZ,UAAa,OAAgB,EAAE,UAAsB;QAArD,iBAQC;QAPC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,UAAU,GAAS,MAAM,CAAC,IAAI,CAACA,gBAAQ,CAAC;iBACnC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAA,CAAC;iBACzB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,CAAC,CAAC,CAAC,GAAA,CAAC;iBACtB,GAAG,CAAC,UAAA,GAAG,IAAI,OAAAA,gBAAQ,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;SAChC;QACD,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAA,CAAC,CAAC;KACtF;IAaD,sBAAM,GAAN;QAAO,oBAAoB;aAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;YAApB,+BAAoB;;QAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAAE;IAY7D,uBAAO,GAAP;QAAQ,oBAAoB;aAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;YAApB,+BAAoB;;QAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KAAE;;;;;;;;;;IAW/D,uBAAO,GAAP,UAAQ,QAAkC;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;KACjD;;IAGD,oCAAoB,GAApB,UAAqB,KAAiB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,sBAAiB,SAAS,CAAC,KAAK,CAAG,CAAC,CAAC;KACpE;;IAGD,sCAAsB,GAAtB,UAAuB,KAAiB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,sBAAiB,SAAS,CAAC,KAAK,CAAG,CAAC,CAAC;KACpE;;IAGD,mCAAmB,GAAnB,UAAoB,IAAoB,EAAE,KAAiB,EAAE,OAAY;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QACzC,IAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,EAC5D,OAAO,GAAG,KAAK,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,EAC5G,IAAI,GAAG,gBAAgB,CAAE,IAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,oBAAe,KAAK,kBAAa,OAAO,UAAK,SAAS,CAAC,GAAG,EAAE,IAAI,CAAG,CAAC,CAAC;KACpG;;IAGD,+BAAe,GAAf,UAAgB,UAAsB,EAAE,KAAiB,EAAE,iBAAsB;QAC/E,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QACzC,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,8BAAyB,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,CAAG,CAAC,CAAC;KACjG;;IAGD,gCAAgB,GAAhB,UAAiB,IAAgB,EAAE,IAAgB,EAAE,KAAkB;QACrE,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,4BAAuB,IAAI,UAAK,IAAI,MAAG,CAAC,CAAC;KACxE;;IAGD,uCAAuB,GAAvB,UAAwB,UAAsB,EAAE,KAAkB;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,OAAO,CAAC;YAAE,OAAO;QAC5C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,qCAAgC,UAAU,aAAQ,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAG,CAAC,CAAC;KAC/H;;IAGD,0BAAU,GAAV,UAAW,MAAW,EAAE,KAAiB;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,sBAAiB,SAAS,CAAC,KAAK,CAAC,kBAAa,MAAQ,CAAC,CAAC;KACvF;;IAGD,4BAAY,GAAZ,UAAa,UAAuB,EAAE,KAAiB;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,KAAK,CAAC,sBAAiB,SAAS,CAAC,KAAK,CAAC,uBAAkB,UAAU,CAAC,IAAM,CAAC,CAAC;KACrG;;IAGD,gCAAgB,GAAhB,UAAiB,KAAa,EAAE,QAAsB,EAAE,KAAU;QAAV,sBAAA,EAAA,UAAU;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAY,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,SAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAO,CAAC,CAAC;KACnF;;IAGD,wCAAwB,GAAxB,UAAyB,QAAsB,EAAE,OAAoB;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,oCAAkC,OAAO,MAAG,CAAC,CAAC;KAC3F;;IAGD,+BAAe,GAAf,UAAgB,QAAsB,EAAE,IAAY;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAU,SAAS,CAAC,GAAG,EAAE,IAAI,CAAG,CAAC,CAAC;KAC3E;;IAGD,6BAAa,GAAb,UAAc,KAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,IAAM,SAAS,GAAG,sBAAsB,CAAC;QACzC,IAAM,SAAS,GAAG,+BAA+B,CAAC;QAClD,IAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAsB;gBAApB,kBAAM,EAAE,0BAAU;YAC7C,IAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;YACjC,IAAM,GAAG,GAAG,UAAU,IAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,MAAG,CAAC;YACjG,gBAAS,GAAC,SAAS,IAAG,GAAG,EAAE,GAAC,SAAS,IAAG,GAAG,KAAG;;SAC/C,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAAC;QAE1E,YAAY,CAAC,OAAO,CAAC,CAAC;KACvB;;IAGD,qCAAqB,GAArB,UAAsB,KAAa,EAAE,UAAsB;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAC,iBAAe,KAAK,SAAI,gBAAgB,CAAC,UAAU,CAAG,CAAC,CAAC;KACrE;;IAGD,2CAA2B,GAA3B,UAA4B,KAAa,EAAE,QAAsB;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAACA,gBAAQ,CAAC,UAAU,CAAC;YAAE,OAAO;QAC/C,OAAO,CAAC,GAAG,CAAC,iBAAe,KAAK,SAAI,YAAY,CAAC,QAAQ,CAAG,CAAC,CAAC;KAC/D;IACH,YAAC;CAAA,IAAA;AAED;;;;;;;;;AASA,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE;;ACojBzB,WAAY,mBAAmB;IAAG,iEAAM,CAAA;IAAE,iEAAM,CAAA;IAAE,2DAAG,CAAA;IAAE,mEAAO,CAAA;IAAE,+DAAK,CAAA;CAAE,EAA3DC,2BAAmB,KAAnBA,2BAAmB,QAAwC;AACvE;AAAA,WAAY,mBAAmB;IAAG,yEAAU,CAAA;IAAE,+DAAK,CAAA;CAAE,EAAzCC,2BAAmB,KAAnBA,2BAAmB,QAAsB;;ACn0BrD;;;;AAQA,AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA;;;;;;;;;;;;;;;IAuBE,qBACU,cAA6B,EAC7B,WAAwB,EAChC,OAAmB,EACnB,QAA4B;QAHpB,mBAAc,GAAd,cAAc,CAAe;QAC7B,gBAAW,GAAX,WAAW,CAAa;QAIhC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACrF;;IAGD,0BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAa,IAAI,CAAC,WAAW,CAAC;KAC/E;;IAGD,gCAAU,GAAV;QACE,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;IAGD,4BAAM,GAAN;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;IAGD,4BAAM,GAAN;QACE,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;IAGD,2BAAK,GAAL;QACE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KAClD;;IAGD,6BAAO,GAAP;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;IAGD,4BAAM,GAAN;QACE,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACtD;;IAGD,2BAAK,GAAL;QACE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACtB;;IAGD,2BAAK,GAAL;QACE,IAAM,IAAI,GAAS,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE;YAC/B,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/C,OAAO,wBAAsB,IAAI,CAAC,IAAI,EAAE,sBAAiB,SAAS,MAAG,CAAC;SACvE;QACD,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,OAAO,oBAAkB,IAAI,CAAC,IAAI,EAAE,MAAG,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YACxB,OAAO,YAAU,IAAI,CAAC,IAAI,EAAE,gCAA6B,CAAC;KAC7D;IAED,8BAAQ,GAAR;QACE,OAAO,MAAI,IAAI,CAAC,IAAI,EAAE,SAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAG,CAAC;KACtD;;;;;;;IAQD,+BAAS,GAAT,UAAU,KAAkB;QAC1B,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjF;;;;;;;;IASD,gCAAU,GAAV,UAAW,MAAiB,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QAC3C,IAAM,SAAS,GAAc,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjF,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACzF;;;;;;;;IASD,iCAAW,GAAX,UAAY,OAA0B,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QACrD,IAAM,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACtF;;IAtHM,iBAAK,GAAG,UAAC,GAAG;QACjB,OAAA,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAAA,CAAC;IAsH1E,kBAAC;CAAA;;ACxKD;;;;;AAKA,AAcA,IAAM,cAAc,GAA0B;IAC5C,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,IAAI;CACX,CAAC;;AASF;IA6FE,wBAAoB,UAAsB,EACtB,YAA8B,EAC9B,cAA8B,EAC9B,OAA8B;QAHlD,iBAMC;QANmB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAkB;QAC9B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,YAAO,GAAP,OAAO,CAAuB;QAK1C,iBAAY,GAAG;YACrB,OAAA,KAAI,CAAC,IAAI,CAAC,SAAS,KAAKD,2BAAmB,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;SAAA,CAAC;QALvF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC;KACtC;;;;;;;;;;;;;;;;;;;IA/CM,oBAAK,GAAZ,UAAa,KAAuB,EAAE,OAAsB;;QAE1D,IAAM,gBAAgB,GAAG,UAAC,IAAkB,EAAE,QAAwB;YACpE,OAAA,IAAI,CAAC,IAAI,CAAC,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,GAAA,CAAC;SAAA,CAAC;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;KACtE;;;;;;;;;;;;IAcM,0BAAW,GAAlB,UAAsB,KAAuB,EAAE,YAAwC;QACrF,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAC3C,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;YAE3C,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE;gBACzB,IAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAE5C,OAAO,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC;qBACpD,IAAI,CAAC,YAAY,CAAC,CAAC;aACvB;SACF;QAED,OAAO,YAAY,EAAE,CAAC;KACvB;;;;IAKM,0BAAW,GAAlB,UAAmB,KAAuB;QACxC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,EAAE,GAAA,CAAC,CAAC;KAC1C;IAaD,iCAAQ,GAAR,UAAS,GAAG;QACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC;KAChE;IAED,mCAAU,GAAV;QAAA,iBAuCC;QAtCC,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QACjC,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAE/B,IAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjD,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAElC,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAM,cAAc,GAAG;YACnB,OAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,YAAY,CAAC;SAAA,CAAC;QAEzE,IAAM,YAAY,GAAG,UAAA,GAAG;YACpB,OAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;SAAA,CAAC;QAEzC,IAAM,WAAW,GAAG,UAAA,GAAG;YACnB,OAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAI,CAAC,CAAC,GAAG,CAAC;SAAA,CAAC;QAE9C,IAAM,YAAY,GAAG,UAAA,MAAM;YACvB,OAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAI,CAAC,CAAC,MAAM,CAAC;SAAA,CAAC;QAElD,IAAI;YACF,IAAM,MAAM,GAAG,cAAc,EAAE,CAAC;YAEhC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;gBAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;qBAC5B,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aACtC;iBAAM;gBACL,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;aAC7B;SACF;QAAC,OAAO,GAAG,EAAE;;YAEZ,OAAO,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;gBAAS;YACR,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;SACF;KACF;;;;;;;;;;IAWD,yCAAgB,GAAhB,UAAiB,MAAkB;QAAnC,iBAwBC;QAvBC,IAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjD,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;;QAGlC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;;YAErB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAAL,MAAG,IAAI,OAAA,KAAI,CAAC,gBAAgB,CAACA,MAAG,CAAC,GAAA,CAAC,CAAC;SACvD;QAED,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;QAG7D,IAAI,MAAM,KAAK,KAAK,EAAE;;YAEpB,OAAO,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,SAAS,EAAE,CAAC;SACjE;QAED,IAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;;QAEtC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;;YAEzB,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;SACjD;KACF;;;;;IAOO,+CAAsB,GAA9B;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;QAGtC,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,OAAO,SAAS,CAAC,OAAO,CAAC,wBAAsB,MAAM,CAAC,GAAG,iCAA8B,CAAC,CAAC,SAAS,EAAE,CAAC;SACtG;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;SACxC;;;QAID,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;;YAEvB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;SACjE;KACF;IAED,iCAAQ,GAAR;QACQ,IAAA,SAAkC,EAAhC,oBAAO,EAAE,kCAAc,CAAU;QACzC,IAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,EAC5D,OAAO,GAAG,KAAK,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,EAC5G,IAAI,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAU,KAAK,kBAAa,OAAO,UAAK,SAAS,CAAC,GAAG,EAAE,IAAI,CAAG,CAAC;KAChE;;;;;IAhNM,4BAAa,GAAqB,UAAC,IAAoB,IAAK,OAAA,UAAC,MAAkB;QAClF,OAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;KAAA,GAAA,CAAC;;;;;IAM3B,kCAAmB,GAAqB,UAAC,IAAoB,IAAK,OAAA,UAAC,MAAkB;QAC1F,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAA,GAAG;YACjC,OAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAAA,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC;KAClB,GAAA,CAAA;;;;;IAMM,wBAAS,GAAoB,UAAC,IAAoB,IAAK,OAAA,UAAC,KAAU;QACrE,OAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;KAAA,GAAA,CAAC;IAElB,2BAAY,GAAoB,UAAC,IAAoB,IAAK,OAAA,UAAC,KAAU;QACxE,OAAA,eAAe,CAAC,KAAK,CAAC;KAAA,GAAA,CAAC;IAEpB,0BAAW,GAAoB,UAAC,IAAoB,IAAK,OAAA,UAAC,KAAU;QACzE,MAAM,KAAK,CAAC;KACb,GAAA,CAAA;IAyLH,qBAAC;CAAA;;AC1PD;;;;AAIA,AAYA;;;;;;;;;;;;;AAaA,oBAA2B,KAAkB,EAAE,SAA6B;IAC1E,IAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE9D,oBAAoB,MAAmB;QACrC,IAAM,WAAW,GAAc,OAAO,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;gBACpF,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;IAED,IAAM,OAAO,IAAU,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACzB;;;;;AAMD;IAOE,wBAAmB,OAA0B,EAC1B,SAA8B,EAC9B,QAAgB,EAChB,aAAgC,EAChC,sBAAsD,EAC7D,OAAmC;QAAnC,wBAAA,EAAA,UAA0B,EAAS;QAL5B,YAAO,GAAP,OAAO,CAAmB;QAC1B,cAAS,GAAT,SAAS,CAAqB;QAC9B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAmB;QAChC,2BAAsB,GAAtB,sBAAsB,CAAgC;QARzE,gBAAW,GAAG,CAAC,CAAC;QAEhB,kBAAa,GAAG,KAAK,CAAC;QAQpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KACxC;;;;;;;;;;;;;;;;IAiBO,uCAAc,GAAtB,UAAuB,KAAiB,EAAE,SAA6B;QACrE,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACrC,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;KAC1C;;;;;;;;;;;;;;;IAgBO,iDAAwB,GAAhC;QACE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,cAAM,OAAA,IAAI,GAAA,CAAC,CAAC;KACpE;;;;;;;;;;;;;;;;IAiBO,0CAAiB,GAAzB,UAA0B,WAAwB;QAAlD,iBAcC;QAbC,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7E,IAAM,KAAK,GAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QAE1E,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,EAAkB,EAAE,QAAkB;;;YAGzD,IAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,KAAKM,2BAAmB,CAAC,KAAK,CAAC;YACjE,IAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAM,KAAK,GAAe,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5D,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,EAAE,CAAC;SACX,EAAE,EAAoB,CAAC,CAAC;KAC1B;;;;;;;IAQD,gCAAO,GAAP,UAAQ,WAAwB;QAC9B,IAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;;QAGpD,IAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC;KACpC;IAED,mCAAU,GAAV;QACE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IACH,qBAAC;CAAA,IAAA;AAED;AACA,mBAA0B,QAAuB,EAAE,iBAAoC,EAAE,SAA8B;;IAErH,IAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACvF,IAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACpD,IAAM,YAAY,GAAmC,UAAU,CAAC,KAAK,CAAC,CAAC;;IAGvE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;IAE9C,4BAA4B,WAAW,EAAE,QAAQ,EAAE,OAAY;QAAZ,wBAAA,EAAA,YAAY;QAC7D,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtH,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACvD;IAED,OAAO,kBAAkB,CAAC;CAC3B;;ACjLD;;;;AAKA,AAgBA;;;;;;;;;;;;;;AAcA;IACE,qBAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;KAAK;IAE/C,wCAAkB,GAAlB,UAAmB,KAA0B;QAA7C,iBAMC;QALC,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC9D,OAAO,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;aAC3C,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAA,CAAC;aAClC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC,CAAC;KACvB;;;;;;;;;;IAWD,gCAAU,GAAV,UAAW,QAA6B;QACtC,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;;QAG7C,IAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAE9B,IAAM,eAAe,GAA2B;YAC9C,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,OAAO;SACtC,CAAC;QAEF,IAAM,mBAAmB,GAAG,UAAC,IAAoB;;YAE9C,IAAM,OAAO,GAAmB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;YAE1D,IAAM,aAAa,GAAe,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;;YAG3E,OAAO,aAAa,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC3B,IAAM,QAAQ,GAAG,MAAM,CAAC;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;iBACtD,EAAE,eAAe,CAAC,CAAC;gBAEpB,IAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,KAAKA,2BAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtG,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7E,OAAmB,EAAE,IAAI,MAAA,EAAE,IAAI,MAAA,EAAE,cAAc,gBAAA,EAAE,CAAC;aACnD,CAAC,CAAC;SACL,CAAC;QAEF,OAAO,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC;aACxC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aACrC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,cAAc,GAAA,CAAC,CAAC;KACzC;;;;;;;;;;;;IAaM,sCAAgB,GAAvB,UAAwB,QAA6B,EAAE,WAAwB;QAC7E,IAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,KAAKD,2BAAmB,CAAC,MAAM,CAAC;;QAGnE,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC9D,IAAM,UAAU,GAAG,QAAQ,GAAG,CAAE,YAAY,CAAE,GAAG,CAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAE,CAAC;QAEnF,OAAO,UAAU,CAAC,GAAG,CAAC,UAAC,GAAkB,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAA,CAAC;aACrE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,yBAAuB,QAAQ,CAAC,IAAM,CAAC,CAAC;aACxE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAA,CAAC,CAAC;KAChD;IACH,kBAAC;CAAA,IAAA;AAID;;;;;;;;;AASA,mBAAmB,gBAAwB;IAAxB,iCAAA,EAAA,wBAAwB;IACzC,OAAO,+BAA+B,CAAY,EAAE,CAAY;QAC9D,IAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,IAAM,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAClF,OAAO,UAAU,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC1E,CAAC;CACH;;ACvID;;;;;AAKA,AAIA;;;;;;;;;;;;;;;;;;;;;;;;AAwBA;;;;;;IAiBE,mBAAY,GAAwB;;QAfpC,YAAO,GAAW,IAAI,CAAC;;QAQvB,YAAO,GAAG,IAAI,CAAC;QAQb,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACnB;;;IAKD,sBAAE,GAAF,UAAG,GAAQ,EAAE,GAAY,IAAa,OAAO,IAAI,CAAC,EAAE;;IAEpD,0BAAM,GAAN,UAAO,GAAQ,EAAE,GAAY,IAAuB,OAAO,GAAG,CAAC,EAAE;;IAEjE,0BAAM,GAAN,UAAO,GAAW,EAAE,GAAY,IAAS,OAAO,GAAG,CAAC,EAAE;;IAEtD,0BAAM,GAAN,UAAO,CAAM,EAAE,CAAM,IAAa,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;IAGlD,+BAAW,GAAX;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACtC;IAED,4BAAQ,GAAR;QACE,OAAO,gBAAc,IAAI,CAAC,IAAI,MAAG,CAAC;KACnC;;IAGD,8BAAU,GAAV,UAAW,GAAQ;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC9C;;;;;;;;;;;IAYD,4BAAQ,GAAR,UAAS,IAAsB,EAAE,QAAiB;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpG,OAAO,IAAW,SAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC1C;IACH,gBAAC;CAAA,IAAA;AAED;;;;AAIA,mBAAmB,IAAe,EAAE,IAAsB;IAA1D,iBAmDC;;IAjDC,mBAAmB,GAAQ;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,CAAC,CAAC;KAC7D;;IAGD,qBAAqB,GAAQ;QAC3B,QAAQ,GAAG,CAAC,MAAM;YAChB,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;YACzB,KAAK,CAAC,EAAE,OAAO,IAAI,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC9C,SAAS,OAAO,GAAG,CAAC;SACrB;KACF;;IAGD,sBAAsB,QAAyB,EAAE,aAAuB;QACtE,OAAO,qBAAqB,GAAQ;YAClC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;YACjD,IAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAM,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAClC,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;SAC9F,CAAC;KACH;;IAGD,4BAA4B,QAAqC;QAC/D,OAAO,qBAAqB,IAAS,EAAE,IAAS;YAC9C,IAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;aAChD;YACD,OAAO,IAAI,CAAC;SACb,CAAC;KACH;IAED,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QACvD,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAM,SAAS,GAAa,IAAI,KAAK,QAAQ,GAAG,kBAAkB,GAAG,YAAY,CAAC;QAClF,KAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,EAAE;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAC1C,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;CACJ;;ACxJD;;;;AAIA,AASA;AACA,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAG/C,IAAM,WAAW,GAAG,UAAC,GAAqB;IACtC,OAAA,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;CAAA,CAAC;;AAGhG;AAAA,WAAY,OAAO;IACjB,qCAAI,CAAA;IACJ,yCAAM,CAAA;IACN,yCAAM,CAAA;CACP,EAJWE,eAAO,KAAPA,eAAO,QAIlB;;AAGD,yBAAyB,GAAqB;IAC5C,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAS,IAAI,GAAG,CAAC;IAEvD,qBAAqB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAC5C;QACE,OAAO,GAAG,CAAC,KAAK,CAAC;KAClB;IAED,OAAO,MAAM,CAAC,GAAG,EAAE;QACjB,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,qBAAqB;KAClE,CAAC,CAAC;CACJ;;AAGD,iBAAiB,GAAqB,EAAE,OAAkB,EAAE,QAAiB,EAAE,EAAU,EAAE,UAAsB;IAC/G,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,YAAU,EAAE,mCAAgC,CAAC,CAAC;IACpH,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAc,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;IACxI,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACb,IAAM,IAAI,GAAG,QAAQ,KAAKA,eAAO,CAAC,MAAM,GAAG,KAAK;YAC5C,QAAQ,KAAKA,eAAO,CAAC,IAAI,GAAG,MAAM;gBAClC,QAAQ,KAAKA,eAAO,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QACrD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IACD,OAAO,GAAG,CAAC,IAAI,YAAY,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;CACvF;;;;;AAMD,yBAAyB,MAAwB,EAAE,UAAmB,EAAE,aAA+B;IACrG,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,UAAU,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,aAAa,CAAC;IAC/D,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvD,MAAM,IAAI,KAAK,CAAC,6BAA2B,MAAM,wDAAqD,CAAC,CAAC;CACzG;;AAGD,oBAAoB,MAAwB,EAAE,SAAkB,EAAE,UAAmB,EAAE,MAAwB;IAC7G,IAAM,aAAa,GAAG;QACpB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;QAC5D,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,IAAI,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;KAC/D,CAAC;IAEF,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEpE,IAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,aAAa,EAAE,UAAA,IAAI,IAAI,OAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CAChG;;AAID;IA0DE,eAAY,EAAU,EAAE,IAAe,EAAE,MAAwB,EAAE,QAAiB,EAAE,iBAAoC;QACxH,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzE,IAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,KAAKA,eAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAChF,IAAM,UAAU,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAKA,eAAO,CAAC,MAAM,CAAC;QAC7E,IAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9E,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9D,IAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC5F,IAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAClE,IAAMC,UAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;QAG9E;YACE,IAAM,aAAa,GAAG,EAAE,KAAK,GAAG,QAAQ,KAAKD,eAAO,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;YAChF,IAAM,sBAAsB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YACxE,OAAO,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;SACpE;QAED,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAA,EAAE,IAAI,MAAA,EAAE,QAAQ,UAAA,EAAE,UAAU,YAAA,EAAE,OAAO,SAAA,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,OAAO,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;KACpH;IA7DM,YAAM,GAAb,UAAc,MAAe,EAAEE,SAAsB;QAAtB,0BAAA,EAAAA,cAAsB;QACnD,IAAM,WAAW,GAAG,EAAe,CAAC;QACpC,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;YAArB,IAAM,KAAK,eAAA;YACd,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAACA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;SACvD;QACD,OAAO,WAAW,CAAC;KACpB;;;;;;;;;;;;IAaM,aAAO,GAAd,UAAe,MAAe,EAAE,OAAuB,EAAE,OAAuB;QAAhD,wBAAA,EAAA,YAAuB;QAAE,wBAAA,EAAA,YAAuB;QAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC;KACzF;;;;;;;;;;IAWM,YAAM,GAAb,UAAc,MAAe,EAAE,OAAY,EAAE,OAAY;QAA1B,wBAAA,EAAA,YAAY;QAAE,wBAAA,EAAA,YAAY;QACvD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAC7D;;IAGM,eAAS,GAAhB,UAAiB,MAAe,EAAEA,SAAsB;QAAtB,0BAAA,EAAAA,cAAsB;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,SAAS,CAACA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACtF;IAwBD,8BAAc,GAAd,UAAe,KAAU;QACvB,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;KACjE;;;;;IAMD,qBAAK,GAAL,UAAM,KAAW;QAAjB,iBA+BC;;;;QA3BC,IAAM,eAAe,GAAG;YACtB,IAAI,KAAI,CAAC,kBAAkB;gBAAE,OAAO,KAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;YAEzE,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAExG,IAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEjE,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,KAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,oBAAkB,YAAY,yBAAoB,KAAI,CAAC,EAAE,2CAAsC,KAAI,CAAC,IAAI,CAAC,IAAI,MAAG,CAAC,CAAC;YAEpI,IAAI,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACnC,KAAI,CAAC,kBAAkB,GAAG,EAAE,YAAY,cAAA,EAAE,CAAC;aAC5C;YAED,OAAO,YAAY,CAAC;SACrB,CAAC;QAEF,IAAM,oBAAoB,GAAG,UAACT,MAAQ;YACpC,KAAoB,UAAY,EAAZ,KAAA,KAAI,CAAC,OAAO,EAAZ,cAAY,EAAZ,IAAY;gBAA3B,IAAM,KAAK,SAAA;gBACd,IAAI,KAAK,CAAC,IAAI,KAAKA,MAAG;oBAAE,OAAO,KAAK,CAAC,EAAE,CAAC;aACzC;YACD,OAAOA,MAAG,CAAC;SACZ,CAAC;QAEF,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC7E;IAED,wBAAQ,GAAR;QACE,OAAO,IAAI,CAAC,QAAQ,KAAKO,eAAO,CAAC,MAAM,CAAC;KACzC;IAED,yBAAS,GAAT,UAAU,KAAU;;QAElB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;;QAG3E,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;;QAG5C,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAU,OAAO,CAAC,CAAC,CAAC;KAC1E;IAED,wBAAQ,GAAR;QACE,OAAO,YAAU,IAAI,CAAC,EAAE,SAAI,IAAI,CAAC,IAAI,kBAAa,IAAI,CAAC,MAAM,oBAAe,IAAI,CAAC,UAAU,MAAG,CAAC;KAChG;IACH,YAAC;CAAA;;AChOD;AACA,AAQA;;;;;;;;;AASA;IAsBE,kBAAY,WAAgB;QAC1B,IAAI,WAAW,YAAY,QAAQ,EAAE;YACnC,IAAM,IAAI,GAAa,WAAW,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SAC/C;aAAM;YACL,IAAM,KAAK,GAAgB,WAAW,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,KAAK,EAAE,GAAA,CAAC,CAAC;SAC9D;KACF;IAED,wBAAK,GAAL;QACE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC3B;;IAGD,iCAAc,GAAd,UAAe,MAAiB;QAC9B,IAAM,WAAW,GAAG,UAAC,QAAe,IAAK,OAAA,CAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAE,GAAA,CAAC;QAC9F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC;KACb;;IAGD,4BAAS,GAAT,UAAU,IAAY;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;KACnD;;;;;IAMD,yBAAM,GAAN,UAAO,IAAc,EAAE,QAAsB;QAC3C,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;KAClC;;;;;;;;;;;;;IAcD,uBAAI,GAAJ,UAAK,IAAc,EAAE,QAAsB;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAE5C,IAAM,MAAM,GAAY,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACrE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KAClE;;;;;IAjEM,cAAK,GAAG,UAAC,IAAc,IAAK,OAAA,IAAI,CAAC,KAAK,EAAE,GAAA,CAAC;IAkElD,eAAC;CAAA;;ACpGD;AAEA,AAiBA;;;AAGA;IAAA;KA6KC;;IA3KQ,yBAAe,GAAtB,UAAuB,QAAuB,EAAE,IAAgB;QAC9D,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAC/B,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAC/F;IAEM,mBAAS,GAAhB,UAAiB,WAAwB;QACvC,IAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;KAC7F;;IAGM,qBAAW,GAAlB,UAAmB,QAAoB,EAAE,WAAwB;QAC/D,IAAM,MAAM,GAAe,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;YACjC,OAAO,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACrF;QACD,OAAO,MAAM,CAAC;KACf;;;;;;IAOM,0BAAgB,GAAvB,UAAwB,KAAkB,EAAE,IAAgB,EAAE,MAAqB;;QAEjF,IAAI,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;YAC3D,IAAM,SAAS,GAAuB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACrE,IAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,GAAA,CAAC,CAAC;YACzD,IAAM,WAAW,GAAmB,SAAS,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAA,CAAC,CAAC;YACjG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAC9C,CAAC,CAAC;KACJ;;;;;;;;;;;;IAaM,uBAAa,GAApB,UAAqB,QAAoB,EAAE,MAAkB,EAAE,MAAqB;QAArB,uBAAA,EAAA,WAAqB;QAClF,uBAAuB,IAAgB,EAAE,KAAkB;YACzD,IAAM,IAAI,GAAa,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7C;QAED,IAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAA,CAAC;aACnD,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,OAAO,GAAA,CAAC;aAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;QAMrB,iCAAiC,MAAgB;;YAE/C,IAAI,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;;YAE3D,IAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACpD,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxC,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;;YAEnF,IAAM,YAAY,GAAc,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YACtF,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SAChE;;QAGD,OAAoB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;KACzD;;;;IASM,qBAAW,GAAlB,UAAmB,QAAoB,EAAE,MAAkB,EAAE,WAAwB;QACnF,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,IAAM,UAAU,GAAG,UAAC,KAAe,EAAE,KAAe;YAChD,OAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC;SAAA,CAAC;QAEpD,OAAO,IAAI,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;YACrG,IAAI,EAAE,CAAC;SACR;;QAGD,uBAAuB,YAAsB,EAAE,GAAW;YACxD,IAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;YAC7C,OAAO,MAAM,CAAC;SACf;QAED,IAAI,IAAgB,EAAE,QAAoB,EAAE,OAAmB,EAAE,QAAoB,EAAE,EAAc,CAAC;QAEtG,IAAI,GAAoB,QAAQ,CAAC;QACjC,QAAQ,GAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;QAGzC,IAAM,oBAAoB,GAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC1D,QAAQ,GAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,EAAE,GAAsB,CAAC,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEhE,OAAO,EAAE,IAAI,MAAA,EAAE,EAAE,IAAA,EAAE,QAAQ,UAAA,EAAE,oBAAoB,sBAAA,EAAE,OAAO,SAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;KACxE;;;;;;;;;;;;;;;;IAiBM,kBAAQ,GAAf,UAAgB,KAAiB,EAAE,KAAiB,EAAE,QAAsB;QAC1E,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAM,MAAM,GAAiB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,EAAc;gBAAb,aAAK,EAAE,aAAK;YAC3C,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjD,EAAE,EAAE,CAAC,CAAC;KACR;;;;;;;;;IAUM,gBAAM,GAAb,UAAc,KAAiB,EAAE,KAAiB,EAAE,QAAsB;QACxE,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAChC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;KACxE;;;;;;;;;;;IAYM,iBAAO,GAAd,UAAe,IAAgB,EAAE,SAA8B;QAC7D,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,UAAU,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;KACtE;IA1FM,0BAAgB,GAAG,UAAC,IAAc;QACrC,OAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aACpC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,OAAO,GAAA,CAAC;KAAA,CAAC;;IA2FlC,qBAAW,GAAG,UAAC,IAAgB;QAClC,OAAA,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAA,EAAE,EAAE,CAAC;KAAA,CAAC;IACpE,gBAAC;CAAA;;ACnMD;;;;AAIA,AAcA;AACA,AAAO,IAAI,oBAAoB,GAAkB;IAC/C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;CACd,CAAC;;;;;;;;;;;;;AAcF;IAuCE,oBAAY,IAAS,EAAE,SAAoB,EAAE,IAAY,EAAE,MAAsB,EAAE,IAAU;QAhC7F,aAAQ,GAAG,KAAK,CAAC;QACjB,YAAO,GAAiB,SAAS,CAAC;QAgChC,IAAI,IAAI,YAAY,UAAU,EAAE;YAC9B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACpB;aAAM,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;YAChC,IAAI,iBAAiB,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAEvG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;SACxE;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE;YAC5G,IAAM,OAAO,GAAuB,IAAI,CAAC;YACzC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SACrG;KACF;IAED,8BAAS,GAAT,UAAU,KAAkB;QAC1B,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACrC,IAAM,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,oBAAoB,CAAC,IAAI;YACtE,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK;SAC3E,CAAC;KACH;;;;;;;;IASD,4BAAO,GAAP,UAAQ,cAA8B,EAAE,KAAkB;QAA1D,iBA6CC;QA5CC,IAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;;QAGvB,IAAM,yBAAyB,GAAG;YAC9B,OAAA,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,KAAI,CAAC,CAAC,GAAG,CAAC,UAAA,UAAU;gBACtD,OAAA,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;aAAA,CAAC,CAAmB;SAAA,CAAC;;QAGlE,IAAM,eAAe,GAAG,UAAC,YAAmB;YACxC,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC;SAAA,CAAC;;;;;;;;;QAU7C,IAAM,SAAS,GAAG,UAAC,WAAgB;YACjC,IAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,MAAM,GAAA,CAAC,CAAC;SACtD,CAAC;;QAGF,IAAM,IAAI,GAAa,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrD,IAAM,KAAK,GAAgB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QAC9C,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;;QAGvF,IAAM,kBAAkB,GAAG,UAAC,aAAkB;YAC5C,KAAI,CAAC,IAAI,GAAG,aAAa,CAAC;YAC1B,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,KAAK,CAAC,uBAAuB,CAAC,KAAI,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,KAAI,CAAC,IAAI,CAAC;SAClB,CAAC;;QAGF,OAAO,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE;aAC1B,IAAI,CAAC,yBAAyB,CAAC;aAC/B,IAAI,CAAC,eAAe,CAAC;aACrB,IAAI,CAAC,cAAc,CAAC;aACpB,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC/B;;;;;;;IAQD,wBAAG,GAAH,UAAI,cAA8B,EAAE,KAAkB;QACpD,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;KAC5D;IAED,6BAAQ,GAAR;QACE,OAAO,uBAAqB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAI,CAAC;KAC/F;IAED,0BAAK,GAAL;QACE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;KAC7B;IAjIM,mBAAQ,GAAG,UAAC,KAAU,EAAE,IAAS;QACtC,OAAA,IAAI,UAAU,CAAC,KAAK,EAAE,cAAM,OAAA,IAAI,GAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KAAA,CAAC;IAiIxD,iBAAC;CAAA;;AC6BD;AACA,AAAO,IAAI,eAAe,GAAG;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;KACf;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;KACjB;CACF;;ACxND;;AAEA,AAcA,IAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC;AACnC,IAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAM,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAGlC,AAAO,IAAM,qBAAqB,GAAW,iBAAiB,CAAC;;;;;;;;;;;AAY/D;IAGE,wBAAoB,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;KAAK;;IAG1C,kCAAS,GAAT;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC/G;;;;;;;IAQD,sCAAa,GAAb,UAAc,KAAU;QACtB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAA,CAAC;aACpD,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,MAAM,CAAC,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,GAAA,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvB;;IAGD,kCAAS,GAAT,UAAU,UAAsB;QAC9B,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;;;;;;;;;;;;;;;;;;;;;;;;IAyBD,mCAAU,GAAV,UAAW,KAAkB;QAC3B,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,KAAK,GAAA,CAAC,CAAC,CAAC;KACxF;;;;;;;;;;;;;;;;IAiBD,uCAAc,GAAd,UAAe,cAA4B,EAAE,KAAkB;QAC7D,IAAM,IAAI,GAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,IAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACtG;;;;;;;;IASD,oCAAW,GAAX,UAAY,IAAyB,EAAE,KAAkB;QAAzD,iBAgCC;QAhCW,qBAAA,EAAA,aAAyB;;QAEnC,IAAM,UAAU,GAAW,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;;;QAGpE,IAAM,YAAY,GAAG,UAAU,KAAK,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;;QAGzF,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEhD,IAAM,aAAa,GAAG,UAAC,YAAsB,EAAE,WAA2B;YACtE,OAAA,UAAC,UAAsB;gBACnB,OAAA,OAAO,CAAC,YAAY,EAAE,KAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;aAAA;SAAA,CAAC;;;QAIvE,IAAM,QAAQ,GAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI;YAC3D,IAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YACrF,IAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1E,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;YAG7E,IAAM,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAM,SAAS,GAAG,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;iBAExD,IAAI,CAAC,UAAA,KAAK,IAAI,QAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAC,CAAC,GAAA,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;SACxC,EAAE,EAAE,CAAC,CAAC;;QAGP,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,iCAAQ,GAAR;QACE,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;KACtE;IAED,iCAAQ,GAAR,UAAS,UAAsB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,IAAc,IAAK,OAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAA,CAAC,CAAC;KACpF;;;;;;IAOD,wCAAe,GAAf,UAAgB,UAAsB;QAAtC,iBAsBC;QArBC,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;;;QAGvC,IAAM,OAAO,GAAe,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,GAAA,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QACzF,IAAM,oBAAoB,GAAiB,OAAO;aAC7C,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAA,EAAE,EAAE,CAAC;aACzD,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,UAAU,GAAA,CAAC,CAAC;QAEvC,IAAM,aAAa,GAAG,UAAC,KAAU;YAC/B,IAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,GAAA,CAAC,CAAC;YACrE,IAAI,QAAQ,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAM,YAAY,GAAG,KAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACnF;YAED,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,cAAM,OAAA,YAAY,GAAA,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;SACpE,CAAC;QAEF,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KAC3C;IACH,qBAAC;CAAA,IAAA;AAED;IAGE,wBAAmB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC;KACrE;IAED,4BAAG,GAAH,UAAI,KAAU;QACZ,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;gBACzD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;aACxF;YACD,OAAO,UAAU,CAAC,IAAI,CAAC;SACxB;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,iCAAQ,GAAR,UAAS,KAAU;QACjB,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KACjD;IAED,kCAAS,GAAT,UAAU,KAAU;QAClB,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC9C;IACH,qBAAC;CAAA;;AC7ND;;;;;AAKA,AA2BA;AACA,IAAM,SAAS,GAA8C,IAAI,CAAC,MAAM,CAAC,CAAC;;;;;;;;;AAU1E;;;;;;;;;;;;;IAmGE,oBAAY,QAAoB,EAAE,WAAwB,EAAE,MAAgB;QAA5E,iBAmBC;;QAlGO,cAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;;;;;;;QAOxC,YAAO,GAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;QAgB/C,qBAAgB,GAAoB,EAAG,CAAC;;QAShC,iBAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;QA0mB7C,aAAQ,GAAG;YACP,OAAA,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,KAAI;SAAA,CAAC;QA3jB1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;SACtC;;QAGD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QACvD,IAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAACF,2BAAmB,CAAC,MAAM,CAAC,CAAC;QACvF,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,cAAM,OAAA,IAAI,GAAA,CAAC,CAAC;QAEtD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;KAC/B;;IA9DD,6BAAQ,GAAR,UAAS,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEjH,4BAAO,GAAP,UAAQ,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEhH,2BAAM,GAAN,UAAO,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEpH,6BAAQ,GAAR,UAAS,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEtH,4BAAO,GAAP,UAAQ,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAErH,6BAAQ,GAAR,UAAS,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEjH,8BAAS,GAAT,UAAU,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAElH,4BAAO,GAAP,UAAQ,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;;;;IAMxG,+CAA0B,GAAlC;QAAA,iBAIC;QAHC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE;aAChD,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,KAAKA,2BAAmB,CAAC,MAAM,GAAA,CAAC;aAC7D,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,KAAI,EAAE,KAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAA,CAAC,CAAC;KAC5E;;IAGD,6BAAQ,GAAR,UAAS,QAAgB;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACxC;IAmCO,qCAAgB,GAAxB,UAAyB,MAAgB;QACvC,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,GAAA,CAAC,CAAC;QAC1E,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;KAClG;;;;;;IAOD,0BAAK,GAAL;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KAC3C;;;;;;IAOD,wBAAG,GAAH;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;KACzC;;;;;;;;IASD,yBAAI,GAAJ;QACE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;KAC1B;;;;;;;;IASD,uBAAE,GAAF;QACE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACxB;;;;;;;;IASD,gCAAW,GAAX;QACE,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;;;;;IAMD,uBAAE,GAAF,UAAG,OAA4C;QAC7C,IAAI,OAAO,YAAY,UAAU,EAAE;;YAEjC,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;SACxE;QACD,OAAO,EACL,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;aACjD,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;KACH;IA6BD,2BAAM,GAAN,UAAO,QAAe;QAAf,yBAAA,EAAA,eAAe;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DD,6BAAQ,GAAR,UAAS,KAAmB,EAAE,QAAe;QAAf,yBAAA,EAAA,eAAe;QAC3C,IAAI,IAAI,GAAe,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK;YAAE,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAA,CAAC,CAAC;QACrG,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCD,qCAAgB,GAAhB,UAAiB,QAAe;QAAf,yBAAA,EAAA,eAAe;QAC9B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KACpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BD,kCAAa,GAAb,UAAc,UAAwC,EAAE,KAAuB;QAAvB,sBAAA,EAAA,UAAuB;QAC7E,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAElF,IAAM,SAAS,GAAW,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3E,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,GAAA,CAAC,CAAC;QACvE,IAAM,cAAc,GAAmB,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAClE,cAAc,CAAC,cAAc,CAAC,CAAC,UAAwB,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;KAC7E;;;;;;;;;;;;;;;;;;IAmBD,mCAAc,GAAd;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC;KAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BD,uCAAkB,GAAlB;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC;KAChD;;;;;;IAOD,4BAAO,GAAP;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;;;;;IAOD,6BAAQ,GAAR;QACE,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACtE;;;;;;IAOD,4BAAO,GAAP;QACE,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/E;;;;;;;IAQD,6BAAQ,GAAR;QACE,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACtE;;;;;;;;;;;;;IAcD,0BAAK,GAAL,UAAM,QAAqB,EAAE,KAAmB;QAA1C,yBAAA,EAAA,qBAAqB;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KACrE;IAgBD,gCAAW,GAAX,UAAY,QAAiB;QAC3B,OAAO,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;KACnE;;;;;;;;;;;IAYD,6BAAQ,GAAR,UAAS,WAAwB;QAC/B,IAAI,SAAS,GAAG,CAAC,EAAE,KAAK,GAAe,IAAI,CAAC;;QAE5C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,EAAE,SAAS,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SAC1F;QAED,IAAM,YAAY,GAAsB,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;;;;;QAKrF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC/E,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;SACnC;QAED,IAAM,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QACnF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAExD,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChG,IAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QACzD,IAAM,qBAAqB,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;;;;;;;;;;QAYlE,IAAM,eAAe,GAAG,UAAC,WAAwB,IAAK,OAAA,UAAC,IAAc;YACnE,OAAO,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC7D,GAAA,CAAC;;QAGF,IAAM,qBAAqB,GAAe,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,SAAS,CAAC,gBAAgB,CAAC;aACjI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;QAGrE,qBAAqB,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,GAAG;YACtC,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;SAC3D,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;KACtB;;IAGO,mCAAc,GAAtB;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;;;QAI7B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;;QAE3C,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;;QAE9D,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;;QAEtD,IAAM,WAAW,GAAY,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;aACnD,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAA,CAAC;aAC/C,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,WAAW;YAAE,OAAO,SAAS,CAAC;;QAGlC,IAAM,WAAW,GAAc,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAC,IAAc,IAAK,OAAA,IAAI,CAAC,WAAW,GAAA,CAAC,CAAC;QACzE,IAAA,uGAAmF,EAAlF,gBAAQ,EAAE,kBAAU,CAA+D;QAC1F,IAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE9D,OAAO,MAAM,CAAC,GAAG,CAAC,UAAC,EAA0B;gBAAzB,cAAM,EAAE,cAAM,EAAE,gBAAQ;YAAM,OAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SAAA,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAChH;;;;;;;;IASD,4BAAO,GAAP;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,GAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC/E;;;;;;;;IASD,4BAAO,GAAP;QACE,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAChC;;IAGD,mCAAc,GAAd;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/C,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAE9C,IAAM,IAAI,GAAG,UAAC,KAAK,EAAE,KAAK;YACxB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAChD,IAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC;SAChH,CAAC;QAEF,IAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAM,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAEhD,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO,eAAe,CAAC;QACvG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,eAAe,CAAC;KACrH;;;;;;;;;;IAWD,wBAAG,GAAH;QAAA,iBAiDC;QAhDC,IAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;;QAG/C,IAAM,WAAW,GAAG,UAAC,KAA0B;YAC3C,OAAA,KAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;SAAA,CAAC;;QAGhD,IAAM,iBAAiB,GAAG;YACxB,KAAK,CAAC,YAAY,CAAC,KAAI,CAAC,GAAG,EAAE,EAAE,KAAI,CAAC,CAAC;YACrC,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,WAAW,CAAC,WAAW,CAACA,2BAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;SACvD,CAAC;QAEF,IAAM,eAAe,GAAG,UAAC,MAAW;YAClC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,CAAC;YAC/B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,WAAW,CAAC,WAAW,CAACA,2BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;SACrD,CAAC;QAEF,IAAM,aAAa,GAAG;;;YAGpB,IAAM,WAAW,GAAG,WAAW,CAACA,2BAAmB,CAAC,GAAG,CAAC,CAAC;YACzD,IAAM,IAAI,GAAG,cAAM,OAAA,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAA,CAAC;YAC/C,OAAO,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACtD,CAAC;QAEF,IAAM,eAAe,GAAG;YACtB,IAAM,OAAO,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEpC,OAAO,CAAC,uBAAuB,GAAG,KAAI,CAAC,GAAG,CAAC;YAC3C,OAAO,CAAC,UAAU,GAAG,KAAI,CAAC;YAC1B,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAI,CAAC,CAAC;YAExC,KAAK,CAAC,oBAAoB,CAAC,KAAI,CAAC,CAAC;YAEjC,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACpC,CAAC;QAEF,IAAM,cAAc,GAAG,WAAW,CAACA,2BAAmB,CAAC,MAAM,CAAC,CAAC;QAC/D,cAAc,CAAC,WAAW,CAAC,cAAc,EAAE,eAAe,CAAC;aACtD,IAAI,CAAC,aAAa,CAAC;aACnB,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;;;;IAWD,0BAAK,GAAL;QACE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;KACpD;;;;;;;IAQD,0BAAK,GAAL;;QAEE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;KACF;;;;;;;;;IAUD,0BAAK,GAAL;QACE,IAAM,KAAK,GAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ;YACrB,OAAO,0CAAwC,KAAK,CAAC,IAAI,MAAG,CAAC;QAE/D,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,EAAEI,SAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7D,IAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,SAAS,CAACA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC;QACpF,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,OAAO,uCAAqC,KAAK,CAAC,IAAI,6BAAwB,aAAa,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,EAAE,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAI,CAAC;SACnI;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;;;;;IAOD,6BAAQ,GAAR;QACE,IAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEhC,IAAM,cAAc,GAAG,UAAC,MAAiB;YACvC,OAAA,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;SAAA,CAAC;;QAGrF,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EACf,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,IAAI,GAAG,eAAe,EACzE,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAC1G,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,EACpC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,EACjE,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAExD,OAAO,gBAAc,EAAE,WAAM,IAAI,SAAI,UAAU,YAAO,OAAO,SAAI,EAAE,SAAI,QAAQ,OAAI,CAAC;KACrF;;IAjuBM,kBAAO,GAAG,UAAU,CAAC;IAkuB9B,iBAAC;CAAA;;AChxBD;;;;;;;AAQA,AAOA;;;;;;;;;AASA,mBAA0B,GAAW,EAAE,GAAW;IAChD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;CACvC;;;;;;;;;;AAWD,mBAA0B,MAAc,EAAE,GAAW;IACnD,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;QAAE,GAAG,IAAI,GAAG,CAAC;IACvC,OAAO,GAAG,CAAC;CACZ;AAED,qBAA4B,SAAiB;IAC3C,OAAO,SAAS;SACX,OAAO,CAAC,UAAU,EAAE,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,WAAW,EAAE,GAAA,CAAC;SAC3C,OAAO,CAAC,UAAU,EAAE,UAAA,EAAE,IAAI,OAAA,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;CACxD;AAED,0BAaiC,EAAY;IAC3C,IAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAM,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACrE,IAAM,KAAK,GAAG,kBAAkB,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAEjE,IAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;QACxC,OAAO,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC/C;IACD,OAAO,KAAK,CAAC;CACd;AAED,oBAA2B,EAAe;IACxC,IAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/C,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC;CAC7C;AAED,IAAI,kBAAkB,GAAyB,IAAI,CAAC;AACpD,IAAM,gBAAgB,GAAG,UAAS,KAAU;IAC1C,IAAM,WAAW,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAEjD,kBAAkB,GAAS,kBAAkB,IAAI,OAAO,CAAC;QACvD,CAAC,GAAG,CAAC,SAAS,CAAC,EAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,MAAM,EAAW,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,SAAS,EAAQ,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,WAAW,EAAM,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,GAAA,CAAC;QAChE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC,YAAY,EAAK,gBAAgB,CAAC;QACnC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAQ,QAAQ,CAAC;KAC5B,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAClC,CAAC;AAEF,mBAA0B,CAAM;IAC9B,IAAM,IAAI,GAAU,EAAE,CAAC;IAEvB,gBAAgB,KAAU;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClB;QACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9E;;AAGD,AAAO,IAAM,iBAAiB,GAAG,UAAC,IAAY,IAAK,OAAA,UAAC,GAAW;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAClD,GAAA,CAAC;AAEF,AAAO,IAAM,SAAS,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC7D,AAAO,IAAM,oBAAoB,GAAG,UAAC,GAAW,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,GAAA,CAAC;AACjF,AAAO,IAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChD,AAAO,IAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjD,AAAO,IAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjD,AAAO,IAAM,WAAW,GAAG,UAAC,GAAW,IAAK,OAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,GAAA,CAAC;;;;;;;;;;;AAY7E,sBAA6B,KAAa;IACxC,IAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,UAAC,GAAW;QACf,OAAA,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;KAAA,CAAC;CACpC;;;;;;;;;;;;;AAeD,wBAA+B,GAAU,EAAE,CAAM;IAC/C,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CACtB;;AChKD,wCAAwC;;ACAxC;;;;;AAKA,AAOA;;;;;;;;;;;;;;;;;AAiBA;;IA8KE;;QARA,YAAO,GAAG,IAAI,CAAC;;QAEf,cAAS,GAAU,EAAE,CAAC;;QAGd,iBAAY,GAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;;QAKhI,IAAM,QAAQ,GAAG,UAAC,UAA+B,EAAE,IAAY;YAC3D,OAAA,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,MAAA,EAAE,EAAE,UAAU,CAAC,CAAC;SAAA,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;KAC5D;;IAGD,4BAAO,GAAP;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;;;;;;IAOD,yBAAI,GAAJ,UAAK,IAAY,EAAE,UAAgC,EAAE,YAAwC;QAC3F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAiB,IAAI,gCAA6B,CAAC,CAAC;QAEzG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,MAAA,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAE/D,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,eAAe,EAAE,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC;KACb;;IAGD,oCAAe,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC5B,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACpE;KACF;IACH,iBAAC;CAAA,IAAA;AAED;AACA;IAEE,IAAM,eAAe,GAAG,UAAC,GAAG;QAC1B,IAAM,WAAW,GAAG,UAACT,MAAQ;YACzB,OAAAA,MAAG,IAAI,IAAI,GAAGA,MAAG,CAAC,QAAQ,EAAE,GAAGA,MAAG;SAAA,CAAC;QAEvC,IAAM,eAAe,GAAG;YACtB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,WAAW;YACnB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,IAAI;;YAEb,MAAM,EAAE,UAAC,CAAM,EAAE,CAAM,IAAK,OAAA,CAAC,IAAI,CAAC,GAAA;SACnC,CAAC;QAEF,OAAO,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,CAAwB,CAAC;KAChE,CAAC;;IAGF,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE;QAC3B,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;QAE3B,IAAI,EAAE,eAAe,CAAC;YACpB,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;QAE1B,IAAI,EAAE,eAAe,CAAC;YACpB,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,GAAG,EAAE,eAAe,CAAC;YACnB,MAAM,EAAE,UAACA,MAAW,IAAK,OAAA,QAAQ,CAACA,MAAG,EAAE,EAAE,CAAC,GAAA;YAC1C,EAAE,EAAE,UAASA,MAAQ;gBACnB,OAAO,CAAC,iBAAiB,CAACA,MAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAACA,MAAG,CAAC,QAAQ,EAAE,CAAC,KAAKA,MAAG,CAAC;aACvE;YACD,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,IAAI,EAAE,eAAe,CAAC;YACpB,MAAM,EAAE,UAACA,MAAQ,IAAK,OAAAA,MAAG,IAAI,CAAC,IAAI,CAAC,GAAA;YACnC,MAAM,EAAE,UAACA,MAAW,IAAK,OAAA,QAAQ,CAACA,MAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAA;YAChD,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC;YACf,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,IAAI,EAAE,eAAe,CAAC;YACpB,MAAM,EAAE,UAASA,MAAQ;gBACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAACA,MAAG,CAAC,GAAG,SAAS,GAAG;oBACjCA,MAAG,CAAC,WAAW,EAAE;oBACjB,CAAC,GAAG,IAAIA,MAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtC,CAAC,GAAG,GAAGA,MAAG,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;iBAChC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;YACD,MAAM,EAAE,UAASA,MAAW;gBAC1B,IAAI,IAAI,CAAC,EAAE,CAACA,MAAG,CAAC;oBAAE,OAAaA,MAAW,CAAC;gBAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAACA,MAAG,CAAC,CAAC;gBACrC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;aACvE;YACD,EAAE,EAAE,UAACA,MAAQ,IAAK,OAAAA,MAAG,YAAY,IAAI,IAAI,CAAC,KAAK,CAACA,MAAG,CAAC,OAAO,EAAE,CAAC,GAAA;YAC9D,MAAM,YAAC,CAAM,EAAE,CAAM;gBACnB,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC;qBACxC,MAAM,CAAC,UAAC,GAAG,EAAE,EAAE,IAAK,OAAA,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAA,EAAE,IAAI,CAAC,CAAC;aAC5D;YACD,OAAO,EAAE,yDAAyD;YAClE,OAAO,EAAE,uDAAuD;SACjE,CAAC;QAEF,IAAI,EAAE,eAAe,CAAC;YACpB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;SACjB,CAAC;;QAGF,GAAG,EAAE,eAAe,CAAC;YACnB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,EAAE,EAAE,cAAM,OAAA,IAAI,GAAA;YACd,MAAM,EAAE,MAAM;SACf,CAAC;KACH,CAAC,CAAC;CACJ;AAED,gBAAgB,EAAE,CAAC;;AC5UnB;;;;;AAKA,AAGA;AACA;IAGE,qBAAY,MAAgB;QAAhB,uBAAA,EAAA,WAAgB;QAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACtB;;;;;;;;;IAUD,8BAAQ,GAAR,UAAS,SAAc,EAAE,QAAqB,EAAE,GAAgB;QAC9D,IAAI,YAAsB,CAAC;QAC3B,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,EACpC,SAAS,GAAQ,EAAE,EACnB,WAAW,GAAa,EAAE,CAAC;QAE/B,KAAK,IAAM,CAAC,IAAI,OAAO,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM;gBAAE,SAAS;YAChD,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,MAAM;gBAAE,SAAS;YAEnC,KAAK,IAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACxD,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;SACF;QACD,OAAO,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACzC;IACH,kBAAC;CAAA;;AC3CD,sCAAsC;;ACAtC,yCAAyC;;ACAzC;AACA,AAgBA,IAAM,QAAQ,GAAG,UAAC,GAAW;IAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,IAAMU,OAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;IACnC,OAAO,EAAE,GAAG,EAAEA,OAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,SAAA,EAAE,CAAC;CACrD,CAAC;AAoBF,qBAAqB,KAAkB;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC;CACnB;AAED,qBAAqB,KAAkB;IACrC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,cAAM,OAAA,KAAK,GAAA,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC;CACnB;AAED,qBAAqB,KAAkB;IACrC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QACrC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KACvE;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;CACnB;AAED,IAAM,aAAa,GAAG,UAAC,0BAA6C,EAAEA,OAAuB;IAC7F,OAAA,oBAAoB,KAAkB;QACpC,IAAM,QAAQ,GAA2B,KAAK,CAAC;;;QAI/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC/E,QAAQ,CAAC,GAAG,IAAI,iBAAiB,CAAC;SACnC;QAED,IAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7D,IAAM,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YAClF,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC1B,QAAQ,EAAE,UAAU,WAAgB,EAAE,QAAiB;gBACrD,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK,IAAI,QAAQ;oBAAE,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9G,OAAO,WAAW,CAAC;aACpB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAgB,GAAG,oBAAe,KAAK,MAAG,CAAC,CAAC;QAC5G,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAKA,OAAI,EAAE,EAAE,GAAG,CAAC,MAAM,CAAc,GAAG,CAAC,CAAC;KAC9G;CAAA,CAAC;AAEF,IAAM,mBAAmB,GAAG,UAAC,MAAuC;IACpE,OAAA,0BAA0B,KAAkB;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;KAC7F;CAAA,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,YAA0B;IACpD,OAAA,uBAAuB,KAAkB;QACvC,IAAM,eAAe,GAAG,UAAC,MAAW,EAAE,EAAU,IAAK,OAAA,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAA,CAAC;QAC/F,IAAM,SAAS,GAAY,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QACzF,IAAM,YAAY,GAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;QACnH,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;KAClF;CAAA,CAAC;AAEF,qBAAqB,KAAkB;IACrC,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CAC1E;AAED,yBAAyB,KAAkB;IACzC,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,OAAO,QAAQ,CAAC;CACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CD,4BAAmC,KAAkB;;IAInD,IAAM,cAAc,GAAM,UAAC,UAAe,EAAE,eAAiD;QACzF,OAAA,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,QAAC,EAAE,KAAK,OAAA,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,IAAC,CAAC;KAAA,CAAC;;IAGrI,IAAM,QAAQ,GAAY,UAAC,EAAY;QACrC,IAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;;;;QAIrC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAU,UAAU,CAAC;KACvG,CAAC;;IAGF,IAAM,gBAAgB,GAAI,UAAC,GAAQ,IAAK,OAAA,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,GAAA,CAAC;;IAGvE,IAAM,iBAAiB,GAAG,UAAC,GAAQ,IAAK,OAAA,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAA,CAAC;;IAG9I,IAAM,cAAc,GAAM,UAAC,GAAQ,IAAK,OAAA,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAK,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAA,CAAC;;IAG9H,IAAM,QAAQ,GAAY,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,GAAA,CAAC;;IAG3D,IAAM,kBAAkB,GAAG,OAAO,CAAC;QACjC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAI,UAAA,CAAC,IAAI,OAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC;QACtF,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG,UAAA,CAAC,IAAI,OAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC;QAC3G,CAAC,IAAI,CAAC,UAAU,CAAC,EAAK,UAAA,CAAC,IAAI,OAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAM,OAAA,IAAU,CAAC,CAAC,QAAS,EAAE,GAAA,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC;QACpG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAK,UAAA,CAAC,IAAI,OAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAM,OAAA,CAAC,CAAC,QAAQ,GAAA,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC;QACnG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC;KAC7F,CAAC,CAAC;IAEH,IAAM,gBAAgB,GAAG,OAAO,CAAC;QAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAI,UAAC,KAAY,IAAK,OAAA,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAE,KAAK,CAAC,GAAG,CAAE,EAAE,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC;QACrH,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAK,UAAC,KAAY,IAAK,OAAA,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAS,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC;QAC7I,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,UAAC,KAAY,IAAK,OAAA,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC;KAC7H,CAAC,CAAC;IAEH,IAAM,eAAe,GAA8B,OAAO,CAAC;QACzD,CAAC,EAAE,CAAC,UAAU,CAAC,EAAiB,UAAC,CAAa,IAAK,OAAA,CAAC,GAAA,CAAC;QACrD,CAAC,gBAAgB,EAAe,kBAAkB,CAAC;QACnD,CAAC,iBAAiB,EAAc,kBAAkB,CAAC;QACnD,CAAC,cAAc,EAAiB,gBAAgB,CAAC;QACjD,CAAC,GAAG,CAAC,IAAI,CAAC,EAAsB,UAAC,GAAQ,IAAO,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KAChH,CAAC,CAAC;;;IAIH,IAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IAC3B,IAAM,KAAK,GAAU,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC5F,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACnC;;;;;;;;;;;;;AAcD;IAIE,sBAAoB,OAAqB,EAAE,iBAAoC;QAA3D,YAAO,GAAP,OAAO,CAAc;QACvC,IAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAMA,OAAI,GAAG,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,CAAC;QACpC,IAAM,MAAM,GAAG,UAAC,KAAkB,IAAK,OAAA,KAAK,CAAC,IAAI,KAAK,EAAE,GAAA,CAAC;QAEzD,uBAAuB,KAAkB;YACvC,IAAI,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAIA,OAAI,EAAE,CAAC;SACvD;QAED,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,CAAE,WAAW,CAAE;YACrB,IAAI,EAAE,CAAE,WAAW,CAAE;YACrB,MAAM,EAAE,CAAE,aAAa,CAAE;YACzB,IAAI,EAAE,CAAE,WAAW,CAAE;;YAErB,GAAG,EAAE,CAAE,aAAa,CAAC,iBAAiB,EAAEA,OAAI,CAAC,CAAE;;YAE/C,SAAS,EAAE,CAAE,mBAAmB,CAAC,MAAM,CAAC,CAAE;YAC1C,MAAM,EAAE,CAAE,gBAAgB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAE;;;YAG5D,KAAK,EAAE,EAAE;;YAET,IAAI,EAAE,CAAE,WAAW,CAAE;;YAErB,QAAQ,EAAE,CAAE,eAAe,CAAE;YAC7B,WAAW,EAAE,CAAE,kBAAkB,CAAE;SACpC,CAAC;KACH;;;;;;;;;;;IAYD,8BAAO,GAAP,UAAQ,IAAY,EAAE,EAAmB;QACvC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;QAEnC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,OAAO;QAE/C,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAA,CAAC;KAC3E;;;;;;;;IASD,4BAAK,GAAL,UAAM,KAAkB;QAChB,IAAA,SAA4B,EAA1B,oBAAO,EAAE,sBAAQ,CAAU;QACnC,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QAED,KAAK,IAAM,GAAG,IAAI,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5C,IAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,QAAyB,EAAE,IAAqB,IAAK,OAAA,UAAC,MAAM,IAAK,OAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAA,GAAA,EAAE,IAAI,CAAC,CAAC;YACnI,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,OAAO,KAAK,CAAC;KACd;IAED,iCAAU,GAAV,UAAW,KAAkB;;QAE3B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;;QAE9B,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;QAEjC,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;QAEnC,IAAI,WAAW,KAAK,IAAI;YAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEzC,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,qFAAmF,IAAI,MAAG,CAAC,CAAC;aAC7G;;YAGD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3B;QAED,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;KAClE;IAED,2BAAI,GAAJ,UAAK,KAAkB;QACrB,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAE3D,IAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7E,OAAO,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;KACpD;IACH,mBAAC;CAAA;;ACtUD;AACA,AAKA;IACE,sBAAqB,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;KAAK;IAEjE,iCAAU,GAAV,UAAW,SAAiB;QAC1B,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACrE;IAGD,2BAAI,GAAJ,UAAK,WAAwB,EAAE,IAAkB,EAAE,SAAgB;QAAhB,0BAAA,EAAA,gBAAgB;QACjE,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QACzD,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,IAAI,GAAW,KAAK,GAAG,WAAW,GAAS,WAAY,CAAC,IAAI,CAAC;QAEjE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,KAAK,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE;YACzF,OAAO,KAAK,CAAC;SACd;aAAM,IAAI,KAAK,IAAI,SAAS,EAAE;YAC7B,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM;gBACjC,OAAA,MAAM,CAAC,kBAAkB,CAAC,QAAQ;oBAClC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;aAAA,CACnD,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEtB,OAAO,CAAC,GAAG,CAAC,mDAAiD,IAAI,kBAAe,EAAE,OAAO,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,GAAA,CAAC,CAAC,CAAC;aACrH;YACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;KAClB;IAED,kCAAW,GAAX,UAAY,IAAY,EAAE,IAAiB;QACzC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAsC,IAAI,MAAG,CAAC,CAAC;QAE1E,IAAM,SAAS,GAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAE/B,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,GAAG,SAAS,CAAC;gBACpB,SAAS;aACV;YACD,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,WAAS,IAAI,+BAA0B,SAAS,CAAC,IAAI,MAAG,CAAC,CAAC;gBAC/F,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;gBACzB,SAAS;aACV;YACD,MAAM;SACP;QACD,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;KACtE;IACH,mBAAC;CAAA;;ACjED;AACA,AAWA;AACA;IAIE,2BACY,SAAwB,EACxB,UAAqB,EACtB,MAAuC,EACvC,OAAqB,EACrB,SAAkC;QAJjC,cAAS,GAAT,SAAS,CAAe;QACxB,eAAU,GAAV,UAAU,CAAW;QACtB,WAAM,GAAN,MAAM,CAAiC;QACvC,YAAO,GAAP,OAAO,CAAc;QACrB,cAAS,GAAT,SAAS,CAAyB;QAC3C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;KAClC;;IAGD,mCAAO,GAAP;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;IAED,oCAAQ,GAAR,UAAS,SAA4B;QACnC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,YAAU,IAAI,yBAAsB,CAAC,CAAC;QAExD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,OAAO,KAAK,CAAC;KACd;IAED,iCAAK,GAAL;QAAA,iBAoDC;QAnDO,IAAA,SAAiC,EAA/B,gBAAK,EAAE,kBAAM,EAAE,oBAAO,CAAU;QACxC,IAAM,UAAU,GAAkB,EAAE;QAChC,OAAO,GAAkB,EAAE;QAC3B,mBAAmB,GAAG,EAAE,CAAC;QAC7B,IAAM,QAAQ,GAAG,UAAC,IAAI;YAClB,OAAA,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SAAA,CAAC;QAE1D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAM,KAAK,GAAgB,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAM,MAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,IAAM,MAAM,GAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,IAAM,SAAS,GAAW,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEjD,IAAI,MAAM,EAAE;gBACV,IAAM,aAAa,GAAG,QAAQ,CAAC,MAAI,CAAC,CAAC;gBACrC,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,MAAI,EAAE;oBAChD,MAAM,IAAI,KAAK,CAAC,YAAU,MAAI,yBAAsB,CAAC,CAAC;iBACvD;gBAED,IAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAI,GAAG,KAAK,CAAC,CAAC;gBACnD,IAAI,mBAAmB,EAAE;;oBAEvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;iBAChD;gBAED,MAAM,CAAC,MAAI,CAAC,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,SAAS,IAAI,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACjD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,SAAS;aACV;YAED,IAAM,IAAI,GAAG,mBAAmB,CAAC,MAAI,CAAC,CAAC;YACvC,mBAAmB,CAAC,MAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACzC,IAAI,SAAS,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE;;;gBAG3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,SAAS,GAAG,CAAC,EAAE;gBACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrB;YAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,IAAI,UAAU,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC,GAAA,CAAC,CAAC;SACzF;QAED,OAAO,MAAM,CAAC;KACf;IAED,uCAAW,GAAX,UAAY,KAAkB;QAC5B,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,OAAO;QAEzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACpE;IACH,wBAAC;CAAA;;AC1GD;;;;AAMA,AAoBA;;IAWE,uBAAoB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAT7B,WAAM,GAAmC,EAAE,CAAC;QAMpD,cAAS,GAA4B,EAAE,CAAC;QAItC,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5G,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;IAGO,qCAAa,GAArB;QACE,IAAM,YAAY,GAAqB;YACrC,IAAI,EAAE,EAAE;YACR,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,IAAI;YACX,MAAM,EAAE;gBACN,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;aAClD;YACD,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;KACxB;;IAGD,+BAAO,GAAP;QAAA,iBAIC;QAHC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;KACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCD,uCAAe,GAAf,UAAgB,QAA+B;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO;YACL,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;SACtC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;;;;;;;;;;IAWD,4BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;;;;;;;;;;;;IAcD,gCAAQ,GAAR,UAAS,eAAkC;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;KAClD;;IAGO,uCAAe,GAAvB,UAAwB,KAAkB;QAA1C,iBAmBC;QAlBC,IAAMC,MAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,EAAE,GAAA,CAAC,CAAC;QAC7C,IAAM,WAAW,GAAG,UAAC,MAAqB;YACxC,IAAM,SAAS,GAAGA,MAAG,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;YACnE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;SACtF,CAAC;QAEF,IAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,IAAM,YAAY,GAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAEvE,YAAY,CAAC,OAAO,CAAC,UAAA,MAAM;YACzB,IAAM,GAAG,GAAG,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;YAEnC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;YAE9E,OAAO,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;KACrB;;;;;;;;;;IAWD,kCAAU,GAAV,UAAW,WAAwB;QACjC,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,WAAW,CAAC,CAAC;QAClF,IAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC,GAAA,CAAC,CAAC;QAClG,OAAO,kBAAkB,CAAC;KAC3B;IAuBD,2BAAG,GAAH,UAAI,WAAyB,EAAE,IAAkB;QAAjD,iBAKC;QAJC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,OAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC;QAC3F,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;KACpC;IAED,iCAAS,GAAT,UAAU,IAAY,EAAE,IAAqB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACzC;IACH,oBAAC;CAAA;;AC5MD;;;;;AAKA,AAWA;AACA,qBAAqB,GAAQ,EAAE,KAAW;IACxC,IAAI,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACtF,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,QAAQ,KAAK,CAAC,MAAM;QAClB,KAAK,KAAK;YACR,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YAAC,MAAM;QACtE,KAAK,IAAI;YACP,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvC,MAAM;QACR;YACE,eAAe,GAAG,CAAC,MAAI,KAAK,CAAC,MAAM,MAAG,EAAE,IAAI,CAAC,CAAC;YAAC,MAAM;KACxD;IACD,OAAO,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CACrF;;AAGD,IAAM,SAAS,GAAG,UAAC,GAAQ,EAAE,KAAa,EAAE,EAAY;IACpD,OAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;CAAA,CAAC;;AAGpC,IAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DvC;;;;;;;;IA6GE,oBAAYC,UAAe,EAAE,UAAsB,EAAE,YAA0B,EAAS,MAAY;QAApG,iBA0FC;QA1FuF,WAAM,GAAN,MAAM,CAAM;;QAxG5F,WAAM,GAAoB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;;QAE3C,cAAS,GAAiB,EAAE,CAAC;;QAE7B,YAAO,GAAmB,EAAE,CAAC;;QAE7B,cAAS,GAAiB,EAAE,CAAC;;QAE7B,cAAS,GAAiB,EAAE,CAAC;QAiGnC,IAAI,CAAC,OAAO,GAAGA,UAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,KAAK;YACtB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;;;;;;;;;;;;;;QAeH,IAAM,WAAW,GAAG,uFAAuF,CAAC;QAC5G,IAAM,iBAAiB,GAAG,2FAA2F,CAAC;QACtH,IAAM,QAAQ,GAAY,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,CAAC,EAAE,UAA2B,CAAC;QAE1C,IAAM,gBAAgB,GAAG,UAAC,EAAU;YAClC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA2B,EAAE,sBAAiBA,UAAO,MAAG,CAAC,CAAC;YAClH,IAAI,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA6B,EAAE,sBAAiBA,UAAO,MAAG,CAAC,CAAC;SACvH,CAAC;;;QAIF,IAAM,YAAY,GAAG,UAAC,CAAkB,EAAE,QAAiB;;YAEzD,IAAM,EAAE,GAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,IAAM,MAAM,GAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;YAErF,IAAM,cAAc,GAAG,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,EAAE;gBACpF,OAAO,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,KAAI,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,GAAG,SAAS,CAAC;aACxE,CAAC,GAAA,CAAC;YAEH,OAAO;gBACL,EAAE,IAAA;gBACF,MAAM,QAAA;gBACN,GAAG,EAAM,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAEA,UAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;gBACzC,IAAI,EAAK,CAAC,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC;aAC5E,CAAC;SACH,CAAC;QAEF,IAAI,CAAM,EAAE,OAAe,CAAC;;QAG5B,QAAQ,UAAU,GAAG,WAAW,CAAC,IAAI,CAACA,UAAO,CAAC,GAAG;YAC/C,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM;YAEvC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC;SAC9B;QACD,OAAO,GAAGA,UAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;QAGlC,IAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,IAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAElC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,GAAG,CAAC,CAAC;;gBAGT,QAAQ,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;oBACpD,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACnC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5F,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC;;iBAE9B;aACF;SACF;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3G;;IApLM,uBAAY,GAAnB,UAAoB,GAAW;QAC7B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,UAAA,CAAC,IAAI,OAAA,SAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAI,GAAA,CAAC,CAAC;KACxG;;IAGM,gCAAqB,GAA5B,UAA6B,OAAmB;QAC9C,IAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,IAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,KAAKL,eAAO,CAAC,IAAI,GAAA,CAAC,CAAC;QAC5E,OAAO,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC7D,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;KAC1C;;IAGM,sBAAW,GAAlB,UAAmB,OAAmB;QACpC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,KAAKA,eAAO,CAAC,MAAM,GAAA,CAAC,CAAC;KACnE;;;;;;;;;;IAWM,kBAAO,GAAd,UAAe,CAAa,EAAE,CAAa;;;;;;;;;;;QAWzC,IAAM,QAAQ,GAAG,UAAC,OAAmB;YACnC,OAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ;gBAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC;qBACtD,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;qBACnB,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;qBAC1B,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAA,CAAC;qBAC3C,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;SAAA,CAAC;;;;;;QAO3B,IAAM,OAAO,GAAG,UAAC,OAAmB;YAClC,OAAA,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO;gBAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,OAAO;;oBAE3B,IAAI,OAAO,KAAK,GAAG;wBAAE,OAAO,CAAC,CAAC;oBAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC;wBAAE,OAAO,CAAC,CAAC;oBAChC,IAAI,OAAO,YAAY,KAAK;wBAAE,OAAO,CAAC,CAAC;iBACxC,CAAC;SAAA,CAAC;;;;QAKP,IAAM,SAAS,GAAG,UAAC,CAAQ,EAAE,CAAQ,EAAE,MAAW;YAChD,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG;gBAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG;gBAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC,CAAC;QAEF,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEjC,IAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,GAAG,EAAE,CAAC,CAAC;QAEX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;SAC3B;QAED,OAAO,CAAC,CAAC;KACV;;;;;;;;IA4GD,2BAAM,GAAN,UAAO,GAAe;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,GAAG;YACX,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAClC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;SACd,CAAC;QACF,OAAO,GAAG,CAAC;KACZ;;IAGD,2BAAM,GAAN;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;KACrC;;IAGD,6BAAQ,GAAR;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BD,yBAAI,GAAJ,UAAK,IAAY,EAAE,MAAgB,EAAE,IAAa,EAAE,OAAiB;QAArE,iBAwDC;QAxDkB,uBAAA,EAAA,WAAgB;QAAiB,wBAAA,EAAA,YAAiB;QACnE,IAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE;YAC9C,OAAO,IAAI,MAAM,CAAC;gBAChB,GAAG;gBACH,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,KAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,EAAE;gBACzC,GAAG;aACJ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAI,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;SAC5D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;;QAIxB,IAAM,SAAS,GAAe,IAAI,CAAC,UAAU,EAAE,EAC3C,UAAU,GAAc,SAAS,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAA,CAAC,EACpE,YAAY,GAAY,SAAS,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,QAAQ,EAAE,GAAA,CAAC,EACnE,aAAa,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,GAAA,CAAC,EAChGE,SAAM,GAAc,EAAE,CAAC;QAE3B,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,wCAAsC,IAAI,CAAC,OAAO,MAAG,CAAC,CAAC;QAEzE,yBAAyB,QAAgB;YACvC,IAAM,aAAa,GAAG,UAAC,GAAW,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,CAAC;YACxE,IAAM,aAAa,GAAG,UAAC,GAAW,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAA,CAAC;YAEhE,IAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvD,IAAM,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC9C,OAAO,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;SAClD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACtC,IAAM,KAAK,GAAU,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,GAAgB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;YAGtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK;oBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;YACD,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;gBAAE,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvDA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;YACxB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK;oBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;YACD,IAAI,SAAS,CAAC,KAAK,CAAC;gBAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvDA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvC,CAAC,CAAC;QAEH,IAAI,IAAI;YAAEA,SAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAE7B,OAAOA,SAAM,CAAC;KACf;;;;;;;;IASD,+BAAU,GAAV,UAAW,IAAc;QAAd,qBAAA,EAAA,SAAc;QACvB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,OAAO,GAAA,CAAC,CAAC,CAAC;KACjE;;;;;;;;;IAUD,8BAAS,GAAT,UAAU,EAAU,EAAE,IAAc;QAApC,iBASC;QATqB,qBAAA,EAAA,SAAc;QAClC,IAAM,SAAS,GAAG;YAChB,KAAoB,UAAY,EAAZ,KAAA,KAAI,CAAC,OAAO,EAAZ,cAAY,EAAZ,IAAY;gBAA3B,IAAM,KAAK,SAAA;gBACd,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;oBAAE,OAAO,KAAK,CAAC;aACnC;SACF,CAAC;QAEF,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;KAChG;;;;;;;;;;IAWD,8BAAS,GAAT,UAAU,MAAiB;QACzB,IAAM,aAAa,GAAG,UAAC,KAAY,EAAET,MAAQ;YACzC,OAAA,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAACA,MAAG,CAAC;SAAA,CAAC;QAEnC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;;QAGtB,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;QAC7F,OAAO,WAAW,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACzG;;;;;;;;;;;;;;;;IAiBD,2BAAM,GAAN,UAAOS,SAAsB;QAAtB,0BAAA,EAAAA,cAAsB;;QAE3B,IAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;;QAIrC,IAAM,qBAAqB,GAA+B,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC;aAClG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;;QAGnD,IAAM,WAAW,GAAwB,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;aACvE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;aACnB,GAAG,CAAC,UAAU,CAAC,CAAC;QAEzB,IAAM,SAAS,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAK,CAAC,OAAO,KAAK,KAAK,GAAA,CAAC;QACnE,IAAI,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;YACtE,OAAO,IAAI,CAAC;SACb;;;;QAKD,oBAAoB,KAAY;;YAE9B,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAACA,SAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,IAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,IAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;YAEnD,IAAM,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;;YAErD,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzC,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,cAAc,gBAAA,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC;SACnE;;QAGD,IAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,UAAC,GAAW,EAAE,CAAsB;;YAElF,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,GAAG,CAAC,CAAC;;YAGxB,IAAA,iBAAM,EAAE,mBAAO,EAAE,eAAK,CAAO;;YAGrC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;;YAExE,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,GAAG,GAAG,MAAM,CAAC;YAC1C,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO,GAAG,CAAC;YACjC,IAAI,OAAO,IAAI,IAAI;gBAAE,OAAO,GAAG,CAAC;;YAEhC,IAAI,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,GAAG,GAAG,GAAG,CAAY,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAE9F,IAAI,KAAK,CAAC,GAAG;gBAAE,OAAO,GAAG,GAAG,OAAO,CAAC;;YAEpC,OAAO,GAAG,GAAG,kBAAkB,CAAU,OAAO,CAAC,CAAC;SACnD,EAAE,EAAE,CAAC,CAAC;;;QAIP,IAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,YAA0B;YACvD,IAAA,0BAAK,EAAE,4BAAM,EAAE,8BAAO,EAAE,4CAAc,CAAkB;YAC9D,IAAI,OAAO,IAAI,IAAI,KAAK,cAAc,IAAI,MAAM,KAAK,KAAK,CAAC;gBAAE,OAAO;YACpE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,GAAG,CAAU,OAAO,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG;gBAAE,OAAO,GAAG,GAAG,CAAY,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAEtE,OAAmB,OAAQ,CAAC,GAAG,CAAC,UAAAT,MAAG,IAAI,OAAG,KAAK,CAAC,EAAE,SAAIA,MAAK,GAAA,CAAC,CAAC;SAC9D,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;QAGlD,OAAO,UAAU,IAAI,WAAW,GAAG,MAAI,WAAa,GAAG,EAAE,CAAC,IAAIS,SAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAGA,SAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;KACrG;;IAhcM,wBAAa,GAAW,2BAA2B,CAAC;IAic7D,iBAAC;CAAA;;ACxiBD;;;;AAIA,AAUA;;;;;;AAMA;IAqBE;QAAA,iBAEC;uBAtBc,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;uBAC9B,uBAAkB,GAAG,KAAK,CAAC;uBAC3B,kBAAa,GAAG,IAAI,CAAC;uBACrB,yBAAoB,GAAqB,KAAK,CAAC;;QAG9D,iBAAY,GAAiB;;YAE3B,UAAU,EAAE,UAAC,EAAU,EAAE,IAAe,EAAE,MAAW;gBACnD,OAAA,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAEF,eAAO,CAAC,MAAM,EAAE,KAAI,CAAC;aAAA;;YAGnD,QAAQ,EAAE,UAAC,EAAU,EAAE,IAAe,EAAE,MAAW;gBACjD,OAAA,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAEA,eAAO,CAAC,IAAI,EAAE,KAAI,CAAC;aAAA;;YAGjD,UAAU,EAAE,UAAC,EAAU,EAAE,IAAe,EAAE,MAAW;gBACnD,OAAA,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAEA,eAAO,CAAC,MAAM,EAAE,KAAI,CAAC;aAAA;SACpD,CAAC;;QAwBM,eAAU,GAAG,UAAC,MAAM;YACxB,OAAA,MAAM,CAAC,EAAE,MAAM,EAAE,KAAI,CAAC,aAAa,EAAE,eAAe,EAAE,KAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC;SAAA,CAAC;QAtB3F,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,YAAA,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;KACrC;;IAGD,2CAAe,GAAf,UAAgB,KAAe;QAC7B,OAAO,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;KACrF;;IAGD,sCAAU,GAAV,UAAW,KAAe;QACxB,OAAO,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;KAC3E;;IAGD,+CAAmB,GAAnB,UAAoB,KAAwB;QAC1C,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,4BAA0B,KAAK,oDAAiD,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;KACzF;;;;;;;;IAaD,mCAAO,GAAP,UAAQ,OAAe,EAAE,MAA+B;QACtD,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7F;;;;;;;;IASD,qCAAS,GAAT,UAAU,MAAW;;QAEnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,UAAC,GAAG,EAAE,IAAI;YACtC,IAAI,UAAU,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/F,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;;;;;;;;;;;;;;;;;;;;IAqBD,gCAAI,GAAJ,UAAK,IAAY,EAAE,UAAgC,EAAE,YAAwC;QAC3F,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QAClE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;KAC7C;;IAGD,gCAAI,GAAJ;QACE,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;KACb;;IAGD,mCAAO,GAAP;QACE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;IACH,wBAAC;CAAA;;AClID;;;;AAIA,AAWA;;;;;;;;;;;AAWA;IAIE,wBAAmB,MAAgB;QAAhB,WAAM,GAAN,MAAM,CAAU;KAAK;IAExC,gCAAO,GAAP,UAAQ,GAAW;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACnD;IAED,+BAAM,GAAN,UAAO,IAAyD,EAAE,OAAiC;QAAnG,iBAYC;QAXC,IAAM,QAAQ,GAAG,OAAO,CAAC;YACvB,CAAC,QAAQ,EAAQ,UAAC,KAAa,IAAa,OAAA,QAAQ,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC;YAC1E,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,UAAC,KAAiB,IAAS,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAA,CAAC;YAChF,CAAC,OAAO,EAAS,UAAC,KAAkB,IAAQ,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,GAAA,CAAC;YAC/E,CAAC,EAAE,CAAC,MAAM,CAAC,EAAM,UAAC,KAAa,IAAa,OAAA,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,GAAA,CAAC;YAC5E,CAAC,UAAU,EAAM,UAAC,KAAqB,IAAK,OAAA,IAAI,WAAW,CAAC,KAAK,EAAE,OAA2B,CAAC,GAAA,CAAC;SACjG,CAAC,CAAC;QAEH,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCD,uCAAc,GAAd,UAAe,UAAsB,EAAE,OAA2C;QAChF,IAAI,QAAQ,GAAqB,OAAc,CAAC;QAChD,IAAI,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAAE,QAAQ,GAAG,UAAC,KAAgB,IAAK,OAAC,OAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC;QAEpG,2BAA2B,GAAa;YACtC,IAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;SAC/C;;;;;;QAOD,uBAAuB,MAAiB;YACtC,IAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,UAAU,GAAA,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC;YACtC,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;YAC3D,OAAO,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;SACzC;QAED,IAAM,OAAO,GAAG,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAmB,CAAC;KACxF;;;;;;;;;;;;IAcD,kCAAS,GAAT,UAAU,KAAkB,EAAE,MAAgB;;;;;;;;QAQ5C,IAAM,OAAO,GAAG,UAAC,KAAgB;YAC/B,IAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;YACnC,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC9E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;aACrE;SACF,CAAC;QAEF,IAAM,OAAO,GAAG,EAAE,KAAK,OAAA,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,OAAO,CAAc,CAAC;KAC9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCD,mCAAU,GAAV,UAAW,MAAc,EAAE,OAAgC;QACzD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;;;;;;QAOhG,IAAM,aAAa,GAAG,UAAC,KAAsB;;YAEzC,OAAC,OAAkB,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAC,CAAC,EAAE,IAAI;gBAClD,OAAA,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aAAA,CAAC;SAAA,CAAC;QAEhD,IAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,OAAO,CAAC;QAE7D,IAAM,qBAAqB,GAAG,UAAC,GAAa;YACxC,OAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;SAAA,CAAC;QAE1B,IAAM,OAAO,GAAG,EAAE,MAAM,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC,qBAAqB,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAe,CAAC;KACxF;IAzKM,wBAAS,GAAG,UAAA,GAAG;QACpB,OAAA,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC;KAAA,CAAC;IAyK1E,qBAAC;CAAA,IAAA;AAED;;;;;;AAMA;IAOE,qBAAmB,KAAqB,EAAE,OAA0B;QAApE,iBAEC;QAFkB,UAAK,GAAL,KAAK,CAAgB;QAJxC,SAAI,GAAgB,KAAK,CAAC;QAE1B,kBAAa,GAAG,UAAC,KAAK,IAAK,OAAA,CAAC,GAAG,KAAI,CAAC,GAAG,GAAA,CAAC;QAGtC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,QAAQ,CAAC;KACpC;IACH,kBAAC;CAAA;;ACvND;;;;;AAKA,AAaA;AACA,wBAAwB,GAAW,EAAE,OAAgB,EAAE,QAAiB,EAAE,QAAgB;IACxF,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IACjC,IAAI,OAAO;QAAE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IACzD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7C,OAAO,GAAG,CAAC;CACZ;;AAGD,IAAM,YAAY,GAAG,UAAC,CAAU,EAAE,CAAU;IAC1C,OAAA,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;CAAA,CAAC;;AAGxC,IAAM,QAAQ,GAAG,UAAC,CAAU,EAAE,CAAU;IACtC,IAAM,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CACxD,CAAC;;AAGF,IAAM,cAAc,GAAG,UAAC,CAAiB,EAAE,CAAiB;IAC1D,OAAA,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC;CAAA,CAAC;;AAGtF,IAAM,MAAM,GAAG,UAAC,CAAU,EAAE,CAAU;;IAEpC,IAAM,gBAAgB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAChD,CAAC;;;;;;;;;;;;;;;AAgBF,IAAI,iBAAqD,CAAC;AAC1D,iBAAiB,GAAG,UAAC,CAAC,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE1B,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE1B,GAAG,GAAG,cAAc,CAAC,CAAmB,EAAE,CAAmB,CAAC,CAAC;IAC/D,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE1B,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACrB,CAAC;;;;;;;;;;;;AAaF;;IAeE,mBAAY,MAAgB;uBATL,YAAO,GAAG,iBAAiB,CAAC;uBAEpC,WAAM,GAAc,EAAE,CAAC;uBAEvB,sBAAiB,GAAG,KAAK,CAAC;uBAClB,QAAG,GAAG,CAAC,CAAC;uBACR,YAAO,GAAG,KAAK,CAAC;QAIrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KACjE;;IAGD,2BAAO,GAAP;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;;IAGD,wBAAI,GAAJ,UAAK,SAA8C;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;IAEO,gCAAY,GAApB;QACE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;KAC7B;IAEO,8BAAU,GAAlB,UAAmB,GAAG,EAAE,SAAS;QAC/B,IAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,GAAG,IAAK,QAAC,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,IAAC,CAAC,CAAC;QAE7D,YAAY,CAAC,IAAI,CAAC,UAAC,QAAQ,EAAE,QAAQ;YACnC,IAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,OAAO,KAAK,CAAC;kBAChB,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;kBAC3B,OAAO,CAAC;SACb,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,IAAI,GAAA,CAAC,CAAC;KAClD;;;;;;IAOD,yBAAK,GAAL,UAAM,GAAa;QAAnB,iBA6BC;QA5BC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACtD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;QAIrD,IAAM,SAAS,GAAG,UAAC,IAAa;YAC9B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,KAAK,IAAI,EAAE,KAAK,OAAA,EAAE,IAAI,MAAA,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;SACpE,CAAC;;;;;QAMF,IAAI,IAAiB,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;YAErC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM;YAE3D,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;YAEpC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;SAC5E;QAED,OAAO,IAAI,CAAC;KACb;;IAGD,wBAAI,GAAJ,UAAK,GAAI;QACP,IAAI,GAAG,IAAI,GAAG,CAAC,gBAAgB;YAAE,OAAO;QAExC,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EACvB,IAAI,GAAG,MAAM,CAAC,UAAU,EACxB,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAEjC,IAAM,GAAG,GAAa;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SAC5D,CAAC;QAEF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAM,WAAW,GAAG,OAAO,CAAC;YAC1B,CAAC,QAAQ,EAAE,UAAC,MAAc,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAA,CAAC;YACtD,CAAC,WAAW,CAAC,KAAK,EAAE,UAAC,GAAmB,IAAK,OAAA,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,GAAA,CAAC;YAC3F,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,UAAC,MAAmB,IAAK,OAAA,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,GAAA,CAAC;SACzG,CAAC,CAAC;QAEH,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;KACjE;;IAGD,0BAAM,GAAN,UAAO,OAAiB;QAAxB,iBAOC;QANC,IAAI,OAAO,KAAK,KAAK,EAAE;YACrB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;aAAM;YACL,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;SAC/F;KACF;;;;;IAMD,0BAAM,GAAN,UAAO,IAAc;QACnB,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAC1C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO;SACR;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/B;;;;;;;;;;;IAYD,wBAAI,GAAJ,UAAK,UAAsB,EAAE,MAAkB,EAAE,OAAwC;QACvF,IAAM,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KACvE;;;;;;;;;;;;;;;;;;;;IAqBD,wBAAI,GAAJ,UAAK,UAAsB,EAAE,MAAY,EAAE,OAA+B;QACxE,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAE7B,OAAO,GAAG,OAAO,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAEzC,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAC3C,IAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE;YAC5B,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC;SACpC;QACD,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;YAC7B,OAAO,GAAG,CAAC;SACZ;QAED,IAAM,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAM,IAAI,IAAU,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;QAE5E,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvE;;;;;;;;;;;;;IAeD,wBAAI,GAAJ,UAAK,IAAa;QAAlB,iBASC;QARC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,OAAO,cAAM,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAA,CAAC;KACpC;;IAGD,8BAAU,GAAV,UAAW,IAAI;QACb,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC/B;;IAGD,yBAAK,GAAL;QACE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KAC5B;;IAGD,6BAAS,GAAT,UAAU,OAA2D;QACnE,IAAM,SAAS,GAAqB,YAAY,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;;IAGD,2BAAO,GAAP,UAAQ,OAAiE;QACvE,IAAM,SAAS,GAAqB,YAAY,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAM,OAAO,GAAmB,UAAC,QAAQ,EAAE,MAAM;YAC7C,OAAA,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SAAA,CAAC;QAEnF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;KAC3D;;IAGD,wBAAI,GAAJ,UAAK,OAAmC,EAAE,OAAgC,EAAE,OAA8B;QACxG,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC7E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;KACb;;IAGD,kCAAc,GAAd,UAAe,KAAe;QAC5B,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;IACH,gBAAC;CAAA,IAAA;AAED,sBAAsB,OAA2D;IAC/E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAC1G,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;KAC7G;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,OAA2B,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;CACzE;;ACjWD;;;;AAIA,AA4BA;;;;;;;;;;;;;;;;AAgBA;IA+IE;QAAA,iBAAiB;QA9IT,aAAQ,GAAmB,EAAE,CAAC;QAC9B,iBAAY,GAAiB,EAAE,CAAC;QAEhC,yBAAoB,GAAyC,EAAE,CAAC;QAChE,eAAU,GAAuB,EAAE,CAAC;QAErC,eAAU,GAAyB;YACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,kBAAkB,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,GAAA;YACvC,kBAAkB,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,GAAA;YAC3C,OAAO,EAAE,UAAC,QAA0B;gBAClC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,OAAO,cAAM,OAAA,UAAU,CAAC,KAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAA,CAAC;aACpD;SACF,CAAC;KA+He;;;;;;;;;;;;IAnCV,iCAAqB,GAA5B,UAA6B,OAAoB,EAAE,WAAgB;QAAhB,4BAAA,EAAA,gBAAgB;;;;QAIjE,IAAM,aAAa,GAAa,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;QAChD,IAAI,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;;;QAI9E,IAAM,qBAAqB,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,qBAAqB,EAAE;;YAEzB,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;SACvC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAChC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClC,mBAAmB,GAAG,EAAE,CAAC;SAC1B;;QAGD,IAAM,aAAa,GAAG,iBAAiB,CAAC;QACxC,IAAI,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;YAC3C,IAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC/C,MAAM,EAAE,UAAC,MAAM,EAAE,CAAC,IAAK,OAAA,MAAM,CAAC,MAAM,GAAA,GAAG,OAAO,CAAC,CAAC;YACnD,mBAAmB,GAAG,WAAW,CAAC,IAAI,CAAC;SACxC;aAAM,IAAI,mBAAmB,KAAK,GAAG,EAAE;YACtC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;SACpC;QAED,OAAO,EAAE,UAAU,YAAA,EAAE,mBAAmB,qBAAA,EAAE,CAAC;KAC5C;IAIO,sCAAgB,GAAxB,UAAyB,OAAqB;QAC5C,OAAO,IAAI,CAAC,YAAY,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC;KACzD;IAEO,wCAAkB,GAA1B,UAA2B,QAAgB,EAAE,OAA0B;QACrE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;KAC/C;IAED,sCAAgB,GAAhB,UAAiB,IAAgB,EAAE,IAAsB;QACvD,IAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1G,IAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC;;;;;;;;;IAUD,0CAAoB,GAApB,UAAqB,UAAsB;QACzC,KAAK,CAAC,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;KAC3C;IAED,wCAAkB,GAAlB,UAAmB,UAAsB;QACvC,KAAK,CAAC,qBAAqB,CAAC,gBAAgB,EAAQ,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACpC;IAGD,0BAAI,GAAJ;QAAA,iBAqDC;QApDC,IAAM,YAAY,GACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,UAAU,EAAQ,EAAE,CAAC,CAAC;;;;QAK1E,qBAAqB,MAAoB;YACvC,IAAM,UAAU,GAAG,UAAC,OAAoB;gBACpC,OAAA,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;aAAA,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;SACpF;;QAGD,yBAAyB,MAAkB;YACzC,IAAI,OAAO,GAAgB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC;YAC/D,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3D,OAAO,KAAK,CAAC;SACd;;QAGD,IAAM,YAAY,GAAG,KAAK,CAAC,UAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAK,OAAA,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;QAExG,IAAM,kBAAkB,GAAG,UAAC,MAAoB;YAC9C,IAAM,eAAe,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5F,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;;;;gBAI9B,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;YACD,OAAO,EAAE,MAAM,QAAA,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;QAEF,IAAM,eAAe,GAAG,UAAC,KAAgB;;;YAGvC,IAAI,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAChD,CAAC;;QAGF,IAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC9F,IAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,UAAU,GAAA,CAAC,CAAC;QACvE,IAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY;aAC5C,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAA,CAAC;aACtD,GAAG,CAAC,UAAA,UAAU,IAAI,QAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,YAAA,EAAE,IAAC,CAAC,CAAC;QAE1D,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEtC,IAAM,SAAS,GAAgB,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;QAC7C,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAChC;;;;;;;;;;;;;;;;IAiBD,oCAAc,GAAd,UAAe,MAAoB;QACjC,KAAK,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAM,iBAAiB,GAAG,UAAC,GAAiB,IAAK,OAAA,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,GAAA,CAAC;QACtG,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM;YAC1C,KAAK,CAAC,2BAA2B,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAE5E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,OAAO;YACL,IAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACd,KAAK,CAAC,2BAA2B,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;gBAClF,OAAO;aACR;YACD,KAAK,CAAC,2BAA2B,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAC9D,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7B,CAAC;KACH;;;;;;IAOD,+BAAS,GAAT;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACvC;;;;;;IAOD,4BAAM,GAAN;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAnNM,mBAAO,GAAG,UAAC,YAAoC,EAAE,MAAoB,IAAK,OAAA,UAAC,UAAsB;;QAEtG,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;;QAG7D,IAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,IAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;QAI1C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;;;QAIf,IAAM,SAAS,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC;QACvD,IAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAM,aAAa,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC;QACtE,OAAO,EAAE,CAAC,oBAAoB,MAAM,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1E,GAAA,CAAA;IAiMH,kBAAC;CAAA;;AChVD;;;;AAIA,AAOA;;;;;;AAMA;IAAA;;;;;;QAME,WAAM,GAAgB,IAAI,WAAW,EAAE,CAAC;;QAwBxC,4BAAuB,GAAG,CAAC,CAAC,CAAC;;QAG7B,sBAAiB,GAAG,IAAI,KAAK,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC;;QAGjD,0BAAqB,GAAG,IAAI,KAAK,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC;KAOtD;IALC,iCAAO,GAAP;QACE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IACH,sBAAC;CAAA;;AC5DD;;;;AAMA,AAIA;AACA,IAAM,QAAQ,GAAG,UAAC,IAAc;IAC5B,OAAA,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,QAAC,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,IAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;CAAA,CAAC;;eAGzE,IAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;eAC1E,IAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;eAC9F,IAAM,MAAM,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;eAChF,IAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;eACzF,IAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;;;;;AAM7E;;IAwBE,oBAAY,MAAgB,EAAE,QAAe;QAAf,yBAAA,EAAA,eAAe;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAS,CAAC;;QAGxB,IAAM,gBAAgB,GAAG,cAAM,OAAA,MAAM,CAAC,eAAe,GAAA,CAAC;QACtD,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAE9F,IAAM,cAAc,GAAG,cAAM,OAAA,MAAM,CAAC,cAAc,GAAA,CAAC;QACnD,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAE/F,IAAM,GAAG,GAAG,cAAM,OAAA,MAAM,CAAC,iBAAiB,GAAA,CAAC;QAC3C,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAEpD,IAAM,SAAS,GAAG,cAAM,OAAA,MAAM,CAAC,SAAS,GAAA,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjE,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAC3D;IAMD,wBAAG,GAAH,UAAI,MAAO,EAAE,OAAQ,EAAE,KAAM,IAAS,OAAO,EAAE;;IAE/C,yBAAI,GAAJ,cAAiB,OAAO,EAAE;;IAE1B,2BAAM,GAAN,cAAmC,OAAO,EAAE;;IAE5C,yBAAI,GAAJ,cAAiB,OAAO,EAAE;;IAE1B,6BAAQ,GAAR,UAAS,QAAkB,IAAc,OAAO,EAAE;;;;;;;;IAUlD,0BAAK,GAAL;QACE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;KACxE;IAED,4BAAO,GAAP,eAAa;;IAGb,yBAAI,GAAJ,UAAK,GAAI,IAAI,OAAO,EAAE;;IAEtB,2BAAM,GAAN,UAAO,OAAiB,IAAc,OAAO,EAAE;;IAE/C,mCAAc,GAAd,UAAe,KAAe,IAAI,OAAO,EAAE;;IAE3C,0BAAK,GAAL,UAAM,QAAkB,IAAiB,OAAO,EAAE;;IA7E3C,8BAAmB,GAAqB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;;IAEtE,6BAAkB,GAAmB,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IA6E1E,iBAAC;CAAA;;AC1GD;;;;AAIA,AAcA;AACA,IAAI,eAAe,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;AAiBxB;;;;;;;;IA+EE,kBACW,eAAkE,EAClE,cAA8D;QAD9D,gCAAA,EAAA,kBAAoC,UAAU,CAAC,mBAAmB;QAClE,+BAAA,EAAA,iBAAiC,UAAU,CAAC,kBAAkB;QAD9D,oBAAe,GAAf,eAAe,CAAmD;QAClE,mBAAc,GAAd,cAAc,CAAgD;uBAhF1D,QAAG,GAAG,eAAe,EAAE,CAAC;uBACxB,cAAS,GAAG,KAAK,CAAC;uBACV,iBAAY,GAAiB,EAAE,CAAC;;QAGvD,UAAK,GAAU,KAAK,CAAC;;QAGrB,gBAAW,GAAG,IAAI,WAAW,EAAE,CAAC;;QAGhC,YAAO,GAAoB,IAAI,eAAe,EAAE,CAAC;;QAGjD,sBAAiB,GAAsB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;;;;;QAMnE,sBAAiB,GAAsB,IAAI,iBAAiB,EAAE,CAAC;;;;;QAM/D,cAAS,GAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;;QAG3C,kBAAa,GAAkB,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;;QAGvD,iBAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;;QAGtC,eAAU,GAAe,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;;QAGtC,aAAQ,GAAsC,EAAE,CAAC;QA6CvD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KACjC;;IApDD,6BAAU,GAAV,UAAW,UAAsB;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACpC;;;;;;;;;;;IAYD,0BAAO,GAAP,UAAQ,UAAgB;QAAxB,iBAaC;QAZC,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAChD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,UAAA,CAAC;YACjC,IAAI;gBACF,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,KAAI,CAAC,CAAC;gBACnD,UAAU,CAAC,KAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;aAClC;YAAC,OAAO,OAAO,EAAE,GAAE;SACrB,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsFD,yBAAM,GAAN,UAAiC,MAAW,EAAE,OAAiB;QAAjB,wBAAA,EAAA,YAAiB;QAC7D,IAAM,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,cAAc,CAAC,CAAC;QAC3G,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;KAC5D;IAaD,4BAAS,GAAT,UAAU,UAAmB;QAC3B,OAAO,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvE;IACH,eAAC;CAAA;;ACrND;AACA,AAQA,4BAA4B,KAAiB;IAC3C,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7E,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAA,KAAK;QAC5B,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KACnE,CAAC,CAAC;CACJ;AAED,AAAO,IAAM,0BAA0B,GAAG,UAAC,iBAAoC;IAC3E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,kBAAkB,CAAC;CAAA,CAAC;AAEvD,IAAM,iBAAiB,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AACvD,IAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;;;;;AAMhD,AAAO,IAAM,kBAAkB,GAAG,UAAC,KAAiB;;IAElD,IAAM,yBAAyB,GAAG,UAAC,CAAa;QAC9C,OAAA,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;KAAA,CAAC;IAEjE,IAAM,SAAS,GAAG,UAAC,IAAgB,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,UAAC,IAAc;QAC9D,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;KAC9C,CAAC,GAAA,CAAC;IAEH,IAAM,WAAW,GAAgB,KAAK,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;CAC7C;;AC1CD;AACA,AAOA;;;;;;;AAOA,IAAM,cAAc,GAAqB,UAAC,KAAiB;IACzD,IAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;IAEzC,sBAAsB,MAAW;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,MAAM,YAAY,WAAW;YAAE,OAAO,MAAM,CAAC;QACjD,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,MAAM,CAAO,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;YACrC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5G;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC7D;IACD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;CAC/B,CAAC;AAEF,AAAO,IAAM,sBAAsB,GAAG,UAAC,iBAAoC;IACvE,OAAA,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAC,KAAK,IAAK,OAAA,CAAC,CAAC,KAAK,CAAC,UAAU,GAAA,EAAE,EAAE,cAAc,CAAC;CAAA;;AC5BpF;;;;;;;;AAQA,iCAAiC,QAAgB;IAC/C,OAAO,UAAC,UAAsB,EAAE,KAAuB;QACrD,IAAM,MAAM,GAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAM,MAAM,GAA0B,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KAClC,CAAC;CACH;;;;;;;;;;AAWD,IAAM,UAAU,GAA0B,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAC5E,AAAO,IAAM,kBAAkB,GAAG,UAAC,iBAAoC;IACnE,OAAA,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAA,EAAE,EAAE,UAAU,CAAC;CAAA,CAAC;;;;;;;;;;AAW/E,IAAM,YAAY,GAA0B,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAChF,AAAO,IAAM,oBAAoB,GAAG,UAAC,iBAAoC;IACrE,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAA,EAAE,EAAE,YAAY,CAAC;CAAA,CAAC;;;;;;;;;;AAWtF,IAAM,WAAW,GAA0B,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC9E,AAAO,IAAM,mBAAmB,GAAG,UAAC,iBAAoC;IACpE,OAAA,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,OAAO,GAAA,EAAE,EAAE,WAAW,CAAC;CAAA;;AC7DlF;;AAEA,AAQO,IAAM,qBAAqB,GAAG,IAAI,CAAC;;;;;;;;;;AAW1C,IAAM,gBAAgB,GAAqB,UAAC,KAAiB;IACzD,OAAA,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;SACrC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;SAC3B,IAAI,CAAC,IAAI,CAAC;CAAA,CAAC;AAEpB,AAAO,IAAM,wBAAwB,GAAG,UAAC,iBAAoC;IACzE,OAAA,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CAAA,CAAC;;;;;;;;;;AAWzF,IAAM,gBAAgB,GAA0B,UAAC,KAAiB,EAAE,KAAuB;IACvF,OAAA,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;SACrC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SAC3B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC;CAAA,CAAC;AAEpB,AAAO,IAAM,wBAAwB,GAAG,UAAC,iBAAoC;IACzE,OAAA,iBAAiB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CAAA,CAAC;;;;;;;;;;;AAa9G,IAAM,gBAAgB,GAAqB,UAAC,KAAiB;IAC3D,OAAA,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;SACvC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC;CAAA,CAAC;AAEhB,AAAO,IAAM,wBAAwB,GAAG,UAAC,iBAAoC;IAC3E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CAAA;;AChEvF;AACA,AASA;;;;;;;;AAQA,IAAM,iBAAiB,GAAqB,UAAC,UAAsB;IACjE,IAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACvB,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa,CAAC,MAAM;QAAE,OAAO;IAClC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC3E,CAAC;AAEF,AAAO,IAAM,yBAAyB,GAAG,UAAC,iBAAoC;IAC1E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;CAAA,CAAC;;;;;;;;;;;AAYtD,IAAM,aAAa,GAAqB,UAAC,UAAsB;IAC7D,IAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,IAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO;IAE1D,IAAM,KAAK,GAAgB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;IAEzD,YAAY,CAAC,OAAO,CAAC,UAAC,EAAc,IAAK,OAAA,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;IACzE,aAAa,CAAC,OAAO,CAAC,UAAC,EAAc,IAAK,OAAA,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;IAExE,KAAK,CAAC,IAAI,EAAE,CAAC;CACd,CAAC;AAEF,AAAO,IAAM,qBAAqB,GAAG,UAAC,iBAAoC;IACtE,OAAA,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;CAAA;;AC9ClD;;;;;;;;;;;;AAYA,IAAM,iBAAiB,GAAG,UAAC,KAAiB;IAC1C,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAErC,IAAM,oBAAoB,GAAG;QAC3B,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAExC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;KACtC,CAAC;IAEF,IAAM,sBAAsB,GAAG;;QAE7B,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK;YAAE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;CACpE,CAAC;AAEF,AAAO,IAAM,yBAAyB,GAAG,UAAC,iBAAoC;IAC1E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;CAAA;;AChCrD;;;;;AAKA,IAAM,SAAS,GAAqB,UAAC,UAAsB;IACzD,IAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,IAAM,MAAM,GAAiB,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;IAC5D,IAAM,UAAU,GAAc,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;;;;;IAM1D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;QAC7E,IAAM,UAAU,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC3E;IAED,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAEF,AAAO,IAAM,iBAAiB,GAAG,UAAC,iBAAoC;IAClE,OAAA,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAAA;;ACtBlE;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAM,YAAY,GAAqB,UAAC,UAAsB;IAC5D,IAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAEjC;QACE,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,KAAK,EAAE;;;YAG9D,IAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACrF;;;QAID,IAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,IAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;;;QAInC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACjC,IAAM,KAAK,GAAI,IAAkB,CAAC,KAAK,CAAC;YACxC,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;YAC5B,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;SACxE;;QAGD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,IAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE;SACjC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,GAAA,CAAC;SAC3C,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;IAEpD,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;CACxD,CAAC;AAEF,AAAO,IAAM,oBAAoB,GAAG,UAAC,iBAAoC;IACrE,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAA,EAAE,EAAE,YAAY,CAAC;CAAA,CAAC;;;;;;;;AAUxF,uBAA8B,UAAsB,EAAE,KAAuB;IAC3E,IAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;IAG5C,IAAI,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE;QACZ,IAAM,OAAO,GAAG,UAAC,MAAM;YACrB,OAAO,KAAK,CAAC,QAAQ,CAAC;YACtB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;YAChC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;SACf,CAAC;QAEF,IAAM,KAAK,GAAG,UAAC,GAAG;YAChB,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9B,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAChC,CAAC;QAEF,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC;YAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;iBAC1C,IAAI,CAAC,mBAAmB,CAAC;iBACzB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAC/B;;IAGD,6BAA6B,MAAsB;QACjD,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;SACnF;QACD,OAAO,MAAM,CAAC;KACf;IAED,OAAO,OAAO,CAAC;CAChB;;AC7GD;;;;;;AAMA;;IAEE,6BAAmB,IAA0B,EAC1B,SAAuC,EACvC,SAA0B,EAC1B,iBAA4B,EAC5B,WAAmC,EACnC,gBAAmE,EACnE,eAAiE,EACjE,WAAmC;QAHnC,4BAAA,EAAA,mBAAmC;QACnC,iCAAA,EAAA,mBAAuC,cAAc,CAAC,aAAa;QACnE,gCAAA,EAAA,kBAAsC,cAAc,CAAC,YAAY;QACjE,4BAAA,EAAA,mBAAmC;QAPnC,SAAI,GAAJ,IAAI,CAAsB;QAC1B,cAAS,GAAT,SAAS,CAA8B;QACvC,cAAS,GAAT,SAAS,CAAiB;QAC1B,sBAAiB,GAAjB,iBAAiB,CAAW;QAC5B,gBAAW,GAAX,WAAW,CAAwB;QACnC,qBAAgB,GAAhB,gBAAgB,CAAmD;QACnE,oBAAe,GAAf,eAAe,CAAkD;QACjE,gBAAW,GAAX,WAAW,CAAwB;KACjD;IACP,0BAAC;CAAA;;ACpBD;AAEA,AAKA;;;;;;;;AAQA,qBAAqB,KAAiB;IACpC,IAAM,aAAa,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7C,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;;;IAKhD,IAAI,aAAa,KAAK,eAAe,IAAI,OAAO,EAAE;QAChD,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;IAED,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;CACxC;AAED,AAAO,IAAM,6BAA6B,GAAG,UAAC,iBAAoC;IAC9E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;CAAA;;AClCpE;;;;;;;;AAYA,+BAA+B,KAAiB;IAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;CACF;AAED,AAAO,IAAM,6BAA6B,GAAG,UAAC,iBAAoC;IAC9E,OAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;CAAA;;ACnB/E;;;;;AAKA,AA2BA;;;;;;;AAOA,AAAO,IAAI,gBAAgB,GAAsB;IAC/C,QAAQ,EAAM,IAAI;IAClB,QAAQ,EAAM,IAAI;IAClB,OAAO,EAAO,KAAK;IACnB,MAAM,EAAQ,IAAI;IAClB,MAAM,EAAQ,KAAK;IACnB,MAAM,EAAQ,EAAE;IAChB,OAAO,EAAO,cAAM,OAAA,IAAI,GAAA;IACxB,MAAM,EAAQ,SAAS;CACxB,CAAC;;;;;;;;;;AA0DF;;IA4CE,2BAAY,OAAiB;;QA1C7B,qBAAgB,GAAG,CAAC,CAAC;;QAMb,gBAAW,GAA0B,EAAE,CAAC;;QAEhD,qBAAgB,GAAG,EAAsB,CAAC;;QAElC,mBAAc,GAAG,EAAgB,CAAC;QAiCxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAS,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAgC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5F,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,YAAY;YACZ,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACnE;;;;;;;;;;;;;;;;;;;;;;;;IAyBD,oCAAQ,GAAR,UAAS,QAA2B,EAAE,QAAgC,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEvH,oCAAQ,GAAR,UAAS,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEjH,mCAAO,GAAP,UAAQ,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEhH,kCAAM,GAAN,UAAO,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEpH,oCAAQ,GAAR,UAAS,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEtH,mCAAO,GAAP,UAAQ,QAA2B,EAAE,QAA+B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAErH,oCAAQ,GAAR,UAAS,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAEjH,qCAAS,GAAT,UAAU,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;IAElH,mCAAO,GAAP,UAAQ,QAA2B,EAAE,QAA0B,EAAE,OAAwB,IAAc,OAAO,EAAE;;;;;IAMhH,mCAAO,GAAP,UAAQ,MAAgB;QACtB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,UAAC,UAA4B,IAAK,OAAA,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI;YAC7F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;SAC9B,CAAC,GAAA,CAAC,CAAC;KACL;;;;;;;;;;;IAYD,kCAAM,GAAN,UAAO,QAAoB,EAAE,WAAwB;QACnD,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5D;;IAGO,6CAAiB,GAAzB;QACE,IAAM,KAAK,GAAGF,2BAAmB,CAAC;QAClC,IAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAM,WAAW,GAAG,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAC/C,IAAM,WAAW,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAI,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE/H,IAAI,CAAC,YAAY,CAAC,UAAU,EAAG,KAAK,CAAC,MAAM,EAAG,CAAC,EAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,CAAC,SAAS,EAAI,KAAK,CAAC,GAAG,EAAM,CAAC,EAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAK,KAAK,CAAC,GAAG,EAAM,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,UAAU,EAAG,KAAK,CAAC,GAAG,EAAM,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAI,KAAK,CAAC,GAAG,EAAM,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAG,KAAK,CAAC,GAAG,EAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAI,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7H,IAAI,CAAC,YAAY,CAAC,SAAS,EAAI,KAAK,CAAC,KAAK,EAAI,CAAC,EAAI,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KAC9H;;IAGO,4CAAgB,GAAxB;QACU,IAAA,yCAAK,EAAE,mDAAU,CAAyB;QAElD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KACzC;;IAGD,wCAAY,GAAZ,UAAa,IAAY,EACZ,SAA8B,EAC9B,SAAiB,EACjB,iBAA2B,EAC3B,WAAmB,EACnB,gBAAiE,EACjE,eAA8D,EAC9D,WAAmB;QAHnB,4BAAA,EAAA,mBAAmB;QACnB,iCAAA,EAAA,mBAAqC,cAAc,CAAC,aAAa;QACjE,gCAAA,EAAA,kBAAmC,cAAc,CAAC,YAAY;QAC9D,4BAAA,EAAA,mBAAmB;QAC9B,IAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAEtJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;KAClC;;IAGO,sCAAU,GAAlB,UAAmB,KAA2B;QAC5C,IAAM,mBAAmB,GAAG,SAAS,CAAC,KAAK,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,KAAK,KAAK,GAAA,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAE7B,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;YACnC,IAAM,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAC7C,OAAO,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC;SAClE,CAAC,CAAC;KACJ;;;;;;;;;;;;;;IAeO,2CAAe,GAAvB,UAAwB,IAAY,EAAE,SAA8B;QAClE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,MAAA,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KACxD;;IAGO,yCAAa,GAArB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;IAGM,oCAAQ,GAAf,UAAgB,QAAgB;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACxC;;IAGO,wDAA4B,GAApC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEpC,GAAG,CAAC,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvD,GAAG,CAAC,OAAO,GAAW,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAC1D,GAAG,CAAC,OAAO,GAAW,6BAA6B,CAAC,IAAI,CAAC,CAAC;;QAG1D,GAAG,CAAC,UAAU,GAAQ,sBAAsB,CAAC,IAAI,CAAC,CAAC;;QAGnD,GAAG,CAAC,MAAM,GAAY,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC/C,GAAG,CAAC,QAAQ,GAAU,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,GAAG,CAAC,OAAO,GAAW,mBAAmB,CAAC,IAAI,CAAC,CAAC;;QAGhD,GAAG,CAAC,YAAY,GAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACrD,GAAG,CAAC,WAAW,GAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACrD,GAAG,CAAC,UAAU,GAAQ,wBAAwB,CAAC,IAAI,CAAC,CAAC;;QAGrD,GAAG,CAAC,SAAS,GAAS,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACtD,GAAG,CAAC,aAAa,GAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC;;QAGlD,GAAG,CAAC,aAAa,GAAK,yBAAyB,CAAC,IAAI,CAAC,CAAC;;QAGtD,GAAG,CAAC,SAAS,GAAS,iBAAiB,CAAC,IAAI,CAAC,CAAC;;QAG9C,GAAG,CAAC,QAAQ,GAAU,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAClD;IACH,wBAAC;CAAA;;ACnWD;;;;;AAKA,AA8BA;;;;;;AAMA;;IA8BE,sBAAoB,MAAgB;QAAhB,WAAM,GAAN,MAAM,CAAU;;QA5BpC,qBAAgB,GAAwB,EAAE,CAAC;;QA2dnC,yBAAoB,GAA4B,8BAA8B,OAAO;YAC3F,IAAI,OAAO,YAAY,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;gBAC7C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC9B;iBAAM,IAAI,OAAO,YAAY,SAAS,EAAE;gBACvC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;oBACxC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACxB;SACF,CAAC;QAzcA,IAAM,OAAO,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChE,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;KAC9E;IAzBD,sBAAI,oCAAU;;;;;;aAAd,cAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;;OAAA;IAM3D,sBAAI,gCAAM;;;;;;aAAV,cAA4B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;;OAAA;IAMhE,sBAAI,iCAAO;;;;;;aAAX,cAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;;OAAA;IAMrD,sBAAI,kCAAQ;;;;;;aAAZ,cAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;;;OAAA;;IAUvD,8BAAO,GAAP;QACE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;;;;;;;;;;;;IAaO,gDAAyB,GAAjC,UAAkC,QAAoB,EAAE,OAAoB;QAA5E,iBAqCC;QApCC,IAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjF,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,IAAM,WAAW,GAAG,cAAM,OAAA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAA,CAAC;QAC/D,IAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAC7B,IAAM,aAAa,GAAG,IAAI,KAAK,CAAoB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,IAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEzD,IAAM,gBAAgB,GAAG,UAAC,MAAkB;YAC1C,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,EAAE;gBACpC,OAAO;aACR;YAED,IAAI,MAAM,GAAiB,MAAM,CAAC;;YAElC,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAE7E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;gBACnB,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;aACtD;YAED,IAAI,WAAW,EAAE,KAAK,MAAM,EAAE;gBAC5B,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC;aAC3C;YAED,OAAO,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;SAClF,CAAC;QAEF;YACE,IAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,YAAY,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YAEtF,IAAM,cAAc,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpF,OAAO,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,IAAI,kBAAkB,EAAE,GAAA,CAAC,CAAC;SAC7F;QAED,OAAO,kBAAkB,EAAE,CAAC;KAC7B;;;;;;;;;;;;;;;;;;;;;;;;;IA0BD,gCAAS,GAAT,UAAU,QAA2B;QACnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO;YACL,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+CD,6BAAM,GAAN,UAAO,WAAyB;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;YAClD,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI;YACnD,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0CD,yBAAE,GAAF,UAAG,EAAe,EAAE,MAAkB,EAAE,OAA2B;QACjE,IAAM,YAAY,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,IAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;KACjD;;;;;;;;IASD,6BAAM,GAAN,UAAO,UAAuB,EAAE,MAAkB,EAAE,OAA+B;QAA/B,wBAAA,EAAA,YAA+B;;QAEjF,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAO,OAAO,CAAC,MAAO,CAAC,IAAI;YACzD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACtC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtH,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW;YACxC,MAAM,IAAI,KAAK,CAAC,4BAA0B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAS,OAAO,CAAC,MAAO,CAAC,IAAI,CAAC,MAAG,CAAC,CAAC;QAExH,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChF;IAEO,qCAAc,GAAtB;QAAA,iBAKC;QAJC,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,IAAM,aAAa,GAAe,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QAC3E,IAAM,QAAQ,GAAG,cAAM,OAAA,CAAE,IAAI,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAE,GAAA,CAAC;QAC1E,OAAO,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;KACpE;;;;;;;;;;;;;;;;;;;;;;;;IAyBD,mCAAY,GAAZ,UAAa,EAAe,EAAE,QAAwB,EAAE,OAA+B;QAAvF,iBA8DC;QA9D6B,yBAAA,EAAA,aAAwB;QAAE,wBAAA,EAAA,YAA+B;QACrF,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC9C,IAAM,UAAU,GAAG;YACf,OAAA,OAAO,CAAC,UAAU;SAAA,CAAC;QACvB,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAEnD,IAAM,GAAG,GAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAE1D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YACd,OAA2B,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;;;;;;QAW1D,IAAM,yBAAyB,GAAG,UAAC,KAAiB,IAAK,OAAA,UAAC,KAAU;YAClE,IAAI,KAAK,YAAY,SAAS,EAAE;gBAC9B,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,KAAK,KAAK,CAAC,GAAG,CAAC;gBAEtE,IAAI,KAAK,CAAC,IAAI,KAAKF,kBAAU,CAAC,OAAO,EAAE;oBACrC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;;oBAEtC,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC1C;gBAED,IAAM,MAAM,GAAQ,KAAK,CAAC,MAAM,CAAC;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAKA,kBAAU,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,MAAM,YAAY,WAAW,EAAE;;;oBAG7F,IAAM,QAAQ,GAAe,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACpD,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAClE;gBAED,IAAI,KAAK,CAAC,IAAI,KAAKA,kBAAU,CAAC,OAAO,EAAE;oBACrC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACtC,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAClC;aACF;YAED,IAAM,YAAY,GAAG,KAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,OAAO,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC,GAAA,CAAC;QAEF,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC1E,IAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1F,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;;QAG9C,OAAO,MAAM,CAAC,mBAAmB,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;KACpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCD,yBAAE,GAAF,UAAG,WAAwB,EAAE,MAAkB,EAAE,OAAoC;QACnF,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAM,MAAM,GAAY,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCD,+BAAQ,GAAR,UAAS,WAAwB,EAAE,MAAkB,EAAE,OAA2B;QAChF,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAU,WAAW,CAAC,CAAC;QAE5E,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACpD,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SAClC;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAEtH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAM,MAAM,GAAY,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACxE;;;;;;;;;;;;;;;;;IAmBD,2BAAI,GAAJ,UAAK,WAAwB,EAAE,MAAiB,EAAE,OAAqB;QACrE,IAAM,eAAe,GAAG;YACtB,KAAK,EAAK,IAAI;YACd,OAAO,EAAG,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QACF,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC7C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,GAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvF,IAAM,GAAG,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAE/D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;YACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;IAwCD,0CAAmB,GAAnB,UAAoB,OAA8B;QAChD,OAAO,IAAI,CAAC,oBAAoB,GAAG,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC;KACzE;IAgBD,0BAAG,GAAH,UAAI,WAAyB,EAAE,IAAkB;QAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpD;;;;;;;;;;;;;IAcD,+BAAQ,GAAR,UAAS,WAAwB,EAAE,UAAuB;QACxD,IAAM,KAAK,GAAqB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC;QAEnF,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACjF,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAErF,OAAO,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KACzC;IACH,mBAAC;CAAA;;ACzlBD;;;;;;;;;;;;;sBAasB;;ACbtB;;;;;AAKA,AAEA;;;;;;;;;;;;;;;AAeA,AAAO,IAAM,EAAE,GAAG;;IAEhB,IAAI,EAAE,UAAC,GAAG,IAAK,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,GAAA,CAAC,GAAA;;IAG7D,MAAM,EAAE,UAAC,GAAG,IAAK,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM,IAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAA;;IAGnE,KAAK,EAAE;QACL,IAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC7C,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;KACjB;;IAGD,GAAG,EAAE,UAAC,QAA0D;QAC9D,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC9B;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;;;YAGtB,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC9B,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,QAAC,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,IAAC,CAAC,GAAA,CAAC,CAAC;;YAG3D,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;gBAC9B,OAAA,MAAM,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK,IAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;aAAA,CAAC,CAAC;SACnF;KACF;CACQ;;ACxDX;;;;;AAKA,AAIA;AACA,IAAM,OAAO,GAAG,EAAE,CAAC;AACnB,IAAM,cAAc,GAAG,kCAAkC,CAAC;AAC1D,IAAM,cAAc,GAAG,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDpC,AAAO,IAAM,SAAS,GAAG;;IAEvB,GAAG,EAAE,UAAA,IAAI,IAAI,OAAA,OAAO,CAAC,IAAI,CAAC,GAAA;;IAG1B,GAAG,EAAE,UAAC,IAAI,IAAK,OAAA,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAA;;;;;;;;IAS1C,MAAM,EAAE,UAAC,EAAe,EAAE,OAAQ,EAAE,MAAO;QACzC,IAAM,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IAAM,WAAW,GAAG,eAAe,CAAC,UAAC,GAAW,IAAK,OAAA,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAA,EAAE,UAAA,GAAG,IAAI,OAAA,gCAA8B,GAAG,MAAG,GAAA,CAAC,CAAC;QAC3H,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,GAAG,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;YAC9C,OAAQ,EAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC7D;;;;;;;IAQD,QAAQ,EAAE,UAAC,EAAe;QACxB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAA+B,EAAI,CAAC,CAAC;QAC5E,IAAI,EAAE,IAAK,EAAU,CAAC,OAAO;YAAE,OAAQ,EAAU,CAAC,OAAO,CAAC;QAC1D,IAAI,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,IAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACxD,IAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7F,OAAO,MAAM,IAAI,EAAE,CAAC;KACrB;CACe;;AClGlB;;;;;AAKA,AAKO,IAAM,gBAAgB,GAAG,UAAC,KAAK,EAAE,EAAU;QAAT,WAAG,EAAE,WAAG;IAC/C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAClB;SAAM,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;QAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtB;SAAM;QACL,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;KAChC;IACD,OAAO,KAAK,CAAC;CACd,CAAC;AAEF,AAAO,IAAM,SAAS,GAAG,UAAC,WAAmB;IACzC,OAAA,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;CAAA,CAAC;AAEzF,oBAAyB,GAAW;IAClC,IAAM,aAAa,GAAG,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,EAAE,GAAA,CAAC;IAC7B,IAAA,sCAAsD,EAArD,kBAAU,EAAE,YAAI,CAAsC;IACvD,IAAA,8CAA0D,EAAzD,YAAI,EAAE,cAAM,CAA8C;IAEjE,OAAO,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,CAAC;CACpC;AAED,AAAO,IAAM,QAAQ,GAAG,UAAC,GAAqB;IAC5C,IAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,IAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAExB,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;QAC9C,IAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,IAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,GAAG,GAAG,GAAG,GAAG,GAAA,CAAC,CAAC;KACzC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;CACvE,CAAC;AAEF,+BACI,IAAY,EACZ,OAAgB,EAChB,YAA4D,EAC5D,kBAAmF;IAErF,OAAO,UAAS,QAAkB;QAChC,IAAM,OAAO,GAAS,QAAQ,CAAC,eAAe,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,GAAI,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE3F,iBAAiB,MAAgB;YAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC/B;QAED,OAAO,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,aAAa,eAAA,EAAE,OAAO,SAAA,EAAE,CAAC;KAClD,CAAC;CACH;;AC/DD;;;;AAKA,AAMA;AACA;IAOE,8BAAY,MAAgB,EAAS,eAAwB;QAA7D,iBAGC;QAHoC,oBAAe,GAAf,eAAe,CAAS;QANrD,eAAU,GAAe,EAAE,CAAC;QAIpC,cAAS,GAAG,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,GAAA,CAAC,GAAA,CAAC;QAkC1D,SAAI,GAAK,cAAM,OAAAU,UAAQ,CAAC,KAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAA,CAAC;QAC1C,SAAI,GAAK,cAAM,OAAAA,UAAQ,CAAC,KAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAA,CAAC;QAC1C,WAAM,GAAG,cAAM,OAAA,SAAS,CAACA,UAAQ,CAAC,KAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC;QAjCrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;KAC9B;IAiCD,kCAAG,GAAH,UAAI,GAAY,EAAE,OAAc;QAAd,wBAAA,EAAA,cAAc;QAC9B,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAEpC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,EAAE,GAAG,KAAA,EAAE,CAAC,GAAA,CAAC,CAAC;aAC5C;SACF;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,uCAAQ,GAAR,UAAS,EAAiB;QAA1B,iBAGC;QAFC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,cAAM,OAAA,UAAU,CAAC,KAAI,CAAC,UAAU,EAAE,EAAE,CAAC,GAAA,CAAC;KAC9C;IAED,sCAAO,GAAP,UAAQ,MAAgB;QACtB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3B;IACH,2BAAC;CAAA;;;;;;;;;;;;;;;;;ACtED,AAIA;AACA;IAAyC,uCAAoB;IAC3D,6BAAY,MAAgB;QAA5B,YACE,kBAAM,MAAM,EAAE,KAAK,CAAC,SAErB;QADC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;KAC5D;IAED,kCAAI,GAAJ;QACE,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACzC;IACD,kCAAI,GAAJ,UAAK,KAAU,EAAE,KAAa,EAAE,GAAW,EAAE,OAAgB;QAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;KAC3B;IAED,qCAAO,GAAP,UAAS,MAAgB;QACvB,iBAAM,OAAO,YAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACxD;IACH,0BAAC;CAAA,CAjBwC,oBAAoB;;;;;;;;;;;;;;;;;ACL7D,AAGA;AACA;IAA2CC,2CAAoB;IAG7D,+BAAY,MAAgB;eAC1B,kBAAM,MAAM,EAAE,IAAI,CAAC;KACpB;IAED,oCAAI,GAAJ;QACE,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IAED,oCAAI,GAAJ,UAAK,KAAU,EAAE,KAAa,EAAE,GAAW,EAAE,OAAgB;QAC3D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;KACjB;IACH,4BAAC;CAAA,CAd0C,oBAAoB;;;;;;;;;;;;ACH/D,AAGA;;;;;AAKA;IAA8CA,8CAAoB;IAGhE,kCAAY,MAAgB;QAA5B,YACE,kBAAM,MAAM,EAAE,IAAI,CAAC,SAGpB;QAFC,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;KAC1D;;;;;;;;;;;;;;;;;IAkBO,iDAAc,GAAtB;QACE,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KACtD;IAES,uCAAI,GAAd;QACM,IAAA,mBAA2C,EAAzC,sBAAQ,EAAE,cAAI,EAAE,kBAAM,CAAoB;QAChD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,IAAM,kBAAkB,GAAG,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChE,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;QAC5E,QAAQ,GAAG,kBAAkB,GAAG,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QAExG,OAAO,QAAQ,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;KAC3E;IAES,uCAAI,GAAd,UAAe,KAAU,EAAE,KAAa,EAAE,GAAW,EAAE,OAAgB;QACrE,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,IAAM,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QAC/C,IAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;QAEjG,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SAChD;KACF;IAEM,0CAAO,GAAd,UAAe,MAAgB;QAC7B,iBAAM,OAAO,YAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACtD;IACH,+BAAC;CAAA,CA1D6C,oBAAoB;;ACLlE;AACA;IAAA;QAAA,iBAeC;QAdC,YAAO,GAAG,IAAI,CAAC;QAEf,cAAS,GAAG,EAAE,CAAC;QACf,UAAK,GAAG,EAAE,CAAC;QACX,cAAS,GAAG,MAAM,CAAC;QACnB,UAAK,GAAG,WAAW,CAAC;QACpB,gBAAW,GAAG,EAAE,CAAC;QAEjB,SAAI,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,GAAA,CAAC;QACxB,aAAQ,GAAG,cAAM,OAAA,KAAI,CAAC,SAAS,GAAA,CAAC;QAChC,SAAI,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,GAAA,CAAC;QACxB,aAAQ,GAAG,cAAM,OAAA,KAAI,CAAC,SAAS,GAAA,CAAC;QAChC,cAAS,GAAG,cAAM,OAAA,KAAK,GAAA,CAAC;QACxB,eAAU,GAAG,UAAC,MAAO,IAAK,OAAA,SAAS,CAAC,MAAM,CAAC,GAAG,KAAI,CAAC,WAAW,GAAG,MAAM,GAAG,KAAI,CAAC,WAAW,GAAA,CAAC;KAC5F;IAAD,2BAAC;CAAA;;ACzBD;;;;;AAKA,AAGA;AACA;IAIE,+BAAY,MAAO,EAAU,QAAgB;QAAhB,yBAAA,EAAA,gBAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAHrC,cAAS,GAAG,SAAS,CAAC;QACtB,gBAAW,GAAG,EAAE,CAAC;KAEyB;IAElD,oCAAI,GAAJ;QACE,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;KAC/C;IAED,wCAAQ,GAAR;QACE,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC5C;IAED,oCAAI,GAAJ;QACE,OAAO,QAAQ,CAAC,QAAQ,CAAC;KAC1B;IAED,yCAAS,GAAT;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAGD,0CAAU,GAAV,UAAW,SAAkB;QAC3B,OAAO,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;KAC/E;IAED,wCAAQ,GAAR,UAAS,IAAa;QACpB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;YAC5C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC7E;IAED,qDAAqB,GAArB;QACE,IAAM,OAAO,GAAoB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;KAC1G;IAED,uCAAO,GAAP,eAAY;IACd,4BAAC;CAAA;;ACnDD;;;;;AAKA,wBAY+B,MAAgB;IAC7C,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IAEjB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,IAAA,EAAE,SAAS,WAAA,EAAE,OAAO,EAAE,cAAM,OAAA,IAAI,GAAA,EAAE,CAAC;CACzE;;AAGD,AAAO,IAAM,kBAAkB,GAC3B,qBAAqB,CAAC,0BAA0B,EAAE,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;;AAGzG,AAAO,IAAM,uBAAuB,GAChC,qBAAqB,CAAC,2BAA2B,EAAE,IAAI,EAAE,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;;AAG9G,AAAO,IAAM,oBAAoB,GAC7B,qBAAqB,CAAC,wBAAwB,EAAE,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;;AClCvG;;;;MAIM;;ACJN;;;;;;;;;;;AAkHA;IAAA;KAGC;IADC,oCAAO,GAAP,UAAQ,MAAgB,KAAK;IAC/B,yBAAC;CAAA;;ACrHD;;;;AAKA,AAY4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICL1B,IAAI,eAAe,GAAoB,IAAI,CAAC;IAC5C,OAAO,UAAC,IAAI,EAAE,IAAI;QAChB,eAAe,GAAG,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;KACzD,CAAC;CACH;AAED,IAAM,SAAS,GAAG,UAAC,IAAI,EAAE,GAAG;IACxB,OAAA,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAA,EAAE,KAAK,CAAC;CAAA,CAAC;;;;;;;;;;AAWjE,yBAAgC,KAAkB;;IAEhD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE7B,IAAM,OAAO,GAAG,CAAC,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,EAC9E,QAAQ,GAAG,CAAC,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,CAAC,EAC5E,QAAQ,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAC,EACzD,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACtC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;;;;IAK/C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,YAAU,KAAK,CAAC,IAAI,6BAA0B;YAC1D,+DAA6D;YAC7D,qEAAqE;aACrE,MAAI,WAAW,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAG,CAAA,CAAC,CAAC;KACxE;IAED,IAAM,KAAK,GAA0C,EAAE,EACnD,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;IAE1E,OAAO,CAAC,WAAW,EAAE,UAAU,MAA0B,EAAE,IAAY;;QAErE,IAAI,GAAG,IAAI,IAAI,UAAU,CAAC;;QAE1B,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,EAAE,SAAS,EAAW,MAAM,EAAE,CAAC;;QAG9D,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;QAG5B,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YACjE,MAAM,IAAI,KAAK,CAAC,qBAAmB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAU,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAmB,IAAI,SAAI,KAAK,CAAC,IAAI,MAAG,CAAC,CAAC;SAC/H;QAED,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC;QAClD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QAEpB,IAAM,UAAU,GAAG,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;QAC3C,MAAM,CAAC,oBAAoB,GAAG,UAAU,CAAC,mBAAmB,CAAC;QAE7D,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;CACd;AAED,IAAIC,IAAE,GAAG,CAAC,CAAC;AACX;IAQE,uBAAmB,IAAgB,EAAS,QAA4B,EAAS,OAAwB;QAAzG,iBAA8G;QAA3F,SAAI,GAAJ,IAAI,CAAY;QAAS,aAAQ,GAAR,QAAQ,CAAoB;QAAS,YAAO,GAAP,OAAO,CAAiB;QAPzG,QAAG,GAAGA,IAAE,EAAE,CAAC;QACX,WAAM,GAAG,KAAK,CAAC;QA0Bf,gBAAW,GAAG,UAAC,MAAM,EAAE,OAAuB;YAC5C,OAAA,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAI,CAAC,SAAS,EAAE,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAI,CAAC,QAAQ;SAAA,CAAC;KArBjB;IAE9G,4BAAI,GAAJ;QAAA,iBAgBC;QAfC,IAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACvB,IAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;QAElF,IAAM,QAAQ,GAAQ;YACpB,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1E,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACjD,CAAC;QAEF,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAC,OAAO;YACnC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAI,CAAC,CAAC;YAC5C,KAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACrC,MAAM,CAAC,KAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,KAAI,CAAC;SACb,CAAC,CAAC;KACJ;;;;;;IAUD,qCAAa,GAAb,UAAc,OAAuB;QACnC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7D,IAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAO,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACvE,IAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,EAAQ,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChC;IACH,oBAAC;CAAA;;AC/HD;;AAEA,AAQA;;;AAGA;IAAA;QAAA,iBA6KC;uBA5KwB,aAAQ,GAAGb,EAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;uBAK7C,SAAI,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAC,KAAK,EAAE,cAAc,EAAE,SAAS;gBAC9F,KAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChH,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,KAAI,CAAC,cAAc,GAAG,cAAc,CAAC;gBACrC,OAAO,KAAI,CAAC;aACb,CAAC,CAAC;KAkKJ;;IA/JC,wCAAc,GAAd,UAAe,KAAc;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;;;;;;;;;;;;;;IAeD,oCAAU,GAAV,UAAW,MAA0B,EAAE,MAAW,EAAE,OAAuB;QACzE,IAAM,eAAe,GAAG,qBAAqB,CAAC;QAE9C,IAAM,UAAU,GAAI,UAAC,MAAM,IAAK,OAAA,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,QAAC,EAAE,QAAQ,EAAG,GAAG,EAAE,IAAC,CAAC,GAAA,CAAC;QAC3F,IAAM,WAAW,GAAG,UAAC,MAAM,IAAK,OAAA,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,QAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAC,CAAC,GAAA,CAAC;QAE3F,QACI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAY,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1F,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC1F,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC7G,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAW,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;wBACnE,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;4BACxH,UAAU,CAAC,eAAe,CAAC,EAC7B;KACH;;;;;;;;;;IAWD,oCAAU,GAAV,UAAW,QAA6B,EAAE,MAAkB;QAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAU,QAAS,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;KACnE;;;;;;;;;;IAWD,iCAAO,GAAP,UAAQ,GAAwB,EAAE,MAAW;QAC3C,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAU,GAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;iBACvF,IAAI,CAAC,UAAU,QAAQ;gBACtB,OAAO,QAAQ,CAAC,IAAI,CAAC;aACtB,CAAC,CAAC;SACR;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;KACnC;;;;;;;;;IAUD,sCAAY,GAAZ,UAAa,QAAqB,EAAE,MAAW,EAAE,OAAuB;QACtE,IAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAS,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACzE,IAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,EAAa,UAAU,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChC;;;;;;;;IASD,+CAAqB,GAArB,UAAsB,QAAqB,EAAE,MAAW,EAAE,OAAuB;QAC/E,IAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAS,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACzE,IAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,EAAa,UAAU,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChC;;;;;;;;;;;;;;;IAgBD,+CAAqB,GAArB,UAAsB,MAAwB,EAAE,OAAuB,EAAE,SAAiB,EAAE,QAAc;QACxG,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;;QAG1B,IAAM,MAAM,GAAGA,EAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;;QAEtD,IAAM,KAAK,GAAG,UAAC,SAAiB;YAC9B,IAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,OAAK,OAAS,GAAG,OAAO,CAAC;SAC9D,CAAC;QAGF,IAAM,YAAY,GAAG,UAAC,KAAmB;YAC/B,IAAA,iBAAI,EAAE,iBAAI,CAAW;YAC7B,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;;;;YAI7B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC1C,OAAU,QAAQ,UAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAG,CAAC;YAElD,IAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;;;YAG3C,IAAI,IAAI,KAAK,GAAG;gBACd,OAAU,QAAQ,YAAO,MAAM,iBAAY,WAAW,QAAK,CAAC;;;;YAK9D,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,IAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC/C,IAAM,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;gBAC3B,IAAM,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;;gBAEzD,IAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAI,EAAE,CAAC,MAAM,GAAG,CAAC,OAAG,GAAG,EAAE,CAAC;gBAC5D,OAAU,QAAQ,mBAAc,WAAW,GAAG,WAAW,SAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAI,CAAC;aACjF;;YAGD,OAAU,QAAQ,UAAK,MAAM,iBAAY,WAAW,MAAG,CAAC;SACzD,CAAC;QAEF,IAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,IAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,MAAI,SAAS,SAAI,KAAK,WAAM,SAAS,MAAG,CAAC;KACjD;IACH,sBAAC;CAAA,IAAA;AAED;AACA,8BAA8B,IAAY;IACxC,IAAM,OAAO,GAAW,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAmC,IAAI,MAAG,CAAC,CAAC;IAC7F,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;CACrD;;;AAID,IAAM,WAAW,GAAG,UAAC,GAAQ;IAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/E,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACjC,CAAC;;;AASF,IAAM,aAAa,GAAG,UAAC,WAAgB,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;KAErE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAA,CAAC;KAE7D,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAA,CAAC;KAEtD,GAAG,CAAC,UAAA,KAAK,IAAI,QAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAmB,IAAA,CAAC,GAAA;;ACvNzF;AACA,AAKA;;;;;;;;;;;;;;;;AAgBA;IACE,uBAAoB,aAA4B,EAAU,YAA0B;QAAhE,kBAAa,GAAb,aAAa,CAAe;QAAU,iBAAY,GAAZ,YAAY,CAAc;QAClF,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2FD,iCAAS,GAAT,UAAU,IAAY,EAAE,IAAqB;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;KACzD;IAwID,6BAAK,GAAL,UAAM,IAAS,EAAE,UAAgB;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,UAAU,GAAG,IAAI,CAAC;SACnB;aAAM;YACL,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;KACb;;;;;;IAQD,iCAAS,GAAT,UAAU,QAA2B;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC9C;IACH,oBAAC;CAAA;;ACjRD;AACA,AAMA;;;;;;;AAOA,AAAO,IAAM,mBAAmB,GAAG,UAAC,QAAuC;IAC3E,OAAA,0BAA0B,WAAwB,EAAE,QAAyB;QAC3E,IAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;QAEvD,0BAA0B,KAAiB,EAAE,KAA0B;YACrE,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvE,IAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAAC;KAC5C;CAAA;;AC3BD;;;;AAIA,AAIA;;;AAGA;IA0CE,6BAAY,iBAAoC;;QA3BxC,kBAAa,GAAe,EAAE,CAAC;QA4BrC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnC,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;KACtD;;;;;;;;;;;;;IAjBM,gDAA4B,GAAnC,UAAoC,MAAgB;QAClD,IAAM,QAAQ,GAAc,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElE,QAAQ,CAAC,MAAM,GAAG,UAAC,CAAM;YACrB,OAAA,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,UAAA,CAAC,IAAI,QAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAC,CAAC,GAAG,CAAC;SAAA,CAAC;QAEzF,QAAQ,CAAC,MAAM,GAAG,UAAC,CAAS;YACxB,OAAA,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAA,CAAC,IAAI,QAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAC,CAAC,GAAG,CAAC;SAAA,CAAC;KAE5F;IAED,qCAAO,GAAP,eAAa;IAQb,sCAAQ,GAAR,UAAS,QAAkB;QAA3B,iBAGC;QAFC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,cAAM,OAAA,UAAU,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC;KACvD;IAED,uCAAS,GAAT;QACE,IAAI,SAAS,GAAQ,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACxD,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QAChE,OAAO,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC3C;IAED,iCAAG,GAAH,UAAI,MAAe,EAAE,OAAe,EAAE,KAAM;QAAvB,wBAAA,EAAA,eAAe;QAClC,IAAI,SAAS,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,KAAK;YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;KAC7B;IAED,8CAAgB,GAAhB,UAAiB,UAAU,EAAE,SAA2B,EAAE,QAAQ,EAAE,QAAQ;QAA5E,iBAeC;QAdC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;QAGzB,UAAU,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;QAC3F,IAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;;QAG/B,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;;QAE9E,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;;QAErE,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;KAC9D;IACH,0BAAC;CAAA;;AC7FD;AACA,AAUA;;;;;;;;;;;;;;AAcA;;IAUE,2BAAY,MAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;KACpC;IATM,mCAAiB,GAAxB,UAAyB,MAAgB,EAAE,OAAO;QAChD,OAAO,UAAA,KAAK;YACR,OAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SAAA,CAAC;KACtG;;IASD,gCAAI,GAAJ;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,iBAAiB;YAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;KAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCD,gCAAI,GAAJ,UAAK,MAA0B;QAA/B,iBASC;QARC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEtE,IAAM,KAAK,GAAG;YACV,OAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SAAA,CAAC;QAE7D,IAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4BD,qCAAS,GAAT,UAAU,IAAiC;QAA3C,iBAYC;QAXC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YAC3B,SAAS,CAAC,SAAS,CAAC,cAAM,OAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAA,CAAC,CAAC;SACnF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QAED,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCD,gCAAI,GAAJ,UAAK,IAAgC,EAAE,OAA2B;QAChE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3C,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAc,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCD,0CAAc,GAAd,UAAe,KAAe;QAC5B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACvC;IACH,wBAAC;CAAA;;AClND;;;;;;;;;;;;AAYA,AAgBAA,EAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACzC,IAAM,QAAQ,GAAIA,EAAO,CAAC,MAAM,CAAC,gBAAgB,EAAI,EAAE,CAAC,CAAC;AACzD,IAAM,QAAQ,GAAIA,EAAO,CAAC,MAAM,CAAC,gBAAgB,EAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC/E,IAAM,OAAO,GAAKA,EAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzE,IAAM,SAAS,GAAGA,EAAO,CAAC,MAAM,CAAC,iBAAiB,EAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACnH,IAAM,QAAQ,GAAIA,EAAO,CAAC,MAAM,CAAC,WAAW,EAAS,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAClH,IAAI,QAAQ,GAAIA,EAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAWlE,IAAI,MAAM,GAAa,IAAI,CAAC;AAE5B,iBAAiB,CAAC,OAAO,GAAG,CAAC,mBAAmB,CAAC,CAAC;;AAElD,2BAA2B,iBAAoC;;IAG7D,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IACtC,MAAM,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;;IAGpF,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAK,eAAe,CAAC,CAAC;IAC5D,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3E,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAEnF,IAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAEvH,mBAAmB,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;;IAGzD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC9F,cAAc,SAA2B,EAAE,QAAa,EAAE,QAAa,EAAE,UAAqB,EAAE,KAAmB,EAAE,cAAqC;QACxJ,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;KACf;IACD,OAAO,MAAM,CAAC;CACf;AAED,IAAM,cAAc,GAAG,UAAC,WAAW,IAAK,OAAA,CAAE,mBAAmB,EAAE,UAAC,IAAI;QAClE,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,GAAG,cAAM,OAAA,OAAO,GAAA,CAAC;QAChC,OAAO,OAAO,CAAC;KAChB,CAAC,GAAA,CAAC;;AAGH,QAAQ,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACpD,kBAAkB,SAA2B,EAAE,EAAa,EAAE,SAAmB;IAC/E,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,GAAS,EAAE,CAAC;;;IAIvB,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE;SACxB,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,EAAE,CAAC,WAAW,GAAA,CAAC;SACjC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;SACnB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,UAAU,GAAA,CAAC;SAClC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;CAC5G;;AAGD,IAAM,oBAAoB,GAAG,UAAC,QAAkB;IAC9C,OAAA,QAAQ,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC;CAAA,CAAC;;;AAI/D,IAAM,gBAAgB,GAAG;IACrB,OAAA,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,cAAM,OAAA,MAAM,CAAC,YAAY,GAAA,EAAE,CAAC;CAAA,CAAC;AAEtE,YAAY,CAAC,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC;AACtC,sBAA6B,UAA6B;IACxD,UAAU,CAAC,MAAM,CAAC,cAAa,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;CAC/D;AAED,QAAQ,CAAE,QAAQ,CAAC,WAAW,EAAiB,iBAAiB,CAAC,CAAC;AAClE,OAAO,CAAG,QAAQ,CAAC,YAAY,EAAU,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACtF,QAAQ,CAAE,QAAQ,CAAC,aAAa,EAAS,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AACvE,QAAQ,CAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,cAAM,OAAA,MAAM,CAAC,iBAAiB,GAAA,CAAC,CAAC,CAAC;AAChG,QAAQ,CAAE,QAAQ,CAAC,kBAAkB,EAAI,cAAM,OAAA,IAAI,eAAe,EAAE,GAAA,CAAC,CAAC;AACtE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAM,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAI,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACpE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAQ,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC9E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAc,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAElF,SAAS,CAAC,OAAO,CAAE,cAAc,EAAQ,CAAC,WAAW,EAAE,UAAC,SAAmB,IAAK,OAAA,SAAS,CAAC,OAAO,CAAC,MAAM,GAAA,CAAC,CAAC,CAAC;AAC3G,QAAQ,CAAE,OAAO,CAAE,OAAO,EAAe,cAAM,OAAA,MAAM,CAAC,WAAW,GAAA,CAAC,CAAC;AACnE,QAAQ,CAAE,OAAO,CAAE,QAAQ,EAAc,cAAM,OAAA,KAAK,GAAA,CAAC,CAAC;AAEtD,QAAQ,CAAE,GAAG,CAAM,YAAY,CAAC,CAAC;AACjC,QAAQ,CAAE,GAAG,CAAM,CAAC,oBAAoB,EAAE,UAAU,kBAAqC,KAAK,CAAC,CAAC,CAAC;AACjG,SAAS,CAAC,GAAG,CAAM,CAAC,QAAQ,EAAE,UAAU,MAAoB,KAAK,CAAC,CAAC,CAAC;AACpE,OAAO,CAAG,GAAG,CAAM,CAAC,YAAY,EAAE,UAAU,UAAqB,KAAK,CAAC,CAAC,CAAC;AACzE,QAAQ,CAAE,GAAG,CAAM,QAAQ,CAAC,CAAC;;AAG7B,AAAO,IAAM,SAAS,GAAG,UAAC,GAAmB;IAC3C,IAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAM,MAAM,GAAG,MAAM,CAAE,GAAG,CAAC,UAAA,GAAG;QAC5B,IAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACnD,OAAO,CAAE,GAAG,EAAE,UAAU,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAE,CAAC;KAChF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;CACtC;;ACrFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;;ACzHH;;;;;;;;;;AAUA,AAaA;AACA,uBAAuB,GAAW;IAChC,IAAI,MAAM,CAAC;IACX,IAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,IAAI,UAAU;QAAE,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAEhD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACvF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;CACnE;;AAGD,sBAAsB,EAAoB;IACxC,IAAM,OAAO,GAAgB,EAAE,CAAC,MAAM,EAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvF,IAAM,IAAI,GAAe,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;CACjD;;AAGD,sBAAsB,MAAoB,EAAE,QAA0B,EAAE,GAAQ;IAC9E,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACnD,IAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACjF,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAClE,OAAO,EAAE,OAAO,SAAA,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,aAAA,EAAE,IAAI,MAAA,EAAE,CAAC;CACzE;;AAUD,qBAAqB,EAAoB;;IAEvC,IAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,4BAA4B,CAAC;IAC/F,IAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,MAAM,GAAG,QAAQ,IAAI,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;QACzD,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG;QAClD,SAAS,EAAE,CAAC,MAAM;KACnB,CAAC;CACH;;AAGD,mBAAmB,EAAoB,EAAE,MAAoB,EAAE,QAAyB,EAAE,IAAc,EAAE,MAAiB;IACzH,OAAO,UAAU,CAAyB;QACxC,IAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAEtD,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;;YAE9E,IAAM,YAAU,GAAG,QAAQ,CAAC;gBAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aACrE,CAAC,CAAC;YACH,CAAC,CAAC,cAAc,EAAE,CAAC;;YAGnB,IAAI,2BAAyB,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtE,CAAC,CAAC,cAAc,GAAG;gBACjB,IAAI,2BAAyB,EAAE,IAAI,CAAC;oBAAE,QAAQ,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;aACnE,CAAC;SACH;KACF,CAAC;CACH;;AAGD,qBAAqB,EAAoB,EAAE,MAAoB;IAC7D,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ;QAC7C,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;KACf,CAAC;CACH;;AAGD,oBAAoB,OAAyB,EAAE,KAAa,EAAE,MAAyB,EAAE,WAAgB;IACvG,IAAI,MAAM,CAAC;IAEX,IAAI,WAAW,EAAE;QACf,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;KAC7B;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACpB,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;KACpB;IAED,IAAM,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;IACtC,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;QAArB,IAAM,OAAK,eAAA;QACd,OAAO,CAAC,EAAE,CAAC,CAAC,OAAK,EAAE,MAAM,CAAC,CAAC;KAC5B;IAED,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;QACpB,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC3C,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM;YAArB,IAAM,OAAK,eAAA;YACd,OAAO,CAAC,GAAG,CAAC,CAAC,OAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;KACF,CAAC,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuID,IAAI,eAA8B,CAAC;AACnC,eAAe,GAAG,CAAC,WAAW,EAAE,UAAU;IACxC,4BAA4B,SAAmB,EAAE,QAAyB;QACxE,IAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;QAEtC,OAAO;YACL,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YAC/C,IAAI,EAAE,UAAU,KAAa,EAAE,OAAyB,EAAE,KAAU,EAAE,YAAiB;gBACrF,IAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,YAAY,GAAa,IAAI,CAAC;gBAClC,IAAI,MAAM,CAAC;gBAEX,IAAM,MAAM,GAAG,EAAS,CAAC;gBACzB,IAAM,MAAM,GAAG,cAAM,OAAA,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAA,CAAC;gBAE3D,IAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;gBAC3B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBAE3E;oBACE,IAAM,GAAG,GAAG,MAAM,EAAE,CAAC;oBACrB,IAAI,YAAY;wBAAE,YAAY,EAAE,CAAC;oBACjC,IAAI,MAAM;wBAAE,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjF,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;iBACvD;gBAED,IAAI,GAAG,CAAC,SAAS,EAAE;oBACjB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG;wBACvC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACvC,MAAM,EAAE,CAAC;qBACV,EAAE,IAAI,CAAC,CAAC;oBACT,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC/D;gBAED,MAAM,EAAE,CAAC;gBAET,KAAK,CAAC,GAAG,CAAC,UAAU,EAAQ,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7E,KAAK,CAAC,GAAG,CAAC,UAAU,EAAQ,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;gBAE/E,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAC5B,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5D,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aACxD;SACF,CAAC;KACH,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFL,IAAI,gBAA+B,CAAC;AACpC,gBAAgB,GAAG,CAAC,WAAW,EAAE,UAAU;IACzC,mCAAmC,SAAmB,EAAE,QAAyB;QAC/E,IAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;QAEtC,OAAO;YACL,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YAC/C,IAAI,EAAE,UAAU,KAAa,EAAE,OAAyB,EAAE,KAAU,EAAE,YAAiB;gBACrF,IAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,YAAY,GAAa,IAAI,CAAC;gBAClC,IAAI,MAAM,CAAC;gBAEX,IAAM,MAAM,GAAG,EAAS,CAAC;gBACzB,IAAM,MAAM,GAAG,cAAM,OAAA,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAA,CAAC;gBAE3D,IAAM,UAAU,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;gBAC/D,IAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,QAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAC,EAAE,EAAE,CAAC,CAAC;gBAEpF;oBACE,IAAM,GAAG,GAAG,MAAM,EAAE,CAAC;oBACrB,IAAI,YAAY;wBAAE,YAAY,EAAE,CAAC;oBACjC,IAAI,MAAM;wBAAE,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjF,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;iBACvD;gBAED,UAAU,CAAC,OAAO,CAAC,UAAC,KAAK;oBACvB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;oBAEhE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAC,IAAI;wBACzB,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvB,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAC,MAAM;4BAC/C,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;4BACvB,MAAM,EAAE,CAAC;yBACV,EAAE,IAAI,CAAC,CAAC;qBACV,CAAC,CAAC;iBACJ,CAAC,CAAC;gBAEH,MAAM,EAAE,CAAC;gBAET,KAAK,CAAC,GAAG,CAAC,UAAU,EAAQ,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7E,KAAK,CAAC,GAAG,CAAC,UAAU,EAAQ,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;gBAE/E,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAC5B,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5D,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aACxD;SACF,CAAC;KACH,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FL,IAAI,qBAAoC,CAAC;AACzC,qBAAqB,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW;IAC5E,kCAAkC,MAAoB,EAAE,YAAiB,EAAE,YAAiC,EAAE,SAAmB;QAC/H,OAAO;YACL,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ;gBACzC,UAAU,MAAc,EAAE,QAA0B,EAAE,MAAW;oBAC/D,IAAI,MAAM,GAAgB,EAAE,CAAC;oBAC7B,IAAI,aAAqB,CAAC;oBAC1B,IAAI,YAAiB,CAAC;;;;oBAKtB,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAEzE,IAAI;wBACF,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;qBAClD;oBAAC,OAAO,CAAC,EAAE;;;qBAGX;oBACD,YAAY,GAAG,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBACtF,6BAA6B,CAAC,YAAY,CAAC,CAAC;;oBAG5C,IAAI,CAAC,cAAc,GAAG,UAAU,QAAgB,EAAE,SAAc;;;wBAG9D,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC/C,OAAO;yBACR;wBACD,IAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;wBAC/D,MAAM,EAAE,CAAC;wBACT,OAAO,UAAU,CAAC;qBACnB,CAAC;oBAEF,+BAA+B,KAAK;wBAClC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBAClC;oBACD,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAC9C,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;wBAChC,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;qBACrD;oBAED;wBACE,IAAM,+BAA+B,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;wBACrG,IAAM,yBAAyB,GAAG,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;wBACjG,IAAM,oCAAoC,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;wBACvF,OAAO;4BACL,+BAA+B,EAAE,CAAC;4BAClC,yBAAyB,EAAE,CAAC;4BAC5B,oCAAoC,EAAE,CAAC;yBACxC,CAAC;qBACH;oBAED;wBACE,6BAA6B,CAAC,YAAY,CAAC,CAAC;qBAC7C;oBAED,uCAAwC,gBAAwB;wBAC9D,IAAI,QAAQ,CAAC,gBAAgB,CAAC,EAAE;4BAC9B,MAAM,GAAG,EAAE,CAAC;4BACZ,OAAO,CAAC,gBAAgB,EAAE,UAAU,WAA6C,EAAE,WAAmB;;gCAEpG,IAAM,gBAAgB,GAAG,UAAU,WAAmB,EAAE,WAAmB;oCACzE,IAAM,GAAG,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;oCACvC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;iCAC/D,CAAC;gCAEF,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;;oCAEzB,gBAAgB,CAAC,WAAqB,EAAE,WAAW,CAAC,CAAA;iCACrD;qCAAM,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;;oCAE/B,OAAO,CAAC,WAAW,EAAE,UAAU,WAAmB;wCAChD,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qCAC3C,CAAC,CAAC;iCACJ;6BACF,CAAC,CAAC;yBACJ;qBACF;oBAED,kBAAkB,SAAiB,EAAE,WAAgB,EAAE,WAAmB;wBACxE,IAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAE5D,IAAM,SAAS,GAAG;4BAChB,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;4BACnC,MAAM,EAAE,WAAW;4BACnB,WAAW,EAAE,WAAW;yBACzB,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAEvB,OAAO;4BACL,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;yBAC/B,CAAC;qBACH;;oBAGD;wBACE,IAAM,YAAY,GAAG,UAAA,GAAG;4BACpB,OAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;yBAAA,CAAC;wBACrC,IAAM,UAAU,GAAG,UAAC,SAAsB;4BACtC,OAAA,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,GAAA,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;yBAAA,CAAC;wBAE5E,IAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC5F,IAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC,CAAC;wBAC7F,IAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC;wBACzF,IAAM,YAAY,GAAG,iBAAiB,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;wBAE1E,IAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACvE,IAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,GAAA,CAAC,CAAC;wBAE1E,MAAM,CAAC,UAAU,CAAC;4BAChB,UAAU,CAAC,OAAO,CAAC,UAAA,SAAS,IAAI,OAAA,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;4BAC9D,aAAa,CAAC,OAAO,CAAC,UAAA,SAAS,IAAI,OAAA,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;yBACrE,CAAC,CAAC;qBACJ;oBAED,MAAM,EAAE,CAAC;iBACV,CAAC;SACL,CAAC;KACH,CAAC,CAAC;AAOLA,EAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;KAC5B,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;KACpC,SAAS,CAAC,cAAc,EAAE,qBAAqB,CAAC;KAChD,SAAS,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;KAClD,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;;AC5pB5C;AAEA,AAGA;;;;;;;;;;AAUA,cAAc,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,wBAA+B,MAAoB;IACjD,IAAM,QAAQ,GAAQ,UAAS,KAAkB,EAAE,MAAW,EAAE,OAAoC;QAClG,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,OAAO,QAAQ,CAAC;CACjB;;;;;;;;;;;AAYD,sBAAsB,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,gCAAuC,MAAoB;IACzD,IAAM,cAAc,GAAQ,UAAS,KAAkB,EAAE,MAAW,EAAE,OAAmC;QACvG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChD,CAAC;IACF,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;IAChC,OAAQ,cAAc,CAAC;CACxB;AAEDA,EAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC;KACjC,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;;AC7CrD;;;;AAIA,AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HA,AAAO,IAAI,MAAqB,CAAC;AACjC,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI;IACpE,wBAAwB,KAAkB,EAAE,QAAa,EAAE,aAAkB,EAAE,YAAiC,EAAE,EAAU;QAE1H,qBAAqB,KAAU,EAAE,KAAa;YAC5C,OAAO;gBACL,KAAK,EAAE,UAAS,OAAe,EAAE,MAAW,EAAE,EAAY;oBACxD,IAAIA,EAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;wBAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAChD;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;qBAC3C;iBACF;gBACD,KAAK,EAAE,UAAS,OAAe,EAAE,EAAY;oBAC3C,IAAIA,EAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;wBAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBAClC;yBAAM;wBACL,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;qBAC7B;iBACF;aACF,CAAC;SACH;QAED,sBAAsB,OAAsB,EAAE,OAAsB;YAClE,OAAO,OAAO,KAAK,OAAO,CAAC;SAC5B;QAED,IAAM,QAAQ,GAAG;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,EAAE;YACrE,OAAO,EAAE,EAAG;SACb,CAAC;QAEF,IAAM,SAAS,GAAG;YAChB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,UAAU,QAAgB,EAAE,MAAW,EAAE,WAAgC;gBAEhF,OAAO,UAAU,KAAa,EAAE,QAA0B,EAAE,KAAU;oBACpE,IAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EACnC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,EACnC,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,EACpC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,QAAQ,EACzD,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;oBAErF,IAAI,UAAkB,EAClB,SAAiB,EACjB,YAAoB,EACpB,UAAyB,EACzB,UAAoB,CAAC;oBAEzB,IAAM,YAAY,GAAiB;wBACjC,KAAK,EAAE,KAAK;wBACZ,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE;wBACrB,IAAI,EAAE,IAAI;wBACV,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI;wBACtE,MAAM,EAAE,IAAI;wBACZ,aAAa,EAAE,qBAAqB;wBACpC,IAAI,eAAe;4BACjB,IAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,CAAC;;;4BAGvE,IAAM,aAAa,GAAG,KAAK,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC;4BAClE,OAAO,mBAAmB,IAAI,aAAa,CAAC;yBAC7C;qBACF,CAAC;oBAEF,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBAEhD,+BAA+B,MAAsB;wBACnD,IAAI,MAAM,IAAI,EAAE,MAAM,YAAY,aAAa,CAAC;4BAAE,OAAO;wBACzD,IAAI,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;4BAAE,OAAO;wBAC7C,KAAK,CAAC,wBAAwB,CAAC,YAAY,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAEpG,UAAU,GAAG,MAAM,CAAC;wBACpB,UAAU,CAAC,MAAM,CAAC,CAAC;qBACpB;oBAED,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;oBAEpD,UAAU,EAAE,CAAC;oBAEb,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;oBAChD,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;wBACpB,KAAK,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;wBACjE,UAAU,EAAE,CAAC;qBACd,CAAC,CAAC;oBAEH;wBACE,IAAI,UAAU,EAAE;4BACd,KAAK,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;4BAC7E,UAAU,CAAC,MAAM,EAAE,CAAC;4BACpB,UAAU,GAAG,IAAI,CAAC;yBACnB;wBAED,IAAI,YAAY,EAAE;4BAChB,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;4BACzD,YAAY,CAAC,QAAQ,EAAE,CAAC;4BACxB,YAAY,GAAG,IAAI,CAAC;yBACrB;wBAED,IAAI,SAAS,EAAE;4BACb,IAAM,WAAS,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;4BAChD,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAS,CAAC,CAAC;4BACjD,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE;gCACxB,WAAS,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gCAChC,UAAU,GAAG,IAAI,CAAC;6BACnB,CAAC,CAAC;4BAEH,UAAU,GAAG,SAAS,CAAC;4BACvB,SAAS,GAAG,IAAI,CAAC;yBAClB;qBACF;oBAED,oBAAoB,MAAsB;wBACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC9B,IAAM,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;wBAErD,IAAM,WAAW,GAAe;4BAC9B,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,YAAY;yBACtB,CAAC;wBAEF,IAAM,WAAW,GAAmB;4BAClC,UAAU,EAAE,SAAS,CAAC,OAAO;4BAC7B,UAAU,EAAE,SAAS,CAAC,OAAO;4BAC7B,WAAW,EAAE,SAAS;yBACvB,CAAC;;;;;;;;;;;;;wBAcF,QAAQ,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;wBAE5C,IAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAS,KAAK;4BACjD,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;4BACvC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;4BACnC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE;gCAC9B,SAAS,CAAC,OAAO,EAAE,CAAC;gCACpB,IAAI,YAAY;oCAAE,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gCAEnE,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;oCAC5E,aAAa,CAAC,KAAK,CAAC,CAAC;iCACtB;6BACF,CAAC,CAAC;4BAEH,eAAe,EAAE,CAAC;yBACnB,CAAC,CAAC;wBAEH,SAAS,GAAG,MAAM,CAAC;wBACnB,YAAY,GAAG,QAAQ,CAAC;;;;;;;;;;;wBAWxB,YAAY,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,IAAI,UAAU,CAAC,CAAC;wBAC/D,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;qBAC/B;iBACF,CAAC;aACH;SACF,CAAC;QAEF,OAAO,SAAS,CAAC;KAClB,CAAC,CAAC;AAEH,kBAAkB,CAAC,OAAO,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;AAEpG,4BAA4B,QAAiC,EACjC,WAAuC,EACvC,YAA+B,EAC/B,KAAkB,EAClB,EAAqB,EACrB,QAAyB;IACnD,IAAM,eAAe,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAM,YAAY,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEjD,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,CAAC,GAAG;QACd,OAAO,EAAE,UAAU,QAAgB;YACjC,IAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEjB,OAAO,UAAU,KAAa,EAAE,QAAgB;gBAC9C,IAAM,IAAI,GAAe,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,EAAE;oBACP,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAS,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC5C,OAAO;iBACV;gBAED,IAAM,GAAG,GAAkB,IAAI,CAAC,IAAI,IAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBAClF,IAAM,UAAU,GAAmB,GAAG,CAAC,IAAI,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5E,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC;gBAChE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAErD,IAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAS,CAAC,CAAC;gBAClD,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAClC,IAAM,YAAY,GAAW,eAAe,CAAC,GAAG,CAAC,CAAC;gBAClD,IAAM,SAAS,GAAW,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAM,MAAM,GAAG,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;gBAEnD,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;gBAE1B,IAAI,UAAU,EAAE;oBACd,IAAM,kBAAkB,GAAmB,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAC9H,IAAI,YAAY,EAAE;wBAChB,KAAK,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC;wBACzC,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;qBACzC;;;;;oBAOD,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;oBAC7D,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;oBAExE,2BAA2B,CAAC,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;iBAC/E;;gBAGD,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACpC,IAAM,KAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACnC,IAAM,SAAS,GAAG,WAAW,CAAC,KAAG,CAAC,CAAC;oBACnC,IAAM,WAAS,GAAG,IAAI,MAAM,CAAC,iBAAe,SAAS,MAAG,EAAE,GAAG,CAAC,CAAC;oBAE/D,IAAM,sBAAsB,GAAG;wBAC7B,IAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;6BAClD,MAAM,CAAC,UAAC,EAAW,IAAK,OAAA,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,WAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAA,CAAC,CAAE;wBAE9E,OAAO,WAAW,IAAIA,EAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAI,KAAG,eAAY,CAAC,CAAC;qBAC9E,CAAC;oBAEF,IAAM,iBAAe,GAAG,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,UAAS,YAAY;wBAChF,IAAI,CAAC,YAAY;4BAAE,OAAO;wBAC1B,2BAA2B,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;wBACxE,iBAAe,EAAE,CAAC;qBACnB,CAAC,CAAC;iBACJ;gBAED,IAAI,CAAC,KAAK,CAAC,CAAC;aACb,CAAC;SACH;KACF,CAAC;CACH;;AAGD,IAAM,gBAAgB,GAAG,OAAQA,EAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC;;AAEjG,IAAI,YAAY,GAAG,CAAC,CAAC;;AAGrB,qCAAqC,EAAqB,EACrB,YAA+B,EAC/B,kBAAiC,EACjC,MAAc,EACd,GAAkB;;IAErD,IAAI,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,gBAAgB,CAAC,EAAE;QAC3F,kBAAkB,CAAC,OAAO,EAAE,CAAC;KAC9B;IAED,IAAM,SAAS,GAAwB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAEjE,IAAM,WAAW,GAAmB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;IAEjE,IAAI,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE;QACpD,IAAM,cAAc,GAAmB,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpE,IAAM,mBAAiB,GAAG,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;;QAG5E,IAAM,aAAa,GAAG,UAAC,YAAwB;;;YAG7C,IAAI,YAAY,KAAK,mBAAiB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAA6B,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO;YAEvH,IAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAkB,CAAC;YAC5D,IAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAgB,MAAM,CAAkB,CAAC;YAC/E,IAAM,QAAQ,GAAY,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAC,IAAc,IAAK,OAAA,IAAI,CAAC,WAAW,GAAA,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtH,IAAM,UAAU,GAAY,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,IAAc,IAAK,OAAA,IAAI,CAAC,WAAW,GAAA,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;;YAG1H,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,KAAY;gBACnD,IAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7F,CAAC,CAAC;;YAGH,IAAI,eAAe,CAAC,MAAM,EAAE;gBAC1B,IAAM,aAAW,GAAa,eAAe,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,GAAA,CAAC,CAAC;;gBAE7D,IAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,aAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;gBAClF,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;aAC/D;SACF,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,UAAU,EAAQ,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KACtF;;IAGD,IAAI,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;QAC5C,IAAM,IAAE,GAAG,YAAY,EAAE,CAAC;QAC1B,IAAM,WAAS,GAAG,eAAe,CAAC;;QAGlC,IAAM,kBAAgB,GAAG,UAAC,KAAiB;YACvC,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAS,CAAC,IAAI,KAAK,CAAC,WAAS,CAAC,CAAC,IAAE,CAAC,KAAK,IAAI,IAAI,kBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;SAAA,CAAC;;QAG/G,IAAM,WAAW,GAAG,UAAC,KAAiB;YACpC,IAAI,OAAO,CAAC;YACZ,IAAM,GAAG,GAAG,KAAK,CAAC,WAAS,CAAC,GAAG,KAAK,CAAC,WAAS,CAAC,IAAI,EAAE,CAAC;YAEtD,IAAI,CAAC,kBAAgB,CAAC,KAAK,CAAC,EAAE;gBAC5B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAE,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC,GAAA,CAAC,CAAC;aAChD;YACD,OAAO,OAAO,CAAC;SAChB,CAAC;QAEF,IAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAQ,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;KACzF;CACF;AAEDA,EAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAQ,MAAM,CAAC,CAAC;AACpEA,EAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAQ,kBAAkB,CAAC,CAAC;;ACnfhF;AACA,AAgBA;AACA;IAEE,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC,eAAe,GAAG;QACrB,eAAe,GAAG,IAAI,CAAC;KACxB,CAAC;IAEF,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,UAAU,aAAmC,EAAE,QAAyB;YAChH,IAAI,eAAe,EAAE;gBACnB,OAAO,aAAa,CAAC;aACtB;YAED,OAAO,UAAU,QAAgB;gBAC/B,OAAO,QAAQ,CAAC;oBACd,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;iBAC9B,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aACd,CAAC;SACH,CAAC,CAAC;CACJ;AAEDA,EAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,eAAe,EAA4B,mBAAmB,CAAC,CAAC;;ACvC3G;;;;AAMA,AAWA,cAAe,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" } \ No newline at end of file diff --git a/UI/WebServerResources/js/vendor/angular-ui-router.min.js b/UI/WebServerResources/js/vendor/angular-ui-router.min.js index c5383fd3c..be1b6a313 100644 --- a/UI/WebServerResources/js/vendor/angular-ui-router.min.js +++ b/UI/WebServerResources/js/vendor/angular-ui-router.min.js @@ -4,9 +4,9 @@ * This causes it to be incompatible with plugins that depend on @uirouter/core. * We recommend switching to the ui-router-core.js and ui-router-angularjs.js bundles instead. * For more information, see https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles - * @version v1.0.13 + * @version v1.0.14 * @link https://ui-router.github.io * @license MIT License, http://www.opensource.org/licenses/MIT */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("angular")):"function"==typeof define&&define.amd?define(["exports","angular"],e):e(t["@uirouter/angularjs"]={},t.angular)}(this,function(t,e){"use strict";function r(t){function e(r){return r.length>=n?t.apply(null,r):function(){return e(r.concat([].slice.apply(arguments)))}}var r=[].slice.apply(arguments,[1]),n=t.length;return e(r)}function n(){var t=arguments,e=t.length-1;return function(){for(var r=e,n=t[e].apply(this,arguments);r--;)n=t[r].call(this,n);return n}}function i(){for(var t=[],e=0;e=0&&t.splice(r,1),t}function v(t,e){return t.push(e),e}function m(t){for(var e=[],r=1;r1||o.ctrlKey||o.metaKey||o.shiftKey||t.attr("target"))){var s=r(function(){e.go(u.uiState,u.uiStateParams,u.uiStateOpts)});o.preventDefault();var c=n.isAnchor&&!u.href?1:0;o.preventDefault=function(){c--<=0&&r.cancel(s)}}}}function Et(t,e){return{relative:$t(t)||e.$current,inherit:!0,source:"sref"}}function Ct(t,e,r,n){var i;n&&(i=n.events),te(i)||(i=["click"]);for(var o=t.on?"on":"bind",a=0,u=i;athis._limit&&e.shift(),t},t.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},t.prototype.clear=function(){var t=this._items;return this._items=[],t},t.prototype.size=function(){return this._items.length},t.prototype.remove=function(t){var e=this._items.indexOf(t);return e>-1&&this._items.splice(e,1)[0]},t.prototype.peekTail=function(){return this._items[this._items.length-1]},t.prototype.peekHead=function(){if(this.size())return this._items[0]},t}();!function(t){t[t.SUPERSEDED=2]="SUPERSEDED",t[t.ABORTED=3]="ABORTED",t[t.INVALID=4]="INVALID",t[t.IGNORED=5]="IGNORED",t[t.ERROR=6]="ERROR"}(t.RejectType||(t.RejectType={}));var Ae=0,He=function(){function e(t,e,r){this.$id=Ae++,this.type=t,this.message=e,this.detail=r}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&Ft(e)(t._transitionRejection)},e.superseded=function(r,n){var i=new e(t.RejectType.SUPERSEDED,"The transition has been superseded by a different transition",r);return n&&n.redirected&&(i.redirected=!0),i},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(r){return new e(t.RejectType.INVALID,"This transition is invalid",r)},e.ignored=function(r){return new e(t.RejectType.IGNORED,"The transition was ignored",r)},e.aborted=function(r){return new e(t.RejectType.ABORTED,"The transition has been aborted",r)},e.errored=function(r){return new e(t.RejectType.ERROR,"The transition errored",r)},e.normalize=function(t){return Ft(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var t=function(t){return t&&t.toString!==Object.prototype.toString?t.toString():J(t)}(this.detail),e=this;return"Transition Rejection($id: "+e.$id+" type: "+e.type+", message: "+e.message+", detail: "+t+")"},e.prototype.toPromise=function(){return he(Ve(this),{_transitionRejection:this})},e}(),qe=function(t){var e=t.viewDecl,r=e.$context.name||"(root)";return"[View#"+t.$id+" from '"+r+"' state]: target ui-view: '"+e.$uiViewName+"@"+e.$uiViewContextAnchor+"'"},De=Function.prototype.bind.call(console.log,console),Fe=Kt(console.table)?console.table.bind(console):De.bind(console);!function(t){t[t.RESOLVE=0]="RESOLVE",t[t.TRANSITION=1]="TRANSITION",t[t.HOOK=2]="HOOK",t[t.UIVIEW=3]="UIVIEW",t[t.VIEWCONFIG=4]="VIEWCONFIG"}(t.Category||(t.Category={}));var Ne=At("$id"),Ue=At("router.$id"),Le=function(t){return"Transition #"+Ne(t)+"-"+Ue(t)},Me=function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,r){var n=this;r.length||(r=Object.keys(t.Category).map(function(t){return parseInt(t,10)}).filter(function(t){return!isNaN(t)}).map(function(e){return t.Category[e]})),r.map(j).forEach(function(t){return n._enabled[t]=e})},e.prototype.enable=function(){for(var t=[],e=0;e "+J(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(t.Category.TRANSITION)&&console.log(Le(e)+": Ignored <> "+J(e))},e.prototype.traceHookInvocation=function(e,r,n){if(this.enabled(t.Category.HOOK)){var i=At("traceData.hookType")(n)||"internal",o=At("traceData.context.state.name")(n)||At("traceData.context")(n)||"unknown",a=W(e.registeredHook.callback);console.log(Le(r)+": Hook -> "+i+" context: "+o+", "+M(200,a))}},e.prototype.traceHookResult=function(e,r,n){this.enabled(t.Category.HOOK)&&console.log(Le(r)+": <- Hook returned: "+M(200,J(e)))},e.prototype.traceResolvePath=function(e,r,n){this.enabled(t.Category.RESOLVE)&&console.log(Le(n)+": Resolving "+e+" ("+r+")")},e.prototype.traceResolvableResolved=function(e,r){this.enabled(t.Category.RESOLVE)&&console.log(Le(r)+": <- Resolved "+e+" to: "+M(200,J(e.data)))},e.prototype.traceError=function(e,r){this.enabled(t.Category.TRANSITION)&&console.log(Le(r)+": <- Rejected "+J(r)+", reason: "+e)},e.prototype.traceSuccess=function(e,r){this.enabled(t.Category.TRANSITION)&&console.log(Le(r)+": <- Success "+J(r)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,r,n){void 0===n&&(n=""),this.enabled(t.Category.UIVIEW)&&console.log("ui-view: "+B(30,e)+" "+V(r)+n)},e.prototype.traceUIViewConfigUpdated=function(e,r){this.enabled(t.Category.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+r+"'")},e.prototype.traceUIViewFill=function(e,r){this.enabled(t.Category.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+M(200,r))},e.prototype.traceViewSync=function(e){if(this.enabled(t.Category.VIEWCONFIG)){var r="uiview component fqn",n=e.map(function(t){var e=t.uiView,n=t.viewConfig,i=e&&e.fqn,o=n&&n.viewDecl.$context.name+": ("+n.viewDecl.$name+")";return a={},a[r]=i,a["view config state (view name)"]=o,a;var a}).sort(function(t,e){return(t[r]||"").localeCompare(e[r]||"")});Fe(n)}},e.prototype.traceViewServiceEvent=function(e,r){this.enabled(t.Category.VIEWCONFIG)&&console.log("VIEWCONFIG: "+e+" "+qe(r))},e.prototype.traceViewServiceUIViewEvent=function(e,r){this.enabled(t.Category.VIEWCONFIG)&&console.log("VIEWCONFIG: "+e+" "+V(r))},e}(),Be=new Me;!function(t){t[t.CREATE=0]="CREATE",t[t.BEFORE=1]="BEFORE",t[t.RUN=2]="RUN",t[t.SUCCESS=3]="SUCCESS",t[t.ERROR=4]="ERROR"}(t.TransitionHookPhase||(t.TransitionHookPhase={})),function(t){t[t.TRANSITION=0]="TRANSITION",t[t.STATE=1]="STATE"}(t.TransitionHookScope||(t.TransitionHookScope={}));var Ge=function(){function t(t,e,r,n){this._stateRegistry=t,this._identifier=e,this._identifier=e,this._params=he({},r||{}),this._options=he({},n||{}),this._definition=t.matcher.find(e,this._options.relative)}return t.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},t.prototype.identifier=function(){return this._identifier},t.prototype.params=function(){return this._params},t.prototype.$state=function(){return this._definition},t.prototype.state=function(){return this._definition&&this._definition.self},t.prototype.options=function(){return this._options},t.prototype.exists=function(){return!(!this._definition||!this._definition.self)},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.options().relative;if(!this._definition&&t){var e=t.name?t.name:t;return"Could not resolve '"+this.name()+"' from state '"+e+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},t.prototype.toString=function(){return"'"+this.name()+"'"+J(this.params())},t.prototype.withState=function(e){return new t(this._stateRegistry,e,this._params,this._options)},t.prototype.withParams=function(e,r){void 0===r&&(r=!1);var n=r?e:he({},this._params,e);return new t(this._stateRegistry,this._identifier,n,this._options)},t.prototype.withOptions=function(e,r){void 0===r&&(r=!1);var n=r?e:he({},this._options,e);return new t(this._stateRegistry,this._identifier,this._params,n)},t.isDef=function(t){return t&&t.state&&(Zt(t.state)||Zt(t.state.name))},t}(),We={current:l,transition:null,traceData:{},bind:null},ze=function(){function e(e,r,n,i){var o=this;this.transition=e,this.stateContext=r,this.registeredHook=n,this.options=i,this.isSuperseded=function(){return o.type.hookPhase===t.TransitionHookPhase.RUN&&!o.options.transition.isActive()},this.options=m(i,We),this.type=n.eventType}return e.chain=function(t,e){return t.reduce(function(t,e){return t.then(function(){return e.invokeHook()})},e||ae.$q.when())},e.invokeHooks=function(t,r){for(var n=0;n=e.invokeLimit&&e.deregister()}}},e.prototype.handleHookResult=function(t){var e=this,r=this.getNotCurrentRejection();return r||(ie(t)?t.then(function(t){return e.handleHookResult(t)}):(Be.traceHookResult(t,this.transition,this.options),!1===t?He.aborted("Hook aborted transition").toPromise():Ft(Ge)(t)?He.redirected(t).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var t=this.transition.router;return t._disposed?He.aborted("UIRouter instance #"+t.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?He.aborted().toPromise():this.isSuperseded()?He.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var t=this,e=t.options,r=t.registeredHook;return(At("traceData.hookType")(e)||"internal")+" context: "+(At("traceData.context.state.name")(e)||At("traceData.context")(e)||"unknown")+", "+M(200,z(r.callback))},e.HANDLE_RESULT=function(t){return function(e){return t.handleHookResult(e)}},e.LOG_REJECTED_RESULT=function(t){return function(e){ie(e)&&e.catch(function(e){return t.logError(He.normalize(e))})}},e.LOG_ERROR=function(t){return function(e){return t.logError(e)}},e.REJECT_ERROR=function(t){return function(t){return Ve(t)}},e.THROW_ERROR=function(t){return function(t){throw t}},e}(),Je=function(){function e(t,e,r,n,i,o){void 0===o&&(o={}),this.tranSvc=t,this.eventType=e,this.callback=r,this.matchCriteria=n,this.removeHookFromRegistry=i,this.invokeCount=0,this._deregistered=!1,this.priority=o.priority||0,this.bind=o.bind||null,this.invokeLimit=o.invokeLimit}return e.prototype._matchingNodes=function(t,e){if(!0===e)return t;var r=t.filter(function(t){return A(t.state,e)});return r.length?r:null},e.prototype._getDefaultMatchCriteria=function(){return b(this.tranSvc._pluginapi._getPathTypes(),function(){return!0})},e.prototype._getMatchingNodes=function(e){var r=this,n=he(this._getDefaultMatchCriteria(),this.matchCriteria);return $e(this.tranSvc._pluginapi._getPathTypes()).reduce(function(i,o){var a=o.scope===t.TransitionHookScope.STATE,u=e[o.name]||[],s=a?u:[P(u)];return i[o.name]=r._matchingNodes(s,n[o.name]),i},{})},e.prototype.matches=function(t){var e=this._getMatchingNodes(t);return $e(e).every(f)?e:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}(),Qe=function(){function e(t){this.transition=t}return e.prototype.buildHooksForPhase=function(t){var e=this;return this.transition.router.transitionService._pluginapi._getEvents(t).map(function(t){return e.buildHooks(t)}).reduce(Re,[]).filter(f)},e.prototype.buildHooks=function(e){var r=this.transition,n=r.treeChanges(),i=this.getMatchingHooks(e,n);if(!i)return[];var o={transition:r,current:r.options().current};return i.map(function(i){return i.matches(n)[e.criteriaMatchPath.name].map(function(n){var a=he({bind:i.bind,traceData:{hookType:e.name,context:n}},o),u=e.criteriaMatchPath.scope===t.TransitionHookScope.STATE?n.state.self:null,s=new ze(r,u,i,a);return{hook:i,node:n,transitionHook:s}})}).reduce(Re,[]).sort(q(e.reverseSort)).map(function(t){return t.transitionHook})},e.prototype.getMatchingHooks=function(e,r){var n=e.hookPhase===t.TransitionHookPhase.CREATE,i=this.transition.router.transitionService;return(n?[i]:[this.transition,i]).map(function(t){return t.getHooks(e.name)}).filter(ke(te,"broken event named: "+e.name)).reduce(Re,[]).filter(function(t){return t.matches(r)})},e}(),Ke=function(){function t(t){this.pattern=/.*/,this.inherit=!0,he(this,t)}return t.prototype.is=function(t,e){return!0},t.prototype.encode=function(t,e){return t},t.prototype.decode=function(t,e){return t},t.prototype.equals=function(t,e){return t==e},t.prototype.$subPattern=function(){var t=this.pattern.toString();return t.substr(1,t.length-2)},t.prototype.toString=function(){return"{ParamType:"+this.name+"}"},t.prototype.$normalize=function(t){return this.is(t)?t:this.decode(t)},t.prototype.$asArray=function(t,e){if(!t)return this;if("auto"===t&&!e)throw new Error("'auto' array mode is for query parameters only");return new D(this,t)},t}(),Ye=Object.prototype.hasOwnProperty,Ze=function(t){return 0===["value","type","squash","array","dynamic"].filter(Ye.bind(t||{})).length};!function(t){t[t.PATH=0]="PATH",t[t.SEARCH=1]="SEARCH",t[t.CONFIG=2]="CONFIG"}(t.DefType||(t.DefType={}));var Xe=function(){function e(e,r,n,i,o){r=N(n=F(n),r,i,e,o.paramTypes);var a=function(){var r={array:i===t.DefType.SEARCH&&"auto"},o=e.match(/\[\]$/)?{array:!0}:{};return he(r,o,n).array}();r=a?r.$asArray(a,i===t.DefType.SEARCH):r;var u=void 0!==n.value||i===t.DefType.SEARCH,s=zt(n.dynamic)?!!n.dynamic:!!r.dynamic,c=zt(n.raw)?!!n.raw:!!r.raw,f=U(n,u,o.defaultSquashPolicy()),l=L(n,a,u,f),h=zt(n.inherit)?!!n.inherit:!!r.inherit;he(this,{id:e,type:r,location:i,isOptional:u,dynamic:s,raw:c,squash:f,replace:l,inherit:h,array:a,config:n})}return e.values=function(t,e){void 0===e&&(e={});for(var r={},n=0,i=t;n20)throw new Error("Too many consecutive Transition redirects (20+)");var n={redirectedFrom:this,source:"redirect"};"url"===this.options().source&&!1!==t.options().location&&(n.location="replace");var i=he({},this.options(),t.options(),n);t=t.withOptions(i,!0);var o=this.router.transitionService.create(this._treeChanges.from,t),a=this._treeChanges.entering,u=o._treeChanges.entering;return er.matching(u,a,er.nonDynamicParams).filter(Ht(function(t){return function(e){return t&&e.state.includes[t.name]}}(t.options().reloadState))).forEach(function(t,e){t.resolvables=a[e].resolvables}),o},e.prototype._changedParams=function(){var t=this._treeChanges;if(!(this._options.reload||t.exiting.length||t.entering.length||t.to.length!==t.from.length||C(t.to,t.from).map(function(t){return t[0].state!==t[1].state}).reduce(be,!1))){var e=t.to.map(function(t){return t.paramSchema}),r=[t.to,t.from].map(function(t){return t.map(function(t){return t.paramValues})});return C(e,r[0],r[1]).map(function(t){var e=t[0],r=t[1],n=t[2];return Xe.changed(e,r,n)}).reduce(Re,[])}},e.prototype.dynamic=function(){var t=this._changedParams();return!!t&&t.map(function(t){return t.dynamic}).reduce(be,!1)},e.prototype.ignored=function(){return!!this._ignoredReason()},e.prototype._ignoredReason=function(){var t=this.router.globals.transition,e=this._options.reloadState,r=function(t,r){if(t.length!==r.length)return!1;var n=er.matching(t,r);return t.length===n.filter(function(t){return!e||!t.state.includes[e.name]}).length},n=this.treeChanges(),i=t&&t.treeChanges();return i&&r(i.to,n.to)&&r(i.exiting,n.exiting)?"SameAsPending":0===n.exiting.length&&0===n.entering.length&&r(n.from,n.to)?"SameAsCurrent":void 0},e.prototype.run=function(){var e=this,r=ze.runAllHooks,n=function(t){return e._hookBuilder.buildHooksForPhase(t)},i=n(t.TransitionHookPhase.BEFORE);return ze.invokeHooks(i,function(){var t=e.router.globals;return t.lastStartedTransitionId=e.$id,t.transition=e,t.transitionHistory.enqueue(e),Be.traceTransitionStart(e),ae.$q.when(void 0)}).then(function(){var e=n(t.TransitionHookPhase.RUN);return ze.invokeHooks(e,function(){return ae.$q.when(void 0)})}).then(function(){Be.traceSuccess(e.$to(),e),e.success=!0,e._deferred.resolve(e.to()),r(n(t.TransitionHookPhase.SUCCESS))},function(i){Be.traceError(i,e),e.success=!1,e._deferred.reject(i),e._error=i,r(n(t.TransitionHookPhase.ERROR))}),this.promise},e.prototype.valid=function(){return!this.error()||void 0!==this.success},e.prototype.abort=function(){Wt(this.success)&&(this._aborted=!0)},e.prototype.error=function(){var t=this.$to();if(t.self.abstract)return"Cannot transition to abstract state '"+t.name+"'";var e=t.parameters(),r=this.params(),n=e.filter(function(t){return!t.validates(r[t.id])});return n.length?"Param values not valid for state '"+t.name+"'. Invalid params: [ "+n.map(function(t){return t.id}).join(", ")+" ]":!1===this.success?this._error:void 0},e.prototype.toString=function(){var t=this.from(),e=this.to(),r=function(t){return null!==t["#"]&&void 0!==t["#"]?t:_(t,["#"])};return"Transition#"+this.$id+"( '"+(Xt(t)?t.name:t)+"'"+J(r(this._treeChanges.from.map(Vt("paramValues")).reduce(_e,{})))+" -> "+(this.valid()?"":"(X) ")+"'"+(Xt(e)?e.name:e)+"'"+J(r(this.params()))+" )"},e.diToken=e,e}(),pr=null,dr=function(t){var e=He.isRejectionPromise;return(pr=pr||s([[Ht(zt),Ut("undefined")],[Jt,Ut("null")],[ie,Ut("[Promise]")],[e,function(t){return t._transitionRejection.toString()}],[Ft(He),u("toString")],[Ft(hr),u("toString")],[Ft(nr),u("toString")],[c,W],[Ut(!0),f]]))(t)},vr=function(t){return function(e){if(!e)return["",""];var r=e.indexOf(t);return-1===r?[e,""]:[e.substr(0,r),e.substr(r+1)]}},mr=new RegExp("^(?:[a-z]+:)?//[^/]+/"),yr=function(t){return t.replace(/\/[^/]*$/,"")},gr=vr("#"),_r=vr("?"),wr=vr("="),$r=function(t){return t?t.replace(/^#/,""):""},Sr=function(){function t(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=g(t.prototype,["hash","string","query","path","int","bool","date","json","any"]);this.types=de(b(this.defaultTypes,function(t,e){return new Ke(he({name:e},t))}),{})}return t.prototype.dispose=function(){this.types={}},t.prototype.type=function(t,e,r){if(!zt(e))return this.types[t];if(this.types.hasOwnProperty(t))throw new Error("A type named '"+t+"' has already been defined.");return this.types[t]=new Ke(he({name:t},e)),r&&(this.typeQueue.push({name:t,def:r}),this.enqueue||this._flushTypeQueue()),this},t.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var t=this.typeQueue.shift();if(t.pattern)throw new Error("You cannot override a type's .pattern at runtime.");he(this.types[t.name],ae.$injector.invoke(t.def))}},t}();!function(){var t=function(t){var e=function(t){return null!=t?t.toString():t},r={encode:e,decode:e,is:Ft(String),pattern:/.*/,equals:function(t,e){return t==e}};return he({},r,t)};he(Sr.prototype,{string:t({}),path:t({pattern:/[^/]*/}),query:t({}),hash:t({inherit:!1}),int:t({decode:function(t){return parseInt(t,10)},is:function(t){return!Qt(t)&&this.decode(t.toString())===t},pattern:/-?\d+/}),bool:t({encode:function(t){return t&&1||0},decode:function(t){return 0!==parseInt(t,10)},is:Ft(Boolean),pattern:/0|1/}),date:t({encode:function(t){return this.is(t)?[t.getFullYear(),("0"+(t.getMonth()+1)).slice(-2),("0"+t.getDate()).slice(-2)].join("-"):void 0},decode:function(t){if(this.is(t))return t;var e=this.capture.exec(t);return e?new Date(e[1],e[2]-1,e[3]):void 0},is:function(t){return t instanceof Date&&!isNaN(t.valueOf())},equals:function(t,e){return["getFullYear","getMonth","getDate"].reduce(function(r,n){return r&&t[n]()===e[n]()},!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:t({encode:fe,decode:ce,is:Ft(Object),equals:pe,pattern:/[^/]*/}),any:t({encode:f,decode:f,is:function(){return!0},equals:pe})})}();var br,Rr=function(){function t(t){void 0===t&&(t={}),he(this,t)}return t.prototype.$inherit=function(t,e,r){var n,i=y(e,r),o={},a=[];for(var u in i)if(i[u]&&i[u].params&&(n=Object.keys(i[u].params)).length)for(var s in n)a.indexOf(n[s])>=0||(a.push(n[s]),o[n[s]]=this[n[s]]);return he({},o,t)},t}(),Er=function(t){if(!Zt(t))return!1;var e="^"===t.charAt(0);return{val:e?t.substring(1):t,root:e}},Cr=function(t,e){return function(r){var n=r;n&&n.url&&n.name&&n.name.match(/\.\*\*$/)&&(n.url+="{remainder:any}");var i=Er(n.url),o=r.parent,a=i?t.compile(i.val,{params:r.params||{},paramMap:function(t,e){return!1===n.reloadOnSearch&&e&&(t=he(t||{},{dynamic:!0})),t}}):n.url;if(!a)return null;if(!t.isMatcher(a))throw new Error("Invalid url '"+a+"' in state '"+r+"'");return i&&i.root?a:(o&&o.navigable||e()).url.append(a)}},Tr=function(t){return function(e){return!t(e)&&e.url?e:e.parent?e.parent.navigable:null}},Pr=function(t){return function(e){var r=e.url&&e.url.parameters({inherit:!1})||[],n=$e(we(_(e.params||{},r.map(Vt("id"))),function(e,r){return t.fromConfig(r,null,e)}));return r.concat(n).map(function(t){return[t.id,t]}).reduce(T,{})}},kr=function(){function t(t,e){this.matcher=t;var r=this,n=function(){return t.find("")},i=function(t){return""===t.name};this.builders={name:[Y],self:[Z],parent:[function(e){return i(e)?null:t.find(r.parentName(e))||n()}],data:[X],url:[Cr(e,n)],navigable:[Tr(i)],params:[Pr(e.paramFactory)],views:[],path:[tt],includes:[et],resolvables:[rt]}}return t.prototype.builder=function(t,e){var r=this.builders,n=r[t]||[];return Zt(t)&&!zt(e)?n.length>1?n:n[0]:Zt(t)&&Kt(e)?(r[t]=n,r[t].push(e),function(){return r[t].splice(r[t].indexOf(e,1))&&null}):void 0},t.prototype.build=function(t){var e=this,r=e.matcher,n=e.builders,i=this.parentName(t);if(i&&!r.find(i,void 0,!1))return null;for(var o in n)if(n.hasOwnProperty(o)){var a=n[o].reduce(function(t,e){return function(r){return e(r,t)}},l);t[o]=a(t)}return t},t.prototype.parentName=function(t){var e=t.name||"",r=e.split(".");if("**"===r.pop()&&r.pop(),r.length){if(t.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+e+")");return r.join(".")}return t.parent?Zt(t.parent)?t.parent:t.parent.name:""},t.prototype.name=function(t){var e=t.name;if(-1!==e.indexOf(".")||!t.parent)return e;var r=Zt(t.parent)?t.parent:t.parent.name;return r?r+"."+e:e},t}(),Or=function(){function t(t){this._states=t}return t.prototype.isRelative=function(t){return 0===(t=t||"").indexOf(".")||0===t.indexOf("^")},t.prototype.find=function(t,e,r){if(void 0===r&&(r=!0),t||""===t){var n=Zt(t),i=n?t:t.name;this.isRelative(i)&&(i=this.resolvePath(i,e));var o=this._states[i];if(o&&(n||!(n||o!==t&&o.self!==t)))return o;if(n&&r){var a=$e(this._states).filter(function(t){return t.__stateObjectCache.nameGlob&&t.__stateObjectCache.nameGlob.matches(i)});return a.length>1&&console.log("stateMatcher.find: Found multiple matches for "+i+" using glob: ",a.map(function(t){return t.name})),a[0]}}},t.prototype.resolvePath=function(t,e){if(!e)throw new Error("No reference point given for path '"+t+"'");for(var r=this.find(e),n=t.split("."),i=n.length,o=0,a=r;o0;){var c=r.shift(),f=c.name,l=i.build(c),h=a.indexOf(c);if(l){var p=s(f);if(p&&p.name===f)throw new Error("State '"+f+"' is already defined");var d=s(f+".**");d&&this.$registry.deregister(d),n[f]=c,this.attachRoute(c),h>=0&&a.splice(h,1),o.push(c)}else{var v=u[f];if(u[f]=r.length,h>=0&&v===r.length)return r.push(c),n;h<0&&a.push(c),r.push(c)}}return o.length&&this.listeners.forEach(function(t){return t("registered",o.map(function(t){return t.self}))}),n},t.prototype.attachRoute=function(t){!t.abstract&&t.url&&this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(t))},t}(),Ir=function(){function t(t){this._router=t,this.states={},this.listeners=[],this.matcher=new Or(this.states),this.builder=new kr(this.matcher,t.urlMatcherFactory),this.stateQueue=new xr(this,t.urlRouter,this.states,this.builder,this.listeners),this._registerRoot()}return t.prototype._registerRoot=function(){var t={name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0};(this._root=this.stateQueue.register(t)).navigable=null},t.prototype.dispose=function(){var t=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach(function(e){return t.get(e)&&t.deregister(e)})},t.prototype.onStatesChanged=function(t){return this.listeners.push(t),function(){me(this.listeners)(t)}.bind(this)},t.prototype.root=function(){return this._root},t.prototype.register=function(t){return this.stateQueue.register(t)},t.prototype._deregisterTree=function(t){var e=this,r=this.get().map(function(t){return t.$$state()}),n=function(t){var e=r.filter(function(e){return-1!==t.indexOf(e.parent)});return 0===e.length?e:e.concat(n(e))},i=n([t]),o=[t].concat(i).reverse();return o.forEach(function(t){var r=e._router.urlRouter;r.rules().filter(jt("state",t)).forEach(r.removeRule.bind(r)),delete e.states[t.name]}),o},t.prototype.deregister=function(t){var e=this.get(t);if(!e)throw new Error("Can't deregister state; not found: "+t);var r=this._deregisterTree(e.$$state());return this.listeners.forEach(function(t){return t("deregistered",r.map(function(t){return t.self}))}),r},t.prototype.get=function(t,e){var r=this;if(0===arguments.length)return Object.keys(this.states).map(function(t){return r.states[t].self});var n=this.matcher.find(t,e);return n&&n.self||null},t.prototype.decorator=function(t,e){return this.builder.builder(t,e)},t}(),Vr=function(t,e,r){return t[e]=t[e]||r()},jr=Q("/"),Ar=function(){function e(t,r,n,i){var o=this;this.config=i,this._cache={path:[this]},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.pattern=t,this.config=m(this.config,{params:{},strict:!0,caseInsensitive:!1,paramMap:f});for(var a,u,s,c=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,h=[],p=0,d=function(r){if(!e.nameValidator.test(r))throw new Error("Invalid parameter name '"+r+"' in pattern '"+t+"'");if(S(o._params,jt("id",r)))throw new Error("Duplicate parameter name '"+r+"' in pattern '"+t+"'")},v=function(e,n){var i=e[2]||e[3],a=n?e[4]:e[4]||("*"===e[1]?"[\\s\\S]*":null);return{id:i,regexp:a,cfg:o.config.params[i],segment:t.substring(p,e.index),type:a?r.type(a)||function(t){return de(r.type(n?"query":"path"),{pattern:new RegExp(t,o.config.caseInsensitive?"i":void 0)})}(a):null}};(a=c.exec(t))&&!((u=v(a,!1)).segment.indexOf("?")>=0);)d(u.id),this._params.push(n.fromPath(u.id,u.type,this.config.paramMap(u.cfg,!1))),this._segments.push(u.segment),h.push([u.segment,P(this._params)]),p=c.lastIndex;var y=(s=t.substring(p)).indexOf("?");if(y>=0){var g=s.substring(y);if(s=s.substring(0,y),g.length>0)for(p=0;a=l.exec(g);)d((u=v(a,!0)).id),this._params.push(n.fromSearch(u.id,u.type,this.config.paramMap(u.cfg,!0))),p=c.lastIndex}this._segments.push(s),this._compiled=h.map(function(t){return nt.apply(null,t)}).concat(nt(s))}return e.encodeDashes=function(t){return encodeURIComponent(t).replace(/-/g,function(t){return"%5C%"+t.charCodeAt(0).toString(16).toUpperCase()})},e.pathSegmentsAndParams=function(e){return C(e._segments,e._params.filter(function(e){return e.location===t.DefType.PATH}).concat(void 0)).reduce(Re,[]).filter(function(t){return""!==t&&zt(t)})},e.queryParams=function(e){return e._params.filter(function(e){return e.location===t.DefType.SEARCH})},e.compare=function(t,r){var n=function(t){return t._cache.segments=t._cache.segments||t._cache.path.map(e.pathSegmentsAndParams).reduce(Re,[]).reduce(K,[]).map(function(t){return Zt(t)?jr(t):t}).reduce(Re,[])},i=function(t){return t._cache.weights=t._cache.weights||n(t).map(function(t){return"/"===t?1:Zt(t)?2:t instanceof Xe?3:void 0})},o=i(t),a=i(r);!function(t,e,r){for(var n=Math.max(t.length,e.length);t.lengthn.weight?o:n}return n},t.prototype.sync=function(t){if(!t||!t.defaultPrevented){var e=this._router,r=e.urlService,n=e.stateService,i={path:r.path(),search:r.search(),hash:r.hash()},o=this.match(i);s([[Zt,function(t){return r.url(t,!0)}],[Ge.isDef,function(t){return n.go(t.state,t.params,t.options)}],[Ft(Ge),function(t){return n.go(t.state(),t.params(),t.options())}]])(o&&o.rule.handler(o.match,i,e))}},t.prototype.listen=function(t){var e=this;if(!1!==t)return this._stopFn=this._stopFn||this._router.urlService.onChange(function(t){return e.sync(t)});this._stopFn&&this._stopFn(),delete this._stopFn},t.prototype.update=function(t){var e=this._router.locationService;t?this.location=e.url():e.url()!==this.location&&e.url(this.location,!0)},t.prototype.push=function(t,e,r){var n=r&&!!r.replace;this._router.urlService.url(t.format(e||{}),n)},t.prototype.href=function(t,e,r){var n=t.format(e);if(null==n)return null;r=r||{absolute:!1};var i=this._router.urlService.config,o=i.html5Mode();if(o||null===n||(n="#"+i.hashPrefix()+n),n=it(n,o,r.absolute,i.baseHref()),!r.absolute||!n)return n;var a=!o&&n?"/":"",u=i.port(),s=80===u||443===u?"":":"+u;return[i.protocol(),"://",i.host(),s,a,n].join("")},t.prototype.rule=function(t){var e=this;if(!qr.isUrlRule(t))throw new Error("invalid rule");return t.$id=this._id++,t.priority=t.priority||0,this._rules.push(t),this._sorted=!1,function(){return e.removeRule(t)}},t.prototype.removeRule=function(t){me(this._rules,t)},t.prototype.rules=function(){return this.ensureSorted(),this._rules.slice()},t.prototype.otherwise=function(t){var e=ot(t);this._otherwiseFn=this.urlRuleFactory.create(Ut(!0),e),this._sorted=!1},t.prototype.initial=function(t){var e=ot(t);this.rule(this.urlRuleFactory.create(function(t,e){return 0===e.globals.transitionHistory.size()&&!!/^\/?$/.exec(t.path)},e))},t.prototype.when=function(t,e,r){var n=this.urlRuleFactory.create(t,e);return zt(r&&r.priority)&&(n.priority=r.priority),this.rule(n),n},t.prototype.deferIntercept=function(t){void 0===t&&(t=!0),this.interceptDeferred=t},t}(),Br=function(){function t(){var t=this;this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return me(t._listeners,e)}}}}return t.normalizeUIViewTarget=function(t,e){void 0===e&&(e="");var r=e.split("@"),n=r[0]||"$default",i=Zt(r[1])?r[1]:"^",o=/^(\^(?:\.\^)*)\.(.*$)/.exec(n);return o&&(i=o[1],n=o[2]),"!"===n.charAt(0)&&(n=n.substr(1),i=""),/^(\^(?:\.\^)*)$/.exec(i)?i=i.split(".").reduce(function(t,e){return t.parent},t).name:"."===i&&(i=t.name),{uiViewName:n,uiViewContextAnchor:i}},t.prototype._rootViewContext=function(t){return this._rootContext=t||this._rootContext},t.prototype._viewConfigFactory=function(t,e){this._viewConfigFactories[t]=e},t.prototype.createViewConfig=function(t,e){var r=this._viewConfigFactories[e.$type];if(!r)throw new Error("ViewService: No view config factory registered for type "+e.$type);var n=r(t,e);return te(n)?n:[n]},t.prototype.deactivateViewConfig=function(t){Be.traceViewServiceEvent("<- Removing",t),me(this._viewConfigs,t)},t.prototype.activateViewConfig=function(t){Be.traceViewServiceEvent("-> Registering",t),this._viewConfigs.push(t)},t.prototype.sync=function(){function e(t){for(var e=t.viewDecl.$context,r=0;++r&&e.parent;)e=e.parent;return r}var n=this,i=this._uiViews.map(function(t){return[t.fqn,t]}).reduce(T,{}),o=r(function(t,e,r,n){return e*(t(r)-t(n))}),a=this._uiViews.sort(o(function(t){var e=function(t){return t&&t.parent?e(t.parent)+1:1};return 1e4*t.fqn.split(".").length+e(t.creationContext)},1)).map(function(r){var a=n._viewConfigs.filter(t.matches(i,r));return a.length>1&&a.sort(o(e,-1)),{uiView:r,viewConfig:a[0]}}),u=a.map(function(t){return t.viewConfig}),s=this._viewConfigs.filter(function(t){return!ve(u,t)}).map(function(t){return{uiView:void 0,viewConfig:t}});a.forEach(function(t){-1!==n._uiViews.indexOf(t.uiView)&&t.uiView.configUpdated(t.viewConfig)});var c=a.concat(s);this._listeners.forEach(function(t){return t(c)}),Be.traceViewSync(c)},t.prototype.registerUIView=function(t){Be.traceViewServiceUIViewEvent("-> Registering",t);var e=this._uiViews;return e.filter(function(e){return e.fqn===t.fqn&&e.$type===t.$type}).length&&Be.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",t),e.push(t),this.sync(),function(){-1!==e.indexOf(t)?(Be.traceViewServiceUIViewEvent("<- Deregistering",t),me(e)(t)):Be.traceViewServiceUIViewEvent("Tried removing non-registered uiView",t)}},t.prototype.available=function(){return this._uiViews.map(Vt("fqn"))},t.prototype.active=function(){return this._uiViews.filter(Vt("$config")).map(Vt("name"))},t.matches=function(t,e){return function(r){if(e.$type!==r.viewDecl.$type)return!1;var n=r.viewDecl,i=n.$uiViewName.split("."),o=e.fqn.split(".");if(!pe(i,o.slice(0-i.length)))return!1;var a=1-i.length||void 0,u=o.slice(0,a).join("."),s=t[u].creationContext;return n.$uiViewContextAnchor===(s&&s.name)}},t}(),Gr=function(){function t(){this.params=new Rr,this.lastStartedTransitionId=-1,this.transitionHistory=new je([],1),this.successfulTransitions=new je([],1)}return t.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},t}(),Wr=function(t){return t.reduce(function(t,e){return t[e]=oe(e),t},{dispose:l})},zr=["url","path","search","hash","onChange"],Jr=["port","protocol","host","baseHref","html5Mode","hashPrefix"],Qr=["type","caseInsensitive","strictMode","defaultSquashPolicy"],Kr=["sort","when","initial","otherwise","rules","rule","removeRule"],Yr=["deferIntercept","listen","sync","match"],Zr=function(){function t(t,e){void 0===e&&(e=!0),this.router=t,this.rules={},this.config={};var r=function(){return t.locationService};h(r,this,r,zr,e);var n=function(){return t.locationConfig};h(n,this.config,n,Jr,e);var i=function(){return t.urlMatcherFactory};h(i,this.config,i,Qr);var o=function(){return t.urlRouter};h(o,this.rules,o,Kr),h(o,this,o,Yr)}return t.prototype.url=function(t,e,r){},t.prototype.path=function(){},t.prototype.search=function(){},t.prototype.hash=function(){},t.prototype.onChange=function(t){},t.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},t.prototype.dispose=function(){},t.prototype.sync=function(t){},t.prototype.listen=function(t){},t.prototype.deferIntercept=function(t){},t.prototype.match=function(t){},t.locationServiceStub=Wr(zr),t.locationConfigStub=Wr(Jr),t}(),Xr=0,tn=function(){function t(t,e){void 0===t&&(t=Zr.locationServiceStub),void 0===e&&(e=Zr.locationConfigStub),this.locationService=t,this.locationConfig=e,this.$id=Xr++,this._disposed=!1,this._disposables=[],this.trace=Be,this.viewService=new Br,this.transitionService=new xn(this),this.globals=new Gr,this.urlMatcherFactory=new Hr,this.urlRouter=new Mr(this),this.stateRegistry=new Ir(this),this.stateService=new In(this),this.urlService=new Zr(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlRouter),this.disposable(t),this.disposable(e)}return t.prototype.disposable=function(t){this._disposables.push(t)},t.prototype.dispose=function(t){var e=this;t&&Kt(t.dispose)?t.dispose(this):(this._disposed=!0,this._disposables.slice().forEach(function(t){try{"function"==typeof t.dispose&&t.dispose(e),me(e._disposables,t)}catch(t){}}))},t.prototype.plugin=function(t,e){void 0===e&&(e={});var r=new t(this,e);if(!r.name)throw new Error("Required property `name` missing on plugin: "+r);return this._disposables.push(r),this._plugins[r.name]=r},t.prototype.getPlugin=function(t){return t?this._plugins[t]:$e(this._plugins)},t}(),en=function(t){return t.onCreate({},at)},rn=function(t){function e(e){if(e)return e instanceof Ge?e:Zt(e)?n.target(e,t.params(),t.options()):e.state||e.params?n.target(e.state||t.to(),e.params||t.params(),t.options()):void 0}var r=t.to().redirectTo;if(r){var n=t.router.stateService;return Kt(r)?ae.$q.when(r(t)).then(e):e(r)}},nn=function(t){return t.onStart({to:function(t){return!!t.redirectTo}},rn)},on=ut("onExit"),an=function(t){return t.onExit({exiting:function(t){return!!t.onExit}},on)},un=ut("onRetain"),sn=function(t){return t.onRetain({retained:function(t){return!!t.onRetain}},un)},cn=ut("onEnter"),fn=function(t){return t.onEnter({entering:function(t){return!!t.onEnter}},cn)},ln=function(t){return new cr(t.treeChanges().to).resolvePath("EAGER",t).then(l)},hn=function(t){return t.onStart({},ln,{priority:1e3})},pn=function(t,e){return new cr(t.treeChanges().to).subContext(e.$$state()).resolvePath("LAZY",t).then(l)},dn=function(t){return t.onEnter({entering:Ut(!0)},pn,{priority:1e3})},vn=function(t){return new cr(t.treeChanges().to).resolvePath("LAZY",t).then(l)},mn=function(t){return t.onFinish({},vn,{priority:1e3})},yn=function(t){var e=ae.$q,r=t.views("entering");if(r.length)return e.all(r.map(function(t){return e.when(t.load())})).then(l)},gn=function(t){return t.onFinish({},yn)},_n=function(t){var e=t.views("entering"),r=t.views("exiting");if(e.length||r.length){var n=t.router.viewService;r.forEach(function(t){return n.deactivateViewConfig(t)}),e.forEach(function(t){return n.activateViewConfig(t)}),n.sync()}},wn=function(t){return t.onSuccess({},_n)},$n=function(t){var e=t.router.globals,r=function(){e.transition===t&&(e.transition=null)};t.onSuccess({},function(){e.successfulTransitions.enqueue(t),e.$current=t.$to(),e.current=e.$current.self,k(t.params(),e.params)},{priority:1e4}),t.promise.then(r,r)},Sn=function(t){return t.onCreate({},$n)},bn=function(t){var e=t.options(),r=t.router.stateService,n=t.router.urlRouter;if("url"!==e.source&&e.location&&r.$current.navigable){var i={replace:"replace"===e.location};n.push(r.$current.navigable.url,r.params,i)}n.update(!0)},Rn=function(t){return t.onSuccess({},bn,{priority:9999})},En=function(t){var e=t.router,r=t.entering().filter(function(t){return!!t.$$state().lazyLoad}).map(function(e){return st(t,e)});return ae.$q.all(r).then(function(){if("url"!==t.originalTransition().options().source){var r=t.targetState();return e.stateService.target(r.identifier(),r.params(),r.options())}var n=e.urlService,i=n.match(n.parts()),o=i&&i.rule;if(o&&"STATE"===o.type){var a=o.state,u=i.match;return e.stateService.target(a,u,t.options())}e.urlService.sync()})},Cn=function(t){return t.onBefore({entering:function(t){return!!t.lazyLoad}},En)},Tn=function(){return function(t,e,r,n,i,o,a,u){void 0===i&&(i=!1),void 0===o&&(o=ze.HANDLE_RESULT),void 0===a&&(a=ze.REJECT_ERROR),void 0===u&&(u=!1),this.name=t,this.hookPhase=e,this.hookOrder=r,this.criteriaMatchPath=n,this.reverseSort=i,this.getResultHandler=o,this.getErrorHandler=a,this.synchronous=u}}(),Pn=function(t){return t.onBefore({},ct,{priority:-9999})},kn=function(t){return t.onBefore({},ft,{priority:-1e4})},On={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,custom:{},current:function(){return null},source:"unknown"},xn=function(){function e(t){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=t,this.$view=t.viewService,this._deregisterHookFns={},this._pluginapi=h(Ut(this),{},Ut(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks()}return e.prototype.onCreate=function(t,e,r){},e.prototype.onBefore=function(t,e,r){},e.prototype.onStart=function(t,e,r){},e.prototype.onExit=function(t,e,r){},e.prototype.onRetain=function(t,e,r){},e.prototype.onEnter=function(t,e,r){},e.prototype.onFinish=function(t,e,r){},e.prototype.onSuccess=function(t,e,r){},e.prototype.onError=function(t,e,r){},e.prototype.dispose=function(t){$e(this._registeredHooks).forEach(function(t){return t.forEach(function(e){e._deregistered=!0,me(t,e)})})},e.prototype.create=function(t,e){return new hr(t,e,this._router)},e.prototype._defineCoreEvents=function(){var e=t.TransitionHookPhase,r=ze,n=this._criteriaPaths;this._defineEvent("onCreate",e.CREATE,0,n.to,!1,r.LOG_REJECTED_RESULT,r.THROW_ERROR,!0),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,!1,r.LOG_REJECTED_RESULT,r.LOG_ERROR,!0),this._defineEvent("onError",e.ERROR,0,n.to,!1,r.LOG_REJECTED_RESULT,r.LOG_ERROR,!0)},e.prototype._defineCorePaths=function(){var e=t.TransitionHookScope.STATE,r=t.TransitionHookScope.TRANSITION;this._definePathType("to",r),this._definePathType("from",r),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(t,e,r,n,i,o,a,u){void 0===i&&(i=!1),void 0===o&&(o=ze.HANDLE_RESULT),void 0===a&&(a=ze.REJECT_ERROR),void 0===u&&(u=!1);var s=new Tn(t,e,r,n,i,o,a,u);this._eventTypes.push(s),H(this,this,s)},e.prototype._getEvents=function(t){return(zt(t)?this._eventTypes.filter(function(e){return e.hookPhase===t}):this._eventTypes.slice()).sort(function(t,e){var r=t.hookPhase-e.hookPhase;return 0===r?t.hookOrder-e.hookOrder:r})},e.prototype._definePathType=function(t,e){this._criteriaPaths[t]={name:t,scope:e}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(t){return this._registeredHooks[t]},e.prototype._registerCoreTransitionHooks=function(){var t=this._deregisterHookFns;t.addCoreResolves=en(this),t.ignored=Pn(this),t.invalid=kn(this),t.redirectTo=nn(this),t.onExit=an(this),t.onRetain=sn(this),t.onEnter=fn(this),t.eagerResolve=hn(this),t.lazyResolve=dn(this),t.resolveAll=mn(this),t.loadViews=gn(this),t.activateViews=wn(this),t.updateGlobals=Sn(this),t.updateUrl=Rn(this),t.lazyLoad=Cn(this)},e}(),In=function(){function e(t){this.router=t,this.invalidCallbacks=[],this._defaultErrorHandler=function(t){t instanceof Error&&t.stack?(console.error(t),console.error(t.stack)):t instanceof He?(console.error(t.toString()),t.detail&&t.detail.stack&&console.error(t.detail.stack)):console.error(t)};var r=["current","$current","params","transition"],n=Object.keys(e.prototype).filter(Ht(ve(r)));h(Ut(e.prototype),this,Ut(this),n)}return Object.defineProperty(e.prototype,"transition",{get:function(){return this.router.globals.transition},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"params",{get:function(){return this.router.globals.params},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.router.globals.current},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"$current",{get:function(){return this.router.globals.$current},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this.defaultErrorHandler(l),this.invalidCallbacks=[]},e.prototype._handleInvalidTargetState=function(t,e){function r(){var t=s.dequeue();return void 0===t?He.invalid(e.error()).toPromise():ae.$q.when(t(e,i,c)).then(f).then(function(t){return t||r()})}var n=this,i=er.makeTargetState(this.router.stateRegistry,t),o=this.router.globals,a=function(){return o.transitionHistory.peekTail()},u=a(),s=new je(this.invalidCallbacks.slice()),c=new cr(t).injector(),f=function(t){if(t instanceof Ge){var e=t;return(e=n.target(e.identifier(),e.params(),e.options())).valid()?a()!==u?He.superseded().toPromise():n.transitionTo(e.identifier(),e.params(),e.options()):He.invalid(e.error()).toPromise()}};return r()},e.prototype.onInvalid=function(t){return this.invalidCallbacks.push(t),function(){me(this.invalidCallbacks)(t)}.bind(this)},e.prototype.reload=function(t){return this.transitionTo(this.current,this.params,{reload:!zt(t)||t,inherit:!1,notify:!1})},e.prototype.go=function(t,e,r){var n=m(r,{relative:this.$current,inherit:!0},On);return this.transitionTo(t,e,n)},e.prototype.target=function(t,e,r){if(void 0===r&&(r={}),Xt(r.reload)&&!r.reload.name)throw new Error("Invalid reload state object");var n=this.router.stateRegistry;if(r.reloadState=!0===r.reload?n.root():n.matcher.find(r.reload,r.relative),r.reload&&!r.reloadState)throw new Error("No such reload state '"+(Zt(r.reload)?r.reload:r.reload.name)+"'");return new Ge(this.router.stateRegistry,t,e,r)},e.prototype.getCurrentPath=function(){var t=this,e=this.router.globals.successfulTransitions.peekTail();return e?e.treeChanges().to:[new tr(t.router.stateRegistry.root())]},e.prototype.transitionTo=function(e,r,n){var i=this;void 0===r&&(r={}),void 0===n&&(n={});var o=this.router,a=o.globals;n=m(n,On);n=he(n,{current:function(){return a.transition}});var u=this.target(e,r,n),s=this.getCurrentPath();if(!u.exists())return this._handleInvalidTargetState(s,u);if(!u.valid())return Ve(u.error());var c=function(e){return function(r){if(r instanceof He){var n=o.globals.lastStartedTransitionId===e.$id;if(r.type===t.RejectType.IGNORED)return n&&o.urlRouter.update(),ae.$q.when(a.current);var u=r.detail;if(r.type===t.RejectType.SUPERSEDED&&r.redirected&&u instanceof Ge){var s=e.redirect(u);return s.run().catch(c(s))}if(r.type===t.RejectType.ABORTED)return n&&o.urlRouter.update(),ae.$q.reject(r)}return i.defaultErrorHandler()(r),ae.$q.reject(r)}},f=this.router.transitionService.create(s,u),l=f.run().catch(c(f));return Ie(l),he(l,{transition:f})},e.prototype.is=function(t,e,r){r=m(r,{relative:this.$current});var n=this.router.stateRegistry.matcher.find(t,r.relative);if(zt(n)){if(this.$current!==n)return!1;if(!e)return!0;var i=n.parameters({inherit:!0,matchingKeys:e});return Xe.equals(i,Xe.values(i,e),this.params)}},e.prototype.includes=function(t,e,r){r=m(r,{relative:this.$current});var n=Zt(t)&&Lt.fromString(t);if(n){if(!n.matches(this.$current.name))return!1;t=this.$current.name}var i=this.router.stateRegistry.matcher.find(t,r.relative),o=this.$current.includes;if(zt(i)){if(!zt(o[i.name]))return!1;if(!e)return!0;var a=i.parameters({inherit:!0,matchingKeys:e});return Xe.equals(a,Xe.values(a,e),this.params)}},e.prototype.href=function(t,e,r){r=m(r,{lossy:!0,inherit:!0,absolute:!1,relative:this.$current}),e=e||{};var n=this.router.stateRegistry.matcher.find(t,r.relative);if(!zt(n))return null;r.inherit&&(e=this.params.$inherit(e,this.$current,n));var i=n&&r.lossy?n.navigable:n;return i&&void 0!==i.url&&null!==i.url?this.router.urlRouter.href(i.url,e,{absolute:r.absolute}):null},e.prototype.defaultErrorHandler=function(t){return this._defaultErrorHandler=t||this._defaultErrorHandler},e.prototype.get=function(t,e){var r=this.router.stateRegistry;return 0===arguments.length?r.get():r.get(t,e||this.$current)},e.prototype.lazyLoad=function(t,e){var r=this.get(t);if(!r||!r.lazyLoad)throw new Error("Can not lazy load "+t);var n=this.getCurrentPath(),i=er.makeTargetState(this.router.stateRegistry,n);return e=e||this.router.transitionService.create(n,i),st(e,r)},e}(),Vn={when:function(t){return new Promise(function(e,r){return e(t)})},reject:function(t){return new Promise(function(e,r){r(t)})},defer:function(){var t={};return t.promise=new Promise(function(e,r){t.resolve=e,t.reject=r}),t},all:function(t){if(te(t))return Promise.all(t);if(Xt(t)){var e=Object.keys(t).map(function(e){return t[e].then(function(t){return{key:e,val:t}})});return Vn.all(e).then(function(t){return t.reduce(function(t,e){return t[e.key]=e.val,t},{})})}}},jn={},An=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Hn=/([^\s,]+)/g,qn={get:function(t){return jn[t]},has:function(t){return null!=qn.get(t)},invoke:function(t,e,r){var n=he({},jn,r||{}),i=qn.annotate(t),o=ke(function(t){return n.hasOwnProperty(t)},function(t){return"DI can't find injectable: '"+t+"'"}),a=i.filter(o).map(function(t){return n[t]});return Kt(t)?t.apply(e,a):t.slice(-1)[0].apply(e,a)},annotate:function(t){if(!c(t))throw new Error("Not an injectable function: "+t);if(t&&t.$inject)return t.$inject;if(te(t))return t.slice(0,-1);var e=t.toString().replace(An,"");return e.slice(e.indexOf("(")+1,e.indexOf(")")).match(Hn)||[]}},Dn=function(t,e){var r=e[0],n=e[1];return t.hasOwnProperty(r)?te(t[r])?t[r].push(n):t[r]=[t[r],n]:t[r]=n,t},Fn=function(t){return t.split("&").filter(f).map(wr).reduce(Dn,{})},Nn=function(t){var e=t.path(),r=t.search(),n=t.hash(),i=Object.keys(r).map(function(t){var e=r[t];return(te(e)?e:[e]).map(function(e){return t+"="+e})}).reduce(Re,[]).join("&");return e+(i?"?"+i:"")+(n?"#"+n:"")},Un=function(){function t(t,e){var r=this;this.fireAfterUpdate=e,this._listeners=[],this._listener=function(t){return r._listeners.forEach(function(e){return e(t)})},this.hash=function(){return lt(r._get()).hash},this.path=function(){return lt(r._get()).path},this.search=function(){return Fn(lt(r._get()).search)},this._location=ue.location,this._history=ue.history}return t.prototype.url=function(t,e){return void 0===e&&(e=!0),zt(t)&&t!==this._get()&&(this._set(null,null,t,e),this.fireAfterUpdate&&this._listeners.forEach(function(e){return e({url:t})})),Nn(this)},t.prototype.onChange=function(t){var e=this;return this._listeners.push(t),function(){return me(e._listeners,t)}},t.prototype.dispose=function(t){ge(this._listeners)},t}(),Ln=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Mn=function(t){function e(e){var r=t.call(this,e,!1)||this;return ue.addEventListener("hashchange",r._listener,!1),r}return Ln(e,t),e.prototype._get=function(){return $r(this._location.hash)},e.prototype._set=function(t,e,r,n){this._location.hash=r},e.prototype.dispose=function(e){t.prototype.dispose.call(this,e),ue.removeEventListener("hashchange",this._listener)},e}(Un),Bn=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gn=function(t){function e(e){return t.call(this,e,!0)||this}return Bn(e,t),e.prototype._get=function(){return this._url},e.prototype._set=function(t,e,r,n){this._url=r},e}(Un),Wn=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zn=function(t){function e(e){var r=t.call(this,e,!0)||this;return r._config=e.urlService.config,ue.addEventListener("popstate",r._listener,!1),r}return Wn(e,t),e.prototype._getBasePrefix=function(){return yr(this._config.baseHref())},e.prototype._get=function(){var t=this._location,e=t.pathname,r=t.hash,n=t.search;n=_r(n)[1],r=gr(r)[1];var i=this._getBasePrefix(),o=e===this._config.baseHref(),a=e.substr(0,i.length)===i;return(e=o?"/":a?e.substring(i.length):e)+(n?"?"+n:"")+(r?"#"+r:"")},e.prototype._set=function(t,e,r,n){var i=this._getBasePrefix(),o=r&&"/"!==r[0]?"/":"",a=""===r||"/"===r?this._config.baseHref():i+o+r;n?this._history.replaceState(t,e,a):this._history.pushState(t,e,a)},e.prototype.dispose=function(e){t.prototype.dispose.call(this,e),ue.removeEventListener("popstate",this._listener)},e}(Un),Jn=function(){return function(){var t=this;this.dispose=l,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return t._port},this.protocol=function(){return t._protocol},this.host=function(){return t._host},this.baseHref=function(){return t._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(e){return zt(e)?t._hashPrefix=e:t._hashPrefix}}}(),Qn=function(){function t(t,e){void 0===e&&(e=!1),this._isHtml5=e,this._baseHref=void 0,this._hashPrefix=""}return t.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},t.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},t.prototype.host=function(){return location.hostname},t.prototype.html5Mode=function(){return this._isHtml5},t.prototype.hashPrefix=function(t){return zt(t)?this._hashPrefix=t:this._hashPrefix},t.prototype.baseHref=function(t){return zt(t)?this._baseHref=t:zt(this._baseHref)?this._baseHref:this.applyDocumentBaseHref()},t.prototype.applyDocumentBaseHref=function(){var t=document.getElementsByTagName("base")[0];return this._baseHref=t?t.href.substr(location.origin.length):location.pathname||"/"},t.prototype.dispose=function(){},t}(),Kn=ht("vanilla.hashBangLocation",!1,Mn,Qn),Yn=ht("vanilla.pushStateLocation",!0,zn,Qn),Zn=ht("vanilla.memoryLocation",!1,Gn,Jn),Xn=function(){function t(){}return t.prototype.dispose=function(t){},t}(),ti=Object.freeze({root:ue,fromJson:ce,toJson:fe,forEach:le,extend:he,equals:pe,identity:f,noop:l,createProxyFunctions:h,inherit:de,inArray:ve,_inArray:p,removeFrom:me,_removeFrom:d,pushTo:ye,_pushTo:v,deregAll:ge,defaults:m,mergeR:_e,ancestors:y,pick:g,omit:_,pluck:w,filter:$,find:S,mapObj:we,map:b,values:$e,allTrueR:Se,anyTrueR:be,unnestR:Re,flattenR:Ee,pushR:R,uniqR:Ce,unnest:Te,flatten:Pe,assertPredicate:ke,assertMap:Oe,assertFn:E,pairs:xe,arrayTuples:C,applyPairs:T,tail:P,copy:k,_extend:O,silenceUncaughtInPromise:Ie,silentRejection:Ve,notImplemented:oe,services:ae,Glob:Lt,curry:r,compose:n,pipe:i,prop:Vt,propEq:jt,parse:At,not:Ht,and:o,or:a,all:qt,any:Dt,is:Ft,eq:Nt,val:Ut,invoke:u,pattern:s,isUndefined:Wt,isDefined:zt,isNull:Jt,isNullOrUndefined:Qt,isFunction:Kt,isNumber:Yt,isString:Zt,isObject:Xt,isArray:te,isDate:ee,isRegExp:re,isState:ne,isInjectable:c,isPromise:ie,Queue:je,maxLength:M,padString:B,kebobString:G,functionToString:W,fnToString:z,stringify:J,beforeAfterSubstr:vr,hostRegex:mr,stripLastPathElement:yr,splitHash:gr,splitQuery:_r,splitEqual:wr,trimHashVal:$r,splitOnDelim:Q,joinNeighborsR:K,get Category(){return t.Category},Trace:Me,trace:Be,get DefType(){return t.DefType},Param:Xe,ParamTypes:Sr,StateParams:Rr,ParamType:Ke,PathNode:tr,PathUtils:er,resolvePolicies:ir,defaultResolvePolicy:rr,Resolvable:nr,NATIVE_INJECTOR_TOKEN:sr,ResolveContext:cr,resolvablesBuilder:rt,StateBuilder:kr,StateObject:Mt,StateMatcher:Or,StateQueueManager:xr,StateRegistry:Ir,StateService:In,TargetState:Ge,get TransitionHookPhase(){return t.TransitionHookPhase},get TransitionHookScope(){return t.TransitionHookScope},HookBuilder:Qe,matchState:A,RegisteredHook:Je,makeEvent:H,get RejectType(){return t.RejectType},Rejection:He,Transition:hr,TransitionHook:ze,TransitionEventType:Tn,defaultTransOpts:On,TransitionService:xn,UrlMatcher:Ar,UrlMatcherFactory:Hr,UrlRouter:Mr,UrlRuleFactory:qr,BaseUrlRule:Dr,UrlService:Zr,ViewService:Br,UIRouterGlobals:Gr,UIRouter:tn,$q:Vn,$injector:qn,BaseLocationServices:Un,HashLocationService:Mn,MemoryLocationService:Gn,PushStateLocationService:zn,MemoryLocationConfig:Jn,BrowserLocationConfig:Qn,keyValsToObjectR:Dn,getParams:Fn,parseUrl:lt,buildUrl:Nn,locationPluginFactory:ht,servicesPlugin:pt,hashLocationPlugin:Kn,pushStateLocationPlugin:Yn,memoryLocationPlugin:Zn,UIRouterPluginBase:Xn}),ei=function(t,e){return t.reduce(function(t,r){return t||zt(e[r])},!1)},ri=0,ni=function(){function t(t,e,r){var n=this;this.path=t,this.viewDecl=e,this.factory=r,this.$id=ri++,this.loaded=!1,this.getTemplate=function(t,e){return n.component?n.factory.makeComponentTemplate(t,e,n.component,n.viewDecl.bindings):n.template}}return t.prototype.load=function(){var t=this,e=ae.$q,r=new cr(this.path),n=this.path.reduce(function(t,e){return he(t,e.paramValues)},{}),i={template:e.when(this.factory.fromConfig(this.viewDecl,n,r)),controller:e.when(this.getController(r))};return e.all(i).then(function(e){return Be.traceViewServiceEvent("Loaded",t),t.controller=e.controller,he(t,e.template),t})},t.prototype.getController=function(t){var e=this.viewDecl.controllerProvider;if(!c(e))return this.viewDecl.controller;var r=ae.$injector.annotate(e),n=te(e)?P(e):e;return new nr("",n,r).get(t)},t}(),ii=function(){function t(){var t=this;this._useHttp=It.version.minor<3,this.$get=["$http","$templateCache","$injector",function(e,r,n){return t.$templateRequest=n.has&&n.has("$templateRequest")&&n.get("$templateRequest"),t.$http=e,t.$templateCache=r,t}]}return t.prototype.useHttpService=function(t){this._useHttp=t},t.prototype.fromConfig=function(t,e,r){var n=function(t){return ae.$q.when(t).then(function(t){return{template:t}})},i=function(t){return ae.$q.when(t).then(function(t){return{component:t}})};return zt(t.template)?n(this.fromString(t.template,e)):zt(t.templateUrl)?n(this.fromUrl(t.templateUrl,e)):zt(t.templateProvider)?n(this.fromProvider(t.templateProvider,e,r)):zt(t.component)?i(t.component):zt(t.componentProvider)?i(this.fromComponentProvider(t.componentProvider,e,r)):n("")},t.prototype.fromString=function(t,e){return Kt(t)?t(e):t},t.prototype.fromUrl=function(t,e){return Kt(t)&&(t=t(e)),null==t?null:this._useHttp?this.$http.get(t,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then(function(t){return t.data}):this.$templateRequest(t)},t.prototype.fromProvider=function(t,e,r){var n=ae.$injector.annotate(t),i=te(t)?P(t):t;return new nr("",i,n).get(r)},t.prototype.fromComponentProvider=function(t,e,r){var n=ae.$injector.annotate(t),i=te(t)?P(t):t;return new nr("",i,n).get(r)},t.prototype.makeComponentTemplate=function(t,e,r,n){n=n||{};var i=It.version.minor>=3?"::":"",o=function(t){var e=G(t);return/^(x|data)-/.exec(e)?"x-"+e:e},a=mt(r).map(function(r){var a=r.name,u=r.type,s=o(a);if(t.attr(s)&&!n[a])return s+"='"+t.attr(s)+"'";var c=n[a]||a;if("@"===u)return s+"='{{"+i+"$resolve."+c+"}}'";if("&"===u){var f=e.getResolvable(c),l=f&&f.data,h=l&&ae.$injector.annotate(l)||[];return s+"='$resolve."+c+(te(l)?"["+(l.length-1)+"]":"")+"("+h.join(",")+")'"}return s+"='"+i+"$resolve."+c+"'"}).join(" "),u=o(r);return"<"+u+" "+a+">"},t}(),oi=function(t){return ai(Xt(t.bindToController)?t.bindToController:t.scope)},ai=function(t){return Object.keys(t||{}).map(function(e){return[e,/^([=<@&])[?]?(.*)/.exec(t[e])]}).filter(function(t){return zt(t)&&te(t[1])}).map(function(t){return{name:t[1][2]||t[0],type:t[1][1]}})},ui=function(){function t(e,r){this.stateRegistry=e,this.stateService=r,h(Ut(t.prototype),this,Ut(this))}return t.prototype.decorator=function(t,e){return this.stateRegistry.decorator(t,e)||this},t.prototype.state=function(t,e){return Xt(t)?e=t:e.name=t,this.stateRegistry.register(e),this},t.prototype.onInvalid=function(t){return this.stateService.onInvalid(t)},t}(),si=function(t){return function(e,r){var n=e[t],i="onExit"===t?"from":"to";return n?function(t,e){var r=new cr(t.treeChanges(i)).subContext(e.$$state()),o=he(_i(r),{$state$:e,$transition$:t});return ae.$injector.invoke(n,this,o)}:void 0}},ci=function(){function t(t){this._urlListeners=[],this.$locationProvider=t;var e=Ut(t);h(e,this,e,["hashPrefix"])}return t.monkeyPatchPathParameterType=function(t){var e=t.urlMatcherFactory.type("path");e.encode=function(t){return null!=t?t.toString().replace(/(~|\/)/g,function(t){return{"~":"~~","/":"~2F"}[t]}):t},e.decode=function(t){return null!=t?t.toString().replace(/(~~|~2F)/g,function(t){return{"~~":"~","~2F":"/"}[t]}):t}},t.prototype.dispose=function(){},t.prototype.onChange=function(t){var e=this;return this._urlListeners.push(t),function(){return me(e._urlListeners)(t)}},t.prototype.html5Mode=function(){var t=this.$locationProvider.html5Mode();return(t=Xt(t)?t.enabled:t)&&this.$sniffer.history},t.prototype.url=function(t,e,r){return void 0===e&&(e=!1),zt(t)&&this.$location.url(t),e&&this.$location.replace(),r&&this.$location.state(r),this.$location.url()},t.prototype._runtimeServices=function(t,e,r,n){var i=this;this.$location=e,this.$sniffer=r,t.$on("$locationChangeSuccess",function(t){return i._urlListeners.forEach(function(e){return e(t)})});var o=Ut(e),a=Ut(n);h(o,this,o,["replace","path","search","hash"]),h(o,this,o,["port","protocol","host"]),h(a,this,a,["baseHref"])},t}(),fi=function(){function t(t){this._router=t,this._urlRouter=t.urlRouter}return t.injectableHandler=function(t,e){return function(r){return ae.$injector.invoke(e,null,{$match:r,$stateParams:t.globals.params})}},t.prototype.$get=function(){var t=this._urlRouter;return t.update(!0),t.interceptDeferred||t.listen(),t},t.prototype.rule=function(t){var e=this;if(!Kt(t))throw new Error("'rule' must be a function");var r=new Dr(function(){return t(ae.$injector,e._router.locationService)},f);return this._urlRouter.rule(r),this},t.prototype.otherwise=function(t){var e=this,r=this._urlRouter;if(Zt(t))r.otherwise(t);else{if(!Kt(t))throw new Error("'rule' must be a string or function");r.otherwise(function(){return t(ae.$injector,e._router.locationService)})}return this},t.prototype.when=function(e,r){return(te(r)||Kt(r))&&(r=t.injectableHandler(this._router,r)),this._urlRouter.when(e,r),this},t.prototype.deferIntercept=function(t){this._urlRouter.deferIntercept(t)},t}();It.module("ui.router.angular1",[]);var li=It.module("ui.router.init",[]),hi=It.module("ui.router.util",["ng","ui.router.init"]),pi=It.module("ui.router.router",["ui.router.util"]),di=It.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),vi=It.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),mi=(It.module("ui.router.compat",["ui.router"]),null);yt.$inject=["$locationProvider"];var yi=function(t){return["$uiRouterProvider",function(e){var r=e.router[t];return r.$get=function(){return r},r}]};gt.$inject=["$injector","$q","$uiRouter"];_t.$inject=["$rootScope"],li.provider("$uiRouter",yt),pi.provider("$urlRouter",["$uiRouterProvider",function(t){return t.urlRouterProvider=new fi(t)}]),hi.provider("$urlService",yi("urlService")),hi.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return mi.urlMatcherFactory}]),hi.provider("$templateFactory",function(){return new ii}),di.provider("$stateRegistry",yi("stateRegistry")),di.provider("$uiRouterGlobals",yi("globals")),di.provider("$transitions",yi("transitionService")),di.provider("$state",["$uiRouterProvider",function(){return he(mi.stateProvider,{$get:function(){return mi.stateService}})}]),di.factory("$stateParams",["$uiRouter",function(t){return t.globals.params}]),vi.factory("$view",function(){return mi.viewService}),vi.service("$trace",function(){return Be}),vi.run(_t),hi.run(["$urlMatcherFactory",function(t){}]),di.run(["$state",function(t){}]),pi.run(["$urlRouter",function(t){}]),li.run(gt);var gi,_i=function(t){return t.getTokens().filter(Zt).map(function(e){var r=t.getResolvable(e);return[e,"NOWAIT"===t.getPolicy(r).async?r.promise:r.data]}).reduce(T,{})};gi=["$uiRouter","$timeout",function(t,e){var r=t.stateService;return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,i,o,a){function u(){var t=p();l&&l(),f&&(l=f.$$addStateInfo(t.uiState,t.uiStateParams)),null!=t.href&&o.$set(c.attr,t.href)}var s,c=bt(i),f=a[1]||a[0],l=null,h={},p=function(){return St(r,i,h)},d=wt(o.uiSref);h.uiState=d.state,h.uiStateOpts=o.uiSrefOpts?n.$eval(o.uiSrefOpts):{},d.paramExpr&&(n.$watch(d.paramExpr,function(t){h.uiStateParams=he({},t),u()},!0),h.uiStateParams=he({},n.$eval(d.paramExpr))),u(),n.$on("$destroy",t.stateRegistry.onStatesChanged(u)),n.$on("$destroy",t.transitionService.onSuccess({},u)),c.clickable&&(s=Rt(i,r,e,c,p),Ct(i,n,s,h.uiStateOpts))}}}];var wi;wi=["$uiRouter","$timeout",function(t,e){var r=t.stateService;return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,i,o,a){function u(){var t=d();h&&h(),f&&(h=f.$$addStateInfo(t.uiState,t.uiStateParams)),null!=t.href&&o.$set(c.attr,t.href)}var s,c=bt(i),f=a[1]||a[0],h=null,p={},d=function(){return St(r,i,p)},v=["uiState","uiStateParams","uiStateOpts"],m=v.reduce(function(t,e){return t[e]=l,t},{});v.forEach(function(t){p[t]=o[t]?n.$eval(o[t]):null,o.$observe(t,function(e){m[t](),m[t]=n.$watch(e,function(e){p[t]=e,u()},!0)})}),u(),n.$on("$destroy",t.stateRegistry.onStatesChanged(u)),n.$on("$destroy",t.transitionService.onSuccess({},u)),c.clickable&&(s=Rt(i,r,e,c,d),Ct(i,n,s,p.uiStateOpts))}}}];var $i;$i=["$state","$stateParams","$interpolate","$uiRouter",function(t,e,r,n){return{restrict:"A",controller:["$scope","$element","$attrs",function(e,i,o){function a(t){t.promise.then(s,l)}function u(e,r,n){var o={state:t.get(e,$t(i))||{name:e},params:r,activeClass:n};return p.push(o),function(){me(p)(o)}}function s(){var r=function(t){return t.split(/\s/).filter(f)},n=function(t){return t.map(function(t){return t.activeClass}).map(r).reduce(Re,[])},o=n(p).concat(r(c)).reduce(Ce,[]),a=n(p.filter(function(e){return t.includes(e.state.name,e.params)})),u=!!p.filter(function(e){return t.is(e.state.name,e.params)}).length?r(c):[],s=a.concat(u).reduce(Ce,[]),l=o.filter(function(t){return!ve(s,t)});e.$evalAsync(function(){s.forEach(function(t){return i.addClass(t)}),l.forEach(function(t){return i.removeClass(t)})})}var c,h,p=[];c=r(o.uiSrefActiveEq||"",!1)(e);try{h=e.$eval(o.uiSrefActive)}catch(t){}h=h||r(o.uiSrefActive||"",!1)(e),Xt(h)&&le(h,function(t,r){if(Zt(t)){var n=wt(t);u(n.state,e.$eval(n.paramExpr),r)}}),this.$$addStateInfo=function(t,e){if(!(Xt(h)&&p.length>0)){var r=u(t,e,h);return s(),r}},e.$on("$stateChangeSuccess",s),e.$on("$destroy",n.transitionService.onStart({},a)),n.globals.transition&&a(n.globals.transition),s()}]}}],It.module("ui.router.state").directive("uiSref",gi).directive("uiSrefActive",$i).directive("uiSrefActiveEq",$i).directive("uiState",wi),Tt.$inject=["$state"],Pt.$inject=["$state"],It.module("ui.router.state").filter("isState",Tt).filter("includedByState",Pt);var Si;Si=["$view","$animate","$uiViewScroll","$interpolate","$q",function(t,e,r,n,i){function o(t,r){return{enter:function(t,r,n){It.version.minor>2?e.enter(t,null,r).then(n):e.enter(t,null,r,n)},leave:function(t,r){It.version.minor>2?e.leave(t).then(r):e.leave(t,r)}}}function a(t,e){return t===e}var u={$cfg:{viewDecl:{$context:t._pluginapi._rootViewContext()}},$uiView:{}},s={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(e,c,f){return function(e,c,l){function h(){if(d&&(Be.traceUIViewEvent("Removing (previous) el",d.data("$uiView")),d.remove(),d=null),m&&(Be.traceUIViewEvent("Destroying scope",R),m.$destroy(),m=null),v){var t=v.data("$uiViewAnim");Be.traceUIViewEvent("Animate out",t),$.leave(v,function(){t.$$animLeave.resolve(),d=null}),d=v,v=null}}function p(t){var n=e.$new(),o=i.defer(),a=i.defer(),u={$cfg:t,$uiView:R},s={$animEnter:o.promise,$animLeave:a.promise,$$animLeave:a};n.$emit("$viewContentLoading",b);var l=f(n,function(t){t.data("$uiViewAnim",s),t.data("$uiView",u),$.enter(t,c,function(){o.resolve(),m&&m.$emit("$viewContentAnimationEnded"),(zt(w)&&!w||e.$eval(w))&&r(t)}),h()});v=l,(m=n).$emit("$viewContentLoaded",t||y),m.$eval(_)}var d,v,m,y,g,_=l.onload||"",w=l.autoscroll,$=o(),S=c.inheritedData("$uiView")||u,b=n(l.uiView||l.name||"")(e)||"$default",R={$type:"ng1",id:s.count++,name:b,fqn:S.$uiView.fqn?S.$uiView.fqn+"."+b:b,config:null,configUpdated:function(t){(!t||t instanceof ni)&&(a(y,t)||(Be.traceUIViewConfigUpdated(R,t&&t.viewDecl&&t.viewDecl.$context),y=t,p(t)))},get creationContext(){var t=At("$cfg.viewDecl.$context")(S),e=At("$uiView.creationContext")(S);return t||e}};Be.traceUIViewEvent("Linking",R),c.data("$uiView",{$uiView:R}),p(),g=t.registerUIView(R),e.$on("$destroy",function(){Be.traceUIViewEvent("Destroying/Unregistering",R),g()})}}};return s}],kt.$inject=["$compile","$controller","$transitions","$view","$q","$timeout"];var bi="function"==typeof It.module("ui.router").component,Ri=0;It.module("ui.router.state").directive("uiView",Si),It.module("ui.router.state").directive("uiView",kt),It.module("ui.router.state").provider("$uiViewScroll",function(){var t=!1;this.useAnchorScroll=function(){t=!0},this.$get=["$anchorScroll","$timeout",function(e,r){return t?e:function(t){return r(function(){t[0].scrollIntoView()},0,!1)}}]});t.default="ui.router",t.core=ti,t.watchDigests=_t,t.getLocals=_i,t.getNg1ViewConfigFactory=dt,t.ng1ViewsBuilder=vt,t.Ng1ViewConfig=ni,t.StateProvider=ui,t.UrlRouterProvider=fi,t.root=ue,t.fromJson=ce,t.toJson=fe,t.forEach=le,t.extend=he,t.equals=pe,t.identity=f,t.noop=l,t.createProxyFunctions=h,t.inherit=de,t.inArray=ve,t._inArray=p,t.removeFrom=me,t._removeFrom=d,t.pushTo=ye,t._pushTo=v,t.deregAll=ge,t.defaults=m,t.mergeR=_e,t.ancestors=y,t.pick=g,t.omit=_,t.pluck=w,t.filter=$,t.find=S,t.mapObj=we,t.map=b,t.values=$e,t.allTrueR=Se,t.anyTrueR=be,t.unnestR=Re,t.flattenR=Ee,t.pushR=R,t.uniqR=Ce,t.unnest=Te,t.flatten=Pe,t.assertPredicate=ke,t.assertMap=Oe,t.assertFn=E,t.pairs=xe,t.arrayTuples=C,t.applyPairs=T,t.tail=P,t.copy=k,t._extend=O,t.silenceUncaughtInPromise=Ie,t.silentRejection=Ve,t.notImplemented=oe,t.services=ae,t.Glob=Lt,t.curry=r,t.compose=n,t.pipe=i,t.prop=Vt,t.propEq=jt,t.parse=At,t.not=Ht,t.and=o,t.or=a,t.all=qt,t.any=Dt,t.is=Ft,t.eq=Nt,t.val=Ut,t.invoke=u,t.pattern=s,t.isUndefined=Wt,t.isDefined=zt,t.isNull=Jt,t.isNullOrUndefined=Qt,t.isFunction=Kt,t.isNumber=Yt,t.isString=Zt,t.isObject=Xt,t.isArray=te,t.isDate=ee,t.isRegExp=re,t.isState=ne,t.isInjectable=c,t.isPromise=ie,t.Queue=je,t.maxLength=M,t.padString=B,t.kebobString=G,t.functionToString=W,t.fnToString=z,t.stringify=J,t.beforeAfterSubstr=vr,t.hostRegex=mr,t.stripLastPathElement=yr,t.splitHash=gr,t.splitQuery=_r,t.splitEqual=wr,t.trimHashVal=$r,t.splitOnDelim=Q,t.joinNeighborsR=K,t.Trace=Me,t.trace=Be,t.Param=Xe,t.ParamTypes=Sr,t.StateParams=Rr,t.ParamType=Ke,t.PathNode=tr,t.PathUtils=er,t.resolvePolicies=ir,t.defaultResolvePolicy=rr,t.Resolvable=nr,t.NATIVE_INJECTOR_TOKEN=sr,t.ResolveContext=cr,t.resolvablesBuilder=rt,t.StateBuilder=kr,t.StateObject=Mt,t.StateMatcher=Or,t.StateQueueManager=xr,t.StateRegistry=Ir,t.StateService=In,t.TargetState=Ge,t.HookBuilder=Qe,t.matchState=A,t.RegisteredHook=Je,t.makeEvent=H,t.Rejection=He,t.Transition=hr,t.TransitionHook=ze,t.TransitionEventType=Tn,t.defaultTransOpts=On,t.TransitionService=xn,t.UrlMatcher=Ar,t.UrlMatcherFactory=Hr,t.UrlRouter=Mr,t.UrlRuleFactory=qr,t.BaseUrlRule=Dr,t.UrlService=Zr,t.ViewService=Br,t.UIRouterGlobals=Gr,t.UIRouter=tn,t.$q=Vn,t.$injector=qn,t.BaseLocationServices=Un,t.HashLocationService=Mn,t.MemoryLocationService=Gn,t.PushStateLocationService=zn,t.MemoryLocationConfig=Jn,t.BrowserLocationConfig=Qn,t.keyValsToObjectR=Dn,t.getParams=Fn,t.parseUrl=lt,t.buildUrl=Nn,t.locationPluginFactory=ht,t.servicesPlugin=pt,t.hashLocationPlugin=Kn,t.pushStateLocationPlugin=Yn,t.memoryLocationPlugin=Zn,t.UIRouterPluginBase=Xn,Object.defineProperty(t,"__esModule",{value:!0})}); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("angular")):"function"==typeof define&&define.amd?define(["exports","angular"],e):e(t["@uirouter/angularjs"]={},t.angular)}(this,function(t,e){"use strict";var r=angular,n=e&&e.module?e:r;function i(t){var e=[].slice.apply(arguments,[1]),r=t.length;return function e(n){return n.length>=r?t.apply(null,n):function(){return e(n.concat([].slice.apply(arguments)))}}(e)}function o(){var t=arguments,e=t.length-1;return function(){for(var r=e,n=t[e].apply(this,arguments);r--;)n=t[r].call(this,n);return n}}function a(){for(var t=[],e=0;e=0&&t.splice(r,1),t}var et=i(rt);function rt(t,e){return t.push(e),e}var nt=function(t){return t.slice().forEach(function(e){"function"==typeof e&&e(),X(t,e)})};function it(t){for(var e=[],r=1;rthis._limit&&this.evict(),t},t.prototype.evict=function(){var t=this._items.shift();return this._evictListeners.forEach(function(e){return e(t)}),t},t.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},t.prototype.clear=function(){var t=this._items;return this._items=[],t},t.prototype.size=function(){return this._items.length},t.prototype.remove=function(t){var e=this._items.indexOf(t);return e>-1&&this._items.splice(e,1)[0]},t.prototype.peekTail=function(){return this._items[this._items.length-1]},t.prototype.peekHead=function(){if(this.size())return this._items[0]},t}();(Vt=t.RejectType||(t.RejectType={}))[Vt.SUPERSEDED=2]="SUPERSEDED",Vt[Vt.ABORTED=3]="ABORTED",Vt[Vt.INVALID=4]="INVALID",Vt[Vt.IGNORED=5]="IGNORED",Vt[Vt.ERROR=6]="ERROR";var Dt=0,qt=function(){function e(t,e,r){this.$id=Dt++,this.type=t,this.message=e,this.detail=r}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&d(e)(t._transitionRejection)},e.superseded=function(r,n){var i=new e(t.RejectType.SUPERSEDED,"The transition has been superseded by a different transition",r);return n&&n.redirected&&(i.redirected=!0),i},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(r){return new e(t.RejectType.INVALID,"This transition is invalid",r)},e.ignored=function(r){return new e(t.RejectType.IGNORED,"The transition was ignored",r)},e.aborted=function(r){return new e(t.RejectType.ABORTED,"The transition has been aborted",r)},e.errored=function(r){return new e(t.RejectType.ERROR,"The transition errored",r)},e.normalize=function(t){return d(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var t,e=(t=this.detail)&&t.toString!==Object.prototype.toString?t.toString():ke(t);return"Transition Rejection($id: "+this.$id+" type: "+this.type+", message: "+this.message+", detail: "+e+")"},e.prototype.toPromise=function(){return G(At(this),{_transitionRejection:this})},e}();function Nt(t){if(!t)return"ui-view (defunct)";var e=t.creationContext?t.creationContext.name||"(root)":"(none)";return"[ui-view#"+t.id+" "+t.$type+":"+t.fqn+" ("+t.name+"@"+e+")]"}function Ft(e){return k(e)?t.Category[e]:t.Category[t.Category[e]]}var Ut,Lt=Function.prototype.bind.call(console.log,console),Mt=P(console.table)?console.table.bind(console):Lt.bind(console);(Ut=t.Category||(t.Category={}))[Ut.RESOLVE=0]="RESOLVE",Ut[Ut.TRANSITION=1]="TRANSITION",Ut[Ut.HOOK=2]="HOOK",Ut[Ut.UIVIEW=3]="UIVIEW",Ut[Ut.VIEWCONFIG=4]="VIEWCONFIG";var Bt,Gt,Wt=c("$id"),zt=c("router.$id"),Jt=function(t){return"Transition #"+Wt(t)+"-"+zt(t)},Qt=function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,r){var n=this;r.length||(r=Object.keys(t.Category).map(function(t){return parseInt(t,10)}).filter(function(t){return!isNaN(t)}).map(function(e){return t.Category[e]})),r.map(Ft).forEach(function(t){return n._enabled[t]=e})},e.prototype.enable=function(){for(var t=[],e=0;e "+ke(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(t.Category.TRANSITION)&&console.log(Jt(e)+": Ignored <> "+ke(e))},e.prototype.traceHookInvocation=function(e,r,n){if(this.enabled(t.Category.HOOK)){var i=c("traceData.hookType")(n)||"internal",o=c("traceData.context.state.name")(n)||c("traceData.context")(n)||"unknown",a=Ee(e.registeredHook.callback);console.log(Jt(r)+": Hook -> "+i+" context: "+o+", "+Se(200,a))}},e.prototype.traceHookResult=function(e,r,n){this.enabled(t.Category.HOOK)&&console.log(Jt(r)+": <- Hook returned: "+Se(200,ke(e)))},e.prototype.traceResolvePath=function(e,r,n){this.enabled(t.Category.RESOLVE)&&console.log(Jt(n)+": Resolving "+e+" ("+r+")")},e.prototype.traceResolvableResolved=function(e,r){this.enabled(t.Category.RESOLVE)&&console.log(Jt(r)+": <- Resolved "+e+" to: "+Se(200,ke(e.data)))},e.prototype.traceError=function(e,r){this.enabled(t.Category.TRANSITION)&&console.log(Jt(r)+": <- Rejected "+ke(r)+", reason: "+e)},e.prototype.traceSuccess=function(e,r){this.enabled(t.Category.TRANSITION)&&console.log(Jt(r)+": <- Success "+ke(r)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,r,n){void 0===n&&(n=""),this.enabled(t.Category.UIVIEW)&&console.log("ui-view: "+be(30,e)+" "+Nt(r)+n)},e.prototype.traceUIViewConfigUpdated=function(e,r){this.enabled(t.Category.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+r+"'")},e.prototype.traceUIViewFill=function(e,r){this.enabled(t.Category.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+Se(200,r))},e.prototype.traceViewSync=function(e){if(this.enabled(t.Category.VIEWCONFIG)){var r="uiview component fqn",n=e.map(function(t){var e,n=t.uiView,i=t.viewConfig,o=n&&n.fqn,a=i&&i.viewDecl.$context.name+": ("+i.viewDecl.$name+")";return(e={})[r]=o,e["view config state (view name)"]=a,e}).sort(function(t,e){return(t[r]||"").localeCompare(e[r]||"")});Mt(n)}},e.prototype.traceViewServiceEvent=function(e,r){this.enabled(t.Category.VIEWCONFIG)&&console.log("VIEWCONFIG: "+e+" "+function(t){var e=t.viewDecl,r=e.$context.name||"(root)";return"[View#"+t.$id+" from '"+r+"' state]: target ui-view: '"+e.$uiViewName+"@"+e.$uiViewContextAnchor+"'"}(r))},e.prototype.traceViewServiceUIViewEvent=function(e,r){this.enabled(t.Category.VIEWCONFIG)&&console.log("VIEWCONFIG: "+e+" "+Nt(r))},e}(),Kt=new Qt;(Bt=t.TransitionHookPhase||(t.TransitionHookPhase={}))[Bt.CREATE=0]="CREATE",Bt[Bt.BEFORE=1]="BEFORE",Bt[Bt.RUN=2]="RUN",Bt[Bt.SUCCESS=3]="SUCCESS",Bt[Bt.ERROR=4]="ERROR",(Gt=t.TransitionHookScope||(t.TransitionHookScope={}))[Gt.TRANSITION=0]="TRANSITION",Gt[Gt.STATE=1]="STATE";var Yt=function(){function t(t,e,r,n){this._stateRegistry=t,this._identifier=e,this._identifier=e,this._params=G({},r||{}),this._options=G({},n||{}),this._definition=t.matcher.find(e,this._options.relative)}return t.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},t.prototype.identifier=function(){return this._identifier},t.prototype.params=function(){return this._params},t.prototype.$state=function(){return this._definition},t.prototype.state=function(){return this._definition&&this._definition.self},t.prototype.options=function(){return this._options},t.prototype.exists=function(){return!(!this._definition||!this._definition.self)},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.options().relative;if(!this._definition&&t){var e=t.name?t.name:t;return"Could not resolve '"+this.name()+"' from state '"+e+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},t.prototype.toString=function(){return"'"+this.name()+"'"+ke(this.params())},t.prototype.withState=function(e){return new t(this._stateRegistry,e,this._params,this._options)},t.prototype.withParams=function(e,r){void 0===r&&(r=!1);var n=r?e:G({},this._params,e);return new t(this._stateRegistry,this._identifier,n,this._options)},t.prototype.withOptions=function(e,r){void 0===r&&(r=!1);var n=r?e:G({},this._options,e);return new t(this._stateRegistry,this._identifier,this._params,n)},t.isDef=function(t){return t&&t.state&&(O(t.state)||O(t.state.name))},t}(),Zt={current:J,transition:null,traceData:{},bind:null},Xt=function(){function e(e,r,n,i){var o=this;this.transition=e,this.stateContext=r,this.registeredHook=n,this.options=i,this.isSuperseded=function(){return o.type.hookPhase===t.TransitionHookPhase.RUN&&!o.options.transition.isActive()},this.options=it(i,Zt),this.type=n.eventType}return e.chain=function(t,e){return t.reduce(function(t,e){return t.then(function(){return e.invokeHook()})},e||N.$q.when())},e.invokeHooks=function(t,r){for(var n=0;n=e.invokeLimit&&e.deregister()}}},e.prototype.handleHookResult=function(t){var e=this,r=this.getNotCurrentRejection();return r||(D(t)?t.then(function(t){return e.handleHookResult(t)}):(Kt.traceHookResult(t,this.transition,this.options),!1===t?qt.aborted("Hook aborted transition").toPromise():d(Yt)(t)?qt.redirected(t).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var t=this.transition.router;return t._disposed?qt.aborted("UIRouter instance #"+t.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?qt.aborted().toPromise():this.isSuperseded()?qt.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var t=this.options,e=this.registeredHook;return(c("traceData.hookType")(t)||"internal")+" context: "+(c("traceData.context.state.name")(t)||c("traceData.context")(t)||"unknown")+", "+Se(200,Ce(e.callback))},e.HANDLE_RESULT=function(t){return function(e){return t.handleHookResult(e)}},e.LOG_REJECTED_RESULT=function(t){return function(e){D(e)&&e.catch(function(e){return t.logError(qt.normalize(e))})}},e.LOG_ERROR=function(t){return function(e){return t.logError(e)}},e.REJECT_ERROR=function(t){return function(t){return At(t)}},e.THROW_ERROR=function(t){return function(t){throw t}},e}();function te(t,e){var r=O(e)?[e]:e;return!!(P(r)?r:function(t){for(var e=r,n=0;n20)throw new Error("Too many consecutive Transition redirects (20+)");var n={redirectedFrom:this,source:"redirect"};"url"===this.options().source&&!1!==t.options().location&&(n.location="replace");var i=G({},this.options(),t.options(),n);t=t.withOptions(i,!0);var o,a=this.router.transitionService.create(this._treeChanges.from,t),u=this._treeChanges.entering,s=a._treeChanges.entering;return fe.matching(s,u,fe.nonDynamicParams).filter(f((o=t.options().reloadState,function(t){return o&&t.state.includes[o.name]}))).forEach(function(t,e){t.resolvables=u[e].resolvables}),a},e.prototype._changedParams=function(){var t=this._treeChanges;if(!this._options.reload&&(!t.exiting.length&&!t.entering.length&&t.to.length===t.from.length&&!Tt(t.to,t.from).map(function(t){return t[0].state!==t[1].state}).reduce(mt,!1))){var e=t.to.map(function(t){return t.paramSchema}),r=[t.to,t.from].map(function(t){return t.map(function(t){return t.paramValues})});return Tt(e,r[0],r[1]).map(function(t){var e=t[0],r=t[1],n=t[2];return se.changed(e,r,n)}).reduce(yt,[])}},e.prototype.dynamic=function(){var t=this._changedParams();return!!t&&t.map(function(t){return t.dynamic}).reduce(mt,!1)},e.prototype.ignored=function(){return!!this._ignoredReason()},e.prototype._ignoredReason=function(){var t=this.router.globals.transition,e=this._options.reloadState,r=function(t,r){if(t.length!==r.length)return!1;var n=fe.matching(t,r);return t.length===n.filter(function(t){return!e||!t.state.includes[e.name]}).length},n=this.treeChanges(),i=t&&t.treeChanges();return i&&r(i.to,n.to)&&r(i.exiting,n.exiting)?"SameAsPending":0===n.exiting.length&&0===n.entering.length&&r(n.from,n.to)?"SameAsCurrent":void 0},e.prototype.run=function(){var e=this,r=Xt.runAllHooks,n=function(t){return e._hookBuilder.buildHooksForPhase(t)},i=n(t.TransitionHookPhase.BEFORE);return Xt.invokeHooks(i,function(){var t=e.router.globals;return t.lastStartedTransitionId=e.$id,t.transition=e,t.transitionHistory.enqueue(e),Kt.traceTransitionStart(e),N.$q.when(void 0)}).then(function(){var e=n(t.TransitionHookPhase.RUN);return Xt.invokeHooks(e,function(){return N.$q.when(void 0)})}).then(function(){Kt.traceSuccess(e.$to(),e),e.success=!0,e._deferred.resolve(e.to()),r(n(t.TransitionHookPhase.SUCCESS))},function(i){Kt.traceError(i,e),e.success=!1,e._deferred.reject(i),e._error=i,r(n(t.TransitionHookPhase.ERROR))}),this.promise},e.prototype.valid=function(){return!this.error()||void 0!==this.success},e.prototype.abort=function(){R(this.success)&&(this._aborted=!0)},e.prototype.error=function(){var t=this.$to();if(t.self.abstract)return"Cannot transition to abstract state '"+t.name+"'";var e=t.parameters(),r=this.params(),n=e.filter(function(t){return!t.validates(r[t.id])});return n.length?"Param values not valid for state '"+t.name+"'. Invalid params: [ "+n.map(function(t){return t.id}).join(", ")+" ]":!1===this.success?this._error:void 0},e.prototype.toString=function(){var t=this.from(),e=this.to(),r=function(t){return null!==t["#"]&&void 0!==t["#"]?t:st(t,["#"])};return"Transition#"+this.$id+"( '"+(x(t)?t.name:t)+"'"+ke(r(this._treeChanges.from.map(u("paramValues")).reduce(ot,{})))+" -> "+(this.valid()?"":"(X) ")+"'"+(x(e)?e.name:e)+"'"+ke(r(this.params()))+" )"},e.diToken=e,e}();function Se(t,e){return e.length<=t?e:e.substr(0,t-3)+"..."}function be(t,e){for(;e.length=0||(a.push(n[s]),o[n[s]]=this[n[s]]);return G({},o,t)},t}();function Le(t){return t.name}function Me(t){return t.self.$$state=function(){return t},t.self}function Be(t){return t.parent&&t.parent.data&&(t.data=t.self.data=K(t.parent.data,t.data)),t.data}var Ge=function(t,e){return function(r){var n=r;n&&n.url&&n.name&&n.name.match(/\.\*\*$/)&&(n.url+="{remainder:any}");var i=function(t){if(!O(t))return!1;var e="^"===t.charAt(0);return{val:e?t.substring(1):t,root:e}}(n.url),o=r.parent,a=i?t.compile(i.val,{params:r.params||{},paramMap:function(t,e){return!1===n.reloadOnSearch&&e&&(t=G(t||{},{dynamic:!0})),t}}):n.url;if(!a)return null;if(!t.isMatcher(a))throw new Error("Invalid url '"+a+"' in state '"+r+"'");return i&&i.root?a:(o&&o.navigable||e()).url.append(a)}},We=function(t){return function(e){return!t(e)&&e.url?e:e.parent?e.parent.navigable:null}},ze=function(t){return function(e){var r=e.url&&e.url.parameters({inherit:!1})||[],n=vt(ht(st(e.params||{},r.map(u("id"))),function(e,r){return t.fromConfig(r,null,e)}));return r.concat(n).map(function(t){return[t.id,t]}).reduce(Pt,{})}};function Je(t){return t.parent?t.parent.path.concat(t):[t]}function Qe(t){var e=t.parent?G({},t.parent.includes):{};return e[t.name]=!0,e}function Ke(t){var e,r,n=function(t){return t.provide||t.token},i=_([[u("resolveFn"),function(t){return new he(n(t),t.resolveFn,t.deps,t.policy)}],[u("useFactory"),function(t){return new he(n(t),t.useFactory,t.deps||t.dependencies,t.policy)}],[u("useClass"),function(t){return new he(n(t),function(){return new t.useClass},[],t.policy)}],[u("useValue"),function(t){return new he(n(t),function(){return t.useValue},[],t.policy,t.useValue)}],[u("useExisting"),function(t){return new he(n(t),z,[t.useExisting],t.policy)}]]),o=_([[a(u("val"),O),function(t){return new he(t.token,z,[t.val],t.policy)}],[a(u("val"),I),function(t){return new he(t.token,kt(t.val),t.val.slice(0,-1),t.policy)}],[a(u("val"),P),function(t){return new he(t.token,t.val,(e=t.val,r=N.$injector,e.$inject||r&&r.annotate(e,r.strictDi)||"deferred"),t.policy);var e,r}]]),s=_([[d(he),function(t){return t}],[function(t){return!(!t.token||!t.resolveFn)},i],[function(t){return!(!t.provide&&!t.token||!(t.useValue||t.useFactory||t.useExisting||t.useClass))},i],[function(t){return!!(t&&t.val&&(O(t.val)||I(t.val)||P(t.val)))},o],[y(!0),function(t){throw new Error("Invalid resolve value: "+ke(t))}]]),c=t.resolve;return(I(c)?c:(e=c,r=t.resolvePolicy||{},Object.keys(e||{}).map(function(t){return{token:t,val:e[t],deps:void 0,policy:r[t]}}))).map(s)}var Ye=function(){function t(t,e){this.matcher=t;var r=this,n=function(){return t.find("")},i=function(t){return""===t.name};this.builders={name:[Le],self:[Me],parent:[function(e){return i(e)?null:t.find(r.parentName(e))||n()}],data:[Be],url:[Ge(e,n)],navigable:[We(i)],params:[ze(e.paramFactory)],views:[],path:[Je],includes:[Qe],resolvables:[Ke]}}return t.prototype.builder=function(t,e){var r=this.builders,n=r[t]||[];return O(t)&&!E(e)?n.length>1?n:n[0]:O(t)&&P(e)?(r[t]=n,r[t].push(e),function(){return r[t].splice(r[t].indexOf(e,1))&&null}):void 0},t.prototype.build=function(t){var e=this.matcher,r=this.builders,n=this.parentName(t);if(n&&!e.find(n,void 0,!1))return null;for(var i in r)if(r.hasOwnProperty(i)){var o=r[i].reduce(function(t,e){return function(r){return e(r,t)}},J);t[i]=o(t)}return t},t.prototype.parentName=function(t){var e=t.name||"",r=e.split(".");if("**"===r.pop()&&r.pop(),r.length){if(t.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+e+")");return r.join(".")}return t.parent?O(t.parent)?t.parent:t.parent.name:""},t.prototype.name=function(t){var e=t.name;if(-1!==e.indexOf(".")||!t.parent)return e;var r=O(t.parent)?t.parent:t.parent.name;return r?r+"."+e:e},t}(),Ze=function(){function t(t){this._states=t}return t.prototype.isRelative=function(t){return 0===(t=t||"").indexOf(".")||0===t.indexOf("^")},t.prototype.find=function(t,e,r){if(void 0===r&&(r=!0),t||""===t){var n=O(t),i=n?t:t.name;this.isRelative(i)&&(i=this.resolvePath(i,e));var o=this._states[i];if(o&&(n||!(n||o!==t&&o.self!==t)))return o;if(n&&r){var a=vt(this._states).filter(function(t){return t.__stateObjectCache.nameGlob&&t.__stateObjectCache.nameGlob.matches(i)});return a.length>1&&console.log("stateMatcher.find: Found multiple matches for "+i+" using glob: ",a.map(function(t){return t.name})),a[0]}}},t.prototype.resolvePath=function(t,e){if(!e)throw new Error("No reference point given for path '"+t+"'");for(var r=this.find(e),n=t.split("."),i=n.length,o=0,a=r;o0;){var s=e.shift(),c=s.name,f=n.build(s),l=o.indexOf(s);if(f){var h=u(c);if(h&&h.name===c)throw new Error("State '"+c+"' is already defined");var p=u(c+".**");p&&this.$registry.deregister(p),r[c]=s,this.attachRoute(s),l>=0&&o.splice(l,1),i.push(s)}else{var v=a[c];if(a[c]=e.length,l>=0&&v===e.length)return e.push(s),r;l<0&&o.push(s),e.push(s)}}return i.length&&this.listeners.forEach(function(t){return t("registered",i.map(function(t){return t.self}))}),r},t.prototype.attachRoute=function(t){!t.abstract&&t.url&&this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(t))},t}(),tr=function(){function t(t){this._router=t,this.states={},this.listeners=[],this.matcher=new Ze(this.states),this.builder=new Ye(this.matcher,t.urlMatcherFactory),this.stateQueue=new Xe(this,t.urlRouter,this.states,this.builder,this.listeners),this._registerRoot()}return t.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},t.prototype.dispose=function(){var t=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach(function(e){return t.get(e)&&t.deregister(e)})},t.prototype.onStatesChanged=function(t){return this.listeners.push(t),function(){X(this.listeners)(t)}.bind(this)},t.prototype.root=function(){return this._root},t.prototype.register=function(t){return this.stateQueue.register(t)},t.prototype._deregisterTree=function(t){var e=this,r=this.get().map(function(t){return t.$$state()}),n=function(t){var e=r.filter(function(e){return-1!==t.indexOf(e.parent)});return 0===e.length?e:e.concat(n(e))},i=n([t]),o=[t].concat(i).reverse();return o.forEach(function(t){var r=e._router.urlRouter;r.rules().filter(s("state",t)).forEach(r.removeRule.bind(r)),delete e.states[t.name]}),o},t.prototype.deregister=function(t){var e=this.get(t);if(!e)throw new Error("Can't deregister state; not found: "+t);var r=this._deregisterTree(e.$$state());return this.listeners.forEach(function(t){return t("deregistered",r.map(function(t){return t.self}))}),r},t.prototype.get=function(t,e){var r=this;if(0===arguments.length)return Object.keys(this.states).map(function(t){return r.states[t].self});var n=this.matcher.find(t,e);return n&&n.self||null},t.prototype.decorator=function(t,e){return this.builder.builder(t,e)},t}();function er(t,e){var r=["",""],n=t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!e)return n;switch(e.squash){case!1:r=["(",")"+(e.isOptional?"?":"")];break;case!0:n=n.replace(/\/$/,""),r=["(?:/(",")|/)?"];break;default:r=["("+e.squash+"|",")?"]}return n+r[0]+e.type.pattern.source+r[1]}var rr=De("/"),nr=function(){function e(t,r,n,i){var o=this;this.config=i,this._cache={path:[this]},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.pattern=t,this.config=it(this.config,{params:{},strict:!0,caseInsensitive:!1,paramMap:z});for(var a,u,c,f=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,h=[],p=0,v=function(r){if(!e.nameValidator.test(r))throw new Error("Invalid parameter name '"+r+"' in pattern '"+t+"'");if(lt(o._params,s("id",r)))throw new Error("Duplicate parameter name '"+r+"' in pattern '"+t+"'")},d=function(e,n){var i,a=e[2]||e[3],u=n?e[4]:e[4]||("*"===e[1]?"[\\s\\S]*":null);return{id:a,regexp:u,cfg:o.config.params[a],segment:t.substring(p,e.index),type:u?r.type(u)||(i=u,K(r.type(n?"query":"path"),{pattern:new RegExp(i,o.config.caseInsensitive?"i":void 0)})):null}};(a=f.exec(t))&&!((u=d(a,!1)).segment.indexOf("?")>=0);)v(u.id),this._params.push(n.fromPath(u.id,u.type,this.config.paramMap(u.cfg,!1))),this._segments.push(u.segment),h.push([u.segment,kt(this._params)]),p=f.lastIndex;var m=(c=t.substring(p)).indexOf("?");if(m>=0){var y=c.substring(m);if(c=c.substring(0,m),y.length>0)for(p=0;a=l.exec(y);)v((u=d(a,!0)).id),this._params.push(n.fromSearch(u.id,u.type,this.config.paramMap(u.cfg,!0))),p=f.lastIndex}this._segments.push(c),this._compiled=h.map(function(t){return er.apply(null,t)}).concat(er(c))}return e.encodeDashes=function(t){return encodeURIComponent(t).replace(/-/g,function(t){return"%5C%"+t.charCodeAt(0).toString(16).toUpperCase()})},e.pathSegmentsAndParams=function(e){return Tt(e._segments,e._params.filter(function(e){return e.location===t.DefType.PATH}).concat(void 0)).reduce(yt,[]).filter(function(t){return""!==t&&E(t)})},e.queryParams=function(e){return e._params.filter(function(e){return e.location===t.DefType.SEARCH})},e.compare=function(t,r){var n=function(t){return t._cache.weights=t._cache.weights||function(t){return t._cache.segments=t._cache.segments||t._cache.path.map(e.pathSegmentsAndParams).reduce(yt,[]).reduce(qe,[]).map(function(t){return O(t)?rr(t):t}).reduce(yt,[])}(t).map(function(t){return"/"===t?1:O(t)?2:t instanceof se?3:void 0})},i=n(t),o=n(r);!function(t,e,r){for(var n=Math.max(t.length,e.length);t.lengthn.weight?u:n}return n},t.prototype.sync=function(t){if(!t||!t.defaultPrevented){var e=this._router,r=e.urlService,n=e.stateService,i={path:r.path(),search:r.search(),hash:r.hash()},o=this.match(i);_([[O,function(t){return r.url(t,!0)}],[Yt.isDef,function(t){return n.go(t.state,t.params,t.options)}],[d(Yt),function(t){return n.go(t.state(),t.params(),t.options())}]])(o&&o.rule.handler(o.match,i,e))}},t.prototype.listen=function(t){var e=this;if(!1!==t)return this._stopFn=this._stopFn||this._router.urlService.onChange(function(t){return e.sync(t)});this._stopFn&&this._stopFn(),delete this._stopFn},t.prototype.update=function(t){var e=this._router.locationService;t?this.location=e.url():e.url()!==this.location&&e.url(this.location,!0)},t.prototype.push=function(t,e,r){var n=r&&!!r.replace;this._router.urlService.url(t.format(e||{}),n)},t.prototype.href=function(t,e,r){var n=t.format(e);if(null==n)return null;r=r||{absolute:!1};var i=this._router.urlService.config,o=i.html5Mode();if(o||null===n||(n="#"+i.hashPrefix()+n),n=function(t,e,r,n){return"/"===n?t:e?Ie(n)+t:r?n.slice(1)+t:t}(n,o,r.absolute,i.baseHref()),!r.absolute||!n)return n;var a=!o&&n?"/":"",u=i.port(),s=80===u||443===u?"":":"+u;return[i.protocol(),"://",i.host(),s,a,n].join("")},t.prototype.rule=function(t){var e=this;if(!or.isUrlRule(t))throw new Error("invalid rule");return t.$id=this._id++,t.priority=t.priority||0,this._rules.push(t),this._sorted=!1,function(){return e.removeRule(t)}},t.prototype.removeRule=function(t){X(this._rules,t)},t.prototype.rules=function(){return this.ensureSorted(),this._rules.slice()},t.prototype.otherwise=function(t){var e=cr(t);this._otherwiseFn=this.urlRuleFactory.create(y(!0),e),this._sorted=!1},t.prototype.initial=function(t){var e=cr(t);this.rule(this.urlRuleFactory.create(function(t,e){return 0===e.globals.transitionHistory.size()&&!!/^\/?$/.exec(t.path)},e))},t.prototype.when=function(t,e,r){var n=this.urlRuleFactory.create(t,e);return E(r&&r.priority)&&(n.priority=r.priority),this.rule(n),n},t.prototype.deferIntercept=function(t){void 0===t&&(t=!0),this.interceptDeferred=t},t}();function cr(t){if(!(P(t)||O(t)||d(Yt)(t)||Yt.isDef(t)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return P(t)?t:y(t)}var fr=function(){function t(){var t=this;this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return X(t._listeners,e)}}}}return t.normalizeUIViewTarget=function(t,e){void 0===e&&(e="");var r=e.split("@"),n=r[0]||"$default",i=O(r[1])?r[1]:"^",o=/^(\^(?:\.\^)*)\.(.*$)/.exec(n);o&&(i=o[1],n=o[2]),"!"===n.charAt(0)&&(n=n.substr(1),i="");/^(\^(?:\.\^)*)$/.exec(i)?i=i.split(".").reduce(function(t,e){return t.parent},t).name:"."===i&&(i=t.name);return{uiViewName:n,uiViewContextAnchor:i}},t.prototype._rootViewContext=function(t){return this._rootContext=t||this._rootContext},t.prototype._viewConfigFactory=function(t,e){this._viewConfigFactories[t]=e},t.prototype.createViewConfig=function(t,e){var r=this._viewConfigFactories[e.$type];if(!r)throw new Error("ViewService: No view config factory registered for type "+e.$type);var n=r(t,e);return I(n)?n:[n]},t.prototype.deactivateViewConfig=function(t){Kt.traceViewServiceEvent("<- Removing",t),X(this._viewConfigs,t)},t.prototype.activateViewConfig=function(t){Kt.traceViewServiceEvent("-> Registering",t),this._viewConfigs.push(t)},t.prototype.sync=function(){var e=this,r=this._uiViews.map(function(t){return[t.fqn,t]}).reduce(Pt,{});function n(t){for(var e=t.viewDecl.$context,r=0;++r&&e.parent;)e=e.parent;return r}var o=i(function(t,e,r,n){return e*(t(r)-t(n))}),a=this._uiViews.sort(o(function(t){var e=function(t){return t&&t.parent?e(t.parent)+1:1};return 1e4*t.fqn.split(".").length+e(t.creationContext)},1)).map(function(i){var a=e._viewConfigs.filter(t.matches(r,i));return a.length>1&&a.sort(o(n,-1)),{uiView:i,viewConfig:a[0]}}),u=a.map(function(t){return t.viewConfig}),s=this._viewConfigs.filter(function(t){return!Y(u,t)}).map(function(t){return{uiView:void 0,viewConfig:t}});a.forEach(function(t){-1!==e._uiViews.indexOf(t.uiView)&&t.uiView.configUpdated(t.viewConfig)});var c=a.concat(s);this._listeners.forEach(function(t){return t(c)}),Kt.traceViewSync(c)},t.prototype.registerUIView=function(t){Kt.traceViewServiceUIViewEvent("-> Registering",t);var e=this._uiViews;return e.filter(function(e){return e.fqn===t.fqn&&e.$type===t.$type}).length&&Kt.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",t),e.push(t),this.sync(),function(){-1!==e.indexOf(t)?(Kt.traceViewServiceUIViewEvent("<- Deregistering",t),X(e)(t)):Kt.traceViewServiceUIViewEvent("Tried removing non-registered uiView",t)}},t.prototype.available=function(){return this._uiViews.map(u("fqn"))},t.prototype.active=function(){return this._uiViews.filter(u("$config")).map(u("name"))},t.matches=function(t,e){return function(r){if(e.$type!==r.viewDecl.$type)return!1;var n=r.viewDecl,i=n.$uiViewName.split("."),o=e.fqn.split(".");if(!W(i,o.slice(0-i.length)))return!1;var a=1-i.length||void 0,u=o.slice(0,a).join("."),s=t[u].creationContext;return n.$uiViewContextAnchor===(s&&s.name)}},t}(),lr=function(){function t(){this.params=new Ue,this.lastStartedTransitionId=-1,this.transitionHistory=new Ht([],1),this.successfulTransitions=new Ht([],1)}return t.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},t}(),hr=function(t){return t.reduce(function(t,e){return t[e]=q(e),t},{dispose:J})},pr=["url","path","search","hash","onChange"],vr=["port","protocol","host","baseHref","html5Mode","hashPrefix"],dr=["type","caseInsensitive","strictMode","defaultSquashPolicy"],mr=["sort","when","initial","otherwise","rules","rule","removeRule"],yr=["deferIntercept","listen","sync","match"],gr=function(){function t(t,e){void 0===e&&(e=!0),this.router=t,this.rules={},this.config={};var r=function(){return t.locationService};Q(r,this,r,pr,e);var n=function(){return t.locationConfig};Q(n,this.config,n,vr,e);var i=function(){return t.urlMatcherFactory};Q(i,this.config,i,dr);var o=function(){return t.urlRouter};Q(o,this.rules,o,mr),Q(o,this,o,yr)}return t.prototype.url=function(t,e,r){},t.prototype.path=function(){},t.prototype.search=function(){},t.prototype.hash=function(){},t.prototype.onChange=function(t){},t.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},t.prototype.dispose=function(){},t.prototype.sync=function(t){},t.prototype.listen=function(t){},t.prototype.deferIntercept=function(t){},t.prototype.match=function(t){},t.locationServiceStub=hr(pr),t.locationConfigStub=hr(vr),t}(),_r=0,wr=function(){function t(t,e){void 0===t&&(t=gr.locationServiceStub),void 0===e&&(e=gr.locationConfigStub),this.locationService=t,this.locationConfig=e,this.$id=_r++,this._disposed=!1,this._disposables=[],this.trace=Kt,this.viewService=new fr,this.globals=new lr,this.transitionService=new Lr(this),this.urlMatcherFactory=new ir,this.urlRouter=new sr(this),this.stateRegistry=new tr(this),this.stateService=new Mr(this),this.urlService=new gr(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlRouter),this.disposable(t),this.disposable(e)}return t.prototype.disposable=function(t){this._disposables.push(t)},t.prototype.dispose=function(t){var e=this;t&&P(t.dispose)?t.dispose(this):(this._disposed=!0,this._disposables.slice().forEach(function(t){try{"function"==typeof t.dispose&&t.dispose(e),X(e._disposables,t)}catch(t){}}))},t.prototype.plugin=function(t,e){void 0===e&&(e={});var r=new t(this,e);if(!r.name)throw new Error("Required property `name` missing on plugin: "+r);return this._disposables.push(r),this._plugins[r.name]=r},t.prototype.getPlugin=function(t){return t?this._plugins[t]:vt(this._plugins)},t}();function $r(t){t.addResolvable(he.fromData(wr,t.router),""),t.addResolvable(he.fromData($e,t),""),t.addResolvable(he.fromData("$transition$",t),""),t.addResolvable(he.fromData("$stateParams",t.params()),""),t.entering().forEach(function(e){t.addResolvable(he.fromData("$state$",e),e)})}var Sr=Y(["$transition$",$e]),br=function(t){var e=function(t){return Sr(t.token)?he.fromData(t.token,null):t},r=t.treeChanges();ht(r,function(t){return t.map(function(t){var r=t.resolvables.map(e);return G(t.clone(),{resolvables:r})})},r)},Rr=function(t){var e=t.to().redirectTo;if(e){var r=t.router.stateService;return P(e)?N.$q.when(e(t)).then(n):n(e)}function n(e){if(e)return e instanceof Yt?e:O(e)?r.target(e,t.params(),t.options()):e.state||e.params?r.target(e.state||t.to(),e.params||t.params(),t.options()):void 0}};function Er(t){return function(e,r){return(0,r.$$state()[t])(e,r)}}var Cr=Er("onExit"),Tr=Er("onRetain"),Pr=Er("onEnter"),kr=function(t){return new ge(t.treeChanges().to).resolvePath("EAGER",t).then(J)},Or=function(t,e){return new ge(t.treeChanges().to).subContext(e.$$state()).resolvePath("LAZY",t).then(J)},xr=function(t){return new ge(t.treeChanges().to).resolvePath("LAZY",t).then(J)},Ir=function(t){var e=N.$q,r=t.views("entering");if(r.length)return e.all(r.map(function(t){return e.when(t.load())})).then(J)},Vr=function(t){var e=t.views("entering"),r=t.views("exiting");if(e.length||r.length){var n=t.router.viewService;r.forEach(function(t){return n.deactivateViewConfig(t)}),e.forEach(function(t){return n.activateViewConfig(t)}),n.sync()}},jr=function(t){var e=t.router.globals,r=function(){e.transition===t&&(e.transition=null)};t.onSuccess({},function(){e.successfulTransitions.enqueue(t),e.$current=t.$to(),e.current=e.$current.self,Ot(t.params(),e.params)},{priority:1e4}),t.promise.then(r,r)},Ar=function(t){var e=t.options(),r=t.router.stateService,n=t.router.urlRouter;if("url"!==e.source&&e.location&&r.$current.navigable){var i={replace:"replace"===e.location};n.push(r.$current.navigable.url,r.params,i)}n.update(!0)},Hr=function(t){var e=t.router;var r=t.entering().filter(function(t){return!!t.$$state().lazyLoad}).map(function(e){return Dr(t,e)});return N.$q.all(r).then(function(){if("url"!==t.originalTransition().options().source){var r=t.targetState();return e.stateService.target(r.identifier(),r.params(),r.options())}var n=e.urlService,i=n.match(n.parts()),o=i&&i.rule;if(o&&"STATE"===o.type){var a=o.state,u=i.match;return e.stateService.target(a,u,t.options())}e.urlService.sync()})};function Dr(t,e){var r=e.$$state().lazyLoad,n=r._promise;if(!n){n=r._promise=N.$q.when(r(t,e)).then(function(e){e&&Array.isArray(e.states)&&e.states.forEach(function(e){return t.router.stateRegistry.register(e)});return e}).then(function(t){return delete e.lazyLoad,delete e.$$state().lazyLoad,delete r._promise,t},function(t){return delete r._promise,N.$q.reject(t)})}return n}var qr=function(){return function(t,e,r,n,i,o,a,u){void 0===i&&(i=!1),void 0===o&&(o=Xt.HANDLE_RESULT),void 0===a&&(a=Xt.REJECT_ERROR),void 0===u&&(u=!1),this.name=t,this.hookPhase=e,this.hookOrder=r,this.criteriaMatchPath=n,this.reverseSort=i,this.getResultHandler=o,this.getErrorHandler=a,this.synchronous=u}}();function Nr(t){var e=t._ignoredReason();if(e){Kt.traceTransitionIgnored(t);var r=t.router.globals.transition;return"SameAsCurrent"===e&&r&&r.abort(),qt.ignored().toPromise()}}function Fr(t){if(!t.valid())throw new Error(t.error())}var Ur={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,custom:{},current:function(){return null},source:"unknown"},Lr=function(){function e(t){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=t,this.$view=t.viewService,this._deregisterHookFns={},this._pluginapi=Q(y(this),{},y(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),t.globals.successfulTransitions.onEvict(br)}return e.prototype.onCreate=function(t,e,r){},e.prototype.onBefore=function(t,e,r){},e.prototype.onStart=function(t,e,r){},e.prototype.onExit=function(t,e,r){},e.prototype.onRetain=function(t,e,r){},e.prototype.onEnter=function(t,e,r){},e.prototype.onFinish=function(t,e,r){},e.prototype.onSuccess=function(t,e,r){},e.prototype.onError=function(t,e,r){},e.prototype.dispose=function(t){vt(this._registeredHooks).forEach(function(t){return t.forEach(function(e){e._deregistered=!0,X(t,e)})})},e.prototype.create=function(t,e){return new $e(t,e,this._router)},e.prototype._defineCoreEvents=function(){var e=t.TransitionHookPhase,r=Xt,n=this._criteriaPaths;this._defineEvent("onCreate",e.CREATE,0,n.to,!1,r.LOG_REJECTED_RESULT,r.THROW_ERROR,!0),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,!1,r.LOG_REJECTED_RESULT,r.LOG_ERROR,!0),this._defineEvent("onError",e.ERROR,0,n.to,!1,r.LOG_REJECTED_RESULT,r.LOG_ERROR,!0)},e.prototype._defineCorePaths=function(){var e=t.TransitionHookScope.STATE,r=t.TransitionHookScope.TRANSITION;this._definePathType("to",r),this._definePathType("from",r),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(t,e,r,n,i,o,a,u){void 0===i&&(i=!1),void 0===o&&(o=Xt.HANDLE_RESULT),void 0===a&&(a=Xt.REJECT_ERROR),void 0===u&&(u=!1);var s=new qr(t,e,r,n,i,o,a,u);this._eventTypes.push(s),re(this,this,s)},e.prototype._getEvents=function(t){return(E(t)?this._eventTypes.filter(function(e){return e.hookPhase===t}):this._eventTypes.slice()).sort(function(t,e){var r=t.hookPhase-e.hookPhase;return 0===r?t.hookOrder-e.hookOrder:r})},e.prototype._definePathType=function(t,e){this._criteriaPaths[t]={name:t,scope:e}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(t){return this._registeredHooks[t]},e.prototype._registerCoreTransitionHooks=function(){var t=this._deregisterHookFns;t.addCoreResolves=this.onCreate({},$r),t.ignored=function(t){return t.onBefore({},Nr,{priority:-9999})}(this),t.invalid=function(t){return t.onBefore({},Fr,{priority:-1e4})}(this),t.redirectTo=function(t){return t.onStart({to:function(t){return!!t.redirectTo}},Rr)}(this),t.onExit=function(t){return t.onExit({exiting:function(t){return!!t.onExit}},Cr)}(this),t.onRetain=function(t){return t.onRetain({retained:function(t){return!!t.onRetain}},Tr)}(this),t.onEnter=function(t){return t.onEnter({entering:function(t){return!!t.onEnter}},Pr)}(this),t.eagerResolve=function(t){return t.onStart({},kr,{priority:1e3})}(this),t.lazyResolve=function(t){return t.onEnter({entering:y(!0)},Or,{priority:1e3})}(this),t.resolveAll=function(t){return t.onFinish({},xr,{priority:1e3})}(this),t.loadViews=function(t){return t.onFinish({},Ir)}(this),t.activateViews=function(t){return t.onSuccess({},Vr)}(this),t.updateGlobals=function(t){return t.onCreate({},jr)}(this),t.updateUrl=function(t){return t.onSuccess({},Ar,{priority:9999})}(this),t.lazyLoad=function(t){return t.onBefore({entering:function(t){return!!t.lazyLoad}},Hr)}(this)},e}(),Mr=function(){function e(t){this.router=t,this.invalidCallbacks=[],this._defaultErrorHandler=function(t){t instanceof Error&&t.stack?(console.error(t),console.error(t.stack)):t instanceof qt?(console.error(t.toString()),t.detail&&t.detail.stack&&console.error(t.detail.stack)):console.error(t)};var r=Object.keys(e.prototype).filter(f(Y(["current","$current","params","transition"])));Q(y(e.prototype),this,y(this),r)}return Object.defineProperty(e.prototype,"transition",{get:function(){return this.router.globals.transition},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"params",{get:function(){return this.router.globals.params},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.router.globals.current},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"$current",{get:function(){return this.router.globals.$current},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this.defaultErrorHandler(J),this.invalidCallbacks=[]},e.prototype._handleInvalidTargetState=function(t,e){var r=this,n=fe.makeTargetState(this.router.stateRegistry,t),i=this.router.globals,o=function(){return i.transitionHistory.peekTail()},a=o(),u=new Ht(this.invalidCallbacks.slice()),s=new ge(t).injector(),c=function(t){if(t instanceof Yt){var e=t;return(e=r.target(e.identifier(),e.params(),e.options())).valid()?o()!==a?qt.superseded().toPromise():r.transitionTo(e.identifier(),e.params(),e.options()):qt.invalid(e.error()).toPromise()}};return function t(){var r=u.dequeue();return void 0===r?qt.invalid(e.error()).toPromise():N.$q.when(r(e,n,s)).then(c).then(function(e){return e||t()})}()},e.prototype.onInvalid=function(t){return this.invalidCallbacks.push(t),function(){X(this.invalidCallbacks)(t)}.bind(this)},e.prototype.reload=function(t){return this.transitionTo(this.current,this.params,{reload:!E(t)||t,inherit:!1,notify:!1})},e.prototype.go=function(t,e,r){var n=it(r,{relative:this.$current,inherit:!0},Ur);return this.transitionTo(t,e,n)},e.prototype.target=function(t,e,r){if(void 0===r&&(r={}),x(r.reload)&&!r.reload.name)throw new Error("Invalid reload state object");var n=this.router.stateRegistry;if(r.reloadState=!0===r.reload?n.root():n.matcher.find(r.reload,r.relative),r.reload&&!r.reloadState)throw new Error("No such reload state '"+(O(r.reload)?r.reload:r.reload.name)+"'");return new Yt(this.router.stateRegistry,t,e,r)},e.prototype.getCurrentPath=function(){var t=this,e=this.router.globals.successfulTransitions.peekTail();return e?e.treeChanges().to:[new ce(t.router.stateRegistry.root())]},e.prototype.transitionTo=function(e,r,n){var i=this;void 0===r&&(r={}),void 0===n&&(n={});var o=this.router,a=o.globals;n=it(n,Ur);n=G(n,{current:function(){return a.transition}});var u=this.target(e,r,n),s=this.getCurrentPath();if(!u.exists())return this._handleInvalidTargetState(s,u);if(!u.valid())return At(u.error());var c=function(e){return function(r){if(r instanceof qt){var n=o.globals.lastStartedTransitionId===e.$id;if(r.type===t.RejectType.IGNORED)return n&&o.urlRouter.update(),N.$q.when(a.current);var u=r.detail;if(r.type===t.RejectType.SUPERSEDED&&r.redirected&&u instanceof Yt){var s=e.redirect(u);return s.run().catch(c(s))}if(r.type===t.RejectType.ABORTED)return n&&o.urlRouter.update(),N.$q.reject(r)}return i.defaultErrorHandler()(r),N.$q.reject(r)}},f=this.router.transitionService.create(s,u),l=f.run().catch(c(f));return jt(l),G(l,{transition:f})},e.prototype.is=function(t,e,r){r=it(r,{relative:this.$current});var n=this.router.stateRegistry.matcher.find(t,r.relative);if(E(n)){if(this.$current!==n)return!1;if(!e)return!0;var i=n.parameters({inherit:!0,matchingKeys:e});return se.equals(i,se.values(i,e),this.params)}},e.prototype.includes=function(t,e,r){r=it(r,{relative:this.$current});var n=O(t)&&w.fromString(t);if(n){if(!n.matches(this.$current.name))return!1;t=this.$current.name}var i=this.router.stateRegistry.matcher.find(t,r.relative),o=this.$current.includes;if(E(i)){if(!E(o[i.name]))return!1;if(!e)return!0;var a=i.parameters({inherit:!0,matchingKeys:e});return se.equals(a,se.values(a,e),this.params)}},e.prototype.href=function(t,e,r){r=it(r,{lossy:!0,inherit:!0,absolute:!1,relative:this.$current}),e=e||{};var n=this.router.stateRegistry.matcher.find(t,r.relative);if(!E(n))return null;r.inherit&&(e=this.params.$inherit(e,this.$current,n));var i=n&&r.lossy?n.navigable:n;return i&&void 0!==i.url&&null!==i.url?this.router.urlRouter.href(i.url,e,{absolute:r.absolute}):null},e.prototype.defaultErrorHandler=function(t){return this._defaultErrorHandler=t||this._defaultErrorHandler},e.prototype.get=function(t,e){var r=this.router.stateRegistry;return 0===arguments.length?r.get():r.get(t,e||this.$current)},e.prototype.lazyLoad=function(t,e){var r=this.get(t);if(!r||!r.lazyLoad)throw new Error("Can not lazy load "+t);var n=this.getCurrentPath(),i=fe.makeTargetState(this.router.stateRegistry,n);return Dr(e=e||this.router.transitionService.create(n,i),r)},e}(),Br={when:function(t){return new Promise(function(e,r){return e(t)})},reject:function(t){return new Promise(function(e,r){r(t)})},defer:function(){var t={};return t.promise=new Promise(function(e,r){t.resolve=e,t.reject=r}),t},all:function(t){if(I(t))return Promise.all(t);if(x(t)){var e=Object.keys(t).map(function(e){return t[e].then(function(t){return{key:e,val:t}})});return Br.all(e).then(function(t){return t.reduce(function(t,e){return t[e.key]=e.val,t},{})})}}},Gr={},Wr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,zr=/([^\s,]+)/g,Jr={get:function(t){return Gr[t]},has:function(t){return null!=Jr.get(t)},invoke:function(t,e,r){var n=G({},Gr,r||{}),i=Jr.annotate(t),o=bt(function(t){return n.hasOwnProperty(t)},function(t){return"DI can't find injectable: '"+t+"'"}),a=i.filter(o).map(function(t){return n[t]});return P(t)?t.apply(e,a):t.slice(-1)[0].apply(e,a)},annotate:function(t){if(!H(t))throw new Error("Not an injectable function: "+t);if(t&&t.$inject)return t.$inject;if(I(t))return t.slice(0,-1);var e=t.toString().replace(Wr,"");return e.slice(e.indexOf("(")+1,e.indexOf(")")).match(zr)||[]}},Qr=function(t,e){var r=e[0],n=e[1];return t.hasOwnProperty(r)?I(t[r])?t[r].push(n):t[r]=[t[r],n]:t[r]=n,t},Kr=function(t){return t.split("&").filter(z).map(Ae).reduce(Qr,{})};function Yr(t){var e=function(t){return t||""},r=Ve(t).map(e),n=r[0],i=r[1],o=je(n).map(e);return{path:o[0],search:o[1],hash:i,url:t}}var Zr=function(t){var e=t.path(),r=t.search(),n=t.hash(),i=Object.keys(r).map(function(t){var e=r[t];return(I(e)?e:[e]).map(function(e){return t+"="+e})}).reduce(yt,[]).join("&");return e+(i?"?"+i:"")+(n?"#"+n:"")};function Xr(t,e,r,n){return function(i){var o=i.locationService=new r(i),a=i.locationConfig=new n(i,e);return{name:t,service:o,configuration:a,dispose:function(t){t.dispose(o),t.dispose(a)}}}}var tn,en=function(){function t(t,e){var r=this;this.fireAfterUpdate=e,this._listeners=[],this._listener=function(t){return r._listeners.forEach(function(e){return e(t)})},this.hash=function(){return Yr(r._get()).hash},this.path=function(){return Yr(r._get()).path},this.search=function(){return Kr(Yr(r._get()).search)},this._location=F.location,this._history=F.history}return t.prototype.url=function(t,e){return void 0===e&&(e=!0),E(t)&&t!==this._get()&&(this._set(null,null,t,e),this.fireAfterUpdate&&this._listeners.forEach(function(e){return e({url:t})})),Zr(this)},t.prototype.onChange=function(t){var e=this;return this._listeners.push(t),function(){return X(e._listeners,t)}},t.prototype.dispose=function(t){nt(this._listeners)},t}(),rn=(tn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}tn(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),nn=function(t){function e(e){var r=t.call(this,e,!1)||this;return F.addEventListener("hashchange",r._listener,!1),r}return rn(e,t),e.prototype._get=function(){return He(this._location.hash)},e.prototype._set=function(t,e,r,n){this._location.hash=r},e.prototype.dispose=function(e){t.prototype.dispose.call(this,e),F.removeEventListener("hashchange",this._listener)},e}(en),on=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),an=function(t){function e(e){return t.call(this,e,!0)||this}return on(e,t),e.prototype._get=function(){return this._url},e.prototype._set=function(t,e,r,n){this._url=r},e}(en),un=function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),sn=function(t){function e(e){var r=t.call(this,e,!0)||this;return r._config=e.urlService.config,F.addEventListener("popstate",r._listener,!1),r}return un(e,t),e.prototype._getBasePrefix=function(){return Ie(this._config.baseHref())},e.prototype._get=function(){var t=this._location,e=t.pathname,r=t.hash,n=t.search;n=je(n)[1],r=Ve(r)[1];var i=this._getBasePrefix(),o=e===this._config.baseHref(),a=e.substr(0,i.length)===i;return(e=o?"/":a?e.substring(i.length):e)+(n?"?"+n:"")+(r?"#"+r:"")},e.prototype._set=function(t,e,r,n){var i=this._getBasePrefix(),o=r&&"/"!==r[0]?"/":"",a=""===r||"/"===r?this._config.baseHref():i+o+r;n?this._history.replaceState(t,e,a):this._history.pushState(t,e,a)},e.prototype.dispose=function(e){t.prototype.dispose.call(this,e),F.removeEventListener("popstate",this._listener)},e}(en),cn=function(){return function(){var t=this;this.dispose=J,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return t._port},this.protocol=function(){return t._protocol},this.host=function(){return t._host},this.baseHref=function(){return t._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(e){return E(e)?t._hashPrefix=e:t._hashPrefix}}}(),fn=function(){function t(t,e){void 0===e&&(e=!1),this._isHtml5=e,this._baseHref=void 0,this._hashPrefix=""}return t.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},t.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},t.prototype.host=function(){return location.hostname},t.prototype.html5Mode=function(){return this._isHtml5},t.prototype.hashPrefix=function(t){return E(t)?this._hashPrefix=t:this._hashPrefix},t.prototype.baseHref=function(t){return E(t)?this._baseHref=t:E(this._baseHref)?this._baseHref:this.applyDocumentBaseHref()},t.prototype.applyDocumentBaseHref=function(){var t=document.getElementsByTagName("base")[0];return this._baseHref=t?t.href.substr(location.origin.length):location.pathname||"/"},t.prototype.dispose=function(){},t}();function ln(t){return N.$injector=Jr,N.$q=Br,{name:"vanilla.services",$q:Br,$injector:Jr,dispose:function(){return null}}}var hn=Xr("vanilla.hashBangLocation",!1,nn,fn),pn=Xr("vanilla.pushStateLocation",!0,sn,fn),vn=Xr("vanilla.memoryLocation",!1,an,cn),dn=function(){function t(){}return t.prototype.dispose=function(t){},t}(),mn=Object.freeze({root:F,fromJson:L,toJson:M,forEach:B,extend:G,equals:W,identity:z,noop:J,createProxyFunctions:Q,inherit:K,inArray:Y,_inArray:Z,removeFrom:X,_removeFrom:tt,pushTo:et,_pushTo:rt,deregAll:nt,defaults:it,mergeR:ot,ancestors:at,pick:ut,omit:st,pluck:ct,filter:ft,find:lt,mapObj:ht,map:pt,values:vt,allTrueR:dt,anyTrueR:mt,unnestR:yt,flattenR:gt,pushR:_t,uniqR:wt,unnest:$t,flatten:St,assertPredicate:bt,assertMap:Rt,assertFn:Et,pairs:Ct,arrayTuples:Tt,applyPairs:Pt,tail:kt,copy:Ot,_extend:xt,silenceUncaughtInPromise:jt,silentRejection:At,notImplemented:q,services:N,Glob:w,curry:i,compose:o,pipe:a,prop:u,propEq:s,parse:c,not:f,and:l,or:h,all:p,any:v,is:d,eq:m,val:y,invoke:g,pattern:_,isUndefined:R,isDefined:E,isNull:C,isNullOrUndefined:T,isFunction:P,isNumber:k,isString:O,isObject:x,isArray:I,isDate:V,isRegExp:j,isState:A,isInjectable:H,isPromise:D,Queue:Ht,maxLength:Se,padString:be,kebobString:Re,functionToString:Ee,fnToString:Ce,stringify:ke,beforeAfterSubstr:Oe,hostRegex:xe,stripLastPathElement:Ie,splitHash:Ve,splitQuery:je,splitEqual:Ae,trimHashVal:He,splitOnDelim:De,joinNeighborsR:qe,get Category(){return t.Category},Trace:Qt,trace:Kt,get DefType(){return t.DefType},Param:se,ParamTypes:Fe,StateParams:Ue,ParamType:ie,PathNode:ce,PathUtils:fe,resolvePolicies:pe,defaultResolvePolicy:le,Resolvable:he,NATIVE_INJECTOR_TOKEN:ye,ResolveContext:ge,resolvablesBuilder:Ke,StateBuilder:Ye,StateObject:$,StateMatcher:Ze,StateQueueManager:Xe,StateRegistry:tr,StateService:Mr,TargetState:Yt,get TransitionHookPhase(){return t.TransitionHookPhase},get TransitionHookScope(){return t.TransitionHookScope},HookBuilder:ne,matchState:te,RegisteredHook:ee,makeEvent:re,get RejectType(){return t.RejectType},Rejection:qt,Transition:$e,TransitionHook:Xt,TransitionEventType:qr,defaultTransOpts:Ur,TransitionService:Lr,UrlMatcher:nr,UrlMatcherFactory:ir,UrlRouter:sr,UrlRuleFactory:or,BaseUrlRule:ar,UrlService:gr,ViewService:fr,UIRouterGlobals:lr,UIRouter:wr,$q:Br,$injector:Jr,BaseLocationServices:en,HashLocationService:nn,MemoryLocationService:an,PushStateLocationService:sn,MemoryLocationConfig:cn,BrowserLocationConfig:fn,keyValsToObjectR:Qr,getParams:Kr,parseUrl:Yr,buildUrl:Zr,locationPluginFactory:Xr,servicesPlugin:ln,hashLocationPlugin:hn,pushStateLocationPlugin:pn,memoryLocationPlugin:vn,UIRouterPluginBase:dn});function yn(){var t=null;return function(e,r){return t=t||N.$injector.get("$templateFactory"),[new $n(e,r,t)]}}var gn=function(t,e){return t.reduce(function(t,r){return t||E(e[r])},!1)};function _n(t){if(!t.parent)return{};var e=["component","bindings","componentProvider"],r=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),n=e.concat(r);if(E(t.views)&&gn(n,t))throw new Error("State '"+t.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level. Move the following properties into a view (in the 'views' object): "+n.filter(function(e){return E(t[e])}).join(", "));var i={},o=t.views||{$default:ut(t,n)};return B(o,function(n,o){if(o=o||"$default",O(n)&&(n={component:n}),n=G({},n),gn(e,n)&&gn(r,n))throw new Error("Cannot combine: "+e.join("|")+" with: "+r.join("|")+" in stateview: '"+o+"@"+t.name+"'");n.resolveAs=n.resolveAs||"$resolve",n.$type="ng1",n.$context=t,n.$name=o;var a=fr.normalizeUIViewTarget(n.$context,n.$name);n.$uiViewName=a.uiViewName,n.$uiViewContextAnchor=a.uiViewContextAnchor,i[o]=n}),i}var wn=0,$n=function(){function t(t,e,r){var n=this;this.path=t,this.viewDecl=e,this.factory=r,this.$id=wn++,this.loaded=!1,this.getTemplate=function(t,e){return n.component?n.factory.makeComponentTemplate(t,e,n.component,n.viewDecl.bindings):n.template}}return t.prototype.load=function(){var t=this,e=N.$q,r=new ge(this.path),n=this.path.reduce(function(t,e){return G(t,e.paramValues)},{}),i={template:e.when(this.factory.fromConfig(this.viewDecl,n,r)),controller:e.when(this.getController(r))};return e.all(i).then(function(e){return Kt.traceViewServiceEvent("Loaded",t),t.controller=e.controller,G(t,e.template),t})},t.prototype.getController=function(t){var e=this.viewDecl.controllerProvider;if(!H(e))return this.viewDecl.controller;var r=N.$injector.annotate(e),n=I(e)?kt(e):e;return new he("",n,r).get(t)},t}(),Sn=function(){function t(){var t=this;this._useHttp=n.version.minor<3,this.$get=["$http","$templateCache","$injector",function(e,r,n){return t.$templateRequest=n.has&&n.has("$templateRequest")&&n.get("$templateRequest"),t.$http=e,t.$templateCache=r,t}]}return t.prototype.useHttpService=function(t){this._useHttp=t},t.prototype.fromConfig=function(t,e,r){var n=function(t){return N.$q.when(t).then(function(t){return{template:t}})},i=function(t){return N.$q.when(t).then(function(t){return{component:t}})};return E(t.template)?n(this.fromString(t.template,e)):E(t.templateUrl)?n(this.fromUrl(t.templateUrl,e)):E(t.templateProvider)?n(this.fromProvider(t.templateProvider,e,r)):E(t.component)?i(t.component):E(t.componentProvider)?i(this.fromComponentProvider(t.componentProvider,e,r)):n("")},t.prototype.fromString=function(t,e){return P(t)?t(e):t},t.prototype.fromUrl=function(t,e){return P(t)&&(t=t(e)),null==t?null:this._useHttp?this.$http.get(t,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then(function(t){return t.data}):this.$templateRequest(t)},t.prototype.fromProvider=function(t,e,r){var n=N.$injector.annotate(t),i=I(t)?kt(t):t;return new he("",i,n).get(r)},t.prototype.fromComponentProvider=function(t,e,r){var n=N.$injector.annotate(t),i=I(t)?kt(t):t;return new he("",i,n).get(r)},t.prototype.makeComponentTemplate=function(t,e,r,i){i=i||{};var o=n.version.minor>=3?"::":"",a=function(t){var e=Re(t);return/^(x|data)-/.exec(e)?"x-"+e:e},u=function(t){var e=N.$injector.get(t+"Directive");if(!e||!e.length)throw new Error("Unable to find component named '"+t+"'");return e.map(bn).reduce(yt,[])}(r).map(function(r){var n=r.name,u=r.type,s=a(n);if(t.attr(s)&&!i[n])return s+"='"+t.attr(s)+"'";var c=i[n]||n;if("@"===u)return s+"='{{"+o+"$resolve."+c+"}}'";if("&"===u){var f=e.getResolvable(c),l=f&&f.data,h=l&&N.$injector.annotate(l)||[];return s+"='$resolve."+c+(I(l)?"["+(l.length-1)+"]":"")+"("+h.join(",")+")'"}return s+"='"+o+"$resolve."+c+"'"}).join(" "),s=a(r);return"<"+s+" "+u+">"},t}();var bn=function(t){return x(t.bindToController)?Rn(t.bindToController):Rn(t.scope)},Rn=function(t){return Object.keys(t||{}).map(function(e){return[e,/^([=<@&])[?]?(.*)/.exec(t[e])]}).filter(function(t){return E(t)&&I(t[1])}).map(function(t){return{name:t[1][2]||t[0],type:t[1][1]}})},En=function(){function t(e,r){this.stateRegistry=e,this.stateService=r,Q(y(t.prototype),this,y(this))}return t.prototype.decorator=function(t,e){return this.stateRegistry.decorator(t,e)||this},t.prototype.state=function(t,e){return x(t)?e=t:e.name=t,this.stateRegistry.register(e),this},t.prototype.onInvalid=function(t){return this.stateService.onInvalid(t)},t}(),Cn=function(t){return function(e,r){var n=e[t],i="onExit"===t?"from":"to";return n?function(t,e){var r=new ge(t.treeChanges(i)).subContext(e.$$state()),o=G(Mn(r),{$state$:e,$transition$:t});return N.$injector.invoke(n,this,o)}:void 0}},Tn=function(){function t(t){this._urlListeners=[],this.$locationProvider=t;var e=y(t);Q(e,this,e,["hashPrefix"])}return t.monkeyPatchPathParameterType=function(t){var e=t.urlMatcherFactory.type("path");e.encode=function(t){return null!=t?t.toString().replace(/(~|\/)/g,function(t){return{"~":"~~","/":"~2F"}[t]}):t},e.decode=function(t){return null!=t?t.toString().replace(/(~~|~2F)/g,function(t){return{"~~":"~","~2F":"/"}[t]}):t}},t.prototype.dispose=function(){},t.prototype.onChange=function(t){var e=this;return this._urlListeners.push(t),function(){return X(e._urlListeners)(t)}},t.prototype.html5Mode=function(){var t=this.$locationProvider.html5Mode();return(t=x(t)?t.enabled:t)&&this.$sniffer.history},t.prototype.url=function(t,e,r){return void 0===e&&(e=!1),E(t)&&this.$location.url(t),e&&this.$location.replace(),r&&this.$location.state(r),this.$location.url()},t.prototype._runtimeServices=function(t,e,r,n){var i=this;this.$location=e,this.$sniffer=r,t.$on("$locationChangeSuccess",function(t){return i._urlListeners.forEach(function(e){return e(t)})});var o=y(e),a=y(n);Q(o,this,o,["replace","path","search","hash"]),Q(o,this,o,["port","protocol","host"]),Q(a,this,a,["baseHref"])},t}(),Pn=function(){function t(t){this._router=t,this._urlRouter=t.urlRouter}return t.injectableHandler=function(t,e){return function(r){return N.$injector.invoke(e,null,{$match:r,$stateParams:t.globals.params})}},t.prototype.$get=function(){var t=this._urlRouter;return t.update(!0),t.interceptDeferred||t.listen(),t},t.prototype.rule=function(t){var e=this;if(!P(t))throw new Error("'rule' must be a function");var r=new ar(function(){return t(N.$injector,e._router.locationService)},z);return this._urlRouter.rule(r),this},t.prototype.otherwise=function(t){var e=this,r=this._urlRouter;if(O(t))r.otherwise(t);else{if(!P(t))throw new Error("'rule' must be a string or function");r.otherwise(function(){return t(N.$injector,e._router.locationService)})}return this},t.prototype.when=function(e,r){return(I(r)||P(r))&&(r=t.injectableHandler(this._router,r)),this._urlRouter.when(e,r),this},t.prototype.deferIntercept=function(t){this._urlRouter.deferIntercept(t)},t}();n.module("ui.router.angular1",[]);var kn=n.module("ui.router.init",[]),On=n.module("ui.router.util",["ng","ui.router.init"]),xn=n.module("ui.router.router",["ui.router.util"]),In=n.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),Vn=n.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),jn=(n.module("ui.router.compat",["ui.router"]),null);function An(t){(jn=this.router=new wr).stateProvider=new En(jn.stateRegistry,jn.stateService),jn.stateRegistry.decorator("views",_n),jn.stateRegistry.decorator("onExit",Cn("onExit")),jn.stateRegistry.decorator("onRetain",Cn("onRetain")),jn.stateRegistry.decorator("onEnter",Cn("onEnter")),jn.viewService._pluginapi._viewConfigFactory("ng1",yn());var e=jn.locationService=jn.locationConfig=new Tn(t);function r(t,r,n,i,o,a){return e._runtimeServices(i,t,n,r),delete jn.router,delete jn.$get,jn}return Tn.monkeyPatchPathParameterType(jn),jn.router=jn,jn.$get=r,r.$inject=["$location","$browser","$sniffer","$rootScope","$http","$templateCache"],jn}An.$inject=["$locationProvider"];var Hn=function(t){return["$uiRouterProvider",function(e){var r=e.router[t];return r.$get=function(){return r},r}]};function Dn(t,e,r){N.$injector=t,N.$q=e,r.stateRegistry.get().map(function(t){return t.$$state().resolvables}).reduce(yt,[]).filter(function(t){return"deferred"===t.deps}).forEach(function(e){return e.deps=t.annotate(e.resolveFn,t.strictDi)})}Dn.$inject=["$injector","$q","$uiRouter"];function qn(t){t.$watch(function(){Kt.approximateDigests++})}qn.$inject=["$rootScope"],kn.provider("$uiRouter",An),xn.provider("$urlRouter",["$uiRouterProvider",function(t){return t.urlRouterProvider=new Pn(t)}]),On.provider("$urlService",Hn("urlService")),On.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return jn.urlMatcherFactory}]),On.provider("$templateFactory",function(){return new Sn}),In.provider("$stateRegistry",Hn("stateRegistry")),In.provider("$uiRouterGlobals",Hn("globals")),In.provider("$transitions",Hn("transitionService")),In.provider("$state",["$uiRouterProvider",function(){return G(jn.stateProvider,{$get:function(){return jn.stateService}})}]),In.factory("$stateParams",["$uiRouter",function(t){return t.globals.params}]),Vn.factory("$view",function(){return jn.viewService}),Vn.service("$trace",function(){return Kt}),Vn.run(qn),On.run(["$urlMatcherFactory",function(t){}]),In.run(["$state",function(t){}]),xn.run(["$urlRouter",function(t){}]),kn.run(Dn);var Nn,Fn,Un,Ln,Mn=function(t){return t.getTokens().filter(O).map(function(e){var r=t.getResolvable(e);return[e,"NOWAIT"===t.getPolicy(r).async?r.promise:r.data]}).reduce(Pt,{})};function Bn(t){var e,r=t.match(/^\s*({[^}]*})\s*$/);if(r&&(t="("+r[1]+")"),!(e=t.replace(/\n/g," ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/))||4!==e.length)throw new Error("Invalid state ref '"+t+"'");return{state:e[1]||null,paramExpr:e[3]||null}}function Gn(t){var e=t.parent().inheritedData("$uiView"),r=c("$cfg.path")(e);return r?kt(r).state.name:void 0}function Wn(t,e,r){var n=r.uiState||t.current.name,i=G(function(t,e){return{relative:Gn(t)||e.$current,inherit:!0,source:"sref"}}(e,t),r.uiStateOpts||{}),o=t.href(n,r.uiStateParams,i);return{uiState:n,uiStateParams:r.uiStateParams,uiStateOpts:i,href:o}}function zn(t){var e="[object SVGAnimatedString]"===Object.prototype.toString.call(t.prop("href")),r="FORM"===t[0].nodeName;return{attr:r?"action":e?"xlink:href":"href",isAnchor:"A"===t.prop("tagName").toUpperCase(),clickable:!r}}function Jn(t,e,r,n,i){return function(o){var a=o.which||o.button,u=i();if(!(a>1||o.ctrlKey||o.metaKey||o.shiftKey||t.attr("target"))){var s=r(function(){e.go(u.uiState,u.uiStateParams,u.uiStateOpts)});o.preventDefault();var c=n.isAnchor&&!u.href?1:0;o.preventDefault=function(){c--<=0&&r.cancel(s)}}}}function Qn(t,e,r,n){var i;n&&(i=n.events),I(i)||(i=["click"]);for(var o=t.on?"on":"bind",a=0,u=i;a0)){var r=d(t,e,u);return m(),r}},e.$on("$destroy",(s=n.stateRegistry.onStatesChanged(p),c=n.transitionService.onStart({},h),f=e.$on("$stateChangeSuccess",m),function(){s(),c(),f()})),n.globals.transition&&h(n.globals.transition),m()}]}}],n.module("ui.router.state").directive("uiSref",Nn).directive("uiSrefActive",Un).directive("uiSrefActiveEq",Un).directive("uiState",Fn),Kn.$inject=["$state"],Yn.$inject=["$state"],n.module("ui.router.state").filter("isState",Kn).filter("includedByState",Yn),Ln=["$view","$animate","$uiViewScroll","$interpolate","$q",function(t,e,r,i,o){var a={$cfg:{viewDecl:{$context:t._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(s,f,l){return function(s,f,h){var p,v,d,m,y,g=h.onload||"",_=h.autoscroll,w={enter:function(t,r,i){n.version.minor>2?e.enter(t,null,r).then(i):e.enter(t,null,r,i)},leave:function(t,r){n.version.minor>2?e.leave(t).then(r):e.leave(t,r)}},$=f.inheritedData("$uiView")||a,S=i(h.uiView||h.name||"")(s)||"$default",b={$type:"ng1",id:u.count++,name:S,fqn:$.$uiView.fqn?$.$uiView.fqn+"."+S:S,config:null,configUpdated:function(t){if(t&&!(t instanceof $n))return;if(e=m,r=t,e===r)return;var e,r;Kt.traceUIViewConfigUpdated(b,t&&t.viewDecl&&t.viewDecl.$context),m=t,R(t)},get creationContext(){var t=c("$cfg.viewDecl.$context")($),e=c("$uiView.creationContext")($);return t||e}};function R(t){var e=s.$new(),n=o.defer(),i=o.defer(),a={$cfg:t,$uiView:b},u={$animEnter:n.promise,$animLeave:i.promise,$$animLeave:i};e.$emit("$viewContentLoading",S);var c=l(e,function(t){t.data("$uiViewAnim",u),t.data("$uiView",a),w.enter(t,f,function(){n.resolve(),d&&d.$emit("$viewContentAnimationEnded"),(E(_)&&!_||s.$eval(_))&&r(t)}),function(){if(p&&(Kt.traceUIViewEvent("Removing (previous) el",p.data("$uiView")),p.remove(),p=null),d&&(Kt.traceUIViewEvent("Destroying scope",b),d.$destroy(),d=null),v){var t=v.data("$uiViewAnim");Kt.traceUIViewEvent("Animate out",t),w.leave(v,function(){t.$$animLeave.resolve(),p=null}),p=v,v=null}}()});v=c,(d=e).$emit("$viewContentLoaded",t||m),d.$eval(g)}Kt.traceUIViewEvent("Linking",b),f.data("$uiView",{$uiView:b}),R(),y=t.registerUIView(b),s.$on("$destroy",function(){Kt.traceUIViewEvent("Destroying/Unregistering",b),y()})}}};return u}],Zn.$inject=["$compile","$controller","$transitions","$view","$q","$timeout"];var Xn="function"==typeof n.module("ui.router").component,ti=0;function ei(t,e,r,n,i){!P(r.$onInit)||i.viewDecl.component&&Xn||r.$onInit();var o=kt(i.path).state.self,a={bind:r};if(P(r.uiOnParamsChanged)){var u=new ge(i.path).getResolvable("$transition$").data;n.$on("$destroy",e.onSuccess({},function(t){if(t!==u&&-1===t.exiting().indexOf(o)){var e=t.params("to"),n=t.params("from"),i=t.treeChanges().to.map(function(t){return t.paramSchema}).reduce(yt,[]),a=t.treeChanges().from.map(function(t){return t.paramSchema}).reduce(yt,[]),s=i.filter(function(t){var r=a.indexOf(t);return-1===r||!a[r].type.equals(e[t.id],n[t.id])});if(s.length){var c=s.map(function(t){return t.id}),f=ft(e,function(t,e){return-1!==c.indexOf(e)});r.uiOnParamsChanged(f,t)}}},a))}if(P(r.uiCanExit)){var s=ti++,c=function(t){return!!t&&(t._uiCanExitIds&&!0===t._uiCanExitIds[s]||c(t.redirectedFrom()))},f={exiting:o.name};n.$on("$destroy",e.onBefore(f,function(e){var n,i=e._uiCanExitIds=e._uiCanExitIds||{};return c(e)||(n=t.when(r.uiCanExit(e))).then(function(t){return i[s]=!1!==t}),n},a))}}n.module("ui.router.state").directive("uiView",Ln),n.module("ui.router.state").directive("uiView",Zn),n.module("ui.router.state").provider("$uiViewScroll",function(){var t=!1;this.useAnchorScroll=function(){t=!0},this.$get=["$anchorScroll","$timeout",function(e,r){return t?e:function(t){return r(function(){t[0].scrollIntoView()},0,!1)}}]});t.default="ui.router",t.core=mn,t.watchDigests=qn,t.getLocals=Mn,t.getNg1ViewConfigFactory=yn,t.ng1ViewsBuilder=_n,t.Ng1ViewConfig=$n,t.StateProvider=En,t.UrlRouterProvider=Pn,t.root=F,t.fromJson=L,t.toJson=M,t.forEach=B,t.extend=G,t.equals=W,t.identity=z,t.noop=J,t.createProxyFunctions=Q,t.inherit=K,t.inArray=Y,t._inArray=Z,t.removeFrom=X,t._removeFrom=tt,t.pushTo=et,t._pushTo=rt,t.deregAll=nt,t.defaults=it,t.mergeR=ot,t.ancestors=at,t.pick=ut,t.omit=st,t.pluck=ct,t.filter=ft,t.find=lt,t.mapObj=ht,t.map=pt,t.values=vt,t.allTrueR=dt,t.anyTrueR=mt,t.unnestR=yt,t.flattenR=gt,t.pushR=_t,t.uniqR=wt,t.unnest=$t,t.flatten=St,t.assertPredicate=bt,t.assertMap=Rt,t.assertFn=Et,t.pairs=Ct,t.arrayTuples=Tt,t.applyPairs=Pt,t.tail=kt,t.copy=Ot,t._extend=xt,t.silenceUncaughtInPromise=jt,t.silentRejection=At,t.notImplemented=q,t.services=N,t.Glob=w,t.curry=i,t.compose=o,t.pipe=a,t.prop=u,t.propEq=s,t.parse=c,t.not=f,t.and=l,t.or=h,t.all=p,t.any=v,t.is=d,t.eq=m,t.val=y,t.invoke=g,t.pattern=_,t.isUndefined=R,t.isDefined=E,t.isNull=C,t.isNullOrUndefined=T,t.isFunction=P,t.isNumber=k,t.isString=O,t.isObject=x,t.isArray=I,t.isDate=V,t.isRegExp=j,t.isState=A,t.isInjectable=H,t.isPromise=D,t.Queue=Ht,t.maxLength=Se,t.padString=be,t.kebobString=Re,t.functionToString=Ee,t.fnToString=Ce,t.stringify=ke,t.beforeAfterSubstr=Oe,t.hostRegex=xe,t.stripLastPathElement=Ie,t.splitHash=Ve,t.splitQuery=je,t.splitEqual=Ae,t.trimHashVal=He,t.splitOnDelim=De,t.joinNeighborsR=qe,t.Trace=Qt,t.trace=Kt,t.Param=se,t.ParamTypes=Fe,t.StateParams=Ue,t.ParamType=ie,t.PathNode=ce,t.PathUtils=fe,t.resolvePolicies=pe,t.defaultResolvePolicy=le,t.Resolvable=he,t.NATIVE_INJECTOR_TOKEN=ye,t.ResolveContext=ge,t.resolvablesBuilder=Ke,t.StateBuilder=Ye,t.StateObject=$,t.StateMatcher=Ze,t.StateQueueManager=Xe,t.StateRegistry=tr,t.StateService=Mr,t.TargetState=Yt,t.HookBuilder=ne,t.matchState=te,t.RegisteredHook=ee,t.makeEvent=re,t.Rejection=qt,t.Transition=$e,t.TransitionHook=Xt,t.TransitionEventType=qr,t.defaultTransOpts=Ur,t.TransitionService=Lr,t.UrlMatcher=nr,t.UrlMatcherFactory=ir,t.UrlRouter=sr,t.UrlRuleFactory=or,t.BaseUrlRule=ar,t.UrlService=gr,t.ViewService=fr,t.UIRouterGlobals=lr,t.UIRouter=wr,t.$q=Br,t.$injector=Jr,t.BaseLocationServices=en,t.HashLocationService=nn,t.MemoryLocationService=an,t.PushStateLocationService=sn,t.MemoryLocationConfig=cn,t.BrowserLocationConfig=fn,t.keyValsToObjectR=Qr,t.getParams=Kr,t.parseUrl=Yr,t.buildUrl=Zr,t.locationPluginFactory=Xr,t.servicesPlugin=ln,t.hashLocationPlugin=hn,t.pushStateLocationPlugin=pn,t.memoryLocationPlugin=vn,t.UIRouterPluginBase=dn,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=angular-ui-router.min.js.map diff --git a/UI/WebServerResources/js/vendor/angular-ui-router.min.js.map b/UI/WebServerResources/js/vendor/angular-ui-router.min.js.map index f2af414ef..64bf962c5 100644 --- a/UI/WebServerResources/js/vendor/angular-ui-router.min.js.map +++ b/UI/WebServerResources/js/vendor/angular-ui-router.min.js.map @@ -2,168 +2,173 @@ "version": 3, "file": "angular-ui-router.min.js", "sources": [ + "@uirouter/angularjs/src/angular.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/hof.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/glob.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateObject.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/predicates.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/coreservices.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/common.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/rejectFactory.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/queue.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/trace.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/interface.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/targetState.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/transitionHook.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/hookRegistry.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/hookBuilder.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/params/@uirouter/core/params/paramType.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/params/@uirouter/core/params/param.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/strings.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateBuilder.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlMatcher.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlRouter.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/coreResolvables.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/onEnterExitRetain.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/lazyLoad.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/ignoredTransition.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/invalidTransition.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/utils.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/plugins.ts", - "@uirouter/angularjs/src/statebuilders/views.ts", - "@uirouter/angularjs/src/templateFactory.ts", - "@uirouter/angularjs/src/services.ts", - "@uirouter/angularjs/src/directives/stateDirectives.ts", - "@uirouter/angularjs/src/stateFilters.ts", - "@uirouter/angularjs/src/directives/viewDirective.ts", - "@uirouter/angularjs/src/angular.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/glob.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateObject.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/coreservices.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/queue.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/rejectFactory.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/interface.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/targetState.ts", - "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/transitionHook.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/path/@uirouter/core/path/pathNode.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/path/@uirouter/core/path/pathUtils.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/resolve/@uirouter/core/resolve/resolvable.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/resolve/@uirouter/core/resolve/interface.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/resolve/@uirouter/core/resolve/resolveContext.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/transition.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/common/@uirouter/core/common/strings.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/params/@uirouter/core/params/paramTypes.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/params/@uirouter/core/params/stateParams.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateBuilder.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateMatcher.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateQueueManager.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateRegistry.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlMatcher.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlMatcherFactory.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlRule.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlRouter.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/view/@uirouter/core/view/view.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/@uirouter/core/globals.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/url/@uirouter/core/url/urlService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/@uirouter/core/router.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/coreResolvables.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/redirectTo.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/onEnterExitRetain.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/resolve.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/views.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/updateGlobals.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/url.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/lazyLoad.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/transitionEventType.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/ignoredTransition.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/hooks/@uirouter/core/hooks/invalidTransition.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/transition/@uirouter/core/transition/transitionService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/state/@uirouter/core/state/stateService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/q.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/injector.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/utils.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/baseLocationService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/hashLocationService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/memoryLocationService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/pushStateLocationService.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/memoryLocationConfig.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/browserLocationConfig.ts", + "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/vanilla/@uirouter/core/vanilla/plugins.ts", "@uirouter/angularjs/node_modules/@uirouter/core/lib-esm/@uirouter/core/interface.ts", + "@uirouter/angularjs/src/statebuilders/views.ts", + "@uirouter/angularjs/src/templateFactory.ts", "@uirouter/angularjs/src/stateProvider.ts", "@uirouter/angularjs/src/statebuilders/onEnterExitRetain.ts", "@uirouter/angularjs/src/locationServices.ts", "@uirouter/angularjs/src/urlRouterProvider.ts", + "@uirouter/angularjs/src/services.ts", + "@uirouter/angularjs/src/directives/stateDirectives.ts", + "@uirouter/angularjs/src/directives/viewDirective.ts", + "@uirouter/angularjs/src/stateFilters.ts", "@uirouter/angularjs/src/viewScroll.ts", "@uirouter/angularjs/src/index.ts" ], "sourcesContent": [ + "/**\n * @hidden\n * @module ng1\n */ /** */\ndeclare var angular;\nimport * as ng_from_import from 'angular';\nconst ng_from_global = angular;\n\nexport const ng = (ng_from_import && ng_from_import.module) ? ng_from_import : ng_from_global;\n", "/**\n * Higher order functions\n *\n * These utility functions are exported, but are subject to change without notice.\n *\n * @module common_hof\n */ /** */\n\nimport { Predicate } from './common';\n/**\n * Returns a new function for [Partial Application](https://en.wikipedia.org/wiki/Partial_application) of the original function.\n *\n * Given a function with N parameters, returns a new function that supports partial application.\n * The new function accepts anywhere from 1 to N parameters. When that function is called with M parameters,\n * where M is less than N, it returns a new function that accepts the remaining parameters. It continues to\n * accept more parameters until all N parameters have been supplied.\n *\n *\n * This contrived example uses a partially applied function as an predicate, which returns true\n * if an object is found in both arrays.\n * @example\n * ```\n * // returns true if an object is in both of the two arrays\n * function inBoth(array1, array2, object) {\n * return array1.indexOf(object) !== -1 &&\n * array2.indexOf(object) !== 1;\n * }\n * let obj1, obj2, obj3, obj4, obj5, obj6, obj7\n * let foos = [obj1, obj3]\n * let bars = [obj3, obj4, obj5]\n *\n * // A curried \"copy\" of inBoth\n * let curriedInBoth = curry(inBoth);\n * // Partially apply both the array1 and array2\n * let inFoosAndBars = curriedInBoth(foos, bars);\n *\n * // Supply the final argument; since all arguments are\n * // supplied, the original inBoth function is then called.\n * let obj1InBoth = inFoosAndBars(obj1); // false\n *\n * // Use the inFoosAndBars as a predicate.\n * // Filter, on each iteration, supplies the final argument\n * let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];\n * let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]\n *\n * ```\n *\n * Stolen from: http://stackoverflow.com/questions/4394747/javascript-curry-function\n *\n * @param fn\n * @returns {*|function(): (*|any)}\n */\nexport function curry(fn: Function): Function {\n const initial_args = [].slice.apply(arguments, [1]);\n const func_args_length = fn.length;\n\n function curried(args: any[]) {\n if (args.length >= func_args_length)\n return fn.apply(null, args);\n return function () {\n return curried(args.concat([].slice.apply(arguments)));\n };\n }\n return curried(initial_args);\n}\n\n\n\n/**\n * Given a varargs list of functions, returns a function that composes the argument functions, right-to-left\n * given: f(x), g(x), h(x)\n * let composed = compose(f,g,h)\n * then, composed is: f(g(h(x)))\n */\nexport function compose() {\n const args = arguments;\n const start = args.length - 1;\n return function() {\n let i = start, result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n/**\n * Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right\n * given: f(x), g(x), h(x)\n * let piped = pipe(f,g,h);\n * then, piped is: h(g(f(x)))\n */\nexport function pipe(...funcs: Function[]): (obj: any) => any {\n return compose.apply(null, [].slice.call(arguments).reverse());\n}\n\n/**\n * Given a property name, returns a function that returns that property from an object\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = prop(\"name\");\n * getName(obj) === \"blarg\"\n */\nexport const prop = (name: string) =>\n (obj: any) => obj && obj[name];\n\n/**\n * Given a property name and a value, returns a function that returns a boolean based on whether\n * the passed object has a property that matches the value\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = propEq(\"name\", \"blarg\");\n * getName(obj) === true\n */\nexport const propEq = curry((name: string, _val: any, obj: any) => obj && obj[name] === _val);\n\n/**\n * Given a dotted property name, returns a function that returns a nested property from an object, or undefined\n * let obj = { id: 1, nestedObj: { foo: 1, name: \"blarg\" }, };\n * let getName = prop(\"nestedObj.name\");\n * getName(obj) === \"blarg\"\n * let propNotFound = prop(\"this.property.doesnt.exist\");\n * propNotFound(obj) === undefined\n */\nexport const parse = (name: string) =>\n pipe.apply(null, name.split('.').map(prop));\n\n/**\n * Given a function that returns a truthy or falsey value, returns a\n * function that returns the opposite (falsey or truthy) value given the same inputs\n */\nexport const not: (fn: Predicate) => Predicate = (fn: Predicate) =>\n (...args: any[]) => !fn.apply(null, args);\n\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if both functions return truthy for the given arguments\n */\nexport function and(fn1: Predicate, fn2: Predicate): Predicate {\n return (...args: any[]) => fn1.apply(null, args) && fn2.apply(null, args);\n}\n\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if at least one of the functions returns truthy for the given arguments\n */\nexport function or(fn1: Predicate, fn2: Predicate): Predicate {\n return (...args: any[]) => fn1.apply(null, args) || fn2.apply(null, args);\n}\n\n/**\n * Check if all the elements of an array match a predicate function\n *\n * @param fn1 a predicate function `fn1`\n * @returns a function which takes an array and returns true if `fn1` is true for all elements of the array\n */\nexport const all = (fn1: Predicate) =>\n (arr: any[]) => arr.reduce((b, x) => b && !!fn1(x), true) as boolean;\n\n// tslint:disable-next-line:variable-name\nexport const any = (fn1: Predicate) =>\n (arr: any[]) => arr.reduce((b, x) => b || !!fn1(x), false) as boolean;\n\n/** Given a class, returns a Predicate function that returns true if the object is of that class */\nexport const is = (ctor: { new(...args): T }) =>\n (obj: any): obj is T =>\n (obj != null && obj.constructor === ctor || obj instanceof ctor);\n\n/** Given a value, returns a Predicate function that returns true if another value is === equal to the original value */\nexport const eq: (comp: any) => Predicate = (value: any) => (other: any) =>\n value === other;\n\n/** Given a value, returns a function which returns the value */\nexport const val = (v: T) => () => v;\n\n\n\nexport function invoke(fnName: string): Function;\nexport function invoke(fnName: string, args: any[]): Function;\nexport function invoke(fnName: string, args?: any[]): Function {\n return (obj: any) =>\n obj[fnName].apply(obj, args);\n}\n\n/**\n * Sorta like Pattern Matching (a functional programming conditional construct)\n *\n * See http://c2.com/cgi/wiki?PatternMatching\n *\n * This is a conditional construct which allows a series of predicates and output functions\n * to be checked and then applied. Each predicate receives the input. If the predicate\n * returns truthy, then its matching output function (mapping function) is provided with\n * the input and, then the result is returned.\n *\n * Each combination (2-tuple) of predicate + output function should be placed in an array\n * of size 2: [ predicate, mapFn ]\n *\n * These 2-tuples should be put in an outer array.\n *\n * @example\n * ```\n *\n * // Here's a 2-tuple where the first element is the isString predicate\n * // and the second element is a function that returns a description of the input\n * let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];\n *\n * // Second tuple: predicate \"isNumber\", mapfn returns a description\n * let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];\n *\n * let third = [ (input) => input === null, (input) => `Oh, null...` ];\n *\n * let fourth = [ (input) => input === undefined, (input) => `notdefined` ];\n *\n * let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);\n *\n * console.log(descriptionOf(undefined)); // 'notdefined'\n * console.log(descriptionOf(55)); // '(55) That's a number!'\n * console.log(descriptionOf(\"foo\")); // 'Here's your string foo'\n * ```\n *\n * @param struct A 2D array. Each element of the array should be an array, a 2-tuple,\n * with a Predicate and a mapping/output function\n * @returns {function(any): *}\n */\nexport function pattern(struct: Function[][]): Function {\n return function(x: any) {\n for (let i = 0; i < struct.length; i++) {\n if (struct[i][0](x)) return struct[i][1](x);\n }\n };\n}\n\n", + "/**\n * @coreapi\n * @module core\n */\n/**\n * Matches state names using glob-like pattern strings.\n *\n * Globs can be used in specific APIs including:\n *\n * - [[StateService.is]]\n * - [[StateService.includes]]\n * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n * - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n *\n * A `Glob` string is a pattern which matches state names.\n * Nested state names are split into segments (separated by a dot) when processing.\n * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n *\n * Globs work according to the following rules:\n *\n * ### Exact match:\n *\n * The glob `'A.B'` matches the state named exactly `'A.B'`.\n *\n * | Glob |Matches states named|Does not match state named|\n * |:------------|:--------------------|:---------------------|\n * | `'A'` | `'A'` | `'B'` , `'A.C'` |\n * | `'A.B'` | `'A.B'` | `'A'` , `'A.B.C'` |\n * | `'foo'` | `'foo'` | `'FOO'` , `'foo.bar'`|\n *\n * ### Single star (`*`)\n *\n * A single star (`*`) is a wildcard that matches exactly one segment.\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:---------------------|:--------------------------|\n * | `'*'` | `'A'` , `'Z'` | `'A.B'` , `'Z.Y.X'` |\n * | `'A.*'` | `'A.B'` , `'A.C'` | `'A'` , `'A.B.C'` |\n * | `'A.*.*'` | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n *\n * ### Double star (`**`)\n *\n * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:----------------------------------------------|:----------------------------------|\n * | `'**'` | `'A'` , `'A.B'`, `'Z.Y.X'` | (matches all states) |\n * | `'A.**'` | `'A'` , `'A.B'` , `'A.C.X'` | `'Z.Y.X'` |\n * | `'**.X'` | `'X'` , `'A.X'` , `'Z.Y.X'` | `'A'` , `'A.login.Z'` |\n * | `'A.**.X'` | `'A.X'` , `'A.B.X'` , `'A.B.C.X'` | `'A'` , `'A.B.C'` |\n *\n */\nexport class Glob {\n text: string;\n glob: Array;\n regexp: RegExp;\n\n /** Returns true if the string has glob-like characters in it */\n static is(text: string) {\n return !!/[!,*]+/.exec(text);\n }\n\n /** Returns a glob from the string, or null if the string isn't Glob-like */\n static fromString(text: string) {\n return Glob.is(text) ? new Glob(text) : null;\n }\n\n constructor(text: string) {\n this.text = text;\n this.glob = text.split('.');\n\n const regexpString = this.text.split('.')\n .map(seg => {\n if (seg === '**') return '(?:|(?:\\\\.[^.]*)*)';\n if (seg === '*') return '\\\\.[^.]*';\n return '\\\\.' + seg;\n }).join('');\n\n this.regexp = new RegExp('^' + regexpString + '$');\n }\n\n matches(name: string) {\n return this.regexp.test('.' + name);\n }\n}\n", + "/**\n * @coreapi\n * @module state\n */\n/** for typedoc */\nimport { StateDeclaration, _ViewDeclaration, _StateDeclaration, LazyLoadResult } from './interface';\nimport { defaults, values, find, inherit } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Param } from '../params/param';\nimport { UrlMatcher } from '../url/urlMatcher';\nimport { Resolvable } from '../resolve/resolvable';\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { TargetState } from './targetState';\nimport { Transition } from '../transition/transition';\nimport { Glob } from '../common/glob';\nimport { isObject, isFunction } from '../common/predicates';\n\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nexport class StateObject {\n /** The parent [[StateObject]] */\n public parent: StateObject;\n\n /** The name used to register the state */\n public name: string;\n\n /** Prototypally inherits from [[StateDeclaration.abstract]] */\n public abstract: boolean;\n\n /** Prototypally inherits from [[StateDeclaration.resolve]] */\n public resolve: ({ [key: string]: (string|any[]|Function) }|any[]);\n\n /** A list of [[Resolvable]] objects. The internal representation of [[resolve]]. */\n public resolvables: Resolvable[];\n\n /** Prototypally inherits from [[StateDeclaration.resolvePolicy]] */\n public resolvePolicy: any;\n\n /** A compiled URLMatcher which detects when the state's URL is matched */\n public url: UrlMatcher;\n\n /** The parameters for the state, built from the URL and [[StateDeclaration.params]] */\n public params: { [key: string]: Param };\n\n /**\n * The views for the state.\n * Note: `@uirouter/core` does not register a builder for views.\n * The framework specific code should register a `views` builder.\n */\n public views: { [key: string]: _ViewDeclaration; };\n\n /**\n * The original [[StateDeclaration]] used to build this [[StateObject]].\n * Note: `this` object also prototypally inherits from the `self` declaration object.\n */\n public self: StateDeclaration;\n\n /** The nearest parent [[StateObject]] which has a URL */\n public navigable: StateObject;\n\n /** The parent [[StateObject]] objects from this state up to the root */\n public path: StateObject[];\n\n /**\n * Prototypally inherits from [[StateDeclaration.data]]\n * Note: This is the only field on the [[StateDeclaration]] which is mutated.\n * The definition object's `data` field is replaced with a new object\n * which prototypally inherits from the parent state definition's `data` field.\n */\n public data: any;\n\n /**\n * An object containing the parent States' names as keys and\n * true as their values.\n */\n public includes: { [name: string]: boolean };\n\n /** Prototypally inherits from [[StateDeclaration.onExit]] */\n public onExit: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onRetain]] */\n public onRetain: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onEnter]] */\n public onEnter: TransitionStateHookFn;\n\n /** Prototypally inherits from [[StateDeclaration.lazyLoad]] */\n public lazyLoad: (transition: Transition, state: StateDeclaration) => Promise;\n\n /** Prototypally inherits from [[StateDeclaration.redirectTo]] */\n redirectTo: (\n string |\n (($transition$: Transition) => TargetState) |\n { state: (string|StateDeclaration), params: { [key: string]: any }}\n );\n\n /** @hidden */\n __stateObjectCache: {\n /** Might be null */\n nameGlob?: Glob,\n };\n\n /**\n * Create a state object to put the private/internal implementation details onto.\n * The object's prototype chain looks like:\n * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n *\n * @param stateDecl the user-supplied State Declaration\n * @returns {StateObject} an internal State object\n */\n static create(stateDecl: _StateDeclaration): StateObject {\n stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n\n const state = inherit(inherit(stateDecl, StateObject.prototype)) as StateObject;\n stateDecl.$$state = () => state;\n state.self = stateDecl;\n state.__stateObjectCache = {\n nameGlob: Glob.fromString(state.name), // might return null\n };\n return state;\n }\n\n /** Predicate which returns true if the object is an class with @State() decorator */\n static isStateClass = (stateDecl: _StateDeclaration): stateDecl is ({ new (): StateDeclaration }) =>\n isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n\n /** Predicate which returns true if the object is an internal [[StateObject]] object */\n static isState = (obj: any): obj is StateObject =>\n isObject(obj['__stateObjectCache']);\n\n\n /** @deprecated use State.create() */\n constructor(config?: StateDeclaration) {\n return StateObject.create(config || {});\n }\n\n /**\n * Returns true if the provided parameter is the same state.\n *\n * Compares the identity of the state against the passed value, which is either an object\n * reference to the actual `State` instance, the original definition object passed to\n * `$stateProvider.state()`, or the fully-qualified name.\n *\n * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n * into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n * @returns Returns `true` if `ref` matches the current `State` instance.\n */\n is(ref: StateObject|StateDeclaration|string): boolean {\n return this === ref || this.self === ref || this.fqn() === ref;\n }\n\n /**\n * @deprecated this does not properly handle dot notation\n * @returns Returns a dot-separated name of the state.\n */\n fqn(): string {\n if (!this.parent || !(this.parent instanceof this.constructor)) return this.name;\n const name = this.parent.fqn();\n return name ? name + '.' + this.name : this.name;\n }\n\n /**\n * Returns the root node of this state's tree.\n *\n * @returns The root of this state's tree.\n */\n root(): StateObject {\n return this.parent && this.parent.root() || this;\n }\n\n /**\n * Gets the state's `Param` objects\n *\n * Gets the list of [[Param]] objects owned by the state.\n * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n *\n * @param opts options\n */\n parameters(opts?: { inherit?: boolean, matchingKeys?: any }): Param[] {\n opts = defaults(opts, { inherit: true, matchingKeys: null });\n const inherited = opts.inherit && this.parent && this.parent.parameters() || [];\n return inherited.concat(values(this.params))\n .filter(param => !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id));\n }\n\n /**\n * Returns a single [[Param]] that is owned by the state\n *\n * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n * @param id the name of the [[Param]] to return\n * @param opts options\n */\n parameter(id: string, opts: { inherit?: boolean } = {}): Param {\n return (\n this.url && this.url.parameter(id, opts) ||\n find(values(this.params), propEq('id', id)) ||\n opts.inherit && this.parent && this.parent.parameter(id)\n );\n }\n\n toString() {\n return this.fqn();\n }\n}\n", "/** Predicates\n *\n * These predicates return true/false based on the input.\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_predicates\n */\n/** */\nimport { and, not, pipe, prop, or } from './hof';\nimport { Predicate } from './common'; // has or is using\nimport { StateObject } from '../state/stateObject';\n\nconst toStr = Object.prototype.toString;\nconst tis = (t: string) => (x: any) => typeof(x) === t;\nexport const isUndefined = tis('undefined');\nexport const isDefined = not(isUndefined);\nexport const isNull = (o: any) => o === null;\nexport const isNullOrUndefined = or(isNull, isUndefined);\nexport const isFunction: (x: any) => x is Function = tis('function');\nexport const isNumber: (x: any) => x is number = tis('number');\nexport const isString = <(x: any) => x is string> tis('string');\nexport const isObject = (x: any) => x !== null && typeof x === 'object';\nexport const isArray = Array.isArray;\nexport const isDate: (x: any) => x is Date = ((x: any) => toStr.call(x) === '[object Date]');\nexport const isRegExp: (x: any) => x is RegExp = ((x: any) => toStr.call(x) === '[object RegExp]');\nexport const isState: (x: any) => x is StateObject = StateObject.isState;\n\n/**\n * Predicate which checks if a value is injectable\n *\n * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n * where all the elements in the array are Strings, except the last one, which is a Function\n */\nexport function isInjectable(val: any) {\n if (isArray(val) && val.length) {\n const head = val.slice(0, -1), tail = val.slice(-1);\n return !(head.filter(not(isString)).length || tail.filter(not(isFunction)).length);\n }\n return isFunction(val);\n}\n\n/**\n * Predicate which checks if a value looks like a Promise\n *\n * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n */\nexport const isPromise = <(x: any) => x is Promise> and(isObject, pipe(prop('then'), isFunction));\n\n", - "/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @preferred\n * @module common\n */\n/** for typedoc */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nimport { StateObject } from '../state/stateObject';\n\ndeclare const global;\nexport const root: any = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) || this;\nconst angular = root.angular || {};\n\nexport const fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport const toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport const forEach = angular.forEach || _forEach;\nexport const extend = Object.assign || _extend;\nexport const equals = angular.equals || _equals;\nexport function identity(x: any) { return x; }\nexport function noop(): any {}\n\nexport type Mapper = (x: X, key?: (string|number)) => T;\nexport interface TypedMap { [key: string]: T; }\nexport type Predicate = (x?: X) => boolean;\n/**\n * An ng1-style injectable\n *\n * This could be a (non-minified) function such as:\n * ```js\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an explicitly annotated function (minify safe)\n * ```js\n * injectableFunction.$inject = [ 'SomeDependency' ];\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an array style annotated function (minify safe)\n * ```js\n * ['SomeDependency', function injectableFunction(SomeDependency) {\n *\n * }];\n * ```\n *\n * @publicapi\n */\nexport type IInjectable = (Function|any[]);\n\nexport interface Obj extends Object {\n [key: string]: any;\n}\n\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source: Function, target: Obj, bind: Function, fnNames?: string[], latebind = false): Obj {\n const bindFunction = (fnName) =>\n source()[fnName].bind(bind());\n\n const makeLateRebindFn = fnName => function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n\n fnNames = fnNames || Object.keys(source());\n\n return fnNames.reduce((acc, name) => {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n\n\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport const inherit = (parent: Obj, extra?: Obj) =>\n extend(Object.create(parent), extra);\n\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport const inArray: typeof _inArray = curry(_inArray) as any;\nexport function _inArray(array: any[], obj: any): boolean;\nexport function _inArray(array: any[]): (obj: any) => boolean;\nexport function _inArray(array, obj?): any {\n return array.indexOf(obj) !== -1;\n}\n\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport const removeFrom: typeof _removeFrom = curry(_removeFrom) as any;\nexport function _removeFrom(array: T[], obj: T): T[];\nexport function _removeFrom(array: T[]): (obj: T) => T[];\nexport function _removeFrom(array, obj?) {\n const idx = array.indexOf(obj);\n if (idx >= 0) array.splice(idx, 1);\n return array;\n}\n\n/** pushes a values to an array and returns the value */\nexport const pushTo: typeof _pushTo = curry(_pushTo) as any;\nexport function _pushTo(arr: T[], val: T): T ;\nexport function _pushTo(arr: T[]): (val: T) => T ;\nexport function _pushTo(arr, val?): any {\n return (arr.push(val), val);\n}\n\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport const deregAll = (functions: Function[]) =>\n functions.slice().forEach(fn => {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts, ...defaultsList: Obj[]) {\n const _defaultsList = defaultsList.concat({}).reverse();\n const defaultVals = extend.apply(null, _defaultsList);\n return extend({}, defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport const mergeR = (memo: Obj, item: Obj) => extend(memo, item);\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first: StateObject, second: StateObject) {\n const path: StateObject[] = [];\n\n for (const n in first.path) { // tslint:disable-line:forin\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj: Obj, propNames: string[]): Obj {\n const objCopy = {};\n for (const _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj: Obj, propNames: string[]): Obj {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce((acc, key) => (acc[key] = obj[key], acc), {});\n}\n\n\n/** Given an array of objects, maps each element to a named property of the element. */\nexport function pluck(collection: Obj[], propName: string): T[];\n/** Given an object, maps each property of the object to a named property of the property. */\nexport function pluck(collection: { [key: string]: any }, propName: string): { [key: string]: any };\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection: any, propName: string): any {\n return map(collection, > prop(propName));\n}\n\n\n/** Given an array of objects, returns a new array containing only the elements which passed the callback predicate */\nexport function filter(collection: T[], callback: (t: T, key?: number) => boolean): T[];\n/** Given an object, returns a new object with only those properties that passed the callback predicate */\nexport function filter(collection: TypedMap, callback: (t: T, key?: string) => boolean): TypedMap;\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection: any, callback: Function): T {\n const arr = isArray(collection), result: any = arr ? [] : {};\n const accept = arr ? x => result.push(x) : (x, key) => result[key] = x;\n forEach(collection, function(item, i) {\n if (callback(item, i)) accept(item, i);\n });\n return result;\n}\n\n\n/** Given an object, return the first property of that object which passed the callback predicate */\nexport function find(collection: TypedMap, callback: Predicate): T;\n/** Given an array of objects, returns the first object which passed the callback predicate */\nexport function find(collection: T[], callback: Predicate): T;\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection: any, callback: any) {\n let result;\n\n forEach(collection, function(item, i) {\n if (result) return;\n if (callback(item, i)) result = item;\n });\n\n return result;\n}\n\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport let mapObj: (collection: { [key: string]: T }, callback: Mapper) => { [key: string]: U } = map;\n/** Given an array, returns a new array, where each element is transformed by the callback function */\nexport function map(collection: T[], callback: Mapper): U[];\nexport function map(collection: { [key: string]: T }, callback: Mapper): { [key: string]: U };\n/** Maps an array or object properties using a callback function */\nexport function map(collection: any, callback: any): any {\n const result = isArray(collection) ? [] : {};\n forEach(collection, (item, i) => result[i] = callback(item, i));\n return result;\n}\n\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport const values: ( (obj: TypedMap) => T[]) = (obj: Obj) =>\n Object.keys(obj).map(key => obj[key]);\n\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport const allTrueR = (memo: boolean, elem: any) => memo && elem;\n\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport const anyTrueR = (memo: boolean, elem: any) => memo || elem;\n\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnestR = (memo: any[], elem: any[]) => memo.concat(elem);\n\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flattenR = (memo: any[], elem: any) =>\n isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr: any[], obj: any) {\n arr.push(obj);\n return arr;\n}\n\n/** Reduce function that filters out duplicates */\nexport const uniqR = (acc: T[], token: T): T[] =>\n inArray(acc, token) ? acc : pushR(acc, token);\n\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnest = (arr: any[]) => arr.reduce(unnestR, []);\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flatten = (arr: any[]) => arr.reduce(flattenR, []);\n\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport const assertPredicate: (predicate: Predicate, errMsg: (string|Function)) => Predicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport const assertMap: (mapFn: (t: T) => U, errMsg: (string|Function)) => (t: T) => U = assertFn;\nexport function assertFn(predicateOrMap: Function, errMsg: (string|Function) = 'assert failure'): any {\n return (obj) => {\n const result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? ( errMsg)(obj) : errMsg);\n }\n return result;\n };\n}\n\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport const pairs = (obj: Obj) =>\n Object.keys(obj).map(key => [ key, obj[key]] );\n\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples(...args: any[]): any[] {\n if (args.length === 0) return [];\n const maxArrayLen = args.reduce((min, arr) => Math.min(arr.length, min), 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n const result = [];\n\n for (let i = 0; i < maxArrayLen; i++) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1: result.push([args[0][i]]); break;\n case 2: result.push([args[0][i], args[1][i]]); break;\n case 3: result.push([args[0][i], args[1][i], args[2][i]]); break;\n case 4: result.push([args[0][i], args[1][i], args[2][i], args[3][i]]); break;\n default:\n result.push(args.map(array => array[i])); break;\n }\n }\n\n return result;\n}\n\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo: TypedMap, keyValTuple: any[]) {\n let key: string, value: any;\n if (isArray(keyValTuple)) [key, value] = keyValTuple;\n if (!isString(key)) throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n\n/** Get the last element of an array */\nexport function tail(arr: T[]): T {\n return arr.length && arr[arr.length - 1] || undefined;\n}\n\n/**\n * shallow copy from src to dest\n */\nexport function copy(src: Obj, dest?: Obj) {\n if (dest) Object.keys(dest).forEach(key => delete dest[key]);\n if (!dest) dest = {};\n return extend(dest, src);\n}\n\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj: (any[]|any), cb: (el, idx?) => void, _this: Obj) {\n if (isArray(obj)) return obj.forEach(cb, _this);\n Object.keys(obj).forEach(key => cb(obj[key], key));\n}\n\n/** Like Object.assign() */\nexport function _extend(toObj: Obj, ...fromObjs: Obj[]): any;\nexport function _extend(toObj: Obj): any {\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n if (!obj) continue;\n const keys = Object.keys(obj);\n\n for (let j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n\n return toObj;\n}\n\nfunction _equals(o1: any, o2: any): boolean {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n const t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object') return false;\n\n const tup = [o1, o2];\n if (all(isArray)(tup)) return _arraysEq(o1, o2);\n if (all(isDate)(tup)) return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup)) return o1.toString() === o2.toString();\n if (all(isFunction)(tup)) return true; // meh\n\n const predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce((b, fn) => b || !!fn(tup), false)) return false;\n\n const keys: { [i: string]: boolean } = {};\n for (const key in o1) { // tslint:disable-line:forin\n if (!_equals(o1[key], o2[key])) return false;\n keys[key] = true;\n }\n for (const key in o2) {\n if (!keys[key]) return false;\n }\n\n return true;\n}\n\nfunction _arraysEq(a1: any[], a2: any[]) {\n if (a1.length !== a2.length) return false;\n return arrayTuples(a1, a2).reduce((b, t) => b && _equals(t[0], t[1]), true);\n}\n\n// issue #2676\nexport const silenceUncaughtInPromise = (promise: Promise) =>\n promise.catch(e => 0) && promise;\nexport const silentRejection = (error: any) =>\n silenceUncaughtInPromise(services.$q.reject(error));\n", + "/**\n * This module is a stub for core services such as Dependency Injection or Browser Location.\n * Core services may be implemented by a specific framework, such as ng1 or ng2, or be pure javascript.\n *\n * @module common\n */\n/** for typedoc */\nimport { IInjectable, Obj } from './common';\nimport { Disposable } from '../interface';\nimport { UrlParts } from '../url/interface';\n\nexport let notImplemented = (fnname: string) => () => {\n throw new Error(`${fnname}(): No coreservices implementation for UI-Router is loaded.`);\n};\n\nconst services: CoreServices = {\n $q: undefined,\n $injector: undefined,\n};\n\nexport interface $QLikeDeferred {\n resolve: (val?: any) => void;\n reject: (reason?: any) => void;\n promise: Promise;\n}\n\nexport interface $QLike {\n when(value?: T | PromiseLike): Promise;\n reject(reason: any): Promise;\n defer(): $QLikeDeferred;\n all(promises: { [key: string]: Promise }): Promise;\n all(promises: Promise[]): Promise;\n}\n\nexport interface $InjectorLike {\n strictDi?: boolean;\n get(token: any): any;\n get(token: any): T;\n has(token: any): boolean;\n invoke(fn: IInjectable, context?: any, locals?: Obj): any;\n annotate(fn: IInjectable, strictDi?: boolean): any[];\n}\n\nexport interface CoreServices {\n $q: $QLike;\n $injector: $InjectorLike;\n}\n\nexport interface LocationServices extends Disposable {\n /**\n * Gets the current url string\n *\n * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n *\n * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n * have a base HREF prepended ([[PushStateLocationServices]]).\n *\n * The raw URL in the browser might be:\n *\n * ```\n * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n * ```\n *\n * or\n *\n * ```\n * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n * ```\n *\n * then this method returns:\n *\n * ```\n * /internal/path/123?param1=foo#anchor\n * ```\n *\n *\n * #### Example:\n * ```js\n * locationServices.url(); // \"/some/path?query=value#anchor\"\n * ```\n *\n * @returns the current value of the url, as a string.\n */\n url(): string;\n\n /**\n * Updates the url, or gets the current url\n *\n * Updates the url, changing it to the value in `newurl`\n *\n * #### Example:\n * ```js\n * locationServices.url(\"/some/path?query=value#anchor\", true);\n * ```\n *\n * @param newurl The new value for the URL.\n * This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n * It should not include the protocol, site, port, or base path of an absolute HREF.\n * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n * @return the url (after potentially being processed)\n */\n url(newurl: string, replace?: boolean, state?: any): string;\n\n /**\n * Gets the path part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n *\n * @return the path portion of the url\n */\n path(): string;\n\n /**\n * Gets the search part of the current url as an object\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n *\n * @return the search (querystring) portion of the url, as an object\n */\n search(): { [key: string]: any };\n\n /**\n * Gets the hash part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n *\n * @return the hash (anchor) portion of the url\n */\n hash(): string;\n\n /**\n * Registers a url change handler\n *\n * #### Example:\n * ```js\n * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n * ```\n *\n * @param callback a function that will be called when the url is changing\n * @return a function that de-registers the callback\n */\n onChange(callback: Function): Function;\n}\n\n/**\n * This service returns the location configuration\n *\n * This service returns information about the location configuration.\n * This service is primarily used when building URLs (e.g., for `hrefs`)\n */\nexport interface LocationConfig extends Disposable {\n /**\n * Gets the port, e.g., `80`\n *\n * @return the port number\n */\n port(): number;\n /**\n * Gets the protocol, e.g., `http`\n *\n * @return the protocol\n */\n protocol(): string;\n /**\n * Gets the host, e.g., `localhost`\n *\n * @return the protocol\n */\n host(): string;\n /**\n * Gets the base Href, e.g., `http://localhost/approot/`\n *\n * @return the application's base href\n */\n baseHref(): string;\n /**\n * Returns true when running in pushstate mode\n *\n * @return true when running in pushstate mode\n */\n html5Mode(): boolean;\n /**\n * Gets the hashPrefix (when not running in pushstate mode)\n *\n * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n *\n * @return the hash prefix\n */\n hashPrefix(): string;\n /**\n * Sets the hashPrefix (when not running in pushstate mode)\n *\n * @return the new hash prefix\n */\n hashPrefix(newprefix: string): string;\n}\n\nexport { services };\n", + "/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @preferred\n * @module common\n */\n/** for typedoc */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nimport { StateObject } from '../state/stateObject';\n\ndeclare const global;\nexport const root: any = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) || this;\nconst angular = root.angular || {};\n\nexport const fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport const toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport const forEach = angular.forEach || _forEach;\nexport const extend = Object.assign || _extend;\nexport const equals = angular.equals || _equals;\nexport function identity(x: any) { return x; }\nexport function noop(): any {}\n\nexport type Mapper = (x: X, key?: (string|number)) => T;\nexport interface TypedMap { [key: string]: T; }\nexport type Predicate = (x?: X) => boolean;\n/**\n * An ng1-style injectable\n *\n * This could be a (non-minified) function such as:\n * ```js\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an explicitly annotated function (minify safe)\n * ```js\n * injectableFunction.$inject = [ 'SomeDependency' ];\n * function injectableFunction(SomeDependency) {\n *\n * }\n * ```\n *\n * or an array style annotated function (minify safe)\n * ```js\n * ['SomeDependency', function injectableFunction(SomeDependency) {\n *\n * }];\n * ```\n *\n * @publicapi\n */\nexport type IInjectable = (Function|any[]);\n\nexport interface Obj extends Object {\n [key: string]: any;\n}\n\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source: Function, target: Obj, bind: Function, fnNames?: string[], latebind = false): Obj {\n const bindFunction = (fnName) =>\n source()[fnName].bind(bind());\n\n const makeLateRebindFn = fnName => function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n\n fnNames = fnNames || Object.keys(source());\n\n return fnNames.reduce((acc, name) => {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n\n\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport const inherit = (parent: Obj, extra?: Obj) =>\n extend(Object.create(parent), extra);\n\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport const inArray: typeof _inArray = curry(_inArray) as any;\nexport function _inArray(array: any[], obj: any): boolean;\nexport function _inArray(array: any[]): (obj: any) => boolean;\nexport function _inArray(array, obj?): any {\n return array.indexOf(obj) !== -1;\n}\n\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport const removeFrom: typeof _removeFrom = curry(_removeFrom) as any;\nexport function _removeFrom(array: T[], obj: T): T[];\nexport function _removeFrom(array: T[]): (obj: T) => T[];\nexport function _removeFrom(array, obj?) {\n const idx = array.indexOf(obj);\n if (idx >= 0) array.splice(idx, 1);\n return array;\n}\n\n/** pushes a values to an array and returns the value */\nexport const pushTo: typeof _pushTo = curry(_pushTo) as any;\nexport function _pushTo(arr: T[], val: T): T ;\nexport function _pushTo(arr: T[]): (val: T) => T ;\nexport function _pushTo(arr, val?): any {\n return (arr.push(val), val);\n}\n\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport const deregAll = (functions: Function[]) =>\n functions.slice().forEach(fn => {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts, ...defaultsList: Obj[]) {\n const _defaultsList = defaultsList.concat({}).reverse();\n const defaultVals = extend.apply(null, _defaultsList);\n return extend({}, defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport const mergeR = (memo: Obj, item: Obj) => extend(memo, item);\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first: StateObject, second: StateObject) {\n const path: StateObject[] = [];\n\n for (const n in first.path) { // tslint:disable-line:forin\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj: Obj, propNames: string[]): Obj {\n const objCopy = {};\n for (const _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj: Obj, propNames: string[]): Obj {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce((acc, key) => (acc[key] = obj[key], acc), {});\n}\n\n\n/** Given an array of objects, maps each element to a named property of the element. */\nexport function pluck(collection: Obj[], propName: string): T[];\n/** Given an object, maps each property of the object to a named property of the property. */\nexport function pluck(collection: { [key: string]: any }, propName: string): { [key: string]: any };\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection: any, propName: string): any {\n return map(collection, > prop(propName));\n}\n\n\n/** Given an array of objects, returns a new array containing only the elements which passed the callback predicate */\nexport function filter(collection: T[], callback: (t: T, key?: number) => boolean): T[];\n/** Given an object, returns a new object with only those properties that passed the callback predicate */\nexport function filter(collection: TypedMap, callback: (t: T, key?: string) => boolean): TypedMap;\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection: any, callback: Function): T {\n const arr = isArray(collection), result: any = arr ? [] : {};\n const accept = arr ? x => result.push(x) : (x, key) => result[key] = x;\n forEach(collection, function(item, i) {\n if (callback(item, i)) accept(item, i);\n });\n return result;\n}\n\n\n/** Given an object, return the first property of that object which passed the callback predicate */\nexport function find(collection: TypedMap, callback: Predicate): T;\n/** Given an array of objects, returns the first object which passed the callback predicate */\nexport function find(collection: T[], callback: Predicate): T;\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection: any, callback: any) {\n let result;\n\n forEach(collection, function(item, i) {\n if (result) return;\n if (callback(item, i)) result = item;\n });\n\n return result;\n}\n\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport let mapObj: (collection: { [key: string]: T }, callback: Mapper, target?: typeof collection) => { [key: string]: U } = map;\n/** Given an array, returns a new array, where each element is transformed by the callback function */\nexport function map(collection: T[], callback: Mapper, target?: typeof collection): U[];\nexport function map(collection: { [key: string]: T }, callback: Mapper, target?: typeof collection): { [key: string]: U };\n/** Maps an array or object properties using a callback function */\nexport function map(collection: any, callback: any, target: typeof collection): any {\n target = target || (isArray(collection) ? [] : {});\n forEach(collection, (item, i) => target[i] = callback(item, i));\n return target;\n}\n\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport const values: ( (obj: TypedMap) => T[]) = (obj: Obj) =>\n Object.keys(obj).map(key => obj[key]);\n\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport const allTrueR = (memo: boolean, elem: any) => memo && elem;\n\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport const anyTrueR = (memo: boolean, elem: any) => memo || elem;\n\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnestR = (memo: any[], elem: any[]) => memo.concat(elem);\n\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flattenR = (memo: any[], elem: any) =>\n isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr: any[], obj: any) {\n arr.push(obj);\n return arr;\n}\n\n/** Reduce function that filters out duplicates */\nexport const uniqR = (acc: T[], token: T): T[] =>\n inArray(acc, token) ? acc : pushR(acc, token);\n\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport const unnest = (arr: any[]) => arr.reduce(unnestR, []);\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport const flatten = (arr: any[]) => arr.reduce(flattenR, []);\n\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport const assertPredicate: (predicate: Predicate, errMsg: (string|Function)) => Predicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport const assertMap: (mapFn: (t: T) => U, errMsg: (string|Function)) => (t: T) => U = assertFn;\nexport function assertFn(predicateOrMap: Function, errMsg: (string|Function) = 'assert failure'): any {\n return (obj) => {\n const result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? ( errMsg)(obj) : errMsg);\n }\n return result;\n };\n}\n\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport const pairs = (obj: Obj) =>\n Object.keys(obj).map(key => [ key, obj[key]] );\n\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples(...args: any[]): any[] {\n if (args.length === 0) return [];\n const maxArrayLen = args.reduce((min, arr) => Math.min(arr.length, min), 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n const result = [];\n\n for (let i = 0; i < maxArrayLen; i++) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1: result.push([args[0][i]]); break;\n case 2: result.push([args[0][i], args[1][i]]); break;\n case 3: result.push([args[0][i], args[1][i], args[2][i]]); break;\n case 4: result.push([args[0][i], args[1][i], args[2][i], args[3][i]]); break;\n default:\n result.push(args.map(array => array[i])); break;\n }\n }\n\n return result;\n}\n\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo: TypedMap, keyValTuple: any[]) {\n let key: string, value: any;\n if (isArray(keyValTuple)) [key, value] = keyValTuple;\n if (!isString(key)) throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n\n/** Get the last element of an array */\nexport function tail(arr: T[]): T {\n return arr.length && arr[arr.length - 1] || undefined;\n}\n\n/**\n * shallow copy from src to dest\n */\nexport function copy(src: Obj, dest?: Obj) {\n if (dest) Object.keys(dest).forEach(key => delete dest[key]);\n if (!dest) dest = {};\n return extend(dest, src);\n}\n\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj: (any[]|any), cb: (el, idx?) => void, _this: Obj) {\n if (isArray(obj)) return obj.forEach(cb, _this);\n Object.keys(obj).forEach(key => cb(obj[key], key));\n}\n\n/** Like Object.assign() */\nexport function _extend(toObj: Obj, ...fromObjs: Obj[]): any;\nexport function _extend(toObj: Obj): any {\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n if (!obj) continue;\n const keys = Object.keys(obj);\n\n for (let j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n\n return toObj;\n}\n\nfunction _equals(o1: any, o2: any): boolean {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n const t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object') return false;\n\n const tup = [o1, o2];\n if (all(isArray)(tup)) return _arraysEq(o1, o2);\n if (all(isDate)(tup)) return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup)) return o1.toString() === o2.toString();\n if (all(isFunction)(tup)) return true; // meh\n\n const predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce((b, fn) => b || !!fn(tup), false)) return false;\n\n const keys: { [i: string]: boolean } = {};\n for (const key in o1) { // tslint:disable-line:forin\n if (!_equals(o1[key], o2[key])) return false;\n keys[key] = true;\n }\n for (const key in o2) {\n if (!keys[key]) return false;\n }\n\n return true;\n}\n\nfunction _arraysEq(a1: any[], a2: any[]) {\n if (a1.length !== a2.length) return false;\n return arrayTuples(a1, a2).reduce((b, t) => b && _equals(t[0], t[1]), true);\n}\n\n// issue #2676\nexport const silenceUncaughtInPromise = (promise: Promise) =>\n promise.catch(e => 0) && promise;\nexport const silentRejection = (error: any) =>\n silenceUncaughtInPromise(services.$q.reject(error));\n", + "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n'use strict';\nimport { extend, silentRejection } from '../common/common';\nimport { stringify } from '../common/strings';\nimport { is } from '../common/hof';\n\nexport enum RejectType {\n SUPERSEDED = 2, ABORTED = 3, INVALID = 4, IGNORED = 5, ERROR = 6,\n}\n\n/** @hidden */\nlet id = 0;\n\nexport class Rejection {\n $id = id++;\n type: number;\n message: string;\n detail: any;\n redirected: boolean;\n\n /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n static isRejectionPromise(obj: any): boolean {\n return obj && (typeof obj.then === 'function') && is(Rejection)(obj._transitionRejection);\n }\n\n /** Returns a Rejection due to transition superseded */\n static superseded(detail?: any, options?: any): Rejection {\n const message = 'The transition has been superseded by a different transition';\n const rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n if (options && options.redirected) {\n rejection.redirected = true;\n }\n return rejection;\n }\n\n /** Returns a Rejection due to redirected transition */\n static redirected(detail?: any): Rejection {\n return Rejection.superseded(detail, { redirected: true });\n }\n\n /** Returns a Rejection due to invalid transition */\n static invalid(detail?: any): Rejection {\n const message = 'This transition is invalid';\n return new Rejection(RejectType.INVALID, message, detail);\n }\n\n /** Returns a Rejection due to ignored transition */\n static ignored(detail?: any): Rejection {\n const message = 'The transition was ignored';\n return new Rejection(RejectType.IGNORED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static aborted(detail?: any): Rejection {\n const message = 'The transition has been aborted';\n return new Rejection(RejectType.ABORTED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static errored(detail?: any): Rejection {\n const message = 'The transition errored';\n return new Rejection(RejectType.ERROR, message, detail);\n }\n\n /**\n * Returns a Rejection\n *\n * Normalizes a value as a Rejection.\n * If the value is already a Rejection, returns it.\n * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n *\n * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n */\n static normalize(detail?: Rejection | Error | any): Rejection {\n return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n }\n\n constructor(type: number, message?: string, detail?: any) {\n this.type = type;\n this.message = message;\n this.detail = detail;\n }\n\n toString() {\n const detailString = (d: any) =>\n d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d);\n const detail = detailString(this.detail);\n const { $id, type, message } = this;\n return `Transition Rejection($id: ${$id} type: ${type}, message: ${message}, detail: ${detail})`;\n }\n\n toPromise(): Promise {\n return extend(silentRejection(this), { _transitionRejection: this });\n }\n}\n", + "import { pushTo } from './common';\n\n/**\n * @module common\n */\n/** for typedoc */\n\nexport class Queue {\n private _evictListeners: ((item: T) => void)[] = [];\n public onEvict = pushTo(this._evictListeners);\n\n constructor(private _items: T[] = [], private _limit: number = null) { }\n\n enqueue(item: T) {\n const items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit) this.evict();\n return item;\n }\n\n evict(): T {\n const item: T = this._items.shift();\n this._evictListeners.forEach(fn => fn(item));\n return item;\n }\n\n dequeue(): T {\n if (this.size())\n return this._items.splice(0, 1)[0];\n }\n\n clear(): Array {\n const current = this._items;\n this._items = [];\n return current;\n }\n\n size(): number {\n return this._items.length;\n }\n\n remove(item: T) {\n const idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n }\n\n peekTail(): T {\n return this._items[this._items.length - 1];\n }\n\n peekHead(): T {\n if (this.size())\n return this._items[0];\n }\n}\n", "/**\n * # Transition tracing (debug)\n *\n * Enable transition tracing to print transition information to the console,\n * in order to help debug your application.\n * Tracing logs detailed information about each Transition to your console.\n *\n * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n *\n * ### ES6\n * ```js\n * import {trace} from \"ui-router-ng2\"; // or \"angular-ui-router\"\n * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n * ```\n *\n * ### CJS\n * ```js\n * let trace = require(\"angular-ui-router\").trace; // or \"ui-router-ng2\"\n * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n * ```\n *\n * ### Globals\n * ```js\n * let trace = window[\"angular-ui-router\"].trace; // or \"ui-router-ng2\"\n * trace.enable(); // Trace everything (very verbose)\n * ```\n *\n * ### Angular 1:\n * ```js\n * app.run($trace => $trace.enable());\n * ```\n *\n * @coreapi\n * @module trace\n */\n/* tslint:disable:no-console */\nimport { parse } from '../common/hof';\nimport { isFunction, isNumber } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { ViewTuple } from '../view';\nimport { ActiveUIView, ViewConfig, ViewContext } from '../view/interface';\nimport { stringify, functionToString, maxLength, padString } from './strings';\nimport { Resolvable } from '../resolve/resolvable';\nimport { PathNode } from '../path/pathNode';\nimport { PolicyWhen } from '../resolve/interface';\nimport { TransitionHook } from '../transition/transitionHook';\nimport { HookResult } from '../transition/interface';\nimport { StateObject } from '../state/stateObject';\n\n/** @hidden */\nfunction uiViewString (uiview: ActiveUIView) {\n if (!uiview) return 'ui-view (defunct)';\n const state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n return `[ui-view#${uiview.id} ${uiview.$type}:${uiview.fqn} (${uiview.name}@${state})]`;\n}\n\n/** @hidden */\nconst viewConfigString = (viewConfig: ViewConfig) => {\n const view = viewConfig.viewDecl;\n const state = view.$context.name || '(root)';\n return `[View#${viewConfig.$id} from '${state}' state]: target ui-view: '${view.$uiViewName}@${view.$uiViewContextAnchor}'`;\n};\n\n/** @hidden */\nfunction normalizedCat(input: Category|string): string {\n return isNumber(input) ? Category[input] : Category[Category[input]];\n}\n\n/** @hidden */\nconst consoleLog = Function.prototype.bind.call(console.log, console);\n\n/** @hidden */\nconst consoletable = isFunction(console.table) ? console.table.bind(console) : consoleLog.bind(console);\n\n\n/**\n * Trace categories Enum\n *\n * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n *\n * `trace.enable(Category.TRANSITION)`\n *\n * These can also be provided using a matching string, or position ordinal\n *\n * `trace.enable(\"TRANSITION\")`\n *\n * `trace.enable(1)`\n */\nexport enum Category {\n RESOLVE, TRANSITION, HOOK, UIVIEW, VIEWCONFIG,\n}\n\n/** @hidden */\nconst _tid = parse('$id');\n\n/** @hidden */\nconst _rid = parse('router.$id');\n\n/** @hidden */\nconst transLbl = (trans) => `Transition #${_tid(trans)}-${_rid(trans)}`;\n\n/**\n * Prints UI-Router Transition trace information to the console.\n */\nexport class Trace {\n /** @hidden */\n approximateDigests: number;\n\n /** @hidden */\n private _enabled: { [key: string]: boolean } = {};\n\n /** @hidden */\n constructor() {\n this.approximateDigests = 0;\n }\n\n /** @hidden */\n private _set(enabled: boolean, categories: Category[]) {\n if (!categories.length) {\n categories = Object.keys(Category)\n .map(k => parseInt(k, 10))\n .filter(k => !isNaN(k))\n .map(key => Category[key]);\n }\n categories.map(normalizedCat).forEach(category => this._enabled[category] = enabled);\n }\n\n /**\n * Enables a trace [[Category]]\n *\n * ```js\n * trace.enable(\"TRANSITION\");\n * ```\n *\n * @param categories categories to enable. If `categories` is omitted, all categories are enabled.\n * Also takes strings (category name) or ordinal (category position)\n */\n enable(...categories: (Category|string|number)[]);\n enable(...categories: any[]) { this._set(true, categories); }\n /**\n * Disables a trace [[Category]]\n *\n * ```js\n * trace.disable(\"VIEWCONFIG\");\n * ```\n *\n * @param categories categories to disable. If `categories` is omitted, all categories are disabled.\n * Also takes strings (category name) or ordinal (category position)\n */\n disable(...categories: (Category|string|number)[]);\n disable(...categories: any[]) { this._set(false, categories); }\n\n /**\n * Retrieves the enabled stateus of a [[Category]]\n *\n * ```js\n * trace.enabled(\"VIEWCONFIG\"); // true or false\n * ```\n *\n * @returns boolean true if the category is enabled\n */\n enabled(category: (Category|string|number)): boolean {\n return !!this._enabled[normalizedCat(category)];\n }\n\n /** @internalapi called by ui-router code */\n traceTransitionStart(trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: Started -> ${stringify(trans)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceTransitionIgnored(trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: Ignored <> ${stringify(trans)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceHookInvocation(step: TransitionHook, trans: Transition, options: any) {\n if (!this.enabled(Category.HOOK)) return;\n const event = parse('traceData.hookType')(options) || 'internal',\n context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown',\n name = functionToString((step as any).registeredHook.callback);\n console.log(`${transLbl(trans)}: Hook -> ${event} context: ${context}, ${maxLength(200, name)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceHookResult(hookResult: HookResult, trans: Transition, transitionOptions: any) {\n if (!this.enabled(Category.HOOK)) return;\n console.log(`${transLbl(trans)}: <- Hook returned: ${maxLength(200, stringify(hookResult))}`);\n }\n\n /** @internalapi called by ui-router code */\n traceResolvePath(path: PathNode[], when: PolicyWhen, trans?: Transition) {\n if (!this.enabled(Category.RESOLVE)) return;\n console.log(`${transLbl(trans)}: Resolving ${path} (${when})`);\n }\n\n /** @internalapi called by ui-router code */\n traceResolvableResolved(resolvable: Resolvable, trans?: Transition) {\n if (!this.enabled(Category.RESOLVE)) return;\n console.log(`${transLbl(trans)}: <- Resolved ${resolvable} to: ${maxLength(200, stringify(resolvable.data))}`);\n }\n\n /** @internalapi called by ui-router code */\n traceError(reason: any, trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: <- Rejected ${stringify(trans)}, reason: ${reason}`);\n }\n\n /** @internalapi called by ui-router code */\n traceSuccess(finalState: StateObject, trans: Transition) {\n if (!this.enabled(Category.TRANSITION)) return;\n console.log(`${transLbl(trans)}: <- Success ${stringify(trans)}, final state: ${finalState.name}`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewEvent(event: string, viewData: ActiveUIView, extra = '') {\n if (!this.enabled(Category.UIVIEW)) return;\n console.log(`ui-view: ${padString(30, event)} ${uiViewString(viewData)}${extra}`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewConfigUpdated(viewData: ActiveUIView, context: ViewContext) {\n if (!this.enabled(Category.UIVIEW)) return;\n this.traceUIViewEvent('Updating', viewData, ` with ViewConfig from context='${context}'`);\n }\n\n /** @internalapi called by ui-router code */\n traceUIViewFill(viewData: ActiveUIView, html: string) {\n if (!this.enabled(Category.UIVIEW)) return;\n this.traceUIViewEvent('Fill', viewData, ` with: ${maxLength(200, html)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceViewSync(pairs: ViewTuple[]) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n const uivheader = 'uiview component fqn';\n const cfgheader = 'view config state (view name)';\n const mapping = pairs.map(({ uiView, viewConfig }) => {\n const uiv = uiView && uiView.fqn;\n const cfg = viewConfig && `${viewConfig.viewDecl.$context.name}: (${viewConfig.viewDecl.$name})`;\n return { [uivheader]: uiv, [cfgheader]: cfg };\n }).sort((a, b) => (a[uivheader] || '').localeCompare(b[uivheader] || ''));\n\n consoletable(mapping);\n }\n\n /** @internalapi called by ui-router code */\n traceViewServiceEvent(event: string, viewConfig: ViewConfig) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n console.log(`VIEWCONFIG: ${event} ${viewConfigString(viewConfig)}`);\n }\n\n /** @internalapi called by ui-router code */\n traceViewServiceUIViewEvent(event: string, viewData: ActiveUIView) {\n if (!this.enabled(Category.VIEWCONFIG)) return;\n console.log(`VIEWCONFIG: ${event} ${uiViewString(viewData)}`);\n }\n}\n\n/**\n * The [[Trace]] singleton\n *\n * #### Example:\n * ```js\n * import {trace} from \"angular-ui-router\";\n * trace.enable(1, 5);\n * ```\n */\nconst trace = new Trace();\nexport { trace };\n", - "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { extend, removeFrom, tail, values, identity, map } from '../common/common';\nimport { isString, isFunction } from '../common/predicates';\nimport { PathNode } from '../path/pathNode';\nimport {\n TransitionStateHookFn, TransitionHookFn, TransitionHookPhase, TransitionHookScope, IHookRegistry, PathType,\n} from './interface'; // has or is using\n\nimport {\n HookRegOptions, HookMatchCriteria, TreeChanges,\n HookMatchCriterion, IMatchingNodes, HookFn,\n} from './interface';\nimport { Glob } from '../common/glob';\nimport { StateObject } from '../state/stateObject';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionService } from './transitionService';\n\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @hidden\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state: StateObject, criterion: HookMatchCriterion) {\n const toMatch = isString(criterion) ? [criterion] : criterion;\n\n function matchGlobs(_state: StateObject) {\n const globStrings = toMatch;\n for (let i = 0; i < globStrings.length; i++) {\n const glob = new Glob(globStrings[i]);\n\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n\n const matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state);\n}\n\n/**\n * @internalapi\n * The registration data for a registered transition hook\n */\nexport class RegisteredHook {\n priority: number;\n bind: any;\n invokeCount = 0;\n invokeLimit: number;\n _deregistered = false;\n\n constructor(public tranSvc: TransitionService,\n public eventType: TransitionEventType,\n public callback: HookFn,\n public matchCriteria: HookMatchCriteria,\n public removeHookFromRegistry: (hook: RegisteredHook) => void,\n options: HookRegOptions = {} as any) {\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n private _matchingNodes(nodes: PathNode[], criterion: HookMatchCriterion): PathNode[] {\n if (criterion === true) return nodes;\n const matching = nodes.filter(node => matchState(node.state, criterion));\n return matching.length ? matching : null;\n }\n\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n private _getDefaultMatchCriteria(): HookMatchCriteria {\n return map(this.tranSvc._pluginapi._getPathTypes(), () => true);\n }\n\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n private _getMatchingNodes(treeChanges: TreeChanges): IMatchingNodes {\n const criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n const paths: PathType[] = values(this.tranSvc._pluginapi._getPathTypes());\n\n return paths.reduce((mn: IMatchingNodes, pathtype: PathType) => {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n const isStateHook = pathtype.scope === TransitionHookScope.STATE;\n const path = treeChanges[pathtype.name] || [];\n const nodes: PathNode[] = isStateHook ? path : [tail(path)];\n\n mn[pathtype.name] = this._matchingNodes(nodes, criteria[pathtype.name]);\n return mn;\n }, {} as IMatchingNodes);\n }\n\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n matches(treeChanges: TreeChanges): IMatchingNodes {\n const matches = this._getMatchingNodes(treeChanges);\n\n // Check if all the criteria matched the TreeChanges object\n const allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n }\n\n deregister() {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n }\n}\n\n/** @hidden Return a registration function of the requested type. */\nexport function makeEvent(registry: IHookRegistry, transitionService: TransitionService, eventType: TransitionEventType) {\n // Create the object which holds the registered transition hooks.\n const _registeredHooks = registry._registeredHooks = (registry._registeredHooks || {});\n const hooks = _registeredHooks[eventType.name] = [];\n const removeHookFn: (hook: RegisteredHook) => void = removeFrom(hooks);\n\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n\n function hookRegistrationFn(matchObject, callback, options = {}) {\n const registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n\n return hookRegistrationFn;\n}\n", + "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { StateDeclaration } from '../state/interface';\nimport { Predicate } from '../common/common';\n\nimport { Transition } from './transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TargetState } from '../state/targetState';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * The TransitionOptions object can be used to change the behavior of a transition.\n *\n * It is passed as the third argument to [[StateService.go]], [[StateService.transitionTo]].\n * It can also be used with a `uiSref`.\n */\nexport interface TransitionOptions {\n /**\n * This option changes how the Transition interacts with the browser's location bar (URL).\n *\n * - If `true`, it will update the url in the location bar.\n * - If `false`, it will not update the url in the location bar.\n * - If it is the string `\"replace\"`, it will update the url and also replace the last history record.\n *\n * @default `true`\n */\n location ?: (boolean|string);\n\n /**\n * When transitioning to relative path (e.g '`^`'), this option defines which state to be relative from.\n * @default `$state.current`\n */\n relative ?: (string|StateDeclaration|StateObject);\n\n /**\n * This option sets whether or not the transition's parameter values should be inherited from\n * the current parameter values.\n *\n * - If `true`, it will inherit parameter values from the current parameter values.\n * - If `false`, only the parameters which are provided to `transitionTo` will be used.\n *\n * @default `false`\n */\n inherit ?: boolean;\n\n /**\n * @deprecated\n */\n notify ?: boolean;\n\n /**\n * This option may be used to force states which are currently active to reload.\n *\n * During a normal transition, a state is \"retained\" if:\n * - It was previously active\n * - The state's parameter values have not changed\n * - All the parent states' parameter values have not changed\n *\n * Forcing a reload of a state will cause it to be exited and entered, which will:\n * - Refetch that state's resolve data\n * - Exit the state (onExit hook)\n * - Re-enter the state (onEnter hook)\n * - Re-render the views (controllers and templates)\n *\n * - When `true`, the destination state (and all parent states) will be reloaded.\n * - When it is a string and is the name of a state, or when it is a State object,\n * that state and any children states will be reloaded.\n *\n * @default `false`\n */\n reload ?: (boolean|string|StateDeclaration|StateObject);\n /**\n * You can define your own Transition Options inside this property and use them, e.g., from a Transition Hook\n */\n custom ?: any;\n /** @internalapi */\n reloadState ?: (StateObject);\n /** @internalapi\n * If this transition is a redirect, this property should be the original Transition (which was redirected to this one)\n */\n redirectedFrom?: Transition;\n /** @internalapi */\n current ?: () => Transition;\n /** @internalapi */\n source ?: 'sref' | 'url' | 'redirect' | 'otherwise' | 'unknown';\n}\n\n/** @internalapi */\nexport interface TransitionHookOptions {\n current ?: () => Transition; // path?\n transition ?: Transition;\n hookType ?: string;\n target ?: any;\n traceData ?: any;\n bind ?: any;\n stateHook ?: boolean;\n}\n\n/**\n * TreeChanges encapsulates the various Paths that are involved in a Transition.\n *\n * Get a TreeChanges object using [[Transition.treeChanges]]\n *\n * A UI-Router Transition is from one Path in a State Tree to another Path. For a given Transition,\n * this object stores the \"to\" and \"from\" paths, as well as subsets of those: the \"retained\",\n * \"exiting\" and \"entering\" paths.\n *\n * Each path in TreeChanges is an array of [[PathNode]] objects. Each PathNode in the array corresponds to a portion\n * of a nested state.\n *\n * For example, if you had a nested state named `foo.bar.baz`, it would have three\n * portions, `foo, bar, baz`. If you transitioned **to** `foo.bar.baz` and inspected the [[TreeChanges.to]]\n * Path, you would find a node in the array for each portion: `foo`, `bar`, and `baz`.\n *\n * ---\n *\n * @todo show visual state tree\n */\nexport interface TreeChanges {\n /** @nodoc */\n [key: string]: PathNode[];\n\n /** The path of nodes in the state tree that the transition is coming *from* */\n from: PathNode[];\n\n /** The path of nodes in the state tree that the transition is going *to* */\n to: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n */\n retained: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining with updated \"to params\" applied.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n *\n * This is a shallow copy of [[retained]], but with new (dynamic) parameter values from [[to]] applied.\n */\n retainedWithToParams: PathNode[];\n\n /**\n * The path of previously active nodes that the transition is exiting.\n *\n * After the Transition is successful, these nodes are no longer active.\n *\n * Note that a state that is being reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n exiting: PathNode[];\n\n /**\n * The path of nodes that the transition is entering.\n *\n * After the Transition is successful, these nodes will be active.\n * Because they are entering, they have their resolves fetched, `onEnter` hooks run, and their views\n * (component(s) or controller(s)+template(s)) refreshed.\n *\n * Note that a state that is reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n entering: PathNode[];\n}\n\nexport type IHookRegistration = (matchCriteria: HookMatchCriteria, callback: HookFn, options?: HookRegOptions) => Function;\n\n/**\n * The signature for Transition Hooks.\n *\n * Transition hooks are callback functions that hook into the lifecycle of transitions.\n * As a transition runs, it reaches certain lifecycle events.\n * As each event occurs, the hooks which are registered for the event are called (in priority order).\n *\n * A transition hook may alter a Transition by returning a [[HookResult]].\n *\n * #### See:\n *\n * - [[IHookRegistry.onBefore]]\n * - [[IHookRegistry.onStart]]\n * - [[IHookRegistry.onFinish]]\n * - [[IHookRegistry.onSuccess]]\n * - [[IHookRegistry.onError]]\n *\n * @param transition the current [[Transition]]\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n *\n */\nexport interface TransitionHookFn {\n (transition: Transition): HookResult;\n}\n\n/**\n * The signature for Transition State Hooks.\n *\n * A function which hooks into a lifecycle event for a specific state.\n *\n * Transition State Hooks are callback functions that hook into the lifecycle events of specific states during a transition.\n * As a transition runs, it may exit some states, retain (keep) states, and enter states.\n * As each lifecycle event occurs, the hooks which are registered for the event and that state are called (in priority order).\n *\n * #### See:\n *\n * - [[IHookRegistry.onExit]]\n * - [[IHookRegistry.onRetain]]\n * - [[IHookRegistry.onEnter]]\n *\n * @param transition the current [[Transition]]\n * @param state the [[StateObject]] that the hook is bound to\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n */\nexport interface TransitionStateHookFn {\n (transition: Transition, state: StateDeclaration): HookResult;\n}\n\n/**\n * The signature for Transition onCreate Hooks.\n *\n * Transition onCreate Hooks are callbacks that allow customization or preprocessing of\n * a Transition before it is returned from [[TransitionService.create]]\n *\n * @param transition the [[Transition]] that was just created\n * @return a [[Transition]] which will then be returned from [[TransitionService.create]]\n */\nexport interface TransitionCreateHookFn {\n (transition: Transition): void;\n}\n\nexport type HookFn = (TransitionHookFn|TransitionStateHookFn|TransitionCreateHookFn);\n\n/**\n * The return value of a [[TransitionHookFn]] or [[TransitionStateHookFn]]\n *\n * When returned from a [[TransitionHookFn]] or [[TransitionStateHookFn]], these values alter the running [[Transition]]:\n *\n * - `false`: the transition will be cancelled.\n * - [[TargetState]]: the transition will be redirected to the new target state (see: [[StateService.target]])\n * - `Promise`: the transition will wait for the promise to resolve or reject\n * - If the promise is rejected (or resolves to `false`), the transition will be cancelled\n * - If the promise resolves to a [[TargetState]], the transition will be redirected\n * - If the promise resolves to anything else, the transition will resume\n * - Anything else: the transition will resume\n */\nexport type HookResult = (boolean | TargetState | void | Promise);\n\n/**\n * These options may be provided when registering a Transition Hook (such as `onStart`)\n */\nexport interface HookRegOptions {\n /**\n * Sets the priority of the registered hook\n *\n * Hooks of the same type (onBefore, onStart, etc) are invoked in priority order. A hook with a higher priority\n * is invoked before a hook with a lower priority.\n *\n * The default hook priority is 0\n */\n priority?: number;\n\n /**\n * Specifies what `this` is bound to during hook invocation.\n */\n bind?: any;\n\n /**\n * Limits the number of times that the hook will be invoked.\n * Once the hook has been invoked this many times, it is automatically deregistered.\n */\n invokeLimit?: number;\n}\n\n/**\n * This interface specifies the api for registering Transition Hooks. Both the\n * [[TransitionService]] and also the [[Transition]] object itself implement this interface.\n * Note: the Transition object only allows hooks to be registered before the Transition is started.\n */\nexport interface IHookRegistry {\n /** @hidden place to store the hooks */\n _registeredHooks: { [key: string]: RegisteredHook[] };\n\n /**\n * Registers a [[TransitionHookFn]], called *before a transition starts*.\n *\n * Registers a transition lifecycle hook, which is invoked before a transition even begins.\n * This hook can be useful to implement logic which prevents a transition from even starting, such\n * as authentication, redirection\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onBefore` hooks are invoked *before a Transition starts*.\n * No resolves have been fetched yet.\n * Each `onBefore` hook is invoked synchronously, in the same call stack as [[StateService.transitionTo]].\n * The registered `onBefore` hooks are invoked in priority order.\n *\n * Note: during the `onBefore` phase, additional hooks can be added to the specific [[Transition]] instance.\n * These \"on-the-fly\" hooks only affect the currently running transition..\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * If any hook modifies the transition *synchronously* (by throwing, returning `false`, or returning\n * a [[TargetState]]), the remainder of the hooks are skipped.\n * If a hook returns a promise, the remainder of the `onBefore` hooks are still invoked synchronously.\n * All promises are resolved, and processed asynchronously before the `onStart` phase of the Transition.\n *\n * ### Examples\n *\n * #### Default Substate\n *\n * This example redirects any transition from 'home' to 'home.dashboard'. This is commonly referred to as a\n * \"default substate\".\n *\n * @example\n * ```js\n * // ng2\n * transitionService.onBefore({ to: 'home' }, (trans: Transition) =>\n * trans.router.stateService.target(\"home.dashboard\"));\n * ```\n *\n * #### Data Driven Default Substate\n *\n * This example provides data-driven default substate functionality. It matches on a transition to any state\n * which has `defaultSubstate: \"some.sub.state\"` defined. See: [[Transition.to]] which returns the \"to state\"\n * definition.\n *\n * @example\n * ```js\n * // ng1\n * // state declaration\n * {\n * name: 'home',\n * template: '
    ',\n * defaultSubstate: 'home.dashboard'\n * }\n *\n * var criteria = {\n * to: function(state) {\n * return state.defaultSubstate != null;\n * }\n * }\n *\n * $transitions.onBefore(criteria, function(trans: Transition) {\n * var substate = trans.to().defaultSubstate;\n * return trans.router.stateService.target(substate);\n * });\n * ```\n *\n *\n * #### Require authentication\n *\n * This example cancels a transition to a state which requires authentication, if the user is not currently authenticated.\n *\n * This example assumes a state tree where all states which require authentication are children of a parent `'requireauth'` state.\n * This example assumes `MyAuthService` synchronously returns a boolean from `isAuthenticated()`.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onBefore( { to: 'requireauth.**' }, function(trans) {\n * var myAuthService = trans.injector().get('MyAuthService');\n * // If isAuthenticated returns false, the transition is cancelled.\n * return myAuthService.isAuthenticated();\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @returns a function which deregisters the hook.\n */\n onBefore(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called when a transition starts.\n *\n * Registers a transition lifecycle hook, which is invoked as a transition starts running.\n * This hook can be useful to perform some asynchronous action before completing a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onStart` hooks are invoked asynchronously when the Transition starts running.\n * This happens after the `onBefore` phase is complete.\n * At this point, the Transition has not yet exited nor entered any states.\n * The registered `onStart` hooks are invoked in priority order.\n *\n * Note: A built-in `onStart` hook with high priority is used to fetch any eager resolve data.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Example\n *\n * #### Login during transition\n *\n * This example intercepts any transition to a state which requires authentication, when the user is\n * not currently authenticated. It allows the user to authenticate asynchronously, then resumes the\n * transition. If the user did not authenticate successfully, it redirects to the \"guest\" state, which\n * does not require authentication.\n *\n * This example assumes:\n * - a state tree where all states which require authentication are children of a parent `'auth'` state.\n * - `MyAuthService.isAuthenticated()` synchronously returns a boolean.\n * - `MyAuthService.authenticate()` presents a login dialog, and returns a promise which is resolved\n * or rejected, whether or not the login attempt was successful.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onStart( { to: 'auth.**' }, function(trans) {\n * var $state = trans.router.stateService;\n * var MyAuthService = trans.injector().get('MyAuthService');\n *\n * // If the user is not authenticated\n * if (!MyAuthService.isAuthenticated()) {\n *\n * // Then return a promise for a successful login.\n * // The transition will wait for this promise to settle\n *\n * return MyAuthService.authenticate().catch(function() {\n *\n * // If the authenticate() method failed for whatever reason,\n * // redirect to a 'guest' state which doesn't require auth.\n * return $state.target(\"guest\");\n * });\n * }\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onStart(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is entered.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being entered.\n *\n * Since this hook is run only when the specific state is being *entered*, it can be useful for\n * performing tasks when entering a submodule/feature area such as initializing a stateful service,\n * or for guarding access to a submodule/feature area.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onEnter` hooks generally specify `{ entering: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onEnter` hooks are invoked when the Transition is entering a state.\n * States are entered after the `onRetain` phase is complete.\n * If more than one state is being entered, the parent state is entered first.\n * The registered `onEnter` hooks for a state are invoked in priority order.\n *\n * Note: A built-in `onEnter` hook with high priority is used to fetch lazy resolve data for states being entered.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onEnter` hooks using the [[TransitionService]], you may define an `onEnter` hook\n * directly on a state declaration (see: [[StateDeclaration.onEnter]]).\n *\n *\n * ### Examples\n *\n * #### Audit Log\n *\n * This example uses a service to log that a user has entered the admin section of an app.\n * This assumes that there are substates of the \"admin\" state, such as \"admin.users\", \"admin.pages\", etc.\n * @example\n * ```\n *\n * $transitions.onEnter({ entering: 'admin' }, function(transition, state) {\n * var AuditService = trans.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * ```\n *\n * #### Audit Log (inside a state declaration)\n *\n * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.\n * ```\n * {\n * name: 'admin',\n * component: 'admin',\n * onEnter: function($transition$, $state$) {\n * var AuditService = $transition$.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * }\n * ```\n *\n * Note: A state declaration's `onEnter` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onEnter(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is retained/kept.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) for\n * a specific state that was previously active will remain active (is not being entered nor exited).\n *\n * This hook is invoked when a state is \"retained\" or \"kept\".\n * It means the transition is coming *from* a substate of the retained state *to* a substate of the retained state.\n * This hook can be used to perform actions when the user moves from one substate to another, such as between steps in a wizard.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onRetain` hooks generally specify `{ retained: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onRetain` hooks are invoked after any `onExit` hooks have been fired.\n * If more than one state is retained, the child states' `onRetain` hooks are invoked first.\n * The registered `onRetain` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onRetain` hooks using the [[TransitionService]], you may define an `onRetain` hook\n * directly on a state declaration (see: [[StateDeclaration.onRetain]]).\n *\n * Note: A state declaration's `onRetain` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onRetain(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is exited.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being exited.\n *\n * Since this hook is run only when the specific state is being *exited*, it can be useful for\n * performing tasks when leaving a submodule/feature area such as cleaning up a stateful service,\n * or for preventing the user from leaving a state or submodule until some criteria is satisfied.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onExit` hooks generally specify `{ exiting: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onExit` hooks are invoked when the Transition is exiting a state.\n * States are exited after any `onStart` phase is complete.\n * If more than one state is being exited, the child states are exited first.\n * The registered `onExit` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onExit` hooks using the [[TransitionService]], you may define an `onExit` hook\n * directly on a state declaration (see: [[StateDeclaration.onExit]]).\n *\n * Note: A state declaration's `onExit` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onExit(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called *just before a transition finishes*.\n *\n * Registers a transition lifecycle hook, which is invoked just before a transition finishes.\n * This hook is a last chance to cancel or redirect a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onFinish` hooks are invoked after the `onEnter` phase is complete.\n * These hooks are invoked just before the transition is \"committed\".\n * Each hook is invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onFinish(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a successful transition completed.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition successfully completes.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onSuccess` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If the Transition is successful and its promise is resolved, then the `onSuccess` hooks are invoked.\n * Since these hooks are run after the transition is over, their return value is ignored.\n * The `onSuccess` hooks are invoked in priority order.\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onSuccess(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a transition has errored.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition has been rejected for any reason.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * The `onError` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If a Transition fails, its promise is rejected and the `onError` hooks are invoked.\n * The `onError` hooks are invoked in priority order.\n *\n * Since these hooks are run after the transition is over, their return value is ignored.\n *\n * A transition \"errors\" if it was started, but failed to complete (for any reason).\n * A *non-exhaustive list* of reasons a transition can error:\n *\n * - A transition was cancelled because a new transition started while it was still running (`Transition superseded`)\n * - A transition was cancelled by a Transition Hook returning false\n * - A transition was redirected by a Transition Hook returning a [[TargetState]]\n * - A Transition Hook or resolve function threw an error\n * - A Transition Hook returned a rejected promise\n * - A resolve function returned a rejected promise\n *\n * To check the failure reason, inspect the return value of [[Transition.error]].\n *\n * Note: `onError` should be used for targeted error handling, or error recovery.\n * For simple catch-all error reporting, use [[StateService.defaultErrorHandler]].\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onError(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Returns all the registered hooks of a given `hookName` type\n *\n * #### Example:\n * ```\n * $transitions.getHooks(\"onEnter\")\n * ```\n */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/** A predicate type which tests if a [[StateObject]] passes some test. Returns a boolean. */\nexport type IStateMatch = Predicate;\n\n/**\n * This object is used to configure whether or not a Transition Hook is invoked for a particular transition,\n * based on the Transition's \"to state\" and \"from state\".\n *\n * Each property (`to`, `from`, `exiting`, `retained`, and `entering`) can be a state [[Glob]] string,\n * a boolean, or a function that takes a state and returns a boolean (see [[HookMatchCriterion]])\n *\n * All properties are optional. If any property is omitted, it is replaced with the value `true`, and always matches.\n * To match any transition, use an empty criteria object `{}`.\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from the `parent` state and going to the `parent.child` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.child'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any substate of `parent` and going directly to the `parent` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any substate of `mymodule`\n * var match = {\n * to: 'mymodule.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any state that has `data.authRequired`\n * // set to a truthy value.\n * var match = {\n * to: function(state) {\n * return state.data != null && state.data.authRequired === true;\n * }\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition that is exiting `parent.child`\n * var match = {\n * exiting: 'parent.child'\n * }\n * ```\n */\nexport interface HookMatchCriteria {\n [key: string]: HookMatchCriterion | undefined;\n\n /** A [[HookMatchCriterion]] to match the destination state */\n to?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match the original (from) state */\n from?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be exiting */\n exiting?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be retained */\n retained?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be entering */\n entering?: HookMatchCriterion;\n}\n\nexport interface IMatchingNodes {\n [key: string]: PathNode[];\n\n to: PathNode[];\n from: PathNode[];\n exiting: PathNode[];\n retained: PathNode[];\n entering: PathNode[];\n}\n\n/** @hidden */\nexport interface RegisteredHooks {\n [key: string]: RegisteredHook[];\n}\n\n/** @hidden */\nexport interface PathTypes {\n [key: string]: PathType;\n\n to: PathType;\n from: PathType;\n exiting: PathType;\n retained: PathType;\n entering: PathType;\n}\n\n/** @hidden */\nexport interface PathType {\n name: string;\n scope: TransitionHookScope;\n}\n\n/**\n * Hook Criterion used to match a transition.\n *\n * A [[Glob]] string that matches the name of a state.\n *\n * Or, a function with the signature `function(state) { return matches; }`\n * which should return a boolean to indicate if a state matches.\n *\n * Or, `true` to always match\n */\nexport type HookMatchCriterion = (string|IStateMatch|boolean);\n\nexport enum TransitionHookPhase { CREATE, BEFORE, RUN, SUCCESS, ERROR }\nexport enum TransitionHookScope { TRANSITION, STATE }\n", + "/**\n * @coreapi\n * @module state\n */ /** for typedoc */\n\nimport { StateDeclaration, StateOrName, TargetStateDef } from './interface';\nimport { TransitionOptions } from '../transition/interface';\nimport { StateObject } from './stateObject';\nimport { isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { extend } from '../common';\nimport { StateRegistry } from './stateRegistry';\nimport { RawParams } from '../params';\n\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nexport class TargetState {\n private _definition: StateObject;\n private _params: RawParams;\n private _options: TransitionOptions;\n\n /** Returns true if the object has a state property that might be a state or state name */\n static isDef = (obj): obj is TargetStateDef =>\n obj && obj.state && (isString(obj.state) || isString(obj.state.name));\n\n /**\n * The TargetState constructor\n *\n * Note: Do not construct a `TargetState` manually.\n * To create a `TargetState`, use the [[StateService.target]] factory method.\n *\n * @param _stateRegistry The StateRegistry to use to look up the _definition\n * @param _identifier An identifier for a state.\n * Either a fully-qualified state name, or the object used to define the state.\n * @param _params Parameters for the target state\n * @param _options Transition options.\n *\n * @internalapi\n */\n constructor(\n private _stateRegistry: StateRegistry,\n private _identifier: StateOrName,\n _params?: RawParams,\n _options?: TransitionOptions,\n ) {\n this._identifier = _identifier;\n this._params = extend({}, _params || {});\n this._options = extend({}, _options || {});\n this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n }\n\n /** The name of the state this object targets */\n name(): string {\n return this._definition && this._definition.name || this._identifier;\n }\n\n /** The identifier used when creating this TargetState */\n identifier(): StateOrName {\n return this._identifier;\n }\n\n /** The target parameter values */\n params(): RawParams {\n return this._params;\n }\n\n /** The internal state object (if it was found) */\n $state(): StateObject {\n return this._definition;\n }\n\n /** The internal state declaration (if it was found) */\n state(): StateDeclaration {\n return this._definition && this._definition.self;\n }\n\n /** The target options */\n options() {\n return this._options;\n }\n\n /** True if the target state was found */\n exists(): boolean {\n return !!(this._definition && this._definition.self);\n }\n\n /** True if the object is valid */\n valid(): boolean {\n return !this.error();\n }\n\n /** If the object is invalid, returns the reason why */\n error(): string {\n const base = this.options().relative;\n if (!this._definition && !!base) {\n const stateName = base.name ? base.name : base;\n return `Could not resolve '${this.name()}' from state '${stateName}'`;\n }\n if (!this._definition)\n return `No such state '${this.name()}'`;\n if (!this._definition.self)\n return `State '${this.name()}' has an invalid definition`;\n }\n\n toString() {\n return `'${this.name()}'${stringify(this.params())}`;\n }\n\n /**\n * Returns a copy of this TargetState which targets a different state.\n * The new TargetState has the same parameter values and transition options.\n *\n * @param state The new state that should be targeted\n */\n withState(state: StateOrName): TargetState {\n return new TargetState(this._stateRegistry, state, this._params, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified parameter values.\n *\n * @param params the new parameter values to use\n * @param replace When false (default) the new parameter values will be merged with the current values.\n * When true the parameter values will be used instead of the current values.\n */\n withParams(params: RawParams, replace = false): TargetState {\n const newParams: RawParams = replace ? params : extend({}, this._params, params);\n return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified Transition Options.\n *\n * @param options the new options to use\n * @param replace When false (default) the new options will be merged with the current options.\n * When true the options will be used instead of the current options.\n */\n withOptions(options: TransitionOptions, replace = false): TargetState {\n const newOpts = replace ? options : extend({}, this._options, options);\n return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n }\n}\n", + "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport { TransitionHookOptions, HookResult, TransitionHookPhase } from './interface';\nimport { defaults, noop, silentRejection } from '../common/common';\nimport { fnToString, maxLength } from '../common/strings';\nimport { isPromise } from '../common/predicates';\nimport { is, parse } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { Rejection } from './rejectFactory';\nimport { TargetState } from '../state/targetState';\nimport { Transition } from './transition';\nimport { TransitionEventType } from './transitionEventType';\nimport { RegisteredHook } from './hookRegistry';\nimport { StateDeclaration } from '../state/interface';\n\nconst defaultOptions: TransitionHookOptions = {\n current: noop,\n transition: null,\n traceData: {},\n bind: null,\n};\n\nexport type GetResultHandler = (hook: TransitionHook) => ResultHandler;\nexport type GetErrorHandler = (hook: TransitionHook) => ErrorHandler;\n\nexport type ResultHandler = (result: HookResult) => Promise;\nexport type ErrorHandler = (error: any) => Promise;\n\n/** @hidden */\nexport class TransitionHook {\n type: TransitionEventType;\n\n /**\n * These GetResultHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static HANDLE_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) =>\n hook.handleHookResult(result);\n\n /**\n * If the result is a promise rejection, log it.\n * Otherwise, ignore the result.\n */\n static LOG_REJECTED_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) => {\n isPromise(result) && result.catch(err =>\n hook.logError(Rejection.normalize(err)));\n return undefined;\n }\n\n /**\n * These GetErrorHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static LOG_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n hook.logError(error);\n\n static REJECT_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n silentRejection(error);\n\n static THROW_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) => {\n throw error;\n }\n\n /**\n * Chains together an array of TransitionHooks.\n *\n * Given a list of [[TransitionHook]] objects, chains them together.\n * Each hook is invoked after the previous one completes.\n *\n * #### Example:\n * ```js\n * var hooks: TransitionHook[] = getHooks();\n * let promise: Promise = TransitionHook.chain(hooks);\n *\n * promise.then(handleSuccess, handleError);\n * ```\n *\n * @param hooks the list of hooks to chain together\n * @param waitFor if provided, the chain is `.then()`'ed off this promise\n * @returns a `Promise` for sequentially invoking the hooks (in order)\n */\n static chain(hooks: TransitionHook[], waitFor?: Promise): Promise {\n // Chain the next hook off the previous\n const createHookChainR = (prev: Promise, nextHook: TransitionHook) =>\n prev.then(() => nextHook.invokeHook());\n return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n }\n\n\n /**\n * Invokes all the provided TransitionHooks, in order.\n * Each hook's return value is checked.\n * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n * If no hook returns a promise, then all hooks are processed synchronously.\n *\n * @param hooks the list of TransitionHooks to invoke\n * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n *\n * @returns a promise for the async result, or the result of the callback\n */\n static invokeHooks(hooks: TransitionHook[], doneCallback: (result?: HookResult) => T): Promise | T {\n for (let idx = 0; idx < hooks.length; idx++) {\n const hookResult = hooks[idx].invokeHook();\n\n if (isPromise(hookResult)) {\n const remainingHooks = hooks.slice(idx + 1);\n\n return TransitionHook.chain(remainingHooks, hookResult)\n .then(doneCallback);\n }\n }\n\n return doneCallback();\n }\n\n /**\n * Run all TransitionHooks, ignoring their return value.\n */\n static runAllHooks(hooks: TransitionHook[]): void {\n hooks.forEach(hook => hook.invokeHook());\n }\n\n constructor(private transition: Transition,\n private stateContext: StateDeclaration,\n private registeredHook: RegisteredHook,\n private options: TransitionHookOptions) {\n this.options = defaults(options, defaultOptions);\n this.type = registeredHook.eventType;\n }\n\n private isSuperseded = () =>\n this.type.hookPhase === TransitionHookPhase.RUN && !this.options.transition.isActive();\n\n logError(err): any {\n this.transition.router.stateService.defaultErrorHandler()(err);\n }\n\n invokeHook(): Promise | void {\n const hook = this.registeredHook;\n if (hook._deregistered) return;\n\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n const options = this.options;\n trace.traceHookInvocation(this, this.transition, options);\n\n const invokeCallback = () =>\n hook.callback.call(options.bind, this.transition, this.stateContext);\n\n const normalizeErr = err =>\n Rejection.normalize(err).toPromise();\n\n const handleError = err =>\n hook.eventType.getErrorHandler(this)(err);\n\n const handleResult = result =>\n hook.eventType.getResultHandler(this)(result);\n\n try {\n const result = invokeCallback();\n\n if (!this.type.synchronous && isPromise(result)) {\n return result.catch(normalizeErr)\n .then(handleResult, handleError);\n } else {\n return handleResult(result);\n }\n } catch (err) {\n // If callback throws (synchronously)\n return handleError(Rejection.normalize(err));\n } finally {\n if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n hook.deregister();\n }\n }\n }\n\n /**\n * This method handles the return value of a Transition Hook.\n *\n * A hook can return false (cancel), a TargetState (redirect),\n * or a promise (which may later resolve to false or a redirect)\n *\n * This also handles \"transition superseded\" -- when a new transition\n * was started while the hook was still running\n */\n handleHookResult(result: HookResult): Promise {\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n // Hook returned a promise\n if (isPromise(result)) {\n // Wait for the promise, then reprocess with the resulting value\n return result.then(val => this.handleHookResult(val));\n }\n\n trace.traceHookResult(result, this.transition, this.options);\n\n // Hook returned false\n if (result === false) {\n // Abort this Transition\n return Rejection.aborted('Hook aborted transition').toPromise();\n }\n\n const isTargetState = is(TargetState);\n // hook returned a TargetState\n if (isTargetState(result)) {\n // Halt the current Transition and redirect (a new Transition) to the TargetState.\n return Rejection.redirected(result).toPromise();\n }\n }\n\n\n /**\n * Return a Rejection promise if the transition is no longer current due\n * to a stopped router (disposed), or a new transition has started and superseded this one.\n */\n private getNotCurrentRejection() {\n const router = this.transition.router;\n\n // The router is stopped\n if (router._disposed) {\n return Rejection.aborted(`UIRouter instance #${router.$id} has been stopped (disposed)`).toPromise();\n }\n\n if (this.transition._aborted) {\n return Rejection.aborted().toPromise();\n }\n\n // This transition is no longer current.\n // Another transition started while this hook was still running.\n if (this.isSuperseded()) {\n // Abort this transition\n return Rejection.superseded(this.options.current()).toPromise();\n }\n }\n\n toString() {\n const { options, registeredHook } = this;\n const event = parse('traceData.hookType')(options) || 'internal',\n context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown',\n name = fnToString(registeredHook.callback);\n return `${event} context: ${context}, ${maxLength(200, name)}`;\n }\n\n}\n", + "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { isString, isFunction, Glob, extend, removeFrom, tail, values, identity, mapObj } from '../common';\nimport { PathNode } from '../path/pathNode';\nimport {\n TransitionStateHookFn, TransitionHookFn, TransitionHookPhase, // has or is using\n TransitionHookScope, IHookRegistry, PathType,\n} from './interface';\n\nimport { HookRegOptions, HookMatchCriteria, TreeChanges, HookMatchCriterion, IMatchingNodes, HookFn } from './interface';\nimport { StateObject } from '../state/stateObject';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionService } from './transitionService';\n\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @hidden\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state: StateObject, criterion: HookMatchCriterion) {\n const toMatch = isString(criterion) ? [criterion] : criterion;\n\n function matchGlobs(_state: StateObject) {\n const globStrings = toMatch;\n for (let i = 0; i < globStrings.length; i++) {\n const glob = new Glob(globStrings[i]);\n\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n\n const matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state);\n}\n\n/**\n * @internalapi\n * The registration data for a registered transition hook\n */\nexport class RegisteredHook {\n priority: number;\n bind: any;\n invokeCount = 0;\n invokeLimit: number;\n _deregistered = false;\n\n constructor(public tranSvc: TransitionService,\n public eventType: TransitionEventType,\n public callback: HookFn,\n public matchCriteria: HookMatchCriteria,\n public removeHookFromRegistry: (hook: RegisteredHook) => void,\n options: HookRegOptions = {} as any) {\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n private _matchingNodes(nodes: PathNode[], criterion: HookMatchCriterion): PathNode[] {\n if (criterion === true) return nodes;\n const matching = nodes.filter(node => matchState(node.state, criterion));\n return matching.length ? matching : null;\n }\n\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n private _getDefaultMatchCriteria(): HookMatchCriteria {\n return mapObj(this.tranSvc._pluginapi._getPathTypes(), () => true);\n }\n\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n private _getMatchingNodes(treeChanges: TreeChanges): IMatchingNodes {\n const criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n const paths: PathType[] = values(this.tranSvc._pluginapi._getPathTypes());\n\n return paths.reduce((mn: IMatchingNodes, pathtype: PathType) => {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n const isStateHook = pathtype.scope === TransitionHookScope.STATE;\n const path = treeChanges[pathtype.name] || [];\n const nodes: PathNode[] = isStateHook ? path : [tail(path)];\n\n mn[pathtype.name] = this._matchingNodes(nodes, criteria[pathtype.name]);\n return mn;\n }, {} as IMatchingNodes);\n }\n\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n matches(treeChanges: TreeChanges): IMatchingNodes {\n const matches = this._getMatchingNodes(treeChanges);\n\n // Check if all the criteria matched the TreeChanges object\n const allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n }\n\n deregister() {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n }\n}\n\n/** @hidden Return a registration function of the requested type. */\nexport function makeEvent(registry: IHookRegistry, transitionService: TransitionService, eventType: TransitionEventType) {\n // Create the object which holds the registered transition hooks.\n const _registeredHooks = registry._registeredHooks = (registry._registeredHooks || {});\n const hooks = _registeredHooks[eventType.name] = [];\n const removeHookFn: (hook: RegisteredHook) => void = removeFrom(hooks);\n\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n\n function hookRegistrationFn(matchObject, callback, options = {}) {\n const registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n\n return hookRegistrationFn;\n}\n", "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n\nimport { extend, tail, assertPredicate, unnestR, identity } from '../common/common';\nimport { isArray } from '../common/predicates';\n\nimport {\n TransitionOptions, TransitionHookOptions, IHookRegistry, TreeChanges, IMatchingNodes,\n TransitionHookPhase, TransitionHookScope,\n} from './interface';\n\nimport { Transition } from './transition';\nimport { TransitionHook } from './transitionHook';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TransitionService } from './transitionService';\nimport { TransitionEventType } from './transitionEventType';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * This class returns applicable TransitionHooks for a specific Transition instance.\n *\n * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n * myTransition.onEnter(...). The HookBuilder finds matching RegisteredHooks (where the match criteria is\n * determined by the type of hook)\n *\n * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n *\n * The HookBuilder constructor is given the $transitions service and a Transition instance. Thus, a HookBuilder\n * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n * in the Transition class, so we must also provide the Transition's _treeChanges)\n *\n */\nexport class HookBuilder {\n constructor(private transition: Transition) { }\n\n buildHooksForPhase(phase: TransitionHookPhase): TransitionHook[] {\n const $transitions = this.transition.router.transitionService;\n return $transitions._pluginapi._getEvents(phase)\n .map(type => this.buildHooks(type))\n .reduce(unnestR, [])\n .filter(identity);\n }\n\n /**\n * Returns an array of newly built TransitionHook objects.\n *\n * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n * - For each of the [[PathNode]]s, creates a TransitionHook\n *\n * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n */\n buildHooks(hookType: TransitionEventType): TransitionHook[] {\n const transition = this.transition;\n const treeChanges = transition.treeChanges();\n\n // Find all the matching registered hooks for a given hook type\n const matchingHooks = this.getMatchingHooks(hookType, treeChanges);\n if (!matchingHooks) return [];\n\n const baseHookOptions = {\n transition: transition,\n current: transition.options().current,\n };\n\n const makeTransitionHooks = (hook: RegisteredHook) => {\n // Fetch the Nodes that caused this hook to match.\n const matches: IMatchingNodes = hook.matches(treeChanges);\n // Select the PathNode[] that will be used as TransitionHook context objects\n const matchingNodes: PathNode[] = matches[hookType.criteriaMatchPath.name];\n\n // Return an array of HookTuples\n return matchingNodes.map(node => {\n const _options = extend({\n bind: hook.bind,\n traceData: { hookType: hookType.name, context: node },\n }, baseHookOptions);\n\n const state = hookType.criteriaMatchPath.scope === TransitionHookScope.STATE ? node.state.self : null;\n const transitionHook = new TransitionHook(transition, state, hook, _options);\n return { hook, node, transitionHook };\n });\n };\n\n return matchingHooks.map(makeTransitionHooks)\n .reduce(unnestR, [])\n .sort(tupleSort(hookType.reverseSort))\n .map(tuple => tuple.transitionHook);\n }\n\n /**\n * Finds all RegisteredHooks from:\n * - The Transition object instance hook registry\n * - The TransitionService ($transitions) global hook registry\n *\n * which matched:\n * - the eventType\n * - the matchCriteria (to, from, exiting, retained, entering)\n *\n * @returns an array of matched [[RegisteredHook]]s\n */\n public getMatchingHooks(hookType: TransitionEventType, treeChanges: TreeChanges): RegisteredHook[] {\n const isCreate = hookType.hookPhase === TransitionHookPhase.CREATE;\n\n // Instance and Global hook registries\n const $transitions = this.transition.router.transitionService;\n const registries = isCreate ? [ $transitions ] : [ this.transition, $transitions ];\n\n return registries.map((reg: IHookRegistry) => reg.getHooks(hookType.name)) // Get named hooks from registries\n .filter(assertPredicate(isArray, `broken event named: ${hookType.name}`)) // Sanity check\n .reduce(unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n .filter(hook => hook.matches(treeChanges)); // Only those satisfying matchCriteria\n }\n}\n\ninterface HookTuple { hook: RegisteredHook, node: PathNode, transitionHook: TransitionHook }\n\n/**\n * A factory for a sort function for HookTuples.\n *\n * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n * the EventHook priority.\n *\n * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n * @returns a tuple sort function\n */\nfunction tupleSort(reverseDepthSort = false) {\n return function nodeDepthThenPriority(l: HookTuple, r: HookTuple): number {\n const factor = reverseDepthSort ? -1 : 1;\n const depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n };\n}\n", "/**\n * @coreapi\n * @module params\n */\n/** */\nimport { extend, filter, map } from '../common/common';\nimport { isArray, isDefined } from '../common/predicates';\nimport { ParamTypeDefinition } from './interface';\n\n/**\n * An internal class which implements [[ParamTypeDefinition]].\n *\n * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n * When a param type definition is registered, an instance of this class is created internally.\n *\n * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n *\n * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n *\n * #### Example:\n * ```js\n * var paramTypeDef = {\n * decode: function(val) { return parseInt(val, 10); },\n * encode: function(val) { return val && val.toString(); },\n * equals: function(a, b) { return this.is(a) && a === b; },\n * is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n * pattern: /\\d+/\n * }\n *\n * var paramType = new ParamType(paramTypeDef);\n * ```\n * @internalapi\n */\nexport class ParamType implements ParamTypeDefinition {\n /** @inheritdoc */\n pattern: RegExp = /.*/;\n /** The name/id of the parameter type */\n name: string;\n /** @inheritdoc */\n raw: boolean;\n /** @inheritdoc */\n dynamic: boolean;\n /** @inheritdoc */\n inherit = true;\n\n /**\n * @param def A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `ParamType`'s public interface.\n * @returns a new ParamType object\n */\n constructor(def: ParamTypeDefinition) {\n extend(this, def);\n }\n\n\n // consider these four methods to be \"abstract methods\" that should be overridden\n /** @inheritdoc */\n is(val: any, key?: string): boolean { return true; }\n /** @inheritdoc */\n encode(val: any, key?: string): (string|string[]) { return val; }\n /** @inheritdoc */\n decode(val: string, key?: string): any { return val; }\n /** @inheritdoc */\n equals(a: any, b: any): boolean { return a == b; } // tslint:disable-line:triple-equals\n\n\n $subPattern() {\n const sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n }\n\n toString() {\n return `{ParamType:${this.name}}`;\n }\n\n /** Given an encoded string, or a decoded object, returns a decoded object */\n $normalize(val: any) {\n return this.is(val) ? val : this.decode(val);\n }\n\n /**\n * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\n $asArray(mode: (boolean|'auto'), isSearch: boolean) {\n if (!mode) return this;\n if (mode === 'auto' && !isSearch) throw new Error(\"'auto' array mode is for query parameters only\");\n return new ( ArrayType)(this, mode);\n }\n}\n\n/**\n * Wraps up a `ParamType` object to handle array values.\n * @internalapi\n */\nfunction ArrayType(type: ParamType, mode: (boolean|'auto')) {\n // Wrap non-array value as array\n function arrayWrap(val: any): any[] {\n return isArray(val) ? val : (isDefined(val) ? [ val ] : []);\n }\n\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val: any) {\n switch (val.length) {\n case 0: return undefined;\n case 1: return mode === 'auto' ? val[0] : val;\n default: return val;\n }\n }\n\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback: (x: any) => any, allTruthyMode?: boolean) {\n return function handleArray(val: any) {\n if (isArray(val) && val.length === 0) return val;\n const arr = arrayWrap(val);\n const result = map(arr, callback);\n return (allTruthyMode === true) ? filter(result, x => !x).length === 0 : arrayUnwrap(result);\n };\n }\n\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback: (l: any, r: any) => boolean) {\n return function handleArray(val1: any, val2: any) {\n const left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length) return false;\n for (let i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i])) return false;\n }\n return true;\n };\n }\n\n ['encode', 'decode', 'equals', '$normalize'].forEach(name => {\n const paramTypeFn = type[name].bind(type);\n const wrapperFn: Function = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n this[name] = wrapperFn(paramTypeFn);\n });\n\n extend(this, {\n dynamic: type.dynamic,\n name: type.name,\n pattern: type.pattern,\n inherit: type.inherit,\n is: arrayHandler(type.is.bind(type), true),\n $arrayMode: mode,\n });\n}\n", "/**\n * @coreapi\n * @module params\n */ /** for typedoc */\nimport { extend, filter, map, allTrueR } from '../common/common';\nimport { prop } from '../common/hof';\nimport { isInjectable, isDefined, isString, isArray, isUndefined } from '../common/predicates';\nimport { RawParams, ParamDeclaration } from '../params/interface';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nimport { ParamTypes } from './paramTypes';\nimport { UrlMatcherFactory } from '../url/urlMatcherFactory';\n\n/** @hidden */\nconst hasOwn = Object.prototype.hasOwnProperty;\n\n/** @hidden */\nconst isShorthand = (cfg: ParamDeclaration) =>\n ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n\n/** @internalapi */\nexport enum DefType {\n PATH,\n SEARCH,\n CONFIG,\n}\n\n/** @hidden */\nfunction unwrapShorthand(cfg: ParamDeclaration): ParamDeclaration {\n cfg = isShorthand(cfg) && { value: cfg } as any || cfg;\n\n getStaticDefaultValue['__cacheable'] = true;\n function getStaticDefaultValue() {\n return cfg.value;\n }\n\n return extend(cfg, {\n $$fn: isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue,\n });\n}\n\n/** @hidden */\nfunction getType(cfg: ParamDeclaration, urlType: ParamType, location: DefType, id: string, paramTypes: ParamTypes) {\n if (cfg.type && urlType && urlType.name !== 'string') throw new Error(`Param '${id}' has two type configurations.`);\n if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type as string)) return paramTypes.type(cfg.type as string);\n if (urlType) return urlType;\n if (!cfg.type) {\n const type = location === DefType.CONFIG ? 'any' :\n location === DefType.PATH ? 'path' :\n location === DefType.SEARCH ? 'query' : 'string';\n return paramTypes.type(type);\n }\n return cfg.type instanceof ParamType ? cfg.type : paramTypes.type(cfg.type as string);\n}\n\n/**\n * @internalapi\n * returns false, true, or the squash value to indicate the \"default parameter url squash policy\".\n */\nfunction getSquashPolicy(config: ParamDeclaration, isOptional: boolean, defaultPolicy: (boolean|string)) {\n const squash = config.squash;\n if (!isOptional || squash === false) return false;\n if (!isDefined(squash) || squash == null) return defaultPolicy;\n if (squash === true || isString(squash)) return squash;\n throw new Error(`Invalid squash policy: '${squash}'. Valid policies: false, true, or arbitrary string`);\n}\n\n/** @internalapi */\nfunction getReplace(config: ParamDeclaration, arrayMode: boolean, isOptional: boolean, squash: (string|boolean)) {\n const defaultPolicy = [\n { from: '', to: (isOptional || arrayMode ? undefined : '') },\n { from: null, to: (isOptional || arrayMode ? undefined : '') },\n ];\n\n const replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash)) replace.push({ from: squash, to: undefined });\n\n const configuredKeys = map(replace, prop('from'));\n return filter(defaultPolicy, item => configuredKeys.indexOf(item.from) === -1).concat(replace);\n}\n\n\n/** @internalapi */\nexport class Param {\n id: string;\n type: ParamType;\n location: DefType;\n isOptional: boolean;\n dynamic: boolean;\n raw: boolean;\n squash: (boolean|string);\n replace: [{ to: any, from: any }];\n inherit: boolean;\n array: boolean;\n config: any;\n /** Cache the default value if it is a static value */\n _defaultValueCache: {\n defaultValue: any,\n };\n\n static values(params: Param[], values: RawParams = {}): RawParams {\n const paramValues = {} as RawParams;\n for (const param of params) {\n paramValues[param.id] = param.value(values[param.id]);\n }\n return paramValues;\n }\n\n /**\n * Finds [[Param]] objects which have different param values\n *\n * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n *\n * @param params: The list of Param objects to filter\n * @param values1: The first set of parameter values\n * @param values2: the second set of parameter values\n *\n * @returns any Param objects whose values were different between values1 and values2\n */\n static changed(params: Param[], values1: RawParams = {}, values2: RawParams = {}): Param[] {\n return params.filter(param => !param.type.equals(values1[param.id], values2[param.id]));\n }\n\n /**\n * Checks if two param value objects are equal (for a set of [[Param]] objects)\n *\n * @param params The list of [[Param]] objects to check\n * @param values1 The first set of param values\n * @param values2 The second set of param values\n *\n * @returns true if the param values in values1 and values2 are equal\n */\n static equals(params: Param[], values1 = {}, values2 = {}): boolean {\n return Param.changed(params, values1, values2).length === 0;\n }\n\n /** Returns true if a the parameter values are valid, according to the Param definitions */\n static validates(params: Param[], values: RawParams = {}): boolean {\n return params.map(param => param.validates(values[param.id])).reduce(allTrueR, true);\n }\n\n constructor(id: string, type: ParamType, config: ParamDeclaration, location: DefType, urlMatcherFactory: UrlMatcherFactory) {\n config = unwrapShorthand(config);\n type = getType(config, type, location, id, urlMatcherFactory.paramTypes);\n const arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === DefType.SEARCH) : type;\n const isOptional = config.value !== undefined || location === DefType.SEARCH;\n const dynamic = isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n const raw = isDefined(config.raw) ? !!config.raw : !!type.raw;\n const squash = getSquashPolicy(config, isOptional, urlMatcherFactory.defaultSquashPolicy());\n const replace = getReplace(config, arrayMode, isOptional, squash);\n const inherit = isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n const arrayDefaults = { array: (location === DefType.SEARCH ? 'auto' : false) };\n const arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n\n extend(this, { id, type, location, isOptional, dynamic, raw, squash, replace, inherit, array: arrayMode, config });\n }\n\n isDefaultValue(value: any): boolean {\n return this.isOptional && this.type.equals(this.value(), value);\n }\n\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n value(value?: any): any {\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n const getDefaultValue = () => {\n if (this._defaultValueCache) return this._defaultValueCache.defaultValue;\n\n if (!services.$injector) throw new Error('Injectable functions cannot be called at configuration time');\n\n const defaultValue = services.$injector.invoke(this.config.$$fn);\n\n if (defaultValue !== null && defaultValue !== undefined && !this.type.is(defaultValue))\n throw new Error(`Default value (${defaultValue}) for parameter '${this.id}' is not an instance of ParamType (${this.type.name})`);\n\n if (this.config.$$fn['__cacheable']) {\n this._defaultValueCache = { defaultValue };\n }\n\n return defaultValue;\n };\n\n const replaceSpecialValues = (val: any) => {\n for (const tuple of this.replace) {\n if (tuple.from === val) return tuple.to;\n }\n return val;\n };\n\n value = replaceSpecialValues(value);\n\n return isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n }\n\n isSearch(): boolean {\n return this.location === DefType.SEARCH;\n }\n\n validates(value: any): boolean {\n // There was no parameter value, but the param is optional\n if ((isUndefined(value) || value === null) && this.isOptional) return true;\n\n // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n const normalized = this.type.$normalize(value);\n if (!this.type.is(normalized)) return false;\n\n // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n const encoded = this.type.encode(normalized);\n return !(isString(encoded) && !this.type.pattern.exec( encoded));\n }\n\n toString() {\n return `{Param:${this.id} ${this.type} squash: '${this.squash}' optional: ${this.isOptional}}`;\n }\n}\n", - "/**\n * Functions that manipulate strings\n *\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_strings\n */ /** */\n\nimport { isString, isArray, isDefined, isNull, isPromise, isInjectable, isObject } from './predicates';\nimport { Rejection } from '../transition/rejectFactory';\nimport { IInjectable, identity, Obj, tail, pushR } from './common';\nimport { pattern, is, not, val, invoke } from './hof';\nimport { Transition } from '../transition/transition';\nimport { Resolvable } from '../resolve/resolvable';\n\n/**\n * Returns a string shortened to a maximum length\n *\n * If the string is already less than the `max` length, return the string.\n * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n *\n * @param max the maximum length of the string to return\n * @param str the input string\n */\nexport function maxLength(max: number, str: string) {\n if (str.length <= max) return str;\n return str.substr(0, max - 3) + '...';\n}\n\n/**\n * Returns a string, with spaces added to the end, up to a desired str length\n *\n * If the string is already longer than the desired length, return the string.\n * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n *\n * @param length the desired length of the string to return\n * @param str the input string\n */\nexport function padString(length: number, str: string) {\n while (str.length < length) str += ' ';\n return str;\n}\n\nexport function kebobString(camelCase: string) {\n return camelCase\n .replace(/^([A-Z])/, $1 => $1.toLowerCase()) // replace first char\n .replace(/([A-Z])/g, $1 => '-' + $1.toLowerCase()); // replace rest\n}\n\nfunction _toJson(obj: Obj) {\n return JSON.stringify(obj);\n}\n\nfunction _fromJson(json: string) {\n return isString(json) ? JSON.parse(json) : json;\n}\n\n\nfunction promiseToString(p: Promise) {\n return `Promise(${JSON.stringify(p)})`;\n}\n\nexport function functionToString(fn: Function) {\n const fnStr = fnToString(fn);\n const namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n const toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n\n const fnName = fn['name'] || '';\n if (fnName && toStr.match(/function \\(/)) {\n return 'function ' + fnName + toStr.substr(9);\n }\n return toStr;\n}\n\nexport function fnToString(fn: IInjectable) {\n const _fn = isArray(fn) ? fn.slice(-1)[0] : fn;\n return _fn && _fn.toString() || 'undefined';\n}\n\nlet stringifyPatternFn: (val: any) => string = null;\nconst stringifyPattern = function(value: any) {\n const isRejection = Rejection.isRejectionPromise;\n\n stringifyPatternFn = stringifyPatternFn || pattern([\n [not(isDefined), val('undefined')],\n [isNull, val('null')],\n [isPromise, val('[Promise]')],\n [isRejection, (x: any) => x._transitionRejection.toString()],\n [is(Rejection), invoke('toString')],\n [is(Transition), invoke('toString')],\n [is(Resolvable), invoke('toString')],\n [isInjectable, functionToString],\n [val(true), identity],\n ]);\n\n return stringifyPatternFn(value);\n};\n\nexport function stringify(o: any) {\n const seen: any[] = [];\n\n function format(value: any) {\n if (isObject(value)) {\n if (seen.indexOf(value) !== -1) return '[circular ref]';\n seen.push(value);\n }\n return stringifyPattern(value);\n }\n\n return JSON.stringify(o, (key, value) => format(value)).replace(/\\\\\"/g, '\"');\n}\n\n/** Returns a function that splits a string on a character or substring */\nexport const beforeAfterSubstr = (char: string) => (str: string): string[] => {\n if (!str) return ['', ''];\n const idx = str.indexOf(char);\n if (idx === -1) return [str, ''];\n return [str.substr(0, idx), str.substr(idx + 1)];\n};\n\nexport const hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\nexport const stripLastPathElement = (str: string) => str.replace(/\\/[^/]*$/, '');\nexport const splitHash = beforeAfterSubstr('#');\nexport const splitQuery = beforeAfterSubstr('?');\nexport const splitEqual = beforeAfterSubstr('=');\nexport const trimHashVal = (str: string) => str ? str.replace(/^#/, '') : '';\n\n/**\n * Splits on a delimiter, but returns the delimiters in the array\n *\n * #### Example:\n * ```js\n * var splitOnSlashes = splitOnDelim('/');\n * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n * ```\n */\nexport function splitOnDelim(delim: string) {\n const re = new RegExp('(' + delim + ')', 'g');\n return (str: string) =>\n str.split(re).filter(identity);\n}\n\n\n/**\n * Reduce fn that joins neighboring strings\n *\n * Given an array of strings, returns a new array\n * where all neighboring strings have been joined.\n *\n * #### Example:\n * ```js\n * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n * ```\n */\nexport function joinNeighborsR(acc: any[], x: any) {\n if (isString(tail(acc)) && isString(x))\n return acc.slice(0, -1).concat(tail(acc) + x);\n return pushR(acc, x);\n}\n\n", - "/** @module state */ /** for typedoc */\nimport { Obj, omit, noop, extend, inherit, values, applyPairs, tail, mapObj, identity } from '../common/common';\nimport { isDefined, isFunction, isString, isArray } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { prop, pattern, is, pipe, val } from '../common/hof';\nimport { StateDeclaration } from './interface';\n\nimport { StateObject } from './stateObject';\nimport { StateMatcher } from './stateMatcher';\nimport { Param } from '../params/param';\nimport { UrlMatcherFactory } from '../url/urlMatcherFactory';\nimport { UrlMatcher } from '../url/urlMatcher';\nimport { Resolvable } from '../resolve/resolvable';\nimport { services } from '../common/coreservices';\nimport { ResolvePolicy } from '../resolve/interface';\nimport { ParamFactory } from '../url/interface';\n\nconst parseUrl = (url: string): any => {\n if (!isString(url)) return false;\n const root = url.charAt(0) === '^';\n return { val: root ? url.substring(1) : url, root };\n};\n\nexport type BuilderFunction = (state: StateObject, parent?: BuilderFunction) => any;\n\ninterface Builders {\n [key: string]: BuilderFunction[];\n\n name: BuilderFunction[];\n parent: BuilderFunction[];\n data: BuilderFunction[];\n url: BuilderFunction[];\n navigable: BuilderFunction[];\n params: BuilderFunction[];\n views: BuilderFunction[];\n path: BuilderFunction[];\n includes: BuilderFunction[];\n resolvables: BuilderFunction[];\n}\n\n\nfunction nameBuilder(state: StateObject) {\n return state.name;\n}\n\nfunction selfBuilder(state: StateObject) {\n state.self.$$state = () => state;\n return state.self;\n}\n\nfunction dataBuilder(state: StateObject) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n}\n\nconst getUrlBuilder = ($urlMatcherFactoryProvider: UrlMatcherFactory, root: () => StateObject) =>\nfunction urlBuilder(state: StateObject) {\n const stateDec: StateDeclaration = state;\n\n // For future states, i.e., states whose name ends with `.**`,\n // match anything that starts with the url prefix\n if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n stateDec.url += '{remainder:any}'; // match any path (.*)\n }\n\n const parsed = parseUrl(stateDec.url), parent = state.parent;\n const url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, {\n params: state.params || {},\n paramMap: function (paramConfig: any, isSearch: boolean) {\n if (stateDec.reloadOnSearch === false && isSearch) paramConfig = extend(paramConfig || {}, { dynamic: true });\n return paramConfig;\n },\n });\n\n if (!url) return null;\n if (!$urlMatcherFactoryProvider.isMatcher(url)) throw new Error(`Invalid url '${url}' in state '${state}'`);\n return (parsed && parsed.root) ? url : ((parent && parent.navigable) || root()).url.append( url);\n};\n\nconst getNavigableBuilder = (isRoot: (state: StateObject) => boolean) =>\nfunction navigableBuilder(state: StateObject) {\n return !isRoot(state) && state.url ? state : (state.parent ? state.parent.navigable : null);\n};\n\nconst getParamsBuilder = (paramFactory: ParamFactory) =>\nfunction paramsBuilder(state: StateObject): { [key: string]: Param } {\n const makeConfigParam = (config: any, id: string) => paramFactory.fromConfig(id, null, config);\n const urlParams: Param[] = (state.url && state.url.parameters({ inherit: false })) || [];\n const nonUrlParams: Param[] = values(mapObj(omit(state.params || {}, urlParams.map(prop('id'))), makeConfigParam));\n return urlParams.concat(nonUrlParams).map(p => [p.id, p]).reduce(applyPairs, {});\n};\n\nfunction pathBuilder(state: StateObject) {\n return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n}\n\nfunction includesBuilder(state: StateObject) {\n const includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n}\n\n/**\n * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * validates the `resolve` property and converts it to a [[Resolvable]] array.\n *\n * resolve: input value can be:\n *\n * {\n * // analyzed but not injected\n * myFooResolve: function() { return \"myFooData\"; },\n *\n * // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n * myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n *\n * // Array split; \"DependencyName\" dep as string\n * myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n *\n * // Array split; DependencyType dep as token (compared using ===)\n * myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n *\n * // val.$inject used as deps\n * // where:\n * // corgeResolve.$inject = [\"DependencyName\"];\n * // function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n * // then \"DependencyName\" dep as string\n * myCorgeResolve: corgeResolve,\n *\n * // inject service by name\n * // When a string is found, desugar creating a resolve that injects the named service\n * myGraultResolve: \"SomeService\"\n * }\n *\n * or:\n *\n * [\n * new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n * new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n * { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n * ]\n */\nexport function resolvablesBuilder(state: StateObject): Resolvable[] {\n interface Tuple { token: any, val: any, deps: any[], policy: ResolvePolicy }\n\n /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n const objects2Tuples = (resolveObj: Obj, resolvePolicies: { [key: string]: ResolvePolicy }) =>\n Object.keys(resolveObj || {}).map(token => ({ token, val: resolveObj[token], deps: undefined, policy: resolvePolicies[token] }));\n\n /** fetch DI annotations from a function or ng1-style array */\n const annotate = (fn: Function) => {\n const $injector = services.$injector;\n // ng1 doesn't have an $injector until runtime.\n // If the $injector doesn't exist, use \"deferred\" literal as a\n // marker indicating they should be annotated when runtime starts\n return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n };\n\n /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n const isResolveLiteral = (obj: any) => !!(obj.token && obj.resolveFn);\n\n /** true if the object looks like a provide literal, or a ng2 Provider */\n const isLikeNg2Provider = (obj: any) => !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass));\n\n /** true if the object looks like a tuple from obj2Tuples */\n const isTupleFromObj = (obj: any) => !!(obj && obj.val && (isString(obj.val) || isArray(obj.val) || isFunction(obj.val)));\n\n /** extracts the token from a Provider or provide literal */\n const getToken = (p: any) => p.provide || p.token;\n\n /** Given a literal resolve or provider object, returns a Resolvable */\n const literal2Resolvable = pattern([\n [prop('resolveFn'), p => new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy)],\n [prop('useFactory'), p => new Resolvable(getToken(p), p.useFactory, (p.deps || p.dependencies), p.policy)],\n [prop('useClass'), p => new Resolvable(getToken(p), () => new (p.useClass)(), [], p.policy)],\n [prop('useValue'), p => new Resolvable(getToken(p), () => p.useValue, [], p.policy, p.useValue)],\n [prop('useExisting'), p => new Resolvable(getToken(p), identity, [p.useExisting], p.policy)],\n ]);\n\n const tuple2Resolvable = pattern([\n [pipe(prop('val'), isString), (tuple: Tuple) => new Resolvable(tuple.token, identity, [ tuple.val ], tuple.policy)],\n [pipe(prop('val'), isArray), (tuple: Tuple) => new Resolvable(tuple.token, tail( tuple.val), tuple.val.slice(0, -1), tuple.policy)],\n [pipe(prop('val'), isFunction), (tuple: Tuple) => new Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy)],\n ]);\n\n const item2Resolvable = <(obj: any) => Resolvable> pattern([\n [is(Resolvable), (r: Resolvable) => r],\n [isResolveLiteral, literal2Resolvable],\n [isLikeNg2Provider, literal2Resolvable],\n [isTupleFromObj, tuple2Resolvable],\n [val(true), (obj: any) => { throw new Error('Invalid resolve value: ' + stringify(obj)); }],\n ]);\n\n // If resolveBlock is already an array, use it as-is.\n // Otherwise, assume it's an object and convert to an Array of tuples\n const decl = state.resolve;\n const items: any[] = isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n return items.map(item2Resolvable);\n}\n\n/**\n * @internalapi A internal global service\n *\n * StateBuilder is a factory for the internal [[StateObject]] objects.\n *\n * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n * conforms to the [[StateDeclaration]] interface. This factory takes that object and builds the corresponding\n * [[StateObject]] object, which has an API and is used internally.\n *\n * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n * using the [[builder]] method.\n */\nexport class StateBuilder {\n /** An object that contains all the BuilderFunctions registered, key'd by the name of the State property they build */\n private builders: Builders;\n\n constructor(private matcher: StateMatcher, urlMatcherFactory: UrlMatcherFactory) {\n const self = this;\n\n const root = () => matcher.find('');\n const isRoot = (state: StateObject) => state.name === '';\n\n function parentBuilder(state: StateObject) {\n if (isRoot(state)) return null;\n return matcher.find(self.parentName(state)) || root();\n }\n\n this.builders = {\n name: [ nameBuilder ],\n self: [ selfBuilder ],\n parent: [ parentBuilder ],\n data: [ dataBuilder ],\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: [ getUrlBuilder(urlMatcherFactory, root) ],\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: [ getNavigableBuilder(isRoot) ],\n params: [ getParamsBuilder(urlMatcherFactory.paramFactory) ],\n // Each framework-specific ui-router implementation should define its own `views` builder\n // e.g., src/ng1/statebuilders/views.ts\n views: [],\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: [ pathBuilder ],\n // Speed up $state.includes() as it's used a lot\n includes: [ includesBuilder ],\n resolvables: [ resolvablesBuilder ],\n };\n }\n\n /**\n * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n * More than one BuilderFunction can be registered for a given property.\n *\n * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n *\n * @param name The name of the State property being registered for.\n * @param fn The BuilderFunction which will be used to build the State property\n * @returns a function which deregisters the BuilderFunction\n */\n builder(name: string, fn: BuilderFunction): (BuilderFunction|BuilderFunction[]|Function) {\n const builders = this.builders;\n const array = builders[name] || [];\n // Backwards compat: if only one builder exists, return it, else return whole arary.\n if (isString(name) && !isDefined(fn)) return array.length > 1 ? array : array[0];\n if (!isString(name) || !isFunction(fn)) return;\n\n builders[name] = array;\n builders[name].push(fn);\n return () => builders[name].splice(builders[name].indexOf(fn, 1)) && null;\n }\n\n /**\n * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n * properties and API built.\n *\n * @param state an uninitialized State object\n * @returns the built State object\n */\n build(state: StateObject): StateObject {\n const { matcher, builders } = this;\n const parent = this.parentName(state);\n\n if (parent && !matcher.find(parent, undefined, false)) {\n return null;\n }\n\n for (const key in builders) {\n if (!builders.hasOwnProperty(key)) continue;\n const chain = builders[key].reduce((parentFn: BuilderFunction, step: BuilderFunction) => (_state) => step(_state, parentFn), noop);\n state[key] = chain(state);\n }\n return state;\n }\n\n parentName(state: StateObject) {\n // name = 'foo.bar.baz.**'\n const name = state.name || '';\n // segments = ['foo', 'bar', 'baz', '.**']\n const segments = name.split('.');\n // segments = ['foo', 'bar', 'baz']\n const lastSegment = segments.pop();\n // segments = ['foo', 'bar'] (ignore .** segment for future states)\n if (lastSegment === '**') segments.pop();\n\n if (segments.length) {\n if (state.parent) {\n throw new Error(`States that specify the 'parent:' property should not have a '.' in their name (${name})`);\n }\n\n // 'foo.bar'\n return segments.join('.');\n }\n\n if (!state.parent) return '';\n return isString(state.parent) ? state.parent : state.parent.name;\n }\n\n name(state: StateObject) {\n const name = state.name;\n if (name.indexOf('.') !== -1 || !state.parent) return name;\n\n const parentName = isString(state.parent) ? state.parent : state.parent.name;\n return parentName ? parentName + '.' + name : name;\n }\n}\n", - "/**\n * @coreapi\n * @module url\n */\n/** for typedoc */\nimport {\n map, defaults, inherit, identity, unnest, tail, find, Obj, pairs, allTrueR, unnestR, arrayTuples,\n} from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { isArray, isString, isDefined } from '../common/predicates';\nimport { Param, DefType } from '../params/param';\nimport { ParamTypes } from '../params/paramTypes';\nimport { RawParams } from '../params/interface';\nimport { ParamFactory } from './interface';\nimport { joinNeighborsR, splitOnDelim } from '../common/strings';\n\n/** @hidden */\nfunction quoteRegExp(str: any, param?: any) {\n let surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n if (!param) return result;\n\n switch (param.squash) {\n case false:\n surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')]; break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:\\/(', ')|\\/)?'];\n break;\n default:\n surroundPattern = [`(${param.squash}|`, ')?']; break;\n }\n return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n}\n\n/** @hidden */\nconst memoizeTo = (obj: Obj, _prop: string, fn: Function) =>\n obj[_prop] = obj[_prop] || fn();\n\n/** @hidden */\nconst splitOnSlash = splitOnDelim('/');\n\n/** @hidden */\ninterface UrlMatcherCache {\n segments?: any[];\n weights?: number[];\n path?: UrlMatcher[];\n parent?: UrlMatcher;\n pattern?: RegExp;\n}\n\n/**\n * Matches URLs against patterns.\n *\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL.\n *\n * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n * parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by [[UrlMatcher.exec]].\n *\n * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n * or colon placeholders (`/somePath/:param`).\n *\n * - *A parameter RegExp* may be defined for a param after a colon\n * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n * The regexp must match for the url to be matched.\n * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n *\n * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n * See [[UrlMatcherFactory.type]] for more information.\n *\n * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n * A catch-all * parameter value will contain the remainder of the URL.\n *\n * ---\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters).\n * A path parameter matches any number of characters other than '/'. For catch-all\n * placeholders the path parameter matches any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n */\nexport class UrlMatcher {\n /** @hidden */\n static nameValidator: RegExp = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n\n /** @hidden */\n private _cache: UrlMatcherCache = { path: [this] };\n /** @hidden */\n private _children: UrlMatcher[] = [];\n /** @hidden */\n private _params: Param[] = [];\n /** @hidden */\n private _segments: string[] = [];\n /** @hidden */\n private _compiled: string[] = [];\n\n /** The pattern that was passed into the constructor */\n public pattern: string;\n\n /** @hidden */\n static encodeDashes(str: string) { // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, c => `%5C%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n }\n\n /** @hidden Given a matcher, return an array with the matcher's path segments and path params, in order */\n static pathSegmentsAndParams(matcher: UrlMatcher) {\n const staticSegments = matcher._segments;\n const pathParams = matcher._params.filter(p => p.location === DefType.PATH);\n return arrayTuples(staticSegments, pathParams.concat(undefined))\n .reduce(unnestR, [])\n .filter(x => x !== '' && isDefined(x));\n }\n\n /** @hidden Given a matcher, return an array with the matcher's query params */\n static queryParams(matcher: UrlMatcher): Param[] {\n return matcher._params.filter(p => p.location === DefType.SEARCH);\n }\n\n /**\n * Compare two UrlMatchers\n *\n * This comparison function converts a UrlMatcher into static and dynamic path segments.\n * Each static path segment is a static string between a path separator (slash character).\n * Each dynamic segment is a path parameter.\n *\n * The comparison function sorts static segments before dynamic ones.\n */\n static compare(a: UrlMatcher, b: UrlMatcher): number {\n /**\n * Turn a UrlMatcher and all its parent matchers into an array\n * of slash literals '/', string literals, and Param objects\n *\n * This example matcher matches strings like \"/foo/:param/tail\":\n * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n *\n * Caches the result as `matcher._cache.segments`\n */\n const segments = (matcher: UrlMatcher) =>\n matcher._cache.segments = matcher._cache.segments ||\n matcher._cache.path.map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .reduce(joinNeighborsR, [])\n .map(x => isString(x) ? splitOnSlash(x) : x)\n .reduce(unnestR, []);\n\n /**\n * Gets the sort weight for each segment of a UrlMatcher\n *\n * Caches the result as `matcher._cache.weights`\n */\n const weights = (matcher: UrlMatcher) =>\n matcher._cache.weights = matcher._cache.weights ||\n segments(matcher).map(segment => {\n // Sort slashes first, then static strings, the Params\n if (segment === '/') return 1;\n if (isString(segment)) return 2;\n if (segment instanceof Param) return 3;\n });\n\n /**\n * Pads shorter array in-place (mutates)\n */\n const padArrays = (l: any[], r: any[], padVal: any) => {\n const len = Math.max(l.length, r.length);\n while (l.length < len) l.push(padVal);\n while (r.length < len) r.push(padVal);\n };\n\n const weightsA = weights(a), weightsB = weights(b);\n padArrays(weightsA, weightsB, 0);\n\n const _pairs = arrayTuples(weightsA, weightsB);\n let cmp, i;\n\n for (i = 0; i < _pairs.length; i++) {\n cmp = _pairs[i][0] - _pairs[i][1];\n if (cmp !== 0) return cmp;\n }\n\n return 0;\n }\n\n /**\n * @param pattern The pattern to compile into a matcher.\n * @param paramTypes The [[ParamTypes]] registry\n * @param config A configuration object\n * - `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.\n * - `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.\n */\n constructor(pattern: string, paramTypes: ParamTypes, paramFactory: ParamFactory, public config?: any) {\n this.pattern = pattern;\n this.config = defaults(this.config, {\n params: {},\n strict: true,\n caseInsensitive: false,\n paramMap: identity,\n });\n\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n const placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n const searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n const patterns: any[][] = [];\n let last = 0, matchArray: RegExpExecArray;\n\n const checkParamErrors = (id: string) => {\n if (!UrlMatcher.nameValidator.test(id)) throw new Error(`Invalid parameter name '${id}' in pattern '${pattern}'`);\n if (find(this._params, propEq('id', id))) throw new Error(`Duplicate parameter name '${id}' in pattern '${pattern}'`);\n };\n\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n const matchDetails = (m: RegExpExecArray, isSearch: boolean) => {\n // IE[78] returns '' for unmatched groups instead of null\n const id: string = m[2] || m[3];\n const regexp: string = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n\n const makeRegexpType = (str) => inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n pattern: new RegExp(str, this.config.caseInsensitive ? 'i' : undefined),\n });\n\n return {\n id,\n regexp,\n cfg: this.config.params[id],\n segment: pattern.substring(last, m.index),\n type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n };\n };\n\n let p: any, segment: string;\n\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = placeholder.exec(pattern))) {\n p = matchDetails(matchArray, false);\n if (p.segment.indexOf('?') >= 0) break; // we're into the search part\n\n checkParamErrors(p.id);\n this._params.push(paramFactory.fromPath(p.id, p.type, this.config.paramMap(p.cfg, false)));\n this._segments.push(p.segment);\n patterns.push([p.segment, tail(this._params)]);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n\n // Find any search parameter names and remove them from the last segment\n const i = segment.indexOf('?');\n\n if (i >= 0) {\n const search = segment.substring(i);\n segment = segment.substring(0, i);\n\n if (search.length > 0) {\n last = 0;\n\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = searchPlaceholder.exec(search))) {\n p = matchDetails(matchArray, true);\n checkParamErrors(p.id);\n this._params.push(paramFactory.fromSearch(p.id, p.type, this.config.paramMap(p.cfg, true)));\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n }\n\n this._segments.push(segment);\n this._compiled = patterns.map(_pattern => quoteRegExp.apply(null, _pattern)).concat(quoteRegExp(segment));\n }\n\n /**\n * Creates a new concatenated UrlMatcher\n *\n * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n *\n * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n */\n append(url: UrlMatcher): UrlMatcher {\n this._children.push(url);\n url._cache = {\n path: this._cache.path.concat(url),\n parent: this,\n pattern: null,\n };\n return url;\n }\n\n /** @hidden */\n isRoot(): boolean {\n return this._cache.path[0] === this;\n }\n\n /** Returns the input pattern string */\n toString(): string {\n return this.pattern;\n }\n\n /**\n * Tests the specified url/path against this matcher.\n *\n * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n * parameter values. Returns null if the path does not match.\n *\n * The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `search`. This means that search parameters are always treated\n * as optional.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n * x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * ```\n *\n * @param path The URL path to match, e.g. `$location.path()`.\n * @param search URL search parameters, e.g. `$location.search()`.\n * @param hash URL hash e.g. `$location.hash()`.\n * @param options\n *\n * @returns The captured parameter values.\n */\n exec(path: string, search: any = {}, hash?: string, options: any = {}): RawParams {\n const match = memoizeTo(this._cache, 'pattern', () => {\n return new RegExp([\n '^',\n unnest(this._cache.path.map(prop('_compiled'))).join(''),\n this.config.strict === false ? '\\/?' : '',\n '$',\n ].join(''), this.config.caseInsensitive ? 'i' : undefined);\n }).exec(path);\n\n if (!match) return null;\n\n // options = defaults(options, { isolate: false });\n\n const allParams: Param[] = this.parameters(),\n pathParams: Param[] = allParams.filter(param => !param.isSearch()),\n searchParams: Param[] = allParams.filter(param => param.isSearch()),\n nPathSegments = this._cache.path.map(urlm => urlm._segments.length - 1).reduce((a, x) => a + x),\n values: RawParams = {};\n\n if (nPathSegments !== match.length - 1)\n throw new Error(`Unbalanced capture group in route '${this.pattern}'`);\n\n function decodePathArray(paramVal: string) {\n const reverseString = (str: string) => str.split('').reverse().join('');\n const unquoteDashes = (str: string) => str.replace(/\\\\-/g, '-');\n\n const split = reverseString(paramVal).split(/-(?!\\\\)/);\n const allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n\n for (let i = 0; i < nPathSegments; i++) {\n const param: Param = pathParams[i];\n let value: (any|any[]) = match[i + 1];\n\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (let j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value) value = param.replace[j].to;\n }\n if (value && param.array === true) value = decodePathArray(value);\n if (isDefined(value)) value = param.type.decode(value);\n values[param.id] = param.value(value);\n }\n searchParams.forEach(param => {\n let value = search[param.id];\n for (let j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value) value = param.replace[j].to;\n }\n if (isDefined(value)) value = param.type.decode(value);\n values[param.id] = param.value(value);\n });\n\n if (hash) values['#'] = hash;\n\n return values;\n }\n\n /**\n * @hidden\n * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n *\n * @returns {Array.} An array of [[Param]] objects. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\n parameters(opts: any = {}): Param[] {\n if (opts.inherit === false) return this._params;\n return unnest(this._cache.path.map(matcher => matcher._params));\n }\n\n /**\n * @hidden\n * Returns a single parameter from this UrlMatcher by id\n *\n * @param id\n * @param opts\n * @returns {T|Param|any|boolean|UrlMatcher|null}\n */\n parameter(id: string, opts: any = {}): Param {\n const findParam = () => {\n for (const param of this._params) {\n if (param.id === id) return param;\n }\n };\n\n const parent = this._cache.parent;\n return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n }\n\n /**\n * Validates the input parameter values against this UrlMatcher\n *\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param params The object hash of parameters to validate.\n * @returns Returns `true` if `params` validates, otherwise `false`.\n */\n validates(params: RawParams): boolean {\n const validParamVal = (param: Param, val: any) =>\n !param || param.validates(val);\n\n params = params || {};\n\n // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n const paramSchema = this.parameters().filter(paramDef => params.hasOwnProperty(paramDef.id));\n return paramSchema.map(paramDef => validParamVal(paramDef, params[paramDef.id])).reduce(allTrueR, true);\n }\n\n /**\n * Given a set of parameter values, creates a URL from this UrlMatcher.\n *\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * ```\n *\n * @param values the values to substitute for the parameters in this pattern.\n * @returns the formatted URL (path and optionally search part).\n */\n format(values: RawParams = {}) {\n // Build the full path of UrlMatchers (including all parent UrlMatchers)\n const urlMatchers = this._cache.path;\n\n // Extract all the static segments and Params (processed as ParamDetails)\n // into an ordered array\n const pathSegmentsAndParams: Array = urlMatchers.map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .map(x => isString(x) ? x : getDetails(x));\n\n // Extract the query params into a separate array\n const queryParams: Array = urlMatchers.map(UrlMatcher.queryParams)\n .reduce(unnestR, [])\n .map(getDetails);\n\n const isInvalid = (param: ParamDetails) => param.isValid === false;\n if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n return null;\n }\n\n /**\n * Given a Param, applies the parameter value, then returns detailed information about it\n */\n function getDetails(param: Param): ParamDetails {\n // Normalize to typed value\n const value = param.value(values[param.id]);\n const isValid = param.validates(value);\n const isDefaultValue = param.isDefaultValue(value);\n // Check if we're in squash mode for the parameter\n const squash = isDefaultValue ? param.squash : false;\n // Allow the Parameter's Type to encode the value\n const encoded = param.type.encode(value);\n\n return { param, value, isValid, isDefaultValue, squash, encoded };\n }\n\n // Build up the path-portion from the list of static segments and parameters\n const pathString = pathSegmentsAndParams.reduce((acc: string, x: string|ParamDetails) => {\n // The element is a static segment (a raw string); just append it\n if (isString(x)) return acc + x;\n\n // Otherwise, it's a ParamDetails.\n const { squash, encoded, param } = x;\n\n // If squash is === true, try to remove a slash from the path\n if (squash === true) return (acc.match(/\\/$/)) ? acc.slice(0, -1) : acc;\n // If squash is a string, use the string for the param value\n if (isString(squash)) return acc + squash;\n if (squash !== false) return acc; // ?\n if (encoded == null) return acc;\n // If this parameter value is an array, encode the value using encodeDashes\n if (isArray(encoded)) return acc + map( encoded, UrlMatcher.encodeDashes).join('-');\n // If the parameter type is \"raw\", then do not encodeURIComponent\n if (param.raw) return acc + encoded;\n // Encode the value\n return acc + encodeURIComponent( encoded);\n }, '');\n\n // Build the query string by applying parameter values (array or regular)\n // then mapping to key=value, then flattening and joining using \"&\"\n const queryString = queryParams.map((paramDetails: ParamDetails) => {\n let { param, squash, encoded, isDefaultValue } = paramDetails;\n if (encoded == null || (isDefaultValue && squash !== false)) return;\n if (!isArray(encoded)) encoded = [ encoded];\n if (encoded.length === 0) return;\n if (!param.raw) encoded = map( encoded, encodeURIComponent);\n\n return ( encoded).map(val => `${param.id}=${val}`);\n }).filter(identity).reduce(unnestR, []).join('&');\n\n // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n return pathString + (queryString ? `?${queryString}` : '') + (values['#'] ? '#' + values['#'] : '');\n }\n}\n\n/** @hidden */\ninterface ParamDetails {\n param: Param;\n value: any;\n isValid: boolean;\n isDefaultValue: boolean;\n squash: (boolean|string);\n encoded: (string|string[]);\n}\n", - "/**\n * @internalapi\n * @module url\n */\n/** for typedoc */\nimport { createProxyFunctions, extend, removeFrom } from '../common/common';\nimport { isDefined, isFunction, isString } from '../common/predicates';\nimport { UrlMatcher } from './urlMatcher';\nimport { RawParams } from '../params/interface';\nimport { Disposable } from '../interface';\nimport { UIRouter } from '../router';\nimport { is, pattern, val } from '../common/hof';\nimport { UrlRuleFactory } from './urlRule';\nimport { TargetState } from '../state/targetState';\nimport { MatcherUrlRule, MatchResult, UrlParts, UrlRule, UrlRuleHandlerFn, UrlRuleMatchFn, UrlRulesApi, UrlSyncApi } from './interface';\nimport { TargetStateDef } from '../state/interface';\nimport { stripLastPathElement } from '../common';\n\n/** @hidden */\nfunction appendBasePath(url: string, isHtml5: boolean, absolute: boolean, baseHref: string): string {\n if (baseHref === '/') return url;\n if (isHtml5) return stripLastPathElement(baseHref) + url;\n if (absolute) return baseHref.slice(1) + url;\n return url;\n}\n\n/** @hidden */\nconst prioritySort = (a: UrlRule, b: UrlRule) =>\n (b.priority || 0) - (a.priority || 0);\n\n/** @hidden */\nconst typeSort = (a: UrlRule, b: UrlRule) => {\n const weights = { 'STATE': 4, 'URLMATCHER': 4, 'REGEXP': 3, 'RAW': 2, 'OTHER': 1 };\n return (weights[a.type] || 0) - (weights[b.type] || 0);\n};\n\n/** @hidden */\nconst urlMatcherSort = (a: MatcherUrlRule, b: MatcherUrlRule) =>\n !a.urlMatcher || !b.urlMatcher ? 0 : UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n\n/** @hidden */\nconst idSort = (a: UrlRule, b: UrlRule) => {\n // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n const useMatchPriority = { STATE: true, URLMATCHER: true };\n const equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n};\n\n/**\n * Default rule priority sorting function.\n *\n * Sorts rules by:\n *\n * - Explicit priority (set rule priority using [[UrlRulesApi.when]])\n * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n * - Rule registration order (for rule types other than STATE and URLMATCHER)\n * - Equally sorted State and UrlMatcher rules will each match the URL.\n * Then, the *best* match is chosen based on how many parameter values were matched.\n *\n * @coreapi\n */\nlet defaultRuleSortFn: (a: UrlRule, b: UrlRule) => number;\ndefaultRuleSortFn = (a, b) => {\n let cmp = prioritySort(a, b);\n if (cmp !== 0) return cmp;\n\n cmp = typeSort(a, b);\n if (cmp !== 0) return cmp;\n\n cmp = urlMatcherSort(a as MatcherUrlRule, b as MatcherUrlRule);\n if (cmp !== 0) return cmp;\n\n return idSort(a, b);\n};\n\n/**\n * Updates URL and responds to URL changes\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class updates the URL when the state changes.\n * It also responds to changes in the URL.\n */\nexport class UrlRouter implements UrlRulesApi, UrlSyncApi, Disposable {\n /** used to create [[UrlRule]] objects for common cases */\n public urlRuleFactory: UrlRuleFactory;\n\n /** @hidden */ private _router: UIRouter;\n /** @hidden */ private location: string;\n /** @hidden */ private _sortFn = defaultRuleSortFn;\n /** @hidden */ private _stopFn: Function;\n /** @hidden */ _rules: UrlRule[] = [];\n /** @hidden */ private _otherwiseFn: UrlRule;\n /** @hidden */ interceptDeferred = false;\n /** @hidden */ private _id = 0;\n /** @hidden */ private _sorted = false;\n\n /** @hidden */\n constructor(router: UIRouter) {\n this._router = router;\n this.urlRuleFactory = new UrlRuleFactory(router);\n createProxyFunctions(val(UrlRouter.prototype), this, val(this));\n }\n\n /** @internalapi */\n dispose() {\n this.listen(false);\n this._rules = [];\n delete this._otherwiseFn;\n }\n\n /** @inheritdoc */\n sort(compareFn?: (a: UrlRule, b: UrlRule) => number) {\n this._rules = this.stableSort(this._rules, this._sortFn = compareFn || this._sortFn);\n this._sorted = true;\n }\n\n private ensureSorted() {\n this._sorted || this.sort();\n }\n\n private stableSort(arr, compareFn) {\n const arrOfWrapper = arr.map((elem, idx) => ({ elem, idx }));\n\n arrOfWrapper.sort((wrapperA, wrapperB) => {\n const cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n return cmpDiff === 0\n ? wrapperA.idx - wrapperB.idx\n : cmpDiff;\n });\n\n return arrOfWrapper.map(wrapper => wrapper.elem);\n }\n\n /**\n * Given a URL, check all rules and return the best [[MatchResult]]\n * @param url\n * @returns {MatchResult}\n */\n match(url: UrlParts): MatchResult {\n this.ensureSorted();\n\n url = extend({ path: '', search: {}, hash: '' }, url);\n const rules = this.rules();\n if (this._otherwiseFn) rules.push(this._otherwiseFn);\n\n // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n\n const checkRule = (rule: UrlRule): MatchResult => {\n const match = rule.match(url, this._router);\n return match && { match, rule, weight: rule.matchPriority(match) };\n };\n\n // The rules are pre-sorted.\n // - Find the first matching rule.\n // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n // - Choose the rule with the highest match weight.\n let best: MatchResult;\n for (let i = 0; i < rules.length; i++) {\n // Stop when there is a 'best' rule and the next rule sorts differently than it.\n if (best && this._sortFn(rules[i], best.rule) !== 0) break;\n\n const current = checkRule(rules[i]);\n // Pick the best MatchResult\n best = (!best || current && current.weight > best.weight) ? current : best;\n }\n\n return best;\n }\n\n /** @inheritdoc */\n sync(evt?) {\n if (evt && evt.defaultPrevented) return;\n\n const router = this._router,\n $url = router.urlService,\n $state = router.stateService;\n\n const url: UrlParts = {\n path: $url.path(), search: $url.search(), hash: $url.hash(),\n };\n\n const best = this.match(url);\n\n const applyResult = pattern([\n [isString, (newurl: string) => $url.url(newurl, true)],\n [TargetState.isDef, (def: TargetStateDef) => $state.go(def.state, def.params, def.options)],\n [is(TargetState), (target: TargetState) => $state.go(target.state(), target.params(), target.options())],\n ]);\n\n applyResult(best && best.rule.handler(best.match, url, router));\n }\n\n /** @inheritdoc */\n listen(enabled?: boolean): Function {\n if (enabled === false) {\n this._stopFn && this._stopFn();\n delete this._stopFn;\n } else {\n return this._stopFn = this._stopFn || this._router.urlService.onChange(evt => this.sync(evt));\n }\n }\n\n /**\n * Internal API.\n * @internalapi\n */\n update(read?: boolean) {\n const $url = this._router.locationService;\n if (read) {\n this.location = $url.url();\n return;\n }\n if ($url.url() === this.location) return;\n\n $url.url(this.location, true);\n }\n\n /**\n * Internal API.\n *\n * Pushes a new location to the browser history.\n *\n * @internalapi\n * @param urlMatcher\n * @param params\n * @param options\n */\n push(urlMatcher: UrlMatcher, params?: RawParams, options?: { replace?: (string|boolean) }) {\n const replace = options && !!options.replace;\n this._router.urlService.url(urlMatcher.format(params || {}), replace);\n }\n\n /**\n * Builds and returns a URL with interpolated parameters\n *\n * #### Example:\n * ```js\n * matcher = $umf.compile(\"/about/:person\");\n * params = { person: \"bob\" };\n * $bob = $urlRouter.href(matcher, params);\n * // $bob == \"/about/bob\";\n * ```\n *\n * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n * @param params An object of parameter values to fill the matcher's required parameters.\n * @param options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n href(urlMatcher: UrlMatcher, params?: any, options?: { absolute: boolean }): string {\n let url = urlMatcher.format(params);\n if (url == null) return null;\n\n options = options || { absolute: false };\n\n const cfg = this._router.urlService.config;\n const isHtml5 = cfg.html5Mode();\n if (!isHtml5 && url !== null) {\n url = '#' + cfg.hashPrefix() + url;\n }\n url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n\n if (!options.absolute || !url) {\n return url;\n }\n\n const slash = (!isHtml5 && url ? '/' : '');\n const cfgPort = cfg.port();\n const port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n\n return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n }\n\n\n /**\n * Manually adds a URL Rule.\n *\n * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n * Rules can be created using [[UrlRouter.urlRuleFactory]], or create manually as simple objects.\n *\n * A rule should have a `match` function which returns truthy if the rule matched.\n * It should also have a `handler` function which is invoked if the rule is the best match.\n *\n * @return a function that deregisters the rule\n */\n rule(rule: UrlRule): Function {\n if (!UrlRuleFactory.isUrlRule(rule)) throw new Error('invalid rule');\n rule.$id = this._id++;\n rule.priority = rule.priority || 0;\n\n this._rules.push(rule);\n this._sorted = false;\n\n return () => this.removeRule(rule);\n }\n\n /** @inheritdoc */\n removeRule(rule): void {\n removeFrom(this._rules, rule);\n }\n\n /** @inheritdoc */\n rules(): UrlRule[] {\n this.ensureSorted();\n return this._rules.slice();\n }\n\n /** @inheritdoc */\n otherwise(handler: string|UrlRuleHandlerFn|TargetState|TargetStateDef) {\n const handlerFn: UrlRuleHandlerFn = getHandlerFn(handler);\n\n this._otherwiseFn = this.urlRuleFactory.create(val(true), handlerFn);\n this._sorted = false;\n }\n\n /** @inheritdoc */\n initial(handler: string | UrlRuleHandlerFn | TargetState | TargetStateDef) {\n const handlerFn: UrlRuleHandlerFn = getHandlerFn(handler);\n\n const matchFn: UrlRuleMatchFn = (urlParts, router) =>\n router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n\n this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n }\n\n /** @inheritdoc */\n when(matcher: (RegExp|UrlMatcher|string), handler: string|UrlRuleHandlerFn, options?: { priority: number }): UrlRule {\n const rule = this.urlRuleFactory.create(matcher, handler);\n if (isDefined(options && options.priority)) rule.priority = options.priority;\n this.rule(rule);\n return rule;\n }\n\n /** @inheritdoc */\n deferIntercept(defer?: boolean) {\n if (defer === undefined) defer = true;\n this.interceptDeferred = defer;\n }\n}\n\nfunction getHandlerFn(handler: string|UrlRuleHandlerFn|TargetState|TargetStateDef): UrlRuleHandlerFn {\n if (!isFunction(handler) && !isString(handler) && !is(TargetState)(handler) && !TargetState.isDef(handler)) {\n throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n }\n return isFunction(handler) ? handler as UrlRuleHandlerFn : val(handler);\n}\n", - "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { TransitionService } from '../transition/transitionService';\n\nfunction addCoreResolvables(trans: Transition) {\n trans.addResolvable({ token: UIRouter, deps: [], resolveFn: () => trans.router, data: trans.router }, '');\n trans.addResolvable({ token: Transition, deps: [], resolveFn: () => trans, data: trans }, '');\n trans.addResolvable({ token: '$transition$', deps: [], resolveFn: () => trans, data: trans }, '');\n trans.addResolvable({ token: '$stateParams', deps: [], resolveFn: () => trans.params(), data: trans.params() }, '');\n\n trans.entering().forEach(state => {\n trans.addResolvable({ token: '$state$', deps: [], resolveFn: () => state, data: state }, state);\n });\n}\n\nexport const registerAddCoreResolvables = (transitionService: TransitionService) =>\n transitionService.onCreate({}, addCoreResolvables);\n", - "/** @module hooks */\n/** for typedoc */\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { Transition } from '../transition/transition';\nimport { TransitionService } from '../transition/transitionService';\nimport { StateDeclaration } from '../state/interface';\nimport { StateObject } from '../state/stateObject';\n\n/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n *\n * @hidden\n */\nfunction makeEnterExitRetainHook(hookName: string): TransitionStateHookFn {\n return (transition: Transition, state: StateDeclaration) => {\n const _state: StateObject = state.$$state();\n const hookFn: TransitionStateHookFn = _state[hookName];\n return hookFn(transition, state);\n };\n}\n\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nconst onExitHook: TransitionStateHookFn = makeEnterExitRetainHook('onExit');\nexport const registerOnExitHook = (transitionService: TransitionService) =>\n transitionService.onExit({ exiting: state => !!state.onExit }, onExitHook);\n\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nconst onRetainHook: TransitionStateHookFn = makeEnterExitRetainHook('onRetain');\nexport const registerOnRetainHook = (transitionService: TransitionService) =>\n transitionService.onRetain({ retained: state => !!state.onRetain }, onRetainHook);\n\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nconst onEnterHook: TransitionStateHookFn = makeEnterExitRetainHook('onEnter');\nexport const registerOnEnterHook = (transitionService: TransitionService) =>\n transitionService.onEnter({ entering: state => !!state.onEnter }, onEnterHook);\n\n", - "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { TransitionService } from '../transition/transitionService';\nimport { TransitionHookFn } from '../transition/interface';\nimport { StateDeclaration, LazyLoadResult } from '../state/interface';\nimport { services } from '../common/coreservices';\nimport { StateRule } from '../url/interface';\n\n/**\n * A [[TransitionHookFn]] that performs lazy loading\n *\n * When entering a state \"abc\" which has a `lazyLoad` function defined:\n * - Invoke the `lazyLoad` function (unless it is already in process)\n * - Flag the hook function as \"in process\"\n * - The function should return a promise (that resolves when lazy loading is complete)\n * - Wait for the promise to settle\n * - If the promise resolves to a [[LazyLoadResult]], then register those states\n * - Flag the hook function as \"not in process\"\n * - If the hook was successful\n * - Remove the `lazyLoad` function from the state declaration\n * - If all the hooks were successful\n * - Retry the transition (by returning a TargetState)\n *\n * ```\n * .state('abc', {\n * component: 'fooComponent',\n * lazyLoad: () => System.import('./fooComponent')\n * });\n * ```\n *\n * See [[StateDeclaration.lazyLoad]]\n */\nconst lazyLoadHook: TransitionHookFn = (transition: Transition) => {\n const router = transition.router;\n\n function retryTransition() {\n if (transition.originalTransition().options().source !== 'url') {\n // The original transition was not triggered via url sync\n // The lazy state should be loaded now, so re-try the original transition\n const orig = transition.targetState();\n return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n }\n\n // The original transition was triggered via url sync\n // Run the URL rules and find the best match\n const $url = router.urlService;\n const result = $url.match($url.parts());\n const rule = result && result.rule;\n\n // If the best match is a state, redirect the transition (instead\n // of calling sync() which supersedes the current transition)\n if (rule && rule.type === 'STATE') {\n const state = (rule as StateRule).state;\n const params = result.match;\n return router.stateService.target(state, params, transition.options());\n }\n\n // No matching state found, so let .sync() choose the best non-state match/otherwise\n router.urlService.sync();\n }\n\n const promises = transition.entering()\n .filter(state => !!state.$$state().lazyLoad)\n .map(state => lazyLoadState(transition, state));\n\n return services.$q.all(promises).then(retryTransition);\n};\n\nexport const registerLazyLoadHook = (transitionService: TransitionService) =>\n transitionService.onBefore({ entering: (state) => !!state.lazyLoad }, lazyLoadHook);\n\n\n/**\n * Invokes a state's lazy load function\n *\n * @param transition a Transition context\n * @param state the state to lazy load\n * @returns A promise for the lazy load result\n */\nexport function lazyLoadState(transition: Transition, state: StateDeclaration): Promise {\n const lazyLoadFn = state.$$state().lazyLoad;\n\n // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n let promise = lazyLoadFn['_promise'];\n if (!promise) {\n const success = (result) => {\n delete state.lazyLoad;\n delete state.$$state().lazyLoad;\n delete lazyLoadFn['_promise'];\n return result;\n };\n\n const error = (err) => {\n delete lazyLoadFn['_promise'];\n return services.$q.reject(err);\n };\n\n promise = lazyLoadFn['_promise'] =\n services.$q.when(lazyLoadFn(transition, state))\n .then(updateStateRegistry)\n .then(success, error);\n }\n\n /** Register any lazy loaded state definitions */\n function updateStateRegistry(result: LazyLoadResult) {\n if (result && Array.isArray(result.states)) {\n result.states.forEach(_state => transition.router.stateRegistry.register(_state));\n }\n return result;\n }\n\n return promise;\n}\n", - "/** @module hooks */ /** */\n\nimport { trace } from '../common/trace';\nimport { Rejection } from '../transition/rejectFactory';\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans: Transition) {\n const ignoredReason = trans._ignoredReason();\n if (!ignoredReason) return;\n\n trace.traceTransitionIgnored(trans);\n\n const pending = trans.router.globals.transition;\n\n // The user clicked a link going back to the *current state* ('A')\n // However, there is also a pending transition in flight (to 'B')\n // Abort the transition to 'B' because the user now wants to be back at 'A'.\n if (ignoredReason === 'SameAsCurrent' && pending) {\n pending.abort();\n }\n\n return Rejection.ignored().toPromise();\n}\n\nexport const registerIgnoredTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n", - "/** @module hooks */ /** */\n\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans: Transition) {\n if (!trans.valid()) {\n throw new Error(trans.error());\n }\n}\n\nexport const registerInvalidTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n", - "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport {\n LocationConfig, LocationServices, identity, unnestR, isArray, splitEqual, splitHash, splitQuery,\n} from '../common';\nimport { UIRouter } from '../router';\n\nexport const keyValsToObjectR = (accum, [key, val]) => {\n if (!accum.hasOwnProperty(key)) {\n accum[key] = val;\n } else if (isArray(accum[key])) {\n accum[key].push(val);\n } else {\n accum[key] = [accum[key], val];\n }\n return accum;\n};\n\nexport const getParams = (queryString: string): any =>\n queryString.split('&').filter(identity).map(splitEqual).reduce(keyValsToObjectR, {});\n\nexport function parseUrl(url: string) {\n const orEmptyString = x => x || '';\n const [beforehash, hash] = splitHash(url).map(orEmptyString);\n const [path, search] = splitQuery(beforehash).map(orEmptyString);\n\n return { path, search, hash, url };\n}\n\nexport const buildUrl = (loc: LocationServices) => {\n const path = loc.path();\n const searchObject = loc.search();\n const hash = loc.hash();\n\n const search = Object.keys(searchObject).map(key => {\n const param = searchObject[key];\n const vals = isArray(param) ? param : [param];\n return vals.map(val => key + '=' + val);\n }).reduce(unnestR, []).join('&');\n\n return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n};\n\nexport function locationPluginFactory(\n name: string,\n isHtml5: boolean,\n serviceClass: { new(uiRouter?: UIRouter): LocationServices },\n configurationClass: { new(uiRouter?: UIRouter, isHtml5?: boolean): LocationConfig },\n) {\n return function(uiRouter: UIRouter) {\n const service = uiRouter.locationService = new serviceClass(uiRouter);\n const configuration = uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5);\n\n function dispose(router: UIRouter) {\n router.dispose(service);\n router.dispose(configuration);\n }\n\n return { name, service, configuration, dispose };\n };\n}\n", - "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { BrowserLocationConfig } from './browserLocationConfig';\nimport { HashLocationService } from './hashLocationService';\nimport { locationPluginFactory } from './utils';\nimport { LocationPlugin, ServicesPlugin } from './interface';\nimport { UIRouter } from '../router';\nimport { PushStateLocationService } from './pushStateLocationService';\nimport { MemoryLocationService } from './memoryLocationService';\nimport { MemoryLocationConfig } from './memoryLocationConfig';\nimport { $injector } from './injector';\nimport { $q } from './q';\nimport { services } from '../common/coreservices';\n\nexport function servicesPlugin(router: UIRouter): ServicesPlugin {\n services.$injector = $injector;\n services.$q = $q;\n\n return { name: 'vanilla.services', $q, $injector, dispose: () => null };\n}\n\n/** A `UIRouterPlugin` uses the browser hash to get/set the current location */\nexport const hashLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig);\n\n/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\nexport const pushStateLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.pushStateLocation', true, PushStateLocationService, BrowserLocationConfig);\n\n/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\nexport const memoryLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.memoryLocation', false, MemoryLocationService, MemoryLocationConfig);\n", - "/** @module ng1 */ /** */\nimport { ng as angular } from '../angular';\nimport {\n StateObject, pick, forEach, tail, extend,\n isArray, isInjectable, isDefined, isString, services, trace,\n ViewConfig, ViewService, ViewConfigFactory, PathNode, ResolveContext, Resolvable, IInjectable,\n} from '@uirouter/core';\nimport { Ng1ViewDeclaration } from '../interface';\nimport { TemplateFactory } from '../templateFactory';\nimport IInjectorService = angular.auto.IInjectorService;\n\nexport function getNg1ViewConfigFactory(): ViewConfigFactory {\n let templateFactory: TemplateFactory = null;\n return (path, view) => {\n templateFactory = templateFactory || services.$injector.get('$templateFactory');\n return [new Ng1ViewConfig(path, view, templateFactory)];\n };\n}\n\nconst hasAnyKey = (keys, obj) =>\n keys.reduce((acc, key) => acc || isDefined(obj[key]), false);\n\n/**\n * This is a [[StateBuilder.builder]] function for angular1 `views`.\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * handles the `views` property with logic specific to @uirouter/angularjs (ng1).\n *\n * If no `views: {}` property exists on the [[StateDeclaration]], then it creates the `views` object\n * and applies the state-level configuration to a view named `$default`.\n */\nexport function ng1ViewsBuilder(state: StateObject) {\n // Do not process root state\n if (!state.parent) return {};\n\n const tplKeys = ['templateProvider', 'templateUrl', 'template', 'notify', 'async'],\n ctrlKeys = ['controller', 'controllerProvider', 'controllerAs', 'resolveAs'],\n compKeys = ['component', 'bindings', 'componentProvider'],\n nonCompKeys = tplKeys.concat(ctrlKeys),\n allViewKeys = compKeys.concat(nonCompKeys);\n\n // Do not allow a state to have both state-level props and also a `views: {}` property.\n // A state without a `views: {}` property can declare properties for the `$default` view as properties of the state.\n // However, the `$default` approach should not be mixed with a separate `views: ` block.\n if (isDefined(state.views) && hasAnyKey(allViewKeys, state)) {\n throw new Error(`State '${state.name}' has a 'views' object. ` +\n `It cannot also have \"view properties\" at the state level. ` +\n `Move the following properties into a view (in the 'views' object): ` +\n ` ${allViewKeys.filter(key => isDefined(state[key])).join(', ')}`);\n }\n\n const views: { [key: string]: Ng1ViewDeclaration } = {},\n viewsObject = state.views || { '$default': pick(state, allViewKeys) };\n\n forEach(viewsObject, function (config: Ng1ViewDeclaration, name: string) {\n // Account for views: { \"\": { template... } }\n name = name || '$default';\n // Account for views: { header: \"headerComponent\" }\n if (isString(config)) config = { component: config };\n\n // Make a shallow copy of the config object\n config = extend({}, config);\n\n // Do not allow a view to mix props for component-style view with props for template/controller-style view\n if (hasAnyKey(compKeys, config) && hasAnyKey(nonCompKeys, config)) {\n throw new Error(`Cannot combine: ${compKeys.join('|')} with: ${nonCompKeys.join('|')} in stateview: '${name}@${state.name}'`);\n }\n\n config.resolveAs = config.resolveAs || '$resolve';\n config.$type = 'ng1';\n config.$context = state;\n config.$name = name;\n\n const normalized = ViewService.normalizeUIViewTarget(config.$context, config.$name);\n config.$uiViewName = normalized.uiViewName;\n config.$uiViewContextAnchor = normalized.uiViewContextAnchor;\n\n views[name] = config;\n });\n return views;\n}\n\nlet id = 0;\nexport class Ng1ViewConfig implements ViewConfig {\n $id = id++;\n loaded = false;\n controller: Function; // actually IInjectable|string\n template: string;\n component: string;\n locals: any; // TODO: delete me\n\n constructor(public path: PathNode[], public viewDecl: Ng1ViewDeclaration, public factory: TemplateFactory) { }\n\n load() {\n const $q = services.$q;\n const context = new ResolveContext(this.path);\n const params = this.path.reduce((acc, node) => extend(acc, node.paramValues), {});\n\n const promises: any = {\n template: $q.when(this.factory.fromConfig(this.viewDecl, params, context)),\n controller: $q.when(this.getController(context)),\n };\n\n return $q.all(promises).then((results) => {\n trace.traceViewServiceEvent('Loaded', this);\n this.controller = results.controller;\n extend(this, results.template); // Either { template: \"tpl\" } or { component: \"cmpName\" }\n return this;\n });\n }\n\n getTemplate = (uiView, context: ResolveContext) =>\n this.component ? this.factory.makeComponentTemplate(uiView, context, this.component, this.viewDecl.bindings) : this.template;\n\n /**\n * Gets the controller for a view configuration.\n *\n * @returns {Function|Promise.} Returns a controller, or a promise that resolves to a controller.\n */\n getController(context: ResolveContext): (IInjectable|string|Promise) {\n const provider = this.viewDecl.controllerProvider;\n if (!isInjectable(provider)) return this.viewDecl.controller;\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n}\n", - "/** @module view */\n/** for typedoc */\nimport { ng as angular } from './angular';\nimport { IAugmentedJQuery } from 'angular';\nimport {\n isArray, isDefined, isFunction, isObject, services, Obj, IInjectable, tail, kebobString, unnestR, ResolveContext,\n Resolvable, RawParams,\n} from '@uirouter/core';\nimport { Ng1ViewDeclaration, TemplateFactoryProvider } from './interface';\n\n/**\n * Service which manages loading of templates from a ViewConfig.\n */\nexport class TemplateFactory implements TemplateFactoryProvider {\n /** @hidden */ private _useHttp = angular.version.minor < 3;\n /** @hidden */ private $templateRequest;\n /** @hidden */ private $templateCache;\n /** @hidden */ private $http;\n\n /** @hidden */ $get = ['$http', '$templateCache', '$injector', ($http, $templateCache, $injector) => {\n this.$templateRequest = $injector.has && $injector.has('$templateRequest') && $injector.get('$templateRequest');\n this.$http = $http;\n this.$templateCache = $templateCache;\n return this;\n }];\n\n /** @hidden */\n useHttpService(value: boolean) {\n this._useHttp = value;\n }\n\n /**\n * Creates a template from a configuration object.\n *\n * @param config Configuration object for which to load a template.\n * The following properties are search in the specified order, and the first one\n * that is defined is used to create the template:\n *\n * @param params Parameters to pass to the template function.\n * @param context The resolve context associated with the template's view\n *\n * @return {string|object} The template html as a string, or a promise for\n * that string,or `null` if no template is configured.\n */\n fromConfig(config: Ng1ViewDeclaration, params: any, context: ResolveContext): Promise<{ template?: string, component?: string }> {\n const defaultTemplate = '';\n\n const asTemplate = (result) => services.$q.when(result).then(str => ({ template: str }));\n const asComponent = (result) => services.$q.when(result).then(str => ({ component: str }));\n\n return (\n isDefined(config.template) ? asTemplate(this.fromString(config.template, params)) :\n isDefined(config.templateUrl) ? asTemplate(this.fromUrl(config.templateUrl, params)) :\n isDefined(config.templateProvider) ? asTemplate(this.fromProvider(config.templateProvider, params, context)) :\n isDefined(config.component) ? asComponent(config.component) :\n isDefined(config.componentProvider) ? asComponent(this.fromComponentProvider(config.componentProvider, params, context)) :\n asTemplate(defaultTemplate)\n );\n }\n\n /**\n * Creates a template from a string or a function returning a string.\n *\n * @param template html template as a string or function that returns an html template as a string.\n * @param params Parameters to pass to the template function.\n *\n * @return {string|object} The template html as a string, or a promise for that\n * string.\n */\n fromString(template: (string | Function), params?: RawParams) {\n return isFunction(template) ? ( template)(params) : template;\n }\n\n /**\n * Loads a template from the a URL via `$http` and `$templateCache`.\n *\n * @param {string|Function} url url of the template to load, or a function\n * that returns a url.\n * @param {Object} params Parameters to pass to the url function.\n * @return {string|Promise.} The template html as a string, or a promise\n * for that string.\n */\n fromUrl(url: (string | Function), params: any) {\n if (isFunction(url)) url = ( url)(params);\n if (url == null) return null;\n\n if (this._useHttp) {\n return this.$http.get(url, { cache: this.$templateCache, headers: { Accept: 'text/html' } })\n .then(function (response) {\n return response.data;\n });\n }\n\n return this.$templateRequest(url);\n }\n\n /**\n * Creates a template by invoking an injectable provider function.\n *\n * @param provider Function to invoke via `locals`\n * @param {Function} injectFn a function used to invoke the template provider\n * @return {string|Promise.} The template html as a string, or a promise\n * for that string.\n */\n fromProvider(provider: IInjectable, params: any, context: ResolveContext) {\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n\n /**\n * Creates a component's template by invoking an injectable provider function.\n *\n * @param provider Function to invoke via `locals`\n * @param {Function} injectFn a function used to invoke the template provider\n * @return {string} The template html as a string: \"\".\n */\n fromComponentProvider(provider: IInjectable, params: any, context: ResolveContext) {\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n\n /**\n * Creates a template from a component's name\n *\n * This implements route-to-component.\n * It works by retrieving the component (directive) metadata from the injector.\n * It analyses the component's bindings, then constructs a template that instantiates the component.\n * The template wires input and output bindings to resolves or from the parent component.\n *\n * @param uiView {object} The parent ui-view (for binding outputs to callbacks)\n * @param context The ResolveContext (for binding outputs to callbacks returned from resolves)\n * @param component {string} Component's name in camel case.\n * @param bindings An object defining the component's bindings: {foo: '<'}\n * @return {string} The template as a string: \"\".\n */\n makeComponentTemplate(uiView: IAugmentedJQuery, context: ResolveContext, component: string, bindings?: any) {\n bindings = bindings || {};\n\n // Bind once prefix\n const prefix = angular.version.minor >= 3 ? '::' : '';\n // Convert to kebob name. Add x- prefix if the string starts with `x-` or `data-`\n const kebob = (camelCase: string) => {\n const kebobed = kebobString(camelCase);\n return /^(x|data)-/.exec(kebobed) ? `x-${kebobed}` : kebobed;\n };\n\n\n const attributeTpl = (input: BindingTuple) => {\n const { name, type } = input;\n const attrName = kebob(name);\n // If the ui-view has an attribute which matches a binding on the routed component\n // then pass that attribute through to the routed component template.\n // Prefer ui-view wired mappings to resolve data, unless the resolve was explicitly bound using `bindings:`\n if (uiView.attr(attrName) && !bindings[name])\n return `${attrName}='${uiView.attr(attrName)}'`;\n\n const resolveName = bindings[name] || name;\n // Pre-evaluate the expression for \"@\" bindings by enclosing in {{ }}\n // some-attr=\"{{ ::$resolve.someResolveName }}\"\n if (type === '@')\n return `${attrName}='{{${prefix}$resolve.${resolveName}}}'`;\n\n // Wire \"&\" callbacks to resolves that return a callback function\n // Get the result of the resolve (should be a function) and annotate it to get its arguments.\n // some-attr=\"$resolve.someResolveResultName(foo, bar)\"\n if (type === '&') {\n const res = context.getResolvable(resolveName);\n const fn = res && res.data;\n const args = fn && services.$injector.annotate(fn) || [];\n // account for array style injection, i.e., ['foo', function(foo) {}]\n const arrayIdxStr = isArray(fn) ? `[${fn.length - 1}]` : '';\n return `${attrName}='$resolve.${resolveName}${arrayIdxStr}(${args.join(',')})'`;\n }\n\n // some-attr=\"::$resolve.someResolveName\"\n return `${attrName}='${prefix}$resolve.${resolveName}'`;\n };\n\n const attrs = getComponentBindings(component).map(attributeTpl).join(' ');\n const kebobName = kebob(component);\n return `<${kebobName} ${attrs}>`;\n }\n}\n\n// Gets all the directive(s)' inputs ('@', '=', and '<') and outputs ('&')\nfunction getComponentBindings(name: string) {\n const cmpDefs = services.$injector.get(name + 'Directive'); // could be multiple\n if (!cmpDefs || !cmpDefs.length) throw new Error(`Unable to find component named '${name}'`);\n return cmpDefs.map(getBindings).reduce(unnestR, []);\n}\n\n// Given a directive definition, find its object input attributes\n// Use different properties, depending on the type of directive (component, bindToController, normal)\nconst getBindings = (def: any) => {\n if (isObject(def.bindToController)) return scopeBindings(def.bindToController);\n return scopeBindings(def.scope);\n};\n\ninterface BindingTuple {\n name: string;\n type: string;\n}\n\n// for ng 1.2 style, process the scope: { input: \"=foo\" }\n// for ng 1.3 through ng 1.5, process the component's bindToController: { input: \"=foo\" } object\nconst scopeBindings = (bindingsObj: Obj) => Object.keys(bindingsObj || {})\n // [ 'input', [ '=foo', '=', 'foo' ] ]\n .map(key => [key, /^([=<@&])[?]?(.*)/.exec(bindingsObj[key])])\n // skip malformed values\n .filter(tuple => isDefined(tuple) && isArray(tuple[1]))\n // { name: ('foo' || 'input'), type: '=' }\n .map(tuple => ({ name: tuple[1][2] || tuple[0], type: tuple[1][1] } as BindingTuple));\n\n", - "/**\n * # Angular 1 types\n *\n * UI-Router core provides various Typescript types which you can use for code completion and validating parameter values, etc.\n * The customizations to the core types for Angular UI-Router are documented here.\n *\n * The optional [[$resolve]] service is also documented here.\n *\n * @module ng1\n * @preferred\n */\n/** for typedoc */\nimport { ng as angular } from './angular';\nimport {\n IRootScopeService, IQService, ILocationService, ILocationProvider, IHttpService, ITemplateCacheService,\n} from 'angular';\nimport {\n services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext,\n unnestR, TypedMap,\n} from '@uirouter/core';\nimport { ng1ViewsBuilder, getNg1ViewConfigFactory } from './statebuilders/views';\nimport { TemplateFactory } from './templateFactory';\nimport { StateProvider } from './stateProvider';\nimport { getStateHookBuilder } from './statebuilders/onEnterExitRetain';\nimport { Ng1LocationServices } from './locationServices';\nimport { UrlRouterProvider } from './urlRouterProvider';\nimport IInjectorService = angular.auto.IInjectorService; // tslint:disable-line\n\nangular.module('ui.router.angular1', []);\nconst mod_init = angular.module('ui.router.init', []);\nconst mod_util = angular.module('ui.router.util', ['ng', 'ui.router.init']);\nconst mod_rtr = angular.module('ui.router.router', ['ui.router.util']);\nconst mod_state = angular.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);\nconst mod_main = angular.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);\nlet mod_cmpt = angular.module('ui.router.compat', ['ui.router']); // tslint:disable-line\n\ndeclare module '@uirouter/core/lib/router' {\n interface UIRouter { // tslint:disable-line:no-shadowed-variable\n /** @hidden */\n stateProvider: StateProvider;\n /** @hidden */\n urlRouterProvider: UrlRouterProvider;\n }\n}\n\nlet router: UIRouter = null;\n\n$uiRouterProvider.$inject = ['$locationProvider'];\n/** This angular 1 provider instantiates a Router and exposes its services via the angular injector */\nfunction $uiRouterProvider($locationProvider: ILocationProvider) {\n\n // Create a new instance of the Router when the $uiRouterProvider is initialized\n router = this.router = new UIRouter();\n router.stateProvider = new StateProvider(router.stateRegistry, router.stateService);\n\n // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties\n router.stateRegistry.decorator('views', ng1ViewsBuilder);\n router.stateRegistry.decorator('onExit', getStateHookBuilder('onExit'));\n router.stateRegistry.decorator('onRetain', getStateHookBuilder('onRetain'));\n router.stateRegistry.decorator('onEnter', getStateHookBuilder('onEnter'));\n\n router.viewService._pluginapi._viewConfigFactory('ng1', getNg1ViewConfigFactory());\n\n const ng1LocationService = router.locationService = router.locationConfig = new Ng1LocationServices($locationProvider);\n\n Ng1LocationServices.monkeyPatchPathParameterType(router);\n\n // backwards compat: also expose router instance as $uiRouterProvider.router\n router['router'] = router;\n router['$get'] = $get;\n $get.$inject = ['$location', '$browser', '$sniffer', '$rootScope', '$http', '$templateCache'];\n function $get($location: ILocationService, $browser: any, $sniffer: any, $rootScope: ng.IScope, $http: IHttpService, $templateCache: ITemplateCacheService) {\n ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser);\n delete router['router'];\n delete router['$get'];\n return router;\n }\n return router;\n}\n\nconst getProviderFor = (serviceName) => [ '$uiRouterProvider', ($urp) => {\n const service = $urp.router[serviceName];\n service['$get'] = () => service;\n return service;\n}];\n\n// This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)\nrunBlock.$inject = ['$injector', '$q', '$uiRouter'];\nfunction runBlock($injector: IInjectorService, $q: IQService, $uiRouter: UIRouter) {\n services.$injector = $injector;\n services.$q = $q;\n\n // The $injector is now available.\n // Find any resolvables that had dependency annotation deferred\n $uiRouter.stateRegistry.get()\n .map(x => x.$$state().resolvables)\n .reduce(unnestR, [])\n .filter(x => x.deps === 'deferred')\n .forEach(resolvable => resolvable.deps = $injector.annotate(resolvable.resolveFn, $injector.strictDi));\n}\n\n// $urlRouter service and $urlRouterProvider\nconst getUrlRouterProvider = (uiRouter: UIRouter) =>\n uiRouter.urlRouterProvider = new UrlRouterProvider(uiRouter);\n\n// $state service and $stateProvider\n// $urlRouter service and $urlRouterProvider\nconst getStateProvider = () =>\n extend(router.stateProvider, { $get: () => router.stateService });\n\nwatchDigests.$inject = ['$rootScope'];\nexport function watchDigests($rootScope: IRootScopeService) {\n $rootScope.$watch(function() { trace.approximateDigests++; });\n}\n\nmod_init .provider('$uiRouter', $uiRouterProvider);\nmod_rtr .provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);\nmod_util .provider('$urlService', getProviderFor('urlService'));\nmod_util .provider('$urlMatcherFactory', ['$uiRouterProvider', () => router.urlMatcherFactory]);\nmod_util .provider('$templateFactory', () => new TemplateFactory());\nmod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));\nmod_state.provider('$uiRouterGlobals', getProviderFor('globals'));\nmod_state.provider('$transitions', getProviderFor('transitionService'));\nmod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);\n\nmod_state.factory ('$stateParams', ['$uiRouter', ($uiRouter: UIRouter) => $uiRouter.globals.params]);\nmod_main .factory ('$view', () => router.viewService);\nmod_main .service ('$trace', () => trace);\n\nmod_main .run (watchDigests);\nmod_util .run (['$urlMatcherFactory', function ($urlMatcherFactory: UrlMatcherFactory) { }]);\nmod_state.run (['$state', function ($state: StateService) { }]);\nmod_rtr .run (['$urlRouter', function ($urlRouter: UrlRouter) { }]);\nmod_init .run (runBlock);\n\n/** @hidden TODO: find a place to move this */\nexport const getLocals = (ctx: ResolveContext): TypedMap => {\n const tokens = ctx.getTokens().filter(isString);\n\n const tuples = tokens .map(key => {\n const resolvable = ctx.getResolvable(key);\n const waitPolicy = ctx.getPolicy(resolvable).async;\n return [ key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data ];\n });\n\n return tuples.reduce(applyPairs, {});\n};\n\n", - "/**\n * # Angular 1 Directives\n *\n * These are the directives included in UI-Router for Angular 1.\n * These directives are used in templates to create viewports and link/navigate to states.\n *\n * @ng1api\n * @preferred\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IAugmentedJQuery, ITimeoutService, IScope, IInterpolateService } from 'angular';\n\nimport {\n Obj, extend, forEach, tail, isString, isObject, isArray, parse, noop, unnestR, identity, uniqR, inArray, removeFrom,\n RawParams, PathNode, StateOrName, StateService, StateDeclaration, UIRouter,\n} from '@uirouter/core';\nimport { UIViewData } from './viewDirective';\nimport EventHandler = JQuery.EventHandler;\n\n/** @hidden Used for typedoc */\nexport interface ng1_directive {} // tslint:disable-line:class-name\n\n/** @hidden */\nfunction parseStateRef(ref: string) {\n let parsed;\n const paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n if (paramsOnly) ref = '(' + paramsOnly[1] + ')';\n\n parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n}\n\n/** @hidden */\nfunction stateContext(el: IAugmentedJQuery) {\n const $uiView: UIViewData = (el.parent() as IAugmentedJQuery).inheritedData('$uiView');\n const path: PathNode[] = parse('$cfg.path')($uiView);\n return path ? tail(path).state.name : undefined;\n}\n\n/** @hidden */\nfunction processedDef($state: StateService, $element: IAugmentedJQuery, def: Def): Def {\n const uiState = def.uiState || $state.current.name;\n const uiStateOpts = extend(defaultOpts($element, $state), def.uiStateOpts || {});\n const href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n return { uiState, uiStateParams: def.uiStateParams, uiStateOpts, href };\n}\n\n/** @hidden */\ninterface TypeInfo {\n attr: string;\n isAnchor: boolean;\n clickable: boolean;\n}\n\n/** @hidden */\nfunction getTypeInfo(el: IAugmentedJQuery): TypeInfo {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n const isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n const isForm = el[0].nodeName === 'FORM';\n\n return {\n attr: isForm ? 'action' : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop('tagName').toUpperCase() === 'A',\n clickable: !isForm,\n };\n}\n\n/** @hidden */\nfunction clickHook(el: IAugmentedJQuery, $state: StateService, $timeout: ITimeoutService, type: TypeInfo, getDef: () => Def) {\n return function (e: JQueryMouseEventObject) {\n const button = e.which || e.button, target = getDef();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n const transition = $timeout(function () {\n $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the directive.\n let ignorePreventDefaultCount = type.isAnchor && !target.href ? 1 : 0;\n\n e.preventDefault = function () {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\n/** @hidden */\nfunction defaultOpts(el: IAugmentedJQuery, $state: StateService) {\n return {\n relative: stateContext(el) || $state.$current,\n inherit: true,\n source: 'sref',\n };\n}\n\n/** @hidden */\nfunction bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: EventHandler, uiStateOpts: any): void {\n let events;\n\n if (uiStateOpts) {\n events = uiStateOpts.events;\n }\n\n if (!isArray(events)) {\n events = ['click'];\n }\n\n const on = element.on ? 'on' : 'bind';\n for (const event of events) {\n element[on](event, hookFn);\n }\n\n scope.$on('$destroy', function() {\n const off = element.off ? 'off' : 'unbind';\n for (const event of events) {\n element[off](event, hookFn);\n }\n });\n}\n\n/**\n * `ui-sref`: A directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of the `ui-sref` is the name of the state to link to.\n *\n * #### Example:\n * This will activate the `home` state when the link is clicked.\n * ```html\n * Home\n * ```\n *\n * ### Relative Links\n * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create a relative `ui-sref` which always targets the same destination.\n *\n * #### Example:\n * Both these links are relative to the parent state, even when a child state is currently active.\n * ```html\n * child 1 state\n * child 2 state\n * ```\n *\n * This link activates the parent state.\n * ```html\n * Return\n * ```\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * #### Example:\n * Assuming the `users` state has a url of `/users/`\n * ```html\n * Users\n * ```\n *\n * ### Parameter Values\n * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n * The content inside the parentheses is an expression, evaluated to the parameter values.\n *\n * #### Example:\n * This example renders a list of links to users.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ user.displayName }}\n *
  • \n * ```\n *\n * Note:\n * The parameter values expression is `$watch`ed for updates.\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-sref-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Examples\n * If you have the following template:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n * \n * ```\n *\n * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n *
      \n *
    • \n * Joe\n *
    • \n *
    • \n * Alice\n *
    • \n *
    • \n * Bob\n *
    • \n *
    \n *\n * Home\n * ```\n *\n * ### Notes\n *\n * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n *\n * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n */\nlet uiSrefDirective: ng1_directive;\nuiSrefDirective = ['$uiRouter', '$timeout',\n function $StateRefDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const ref = parseStateRef(attrs.uiSref);\n rawDef.uiState = ref.state;\n rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function (val) {\n rawDef.uiStateParams = extend({}, val);\n update();\n }, true);\n rawDef.uiStateParams = extend({}, scope.$eval(ref.paramExpr));\n }\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n/**\n * `ui-state`: A fully dynamic directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n *\n * #### Example:\n * Create a list of links.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Relative Links\n * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create relative `ui-state` which always targets the same destination.\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * ### Parameter Values\n * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n * Param values should be provided using the `ui-state-params` attribute.\n * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * This example renders a list of links with param values.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-state-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Notes\n *\n * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n * However, it might be simpler to use [[uiSref]] parameter-only links.\n *\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n * ```\n */\nlet uiStateDirective: ng1_directive;\nuiStateDirective = ['$uiRouter', '$timeout',\n function $StateRefDynamicDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n const watchDeregFns = inputAttrs.reduce((acc, attr) => (acc[attr] = noop, acc), {});\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n inputAttrs.forEach((field) => {\n rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n\n attrs.$observe(field, (expr) => {\n watchDeregFns[field]();\n watchDeregFns[field] = scope.$watch(expr, (newval) => {\n rawDef[field] = newval;\n update();\n }, true);\n });\n });\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n\n/**\n * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n *\n * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n * related directive's state is active (and remove them when it is inactive).\n *\n * The primary use-case is to highlight the active link in navigation menus,\n * distinguishing it from the inactive menu items.\n *\n * ### Linking to a `ui-sref` or `ui-state`\n * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n *\n * ### Matching\n *\n * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n * This is a \"fuzzy match\" which uses [[StateService.includes]].\n *\n * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n * This is an \"exact match\" which uses [[StateService.is]].\n *\n * ### Parameter values\n * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n *\n * #### Example:\n * ```html\n *
  • \n * {{ user.lastName }}\n *
  • \n * ```\n *\n * ### Examples\n *\n * Given the following template:\n * #### Example:\n * ```html\n * \n * ```\n *\n * When the app state is `app.user` (or any child state),\n * and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *\n * ```html\n * \n * ```\n *\n * ### Glob mode\n *\n * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n * The objects keys represent active class names and values represent the respective state names/globs.\n * `ui-sref-active` will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * #### Example:\n * Given the following template, with \"admin\" being an abstract state:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `
    ` and `` elements.\n * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n *\n * ### Notes:\n *\n * - The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n */\nlet uiSrefActiveDirective: ng1_directive;\nuiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter',\n function $StateRefActiveDirective($state: StateService, $stateParams: Obj, $interpolate: IInterpolateService, $uiRouter: UIRouter) {\n return {\n restrict: 'A',\n controller: ['$scope', '$element', '$attrs',\n function ($scope: IScope, $element: IAugmentedJQuery, $attrs: any) {\n const states: StateData[] = [];\n let activeEqClass: string;\n let uiSrefActive: any;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n if (isObject(uiSrefActive)) {\n forEach(uiSrefActive, function (stateOrName: StateOrName, activeClass: string) {\n if (isString(stateOrName)) {\n const ref = parseStateRef(stateOrName);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n }\n });\n }\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState: string, newParams: Obj) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n const deregister = addState(newState, newParams, uiSrefActive);\n update();\n return deregister;\n };\n\n function updateAfterTransition(trans) {\n trans.promise.then(update, noop);\n }\n\n $scope.$on('$stateChangeSuccess', update);\n $scope.$on('$destroy', $uiRouter.transitionService.onStart({}, updateAfterTransition));\n if ($uiRouter.globals.transition) {\n updateAfterTransition($uiRouter.globals.transition);\n }\n\n function addState(stateName: string, stateParams: Obj, activeClass: string) {\n const state = $state.get(stateName, stateContext($element));\n\n const stateInfo = {\n state: state || { name: stateName },\n params: stateParams,\n activeClass: activeClass,\n };\n\n states.push(stateInfo);\n\n return function removeState() {\n removeFrom(states)(stateInfo);\n };\n }\n\n // Update route state\n function update() {\n const splitClasses = str =>\n str.split(/\\s/).filter(identity);\n const getClasses = (stateList: StateData[]) =>\n stateList.map(x => x.activeClass).map(splitClasses).reduce(unnestR, []);\n\n const allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(uniqR, []);\n const fuzzyClasses = getClasses(states.filter(x => $state.includes(x.state.name, x.params)));\n const exactlyMatchesAny = !!states.filter(x => $state.is(x.state.name, x.params)).length;\n const exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n\n const addClasses = fuzzyClasses.concat(exactClasses).reduce(uniqR, []);\n const removeClasses = allClasses.filter(cls => !inArray(addClasses, cls));\n\n $scope.$evalAsync(() => {\n addClasses.forEach(className => $element.addClass(className));\n removeClasses.forEach(className => $element.removeClass(className));\n });\n }\n\n update();\n }],\n };\n }];\n\n/** @hidden */\ninterface Def { uiState: string; href: string; uiStateParams: Obj; uiStateOpts: any; }\n/** @hidden */\ninterface StateData { state: StateDeclaration; params: RawParams; activeClass: string; }\n\nangular.module('ui.router.state')\n .directive('uiSref', uiSrefDirective)\n .directive('uiSrefActive', uiSrefActiveDirective)\n .directive('uiSrefActiveEq', uiSrefActiveDirective)\n .directive('uiState', uiStateDirective);\n", - "/** @module ng1 */ /** for typedoc */\n\nimport { ng as angular } from './angular';\nimport { Obj, StateService, StateOrName } from '@uirouter/core';\n\n/**\n * `isState` Filter: truthy if the current state is the parameter\n *\n * Translates to [[StateService.is]] `$state.is(\"stateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state is 'stateName'
    \n * ```\n */\n$IsStateFilter.$inject = ['$state'];\nexport function $IsStateFilter($state: StateService) {\n const isFilter: any = function(state: StateOrName, params: Obj, options?: { relative?: StateOrName }) {\n return $state.is(state, params, options);\n };\n isFilter.$stateful = true;\n return isFilter;\n}\n\n/**\n * `includedByState` Filter: truthy if the current state includes the parameter\n *\n * Translates to [[StateService.includes]]` $state.is(\"fullOrPartialStateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state includes 'fullOrPartialStateName'
    \n * ```\n */\n$IncludedByStateFilter.$inject = ['$state'];\nexport function $IncludedByStateFilter($state: StateService) {\n const includesFilter: any = function(state: StateOrName, params: Obj, options: { relative?: StateOrName }) {\n return $state.includes(state, params, options);\n };\n includesFilter.$stateful = true;\n return includesFilter;\n}\n\nangular.module('ui.router.state')\n .filter('isState', $IsStateFilter)\n .filter('includedByState', $IncludedByStateFilter);\n", - "/**\n * @ng1api\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IInterpolateService, IScope, ITranscludeFunction, IAugmentedJQuery, ITimeoutService } from 'angular';\n\nimport {\n extend, unnestR, filter, tail, isDefined, isFunction, isString, trace, parse,\n ActiveUIView, TransitionService, ResolveContext, Transition, PathNode, StateDeclaration,\n Param, kebobString, HookRegOptions, ViewService, $QLike, Obj, TypedMap, noop,\n} from '@uirouter/core';\nimport { Ng1ViewConfig } from '../statebuilders/views';\nimport { Ng1Controller, Ng1StateDeclaration } from '../interface';\nimport { getLocals } from '../services';\nimport { ng1_directive } from './stateDirectives';\n\n/** @hidden */\nexport type UIViewData = {\n $cfg: Ng1ViewConfig;\n $uiView: ActiveUIView;\n};\n\n/** @hidden */\nexport type UIViewAnimData = {\n $animEnter: Promise;\n $animLeave: Promise;\n $$animLeave: { resolve: () => any; } // \"deferred\"\n};\n\n/**\n * `ui-view`: A viewport directive which is filled in by a view from the active state.\n *\n * ### Attributes\n *\n * - `name`: (Optional) A view name.\n * The name should be unique amongst the other views in the same state.\n * You can have views of the same name that live in different states.\n * The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).\n *\n * - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.\n * Uses [[$uiViewScroll]] to do the scrolling.\n *\n * - `onload`: Expression to evaluate whenever the view updates.\n *\n * #### Example:\n * A view can be unnamed or named.\n * ```html\n * \n *
    \n *\n * \n *
    \n *\n * \n * \n * ```\n *\n * You can only have one unnamed view within any template (or root html). If you are only using a\n * single view and it is unnamed then you can populate it like so:\n *\n * ```html\n *
    \n * $stateProvider.state(\"home\", {\n * template: \"

    HELLO!

    \"\n * })\n * ```\n *\n * The above is a convenient shortcut equivalent to specifying your view explicitly with the\n * [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * But typically you'll only use the views property if you name your view or have more than one view\n * in the same template. There's not really a compelling reason to name a view if its the only one,\n * but you could if you wanted, like so:\n *\n * ```html\n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"main\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * Really though, you'll use views to set up multiple views:\n *\n * ```html\n *
    \n *
    \n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * },\n * \"chart\": {\n * template: \"\"\n * },\n * \"data\": {\n * template: \"\"\n * }\n * }\n * })\n * ```\n *\n * #### Examples for `autoscroll`:\n * ```html\n * \n * \n *\n * \n * \n * \n * \n * ```\n *\n * Resolve data:\n *\n * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n * can be customized using [[Ng1ViewDeclaration.resolveAs]]). This can be then accessed from the template.\n *\n * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n * controller is instantiated. The `$onInit()` hook can be used to perform initialization code which\n * depends on `$resolve` data.\n *\n * #### Example:\n * ```js\n * $stateProvider.state('home', {\n * template: '',\n * resolve: {\n * user: function(UserService) { return UserService.fetchUser(); }\n * }\n * });\n * ```\n */\nexport let uiView: ng1_directive;\nuiView = ['$view', '$animate', '$uiViewScroll', '$interpolate', '$q',\nfunction $ViewDirective($view: ViewService, $animate: any, $uiViewScroll: any, $interpolate: IInterpolateService, $q: $QLike) {\n\n function getRenderer(attrs: Obj, scope: IScope) {\n return {\n enter: function(element: JQuery, target: any, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.enter(element, null, target).then(cb);\n } else {\n $animate.enter(element, null, target, cb);\n }\n },\n leave: function(element: JQuery, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.leave(element).then(cb);\n } else {\n $animate.leave(element, cb);\n }\n },\n };\n }\n\n function configsEqual(config1: Ng1ViewConfig, config2: Ng1ViewConfig) {\n return config1 === config2;\n }\n\n const rootData = {\n $cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },\n $uiView: { },\n };\n\n const directive = {\n count: 0,\n restrict: 'ECA',\n terminal: true,\n priority: 400,\n transclude: 'element',\n compile: function (tElement: JQuery, tAttrs: Obj, $transclude: ITranscludeFunction) {\n\n return function (scope: IScope, $element: IAugmentedJQuery, attrs: Obj) {\n const onloadExp = attrs['onload'] || '',\n autoScrollExp = attrs['autoscroll'],\n renderer = getRenderer(attrs, scope),\n inherited = $element.inheritedData('$uiView') || rootData,\n name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';\n\n let previousEl: JQuery,\n currentEl: JQuery,\n currentScope: IScope,\n viewConfig: Ng1ViewConfig,\n unregister: Function;\n\n const activeUIView: ActiveUIView = {\n $type: 'ng1',\n id: directive.count++, // Global sequential ID for ui-view tags added to DOM\n name: name, // ui-view name (
    \n fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name, // fully qualified name, describes location in DOM\n config: null, // The ViewConfig loaded (from a state.views definition)\n configUpdated: configUpdatedCallback, // Called when the matching ViewConfig changes\n get creationContext() { // The context in which this ui-view \"tag\" was created\n const fromParentTagConfig = parse('$cfg.viewDecl.$context')(inherited);\n // Allow \n // See https://github.com/angular-ui/ui-router/issues/3355\n const fromParentTag = parse('$uiView.creationContext')(inherited);\n return fromParentTagConfig || fromParentTag;\n },\n };\n\n trace.traceUIViewEvent('Linking', activeUIView);\n\n function configUpdatedCallback(config?: Ng1ViewConfig) {\n if (config && !(config instanceof Ng1ViewConfig)) return;\n if (configsEqual(viewConfig, config)) return;\n trace.traceUIViewConfigUpdated(activeUIView, config && config.viewDecl && config.viewDecl.$context);\n\n viewConfig = config;\n updateView(config);\n }\n\n $element.data('$uiView', { $uiView: activeUIView });\n\n updateView();\n\n unregister = $view.registerUIView(activeUIView);\n scope.$on('$destroy', function() {\n trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);\n unregister();\n });\n\n function cleanupLastView() {\n if (previousEl) {\n trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));\n previousEl.remove();\n previousEl = null;\n }\n\n if (currentScope) {\n trace.traceUIViewEvent('Destroying scope', activeUIView);\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentEl) {\n const _viewData = currentEl.data('$uiViewAnim');\n trace.traceUIViewEvent('Animate out', _viewData);\n renderer.leave(currentEl, function() {\n _viewData.$$animLeave.resolve();\n previousEl = null;\n });\n\n previousEl = currentEl;\n currentEl = null;\n }\n }\n\n function updateView(config?: Ng1ViewConfig) {\n const newScope = scope.$new();\n const animEnter = $q.defer(), animLeave = $q.defer();\n\n const $uiViewData: UIViewData = {\n $cfg: config,\n $uiView: activeUIView,\n };\n\n const $uiViewAnim: UIViewAnimData = {\n $animEnter: animEnter.promise,\n $animLeave: animLeave.promise,\n $$animLeave: animLeave,\n };\n\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoading\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n *\n * Fired once the view **begins loading**, *before* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n newScope.$emit('$viewContentLoading', name);\n\n const cloned = $transclude(newScope, function(clone) {\n clone.data('$uiViewAnim', $uiViewAnim);\n clone.data('$uiView', $uiViewData);\n renderer.enter(clone, $element, function onUIViewEnter() {\n animEnter.resolve();\n if (currentScope) currentScope.$emit('$viewContentAnimationEnded');\n\n if (isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n $uiViewScroll(clone);\n }\n });\n\n cleanupLastView();\n });\n\n currentEl = cloned;\n currentScope = newScope;\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoaded\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description *\n * Fired once the view is **loaded**, *after* the DOM is rendered.\n *\n * @param {Object} event Event object.\n */\n currentScope.$emit('$viewContentLoaded', config || viewConfig);\n currentScope.$eval(onloadExp);\n }\n };\n },\n };\n\n return directive;\n}];\n\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$transitions', '$view', '$q', '$timeout'];\n/** @hidden */\nfunction $ViewDirectiveFill($compile: angular.ICompileService,\n $controller: angular.IControllerService,\n $transitions: TransitionService,\n $view: ViewService,\n $q: angular.IQService,\n $timeout: ITimeoutService) {\n const getControllerAs = parse('viewDecl.controllerAs');\n const getResolveAs = parse('viewDecl.resolveAs');\n\n return {\n restrict: 'ECA',\n priority: -400,\n compile: function (tElement: JQuery) {\n const initial = tElement.html();\n tElement.empty();\n\n return function (scope: IScope, $element: JQuery) {\n const data: UIViewData = $element.data('$uiView');\n if (!data) {\n $element.html(initial);\n $compile($element.contents() as any)(scope);\n return;\n }\n\n const cfg: Ng1ViewConfig = data.$cfg || { viewDecl: {}, getTemplate: noop };\n const resolveCtx: ResolveContext = cfg.path && new ResolveContext(cfg.path);\n $element.html(cfg.getTemplate($element, resolveCtx) || initial);\n trace.traceUIViewFill(data.$uiView, $element.html());\n\n const link = $compile($element.contents() as any);\n const controller = cfg.controller;\n const controllerAs: string = getControllerAs(cfg);\n const resolveAs: string = getResolveAs(cfg);\n const locals = resolveCtx && getLocals(resolveCtx);\n\n scope[resolveAs] = locals;\n\n if (controller) {\n const controllerInstance = $controller(controller, extend({}, locals, { $scope: scope, $element: $element }));\n if (controllerAs) {\n scope[controllerAs] = controllerInstance;\n scope[controllerAs][resolveAs] = locals;\n }\n\n // TODO: Use $view service as a central point for registering component-level hooks\n // Then, when a component is created, tell the $view service, so it can invoke hooks\n // $view.componentLoaded(controllerInstance, { $scope: scope, $element: $element });\n // scope.$on('$destroy', () => $view.componentUnloaded(controllerInstance, { $scope: scope, $element: $element }));\n\n $element.data('$ngControllerController', controllerInstance);\n $element.children().data('$ngControllerController', controllerInstance);\n\n registerControllerCallbacks($q, $transitions, controllerInstance, scope, cfg);\n }\n\n // Wait for the component to appear in the DOM\n if (isString(cfg.viewDecl.component)) {\n const cmp = cfg.viewDecl.component;\n const kebobName = kebobString(cmp);\n const tagRegexp = new RegExp(`^(x-|data-)?${kebobName}$`, 'i');\n\n const getComponentController = () => {\n const directiveEl = [].slice.call($element[0].children)\n .filter((el: Element) => el && el.tagName && tagRegexp.exec(el.tagName)) ;\n\n return directiveEl && angular.element(directiveEl).data(`$${cmp}Controller`);\n };\n\n const deregisterWatch = scope.$watch(getComponentController, function(ctrlInstance) {\n if (!ctrlInstance) return;\n registerControllerCallbacks($q, $transitions, ctrlInstance, scope, cfg);\n deregisterWatch();\n });\n }\n\n link(scope);\n };\n },\n };\n}\n\n/** @hidden */\nconst hasComponentImpl = typeof (angular as any).module('ui.router')['component'] === 'function';\n/** @hidden incrementing id */\nlet _uiCanExitId = 0;\n\n/** @hidden TODO: move these callbacks to $view and/or `/hooks/components.ts` or something */\nfunction registerControllerCallbacks($q: angular.IQService,\n $transitions: TransitionService,\n controllerInstance: Ng1Controller,\n $scope: IScope,\n cfg: Ng1ViewConfig) {\n // Call $onInit() ASAP\n if (isFunction(controllerInstance.$onInit) && !(cfg.viewDecl.component && hasComponentImpl)) {\n controllerInstance.$onInit();\n }\n\n const viewState: Ng1StateDeclaration = tail(cfg.path).state.self;\n\n const hookOptions: HookRegOptions = { bind: controllerInstance };\n // Add component-level hook for onParamsChange\n if (isFunction(controllerInstance.uiOnParamsChanged)) {\n const resolveContext: ResolveContext = new ResolveContext(cfg.path);\n const viewCreationTrans = resolveContext.getResolvable('$transition$').data;\n\n // Fire callback on any successful transition\n const paramsUpdated = ($transition$: Transition) => {\n // Exit early if the $transition$ is the same as the view was created within.\n // Exit early if the $transition$ will exit the state the view is for.\n if ($transition$ === viewCreationTrans || $transition$.exiting().indexOf(viewState as StateDeclaration) !== -1) return;\n\n const toParams = $transition$.params('to') as TypedMap;\n const fromParams = $transition$.params>('from') as TypedMap;\n const toSchema: Param[] = $transition$.treeChanges().to.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n const fromSchema: Param[] = $transition$.treeChanges().from.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n\n // Find the to params that have different values than the from params\n const changedToParams = toSchema.filter((param: Param) => {\n const idx = fromSchema.indexOf(param);\n return idx === -1 || !fromSchema[idx].type.equals(toParams[param.id], fromParams[param.id]);\n });\n\n // Only trigger callback if a to param has changed or is new\n if (changedToParams.length) {\n const changedKeys: string[] = changedToParams.map(x => x.id);\n // Filter the params to only changed/new to params. `$transition$.params()` may be used to get all params.\n const newValues = filter(toParams, (val, key) => changedKeys.indexOf(key) !== -1);\n controllerInstance.uiOnParamsChanged(newValues, $transition$);\n }\n };\n $scope.$on('$destroy', $transitions.onSuccess({}, paramsUpdated, hookOptions));\n }\n\n // Add component-level hook for uiCanExit\n if (isFunction(controllerInstance.uiCanExit)) {\n const id = _uiCanExitId++;\n const cacheProp = '_uiCanExitIds';\n\n // Returns true if a redirect transition already answered truthy\n const prevTruthyAnswer = (trans: Transition) =>\n !!trans && (trans[cacheProp] && trans[cacheProp][id] === true || prevTruthyAnswer(trans.redirectedFrom()));\n\n // If a user answered yes, but the transition was later redirected, don't also ask for the new redirect transition\n const wrappedHook = (trans: Transition) => {\n let promise;\n const ids = trans[cacheProp] = trans[cacheProp] || {};\n\n if (!prevTruthyAnswer(trans)) {\n promise = $q.when(controllerInstance.uiCanExit(trans));\n promise.then(val => ids[id] = (val !== false));\n }\n return promise;\n };\n\n const criteria = { exiting: viewState.name };\n $scope.$on('$destroy', $transitions.onBefore(criteria, wrappedHook, hookOptions));\n }\n}\n\nangular.module('ui.router.state').directive('uiView', uiView);\nangular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n", - "/**\n * @hidden\n * @module ng1\n */ /** */\ndeclare var angular;\nimport * as ng_from_import from 'angular';\nconst ng_from_global = angular;\n\nexport const ng = (ng_from_import && ng_from_import.module) ? ng_from_import : ng_from_global;\n", - "/**\n * @coreapi\n * @module core\n */\n/**\n * Matches state names using glob-like pattern strings.\n *\n * Globs can be used in specific APIs including:\n *\n * - [[StateService.is]]\n * - [[StateService.includes]]\n * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n * - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n *\n * A `Glob` string is a pattern which matches state names.\n * Nested state names are split into segments (separated by a dot) when processing.\n * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n *\n * Globs work according to the following rules:\n *\n * ### Exact match:\n *\n * The glob `'A.B'` matches the state named exactly `'A.B'`.\n *\n * | Glob |Matches states named|Does not match state named|\n * |:------------|:--------------------|:---------------------|\n * | `'A'` | `'A'` | `'B'` , `'A.C'` |\n * | `'A.B'` | `'A.B'` | `'A'` , `'A.B.C'` |\n * | `'foo'` | `'foo'` | `'FOO'` , `'foo.bar'`|\n *\n * ### Single star (`*`)\n *\n * A single star (`*`) is a wildcard that matches exactly one segment.\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:---------------------|:--------------------------|\n * | `'*'` | `'A'` , `'Z'` | `'A.B'` , `'Z.Y.X'` |\n * | `'A.*'` | `'A.B'` , `'A.C'` | `'A'` , `'A.B.C'` |\n * | `'A.*.*'` | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n *\n * ### Double star (`**`)\n *\n * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:----------------------------------------------|:----------------------------------|\n * | `'**'` | `'A'` , `'A.B'`, `'Z.Y.X'` | (matches all states) |\n * | `'A.**'` | `'A'` , `'A.B'` , `'A.C.X'` | `'Z.Y.X'` |\n * | `'**.X'` | `'X'` , `'A.X'` , `'Z.Y.X'` | `'A'` , `'A.login.Z'` |\n * | `'A.**.X'` | `'A.X'` , `'A.B.X'` , `'A.B.C.X'` | `'A'` , `'A.B.C'` |\n *\n */\nexport class Glob {\n text: string;\n glob: Array;\n regexp: RegExp;\n\n /** Returns true if the string has glob-like characters in it */\n static is(text: string) {\n return !!/[!,*]+/.exec(text);\n }\n\n /** Returns a glob from the string, or null if the string isn't Glob-like */\n static fromString(text: string) {\n return Glob.is(text) ? new Glob(text) : null;\n }\n\n constructor(text: string) {\n this.text = text;\n this.glob = text.split('.');\n\n const regexpString = this.text.split('.')\n .map(seg => {\n if (seg === '**') return '(?:|(?:\\\\.[^.]*)*)';\n if (seg === '*') return '\\\\.[^.]*';\n return '\\\\.' + seg;\n }).join('');\n\n this.regexp = new RegExp('^' + regexpString + '$');\n }\n\n matches(name: string) {\n return this.regexp.test('.' + name);\n }\n}\n", - "/**\n * @coreapi\n * @module state\n */\n/** for typedoc */\nimport { StateDeclaration, _ViewDeclaration, _StateDeclaration, LazyLoadResult } from './interface';\nimport { defaults, values, find, inherit } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Param } from '../params/param';\nimport { UrlMatcher } from '../url/urlMatcher';\nimport { Resolvable } from '../resolve/resolvable';\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { TargetState } from './targetState';\nimport { Transition } from '../transition/transition';\nimport { Glob } from '../common/glob';\nimport { isObject, isFunction } from '../common/predicates';\n\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nexport class StateObject {\n /** The parent [[StateObject]] */\n public parent: StateObject;\n\n /** The name used to register the state */\n public name: string;\n\n /** Prototypally inherits from [[StateDeclaration.abstract]] */\n public abstract: boolean;\n\n /** Prototypally inherits from [[StateDeclaration.resolve]] */\n public resolve: ({ [key: string]: (string|any[]|Function) }|any[]);\n\n /** A list of [[Resolvable]] objects. The internal representation of [[resolve]]. */\n public resolvables: Resolvable[];\n\n /** Prototypally inherits from [[StateDeclaration.resolvePolicy]] */\n public resolvePolicy: any;\n\n /** A compiled URLMatcher which detects when the state's URL is matched */\n public url: UrlMatcher;\n\n /** The parameters for the state, built from the URL and [[StateDeclaration.params]] */\n public params: { [key: string]: Param };\n\n /**\n * The views for the state.\n * Note: `@uirouter/core` does not register a builder for views.\n * The framework specific code should register a `views` builder.\n */\n public views: { [key: string]: _ViewDeclaration; };\n\n /**\n * The original [[StateDeclaration]] used to build this [[StateObject]].\n * Note: `this` object also prototypally inherits from the `self` declaration object.\n */\n public self: StateDeclaration;\n\n /** The nearest parent [[StateObject]] which has a URL */\n public navigable: StateObject;\n\n /** The parent [[StateObject]] objects from this state up to the root */\n public path: StateObject[];\n\n /**\n * Prototypally inherits from [[StateDeclaration.data]]\n * Note: This is the only field on the [[StateDeclaration]] which is mutated.\n * The definition object's `data` field is replaced with a new object\n * which prototypally inherits from the parent state definition's `data` field.\n */\n public data: any;\n\n /**\n * An object containing the parent States' names as keys and\n * true as their values.\n */\n public includes: { [name: string]: boolean };\n\n /** Prototypally inherits from [[StateDeclaration.onExit]] */\n public onExit: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onRetain]] */\n public onRetain: TransitionStateHookFn;\n /** Prototypally inherits from [[StateDeclaration.onEnter]] */\n public onEnter: TransitionStateHookFn;\n\n /** Prototypally inherits from [[StateDeclaration.lazyLoad]] */\n public lazyLoad: (transition: Transition, state: StateDeclaration) => Promise;\n\n /** Prototypally inherits from [[StateDeclaration.redirectTo]] */\n redirectTo: (\n string |\n (($transition$: Transition) => TargetState) |\n { state: (string|StateDeclaration), params: { [key: string]: any }}\n );\n\n /** @hidden */\n __stateObjectCache: {\n /** Might be null */\n nameGlob?: Glob,\n };\n\n /**\n * Create a state object to put the private/internal implementation details onto.\n * The object's prototype chain looks like:\n * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n *\n * @param stateDecl the user-supplied State Declaration\n * @returns {StateObject} an internal State object\n */\n static create(stateDecl: _StateDeclaration): StateObject {\n stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n\n const state = inherit(inherit(stateDecl, StateObject.prototype)) as StateObject;\n stateDecl.$$state = () => state;\n state.self = stateDecl;\n state.__stateObjectCache = {\n nameGlob: Glob.fromString(state.name), // might return null\n };\n return state;\n }\n\n /** Predicate which returns true if the object is an class with @State() decorator */\n static isStateClass = (stateDecl: _StateDeclaration): stateDecl is ({ new (): StateDeclaration }) =>\n isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n\n /** Predicate which returns true if the object is an internal [[StateObject]] object */\n static isState = (obj: any): obj is StateObject =>\n isObject(obj['__stateObjectCache']);\n\n\n /** @deprecated use State.create() */\n constructor(config?: StateDeclaration) {\n return StateObject.create(config || {});\n }\n\n /**\n * Returns true if the provided parameter is the same state.\n *\n * Compares the identity of the state against the passed value, which is either an object\n * reference to the actual `State` instance, the original definition object passed to\n * `$stateProvider.state()`, or the fully-qualified name.\n *\n * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n * into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n * @returns Returns `true` if `ref` matches the current `State` instance.\n */\n is(ref: StateObject|StateDeclaration|string): boolean {\n return this === ref || this.self === ref || this.fqn() === ref;\n }\n\n /**\n * @deprecated this does not properly handle dot notation\n * @returns Returns a dot-separated name of the state.\n */\n fqn(): string {\n if (!this.parent || !(this.parent instanceof this.constructor)) return this.name;\n const name = this.parent.fqn();\n return name ? name + '.' + this.name : this.name;\n }\n\n /**\n * Returns the root node of this state's tree.\n *\n * @returns The root of this state's tree.\n */\n root(): StateObject {\n return this.parent && this.parent.root() || this;\n }\n\n /**\n * Gets the state's `Param` objects\n *\n * Gets the list of [[Param]] objects owned by the state.\n * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n *\n * @param opts options\n */\n parameters(opts?: { inherit?: boolean, matchingKeys?: any }): Param[] {\n opts = defaults(opts, { inherit: true, matchingKeys: null });\n const inherited = opts.inherit && this.parent && this.parent.parameters() || [];\n return inherited.concat(values(this.params))\n .filter(param => !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id));\n }\n\n /**\n * Returns a single [[Param]] that is owned by the state\n *\n * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n * @param id the name of the [[Param]] to return\n * @param opts options\n */\n parameter(id: string, opts: { inherit?: boolean } = {}): Param {\n return (\n this.url && this.url.parameter(id, opts) ||\n find(values(this.params), propEq('id', id)) ||\n opts.inherit && this.parent && this.parent.parameter(id)\n );\n }\n\n toString() {\n return this.fqn();\n }\n}\n", - "/**\n * This module is a stub for core services such as Dependency Injection or Browser Location.\n * Core services may be implemented by a specific framework, such as ng1 or ng2, or be pure javascript.\n *\n * @module common\n */\n/** for typedoc */\nimport { IInjectable, Obj } from './common';\nimport { Disposable } from '../interface';\nimport { UrlParts } from '../url/interface';\n\nexport let notImplemented = (fnname: string) => () => {\n throw new Error(`${fnname}(): No coreservices implementation for UI-Router is loaded.`);\n};\n\nconst services: CoreServices = {\n $q: undefined,\n $injector: undefined,\n};\n\nexport interface $QLikeDeferred {\n resolve: (val?: any) => void;\n reject: (reason?: any) => void;\n promise: Promise;\n}\n\nexport interface $QLike {\n when(value?: T | PromiseLike): Promise;\n reject(reason: any): Promise;\n defer(): $QLikeDeferred;\n all(promises: { [key: string]: Promise }): Promise;\n all(promises: Promise[]): Promise;\n}\n\nexport interface $InjectorLike {\n strictDi?: boolean;\n get(token: any): any;\n get(token: any): T;\n has(token: any): boolean;\n invoke(fn: IInjectable, context?: any, locals?: Obj): any;\n annotate(fn: IInjectable, strictDi?: boolean): any[];\n}\n\nexport interface CoreServices {\n $q: $QLike;\n $injector: $InjectorLike;\n}\n\nexport interface LocationServices extends Disposable {\n /**\n * Gets the current url string\n *\n * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n *\n * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n * have a base HREF prepended ([[PushStateLocationServices]]).\n *\n * The raw URL in the browser might be:\n *\n * ```\n * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n * ```\n *\n * or\n *\n * ```\n * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n * ```\n *\n * then this method returns:\n *\n * ```\n * /internal/path/123?param1=foo#anchor\n * ```\n *\n *\n * #### Example:\n * ```js\n * locationServices.url(); // \"/some/path?query=value#anchor\"\n * ```\n *\n * @returns the current value of the url, as a string.\n */\n url(): string;\n\n /**\n * Updates the url, or gets the current url\n *\n * Updates the url, changing it to the value in `newurl`\n *\n * #### Example:\n * ```js\n * locationServices.url(\"/some/path?query=value#anchor\", true);\n * ```\n *\n * @param newurl The new value for the URL.\n * This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n * It should not include the protocol, site, port, or base path of an absolute HREF.\n * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n * @return the url (after potentially being processed)\n */\n url(newurl: string, replace?: boolean, state?: any): string;\n\n /**\n * Gets the path part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n *\n * @return the path portion of the url\n */\n path(): string;\n\n /**\n * Gets the search part of the current url as an object\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n *\n * @return the search (querystring) portion of the url, as an object\n */\n search(): { [key: string]: any };\n\n /**\n * Gets the hash part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n *\n * @return the hash (anchor) portion of the url\n */\n hash(): string;\n\n /**\n * Registers a url change handler\n *\n * #### Example:\n * ```js\n * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n * ```\n *\n * @param callback a function that will be called when the url is changing\n * @return a function that de-registers the callback\n */\n onChange(callback: Function): Function;\n}\n\n/**\n * This service returns the location configuration\n *\n * This service returns information about the location configuration.\n * This service is primarily used when building URLs (e.g., for `hrefs`)\n */\nexport interface LocationConfig extends Disposable {\n /**\n * Gets the port, e.g., `80`\n *\n * @return the port number\n */\n port(): number;\n /**\n * Gets the protocol, e.g., `http`\n *\n * @return the protocol\n */\n protocol(): string;\n /**\n * Gets the host, e.g., `localhost`\n *\n * @return the protocol\n */\n host(): string;\n /**\n * Gets the base Href, e.g., `http://localhost/approot/`\n *\n * @return the application's base href\n */\n baseHref(): string;\n /**\n * Returns true when running in pushstate mode\n *\n * @return true when running in pushstate mode\n */\n html5Mode(): boolean;\n /**\n * Gets the hashPrefix (when not running in pushstate mode)\n *\n * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n *\n * @return the hash prefix\n */\n hashPrefix(): string;\n /**\n * Sets the hashPrefix (when not running in pushstate mode)\n *\n * @return the new hash prefix\n */\n hashPrefix(newprefix: string): string;\n}\n\nexport { services };\n", - "/**\n * @module common\n */ /** for typedoc */\n\nexport class Queue {\n constructor(private _items: T[] = [], private _limit: number = null) { }\n\n enqueue(item: T) {\n const items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit) items.shift();\n return item;\n }\n\n dequeue(): T {\n if (this.size())\n return this._items.splice(0, 1)[0];\n }\n\n clear(): Array {\n const current = this._items;\n this._items = [];\n return current;\n }\n\n size(): number {\n return this._items.length;\n }\n\n remove(item: T) {\n const idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n }\n\n peekTail(): T {\n return this._items[this._items.length - 1];\n }\n\n peekHead(): T {\n if (this.size())\n return this._items[0];\n }\n}\n", - "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\n'use strict';\nimport { extend, silentRejection } from '../common/common';\nimport { stringify } from '../common/strings';\nimport { is } from '../common/hof';\n\nexport enum RejectType {\n SUPERSEDED = 2, ABORTED = 3, INVALID = 4, IGNORED = 5, ERROR = 6,\n}\n\n/** @hidden */\nlet id = 0;\n\nexport class Rejection {\n $id = id++;\n type: number;\n message: string;\n detail: any;\n redirected: boolean;\n\n /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n static isRejectionPromise(obj: any): boolean {\n return obj && (typeof obj.then === 'function') && is(Rejection)(obj._transitionRejection);\n }\n\n /** Returns a Rejection due to transition superseded */\n static superseded(detail?: any, options?: any): Rejection {\n const message = 'The transition has been superseded by a different transition';\n const rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n if (options && options.redirected) {\n rejection.redirected = true;\n }\n return rejection;\n }\n\n /** Returns a Rejection due to redirected transition */\n static redirected(detail?: any): Rejection {\n return Rejection.superseded(detail, { redirected: true });\n }\n\n /** Returns a Rejection due to invalid transition */\n static invalid(detail?: any): Rejection {\n const message = 'This transition is invalid';\n return new Rejection(RejectType.INVALID, message, detail);\n }\n\n /** Returns a Rejection due to ignored transition */\n static ignored(detail?: any): Rejection {\n const message = 'The transition was ignored';\n return new Rejection(RejectType.IGNORED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static aborted(detail?: any): Rejection {\n const message = 'The transition has been aborted';\n return new Rejection(RejectType.ABORTED, message, detail);\n }\n\n /** Returns a Rejection due to aborted transition */\n static errored(detail?: any): Rejection {\n const message = 'The transition errored';\n return new Rejection(RejectType.ERROR, message, detail);\n }\n\n /**\n * Returns a Rejection\n *\n * Normalizes a value as a Rejection.\n * If the value is already a Rejection, returns it.\n * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n *\n * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n */\n static normalize(detail?: Rejection | Error | any): Rejection {\n return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n }\n\n constructor(type: number, message?: string, detail?: any) {\n this.type = type;\n this.message = message;\n this.detail = detail;\n }\n\n toString() {\n const detailString = (d: any) =>\n d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d);\n const detail = detailString(this.detail);\n const { $id, type, message } = this;\n return `Transition Rejection($id: ${$id} type: ${type}, message: ${message}, detail: ${detail})`;\n }\n\n toPromise(): Promise {\n return extend(silentRejection(this), { _transitionRejection: this });\n }\n}\n", - "/**\n * @coreapi\n * @module transition\n */ /** for typedoc */\nimport { StateDeclaration } from '../state/interface';\nimport { Predicate } from '../common/common';\n\nimport { Transition } from './transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { TargetState } from '../state/targetState';\nimport { RegisteredHook } from './hookRegistry';\n\n/**\n * The TransitionOptions object can be used to change the behavior of a transition.\n *\n * It is passed as the third argument to [[StateService.go]], [[StateService.transitionTo]].\n * It can also be used with a `uiSref`.\n */\nexport interface TransitionOptions {\n /**\n * This option changes how the Transition interacts with the browser's location bar (URL).\n *\n * - If `true`, it will update the url in the location bar.\n * - If `false`, it will not update the url in the location bar.\n * - If it is the string `\"replace\"`, it will update the url and also replace the last history record.\n *\n * @default `true`\n */\n location ?: (boolean|string);\n\n /**\n * When transitioning to relative path (e.g '`^`'), this option defines which state to be relative from.\n * @default `$state.current`\n */\n relative ?: (string|StateDeclaration|StateObject);\n\n /**\n * This option sets whether or not the transition's parameter values should be inherited from\n * the current parameter values.\n *\n * - If `true`, it will inherit parameter values from the current parameter values.\n * - If `false`, only the parameters which are provided to `transitionTo` will be used.\n *\n * @default `false`\n */\n inherit ?: boolean;\n\n /**\n * @deprecated\n */\n notify ?: boolean;\n\n /**\n * This option may be used to force states which are currently active to reload.\n *\n * During a normal transition, a state is \"retained\" if:\n * - It was previously active\n * - The state's parameter values have not changed\n * - All the parent states' parameter values have not changed\n *\n * Forcing a reload of a state will cause it to be exited and entered, which will:\n * - Refetch that state's resolve data\n * - Exit the state (onExit hook)\n * - Re-enter the state (onEnter hook)\n * - Re-render the views (controllers and templates)\n *\n * - When `true`, the destination state (and all parent states) will be reloaded.\n * - When it is a string and is the name of a state, or when it is a State object,\n * that state and any children states will be reloaded.\n *\n * @default `false`\n */\n reload ?: (boolean|string|StateDeclaration|StateObject);\n /**\n * You can define your own Transition Options inside this property and use them, e.g., from a Transition Hook\n */\n custom ?: any;\n /** @internalapi */\n reloadState ?: (StateObject);\n /** @internalapi\n * If this transition is a redirect, this property should be the original Transition (which was redirected to this one)\n */\n redirectedFrom?: Transition;\n /** @internalapi */\n current ?: () => Transition;\n /** @internalapi */\n source ?: 'sref' | 'url' | 'redirect' | 'otherwise' | 'unknown';\n}\n\n/** @internalapi */\nexport interface TransitionHookOptions {\n current ?: () => Transition; // path?\n transition ?: Transition;\n hookType ?: string;\n target ?: any;\n traceData ?: any;\n bind ?: any;\n stateHook ?: boolean;\n}\n\n/**\n * TreeChanges encapsulates the various Paths that are involved in a Transition.\n *\n * Get a TreeChanges object using [[Transition.treeChanges]]\n *\n * A UI-Router Transition is from one Path in a State Tree to another Path. For a given Transition,\n * this object stores the \"to\" and \"from\" paths, as well as subsets of those: the \"retained\",\n * \"exiting\" and \"entering\" paths.\n *\n * Each path in TreeChanges is an array of [[PathNode]] objects. Each PathNode in the array corresponds to a portion\n * of a nested state.\n *\n * For example, if you had a nested state named `foo.bar.baz`, it would have three\n * portions, `foo, bar, baz`. If you transitioned **to** `foo.bar.baz` and inspected the [[TreeChanges.to]]\n * Path, you would find a node in the array for each portion: `foo`, `bar`, and `baz`.\n *\n * ---\n *\n * @todo show visual state tree\n */\nexport interface TreeChanges {\n /** @nodoc */\n [key: string]: PathNode[];\n\n /** The path of nodes in the state tree that the transition is coming *from* */\n from: PathNode[];\n\n /** The path of nodes in the state tree that the transition is going *to* */\n to: PathNode[];\n\n /**\n * The path of active nodes that the transition is retaining.\n *\n * These nodes are neither exited, nor entered.\n * Before and after the transition is successful, these nodes are active.\n */\n retained: PathNode[];\n\n /**\n * The path of previously active nodes that the transition is exiting.\n *\n * After the Transition is successful, these nodes are no longer active.\n *\n * Note that a state that is being reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n exiting: PathNode[];\n\n /**\n * The path of nodes that the transition is entering.\n *\n * After the Transition is successful, these nodes will be active.\n * Because they are entering, they have their resolves fetched, `onEnter` hooks run, and their views\n * (component(s) or controller(s)+template(s)) refreshed.\n *\n * Note that a state that is reloaded (due to parameter values changing, or `reload: true`) may be in both the\n * `exiting` and `entering` paths.\n */\n entering: PathNode[];\n}\n\nexport type IHookRegistration = (matchCriteria: HookMatchCriteria, callback: HookFn, options?: HookRegOptions) => Function;\n\n/**\n * The signature for Transition Hooks.\n *\n * Transition hooks are callback functions that hook into the lifecycle of transitions.\n * As a transition runs, it reaches certain lifecycle events.\n * As each event occurs, the hooks which are registered for the event are called (in priority order).\n *\n * A transition hook may alter a Transition by returning a [[HookResult]].\n *\n * #### See:\n *\n * - [[IHookRegistry.onBefore]]\n * - [[IHookRegistry.onStart]]\n * - [[IHookRegistry.onFinish]]\n * - [[IHookRegistry.onSuccess]]\n * - [[IHookRegistry.onError]]\n *\n * @param transition the current [[Transition]]\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n *\n */\nexport interface TransitionHookFn {\n (transition: Transition): HookResult;\n}\n\n/**\n * The signature for Transition State Hooks.\n *\n * A function which hooks into a lifecycle event for a specific state.\n *\n * Transition State Hooks are callback functions that hook into the lifecycle events of specific states during a transition.\n * As a transition runs, it may exit some states, retain (keep) states, and enter states.\n * As each lifecycle event occurs, the hooks which are registered for the event and that state are called (in priority order).\n *\n * #### See:\n *\n * - [[IHookRegistry.onExit]]\n * - [[IHookRegistry.onRetain]]\n * - [[IHookRegistry.onEnter]]\n *\n * @param transition the current [[Transition]]\n * @param state the [[StateObject]] that the hook is bound to\n * @param injector (for ng1 or ng2 only) the injector service\n *\n * @returns a [[HookResult]] which may alter the transition\n */\nexport interface TransitionStateHookFn {\n (transition: Transition, state: StateDeclaration): HookResult;\n}\n\n/**\n * The signature for Transition onCreate Hooks.\n *\n * Transition onCreate Hooks are callbacks that allow customization or preprocessing of\n * a Transition before it is returned from [[TransitionService.create]]\n *\n * @param transition the [[Transition]] that was just created\n * @return a [[Transition]] which will then be returned from [[TransitionService.create]]\n */\nexport interface TransitionCreateHookFn {\n (transition: Transition): void;\n}\n\nexport type HookFn = (TransitionHookFn|TransitionStateHookFn|TransitionCreateHookFn);\n\n/**\n * The return value of a [[TransitionHookFn]] or [[TransitionStateHookFn]]\n *\n * When returned from a [[TransitionHookFn]] or [[TransitionStateHookFn]], these values alter the running [[Transition]]:\n *\n * - `false`: the transition will be cancelled.\n * - [[TargetState]]: the transition will be redirected to the new target state (see: [[StateService.target]])\n * - `Promise`: the transition will wait for the promise to resolve or reject\n * - If the promise is rejected (or resolves to `false`), the transition will be cancelled\n * - If the promise resolves to a [[TargetState]], the transition will be redirected\n * - If the promise resolves to anything else, the transition will resume\n * - Anything else: the transition will resume\n */\nexport type HookResult = (boolean | TargetState | void | Promise);\n\n/**\n * These options may be provided when registering a Transition Hook (such as `onStart`)\n */\nexport interface HookRegOptions {\n /**\n * Sets the priority of the registered hook\n *\n * Hooks of the same type (onBefore, onStart, etc) are invoked in priority order. A hook with a higher priority\n * is invoked before a hook with a lower priority.\n *\n * The default hook priority is 0\n */\n priority?: number;\n\n /**\n * Specifies what `this` is bound to during hook invocation.\n */\n bind?: any;\n\n /**\n * Limits the number of times that the hook will be invoked.\n * Once the hook has been invoked this many times, it is automatically deregistered.\n */\n invokeLimit?: number;\n}\n\n/**\n * This interface specifies the api for registering Transition Hooks. Both the\n * [[TransitionService]] and also the [[Transition]] object itself implement this interface.\n * Note: the Transition object only allows hooks to be registered before the Transition is started.\n */\nexport interface IHookRegistry {\n /** @hidden place to store the hooks */\n _registeredHooks: { [key: string]: RegisteredHook[] };\n\n /**\n * Registers a [[TransitionHookFn]], called *before a transition starts*.\n *\n * Registers a transition lifecycle hook, which is invoked before a transition even begins.\n * This hook can be useful to implement logic which prevents a transition from even starting, such\n * as authentication, redirection\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onBefore` hooks are invoked *before a Transition starts*.\n * No resolves have been fetched yet.\n * Each `onBefore` hook is invoked synchronously, in the same call stack as [[StateService.transitionTo]].\n * The registered `onBefore` hooks are invoked in priority order.\n *\n * Note: during the `onBefore` phase, additional hooks can be added to the specific [[Transition]] instance.\n * These \"on-the-fly\" hooks only affect the currently running transition..\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * If any hook modifies the transition *synchronously* (by throwing, returning `false`, or returning\n * a [[TargetState]]), the remainder of the hooks are skipped.\n * If a hook returns a promise, the remainder of the `onBefore` hooks are still invoked synchronously.\n * All promises are resolved, and processed asynchronously before the `onStart` phase of the Transition.\n *\n * ### Examples\n *\n * #### Default Substate\n *\n * This example redirects any transition from 'home' to 'home.dashboard'. This is commonly referred to as a\n * \"default substate\".\n *\n * @example\n * ```js\n * // ng2\n * transitionService.onBefore({ to: 'home' }, (trans: Transition) =>\n * trans.router.stateService.target(\"home.dashboard\"));\n * ```\n *\n * #### Data Driven Default Substate\n *\n * This example provides data-driven default substate functionality. It matches on a transition to any state\n * which has `defaultSubstate: \"some.sub.state\"` defined. See: [[Transition.to]] which returns the \"to state\"\n * definition.\n *\n * @example\n * ```js\n * // ng1\n * // state declaration\n * {\n * name: 'home',\n * template: '
    ',\n * defaultSubstate: 'home.dashboard'\n * }\n *\n * var criteria = {\n * to: function(state) {\n * return state.defaultSubstate != null;\n * }\n * }\n *\n * $transitions.onBefore(criteria, function(trans: Transition) {\n * var substate = trans.to().defaultSubstate;\n * return trans.router.stateService.target(substate);\n * });\n * ```\n *\n *\n * #### Require authentication\n *\n * This example cancels a transition to a state which requires authentication, if the user is not currently authenticated.\n *\n * This example assumes a state tree where all states which require authentication are children of a parent `'requireauth'` state.\n * This example assumes `MyAuthService` synchronously returns a boolean from `isAuthenticated()`.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onBefore( { to: 'requireauth.**' }, function(trans) {\n * var myAuthService = trans.injector().get('MyAuthService');\n * // If isAuthenticated returns false, the transition is cancelled.\n * return myAuthService.isAuthenticated();\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @returns a function which deregisters the hook.\n */\n onBefore(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called when a transition starts.\n *\n * Registers a transition lifecycle hook, which is invoked as a transition starts running.\n * This hook can be useful to perform some asynchronous action before completing a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onStart` hooks are invoked asynchronously when the Transition starts running.\n * This happens after the `onBefore` phase is complete.\n * At this point, the Transition has not yet exited nor entered any states.\n * The registered `onStart` hooks are invoked in priority order.\n *\n * Note: A built-in `onStart` hook with high priority is used to fetch any eager resolve data.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Example\n *\n * #### Login during transition\n *\n * This example intercepts any transition to a state which requires authentication, when the user is\n * not currently authenticated. It allows the user to authenticate asynchronously, then resumes the\n * transition. If the user did not authenticate successfully, it redirects to the \"guest\" state, which\n * does not require authentication.\n *\n * This example assumes:\n * - a state tree where all states which require authentication are children of a parent `'auth'` state.\n * - `MyAuthService.isAuthenticated()` synchronously returns a boolean.\n * - `MyAuthService.authenticate()` presents a login dialog, and returns a promise which is resolved\n * or rejected, whether or not the login attempt was successful.\n *\n * #### Example:\n * ```js\n * // ng1\n * $transitions.onStart( { to: 'auth.**' }, function(trans) {\n * var $state = trans.router.stateService;\n * var MyAuthService = trans.injector().get('MyAuthService');\n *\n * // If the user is not authenticated\n * if (!MyAuthService.isAuthenticated()) {\n *\n * // Then return a promise for a successful login.\n * // The transition will wait for this promise to settle\n *\n * return MyAuthService.authenticate().catch(function() {\n *\n * // If the authenticate() method failed for whatever reason,\n * // redirect to a 'guest' state which doesn't require auth.\n * return $state.target(\"guest\");\n * });\n * }\n * });\n * ```\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onStart(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is entered.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being entered.\n *\n * Since this hook is run only when the specific state is being *entered*, it can be useful for\n * performing tasks when entering a submodule/feature area such as initializing a stateful service,\n * or for guarding access to a submodule/feature area.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onEnter` hooks generally specify `{ entering: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onEnter` hooks are invoked when the Transition is entering a state.\n * States are entered after the `onRetain` phase is complete.\n * If more than one state is being entered, the parent state is entered first.\n * The registered `onEnter` hooks for a state are invoked in priority order.\n *\n * Note: A built-in `onEnter` hook with high priority is used to fetch lazy resolve data for states being entered.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onEnter` hooks using the [[TransitionService]], you may define an `onEnter` hook\n * directly on a state declaration (see: [[StateDeclaration.onEnter]]).\n *\n *\n * ### Examples\n *\n * #### Audit Log\n *\n * This example uses a service to log that a user has entered the admin section of an app.\n * This assumes that there are substates of the \"admin\" state, such as \"admin.users\", \"admin.pages\", etc.\n * @example\n * ```\n *\n * $transitions.onEnter({ entering: 'admin' }, function(transition, state) {\n * var AuditService = trans.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * ```\n *\n * #### Audit Log (inside a state declaration)\n *\n * The `onEnter` inside this state declaration is syntactic sugar for the previous Audit Log example.\n * ```\n * {\n * name: 'admin',\n * component: 'admin',\n * onEnter: function($transition$, $state$) {\n * var AuditService = $transition$.injector().get('AuditService');\n * AuditService.log(\"Entered \" + state.name + \" module while transitioning to \" + transition.to().name);\n * }\n * }\n * ```\n *\n * Note: A state declaration's `onEnter` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onEnter(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is retained/kept.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) for\n * a specific state that was previously active will remain active (is not being entered nor exited).\n *\n * This hook is invoked when a state is \"retained\" or \"kept\".\n * It means the transition is coming *from* a substate of the retained state *to* a substate of the retained state.\n * This hook can be used to perform actions when the user moves from one substate to another, such as between steps in a wizard.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onRetain` hooks generally specify `{ retained: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onRetain` hooks are invoked after any `onExit` hooks have been fired.\n * If more than one state is retained, the child states' `onRetain` hooks are invoked first.\n * The registered `onRetain` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onRetain` hooks using the [[TransitionService]], you may define an `onRetain` hook\n * directly on a state declaration (see: [[StateDeclaration.onRetain]]).\n *\n * Note: A state declaration's `onRetain` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onRetain(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionStateHookFn]], called when a specific state is exited.\n *\n * Registers a lifecycle hook, which is invoked (during a transition) when a specific state is being exited.\n *\n * Since this hook is run only when the specific state is being *exited*, it can be useful for\n * performing tasks when leaving a submodule/feature area such as cleaning up a stateful service,\n * or for preventing the user from leaving a state or submodule until some criteria is satisfied.\n *\n * See [[TransitionStateHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * `onExit` hooks generally specify `{ exiting: 'somestate' }`.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onExit` hooks are invoked when the Transition is exiting a state.\n * States are exited after any `onStart` phase is complete.\n * If more than one state is being exited, the child states are exited first.\n * The registered `onExit` hooks for a state are invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * ### Inside a state declaration\n *\n * Instead of registering `onExit` hooks using the [[TransitionService]], you may define an `onExit` hook\n * directly on a state declaration (see: [[StateDeclaration.onExit]]).\n *\n * Note: A state declaration's `onExit` function is injected for Angular 1 only.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onExit(matchCriteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called *just before a transition finishes*.\n *\n * Registers a transition lifecycle hook, which is invoked just before a transition finishes.\n * This hook is a last chance to cancel or redirect a transition.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onFinish` hooks are invoked after the `onEnter` phase is complete.\n * These hooks are invoked just before the transition is \"committed\".\n * Each hook is invoked in priority order.\n *\n * ### Return value\n *\n * The hook's return value can be used to pause, cancel, or redirect the current Transition.\n * See [[HookResult]] for more information.\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onFinish(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a successful transition completed.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition successfully completes.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * `onSuccess` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If the Transition is successful and its promise is resolved, then the `onSuccess` hooks are invoked.\n * Since these hooks are run after the transition is over, their return value is ignored.\n * The `onSuccess` hooks are invoked in priority order.\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onSuccess(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Registers a [[TransitionHookFn]], called after a transition has errored.\n *\n * Registers a transition lifecycle hook, which is invoked after a transition has been rejected for any reason.\n *\n * See [[TransitionHookFn]] for the signature of the function.\n *\n * The [[HookMatchCriteria]] is used to determine which Transitions the hook should be invoked for.\n * To match all Transitions, use an empty criteria object `{}`.\n *\n * ### Lifecycle\n *\n * The `onError` hooks are chained off the Transition's promise (see [[Transition.promise]]).\n * If a Transition fails, its promise is rejected and the `onError` hooks are invoked.\n * The `onError` hooks are invoked in priority order.\n *\n * Since these hooks are run after the transition is over, their return value is ignored.\n *\n * A transition \"errors\" if it was started, but failed to complete (for any reason).\n * A *non-exhaustive list* of reasons a transition can error:\n *\n * - A transition was cancelled because a new transition started while it was still running (`Transition superseded`)\n * - A transition was cancelled by a Transition Hook returning false\n * - A transition was redirected by a Transition Hook returning a [[TargetState]]\n * - A Transition Hook or resolve function threw an error\n * - A Transition Hook returned a rejected promise\n * - A resolve function returned a rejected promise\n *\n * To check the failure reason, inspect the return value of [[Transition.error]].\n *\n * Note: `onError` should be used for targeted error handling, or error recovery.\n * For simple catch-all error reporting, use [[StateService.defaultErrorHandler]].\n *\n * ### Return value\n *\n * Since the Transition is already completed, the hook's return value is ignored\n *\n * @param matchCriteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be injected and invoked.\n * @returns a function which deregisters the hook.\n */\n onError(matchCriteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function;\n\n /**\n * Returns all the registered hooks of a given `hookName` type\n *\n * #### Example:\n * ```\n * $transitions.getHooks(\"onEnter\")\n * ```\n */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/** A predicate type which tests if a [[StateObject]] passes some test. Returns a boolean. */\nexport type IStateMatch = Predicate;\n\n/**\n * This object is used to configure whether or not a Transition Hook is invoked for a particular transition,\n * based on the Transition's \"to state\" and \"from state\".\n *\n * Each property (`to`, `from`, `exiting`, `retained`, and `entering`) can be a state [[Glob]] string,\n * a boolean, or a function that takes a state and returns a boolean (see [[HookMatchCriterion]])\n *\n * All properties are optional. If any property is omitted, it is replaced with the value `true`, and always matches.\n * To match any transition, use an empty criteria object `{}`.\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from the `parent` state and going to the `parent.child` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.child'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any substate of `parent` and going directly to the `parent` state.\n * var match = {\n * to: 'parent',\n * from: 'parent.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any substate of `mymodule`\n * var match = {\n * to: 'mymodule.**'\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition coming from any state and going to any state that has `data.authRequired`\n * // set to a truthy value.\n * var match = {\n * to: function(state) {\n * return state.data != null && state.data.authRequired === true;\n * }\n * }\n * ```\n *\n * #### Example:\n * ```js\n * // This matches a transition that is exiting `parent.child`\n * var match = {\n * exiting: 'parent.child'\n * }\n * ```\n */\nexport interface HookMatchCriteria {\n [key: string]: HookMatchCriterion | undefined;\n\n /** A [[HookMatchCriterion]] to match the destination state */\n to?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match the original (from) state */\n from?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be exiting */\n exiting?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be retained */\n retained?: HookMatchCriterion;\n /** A [[HookMatchCriterion]] to match any state that would be entering */\n entering?: HookMatchCriterion;\n}\n\nexport interface IMatchingNodes {\n [key: string]: PathNode[];\n\n to: PathNode[];\n from: PathNode[];\n exiting: PathNode[];\n retained: PathNode[];\n entering: PathNode[];\n}\n\n/** @hidden */\nexport interface RegisteredHooks {\n [key: string]: RegisteredHook[];\n}\n\n/** @hidden */\nexport interface PathTypes {\n [key: string]: PathType;\n\n to: PathType;\n from: PathType;\n exiting: PathType;\n retained: PathType;\n entering: PathType;\n}\n\n/** @hidden */\nexport interface PathType {\n name: string;\n scope: TransitionHookScope;\n}\n\n/**\n * Hook Criterion used to match a transition.\n *\n * A [[Glob]] string that matches the name of a state.\n *\n * Or, a function with the signature `function(state) { return matches; }`\n * which should return a boolean to indicate if a state matches.\n *\n * Or, `true` to always match\n */\nexport type HookMatchCriterion = (string|IStateMatch|boolean);\n\nexport enum TransitionHookPhase { CREATE, BEFORE, RUN, SUCCESS, ERROR }\nexport enum TransitionHookScope { TRANSITION, STATE }\n", - "/**\n * @coreapi\n * @module state\n */ /** for typedoc */\n\nimport { StateDeclaration, StateOrName, TargetStateDef } from './interface';\nimport { TransitionOptions } from '../transition/interface';\nimport { StateObject } from './stateObject';\nimport { isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { extend } from '../common';\nimport { StateRegistry } from './stateRegistry';\nimport { RawParams } from '../params';\n\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nexport class TargetState {\n private _definition: StateObject;\n private _params: RawParams;\n private _options: TransitionOptions;\n\n /** Returns true if the object has a state property that might be a state or state name */\n static isDef = (obj): obj is TargetStateDef =>\n obj && obj.state && (isString(obj.state) || isString(obj.state.name));\n\n /**\n * The TargetState constructor\n *\n * Note: Do not construct a `TargetState` manually.\n * To create a `TargetState`, use the [[StateService.target]] factory method.\n *\n * @param _stateRegistry The StateRegistry to use to look up the _definition\n * @param _identifier An identifier for a state.\n * Either a fully-qualified state name, or the object used to define the state.\n * @param _params Parameters for the target state\n * @param _options Transition options.\n *\n * @internalapi\n */\n constructor(\n private _stateRegistry: StateRegistry,\n private _identifier: StateOrName,\n _params?: RawParams,\n _options?: TransitionOptions,\n ) {\n this._identifier = _identifier;\n this._params = extend({}, _params || {});\n this._options = extend({}, _options || {});\n this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n }\n\n /** The name of the state this object targets */\n name(): string {\n return this._definition && this._definition.name || this._identifier;\n }\n\n /** The identifier used when creating this TargetState */\n identifier(): StateOrName {\n return this._identifier;\n }\n\n /** The target parameter values */\n params(): RawParams {\n return this._params;\n }\n\n /** The internal state object (if it was found) */\n $state(): StateObject {\n return this._definition;\n }\n\n /** The internal state declaration (if it was found) */\n state(): StateDeclaration {\n return this._definition && this._definition.self;\n }\n\n /** The target options */\n options() {\n return this._options;\n }\n\n /** True if the target state was found */\n exists(): boolean {\n return !!(this._definition && this._definition.self);\n }\n\n /** True if the object is valid */\n valid(): boolean {\n return !this.error();\n }\n\n /** If the object is invalid, returns the reason why */\n error(): string {\n const base = this.options().relative;\n if (!this._definition && !!base) {\n const stateName = base.name ? base.name : base;\n return `Could not resolve '${this.name()}' from state '${stateName}'`;\n }\n if (!this._definition)\n return `No such state '${this.name()}'`;\n if (!this._definition.self)\n return `State '${this.name()}' has an invalid definition`;\n }\n\n toString() {\n return `'${this.name()}'${stringify(this.params())}`;\n }\n\n /**\n * Returns a copy of this TargetState which targets a different state.\n * The new TargetState has the same parameter values and transition options.\n *\n * @param state The new state that should be targeted\n */\n withState(state: StateOrName): TargetState {\n return new TargetState(this._stateRegistry, state, this._params, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified parameter values.\n *\n * @param params the new parameter values to use\n * @param replace When false (default) the new parameter values will be merged with the current values.\n * When true the parameter values will be used instead of the current values.\n */\n withParams(params: RawParams, replace = false): TargetState {\n const newParams: RawParams = replace ? params : extend({}, this._params, params);\n return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n }\n\n /**\n * Returns a copy of this TargetState, using the specified Transition Options.\n *\n * @param options the new options to use\n * @param replace When false (default) the new options will be merged with the current options.\n * When true the options will be used instead of the current options.\n */\n withOptions(options: TransitionOptions, replace = false): TargetState {\n const newOpts = replace ? options : extend({}, this._options, options);\n return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n }\n}\n", - "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport { TransitionHookOptions, HookResult, TransitionHookPhase } from './interface';\nimport { defaults, noop, silentRejection } from '../common/common';\nimport { fnToString, maxLength } from '../common/strings';\nimport { isPromise } from '../common/predicates';\nimport { is, parse } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { Rejection } from './rejectFactory';\nimport { TargetState } from '../state/targetState';\nimport { Transition } from './transition';\nimport { TransitionEventType } from './transitionEventType';\nimport { RegisteredHook } from './hookRegistry';\nimport { StateDeclaration } from '../state/interface';\n\nconst defaultOptions: TransitionHookOptions = {\n current: noop,\n transition: null,\n traceData: {},\n bind: null,\n};\n\nexport type GetResultHandler = (hook: TransitionHook) => ResultHandler;\nexport type GetErrorHandler = (hook: TransitionHook) => ErrorHandler;\n\nexport type ResultHandler = (result: HookResult) => Promise;\nexport type ErrorHandler = (error: any) => Promise;\n\n/** @hidden */\nexport class TransitionHook {\n type: TransitionEventType;\n\n /**\n * These GetResultHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static HANDLE_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) =>\n hook.handleHookResult(result);\n\n /**\n * If the result is a promise rejection, log it.\n * Otherwise, ignore the result.\n */\n static LOG_REJECTED_RESULT: GetResultHandler = (hook: TransitionHook) => (result: HookResult) => {\n isPromise(result) && result.catch(err =>\n hook.logError(Rejection.normalize(err)));\n return undefined;\n }\n\n /**\n * These GetErrorHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n */\n static LOG_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n hook.logError(error);\n\n static REJECT_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) =>\n silentRejection(error);\n\n static THROW_ERROR: GetErrorHandler = (hook: TransitionHook) => (error: any) => {\n throw error;\n }\n\n /**\n * Chains together an array of TransitionHooks.\n *\n * Given a list of [[TransitionHook]] objects, chains them together.\n * Each hook is invoked after the previous one completes.\n *\n * #### Example:\n * ```js\n * var hooks: TransitionHook[] = getHooks();\n * let promise: Promise = TransitionHook.chain(hooks);\n *\n * promise.then(handleSuccess, handleError);\n * ```\n *\n * @param hooks the list of hooks to chain together\n * @param waitFor if provided, the chain is `.then()`'ed off this promise\n * @returns a `Promise` for sequentially invoking the hooks (in order)\n */\n static chain(hooks: TransitionHook[], waitFor?: Promise): Promise {\n // Chain the next hook off the previous\n const createHookChainR = (prev: Promise, nextHook: TransitionHook) =>\n prev.then(() => nextHook.invokeHook());\n return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n }\n\n\n /**\n * Invokes all the provided TransitionHooks, in order.\n * Each hook's return value is checked.\n * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n * If no hook returns a promise, then all hooks are processed synchronously.\n *\n * @param hooks the list of TransitionHooks to invoke\n * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n *\n * @returns a promise for the async result, or the result of the callback\n */\n static invokeHooks(hooks: TransitionHook[], doneCallback: (result?: HookResult) => T): Promise | T {\n for (let idx = 0; idx < hooks.length; idx++) {\n const hookResult = hooks[idx].invokeHook();\n\n if (isPromise(hookResult)) {\n const remainingHooks = hooks.slice(idx + 1);\n\n return TransitionHook.chain(remainingHooks, hookResult)\n .then(doneCallback);\n }\n }\n\n return doneCallback();\n }\n\n /**\n * Run all TransitionHooks, ignoring their return value.\n */\n static runAllHooks(hooks: TransitionHook[]): void {\n hooks.forEach(hook => hook.invokeHook());\n }\n\n constructor(private transition: Transition,\n private stateContext: StateDeclaration,\n private registeredHook: RegisteredHook,\n private options: TransitionHookOptions) {\n this.options = defaults(options, defaultOptions);\n this.type = registeredHook.eventType;\n }\n\n private isSuperseded = () =>\n this.type.hookPhase === TransitionHookPhase.RUN && !this.options.transition.isActive();\n\n logError(err): any {\n this.transition.router.stateService.defaultErrorHandler()(err);\n }\n\n invokeHook(): Promise | void {\n const hook = this.registeredHook;\n if (hook._deregistered) return;\n\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n const options = this.options;\n trace.traceHookInvocation(this, this.transition, options);\n\n const invokeCallback = () =>\n hook.callback.call(options.bind, this.transition, this.stateContext);\n\n const normalizeErr = err =>\n Rejection.normalize(err).toPromise();\n\n const handleError = err =>\n hook.eventType.getErrorHandler(this)(err);\n\n const handleResult = result =>\n hook.eventType.getResultHandler(this)(result);\n\n try {\n const result = invokeCallback();\n\n if (!this.type.synchronous && isPromise(result)) {\n return result.catch(normalizeErr)\n .then(handleResult, handleError);\n } else {\n return handleResult(result);\n }\n } catch (err) {\n // If callback throws (synchronously)\n return handleError(Rejection.normalize(err));\n } finally {\n if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n hook.deregister();\n }\n }\n }\n\n /**\n * This method handles the return value of a Transition Hook.\n *\n * A hook can return false (cancel), a TargetState (redirect),\n * or a promise (which may later resolve to false or a redirect)\n *\n * This also handles \"transition superseded\" -- when a new transition\n * was started while the hook was still running\n */\n handleHookResult(result: HookResult): Promise {\n const notCurrent = this.getNotCurrentRejection();\n if (notCurrent) return notCurrent;\n\n // Hook returned a promise\n if (isPromise(result)) {\n // Wait for the promise, then reprocess with the resulting value\n return result.then(val => this.handleHookResult(val));\n }\n\n trace.traceHookResult(result, this.transition, this.options);\n\n // Hook returned false\n if (result === false) {\n // Abort this Transition\n return Rejection.aborted('Hook aborted transition').toPromise();\n }\n\n const isTargetState = is(TargetState);\n // hook returned a TargetState\n if (isTargetState(result)) {\n // Halt the current Transition and redirect (a new Transition) to the TargetState.\n return Rejection.redirected(result).toPromise();\n }\n }\n\n\n /**\n * Return a Rejection promise if the transition is no longer current due\n * to a stopped router (disposed), or a new transition has started and superseded this one.\n */\n private getNotCurrentRejection() {\n const router = this.transition.router;\n\n // The router is stopped\n if (router._disposed) {\n return Rejection.aborted(`UIRouter instance #${router.$id} has been stopped (disposed)`).toPromise();\n }\n\n if (this.transition._aborted) {\n return Rejection.aborted().toPromise();\n }\n\n // This transition is no longer current.\n // Another transition started while this hook was still running.\n if (this.isSuperseded()) {\n // Abort this transition\n return Rejection.superseded(this.options.current()).toPromise();\n }\n }\n\n toString() {\n const { options, registeredHook } = this;\n const event = parse('traceData.hookType')(options) || 'internal',\n context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown',\n name = fnToString(registeredHook.callback);\n return `${event} context: ${context}, ${maxLength(200, name)}`;\n }\n\n}\n", - "/** @module path */ /** for typedoc */\nimport { extend, applyPairs, find, allTrueR, pairs, arrayTuples } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\n\n/**\n * @internalapi\n *\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nexport class PathNode {\n /** The state being entered, exited, or retained */\n public state: StateObject;\n /** The parameters declared on the state */\n public paramSchema: Param[];\n /** The parameter values that belong to the state */\n public paramValues: { [key: string]: any };\n /** The individual (stateful) resolvable objects that belong to the state */\n public resolvables: Resolvable[];\n /** The state's declared view configuration objects */\n public views: ViewConfig[];\n\n /** Returns a clone of the PathNode */\n static clone(node: PathNode) {\n return new PathNode(node);\n }\n\n /** Creates a copy of a PathNode */\n constructor(node: PathNode);\n /** Creates a new (empty) PathNode for a State */\n constructor(state: StateObject);\n constructor(stateOrNode: any) {\n if (stateOrNode instanceof PathNode) {\n const node: PathNode = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n } else {\n const state: StateObject = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(res => res.clone());\n }\n }\n\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n applyRawParams(params: RawParams): PathNode {\n const getParamVal = (paramDef: Param) => [ paramDef.id, paramDef.value(params[paramDef.id]) ];\n this.paramValues = this.paramSchema.reduce((memo, pDef) => applyPairs(memo, getParamVal(pDef)), {});\n return this;\n }\n\n /** Gets a specific [[Param]] metadata that belongs to the node */\n parameter(name: string): Param {\n return find(this.paramSchema, propEq('id', name));\n }\n\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n equals(node: PathNode, paramsFn?: GetParamsFn): boolean {\n const diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n }\n\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n diff(node: PathNode, paramsFn?: GetParamsFn): Param[] | false {\n if (this.state !== node.state) return false;\n\n const params: Param[] = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n }\n}\n\n/** @hidden */\nexport type GetParamsFn = (pathNode: PathNode) => Param[];\n", - "/** @module path */ /** for typedoc */\n\nimport {\n extend, find, pick, omit, tail, mergeR, values, unnestR, Predicate, inArray, arrayTuples,\n} from '../common/common';\nimport { prop, propEq, not } from '../common/hof';\n\nimport { RawParams } from '../params/interface';\nimport { TreeChanges } from '../transition/interface';\nimport { ViewConfig } from '../view/interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { GetParamsFn, PathNode } from './pathNode';\nimport { ViewService } from '../view/view';\nimport { Param } from '../params/param';\nimport { StateRegistry } from '../state';\n\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nexport class PathUtils {\n /** Given a PathNode[], create an TargetState */\n static makeTargetState(registry: StateRegistry, path: PathNode[]): TargetState {\n const state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n }\n\n static buildPath(targetState: TargetState) {\n const toParams = targetState.params();\n return targetState.$state().path.map(state => new PathNode(state).applyRawParams(toParams));\n }\n\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n static buildToPath(fromPath: PathNode[], targetState: TargetState): PathNode[] {\n const toPath: PathNode[] = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n }\n\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n static applyViewConfigs($view: ViewService, path: PathNode[], states: StateObject[]) {\n // Only apply the viewConfigs to the nodes for the given states\n path.filter(node => inArray(states, node.state)).forEach(node => {\n const viewDecls: _ViewDeclaration[] = values(node.state.views || {});\n const subPath = PathUtils.subPath(path, n => n === node);\n const viewConfigs: ViewConfig[][] = viewDecls.map(view => $view.createViewConfig(subPath, view));\n node.views = viewConfigs.reduce(unnestR, []);\n });\n }\n\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n static inheritParams(fromPath: PathNode[], toPath: PathNode[], toKeys: string[] = []): PathNode[] {\n function nodeParamVals(path: PathNode[], state: StateObject): RawParams {\n const node: PathNode = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n\n const noInherit = fromPath.map(node => node.paramSchema)\n .reduce(unnestR, [])\n .filter(param => !param.inherit)\n .map(prop('id'));\n\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode: PathNode): PathNode {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n let toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n const incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n const fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n const ownParamVals: RawParams = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n }\n\n static nonDynamicParams = (node: PathNode): Param[] =>\n node.state.parameters({ inherit: false })\n .filter(param => !param.dynamic);\n\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n static treeChanges(fromPath: PathNode[], toPath: PathNode[], reloadState: StateObject): TreeChanges {\n const max = Math.min(fromPath.length, toPath.length);\n let keep = 0;\n\n const nodesMatch = (node1: PathNode, node2: PathNode) =>\n node1.equals(node2, PathUtils.nonDynamicParams);\n\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode: PathNode, idx: number): PathNode {\n const cloned = PathNode.clone(retainedNode);\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n\n let from: PathNode[], retained: PathNode[], exiting: PathNode[], entering: PathNode[], to: PathNode[];\n\n from = fromPath;\n retained = from.slice(0, keep).map(applyToParams); // applyToParams to update dynamic params\n exiting = from.slice(keep);\n entering = toPath.slice(keep);\n to = (retained).concat(entering);\n\n return { from, to, retained, exiting, entering };\n }\n\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n static matching(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): PathNode[] {\n let done = false;\n const tuples: PathNode[][] = arrayTuples(pathA, pathB);\n return tuples.reduce((matching, [nodeA, nodeB]) => {\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n }\n\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n static equals(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): boolean {\n return pathA.length === pathB.length &&\n PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n }\n\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n static subPath(path: PathNode[], predicate: Predicate): PathNode[] {\n const node = find(path, predicate);\n const elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n }\n\n /** Gets the raw parameter values from a path */\n static paramValues = (path: PathNode[]) =>\n path.reduce((acc, node) => extend(acc, node.paramValues), {});\n}\n", - "/**\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { extend, equals, inArray, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { ResolvePolicy, ResolvableLiteral, resolvePolicies } from './interface';\n\nimport { ResolveContext } from './resolveContext';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { isNullOrUndefined } from '../common/predicates';\n\n\n// TODO: explicitly make this user configurable\nexport let defaultResolvePolicy: ResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nexport class Resolvable implements ResolvableLiteral {\n token: any;\n policy: ResolvePolicy;\n resolveFn: Function;\n deps: any[];\n\n data: any;\n resolved = false;\n promise: Promise = undefined;\n\n static fromData = (token: any, data: any) =>\n new Resolvable(token, () => data, null, null, data);\n\n /** This constructor creates a Resolvable copy */\n constructor(resolvable: Resolvable)\n\n /** This constructor creates a new Resolvable from the plain old [[ResolvableLiteral]] javascript object */\n constructor(resolvable: ResolvableLiteral)\n\n /**\n * This constructor creates a new `Resolvable`\n *\n * #### Example:\n * ```js\n * var resolvable1 = new Resolvable('mytoken', http => http.get('foo.json').toPromise(), [Http]);\n *\n * var resolvable2 = new Resolvable(UserService, dep => new UserService(dep.data), [SomeDependency]);\n *\n * var resolvable1Clone = new Resolvable(resolvable1);\n * ```\n *\n * @param token The new resolvable's injection token, such as `\"userList\"` (a string) or `UserService` (a class).\n * When this token is used during injection, the resolved value will be injected.\n * @param resolveFn The function that returns the resolved value, or a promise for the resolved value\n * @param deps An array of dependencies, which will be injected into the `resolveFn`\n * @param policy the [[ResolvePolicy]] defines when and how the Resolvable is processed\n * @param data Pre-resolved data. If the resolve value is already known, it may be provided here.\n */\n constructor(token: any, resolveFn: Function, deps?: any[], policy?: ResolvePolicy, data?: any)\n constructor(arg1: any, resolveFn?: Function, deps?: any[], policy?: ResolvePolicy, data?: any) {\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n } else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1)) throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn)) throw new Error('new Resolvable(): resolveFn argument must be a function');\n\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n } else if (isObject(arg1) && arg1.token && isFunction(arg1.resolveFn)) {\n const literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n\n getPolicy(state: StateObject): ResolvePolicy {\n const thisPolicy = this.policy || {};\n const statePolicy = state && state.resolvePolicy || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n }\n\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n resolve(resolveContext: ResolveContext, trans?: Transition) {\n const $q = services.$q;\n\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n const getResolvableDependencies = () =>\n $q.all(resolveContext.getDependencies(this).map(resolvable =>\n resolvable.get(resolveContext, trans))) as Promise;\n\n // Invokes the resolve function passing the resolved dependencies as arguments\n const invokeResolveFn = (resolvedDeps: any[]) =>\n this.resolveFn.apply(null, resolvedDeps);\n\n /**\n * For RXWAIT policy:\n *\n * Given an observable returned from a resolve function:\n * - enables .cache() mode (this allows multicast subscribers)\n * - then calls toPromise() (this triggers subscribe() and thus fetches)\n * - Waits for the promise, then return the cached observable (not the first emitted value).\n */\n const waitForRx = (observable$: any) => {\n const cached = observable$.cache(1);\n return cached.take(1).toPromise().then(() => cached);\n };\n\n // If the resolve policy is RXWAIT, wait for the observable to emit something. otherwise pass through.\n const node: PathNode = resolveContext.findNode(this);\n const state: StateObject = node && node.state;\n const maybeWaitForRx = this.getPolicy(state).async === 'RXWAIT' ? waitForRx : identity;\n\n // After the final value has been resolved, update the state of the Resolvable\n const applyResolvedValue = (resolvedValue: any) => {\n this.data = resolvedValue;\n this.resolved = true;\n trace.traceResolvableResolved(this, trans);\n return this.data;\n };\n\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return this.promise = $q.when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(maybeWaitForRx)\n .then(applyResolvedValue);\n }\n\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n get(resolveContext: ResolveContext, trans?: Transition): Promise {\n return this.promise || this.resolve(resolveContext, trans);\n }\n\n toString() {\n return `Resolvable(token: ${stringify(this.token)}, requires: [${this.deps.map(stringify)}])`;\n }\n\n clone(): Resolvable {\n return new Resolvable(this);\n }\n}\n", + "/** @module path */ /** for typedoc */\nimport { extend, applyPairs, find, allTrueR, pairs, arrayTuples } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\n\n/**\n * @internalapi\n *\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nexport class PathNode {\n /** The state being entered, exited, or retained */\n public state: StateObject;\n /** The parameters declared on the state */\n public paramSchema: Param[];\n /** The parameter values that belong to the state */\n public paramValues: { [key: string]: any };\n /** The individual (stateful) resolvable objects that belong to the state */\n public resolvables: Resolvable[];\n /** The state's declared view configuration objects */\n public views: ViewConfig[];\n\n /**\n * Returns a clone of the PathNode\n * @deprecated use instance method `node.clone()`\n */\n static clone = (node: PathNode) => node.clone();\n\n /** Creates a copy of a PathNode */\n constructor(node: PathNode);\n /** Creates a new (empty) PathNode for a State */\n constructor(state: StateObject);\n constructor(stateOrNode: any) {\n if (stateOrNode instanceof PathNode) {\n const node: PathNode = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n } else {\n const state: StateObject = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(res => res.clone());\n }\n }\n\n clone() {\n return new PathNode(this);\n }\n\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n applyRawParams(params: RawParams): PathNode {\n const getParamVal = (paramDef: Param) => [ paramDef.id, paramDef.value(params[paramDef.id]) ];\n this.paramValues = this.paramSchema.reduce((memo, pDef) => applyPairs(memo, getParamVal(pDef)), {});\n return this;\n }\n\n /** Gets a specific [[Param]] metadata that belongs to the node */\n parameter(name: string): Param {\n return find(this.paramSchema, propEq('id', name));\n }\n\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n equals(node: PathNode, paramsFn?: GetParamsFn): boolean {\n const diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n }\n\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n diff(node: PathNode, paramsFn?: GetParamsFn): Param[] | false {\n if (this.state !== node.state) return false;\n\n const params: Param[] = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n }\n}\n\n/** @hidden */\nexport type GetParamsFn = (pathNode: PathNode) => Param[];\n", + "/** @module path */ /** for typedoc */\n\nimport {\n extend, find, pick, omit, tail, mergeR, values, unnestR, Predicate, inArray, arrayTuples,\n} from '../common/common';\nimport { prop, propEq, not } from '../common/hof';\n\nimport { RawParams } from '../params/interface';\nimport { TreeChanges } from '../transition/interface';\nimport { ViewConfig } from '../view/interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { GetParamsFn, PathNode } from './pathNode';\nimport { ViewService } from '../view/view';\nimport { Param } from '../params/param';\nimport { StateRegistry } from '../state';\n\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nexport class PathUtils {\n /** Given a PathNode[], create an TargetState */\n static makeTargetState(registry: StateRegistry, path: PathNode[]): TargetState {\n const state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n }\n\n static buildPath(targetState: TargetState) {\n const toParams = targetState.params();\n return targetState.$state().path.map(state => new PathNode(state).applyRawParams(toParams));\n }\n\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n static buildToPath(fromPath: PathNode[], targetState: TargetState): PathNode[] {\n const toPath: PathNode[] = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n }\n\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n static applyViewConfigs($view: ViewService, path: PathNode[], states: StateObject[]) {\n // Only apply the viewConfigs to the nodes for the given states\n path.filter(node => inArray(states, node.state)).forEach(node => {\n const viewDecls: _ViewDeclaration[] = values(node.state.views || {});\n const subPath = PathUtils.subPath(path, n => n === node);\n const viewConfigs: ViewConfig[][] = viewDecls.map(view => $view.createViewConfig(subPath, view));\n node.views = viewConfigs.reduce(unnestR, []);\n });\n }\n\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n static inheritParams(fromPath: PathNode[], toPath: PathNode[], toKeys: string[] = []): PathNode[] {\n function nodeParamVals(path: PathNode[], state: StateObject): RawParams {\n const node: PathNode = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n\n const noInherit = fromPath.map(node => node.paramSchema)\n .reduce(unnestR, [])\n .filter(param => !param.inherit)\n .map(prop('id'));\n\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode: PathNode): PathNode {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n let toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n const incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n const fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n const ownParamVals: RawParams = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n }\n\n static nonDynamicParams = (node: PathNode): Param[] =>\n node.state.parameters({ inherit: false })\n .filter(param => !param.dynamic);\n\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n static treeChanges(fromPath: PathNode[], toPath: PathNode[], reloadState: StateObject): TreeChanges {\n const max = Math.min(fromPath.length, toPath.length);\n let keep = 0;\n\n const nodesMatch = (node1: PathNode, node2: PathNode) =>\n node1.equals(node2, PathUtils.nonDynamicParams);\n\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode: PathNode, idx: number): PathNode {\n const cloned = retainedNode.clone();\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n\n let from: PathNode[], retained: PathNode[], exiting: PathNode[], entering: PathNode[], to: PathNode[];\n\n from = fromPath;\n retained = from.slice(0, keep);\n exiting = from.slice(keep);\n\n // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n const retainedWithToParams = retained.map(applyToParams);\n entering = toPath.slice(keep);\n to = (retainedWithToParams).concat(entering);\n\n return { from, to, retained, retainedWithToParams, exiting, entering };\n }\n\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n static matching(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): PathNode[] {\n let done = false;\n const tuples: PathNode[][] = arrayTuples(pathA, pathB);\n return tuples.reduce((matching, [nodeA, nodeB]) => {\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n }\n\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n static equals(pathA: PathNode[], pathB: PathNode[], paramsFn?: GetParamsFn): boolean {\n return pathA.length === pathB.length &&\n PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n }\n\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n static subPath(path: PathNode[], predicate: Predicate): PathNode[] {\n const node = find(path, predicate);\n const elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n }\n\n /** Gets the raw parameter values from a path */\n static paramValues = (path: PathNode[]) =>\n path.reduce((acc, node) => extend(acc, node.paramValues), {});\n}\n", + "/**\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { extend, equals, inArray, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { ResolvePolicy, ResolvableLiteral, resolvePolicies } from './interface';\n\nimport { ResolveContext } from './resolveContext';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { StateObject } from '../state/stateObject';\nimport { PathNode } from '../path/pathNode';\nimport { isNullOrUndefined } from '../common/predicates';\n\n\n// TODO: explicitly make this user configurable\nexport let defaultResolvePolicy: ResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nexport class Resolvable implements ResolvableLiteral {\n token: any;\n policy: ResolvePolicy;\n resolveFn: Function;\n deps: any[];\n\n data: any;\n resolved = false;\n promise: Promise = undefined;\n\n static fromData = (token: any, data: any) =>\n new Resolvable(token, () => data, null, null, data);\n\n /** This constructor creates a Resolvable copy */\n constructor(resolvable: Resolvable)\n\n /** This constructor creates a new Resolvable from the plain old [[ResolvableLiteral]] javascript object */\n constructor(resolvable: ResolvableLiteral)\n\n /**\n * This constructor creates a new `Resolvable`\n *\n * #### Example:\n * ```js\n * var resolvable1 = new Resolvable('mytoken', http => http.get('foo.json').toPromise(), [Http]);\n *\n * var resolvable2 = new Resolvable(UserService, dep => new UserService(dep.data), [SomeDependency]);\n *\n * var resolvable1Clone = new Resolvable(resolvable1);\n * ```\n *\n * @param token The new resolvable's injection token, such as `\"userList\"` (a string) or `UserService` (a class).\n * When this token is used during injection, the resolved value will be injected.\n * @param resolveFn The function that returns the resolved value, or a promise for the resolved value\n * @param deps An array of dependencies, which will be injected into the `resolveFn`\n * @param policy the [[ResolvePolicy]] defines when and how the Resolvable is processed\n * @param data Pre-resolved data. If the resolve value is already known, it may be provided here.\n */\n constructor(token: any, resolveFn: Function, deps?: any[], policy?: ResolvePolicy, data?: any)\n constructor(arg1: any, resolveFn?: Function, deps?: any[], policy?: ResolvePolicy, data?: any) {\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n } else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1)) throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn)) throw new Error('new Resolvable(): resolveFn argument must be a function');\n\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n } else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n const literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n\n getPolicy(state: StateObject): ResolvePolicy {\n const thisPolicy = this.policy || {};\n const statePolicy = state && state.resolvePolicy || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n }\n\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n resolve(resolveContext: ResolveContext, trans?: Transition) {\n const $q = services.$q;\n\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n const getResolvableDependencies = () =>\n $q.all(resolveContext.getDependencies(this).map(resolvable =>\n resolvable.get(resolveContext, trans))) as Promise;\n\n // Invokes the resolve function passing the resolved dependencies as arguments\n const invokeResolveFn = (resolvedDeps: any[]) =>\n this.resolveFn.apply(null, resolvedDeps);\n\n /**\n * For RXWAIT policy:\n *\n * Given an observable returned from a resolve function:\n * - enables .cache() mode (this allows multicast subscribers)\n * - then calls toPromise() (this triggers subscribe() and thus fetches)\n * - Waits for the promise, then return the cached observable (not the first emitted value).\n */\n const waitForRx = (observable$: any) => {\n const cached = observable$.cache(1);\n return cached.take(1).toPromise().then(() => cached);\n };\n\n // If the resolve policy is RXWAIT, wait for the observable to emit something. otherwise pass through.\n const node: PathNode = resolveContext.findNode(this);\n const state: StateObject = node && node.state;\n const maybeWaitForRx = this.getPolicy(state).async === 'RXWAIT' ? waitForRx : identity;\n\n // After the final value has been resolved, update the state of the Resolvable\n const applyResolvedValue = (resolvedValue: any) => {\n this.data = resolvedValue;\n this.resolved = true;\n this.resolveFn = null;\n trace.traceResolvableResolved(this, trans);\n return this.data;\n };\n\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return this.promise = $q.when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(maybeWaitForRx)\n .then(applyResolvedValue);\n }\n\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n get(resolveContext: ResolveContext, trans?: Transition): Promise {\n return this.promise || this.resolve(resolveContext, trans);\n }\n\n toString() {\n return `Resolvable(token: ${stringify(this.token)}, requires: [${this.deps.map(stringify)}])`;\n }\n\n clone(): Resolvable {\n return new Resolvable(this);\n }\n}\n", "/**\n * # The Resolve subsystem\n *\n * This subsystem is an asynchronous, hierarchical Dependency Injection system.\n *\n * Typically, resolve is configured on a state using a [[StateDeclaration.resolve]] declaration.\n *\n * @coreapi\n * @module resolve\n */ /** for typedoc */\nimport { Resolvable } from './resolvable';\n\n/**\n * An interface which is similar to an Angular 2 `Provider`\n */\nexport interface ProviderLike {\n provide: any,\n useClass?: any,\n useFactory?: Function,\n useValue?: any,\n useExisting?: any,\n deps?: any[]\n}\n\n/**\n * A plain object used to describe a [[Resolvable]]\n *\n * These objects may be used in the [[StateDeclaration.resolve]] array to declare\n * async data that the state or substates require.\n *\n * #### Example:\n * ```js\n *\n * var state = {\n * name: 'main',\n * resolve: [\n * { token: 'myData', deps: [MyDataApi], resolveFn: (myDataApi) => myDataApi.getData() },\n * ],\n * }\n * ```\n */\nexport interface ResolvableLiteral {\n /**\n * A Dependency Injection token\n *\n * This Resolvable's DI token.\n * The Resolvable will be injectable elsewhere using the token.\n */\n token: any;\n\n /**\n * A function which fetches the Resolvable's data\n *\n * A function which returns one of:\n *\n * - The resolved value (synchronously)\n * - A promise for the resolved value\n * - An Observable of the resolved value(s)\n *\n * This function will be provided the dependencies listed in [[deps]] as its arguments.\n * The resolve system will asynchronously fetch the dependencies before invoking this function.\n */\n resolveFn: Function;\n\n /**\n * Defines the Resolve Policy\n *\n * A policy that defines when to invoke the resolve,\n * and whether to wait for async and unwrap the data\n */\n policy?: ResolvePolicy;\n\n /**\n * The Dependency Injection tokens\n *\n * This is an array of Dependency Injection tokens for the dependencies of the [[resolveFn]].\n *\n * The DI tokens are references to other `Resolvables`, or to other\n * services from the native DI system.\n */\n deps?: any[];\n\n /** Pre-resolved data. */\n data?: any\n}\n\n/**\n * Defines how a resolve is processed during a transition\n *\n * This object is the [[StateDeclaration.resolvePolicy]] property.\n *\n * #### Example:\n * ```js\n * // Fetched when the resolve's state is being entered.\n * // Wait for the promise to resolve.\n * var policy1 = { when: \"LAZY\", async: \"WAIT\" }\n *\n * // Fetched when the Transition is starting.\n * // Do not wait for the returned promise to resolve.\n * // Inject the raw promise/value\n * var policy2 = { when: \"EAGER\", async: \"NOWAIT\" }\n * ```\n *\n * The policy for a given Resolvable is merged from three sources (highest priority first):\n *\n * - 1) Individual resolve definition\n * - 2) State definition\n * - 3) Global default\n *\n * #### Example:\n * ```js\n * // Wait for an Observable to emit one item.\n * // Since `wait` is not specified, it uses the `wait`\n * // policy defined on the state, or the global default\n * // if no `wait` policy is defined on the state\n * var myResolvablePolicy = { async: \"RXWAIT\" }\n * ```\n */\nexport interface ResolvePolicy {\n /**\n * Defines when a Resolvable is resolved (fetched) during a transition\n *\n * - `LAZY` (default)\n * - Resolved as the resolve's state is being entered\n * - `EAGER`\n * - Resolved as the transition is starting\n *\n * #### Example:\n * Resolves for `main` and `main.home` are fetched when each state is entered.\n * All of `main` resolves are processed before fetching `main.home` resolves.\n * ```js\n * var state = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { when: 'LAZY' }, // default\n * }\n *\n * var state = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { when: 'LAZY' }, // default\n * }\n * ```\n *\n * #### Example:\n * Resolves for `main` and `main.home` are fetched at the same time when the transition starts.\n * This happens earlier in the lifecycle than when states are entered.\n * All of the `main` and `main.home` resolves are fetched as soon as possible.\n * ```js\n * var mainState = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { when: 'EAGER' },\n * }\n *\n * var homeState = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { when: 'EAGER' },\n * }\n * ```\n */\n when?: PolicyWhen;\n\n /**\n * Determines the unwrapping behavior of asynchronous resolve values.\n *\n * - `WAIT` (default)\n * - If a promise is returned from the resolveFn, wait for the promise before proceeding\n * - The unwrapped value from the promise\n * - `NOWAIT`\n * - If a promise is returned from the resolve, do not wait for the promise.\n * - Any other value returned is wrapped in a promise.\n * - The promise will not be unwrapped.\n * - The promise itself will be provided when the resolve is injected or bound elsewhere.\n * - `RXWAIT`\n * - When an Observable is returned from the resolveFn, wait until the Observable emits at least one item.\n * - The Observable item will not be unwrapped.\n * - The Observable stream itself will be provided when the resolve is injected or bound elsewhere.\n *\n * #### Example:\n * The `Transition` will not wait for the resolve promise(s) from `main` to settle before continuing.\n * Resolves for `main` will be provided to components wrapped in a `Promise`.\n *\n * The `Transition` will wait for the `main.home` resolve promises.\n * Resolved values will be unwrapped before being provided to components.\n * ```js\n * var mainState = {\n * name: 'main',\n * resolve: mainResolves, // defined elsewhere\n * resolvePolicy: { async: 'NOWAIT' },\n * }\n * var homeState = {\n * name: 'main.home',\n * resolve: homeResolves, // defined elsewhere\n * resolvePolicy: { async: 'WAIT' }, // default\n * }\n * ```\n */\n async?: PolicyAsync;\n}\n\nexport type PolicyWhen = 'LAZY' | 'EAGER' ;\nexport type PolicyAsync = 'WAIT' | 'NOWAIT' | 'RXWAIT' ;\n\n/** @internalapi */\nexport let resolvePolicies = {\n when: {\n LAZY: 'LAZY',\n EAGER: 'EAGER',\n },\n async: {\n WAIT: 'WAIT',\n NOWAIT: 'NOWAIT',\n RXWAIT: 'RXWAIT',\n },\n};\n", "/** @module resolve */\n/** for typedoc */\nimport { find, tail, uniqR, unnestR, inArray } from '../common/common';\nimport { propEq, not } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services, $InjectorLike } from '../common/coreservices';\nimport { resolvePolicies, PolicyWhen, ResolvePolicy } from './interface';\nimport { PathNode } from '../path/pathNode';\nimport { Resolvable } from './resolvable';\nimport { StateObject } from '../state/stateObject';\nimport { PathUtils } from '../path/pathUtils';\nimport { stringify } from '../common/strings';\nimport { Transition } from '../transition/transition';\nimport { UIInjector } from '../interface';\nimport { isUndefined } from '../common';\n\nconst whens = resolvePolicies.when;\nconst ALL_WHENS = [whens.EAGER, whens.LAZY];\nconst EAGER_WHENS = [whens.EAGER];\n\n// tslint:disable-next-line:no-inferrable-types\nexport const NATIVE_INJECTOR_TOKEN: string = 'Native Injector';\n\n/**\n * Encapsulates Dependency Injection for a path of nodes\n *\n * UI-Router states are organized as a tree.\n * A nested state has a path of ancestors to the root of the tree.\n * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n *\n * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n */\nexport class ResolveContext {\n _injector: UIInjector;\n\n constructor(private _path: PathNode[]) { }\n\n /** Gets all the tokens found in the resolve context, de-duplicated */\n getTokens(): any[] {\n return this._path.reduce((acc, node) => acc.concat(node.resolvables.map(r => r.token)), []).reduce(uniqR, []);\n }\n\n /**\n * Gets the Resolvable that matches the token\n *\n * Gets the last Resolvable that matches the token in this context, or undefined.\n * Throws an error if it doesn't exist in the ResolveContext\n */\n getResolvable(token: any): Resolvable {\n const matching = this._path.map(node => node.resolvables)\n .reduce(unnestR, [])\n .filter((r: Resolvable) => r.token === token);\n return tail(matching);\n }\n\n /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n getPolicy(resolvable: Resolvable): ResolvePolicy {\n const node = this.findNode(resolvable);\n return resolvable.getPolicy(node.state);\n }\n\n /**\n * Returns a ResolveContext that includes a portion of this one\n *\n * Given a state, this method creates a new ResolveContext from this one.\n * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n *\n * #### Why\n *\n * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n * This method is used to create a narrower context when injecting ancestor nodes.\n *\n * @example\n * `let ABCD = new ResolveContext([A, B, C, D]);`\n *\n * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n * However, `B` should only be able to access resolvables from `A`, `B`.\n *\n * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n * `let AB = ABCD.subcontext(a)`\n */\n subContext(state: StateObject): ResolveContext {\n return new ResolveContext(PathUtils.subPath(this._path, node => node.state === state));\n }\n\n /**\n * Adds Resolvables to the node that matches the state\n *\n * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n * The resolvable is added to the node matching the `state` parameter.\n *\n * These new resolvables are not automatically fetched.\n * The calling code should either fetch them, fetch something that depends on them,\n * or rely on [[resolvePath]] being called when some state is being entered.\n *\n * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n *\n * @param newResolvables the new Resolvables\n * @param state Used to find the node to put the resolvable on\n */\n addResolvables(newResolvables: Resolvable[], state: StateObject) {\n const node = find(this._path, propEq('state', state));\n const keys = newResolvables.map(r => r.token);\n node.resolvables = node.resolvables.filter(r => keys.indexOf(r.token) === -1).concat(newResolvables);\n }\n\n /**\n * Returns a promise for an array of resolved path Element promises\n *\n * @param when\n * @param trans\n * @returns {Promise|any}\n */\n resolvePath(when: PolicyWhen = 'LAZY', trans?: Transition): Promise<{ token: any, value: any }[]> {\n // This option determines which 'when' policy Resolvables we are about to fetch.\n const whenOption: string = inArray(ALL_WHENS, when) ? when : 'LAZY';\n // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n const matchedWhens = whenOption === resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n\n // get the subpath to the state argument, if provided\n trace.traceResolvePath(this._path, when, trans);\n\n const matchesPolicy = (acceptedVals: string[], whenOrAsync: 'when'|'async') =>\n (resolvable: Resolvable) =>\n inArray(acceptedVals, this.getPolicy(resolvable)[whenOrAsync]);\n\n // Trigger all the (matching) Resolvables in the path\n // Reduce all the \"WAIT\" Resolvables into an array\n const promises: Promise[] = this._path.reduce((acc, node) => {\n const nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n const nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n const wait = nodeResolvables.filter(not(matchesPolicy(['NOWAIT'], 'async')));\n\n // For the matching Resolvables, start their async fetch process.\n const subContext = this.subContext(node.state);\n const getResult = (r: Resolvable) => r.get(subContext, trans)\n // Return a tuple that includes the Resolvable's token\n .then(value => ({ token: r.token, value: value }));\n nowait.forEach(getResult);\n return acc.concat(wait.map(getResult));\n }, []);\n\n // Wait for all the \"WAIT\" resolvables\n return services.$q.all(promises);\n }\n\n injector(): UIInjector {\n return this._injector || (this._injector = new UIInjectorImpl(this));\n }\n\n findNode(resolvable: Resolvable): PathNode {\n return find(this._path, (node: PathNode) => inArray(node.resolvables, resolvable));\n }\n\n /**\n * Gets the async dependencies of a Resolvable\n *\n * Given a Resolvable, returns its dependencies as a Resolvable[]\n */\n getDependencies(resolvable: Resolvable): Resolvable[] {\n const node = this.findNode(resolvable);\n // Find which other resolvables are \"visible\" to the `resolvable` argument\n // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n const subPath: PathNode[] = PathUtils.subPath(this._path, x => x === node) || this._path;\n const availableResolvables: Resolvable[] = subPath\n .reduce((acc, _node) => acc.concat(_node.resolvables), []) // all of subpath's resolvables\n .filter(res => res !== resolvable); // filter out the `resolvable` argument\n\n const getDependency = (token: any) => {\n const matching = availableResolvables.filter(r => r.token === token);\n if (matching.length) return tail(matching);\n\n const fromInjector = this.injector().getNative(token);\n if (isUndefined(fromInjector)) {\n throw new Error('Could not find Dependency Injection token: ' + stringify(token));\n }\n\n return new Resolvable(token, () => fromInjector, [], fromInjector);\n };\n\n return resolvable.deps.map(getDependency);\n }\n}\n\nclass UIInjectorImpl implements UIInjector {\n native: $InjectorLike;\n\n constructor(public context: ResolveContext) {\n this.native = this.get(NATIVE_INJECTOR_TOKEN) || services.$injector;\n }\n\n get(token: any) {\n const resolvable = this.context.getResolvable(token);\n if (resolvable) {\n if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n return resolvable.get(this.context);\n }\n\n if (!resolvable.resolved) {\n throw new Error('Resolvable async .get() not complete:' + stringify(resolvable.token));\n }\n return resolvable.data;\n }\n\n return this.getNative(token);\n }\n\n getAsync(token: any) {\n const resolvable = this.context.getResolvable(token);\n if (resolvable) return resolvable.get(this.context);\n return services.$q.when(this.native.get(token));\n }\n\n getNative(token: any) {\n return this.native && this.native.get(token);\n }\n}\n", "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { stringify } from '../common/strings';\nimport { map, find, extend, mergeR, tail, omit, arrayTuples, unnestR, identity, anyTrueR } from '../common/common';\nimport { isObject, isUndefined } from '../common/predicates';\nimport { prop, propEq, val, not, is } from '../common/hof';\nimport { StateDeclaration, StateOrName } from '../state/interface';\nimport {\n TransitionOptions, TreeChanges, IHookRegistry, TransitionHookPhase, RegisteredHooks, HookRegOptions,\n HookMatchCriteria, TransitionStateHookFn, TransitionHookFn,\n} from './interface'; // has or is using\nimport { TransitionHook } from './transitionHook';\nimport { matchState, makeEvent, RegisteredHook } from './hookRegistry';\nimport { HookBuilder } from './hookBuilder';\nimport { PathNode } from '../path/pathNode';\nimport { PathUtils } from '../path/pathUtils';\nimport { StateObject } from '../state/stateObject';\nimport { TargetState } from '../state/targetState';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ViewConfig } from '../view/interface';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { UIRouter } from '../router';\nimport { UIInjector } from '../interface';\nimport { RawParams } from '../params/interface';\nimport { ResolvableLiteral } from '../resolve/interface';\n\n/** @hidden */\nconst stateSelf: (_state: StateObject) => StateDeclaration = prop('self');\n\n/**\n * Represents a transition between two states.\n *\n * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n *\n * This object contains all contextual information about the to/from states, parameters, resolves.\n * It has information about all states being entered and exited as a result of the transition.\n */\nexport class Transition implements IHookRegistry {\n\n /** @hidden */\n static diToken = Transition;\n\n /**\n * A unique identifier for the transition.\n *\n * This is an auto incrementing integer, starting from `0`.\n */\n $id: number;\n\n /**\n * A reference to the [[UIRouter]] instance\n *\n * This reference can be used to access the router services, such as the [[StateService]]\n */\n router: UIRouter;\n\n /** @hidden */\n private _deferred = services.$q.defer();\n /**\n * This promise is resolved or rejected based on the outcome of the Transition.\n *\n * When the transition is successful, the promise is resolved\n * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n */\n promise: Promise = this._deferred.promise;\n /**\n * A boolean which indicates if the transition was successful\n *\n * After a successful transition, this value is set to true.\n * After an unsuccessful transition, this value is set to false.\n *\n * The value will be undefined if the transition is not complete\n */\n success: boolean;\n /** @hidden */\n _aborted: boolean;\n /** @hidden */\n private _error: any;\n\n /** @hidden Holds the hook registration functions such as those passed to Transition.onStart() */\n _registeredHooks: RegisteredHooks = { };\n\n /** @hidden */\n private _options: TransitionOptions;\n /** @hidden */\n private _treeChanges: TreeChanges;\n /** @hidden */\n private _targetState: TargetState;\n /** @hidden */\n private _hookBuilder = new HookBuilder(this);\n\n\n /** @hidden */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /** @hidden\n * Creates the transition-level hook registration functions\n * (which can then be used to register hooks)\n */\n private createTransitionHookRegFns() {\n this.router.transitionService._pluginapi._getEvents()\n .filter(type => type.hookPhase !== TransitionHookPhase.CREATE)\n .forEach(type => makeEvent(this, this.router.transitionService, type));\n }\n\n /** @internalapi */\n getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /**\n * Creates a new Transition object.\n *\n * If the target state is not valid, an error is thrown.\n *\n * @internalapi\n *\n * @param fromPath The path of [[PathNode]]s from which the transition is leaving. The last node in the `fromPath`\n * encapsulates the \"from state\".\n * @param targetState The target state and parameters being transitioned to (also, the transition options)\n * @param router The [[UIRouter]] instance\n */\n constructor(fromPath: PathNode[], targetState: TargetState, router: UIRouter) {\n this.router = router;\n this._targetState = targetState;\n\n if (!targetState.valid()) {\n throw new Error(targetState.error());\n }\n\n // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n this._options = extend({ current: val(this) }, targetState.options());\n this.$id = router.transitionService._transitionCount++;\n const toPath = PathUtils.buildToPath(fromPath, targetState);\n this._treeChanges = PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n this.createTransitionHookRegFns();\n\n const onCreateHooks = this._hookBuilder.buildHooksForPhase(TransitionHookPhase.CREATE);\n TransitionHook.invokeHooks(onCreateHooks, () => null);\n\n this.applyViewConfigs(router);\n }\n\n private applyViewConfigs(router: UIRouter) {\n const enteringStates = this._treeChanges.entering.map(node => node.state);\n PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n }\n\n /**\n * @internalapi\n *\n * @returns the internal from [State] object\n */\n $from() {\n return tail(this._treeChanges.from).state;\n }\n\n /**\n * @internalapi\n *\n * @returns the internal to [State] object\n */\n $to() {\n return tail(this._treeChanges.to).state;\n }\n\n /**\n * Returns the \"from state\"\n *\n * Returns the state that the transition is coming *from*.\n *\n * @returns The state declaration object for the Transition's (\"from state\").\n */\n from(): StateDeclaration {\n return this.$from().self;\n }\n\n /**\n * Returns the \"to state\"\n *\n * Returns the state that the transition is going *to*.\n *\n * @returns The state declaration object for the Transition's target state (\"to state\").\n */\n to(): StateDeclaration {\n return this.$to().self;\n }\n\n /**\n * Gets the Target State\n *\n * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n *\n * @returns the [[TargetState]] of this Transition\n */\n targetState() {\n return this._targetState;\n }\n\n /**\n * Determines whether two transitions are equivalent.\n * @deprecated\n */\n is(compare: (Transition|{to?: any, from?: any})): boolean {\n if (compare instanceof Transition) {\n // TODO: Also compare parameters\n return this.is({ to: compare.$to().name, from: compare.$from().name });\n }\n return !(\n (compare.to && !matchState(this.$to(), compare.to)) ||\n (compare.from && !matchState(this.$from(), compare.from))\n );\n }\n\n /**\n * Gets transition parameter values\n *\n * Returns the parameter values for a transition as key/value pairs.\n * This object is immutable.\n *\n * By default, returns the new parameter values (for the \"to state\").\n *\n * #### Example:\n * ```js\n * var toParams = transition.params();\n * ```\n *\n * To return the previous parameter values, supply `'from'` as the `pathname` argument.\n *\n * #### Example:\n * ```js\n * var fromParams = transition.params('from');\n * ```\n *\n * @param pathname the name of the treeChanges path to get parameter values for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n *\n * @returns transition parameter values for the desired path.\n */\n params(pathname?: string): any;\n params(pathname?: string): T;\n params(pathname = 'to') {\n return Object.freeze(this._treeChanges[pathname].map(prop('paramValues')).reduce(mergeR, {}));\n }\n\n\n /**\n * Creates a [[UIInjector]] Dependency Injector\n *\n * Returns a Dependency Injector for the Transition's target state (to state).\n * The injector provides resolve values which the target state has access to.\n *\n * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n *\n * #### Example:\n * ```js\n * .onEnter({ entering: 'myState' }, trans => {\n * var myResolveValue = trans.injector().get('myResolve');\n * // Inject a global service from the global/native injector (if it exists)\n * var MyService = trans.injector().get('MyService');\n * })\n * ```\n *\n * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n * You can use [[UIInjector.getAsync]] to get a promise for the data.\n * #### Example:\n * ```js\n * .onBefore({}, trans => {\n * return trans.injector().getAsync('myResolve').then(myResolveValue =>\n * return myResolveValue !== 'ABORT';\n * });\n * });\n * ```\n *\n * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n * #### Example:\n * ```js\n * .onEnter({ to: 'foo.bar' }, trans => {\n * // returns result of `foo` state's `myResolve` resolve\n * // even though `foo.bar` also has a `myResolve` resolve\n * var fooData = trans.injector('foo').get('myResolve');\n * });\n * ```\n *\n * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n * The resolve data from the `from` path will be returned.\n * #### Example:\n * ```js\n * .onExit({ exiting: 'foo.bar' }, trans => {\n * // Gets the resolve value of `myResolve` from the state being exited\n * var fooData = trans.injector(null, 'from').get('myResolve');\n * });\n * ```\n *\n *\n * @param state Limits the resolves provided to only the resolves the provided state has access to.\n * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n *\n * @returns a [[UIInjector]]\n */\n injector(state?: StateOrName, pathName = 'to'): UIInjector {\n let path: PathNode[] = this._treeChanges[pathName];\n if (state) path = PathUtils.subPath(path, node => node.state === state || node.state.name === state);\n return new ResolveContext(path).injector();\n }\n\n /**\n * Gets all available resolve tokens (keys)\n *\n * This method can be used in conjunction with [[injector]] to inspect the resolve values\n * available to the Transition.\n *\n * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n * in the Transition's [[TreeChanges.to]] path.\n *\n * #### Example:\n * This example logs all resolve values\n * ```js\n * let tokens = trans.getResolveTokens();\n * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n * ```\n *\n * #### Example:\n * This example creates promises for each resolve value.\n * This triggers fetches of resolves (if any have not yet been fetched).\n * When all promises have all settled, it logs the resolve values.\n * ```js\n * let tokens = trans.getResolveTokens();\n * let promise = tokens.map(token => trans.injector().getAsync(token));\n * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n * ```\n *\n * Note: Angular 1 users whould use `$q.all()`\n *\n * @param pathname resolve context's path name (e.g., `to` or `from`)\n *\n * @returns an array of resolve tokens (keys)\n */\n getResolveTokens(pathname = 'to'): any[] {\n return new ResolveContext(this._treeChanges[pathname]).getTokens();\n }\n\n /**\n * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n *\n * Allows a transition hook to dynamically add a Resolvable to this Transition.\n *\n * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n *\n * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n * If no `state` is provided then the root state is used.\n * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n *\n * The `state` argument also scopes the resolved data.\n * The resolved data is available from the injector for that `state` and any children states.\n *\n * #### Example:\n * ```js\n * transitionService.onBefore({}, transition => {\n * transition.addResolvable({\n * token: 'myResolve',\n * deps: ['MyService'],\n * resolveFn: myService => myService.getData()\n * });\n * });\n * ```\n *\n * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n */\n addResolvable(resolvable: Resolvable|ResolvableLiteral, state: StateOrName = ''): void {\n resolvable = is(Resolvable)(resolvable) ? resolvable : new Resolvable(resolvable);\n\n const stateName: string = (typeof state === 'string') ? state : state.name;\n const topath = this._treeChanges.to;\n const targetNode = find(topath, node => node.state.name === stateName);\n const resolveContext: ResolveContext = new ResolveContext(topath);\n resolveContext.addResolvables([resolvable as Resolvable], targetNode.state);\n }\n\n /**\n * Gets the transition from which this transition was redirected.\n *\n * If the current transition is a redirect, this method returns the transition that was redirected.\n *\n * #### Example:\n * ```js\n * let transitionA = $state.go('A').transition\n * transitionA.onStart({}, () => $state.target('B'));\n * $transitions.onSuccess({ to: 'B' }, (trans) => {\n * trans.to().name === 'B'; // true\n * trans.redirectedFrom() === transitionA; // true\n * });\n * ```\n *\n * @returns The previous Transition, or null if this Transition is not the result of a redirection\n */\n redirectedFrom(): Transition {\n return this._options.redirectedFrom || null;\n }\n\n /**\n * Gets the original transition in a redirect chain\n *\n * A transition might belong to a long chain of multiple redirects.\n * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n *\n * #### Example:\n * ```js\n * // states\n * registry.register({ name: 'A', redirectTo: 'B' });\n * registry.register({ name: 'B', redirectTo: 'C' });\n * registry.register({ name: 'C', redirectTo: 'D' });\n * registry.register({ name: 'D' });\n *\n * let transitionA = $state.go('A').transition\n *\n * $transitions.onSuccess({ to: 'D' }, (trans) => {\n * trans.to().name === 'D'; // true\n * trans.redirectedFrom().to().name === 'C'; // true\n * trans.originalTransition() === transitionA; // true\n * trans.originalTransition().to().name === 'A'; // true\n * });\n * ```\n *\n * @returns The original Transition that started a redirect chain\n */\n originalTransition(): Transition {\n const rf = this.redirectedFrom();\n return (rf && rf.originalTransition()) || this;\n }\n\n /**\n * Get the transition options\n *\n * @returns the options for this Transition.\n */\n options(): TransitionOptions {\n return this._options;\n }\n\n /**\n * Gets the states being entered.\n *\n * @returns an array of states that will be entered during this transition.\n */\n entering(): StateDeclaration[] {\n return map(this._treeChanges.entering, prop('state')).map(stateSelf);\n }\n\n /**\n * Gets the states being exited.\n *\n * @returns an array of states that will be exited during this transition.\n */\n exiting(): StateDeclaration[] {\n return map(this._treeChanges.exiting, prop('state')).map(stateSelf).reverse();\n }\n\n /**\n * Gets the states being retained.\n *\n * @returns an array of states that are already entered from a previous Transition, that will not be\n * exited during this Transition\n */\n retained(): StateDeclaration[] {\n return map(this._treeChanges.retained, prop('state')).map(stateSelf);\n }\n\n /**\n * Get the [[ViewConfig]]s associated with this Transition\n *\n * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n *\n * @param pathname the name of the path to fetch views for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n *\n * @returns a list of ViewConfig objects for the given path.\n */\n views(pathname = 'entering', state?: StateObject): ViewConfig[] {\n let path = this._treeChanges[pathname];\n path = !state ? path : path.filter(propEq('state', state));\n return path.map(prop('views')).filter(identity).reduce(unnestR, []);\n }\n\n /**\n * Return the transition's tree changes\n *\n * A transition goes from one state/parameters to another state/parameters.\n * During a transition, states are entered and/or exited.\n *\n * This function returns various branches (paths) which represent the changes to the\n * active state tree that are caused by the transition.\n *\n * @param pathname The name of the tree changes path to get:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n */\n treeChanges(pathname: string): PathNode[];\n treeChanges(): TreeChanges;\n treeChanges(pathname?: string) {\n return pathname ? this._treeChanges[pathname] : this._treeChanges;\n }\n\n /**\n * Creates a new transition that is a redirection of the current one.\n *\n * This transition can be returned from a [[TransitionService]] hook to\n * redirect a transition to a new state and/or set of parameters.\n *\n * @internalapi\n *\n * @returns Returns a new [[Transition]] instance.\n */\n redirect(targetState: TargetState): Transition {\n let redirects = 1, trans: Transition = this;\n // tslint:disable-next-line:no-conditional-assignment\n while ((trans = trans.redirectedFrom()) != null) {\n if (++redirects > 20) throw new Error(`Too many consecutive Transition redirects (20+)`);\n }\n\n const redirectOpts: TransitionOptions = { redirectedFrom: this, source: 'redirect' };\n // If the original transition was caused by URL sync, then use { location: 'replace' }\n // on the new transition (unless the target state explicitly specifies location: false).\n // This causes the original url to be replaced with the url for the redirect target\n // so the original url disappears from the browser history.\n if (this.options().source === 'url' && targetState.options().location !== false) {\n redirectOpts.location = 'replace';\n }\n\n const newOptions = extend({}, this.options(), targetState.options(), redirectOpts);\n targetState = targetState.withOptions(newOptions, true);\n\n const newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n const originalEnteringNodes = this._treeChanges.entering;\n const redirectEnteringNodes = newTransition._treeChanges.entering;\n\n // --- Re-use resolve data from original transition ---\n // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n // (because of the redirect), the resolves fetched by the original transition are still valid in the\n // redirected transition.\n //\n // This allows you to define a redirect on a parent state which depends on an async resolve value.\n // You can wait for the resolve, then redirect to a child state based on the result.\n // The redirected transition does not have to re-fetch the resolve.\n // ---------------------------------------------------------\n\n const nodeIsReloading = (reloadState: StateObject) => (node: PathNode) => {\n return reloadState && node.state.includes[reloadState.name];\n };\n\n // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n const matchingEnteringNodes: PathNode[] = PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, PathUtils.nonDynamicParams)\n .filter(not(nodeIsReloading(targetState.options().reloadState)));\n\n // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n matchingEnteringNodes.forEach((node, idx) => {\n node.resolvables = originalEnteringNodes[idx].resolvables;\n });\n\n return newTransition;\n }\n\n /** @hidden If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n private _changedParams(): Param[] {\n const tc = this._treeChanges;\n\n /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n // If user explicitly wants a reload\n if (this._options.reload) return undefined;\n // If any states are exiting or entering\n if (tc.exiting.length || tc.entering.length) return undefined;\n // If to/from path lengths differ\n if (tc.to.length !== tc.from.length) return undefined;\n // If the to/from paths are different\n const pathsDiffer: boolean = arrayTuples(tc.to, tc.from)\n .map(tuple => tuple[0].state !== tuple[1].state)\n .reduce(anyTrueR, false);\n if (pathsDiffer) return undefined;\n\n // Find any parameter values that differ\n const nodeSchemas: Param[][] = tc.to.map((node: PathNode) => node.paramSchema);\n const [toValues, fromValues] = [tc.to, tc.from].map(path => path.map(x => x.paramValues));\n const tuples = arrayTuples(nodeSchemas, toValues, fromValues);\n\n return tuples.map(([schema, toVals, fromVals]) => Param.changed(schema, toVals, fromVals)).reduce(unnestR, []);\n }\n\n /**\n * Returns true if the transition is dynamic.\n *\n * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n *\n * @returns true if the Transition is dynamic\n */\n dynamic(): boolean {\n const changes = this._changedParams();\n return !changes ? false : changes.map(x => x.dynamic).reduce(anyTrueR, false);\n }\n\n /**\n * Returns true if the transition is ignored.\n *\n * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n *\n * @returns true if the Transition is ignored.\n */\n ignored(): boolean {\n return !!this._ignoredReason();\n }\n\n /** @hidden */\n _ignoredReason(): 'SameAsCurrent'|'SameAsPending'|undefined {\n const pending = this.router.globals.transition;\n const reloadState = this._options.reloadState;\n\n const same = (pathA, pathB) => {\n if (pathA.length !== pathB.length) return false;\n const matching = PathUtils.matching(pathA, pathB);\n return pathA.length === matching.filter(node => !reloadState || !node.state.includes[reloadState.name]).length;\n };\n\n const newTC = this.treeChanges();\n const pendTC = pending && pending.treeChanges();\n\n if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting)) return 'SameAsPending';\n if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to)) return 'SameAsCurrent';\n }\n\n /**\n * Runs the transition\n *\n * This method is generally called from the [[StateService.transitionTo]]\n *\n * @internalapi\n *\n * @returns a promise for a successful transition.\n */\n run(): Promise {\n const runAllHooks = TransitionHook.runAllHooks;\n\n // Gets transition hooks array for the given phase\n const getHooksFor = (phase: TransitionHookPhase) =>\n this._hookBuilder.buildHooksForPhase(phase);\n\n // When the chain is complete, then resolve or reject the deferred\n const transitionSuccess = () => {\n trace.traceSuccess(this.$to(), this);\n this.success = true;\n this._deferred.resolve(this.to());\n runAllHooks(getHooksFor(TransitionHookPhase.SUCCESS));\n };\n\n const transitionError = (reason: any) => {\n trace.traceError(reason, this);\n this.success = false;\n this._deferred.reject(reason);\n this._error = reason;\n runAllHooks(getHooksFor(TransitionHookPhase.ERROR));\n };\n\n const runTransition = () => {\n // Wait to build the RUN hook chain until the BEFORE hooks are done\n // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n const allRunHooks = getHooksFor(TransitionHookPhase.RUN);\n const done = () => services.$q.when(undefined);\n return TransitionHook.invokeHooks(allRunHooks, done);\n };\n\n const startTransition = () => {\n const globals = this.router.globals;\n\n globals.lastStartedTransitionId = this.$id;\n globals.transition = this;\n globals.transitionHistory.enqueue(this);\n\n trace.traceTransitionStart(this);\n\n return services.$q.when(undefined);\n };\n\n const allBeforeHooks = getHooksFor(TransitionHookPhase.BEFORE);\n TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n .then(runTransition)\n .then(transitionSuccess, transitionError);\n\n return this.promise;\n }\n\n /** Checks if this transition is currently active/running. */\n isActive = () =>\n this.router.globals.transition === this;\n\n /**\n * Checks if the Transition is valid\n *\n * @returns true if the Transition is valid\n */\n valid() {\n return !this.error() || this.success !== undefined;\n }\n\n /**\n * Aborts this transition\n *\n * Imperative API to abort a Transition.\n * This only applies to Transitions that are not yet complete.\n */\n abort() {\n // Do not set flag if the transition is already complete\n if (isUndefined(this.success)) {\n this._aborted = true;\n }\n }\n\n /**\n * The Transition error reason.\n *\n * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n *\n * @returns an error message explaining why the transition is invalid, or the reason the transition failed.\n */\n error() {\n const state: StateObject = this.$to();\n\n if (state.self.abstract)\n return `Cannot transition to abstract state '${state.name}'`;\n\n const paramDefs = state.parameters(), values = this.params();\n const invalidParams = paramDefs.filter(param => !param.validates(values[param.id]));\n if (invalidParams.length) {\n return `Param values not valid for state '${state.name}'. Invalid params: [ ${invalidParams.map(param => param.id).join(', ')} ]`;\n }\n\n if (this.success === false)\n return this._error;\n }\n\n /**\n * A string representation of the Transition\n *\n * @returns A string representation of the Transition\n */\n toString () {\n const fromStateOrName = this.from();\n const toStateOrName = this.to();\n\n const avoidEmptyHash = (params: RawParams) =>\n (params['#'] !== null && params['#'] !== undefined) ? params : omit(params, ['#']);\n\n // (X) means the to state is invalid.\n const id = this.$id,\n from = isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName,\n fromParams = stringify(avoidEmptyHash(this._treeChanges.from.map(prop('paramValues')).reduce(mergeR, {}))),\n toValid = this.valid() ? '' : '(X) ',\n to = isObject(toStateOrName) ? toStateOrName.name : toStateOrName,\n toParams = stringify(avoidEmptyHash(this.params()));\n\n return `Transition#${id}( '${from}'${fromParams} -> ${toValid}'${to}'${toParams} )`;\n }\n}\n", + "/**\n * Functions that manipulate strings\n *\n * Although these functions are exported, they are subject to change without notice.\n *\n * @module common_strings\n */ /** */\n\nimport { isString, isArray, isDefined, isNull, isPromise, isInjectable, isObject } from './predicates';\nimport { Rejection } from '../transition/rejectFactory';\nimport { IInjectable, identity, Obj, tail, pushR } from './common';\nimport { pattern, is, not, val, invoke } from './hof';\nimport { Transition } from '../transition/transition';\nimport { Resolvable } from '../resolve/resolvable';\n\n/**\n * Returns a string shortened to a maximum length\n *\n * If the string is already less than the `max` length, return the string.\n * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n *\n * @param max the maximum length of the string to return\n * @param str the input string\n */\nexport function maxLength(max: number, str: string) {\n if (str.length <= max) return str;\n return str.substr(0, max - 3) + '...';\n}\n\n/**\n * Returns a string, with spaces added to the end, up to a desired str length\n *\n * If the string is already longer than the desired length, return the string.\n * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n *\n * @param length the desired length of the string to return\n * @param str the input string\n */\nexport function padString(length: number, str: string) {\n while (str.length < length) str += ' ';\n return str;\n}\n\nexport function kebobString(camelCase: string) {\n return camelCase\n .replace(/^([A-Z])/, $1 => $1.toLowerCase()) // replace first char\n .replace(/([A-Z])/g, $1 => '-' + $1.toLowerCase()); // replace rest\n}\n\nfunction _toJson(obj: Obj) {\n return JSON.stringify(obj);\n}\n\nfunction _fromJson(json: string) {\n return isString(json) ? JSON.parse(json) : json;\n}\n\n\nfunction promiseToString(p: Promise) {\n return `Promise(${JSON.stringify(p)})`;\n}\n\nexport function functionToString(fn: Function) {\n const fnStr = fnToString(fn);\n const namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n const toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n\n const fnName = fn['name'] || '';\n if (fnName && toStr.match(/function \\(/)) {\n return 'function ' + fnName + toStr.substr(9);\n }\n return toStr;\n}\n\nexport function fnToString(fn: IInjectable) {\n const _fn = isArray(fn) ? fn.slice(-1)[0] : fn;\n return _fn && _fn.toString() || 'undefined';\n}\n\nlet stringifyPatternFn: (val: any) => string = null;\nconst stringifyPattern = function(value: any) {\n const isRejection = Rejection.isRejectionPromise;\n\n stringifyPatternFn = stringifyPatternFn || pattern([\n [not(isDefined), val('undefined')],\n [isNull, val('null')],\n [isPromise, val('[Promise]')],\n [isRejection, (x: any) => x._transitionRejection.toString()],\n [is(Rejection), invoke('toString')],\n [is(Transition), invoke('toString')],\n [is(Resolvable), invoke('toString')],\n [isInjectable, functionToString],\n [val(true), identity],\n ]);\n\n return stringifyPatternFn(value);\n};\n\nexport function stringify(o: any) {\n const seen: any[] = [];\n\n function format(value: any) {\n if (isObject(value)) {\n if (seen.indexOf(value) !== -1) return '[circular ref]';\n seen.push(value);\n }\n return stringifyPattern(value);\n }\n\n return JSON.stringify(o, (key, value) => format(value)).replace(/\\\\\"/g, '\"');\n}\n\n/** Returns a function that splits a string on a character or substring */\nexport const beforeAfterSubstr = (char: string) => (str: string): string[] => {\n if (!str) return ['', ''];\n const idx = str.indexOf(char);\n if (idx === -1) return [str, ''];\n return [str.substr(0, idx), str.substr(idx + 1)];\n};\n\nexport const hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\nexport const stripLastPathElement = (str: string) => str.replace(/\\/[^/]*$/, '');\nexport const splitHash = beforeAfterSubstr('#');\nexport const splitQuery = beforeAfterSubstr('?');\nexport const splitEqual = beforeAfterSubstr('=');\nexport const trimHashVal = (str: string) => str ? str.replace(/^#/, '') : '';\n\n/**\n * Splits on a delimiter, but returns the delimiters in the array\n *\n * #### Example:\n * ```js\n * var splitOnSlashes = splitOnDelim('/');\n * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n * ```\n */\nexport function splitOnDelim(delim: string) {\n const re = new RegExp('(' + delim + ')', 'g');\n return (str: string) =>\n str.split(re).filter(identity);\n}\n\n\n/**\n * Reduce fn that joins neighboring strings\n *\n * Given an array of strings, returns a new array\n * where all neighboring strings have been joined.\n *\n * #### Example:\n * ```js\n * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n * ```\n */\nexport function joinNeighborsR(acc: any[], x: any) {\n if (isString(tail(acc)) && isString(x))\n return acc.slice(0, -1).concat(tail(acc) + x);\n return pushR(acc, x);\n}\n\n", "/**\n * @coreapi\n * @module params\n */\n/** */\nimport { fromJson, toJson, identity, equals, inherit, map, extend, pick } from '../common/common';\nimport { isDefined, isNullOrUndefined } from '../common/predicates';\nimport { is } from '../common/hof';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nimport { ParamTypeDefinition } from './interface';\n\n/**\n * A registry for parameter types.\n *\n * This registry manages the built-in (and custom) parameter types.\n *\n * The built-in parameter types are:\n *\n * - [[string]]\n * - [[path]]\n * - [[query]]\n * - [[hash]]\n * - [[int]]\n * - [[bool]]\n * - [[date]]\n * - [[json]]\n * - [[any]]\n */\nexport class ParamTypes {\n /**\n * Built-in parameter type: `string`\n *\n * This parameter type coerces values to strings.\n * It matches anything (`new RegExp(\".*\")`) in the URL\n */\n static string: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `path`\n *\n * This parameter type is the default type for path parameters.\n * A path parameter is any parameter declared in the path portion of a url\n *\n * - `/foo/:param1/:param2`: two path parameters\n *\n * This parameter type behaves exactly like the [[string]] type with one exception.\n * When matching parameter values in the URL, the `path` type does not match forward slashes `/`.\n *\n * #### Angular 1 note:\n * In ng1, this type is overridden with one that pre-encodes slashes as `~2F` instead of `%2F`.\n * For more details about this angular 1 behavior, see: https://github.com/angular-ui/ui-router/issues/2598\n */\n static path: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `query`\n *\n * This parameter type is the default type for query/search parameters.\n * It behaves the same as the [[string]] parameter type.\n *\n * A query parameter is any parameter declared in the query/search portion of a url\n *\n * - `/bar?param2`: a query parameter\n */\n static query: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `hash`\n *\n * This parameter type is used for the `#` parameter (the hash)\n * It behaves the same as the [[string]] parameter type.\n * @coreapi\n */\n static hash: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `int`\n *\n * This parameter type serializes javascript integers (`number`s which represent an integer) to the URL.\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'user',\n * url: '/user/{id:int}'\n * });\n * ```\n * ```js\n * $state.go('user', { id: 1298547 });\n * ```\n *\n * The URL will serialize to: `/user/1298547`.\n *\n * When the parameter value is read, it will be the `number` `1298547`, not the string `\"1298547\"`.\n */\n static int: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `bool`\n *\n * This parameter type serializes `true`/`false` as `1`/`0`\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'inbox',\n * url: '/inbox?{unread:bool}'\n * });\n * ```\n * ```js\n * $state.go('inbox', { unread: true });\n * ```\n *\n * The URL will serialize to: `/inbox?unread=1`.\n *\n * Conversely, if the url is `/inbox?unread=0`, the value of the `unread` parameter will be a `false`.\n */\n static bool: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `date`\n *\n * This parameter type can be used to serialize Javascript dates as parameter values.\n *\n * #### Example:\n * ```js\n * .state({\n * name: 'search',\n * url: '/search?{start:date}'\n * });\n * ```\n * ```js\n * $state.go('search', { start: new Date(2000, 0, 1) });\n * ```\n *\n * The URL will serialize to: `/search?start=2000-01-01`.\n *\n * Conversely, if the url is `/search?start=2016-12-25`, the value of the `start` parameter will be a `Date` object where:\n *\n * - `date.getFullYear() === 2016`\n * - `date.getMonth() === 11` (month is 0-based)\n * - `date.getDate() === 25`\n */\n static date: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `json`\n *\n * This parameter type can be used to serialize javascript objects into the URL using JSON serialization.\n *\n * #### Example:\n * This example serializes an plain javascript object to the URL\n * ```js\n * .state({\n * name: 'map',\n * url: '/map/{coords:json}'\n * });\n * ```\n * ```js\n * $state.go('map', { coords: { x: 10399.2, y: 49071 });\n * ```\n *\n * The URL will serialize to: `/map/%7B%22x%22%3A10399.2%2C%22y%22%3A49071%7D`\n */\n static json: ParamTypeDefinition;\n\n /**\n * Built-in parameter type: `any`\n *\n * This parameter type is used by default for url-less parameters (parameters that do not appear in the URL).\n * This type does not encode or decode.\n * It is compared using a deep `equals` comparison.\n *\n * #### Example:\n * This example defines a non-url parameter on a [[StateDeclaration]].\n * ```js\n * .state({\n * name: 'new',\n * url: '/new',\n * params: {\n * inrepyto: null\n * }\n * });\n * ```\n * ```js\n * $state.go('new', { inreplyto: currentMessage });\n * ```\n */\n static any: ParamTypeDefinition;\n\n\n /** @hidden */\n types: any;\n /** @hidden */\n enqueue = true;\n /** @hidden */\n typeQueue: any[] = [];\n\n /** @internalapi */\n private defaultTypes: any = pick(ParamTypes.prototype, ['hash', 'string', 'query', 'path', 'int', 'bool', 'date', 'json', 'any']);\n\n /** @internalapi */\n constructor() {\n // Register default types. Store them in the prototype of this.types.\n const makeType = (definition: ParamTypeDefinition, name: string) =>\n new ParamType(extend({ name }, definition));\n this.types = inherit(map(this.defaultTypes, makeType), {});\n }\n\n /** @internalapi */\n dispose() {\n this.types = {};\n }\n\n /**\n * Registers a parameter type\n *\n * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n */\n type(name: string, definition?: ParamTypeDefinition, definitionFn?: () => ParamTypeDefinition) {\n if (!isDefined(definition)) return this.types[name];\n if (this.types.hasOwnProperty(name)) throw new Error(`A type named '${name}' has already been defined.`);\n\n this.types[name] = new ParamType(extend({ name }, definition));\n\n if (definitionFn) {\n this.typeQueue.push({ name, def: definitionFn });\n if (!this.enqueue) this._flushTypeQueue();\n }\n\n return this;\n }\n\n /** @internalapi */\n _flushTypeQueue() {\n while (this.typeQueue.length) {\n const type = this.typeQueue.shift();\n if (type.pattern) throw new Error(\"You cannot override a type's .pattern at runtime.\");\n extend(this.types[type.name], services.$injector.invoke(type.def));\n }\n }\n}\n\n/** @hidden */\nfunction initDefaultTypes() {\n\n const makeDefaultType = (def) => {\n const valToString = (val: any) =>\n val != null ? val.toString() : val;\n\n const defaultTypeBase = {\n encode: valToString,\n decode: valToString,\n is: is(String),\n pattern: /.*/,\n // tslint:disable-next-line:triple-equals\n equals: (a: any, b: any) => a == b, // allow coersion for null/undefined/\"\"\n };\n\n return extend({}, defaultTypeBase, def) as ParamTypeDefinition;\n };\n\n // Default Parameter Type Definitions\n extend(ParamTypes.prototype, {\n string: makeDefaultType({}),\n\n path: makeDefaultType({\n pattern: /[^/]*/,\n }),\n\n query: makeDefaultType({}),\n\n hash: makeDefaultType({\n inherit: false,\n }),\n\n int: makeDefaultType({\n decode: (val: string) => parseInt(val, 10),\n is: function(val: any) {\n return !isNullOrUndefined(val) && this.decode(val.toString()) === val;\n },\n pattern: /-?\\d+/,\n }),\n\n bool: makeDefaultType({\n encode: (val: any) => val && 1 || 0,\n decode: (val: string) => parseInt(val, 10) !== 0,\n is: is(Boolean),\n pattern: /0|1/,\n }),\n\n date: makeDefaultType({\n encode: function(val: any) {\n return !this.is(val) ? undefined : [\n val.getFullYear(),\n ('0' + (val.getMonth() + 1)).slice(-2),\n ('0' + val.getDate()).slice(-2),\n ].join('-');\n },\n decode: function(val: string) {\n if (this.is(val)) return val as Date;\n const match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: (val: any) => val instanceof Date && !isNaN(val.valueOf()),\n equals(l: any, r: any) {\n return ['getFullYear', 'getMonth', 'getDate']\n .reduce((acc, fn) => acc && l[fn]() === r[fn](), true);\n },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n }),\n\n json: makeDefaultType({\n encode: toJson,\n decode: fromJson,\n is: is(Object),\n equals: equals,\n pattern: /[^/]*/,\n }),\n\n // does not encode/decode\n any: makeDefaultType({\n encode: identity,\n decode: identity,\n is: () => true,\n equals: equals,\n }),\n });\n}\n\ninitDefaultTypes();\n\n", "/**\n * @coreapi\n * @module params\n */\n/** */\nimport { extend, ancestors, Obj } from '../common/common';\nimport { StateObject } from '../state/stateObject';\n\n/** @internalapi */\nexport class StateParams {\n [key: string]: any;\n\n constructor(params: Obj = {}) {\n extend(this, params);\n }\n\n /**\n * Merges a set of parameters with all parameters inherited between the common parents of the\n * current state and a given destination state.\n *\n * @param {Object} newParams The set of parameters which will be composited with inherited params.\n * @param {Object} $current Internal definition of object representing the current state.\n * @param {Object} $to Internal definition of object representing state to transition to.\n */\n $inherit(newParams: Obj, $current: StateObject, $to: StateObject) {\n let parentParams: string[];\n const parents = ancestors($current, $to),\n inherited: Obj = {},\n inheritList: string[] = [];\n\n for (const i in parents) {\n if (!parents[i] || !parents[i].params) continue;\n parentParams = Object.keys(parents[i].params);\n if (!parentParams.length) continue;\n\n for (const j in parentParams) {\n if (inheritList.indexOf(parentParams[j]) >= 0) continue;\n inheritList.push(parentParams[j]);\n inherited[parentParams[j]] = this[parentParams[j]];\n }\n }\n return extend({}, inherited, newParams);\n }\n}\n\n", + "/** @module state */ /** for typedoc */\nimport { Obj, omit, noop, extend, inherit, values, applyPairs, tail, mapObj, identity } from '../common/common';\nimport { isDefined, isFunction, isString, isArray } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { prop, pattern, is, pipe, val } from '../common/hof';\nimport { StateDeclaration } from './interface';\n\nimport { StateObject } from './stateObject';\nimport { StateMatcher } from './stateMatcher';\nimport { Param } from '../params/param';\nimport { UrlMatcherFactory } from '../url/urlMatcherFactory';\nimport { UrlMatcher } from '../url/urlMatcher';\nimport { Resolvable } from '../resolve/resolvable';\nimport { services } from '../common/coreservices';\nimport { ResolvePolicy } from '../resolve/interface';\nimport { ParamFactory } from '../url/interface';\n\nconst parseUrl = (url: string): any => {\n if (!isString(url)) return false;\n const root = url.charAt(0) === '^';\n return { val: root ? url.substring(1) : url, root };\n};\n\nexport type BuilderFunction = (state: StateObject, parent?: BuilderFunction) => any;\n\ninterface Builders {\n [key: string]: BuilderFunction[];\n\n name: BuilderFunction[];\n parent: BuilderFunction[];\n data: BuilderFunction[];\n url: BuilderFunction[];\n navigable: BuilderFunction[];\n params: BuilderFunction[];\n views: BuilderFunction[];\n path: BuilderFunction[];\n includes: BuilderFunction[];\n resolvables: BuilderFunction[];\n}\n\n\nfunction nameBuilder(state: StateObject) {\n return state.name;\n}\n\nfunction selfBuilder(state: StateObject) {\n state.self.$$state = () => state;\n return state.self;\n}\n\nfunction dataBuilder(state: StateObject) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n}\n\nconst getUrlBuilder = ($urlMatcherFactoryProvider: UrlMatcherFactory, root: () => StateObject) =>\nfunction urlBuilder(state: StateObject) {\n const stateDec: StateDeclaration = state;\n\n // For future states, i.e., states whose name ends with `.**`,\n // match anything that starts with the url prefix\n if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n stateDec.url += '{remainder:any}'; // match any path (.*)\n }\n\n const parsed = parseUrl(stateDec.url), parent = state.parent;\n const url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, {\n params: state.params || {},\n paramMap: function (paramConfig: any, isSearch: boolean) {\n if (stateDec.reloadOnSearch === false && isSearch) paramConfig = extend(paramConfig || {}, { dynamic: true });\n return paramConfig;\n },\n });\n\n if (!url) return null;\n if (!$urlMatcherFactoryProvider.isMatcher(url)) throw new Error(`Invalid url '${url}' in state '${state}'`);\n return (parsed && parsed.root) ? url : ((parent && parent.navigable) || root()).url.append( url);\n};\n\nconst getNavigableBuilder = (isRoot: (state: StateObject) => boolean) =>\nfunction navigableBuilder(state: StateObject) {\n return !isRoot(state) && state.url ? state : (state.parent ? state.parent.navigable : null);\n};\n\nconst getParamsBuilder = (paramFactory: ParamFactory) =>\nfunction paramsBuilder(state: StateObject): { [key: string]: Param } {\n const makeConfigParam = (config: any, id: string) => paramFactory.fromConfig(id, null, config);\n const urlParams: Param[] = (state.url && state.url.parameters({ inherit: false })) || [];\n const nonUrlParams: Param[] = values(mapObj(omit(state.params || {}, urlParams.map(prop('id'))), makeConfigParam));\n return urlParams.concat(nonUrlParams).map(p => [p.id, p]).reduce(applyPairs, {});\n};\n\nfunction pathBuilder(state: StateObject) {\n return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n}\n\nfunction includesBuilder(state: StateObject) {\n const includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n}\n\n/**\n * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * validates the `resolve` property and converts it to a [[Resolvable]] array.\n *\n * resolve: input value can be:\n *\n * {\n * // analyzed but not injected\n * myFooResolve: function() { return \"myFooData\"; },\n *\n * // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n * myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n *\n * // Array split; \"DependencyName\" dep as string\n * myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n *\n * // Array split; DependencyType dep as token (compared using ===)\n * myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n *\n * // val.$inject used as deps\n * // where:\n * // corgeResolve.$inject = [\"DependencyName\"];\n * // function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n * // then \"DependencyName\" dep as string\n * myCorgeResolve: corgeResolve,\n *\n * // inject service by name\n * // When a string is found, desugar creating a resolve that injects the named service\n * myGraultResolve: \"SomeService\"\n * }\n *\n * or:\n *\n * [\n * new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n * new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n * { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n * ]\n */\nexport function resolvablesBuilder(state: StateObject): Resolvable[] {\n interface Tuple { token: any, val: any, deps: any[], policy: ResolvePolicy }\n\n /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n const objects2Tuples = (resolveObj: Obj, resolvePolicies: { [key: string]: ResolvePolicy }) =>\n Object.keys(resolveObj || {}).map(token => ({ token, val: resolveObj[token], deps: undefined, policy: resolvePolicies[token] }));\n\n /** fetch DI annotations from a function or ng1-style array */\n const annotate = (fn: Function) => {\n const $injector = services.$injector;\n // ng1 doesn't have an $injector until runtime.\n // If the $injector doesn't exist, use \"deferred\" literal as a\n // marker indicating they should be annotated when runtime starts\n return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n };\n\n /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n const isResolveLiteral = (obj: any) => !!(obj.token && obj.resolveFn);\n\n /** true if the object looks like a provide literal, or a ng2 Provider */\n const isLikeNg2Provider = (obj: any) => !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass));\n\n /** true if the object looks like a tuple from obj2Tuples */\n const isTupleFromObj = (obj: any) => !!(obj && obj.val && (isString(obj.val) || isArray(obj.val) || isFunction(obj.val)));\n\n /** extracts the token from a Provider or provide literal */\n const getToken = (p: any) => p.provide || p.token;\n\n /** Given a literal resolve or provider object, returns a Resolvable */\n const literal2Resolvable = pattern([\n [prop('resolveFn'), p => new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy)],\n [prop('useFactory'), p => new Resolvable(getToken(p), p.useFactory, (p.deps || p.dependencies), p.policy)],\n [prop('useClass'), p => new Resolvable(getToken(p), () => new (p.useClass)(), [], p.policy)],\n [prop('useValue'), p => new Resolvable(getToken(p), () => p.useValue, [], p.policy, p.useValue)],\n [prop('useExisting'), p => new Resolvable(getToken(p), identity, [p.useExisting], p.policy)],\n ]);\n\n const tuple2Resolvable = pattern([\n [pipe(prop('val'), isString), (tuple: Tuple) => new Resolvable(tuple.token, identity, [ tuple.val ], tuple.policy)],\n [pipe(prop('val'), isArray), (tuple: Tuple) => new Resolvable(tuple.token, tail( tuple.val), tuple.val.slice(0, -1), tuple.policy)],\n [pipe(prop('val'), isFunction), (tuple: Tuple) => new Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy)],\n ]);\n\n const item2Resolvable = <(obj: any) => Resolvable> pattern([\n [is(Resolvable), (r: Resolvable) => r],\n [isResolveLiteral, literal2Resolvable],\n [isLikeNg2Provider, literal2Resolvable],\n [isTupleFromObj, tuple2Resolvable],\n [val(true), (obj: any) => { throw new Error('Invalid resolve value: ' + stringify(obj)); }],\n ]);\n\n // If resolveBlock is already an array, use it as-is.\n // Otherwise, assume it's an object and convert to an Array of tuples\n const decl = state.resolve;\n const items: any[] = isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n return items.map(item2Resolvable);\n}\n\n/**\n * @internalapi A internal global service\n *\n * StateBuilder is a factory for the internal [[StateObject]] objects.\n *\n * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n * conforms to the [[StateDeclaration]] interface. This factory takes that object and builds the corresponding\n * [[StateObject]] object, which has an API and is used internally.\n *\n * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n * using the [[builder]] method.\n */\nexport class StateBuilder {\n /** An object that contains all the BuilderFunctions registered, key'd by the name of the State property they build */\n private builders: Builders;\n\n constructor(private matcher: StateMatcher, urlMatcherFactory: UrlMatcherFactory) {\n const self = this;\n\n const root = () => matcher.find('');\n const isRoot = (state: StateObject) => state.name === '';\n\n function parentBuilder(state: StateObject) {\n if (isRoot(state)) return null;\n return matcher.find(self.parentName(state)) || root();\n }\n\n this.builders = {\n name: [ nameBuilder ],\n self: [ selfBuilder ],\n parent: [ parentBuilder ],\n data: [ dataBuilder ],\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: [ getUrlBuilder(urlMatcherFactory, root) ],\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: [ getNavigableBuilder(isRoot) ],\n params: [ getParamsBuilder(urlMatcherFactory.paramFactory) ],\n // Each framework-specific ui-router implementation should define its own `views` builder\n // e.g., src/ng1/statebuilders/views.ts\n views: [],\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: [ pathBuilder ],\n // Speed up $state.includes() as it's used a lot\n includes: [ includesBuilder ],\n resolvables: [ resolvablesBuilder ],\n };\n }\n\n /**\n * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n * More than one BuilderFunction can be registered for a given property.\n *\n * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n *\n * @param name The name of the State property being registered for.\n * @param fn The BuilderFunction which will be used to build the State property\n * @returns a function which deregisters the BuilderFunction\n */\n builder(name: string, fn: BuilderFunction): (BuilderFunction|BuilderFunction[]|Function) {\n const builders = this.builders;\n const array = builders[name] || [];\n // Backwards compat: if only one builder exists, return it, else return whole arary.\n if (isString(name) && !isDefined(fn)) return array.length > 1 ? array : array[0];\n if (!isString(name) || !isFunction(fn)) return;\n\n builders[name] = array;\n builders[name].push(fn);\n return () => builders[name].splice(builders[name].indexOf(fn, 1)) && null;\n }\n\n /**\n * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n * properties and API built.\n *\n * @param state an uninitialized State object\n * @returns the built State object\n */\n build(state: StateObject): StateObject {\n const { matcher, builders } = this;\n const parent = this.parentName(state);\n\n if (parent && !matcher.find(parent, undefined, false)) {\n return null;\n }\n\n for (const key in builders) {\n if (!builders.hasOwnProperty(key)) continue;\n const chain = builders[key].reduce((parentFn: BuilderFunction, step: BuilderFunction) => (_state) => step(_state, parentFn), noop);\n state[key] = chain(state);\n }\n return state;\n }\n\n parentName(state: StateObject) {\n // name = 'foo.bar.baz.**'\n const name = state.name || '';\n // segments = ['foo', 'bar', 'baz', '.**']\n const segments = name.split('.');\n // segments = ['foo', 'bar', 'baz']\n const lastSegment = segments.pop();\n // segments = ['foo', 'bar'] (ignore .** segment for future states)\n if (lastSegment === '**') segments.pop();\n\n if (segments.length) {\n if (state.parent) {\n throw new Error(`States that specify the 'parent:' property should not have a '.' in their name (${name})`);\n }\n\n // 'foo.bar'\n return segments.join('.');\n }\n\n if (!state.parent) return '';\n return isString(state.parent) ? state.parent : state.parent.name;\n }\n\n name(state: StateObject) {\n const name = state.name;\n if (name.indexOf('.') !== -1 || !state.parent) return name;\n\n const parentName = isString(state.parent) ? state.parent : state.parent.name;\n return parentName ? parentName + '.' + name : name;\n }\n}\n", "/** @module state */ /** for typedoc */\nimport { isString } from '../common/predicates';\nimport { StateOrName } from './interface';\nimport { StateObject } from './stateObject';\nimport { values } from '../common/common';\n\nexport class StateMatcher {\n constructor (private _states: { [key: string]: StateObject }) { }\n\n isRelative(stateName: string) {\n stateName = stateName || '';\n return stateName.indexOf('.') === 0 || stateName.indexOf('^') === 0;\n }\n\n\n find(stateOrName: StateOrName, base?: StateOrName, matchGlob = true): StateObject {\n if (!stateOrName && stateOrName !== '') return undefined;\n const isStr = isString(stateOrName);\n let name: string = isStr ? stateOrName : (stateOrName).name;\n\n if (this.isRelative(name)) name = this.resolvePath(name, base);\n const state = this._states[name];\n\n if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n return state;\n } else if (isStr && matchGlob) {\n const _states = values(this._states);\n const matches = _states.filter(_state =>\n _state.__stateObjectCache.nameGlob &&\n _state.__stateObjectCache.nameGlob.matches(name),\n );\n\n if (matches.length > 1) {\n // tslint:disable-next-line:no-console\n console.log(`stateMatcher.find: Found multiple matches for ${name} using glob: `, matches.map(match => match.name));\n }\n return matches[0];\n }\n return undefined;\n }\n\n resolvePath(name: string, base: StateOrName) {\n if (!base) throw new Error(`No reference point given for path '${name}'`);\n\n const baseState: StateObject = this.find(base);\n\n const splitName = name.split('.');\n const pathLength = splitName.length;\n let i = 0, current = baseState;\n\n for (; i < pathLength; i++) {\n if (splitName[i] === '' && i === 0) {\n current = baseState;\n continue;\n }\n if (splitName[i] === '^') {\n if (!current.parent) throw new Error(`Path '${name}' not valid for state '${baseState.name}'`);\n current = current.parent;\n continue;\n }\n break;\n }\n const relName = splitName.slice(i).join('.');\n return current.name + (current.name && relName ? '.' : '') + relName;\n }\n}\n", "/** @module state */ /** for typedoc */\nimport { inArray } from '../common/common';\nimport { isString } from '../common/predicates';\nimport { StateDeclaration, _StateDeclaration } from './interface';\nimport { StateObject } from './stateObject';\nimport { StateBuilder } from './stateBuilder';\nimport { StateRegistryListener, StateRegistry } from './stateRegistry';\nimport { Disposable } from '../interface';\nimport { UrlRouter } from '../url/urlRouter';\nimport { prop } from '../common/hof';\nimport { StateMatcher } from './stateMatcher';\n\n/** @internalapi */\nexport class StateQueueManager implements Disposable {\n queue: StateObject[];\n matcher: StateMatcher;\n\n constructor(\n private $registry: StateRegistry,\n private $urlRouter: UrlRouter,\n public states: { [key: string]: StateObject; },\n public builder: StateBuilder,\n public listeners: StateRegistryListener[]) {\n this.queue = [];\n this.matcher = $registry.matcher;\n }\n\n /** @internalapi */\n dispose() {\n this.queue = [];\n }\n\n register(stateDecl: _StateDeclaration) {\n const queue = this.queue;\n const state = StateObject.create(stateDecl);\n const name = state.name;\n\n if (!isString(name)) throw new Error('State must have a valid name');\n if (this.states.hasOwnProperty(name) || inArray(queue.map(prop('name')), name))\n throw new Error(`State '${name}' is already defined`);\n\n queue.push(state);\n this.flush();\n\n return state;\n }\n\n flush() {\n const { queue, states, builder } = this;\n const registered: StateObject[] = [], // states that got registered\n orphans: StateObject[] = [], // states that don't yet have a parent registered\n previousQueueLength = {}; // keep track of how long the queue when an orphan was first encountered\n const getState = (name) =>\n this.states.hasOwnProperty(name) && this.states[name];\n\n while (queue.length > 0) {\n const state: StateObject = queue.shift();\n const name = state.name;\n const result: StateObject = builder.build(state);\n const orphanIdx: number = orphans.indexOf(state);\n\n if (result) {\n const existingState = getState(name);\n if (existingState && existingState.name === name) {\n throw new Error(`State '${name}' is already defined`);\n }\n\n const existingFutureState = getState(name + '.**');\n if (existingFutureState) {\n // Remove future state of the same name\n this.$registry.deregister(existingFutureState);\n }\n\n states[name] = state;\n this.attachRoute(state);\n if (orphanIdx >= 0) orphans.splice(orphanIdx, 1);\n registered.push(state);\n continue;\n }\n\n const prev = previousQueueLength[name];\n previousQueueLength[name] = queue.length;\n if (orphanIdx >= 0 && prev === queue.length) {\n // Wait until two consecutive iterations where no additional states were dequeued successfully.\n // throw new Error(`Cannot register orphaned state '${name}'`);\n queue.push(state);\n return states;\n } else if (orphanIdx < 0) {\n orphans.push(state);\n }\n\n queue.push(state);\n }\n\n if (registered.length) {\n this.listeners.forEach(listener => listener('registered', registered.map(s => s.self)));\n }\n\n return states;\n }\n\n attachRoute(state: StateObject) {\n if (state.abstract || !state.url) return;\n\n this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(state));\n }\n}\n", "/**\n * @coreapi\n * @module state\n */ /** for typedoc */\n\nimport { StateObject } from './stateObject';\nimport { StateMatcher } from './stateMatcher';\nimport { StateBuilder } from './stateBuilder';\nimport { StateQueueManager } from './stateQueueManager';\nimport { StateDeclaration, _StateDeclaration } from './interface';\nimport { BuilderFunction } from './stateBuilder';\nimport { StateOrName } from './interface';\nimport { removeFrom } from '../common/common';\nimport { UIRouter } from '../router';\nimport { propEq } from '../common/hof';\n\n/**\n * The signature for the callback function provided to [[StateRegistry.onStatesChanged]].\n *\n * This callback receives two parameters:\n *\n * @param event a string; either \"registered\" or \"deregistered\"\n * @param states the list of [[StateDeclaration]]s that were registered (or deregistered).\n */\nexport type StateRegistryListener = (event: 'registered'|'deregistered', states: StateDeclaration[]) => void;\n\nexport class StateRegistry {\n private _root: StateObject;\n private states: { [key: string]: StateObject } = {};\n\n matcher: StateMatcher;\n private builder: StateBuilder;\n stateQueue: StateQueueManager;\n\n listeners: StateRegistryListener[] = [];\n\n /** @internalapi */\n constructor(private _router: UIRouter) {\n this.matcher = new StateMatcher(this.states);\n this.builder = new StateBuilder(this.matcher, _router.urlMatcherFactory);\n this.stateQueue = new StateQueueManager(this, _router.urlRouter, this.states, this.builder, this.listeners);\n this._registerRoot();\n }\n\n /** @internalapi */\n private _registerRoot() {\n const rootStateDef: StateDeclaration = {\n name: '',\n url: '^',\n views: null,\n params: {\n '#': { value: null, type: 'hash', dynamic: true },\n },\n abstract: true,\n };\n\n const _root = this._root = this.stateQueue.register(rootStateDef);\n _root.navigable = null;\n }\n\n /** @internalapi */\n dispose() {\n this.stateQueue.dispose();\n this.listeners = [];\n this.get().forEach(state => this.get(state) && this.deregister(state));\n }\n\n /**\n * Listen for a State Registry events\n *\n * Adds a callback that is invoked when states are registered or deregistered with the StateRegistry.\n *\n * #### Example:\n * ```js\n * let allStates = registry.get();\n *\n * // Later, invoke deregisterFn() to remove the listener\n * let deregisterFn = registry.onStatesChanged((event, states) => {\n * switch(event) {\n * case: 'registered':\n * states.forEach(state => allStates.push(state));\n * break;\n * case: 'deregistered':\n * states.forEach(state => {\n * let idx = allStates.indexOf(state);\n * if (idx !== -1) allStates.splice(idx, 1);\n * });\n * break;\n * }\n * });\n * ```\n *\n * @param listener a callback function invoked when the registered states changes.\n * The function receives two parameters, `event` and `state`.\n * See [[StateRegistryListener]]\n * @return a function that deregisters the listener\n */\n onStatesChanged(listener: StateRegistryListener): () => void {\n this.listeners.push(listener);\n return function deregisterListener() {\n removeFrom(this.listeners)(listener);\n }.bind(this);\n }\n\n /**\n * Gets the implicit root state\n *\n * Gets the root of the state tree.\n * The root state is implicitly created by UI-Router.\n * Note: this returns the internal [[StateObject]] representation, not a [[StateDeclaration]]\n *\n * @return the root [[StateObject]]\n */\n root() {\n return this._root;\n }\n\n /**\n * Adds a state to the registry\n *\n * Registers a [[StateDeclaration]] or queues it for registration.\n *\n * Note: a state will be queued if the state's parent isn't yet registered.\n *\n * @param stateDefinition the definition of the state to register.\n * @returns the internal [[StateObject]] object.\n * If the state was successfully registered, then the object is fully built (See: [[StateBuilder]]).\n * If the state was only queued, then the object is not fully built.\n */\n register(stateDefinition: _StateDeclaration): StateObject {\n return this.stateQueue.register(stateDefinition);\n }\n\n /** @hidden */\n private _deregisterTree(state: StateObject) {\n const all = this.get().map(s => s.$$state());\n const getChildren = (states: StateObject[]) => {\n const _children = all.filter(s => states.indexOf(s.parent) !== -1);\n return _children.length === 0 ? _children : _children.concat(getChildren(_children));\n };\n\n const children = getChildren([state]);\n const deregistered: StateObject[] = [state].concat(children).reverse();\n\n deregistered.forEach(_state => {\n const $ur = this._router.urlRouter;\n // Remove URL rule\n $ur.rules().filter(propEq('state', _state)).forEach($ur.removeRule.bind($ur));\n // Remove state from registry\n delete this.states[_state.name];\n });\n\n return deregistered;\n }\n\n /**\n * Removes a state from the registry\n *\n * This removes a state from the registry.\n * If the state has children, they are are also removed from the registry.\n *\n * @param stateOrName the state's name or object representation\n * @returns {StateObject[]} a list of removed states\n */\n deregister(stateOrName: StateOrName) {\n const _state = this.get(stateOrName);\n if (!_state) throw new Error(\"Can't deregister state; not found: \" + stateOrName);\n const deregisteredStates = this._deregisterTree(_state.$$state());\n\n this.listeners.forEach(listener => listener('deregistered', deregisteredStates.map(s => s.self)));\n return deregisteredStates;\n }\n\n /**\n * Gets all registered states\n *\n * Calling this method with no arguments will return a list of all the states that are currently registered.\n * Note: this does not return states that are *queued* but not yet registered.\n *\n * @return a list of [[StateDeclaration]]s\n */\n get(): StateDeclaration[];\n\n /**\n * Gets a registered state\n *\n * Given a state or a name, finds and returns the [[StateDeclaration]] from the registry.\n * Note: this does not return states that are *queued* but not yet registered.\n *\n * @param stateOrName either the name of a state, or a state object.\n * @param base the base state to use when stateOrName is relative.\n * @return a registered [[StateDeclaration]] that matched the `stateOrName`, or null if the state isn't registered.\n */\n get(stateOrName: StateOrName, base?: StateOrName): StateDeclaration;\n get(stateOrName?: StateOrName, base?: StateOrName): any {\n if (arguments.length === 0)\n return Object.keys(this.states).map(name => this.states[name].self);\n const found = this.matcher.find(stateOrName, base);\n return found && found.self || null;\n }\n\n decorator(name: string, func: BuilderFunction) {\n return this.builder.builder(name, func);\n }\n}\n", + "/**\n * @coreapi\n * @module url\n */\n/** for typedoc */\nimport {\n map, defaults, inherit, identity, unnest, tail, find, Obj, pairs, allTrueR, unnestR, arrayTuples,\n} from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { isArray, isString, isDefined } from '../common/predicates';\nimport { Param, DefType } from '../params/param';\nimport { ParamTypes } from '../params/paramTypes';\nimport { RawParams } from '../params/interface';\nimport { ParamFactory } from './interface';\nimport { joinNeighborsR, splitOnDelim } from '../common/strings';\n\n/** @hidden */\nfunction quoteRegExp(str: any, param?: any) {\n let surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n if (!param) return result;\n\n switch (param.squash) {\n case false:\n surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')]; break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:\\/(', ')|\\/)?'];\n break;\n default:\n surroundPattern = [`(${param.squash}|`, ')?']; break;\n }\n return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n}\n\n/** @hidden */\nconst memoizeTo = (obj: Obj, _prop: string, fn: Function) =>\n obj[_prop] = obj[_prop] || fn();\n\n/** @hidden */\nconst splitOnSlash = splitOnDelim('/');\n\n/** @hidden */\ninterface UrlMatcherCache {\n segments?: any[];\n weights?: number[];\n path?: UrlMatcher[];\n parent?: UrlMatcher;\n pattern?: RegExp;\n}\n\n/**\n * Matches URLs against patterns.\n *\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL.\n *\n * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n * parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by [[UrlMatcher.exec]].\n *\n * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n * or colon placeholders (`/somePath/:param`).\n *\n * - *A parameter RegExp* may be defined for a param after a colon\n * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n * The regexp must match for the url to be matched.\n * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n *\n * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n * See [[UrlMatcherFactory.type]] for more information.\n *\n * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n * A catch-all * parameter value will contain the remainder of the URL.\n *\n * ---\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters).\n * A path parameter matches any number of characters other than '/'. For catch-all\n * placeholders the path parameter matches any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n */\nexport class UrlMatcher {\n /** @hidden */\n static nameValidator: RegExp = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n\n /** @hidden */\n private _cache: UrlMatcherCache = { path: [this] };\n /** @hidden */\n private _children: UrlMatcher[] = [];\n /** @hidden */\n private _params: Param[] = [];\n /** @hidden */\n private _segments: string[] = [];\n /** @hidden */\n private _compiled: string[] = [];\n\n /** The pattern that was passed into the constructor */\n public pattern: string;\n\n /** @hidden */\n static encodeDashes(str: string) { // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, c => `%5C%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n }\n\n /** @hidden Given a matcher, return an array with the matcher's path segments and path params, in order */\n static pathSegmentsAndParams(matcher: UrlMatcher) {\n const staticSegments = matcher._segments;\n const pathParams = matcher._params.filter(p => p.location === DefType.PATH);\n return arrayTuples(staticSegments, pathParams.concat(undefined))\n .reduce(unnestR, [])\n .filter(x => x !== '' && isDefined(x));\n }\n\n /** @hidden Given a matcher, return an array with the matcher's query params */\n static queryParams(matcher: UrlMatcher): Param[] {\n return matcher._params.filter(p => p.location === DefType.SEARCH);\n }\n\n /**\n * Compare two UrlMatchers\n *\n * This comparison function converts a UrlMatcher into static and dynamic path segments.\n * Each static path segment is a static string between a path separator (slash character).\n * Each dynamic segment is a path parameter.\n *\n * The comparison function sorts static segments before dynamic ones.\n */\n static compare(a: UrlMatcher, b: UrlMatcher): number {\n /**\n * Turn a UrlMatcher and all its parent matchers into an array\n * of slash literals '/', string literals, and Param objects\n *\n * This example matcher matches strings like \"/foo/:param/tail\":\n * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n *\n * Caches the result as `matcher._cache.segments`\n */\n const segments = (matcher: UrlMatcher) =>\n matcher._cache.segments = matcher._cache.segments ||\n matcher._cache.path.map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .reduce(joinNeighborsR, [])\n .map(x => isString(x) ? splitOnSlash(x) : x)\n .reduce(unnestR, []);\n\n /**\n * Gets the sort weight for each segment of a UrlMatcher\n *\n * Caches the result as `matcher._cache.weights`\n */\n const weights = (matcher: UrlMatcher) =>\n matcher._cache.weights = matcher._cache.weights ||\n segments(matcher).map(segment => {\n // Sort slashes first, then static strings, the Params\n if (segment === '/') return 1;\n if (isString(segment)) return 2;\n if (segment instanceof Param) return 3;\n });\n\n /**\n * Pads shorter array in-place (mutates)\n */\n const padArrays = (l: any[], r: any[], padVal: any) => {\n const len = Math.max(l.length, r.length);\n while (l.length < len) l.push(padVal);\n while (r.length < len) r.push(padVal);\n };\n\n const weightsA = weights(a), weightsB = weights(b);\n padArrays(weightsA, weightsB, 0);\n\n const _pairs = arrayTuples(weightsA, weightsB);\n let cmp, i;\n\n for (i = 0; i < _pairs.length; i++) {\n cmp = _pairs[i][0] - _pairs[i][1];\n if (cmp !== 0) return cmp;\n }\n\n return 0;\n }\n\n /**\n * @param pattern The pattern to compile into a matcher.\n * @param paramTypes The [[ParamTypes]] registry\n * @param config A configuration object\n * - `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.\n * - `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.\n */\n constructor(pattern: string, paramTypes: ParamTypes, paramFactory: ParamFactory, public config?: any) {\n this.pattern = pattern;\n this.config = defaults(this.config, {\n params: {},\n strict: true,\n caseInsensitive: false,\n paramMap: identity,\n });\n\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n const placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n const searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n const patterns: any[][] = [];\n let last = 0, matchArray: RegExpExecArray;\n\n const checkParamErrors = (id: string) => {\n if (!UrlMatcher.nameValidator.test(id)) throw new Error(`Invalid parameter name '${id}' in pattern '${pattern}'`);\n if (find(this._params, propEq('id', id))) throw new Error(`Duplicate parameter name '${id}' in pattern '${pattern}'`);\n };\n\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n const matchDetails = (m: RegExpExecArray, isSearch: boolean) => {\n // IE[78] returns '' for unmatched groups instead of null\n const id: string = m[2] || m[3];\n const regexp: string = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n\n const makeRegexpType = (str) => inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n pattern: new RegExp(str, this.config.caseInsensitive ? 'i' : undefined),\n });\n\n return {\n id,\n regexp,\n cfg: this.config.params[id],\n segment: pattern.substring(last, m.index),\n type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n };\n };\n\n let p: any, segment: string;\n\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = placeholder.exec(pattern))) {\n p = matchDetails(matchArray, false);\n if (p.segment.indexOf('?') >= 0) break; // we're into the search part\n\n checkParamErrors(p.id);\n this._params.push(paramFactory.fromPath(p.id, p.type, this.config.paramMap(p.cfg, false)));\n this._segments.push(p.segment);\n patterns.push([p.segment, tail(this._params)]);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n\n // Find any search parameter names and remove them from the last segment\n const i = segment.indexOf('?');\n\n if (i >= 0) {\n const search = segment.substring(i);\n segment = segment.substring(0, i);\n\n if (search.length > 0) {\n last = 0;\n\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = searchPlaceholder.exec(search))) {\n p = matchDetails(matchArray, true);\n checkParamErrors(p.id);\n this._params.push(paramFactory.fromSearch(p.id, p.type, this.config.paramMap(p.cfg, true)));\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n }\n\n this._segments.push(segment);\n this._compiled = patterns.map(_pattern => quoteRegExp.apply(null, _pattern)).concat(quoteRegExp(segment));\n }\n\n /**\n * Creates a new concatenated UrlMatcher\n *\n * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n *\n * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n */\n append(url: UrlMatcher): UrlMatcher {\n this._children.push(url);\n url._cache = {\n path: this._cache.path.concat(url),\n parent: this,\n pattern: null,\n };\n return url;\n }\n\n /** @hidden */\n isRoot(): boolean {\n return this._cache.path[0] === this;\n }\n\n /** Returns the input pattern string */\n toString(): string {\n return this.pattern;\n }\n\n /**\n * Tests the specified url/path against this matcher.\n *\n * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n * parameter values. Returns null if the path does not match.\n *\n * The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `search`. This means that search parameters are always treated\n * as optional.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n * x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * ```\n *\n * @param path The URL path to match, e.g. `$location.path()`.\n * @param search URL search parameters, e.g. `$location.search()`.\n * @param hash URL hash e.g. `$location.hash()`.\n * @param options\n *\n * @returns The captured parameter values.\n */\n exec(path: string, search: any = {}, hash?: string, options: any = {}): RawParams {\n const match = memoizeTo(this._cache, 'pattern', () => {\n return new RegExp([\n '^',\n unnest(this._cache.path.map(prop('_compiled'))).join(''),\n this.config.strict === false ? '\\/?' : '',\n '$',\n ].join(''), this.config.caseInsensitive ? 'i' : undefined);\n }).exec(path);\n\n if (!match) return null;\n\n // options = defaults(options, { isolate: false });\n\n const allParams: Param[] = this.parameters(),\n pathParams: Param[] = allParams.filter(param => !param.isSearch()),\n searchParams: Param[] = allParams.filter(param => param.isSearch()),\n nPathSegments = this._cache.path.map(urlm => urlm._segments.length - 1).reduce((a, x) => a + x),\n values: RawParams = {};\n\n if (nPathSegments !== match.length - 1)\n throw new Error(`Unbalanced capture group in route '${this.pattern}'`);\n\n function decodePathArray(paramVal: string) {\n const reverseString = (str: string) => str.split('').reverse().join('');\n const unquoteDashes = (str: string) => str.replace(/\\\\-/g, '-');\n\n const split = reverseString(paramVal).split(/-(?!\\\\)/);\n const allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n\n for (let i = 0; i < nPathSegments; i++) {\n const param: Param = pathParams[i];\n let value: (any|any[]) = match[i + 1];\n\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (let j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value) value = param.replace[j].to;\n }\n if (value && param.array === true) value = decodePathArray(value);\n if (isDefined(value)) value = param.type.decode(value);\n values[param.id] = param.value(value);\n }\n searchParams.forEach(param => {\n let value = search[param.id];\n for (let j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value) value = param.replace[j].to;\n }\n if (isDefined(value)) value = param.type.decode(value);\n values[param.id] = param.value(value);\n });\n\n if (hash) values['#'] = hash;\n\n return values;\n }\n\n /**\n * @hidden\n * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n *\n * @returns {Array.} An array of [[Param]] objects. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\n parameters(opts: any = {}): Param[] {\n if (opts.inherit === false) return this._params;\n return unnest(this._cache.path.map(matcher => matcher._params));\n }\n\n /**\n * @hidden\n * Returns a single parameter from this UrlMatcher by id\n *\n * @param id\n * @param opts\n * @returns {T|Param|any|boolean|UrlMatcher|null}\n */\n parameter(id: string, opts: any = {}): Param {\n const findParam = () => {\n for (const param of this._params) {\n if (param.id === id) return param;\n }\n };\n\n const parent = this._cache.parent;\n return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n }\n\n /**\n * Validates the input parameter values against this UrlMatcher\n *\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param params The object hash of parameters to validate.\n * @returns Returns `true` if `params` validates, otherwise `false`.\n */\n validates(params: RawParams): boolean {\n const validParamVal = (param: Param, val: any) =>\n !param || param.validates(val);\n\n params = params || {};\n\n // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n const paramSchema = this.parameters().filter(paramDef => params.hasOwnProperty(paramDef.id));\n return paramSchema.map(paramDef => validParamVal(paramDef, params[paramDef.id])).reduce(allTrueR, true);\n }\n\n /**\n * Given a set of parameter values, creates a URL from this UrlMatcher.\n *\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * ```\n *\n * @param values the values to substitute for the parameters in this pattern.\n * @returns the formatted URL (path and optionally search part).\n */\n format(values: RawParams = {}) {\n // Build the full path of UrlMatchers (including all parent UrlMatchers)\n const urlMatchers = this._cache.path;\n\n // Extract all the static segments and Params (processed as ParamDetails)\n // into an ordered array\n const pathSegmentsAndParams: Array = urlMatchers.map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .map(x => isString(x) ? x : getDetails(x));\n\n // Extract the query params into a separate array\n const queryParams: Array = urlMatchers.map(UrlMatcher.queryParams)\n .reduce(unnestR, [])\n .map(getDetails);\n\n const isInvalid = (param: ParamDetails) => param.isValid === false;\n if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n return null;\n }\n\n /**\n * Given a Param, applies the parameter value, then returns detailed information about it\n */\n function getDetails(param: Param): ParamDetails {\n // Normalize to typed value\n const value = param.value(values[param.id]);\n const isValid = param.validates(value);\n const isDefaultValue = param.isDefaultValue(value);\n // Check if we're in squash mode for the parameter\n const squash = isDefaultValue ? param.squash : false;\n // Allow the Parameter's Type to encode the value\n const encoded = param.type.encode(value);\n\n return { param, value, isValid, isDefaultValue, squash, encoded };\n }\n\n // Build up the path-portion from the list of static segments and parameters\n const pathString = pathSegmentsAndParams.reduce((acc: string, x: string|ParamDetails) => {\n // The element is a static segment (a raw string); just append it\n if (isString(x)) return acc + x;\n\n // Otherwise, it's a ParamDetails.\n const { squash, encoded, param } = x;\n\n // If squash is === true, try to remove a slash from the path\n if (squash === true) return (acc.match(/\\/$/)) ? acc.slice(0, -1) : acc;\n // If squash is a string, use the string for the param value\n if (isString(squash)) return acc + squash;\n if (squash !== false) return acc; // ?\n if (encoded == null) return acc;\n // If this parameter value is an array, encode the value using encodeDashes\n if (isArray(encoded)) return acc + map( encoded, UrlMatcher.encodeDashes).join('-');\n // If the parameter type is \"raw\", then do not encodeURIComponent\n if (param.raw) return acc + encoded;\n // Encode the value\n return acc + encodeURIComponent( encoded);\n }, '');\n\n // Build the query string by applying parameter values (array or regular)\n // then mapping to key=value, then flattening and joining using \"&\"\n const queryString = queryParams.map((paramDetails: ParamDetails) => {\n let { param, squash, encoded, isDefaultValue } = paramDetails;\n if (encoded == null || (isDefaultValue && squash !== false)) return;\n if (!isArray(encoded)) encoded = [ encoded];\n if (encoded.length === 0) return;\n if (!param.raw) encoded = map( encoded, encodeURIComponent);\n\n return ( encoded).map(val => `${param.id}=${val}`);\n }).filter(identity).reduce(unnestR, []).join('&');\n\n // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n return pathString + (queryString ? `?${queryString}` : '') + (values['#'] ? '#' + values['#'] : '');\n }\n}\n\n/** @hidden */\ninterface ParamDetails {\n param: Param;\n value: any;\n isValid: boolean;\n isDefaultValue: boolean;\n squash: (boolean|string);\n encoded: (string|string[]);\n}\n", "/**\n * @internalapi\n * @module url\n */ /** for typedoc */\nimport { forEach, extend } from '../common/common';\nimport { isObject, isDefined, isFunction, isString } from '../common/predicates';\nimport { UrlMatcher } from './urlMatcher';\nimport { Param, DefType } from '../params/param';\nimport { ParamTypes } from '../params/paramTypes';\nimport { ParamTypeDefinition } from '../params/interface';\nimport { Disposable } from '../interface';\nimport { ParamType } from '../params/paramType';\nimport { ParamFactory, UrlMatcherConfig } from './interface';\n\n/**\n * Factory for [[UrlMatcher]] instances.\n *\n * The factory is available to ng1 services as\n * `$urlMatcherFactory` or ng1 providers as `$urlMatcherFactoryProvider`.\n */\nexport class UrlMatcherFactory implements Disposable, UrlMatcherConfig {\n /** @hidden */ paramTypes = new ParamTypes();\n /** @hidden */ _isCaseInsensitive = false;\n /** @hidden */ _isStrictMode = true;\n /** @hidden */ _defaultSquashPolicy: (boolean|string) = false;\n\n /** @internalapi Creates a new [[Param]] for a given location (DefType) */\n paramFactory: ParamFactory = {\n /** Creates a new [[Param]] from a CONFIG block */\n fromConfig: (id: string, type: ParamType, config: any) =>\n new Param(id, type, config, DefType.CONFIG, this),\n\n /** Creates a new [[Param]] from a url PATH */\n fromPath: (id: string, type: ParamType, config: any) =>\n new Param(id, type, config, DefType.PATH, this),\n\n /** Creates a new [[Param]] from a url SEARCH */\n fromSearch: (id: string, type: ParamType, config: any) =>\n new Param(id, type, config, DefType.SEARCH, this),\n };\n\n constructor() {\n extend(this, { UrlMatcher, Param });\n }\n\n /** @inheritdoc */\n caseInsensitive(value?: boolean): boolean {\n return this._isCaseInsensitive = isDefined(value) ? value : this._isCaseInsensitive;\n }\n\n /** @inheritdoc */\n strictMode(value?: boolean): boolean {\n return this._isStrictMode = isDefined(value) ? value : this._isStrictMode;\n }\n\n /** @inheritdoc */\n defaultSquashPolicy(value?: (boolean|string)) {\n if (isDefined(value) && value !== true && value !== false && !isString(value))\n throw new Error(`Invalid squash policy: ${value}. Valid policies: false, true, arbitrary-string`);\n return this._defaultSquashPolicy = isDefined(value) ? value : this._defaultSquashPolicy;\n }\n\n /** @hidden */\n private _getConfig = (config) =>\n extend({ strict: this._isStrictMode, caseInsensitive: this._isCaseInsensitive }, config);\n\n /**\n * Creates a [[UrlMatcher]] for the specified pattern.\n *\n * @param pattern The URL pattern.\n * @param config The config object hash.\n * @returns The UrlMatcher.\n */\n compile(pattern: string, config?: { [key: string]: any }) {\n return new UrlMatcher(pattern, this.paramTypes, this.paramFactory, this._getConfig(config));\n }\n\n /**\n * Returns true if the specified object is a [[UrlMatcher]], or false otherwise.\n *\n * @param object The object to perform the type check against.\n * @returns `true` if the object matches the `UrlMatcher` interface, by\n * implementing all the same methods.\n */\n isMatcher(object: any): boolean {\n // TODO: typeof?\n if (!isObject(object)) return false;\n let result = true;\n\n forEach(UrlMatcher.prototype, (val, name) => {\n if (isFunction(val)) result = result && (isDefined(object[name]) && isFunction(object[name]));\n });\n return result;\n }\n\n /**\n * Creates and registers a custom [[ParamType]] object\n *\n * A [[ParamType]] can be used to generate URLs with typed parameters.\n *\n * @param name The type name.\n * @param definition The type definition. See [[ParamTypeDefinition]] for information on the values accepted.\n * @param definitionFn A function that is injected before the app runtime starts.\n * The result of this function should be a [[ParamTypeDefinition]].\n * The result is merged into the existing `definition`.\n * See [[ParamType]] for information on the values accepted.\n *\n * @returns - if a type was registered: the [[UrlMatcherFactory]]\n * - if only the `name` parameter was specified: the currently registered [[ParamType]] object, or undefined\n *\n * Note: Register custom types *before using them* in a state definition.\n *\n * See [[ParamTypeDefinition]] for examples\n */\n type(name: string, definition?: ParamTypeDefinition, definitionFn?: () => ParamTypeDefinition) {\n const type = this.paramTypes.type(name, definition, definitionFn);\n return !isDefined(definition) ? type : this;\n }\n\n /** @hidden */\n $get() {\n this.paramTypes.enqueue = false;\n this.paramTypes._flushTypeQueue();\n return this;\n }\n\n /** @internalapi */\n dispose() {\n this.paramTypes.dispose();\n }\n}\n", "/**\n * @coreapi\n * @module url\n */ /** */\nimport { UrlMatcher } from './urlMatcher';\nimport { isString, isDefined, isFunction, isState } from '../common/predicates';\nimport { UIRouter } from '../router';\nimport { identity, extend } from '../common/common';\nimport { is, pattern } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\nimport { RawParams } from '../params/interface';\nimport {\n UrlRule, UrlRuleMatchFn, UrlRuleHandlerFn, UrlRuleType, UrlParts, MatcherUrlRule, StateRule, RegExpRule,\n} from './interface';\n\n/**\n * Creates a [[UrlRule]]\n *\n * Creates a [[UrlRule]] from a:\n *\n * - `string`\n * - [[UrlMatcher]]\n * - `RegExp`\n * - [[StateObject]]\n * @internalapi\n */\nexport class UrlRuleFactory {\n static isUrlRule = obj =>\n obj && ['type', 'match', 'handler'].every(key => isDefined(obj[key]));\n\n constructor(public router: UIRouter) { }\n\n compile(str: string) {\n return this.router.urlMatcherFactory.compile(str);\n }\n\n create(what: string|UrlMatcher|StateObject|RegExp|UrlRuleMatchFn, handler?: string|UrlRuleHandlerFn): UrlRule {\n const makeRule = pattern([\n [isString, (_what: string) => makeRule(this.compile(_what))],\n [is(UrlMatcher), (_what: UrlMatcher) => this.fromUrlMatcher(_what, handler)],\n [isState, (_what: StateObject) => this.fromState(_what, this.router)],\n [is(RegExp), (_what: RegExp) => this.fromRegExp(_what, handler)],\n [isFunction, (_what: UrlRuleMatchFn) => new BaseUrlRule(_what, handler as UrlRuleHandlerFn)],\n ]);\n\n const rule = makeRule(what);\n if (!rule) throw new Error(\"invalid 'what' in when()\");\n return rule;\n }\n\n /**\n * A UrlRule which matches based on a UrlMatcher\n *\n * The `handler` may be either a `string`, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, match => \"/home/\" + match.fooId + \"/\" + match.barId);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n *\n * ## Handler as UrlMatcher\n *\n * If `handler` is a UrlMatcher, the handler matcher is used to create the new url.\n * The `handler` UrlMatcher is formatted using the matched param from the first matcher.\n * The url is replaced with the result.\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var handler = $umf.compile(\"/home/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, handler);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n */\n fromUrlMatcher(urlMatcher: UrlMatcher, handler: string|UrlMatcher|UrlRuleHandlerFn): MatcherUrlRule {\n let _handler: UrlRuleHandlerFn = handler as any;\n if (isString(handler)) handler = this.router.urlMatcherFactory.compile(handler);\n if (is(UrlMatcher)(handler)) _handler = (match: RawParams) => (handler as UrlMatcher).format(match);\n\n function matchUrlParamters(url: UrlParts): RawParams {\n const params = urlMatcher.exec(url.path, url.search, url.hash);\n return urlMatcher.validates(params) && params;\n }\n\n // Prioritize URLs, lowest to highest:\n // - Some optional URL parameters, but none matched\n // - No optional parameters in URL\n // - Some optional parameters, some matched\n // - Some optional parameters, all matched\n function matchPriority(params: RawParams): number {\n const optional = urlMatcher.parameters().filter(param => param.isOptional);\n if (!optional.length) return 0.000001;\n const matched = optional.filter(param => params[param.id]);\n return matched.length / optional.length;\n }\n\n const details = { urlMatcher, matchPriority, type: 'URLMATCHER' };\n return extend(new BaseUrlRule(matchUrlParamters, _handler), details) as MatcherUrlRule;\n }\n\n\n /**\n * A UrlRule which matches a state by its url\n *\n * #### Example:\n * ```js\n * var rule = factory.fromState($state.get('foo'), router);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match);\n * // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }\n * ```\n */\n fromState(state: StateObject, router: UIRouter): StateRule {\n /**\n * Handles match by transitioning to matched state\n *\n * First checks if the router should start a new transition.\n * A new transition is not required if the current state's URL\n * and the new URL are already identical\n */\n const handler = (match: RawParams) => {\n const $state = router.stateService;\n const globals = router.globals;\n if ($state.href(state, match) !== $state.href(globals.current, globals.params)) {\n $state.transitionTo(state, match, { inherit: true, source: 'url' });\n }\n };\n\n const details = { state, type: 'STATE' };\n return extend(this.fromUrlMatcher(state.url, handler), details) as StateRule;\n }\n\n /**\n * A UrlRule which matches based on a regular expression\n *\n * The `handler` may be either a [[UrlRuleHandlerFn]] or a string.\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - regexp match array (from `regexp`)\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, match => \"/home/\" + match[1])\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n *\n * ## Handler as string\n *\n * If `handler` is a string, the url is *replaced by the string* when the Rule is invoked.\n * The string is first interpolated using `string.replace()` style pattern.\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, \"/home/$1\")\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n */\n fromRegExp(regexp: RegExp, handler: string|UrlRuleHandlerFn): RegExpRule {\n if (regexp.global || regexp.sticky) throw new Error('Rule RegExp must not be global or sticky');\n\n /**\n * If handler is a string, the url will be replaced by the string.\n * If the string has any String.replace() style variables in it (like `$2`),\n * they will be replaced by the captures from [[match]]\n */\n const redirectUrlTo = (match: RegExpExecArray) =>\n // Interpolates matched values into $1 $2, etc using a String.replace()-style pattern\n (handler as string).replace(/\\$(\\$|\\d{1,2})/, (m, what) =>\n match[what === '$' ? 0 : Number(what)]);\n\n const _handler = isString(handler) ? redirectUrlTo : handler;\n\n const matchParamsFromRegexp = (url: UrlParts): RegExpExecArray =>\n regexp.exec(url.path);\n\n const details = { regexp, type: 'REGEXP' };\n return extend(new BaseUrlRule(matchParamsFromRegexp, _handler), details) as RegExpRule;\n }\n}\n\n/**\n * A base rule which calls `match`\n *\n * The value from the `match` function is passed through to the `handler`.\n * @internalapi\n */\nexport class BaseUrlRule implements UrlRule {\n $id: number;\n priority: number;\n type: UrlRuleType = 'RAW';\n handler: UrlRuleHandlerFn;\n matchPriority = (match) => 0 - this.$id;\n\n constructor(public match: UrlRuleMatchFn, handler?: UrlRuleHandlerFn) {\n this.handler = handler || identity;\n }\n}\n", + "/**\n * @internalapi\n * @module url\n */\n/** for typedoc */\nimport { createProxyFunctions, extend, removeFrom } from '../common/common';\nimport { isDefined, isFunction, isString } from '../common/predicates';\nimport { UrlMatcher } from './urlMatcher';\nimport { RawParams } from '../params/interface';\nimport { Disposable } from '../interface';\nimport { UIRouter } from '../router';\nimport { is, pattern, val } from '../common/hof';\nimport { UrlRuleFactory } from './urlRule';\nimport { TargetState } from '../state/targetState';\nimport { MatcherUrlRule, MatchResult, UrlParts, UrlRule, UrlRuleHandlerFn, UrlRuleMatchFn, UrlRulesApi, UrlSyncApi } from './interface';\nimport { TargetStateDef } from '../state/interface';\nimport { stripLastPathElement } from '../common';\n\n/** @hidden */\nfunction appendBasePath(url: string, isHtml5: boolean, absolute: boolean, baseHref: string): string {\n if (baseHref === '/') return url;\n if (isHtml5) return stripLastPathElement(baseHref) + url;\n if (absolute) return baseHref.slice(1) + url;\n return url;\n}\n\n/** @hidden */\nconst prioritySort = (a: UrlRule, b: UrlRule) =>\n (b.priority || 0) - (a.priority || 0);\n\n/** @hidden */\nconst typeSort = (a: UrlRule, b: UrlRule) => {\n const weights = { 'STATE': 4, 'URLMATCHER': 4, 'REGEXP': 3, 'RAW': 2, 'OTHER': 1 };\n return (weights[a.type] || 0) - (weights[b.type] || 0);\n};\n\n/** @hidden */\nconst urlMatcherSort = (a: MatcherUrlRule, b: MatcherUrlRule) =>\n !a.urlMatcher || !b.urlMatcher ? 0 : UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n\n/** @hidden */\nconst idSort = (a: UrlRule, b: UrlRule) => {\n // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n const useMatchPriority = { STATE: true, URLMATCHER: true };\n const equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n};\n\n/**\n * Default rule priority sorting function.\n *\n * Sorts rules by:\n *\n * - Explicit priority (set rule priority using [[UrlRulesApi.when]])\n * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n * - Rule registration order (for rule types other than STATE and URLMATCHER)\n * - Equally sorted State and UrlMatcher rules will each match the URL.\n * Then, the *best* match is chosen based on how many parameter values were matched.\n *\n * @coreapi\n */\nlet defaultRuleSortFn: (a: UrlRule, b: UrlRule) => number;\ndefaultRuleSortFn = (a, b) => {\n let cmp = prioritySort(a, b);\n if (cmp !== 0) return cmp;\n\n cmp = typeSort(a, b);\n if (cmp !== 0) return cmp;\n\n cmp = urlMatcherSort(a as MatcherUrlRule, b as MatcherUrlRule);\n if (cmp !== 0) return cmp;\n\n return idSort(a, b);\n};\n\n/**\n * Updates URL and responds to URL changes\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class updates the URL when the state changes.\n * It also responds to changes in the URL.\n */\nexport class UrlRouter implements UrlRulesApi, UrlSyncApi, Disposable {\n /** used to create [[UrlRule]] objects for common cases */\n public urlRuleFactory: UrlRuleFactory;\n\n /** @hidden */ private _router: UIRouter;\n /** @hidden */ private location: string;\n /** @hidden */ private _sortFn = defaultRuleSortFn;\n /** @hidden */ private _stopFn: Function;\n /** @hidden */ _rules: UrlRule[] = [];\n /** @hidden */ private _otherwiseFn: UrlRule;\n /** @hidden */ interceptDeferred = false;\n /** @hidden */ private _id = 0;\n /** @hidden */ private _sorted = false;\n\n /** @hidden */\n constructor(router: UIRouter) {\n this._router = router;\n this.urlRuleFactory = new UrlRuleFactory(router);\n createProxyFunctions(val(UrlRouter.prototype), this, val(this));\n }\n\n /** @internalapi */\n dispose() {\n this.listen(false);\n this._rules = [];\n delete this._otherwiseFn;\n }\n\n /** @inheritdoc */\n sort(compareFn?: (a: UrlRule, b: UrlRule) => number) {\n this._rules = this.stableSort(this._rules, this._sortFn = compareFn || this._sortFn);\n this._sorted = true;\n }\n\n private ensureSorted() {\n this._sorted || this.sort();\n }\n\n private stableSort(arr, compareFn) {\n const arrOfWrapper = arr.map((elem, idx) => ({ elem, idx }));\n\n arrOfWrapper.sort((wrapperA, wrapperB) => {\n const cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n return cmpDiff === 0\n ? wrapperA.idx - wrapperB.idx\n : cmpDiff;\n });\n\n return arrOfWrapper.map(wrapper => wrapper.elem);\n }\n\n /**\n * Given a URL, check all rules and return the best [[MatchResult]]\n * @param url\n * @returns {MatchResult}\n */\n match(url: UrlParts): MatchResult {\n this.ensureSorted();\n\n url = extend({ path: '', search: {}, hash: '' }, url);\n const rules = this.rules();\n if (this._otherwiseFn) rules.push(this._otherwiseFn);\n\n // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n\n const checkRule = (rule: UrlRule): MatchResult => {\n const match = rule.match(url, this._router);\n return match && { match, rule, weight: rule.matchPriority(match) };\n };\n\n // The rules are pre-sorted.\n // - Find the first matching rule.\n // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n // - Choose the rule with the highest match weight.\n let best: MatchResult;\n for (let i = 0; i < rules.length; i++) {\n // Stop when there is a 'best' rule and the next rule sorts differently than it.\n if (best && this._sortFn(rules[i], best.rule) !== 0) break;\n\n const current = checkRule(rules[i]);\n // Pick the best MatchResult\n best = (!best || current && current.weight > best.weight) ? current : best;\n }\n\n return best;\n }\n\n /** @inheritdoc */\n sync(evt?) {\n if (evt && evt.defaultPrevented) return;\n\n const router = this._router,\n $url = router.urlService,\n $state = router.stateService;\n\n const url: UrlParts = {\n path: $url.path(), search: $url.search(), hash: $url.hash(),\n };\n\n const best = this.match(url);\n\n const applyResult = pattern([\n [isString, (newurl: string) => $url.url(newurl, true)],\n [TargetState.isDef, (def: TargetStateDef) => $state.go(def.state, def.params, def.options)],\n [is(TargetState), (target: TargetState) => $state.go(target.state(), target.params(), target.options())],\n ]);\n\n applyResult(best && best.rule.handler(best.match, url, router));\n }\n\n /** @inheritdoc */\n listen(enabled?: boolean): Function {\n if (enabled === false) {\n this._stopFn && this._stopFn();\n delete this._stopFn;\n } else {\n return this._stopFn = this._stopFn || this._router.urlService.onChange(evt => this.sync(evt));\n }\n }\n\n /**\n * Internal API.\n * @internalapi\n */\n update(read?: boolean) {\n const $url = this._router.locationService;\n if (read) {\n this.location = $url.url();\n return;\n }\n if ($url.url() === this.location) return;\n\n $url.url(this.location, true);\n }\n\n /**\n * Internal API.\n *\n * Pushes a new location to the browser history.\n *\n * @internalapi\n * @param urlMatcher\n * @param params\n * @param options\n */\n push(urlMatcher: UrlMatcher, params?: RawParams, options?: { replace?: (string|boolean) }) {\n const replace = options && !!options.replace;\n this._router.urlService.url(urlMatcher.format(params || {}), replace);\n }\n\n /**\n * Builds and returns a URL with interpolated parameters\n *\n * #### Example:\n * ```js\n * matcher = $umf.compile(\"/about/:person\");\n * params = { person: \"bob\" };\n * $bob = $urlRouter.href(matcher, params);\n * // $bob == \"/about/bob\";\n * ```\n *\n * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n * @param params An object of parameter values to fill the matcher's required parameters.\n * @param options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n href(urlMatcher: UrlMatcher, params?: any, options?: { absolute: boolean }): string {\n let url = urlMatcher.format(params);\n if (url == null) return null;\n\n options = options || { absolute: false };\n\n const cfg = this._router.urlService.config;\n const isHtml5 = cfg.html5Mode();\n if (!isHtml5 && url !== null) {\n url = '#' + cfg.hashPrefix() + url;\n }\n url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n\n if (!options.absolute || !url) {\n return url;\n }\n\n const slash = (!isHtml5 && url ? '/' : '');\n const cfgPort = cfg.port();\n const port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n\n return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n }\n\n\n /**\n * Manually adds a URL Rule.\n *\n * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n * Rules can be created using [[UrlRouter.urlRuleFactory]], or create manually as simple objects.\n *\n * A rule should have a `match` function which returns truthy if the rule matched.\n * It should also have a `handler` function which is invoked if the rule is the best match.\n *\n * @return a function that deregisters the rule\n */\n rule(rule: UrlRule): Function {\n if (!UrlRuleFactory.isUrlRule(rule)) throw new Error('invalid rule');\n rule.$id = this._id++;\n rule.priority = rule.priority || 0;\n\n this._rules.push(rule);\n this._sorted = false;\n\n return () => this.removeRule(rule);\n }\n\n /** @inheritdoc */\n removeRule(rule): void {\n removeFrom(this._rules, rule);\n }\n\n /** @inheritdoc */\n rules(): UrlRule[] {\n this.ensureSorted();\n return this._rules.slice();\n }\n\n /** @inheritdoc */\n otherwise(handler: string|UrlRuleHandlerFn|TargetState|TargetStateDef) {\n const handlerFn: UrlRuleHandlerFn = getHandlerFn(handler);\n\n this._otherwiseFn = this.urlRuleFactory.create(val(true), handlerFn);\n this._sorted = false;\n }\n\n /** @inheritdoc */\n initial(handler: string | UrlRuleHandlerFn | TargetState | TargetStateDef) {\n const handlerFn: UrlRuleHandlerFn = getHandlerFn(handler);\n\n const matchFn: UrlRuleMatchFn = (urlParts, router) =>\n router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n\n this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n }\n\n /** @inheritdoc */\n when(matcher: (RegExp|UrlMatcher|string), handler: string|UrlRuleHandlerFn, options?: { priority: number }): UrlRule {\n const rule = this.urlRuleFactory.create(matcher, handler);\n if (isDefined(options && options.priority)) rule.priority = options.priority;\n this.rule(rule);\n return rule;\n }\n\n /** @inheritdoc */\n deferIntercept(defer?: boolean) {\n if (defer === undefined) defer = true;\n this.interceptDeferred = defer;\n }\n}\n\nfunction getHandlerFn(handler: string|UrlRuleHandlerFn|TargetState|TargetStateDef): UrlRuleHandlerFn {\n if (!isFunction(handler) && !isString(handler) && !is(TargetState)(handler) && !TargetState.isDef(handler)) {\n throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n }\n return isFunction(handler) ? handler as UrlRuleHandlerFn : val(handler);\n}\n", "/**\n * @coreapi\n * @module view\n */ /** for typedoc */\nimport { equals, applyPairs, removeFrom, TypedMap, inArray } from '../common/common';\nimport { curry, prop } from '../common/hof';\nimport { isString, isArray } from '../common/predicates';\nimport { trace } from '../common/trace';\nimport { PathNode } from '../path/pathNode';\nimport { ActiveUIView, ViewContext, ViewConfig } from './interface';\nimport { _ViewDeclaration } from '../state/interface';\n\nexport type ViewConfigFactory = (path: PathNode[], decl: _ViewDeclaration) => ViewConfig|ViewConfig[];\n\nexport interface ViewServicePluginAPI {\n _rootViewContext(context?: ViewContext): ViewContext;\n _viewConfigFactory(viewType: string, factory: ViewConfigFactory);\n _registeredUIViews(): ActiveUIView[];\n _activeViewConfigs(): ViewConfig[];\n _onSync(listener: ViewSyncListener): Function;\n}\n\n// A uiView and its matching viewConfig\nexport interface ViewTuple {\n uiView: ActiveUIView;\n viewConfig: ViewConfig;\n}\n\nexport interface ViewSyncListener {\n (viewTuples: ViewTuple[]): void;\n}\n\n/**\n * The View service\n *\n * This service pairs existing `ui-view` components (which live in the DOM)\n * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n *\n * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n * The views from exited states are deactivated via [[deactivateViewConfig]].\n * (See: the [[registerActivateViews]] Transition Hook)\n *\n * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n *\n * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n * are configured with the matching [[ViewConfig]](s)\n *\n */\nexport class ViewService {\n private _uiViews: ActiveUIView[] = [];\n private _viewConfigs: ViewConfig[] = [];\n private _rootContext: ViewContext;\n private _viewConfigFactories: { [key: string]: ViewConfigFactory } = {};\n private _listeners: ViewSyncListener[] = [];\n\n public _pluginapi: ViewServicePluginAPI = {\n _rootViewContext: this._rootViewContext.bind(this),\n _viewConfigFactory: this._viewConfigFactory.bind(this),\n _registeredUIViews: () => this._uiViews,\n _activeViewConfigs: () => this._viewConfigs,\n _onSync: (listener: ViewSyncListener) => {\n this._listeners.push(listener);\n return () => removeFrom(this._listeners, listener);\n },\n };\n\n /**\n * Given a ui-view and a ViewConfig, determines if they \"match\".\n *\n * A ui-view has a fully qualified name (fqn) and a context object. The fqn is built from its overall location in\n * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n *\n * A ViewConfig has a target ui-view name and a context anchor. The ui-view name can be a simple name, or\n * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n *\n * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n *\n * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n * - the ui-view's name matches the ViewConfig's target name\n * - the ui-view's context matches the ViewConfig's anchor\n *\n * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n * - There exists a parent ui-view where:\n * - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n * - the parent ui-view's context matches the ViewConfig's anchor\n * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n *\n * Example:\n *\n * DOM:\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * uiViews: [\n * { fqn: \"$default\", creationContext: { name: \"\" } },\n * { fqn: \"$default.foo\", creationContext: { name: \"A\" } },\n * { fqn: \"$default.foo.$default\", creationContext: { name: \"A.B\" } }\n * { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n * ]\n *\n * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n *\n * - ViewConfig1: { uiViewName: \"bar\", uiViewContextAnchor: \"A.B.C\" }\n * - ViewConfig2: { uiViewName: \"$default.bar\", uiViewContextAnchor: \"A.B\" }\n * - ViewConfig3: { uiViewName: \"foo.$default.bar\", uiViewContextAnchor: \"A\" }\n * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n *\n * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n * - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n * - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n * the tail of the ui-view's fqn \"default.bar\"\n *\n * @internalapi\n */\n static matches = (uiViewsByFqn: TypedMap, uiView: ActiveUIView) => (viewConfig: ViewConfig) => {\n // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n if (uiView.$type !== viewConfig.viewDecl.$type) return false;\n\n // Split names apart from both viewConfig and uiView into segments\n const vc = viewConfig.viewDecl;\n const vcSegments = vc.$uiViewName.split('.');\n const uivSegments = uiView.fqn.split('.');\n\n // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n if (!equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n return false;\n\n // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n const negOffset = (1 - vcSegments.length) || undefined;\n const fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n const uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n }\n\n /**\n * Normalizes a view's name from a state.views configuration block.\n *\n * This should be used by a framework implementation to calculate the values for\n * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n *\n * @param context the context object (state declaration) that the view belongs to\n * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n *\n * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n */\n static normalizeUIViewTarget(context: ViewContext, rawViewName = '') {\n // TODO: Validate incoming view name with a regexp to allow:\n // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n const viewAtContext: string[] = rawViewName.split('@');\n let uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n let uiViewContextAnchor = isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n\n // Handle relative view-name sugar syntax.\n // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n const relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n if (relativeViewNameSugar) {\n // Clobbers existing contextAnchor (rawViewName validation will fix this)\n uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n }\n\n if (uiViewName.charAt(0) === '!') {\n uiViewName = uiViewName.substr(1);\n uiViewContextAnchor = ''; // target absolutely from root\n }\n\n // handle parent relative targeting \"^.^.^\"\n const relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n if (relativeMatch.exec(uiViewContextAnchor)) {\n const anchorState = uiViewContextAnchor.split('.')\n .reduce(((anchor, x) => anchor.parent), context);\n uiViewContextAnchor = anchorState.name;\n } else if (uiViewContextAnchor === '.') {\n uiViewContextAnchor = context.name;\n }\n\n return { uiViewName, uiViewContextAnchor };\n }\n\n constructor() { }\n\n private _rootViewContext(context?: ViewContext): ViewContext {\n return this._rootContext = context || this._rootContext;\n }\n\n private _viewConfigFactory(viewType: string, factory: ViewConfigFactory) {\n this._viewConfigFactories[viewType] = factory;\n }\n\n createViewConfig(path: PathNode[], decl: _ViewDeclaration): ViewConfig[] {\n const cfgFactory = this._viewConfigFactories[decl.$type];\n if (!cfgFactory) throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n const cfgs = cfgFactory(path, decl);\n return isArray(cfgs) ? cfgs : [cfgs];\n }\n\n /**\n * Deactivates a ViewConfig.\n *\n * This function deactivates a `ViewConfig`.\n * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n *\n * @param viewConfig The ViewConfig view to deregister.\n */\n deactivateViewConfig(viewConfig: ViewConfig) {\n trace.traceViewServiceEvent('<- Removing', viewConfig);\n removeFrom(this._viewConfigs, viewConfig);\n }\n\n activateViewConfig(viewConfig: ViewConfig) {\n trace.traceViewServiceEvent('-> Registering', viewConfig);\n this._viewConfigs.push(viewConfig);\n }\n\n\n sync() {\n const uiViewsByFqn: TypedMap =\n this._uiViews.map(uiv => [uiv.fqn, uiv]).reduce(applyPairs, {});\n\n // Return a weighted depth value for a uiView.\n // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n // plus the depth of the state that is populating the uiView\n function uiViewDepth(uiView: ActiveUIView) {\n const stateDepth = (context: ViewContext) =>\n context && context.parent ? stateDepth(context.parent) + 1 : 1;\n return (uiView.fqn.split('.').length * 10000) + stateDepth(uiView.creationContext);\n }\n\n // Return the ViewConfig's context's depth in the context tree.\n function viewConfigDepth(config: ViewConfig) {\n let context: ViewContext = config.viewDecl.$context, count = 0;\n while (++count && context.parent) context = context.parent;\n return count;\n }\n\n // Given a depth function, returns a compare function which can return either ascending or descending order\n const depthCompare = curry((depthFn, posNeg, left, right) => posNeg * (depthFn(left) - depthFn(right)));\n\n const matchingConfigPair = (uiView: ActiveUIView): ViewTuple => {\n const matchingConfigs = this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n if (matchingConfigs.length > 1) {\n // This is OK. Child states can target a ui-view that the parent state also targets (the child wins)\n // Sort by depth and return the match from the deepest child\n // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n }\n return { uiView, viewConfig: matchingConfigs[0] };\n };\n\n const configureUIView = (tuple: ViewTuple) => {\n // If a parent ui-view is reconfigured, it could destroy child ui-views.\n // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n if (this._uiViews.indexOf(tuple.uiView) !== -1)\n tuple.uiView.configUpdated(tuple.viewConfig);\n };\n\n // Sort views by FQN and state depth. Process uiviews nearest the root first.\n const uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n const matchedViewConfigs = uiViewTuples.map(tuple => tuple.viewConfig);\n const unmatchedConfigTuples = this._viewConfigs\n .filter(config => !inArray(matchedViewConfigs, config))\n .map(viewConfig => ({ uiView: undefined, viewConfig }));\n\n uiViewTuples.forEach(configureUIView);\n\n const allTuples: ViewTuple[] = uiViewTuples.concat(unmatchedConfigTuples);\n this._listeners.forEach(cb => cb(allTuples));\n trace.traceViewSync(allTuples);\n }\n\n /**\n * Registers a `ui-view` component\n *\n * When a `ui-view` component is created, it uses this method to register itself.\n * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n *\n * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n * and what the view's state context is.\n *\n * Note: There is no corresponding `deregisterUIView`.\n * A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n *\n * @param uiView The metadata for a UIView\n * @return a de-registration function used when the view is destroyed.\n */\n registerUIView(uiView: ActiveUIView) {\n trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n const uiViews = this._uiViews;\n const fqnAndTypeMatches = (uiv: ActiveUIView) => uiv.fqn === uiView.fqn && uiv.$type === uiView.$type;\n if (uiViews.filter(fqnAndTypeMatches).length)\n trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n\n uiViews.push(uiView);\n this.sync();\n\n return () => {\n const idx = uiViews.indexOf(uiView);\n if (idx === -1) {\n trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n return;\n }\n trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n removeFrom(uiViews)(uiView);\n };\n }\n\n /**\n * Returns the list of views currently available on the page, by fully-qualified name.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n available() {\n return this._uiViews.map(prop('fqn'));\n }\n\n /**\n * Returns the list of views on the page containing loaded content.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n active() {\n return this._uiViews.filter(prop('$config')).map(prop('name'));\n }\n\n}\n", "/**\n * @coreapi\n * @module core\n */ /** */\nimport { StateParams } from './params/stateParams';\nimport { StateDeclaration } from './state/interface';\nimport { StateObject } from './state/stateObject';\nimport { Transition } from './transition/transition';\nimport { Queue } from './common/queue';\nimport { Disposable } from './interface';\n\n/**\n * Global router state\n *\n * This is where we hold the global mutable state such as current state, current\n * params, current transition, etc.\n */\nexport class UIRouterGlobals implements Disposable {\n /**\n * Current parameter values\n *\n * The parameter values from the latest successful transition\n */\n params: StateParams = new StateParams();\n\n /**\n * Current state\n *\n * The to-state from the latest successful transition\n */\n current: StateDeclaration;\n\n /**\n * Current state (internal object)\n *\n * The to-state from the latest successful transition\n * @internalapi\n */\n $current: StateObject;\n\n /**\n * The current started/running transition.\n * This transition has reached at least the onStart phase, but is not yet complete\n */\n transition: Transition;\n\n /** @internalapi */\n lastStartedTransitionId = -1;\n\n /** @internalapi */\n transitionHistory = new Queue([], 1);\n\n /** @internalapi */\n successfulTransitions = new Queue([], 1);\n\n dispose() {\n this.transitionHistory.clear();\n this.successfulTransitions.clear();\n this.transition = null;\n }\n}\n", "/**\n * @coreapi\n * @module url\n */ /** */\n\nimport { UIRouter } from '../router';\nimport { LocationServices, notImplemented, LocationConfig } from '../common/coreservices';\nimport { noop, createProxyFunctions } from '../common/common';\nimport { UrlConfigApi, UrlSyncApi, UrlRulesApi, UrlParts, MatchResult } from './interface';\n\n/** @hidden */\nconst makeStub = (keys: string[]): any =>\n keys.reduce((acc, key) => (acc[key] = notImplemented(key), acc), { dispose: noop });\n\n/* tslint:disable:align */\n/** @hidden */ const locationServicesFns = ['url', 'path', 'search', 'hash', 'onChange'];\n/** @hidden */ const locationConfigFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n/** @hidden */ const umfFns = ['type', 'caseInsensitive', 'strictMode', 'defaultSquashPolicy'];\n/** @hidden */ const rulesFns = ['sort', 'when', 'initial', 'otherwise', 'rules', 'rule', 'removeRule'];\n/** @hidden */ const syncFns = ['deferIntercept', 'listen', 'sync', 'match'];\n/* tslint:enable:align */\n\n/**\n * API for URL management\n */\nexport class UrlService implements LocationServices, UrlSyncApi {\n /** @hidden */\n static locationServiceStub: LocationServices = makeStub(locationServicesFns);\n /** @hidden */\n static locationConfigStub: LocationConfig = makeStub(locationConfigFns);\n\n /**\n * A nested API for managing URL rules and rewrites\n *\n * See: [[UrlRulesApi]] for details\n */\n rules: UrlRulesApi;\n\n /**\n * A nested API to configure the URL and retrieve URL information\n *\n * See: [[UrlConfigApi]] for details\n */\n config: UrlConfigApi;\n\n /** @hidden */\n private router: UIRouter;\n\n /** @hidden */\n constructor(router: UIRouter, lateBind = true) {\n this.router = router;\n this.rules = {} as any;\n this.config = {} as any;\n\n // proxy function calls from UrlService to the LocationService/LocationConfig\n const locationServices = () => router.locationService;\n createProxyFunctions(locationServices, this, locationServices, locationServicesFns, lateBind);\n\n const locationConfig = () => router.locationConfig;\n createProxyFunctions(locationConfig, this.config, locationConfig, locationConfigFns, lateBind);\n\n const umf = () => router.urlMatcherFactory;\n createProxyFunctions(umf, this.config, umf, umfFns);\n\n const urlRouter = () => router.urlRouter;\n createProxyFunctions(urlRouter, this.rules, urlRouter, rulesFns);\n createProxyFunctions(urlRouter, this, urlRouter, syncFns);\n }\n\n /** @inheritdoc */\n url(): string;\n /** @inheritdoc */\n url(newurl: string, replace?: boolean, state?): void;\n url(newurl?, replace?, state?): any { return; }\n /** @inheritdoc */\n path(): string { return; }\n /** @inheritdoc */\n search(): { [key: string]: any } { return; }\n /** @inheritdoc */\n hash(): string { return; }\n /** @inheritdoc */\n onChange(callback: Function): Function { return; }\n\n\n /**\n * Returns the current URL parts\n *\n * This method returns the current URL components as a [[UrlParts]] object.\n *\n * @returns the current url parts\n */\n parts(): UrlParts {\n return { path: this.path(), search: this.search(), hash: this.hash() };\n }\n\n dispose() { }\n\n /** @inheritdoc */\n sync(evt?) { return; }\n /** @inheritdoc */\n listen(enabled?: boolean): Function { return; }\n /** @inheritdoc */\n deferIntercept(defer?: boolean) { return; }\n /** @inheritdoc */\n match(urlParts: UrlParts): MatchResult { return; }\n\n}\n", - "/**\n * @coreapi\n * @module core\n */ /** */\nimport { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { UIRouterPlugin, Disposable } from './interface';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { LocationServices, LocationConfig } from './common/coreservices';\nimport { Trace, trace } from './common/trace';\n\n/** @hidden */\nlet _routerInstance = 0;\n\n/**\n * The master class used to instantiate an instance of UI-Router.\n *\n * UI-Router (for each specific framework) will create an instance of this class during bootstrap.\n * This class instantiates and wires the UI-Router services together.\n *\n * After a new instance of the UIRouter class is created, it should be configured for your app.\n * For instance, app states should be registered with the [[UIRouter.stateRegistry]].\n *\n * ---\n *\n * Normally the framework code will bootstrap UI-Router.\n * If you are bootstrapping UIRouter manually, tell it to monitor the URL by calling\n * [[UrlService.listen]] then [[UrlService.sync]].\n */\nexport class UIRouter {\n /** @hidden */ $id = _routerInstance++;\n /** @hidden */ _disposed = false;\n /** @hidden */ private _disposables: Disposable[] = [];\n\n /** Provides trace information to the console */\n trace: Trace = trace;\n\n /** Provides services related to ui-view synchronization */\n viewService = new ViewService();\n\n /** Provides services related to Transitions */\n transitionService: TransitionService = new TransitionService(this);\n\n /** Global router state */\n globals: UIRouterGlobals = new UIRouterGlobals();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlMatcherFactory: UrlMatcherFactory = new UrlMatcherFactory();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlRouter: UrlRouter = new UrlRouter(this);\n\n /** Provides a registry for states, and related registration services */\n stateRegistry: StateRegistry = new StateRegistry(this);\n\n /** Provides services related to states */\n stateService = new StateService(this);\n\n /** Provides services related to the URL */\n urlService: UrlService = new UrlService(this);\n\n /** @hidden plugin instances are registered here */\n private _plugins: { [key: string]: UIRouterPlugin } = {};\n\n\n /** Registers an object to be notified when the router is disposed */\n disposable(disposable: Disposable) {\n this._disposables.push(disposable);\n }\n\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @param disposable (optional) the disposable to dispose\n */\n dispose(disposable?: any): void {\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n\n this._disposed = true;\n this._disposables.slice().forEach(d => {\n try {\n typeof d.dispose === 'function' && d.dispose(this);\n removeFrom(this._disposables, d);\n } catch (ignored) {}\n });\n }\n\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internalapi\n */\n constructor(\n public locationService: LocationServices = UrlService.locationServiceStub,\n public locationConfig: LocationConfig = UrlService.locationConfigStub,\n ) {\n\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlRouter);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n\n /** Add plugin (as ES6 class) */\n plugin(plugin: { new(router: UIRouter, options?: any): T }, options?: any): T;\n /** Add plugin (as javascript constructor function) */\n plugin(plugin: { (router: UIRouter, options?: any): void }, options?: any): T;\n /** Add plugin (as javascript factory function) */\n plugin(plugin: PluginFactory, options?: any): T;\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n plugin(plugin: any, options: any = {}): T {\n const pluginInstance = new plugin(this, options);\n if (!pluginInstance.name) throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return this._plugins[pluginInstance.name] = pluginInstance;\n }\n\n /**\n * Returns registered plugins\n *\n * Returns the registered plugin of the given `pluginName`.\n * If no `pluginName` is given, returns all registered plugins\n *\n * @param pluginName (optional) the name of the plugin to get\n * @return the named plugin (undefined if not found), or all plugins (if `pluginName` is omitted)\n */\n getPlugin(pluginName: string): UIRouterPlugin;\n getPlugin(): UIRouterPlugin[];\n getPlugin(pluginName?: string): UIRouterPlugin|UIRouterPlugin[] {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n }\n}\n\n/** @internalapi */\nexport type PluginFactory = (router: UIRouter, options?: any) => T;\n", + "/**\n * @coreapi\n * @module core\n */ /** */\nimport { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { UIRouterPlugin, Disposable } from './interface';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { LocationServices, LocationConfig } from './common/coreservices';\nimport { Trace, trace } from './common/trace';\n\n/** @hidden */\nlet _routerInstance = 0;\n\n/**\n * The master class used to instantiate an instance of UI-Router.\n *\n * UI-Router (for each specific framework) will create an instance of this class during bootstrap.\n * This class instantiates and wires the UI-Router services together.\n *\n * After a new instance of the UIRouter class is created, it should be configured for your app.\n * For instance, app states should be registered with the [[UIRouter.stateRegistry]].\n *\n * ---\n *\n * Normally the framework code will bootstrap UI-Router.\n * If you are bootstrapping UIRouter manually, tell it to monitor the URL by calling\n * [[UrlService.listen]] then [[UrlService.sync]].\n */\nexport class UIRouter {\n /** @hidden */ $id = _routerInstance++;\n /** @hidden */ _disposed = false;\n /** @hidden */ private _disposables: Disposable[] = [];\n\n /** Provides trace information to the console */\n trace: Trace = trace;\n\n /** Provides services related to ui-view synchronization */\n viewService = new ViewService();\n\n /** Global router state */\n globals: UIRouterGlobals = new UIRouterGlobals();\n\n /** Provides services related to Transitions */\n transitionService: TransitionService = new TransitionService(this);\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlMatcherFactory: UrlMatcherFactory = new UrlMatcherFactory();\n\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n urlRouter: UrlRouter = new UrlRouter(this);\n\n /** Provides a registry for states, and related registration services */\n stateRegistry: StateRegistry = new StateRegistry(this);\n\n /** Provides services related to states */\n stateService = new StateService(this);\n\n /** Provides services related to the URL */\n urlService: UrlService = new UrlService(this);\n\n /** @hidden plugin instances are registered here */\n private _plugins: { [key: string]: UIRouterPlugin } = {};\n\n\n /** Registers an object to be notified when the router is disposed */\n disposable(disposable: Disposable) {\n this._disposables.push(disposable);\n }\n\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @param disposable (optional) the disposable to dispose\n */\n dispose(disposable?: any): void {\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n\n this._disposed = true;\n this._disposables.slice().forEach(d => {\n try {\n typeof d.dispose === 'function' && d.dispose(this);\n removeFrom(this._disposables, d);\n } catch (ignored) {}\n });\n }\n\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internalapi\n */\n constructor(\n public locationService: LocationServices = UrlService.locationServiceStub,\n public locationConfig: LocationConfig = UrlService.locationConfigStub,\n ) {\n\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlRouter);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n\n /** Add plugin (as ES6 class) */\n plugin(plugin: { new(router: UIRouter, options?: any): T }, options?: any): T;\n /** Add plugin (as javascript constructor function) */\n plugin(plugin: { (router: UIRouter, options?: any): void }, options?: any): T;\n /** Add plugin (as javascript factory function) */\n plugin(plugin: PluginFactory, options?: any): T;\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n plugin(plugin: any, options: any = {}): T {\n const pluginInstance = new plugin(this, options);\n if (!pluginInstance.name) throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return this._plugins[pluginInstance.name] = pluginInstance;\n }\n\n /**\n * Returns registered plugins\n *\n * Returns the registered plugin of the given `pluginName`.\n * If no `pluginName` is given, returns all registered plugins\n *\n * @param pluginName (optional) the name of the plugin to get\n * @return the named plugin (undefined if not found), or all plugins (if `pluginName` is omitted)\n */\n getPlugin(pluginName: string): UIRouterPlugin;\n getPlugin(): UIRouterPlugin[];\n getPlugin(pluginName?: string): UIRouterPlugin|UIRouterPlugin[] {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n }\n}\n\n/** @internalapi */\nexport type PluginFactory = (router: UIRouter, options?: any) => T;\n", + "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { TransitionService } from '../transition/transitionService';\nimport { Resolvable } from '../resolve';\nimport { extend, inArray, map, mapObj, unnestR, values } from '../common';\nimport { PathNode } from '../path';\nimport { TreeChanges } from \"../transition\";\n\nfunction addCoreResolvables(trans: Transition) {\n trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), '');\n trans.addResolvable(Resolvable.fromData(Transition, trans), '');\n trans.addResolvable(Resolvable.fromData('$transition$', trans), '');\n trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), '');\n\n trans.entering().forEach(state => {\n trans.addResolvable(Resolvable.fromData('$state$', state), state);\n });\n}\n\nexport const registerAddCoreResolvables = (transitionService: TransitionService) =>\n transitionService.onCreate({}, addCoreResolvables);\n\nconst TRANSITION_TOKENS = ['$transition$', Transition];\nconst isTransition = inArray(TRANSITION_TOKENS);\n\n// References to Transition in the treeChanges pathnodes makes all\n// previous Transitions reachable in memory, causing a memory leak\n// This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n// Do not use this on current transitions, only on old ones.\nexport const treeChangesCleanup = (trans: Transition) => {\n // If the resolvable is a Transition, return a new resolvable with null data\n const replaceTransitionWithNull = (r: Resolvable): Resolvable =>\n isTransition(r.token) ? Resolvable.fromData(r.token, null) : r;\n\n const cleanPath = (path: PathNode[]) => path.map((node: PathNode) => {\n const resolvables = node.resolvables.map(replaceTransitionWithNull);\n return extend(node.clone(), { resolvables });\n });\n\n const treeChanges: TreeChanges = trans.treeChanges();\n mapObj(treeChanges, cleanPath, treeChanges);\n};\n", "/** @module hooks */ /** */\nimport { isString, isFunction } from '../common/predicates';\nimport { Transition } from '../transition/transition';\nimport { services } from '../common/coreservices';\nimport { TargetState } from '../state/targetState';\nimport { TransitionService } from '../transition/transitionService';\nimport { TransitionHookFn } from '../transition/interface';\n\n/**\n * A [[TransitionHookFn]] that redirects to a different state or params\n *\n * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n *\n * See [[StateDeclaration.redirectTo]]\n */\nconst redirectToHook: TransitionHookFn = (trans: Transition) => {\n const redirect = trans.to().redirectTo;\n if (!redirect) return;\n\n const $state = trans.router.stateService;\n\n function handleResult(result: any) {\n if (!result) return;\n if (result instanceof TargetState) return result;\n if (isString(result)) return $state.target( result, trans.params(), trans.options());\n if (result['state'] || result['params'])\n return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n }\n\n if (isFunction(redirect)) {\n return services.$q.when(redirect(trans)).then(handleResult);\n }\n return handleResult(redirect);\n};\n\nexport const registerRedirectToHook = (transitionService: TransitionService) =>\n transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectToHook);\n", + "/** @module hooks */\n/** for typedoc */\nimport { TransitionStateHookFn } from '../transition/interface';\nimport { Transition } from '../transition/transition';\nimport { TransitionService } from '../transition/transitionService';\nimport { StateDeclaration } from '../state/interface';\nimport { StateObject } from '../state/stateObject';\n\n/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n *\n * @hidden\n */\nfunction makeEnterExitRetainHook(hookName: string): TransitionStateHookFn {\n return (transition: Transition, state: StateDeclaration) => {\n const _state: StateObject = state.$$state();\n const hookFn: TransitionStateHookFn = _state[hookName];\n return hookFn(transition, state);\n };\n}\n\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nconst onExitHook: TransitionStateHookFn = makeEnterExitRetainHook('onExit');\nexport const registerOnExitHook = (transitionService: TransitionService) =>\n transitionService.onExit({ exiting: state => !!state.onExit }, onExitHook);\n\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nconst onRetainHook: TransitionStateHookFn = makeEnterExitRetainHook('onRetain');\nexport const registerOnRetainHook = (transitionService: TransitionService) =>\n transitionService.onRetain({ retained: state => !!state.onRetain }, onRetainHook);\n\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nconst onEnterHook: TransitionStateHookFn = makeEnterExitRetainHook('onEnter');\nexport const registerOnEnterHook = (transitionService: TransitionService) =>\n transitionService.onEnter({ entering: state => !!state.onEnter }, onEnterHook);\n\n", "/** @module hooks */\n/** for typedoc */\nimport { noop } from '../common/common';\nimport { Transition } from '../transition/transition';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { TransitionStateHookFn, TransitionHookFn } from '../transition/interface';\nimport { TransitionService } from '../transition/transitionService';\nimport { val } from '../common/hof';\nimport { StateDeclaration } from '../state/interface';\n\nexport const RESOLVE_HOOK_PRIORITY = 1000;\n\n/**\n * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n *\n * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n *\n * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nconst eagerResolvePath: TransitionHookFn = (trans: Transition) =>\n new ResolveContext(trans.treeChanges().to)\n .resolvePath('EAGER', trans)\n .then(noop);\n\nexport const registerEagerResolvePath = (transitionService: TransitionService) =>\n transitionService.onStart({}, eagerResolvePath, { priority: RESOLVE_HOOK_PRIORITY });\n\n/**\n * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n *\n * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n *\n * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nconst lazyResolveState: TransitionStateHookFn = (trans: Transition, state: StateDeclaration) =>\n new ResolveContext(trans.treeChanges().to)\n .subContext(state.$$state())\n .resolvePath('LAZY', trans)\n .then(noop);\n\nexport const registerLazyResolveState = (transitionService: TransitionService) =>\n transitionService.onEnter({ entering: val(true) }, lazyResolveState, { priority: RESOLVE_HOOK_PRIORITY });\n\n\n/**\n * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n *\n * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n *\n * After all entering states have been entered, this hook resolves any remaining Resolvables.\n * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n *\n * See [[StateDeclaration.resolve]]\n */\nconst resolveRemaining: TransitionHookFn = (trans: Transition) =>\n new ResolveContext(trans.treeChanges().to)\n .resolvePath('LAZY', trans)\n .then(noop);\n\nexport const registerResolveRemaining = (transitionService: TransitionService) =>\n transitionService.onFinish({}, resolveRemaining, { priority: RESOLVE_HOOK_PRIORITY });\n", "/** @module hooks */ /** for typedoc */\nimport { noop } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { Transition } from '../transition/transition';\nimport { ViewService } from '../view/view';\nimport { ViewConfig } from '../view/interface';\nimport { TransitionHookFn } from '../transition/interface';\nimport { TransitionService } from '../transition/transitionService';\n\n\n/**\n * A [[TransitionHookFn]] which waits for the views to load\n *\n * Registered using `transitionService.onStart({}, loadEnteringViews);`\n *\n * Allows the views to do async work in [[ViewConfig.load]] before the transition continues.\n * In angular 1, this includes loading the templates.\n */\nconst loadEnteringViews: TransitionHookFn = (transition: Transition) => {\n const $q = services.$q;\n const enteringViews = transition.views('entering');\n if (!enteringViews.length) return;\n return $q.all(enteringViews.map(view => $q.when(view.load()))).then(noop);\n};\n\nexport const registerLoadEnteringViews = (transitionService: TransitionService) =>\n transitionService.onFinish({}, loadEnteringViews);\n\n/**\n * A [[TransitionHookFn]] which activates the new views when a transition is successful.\n *\n * Registered using `transitionService.onSuccess({}, activateViews);`\n *\n * After a transition is complete, this hook deactivates the old views from the previous state,\n * and activates the new views from the destination state.\n *\n * See [[ViewService]]\n */\nconst activateViews: TransitionHookFn = (transition: Transition) => {\n const enteringViews = transition.views('entering');\n const exitingViews = transition.views('exiting');\n if (!enteringViews.length && !exitingViews.length) return;\n\n const $view: ViewService = transition.router.viewService;\n\n exitingViews.forEach((vc: ViewConfig) => $view.deactivateViewConfig(vc));\n enteringViews.forEach((vc: ViewConfig) => $view.activateViewConfig(vc));\n\n $view.sync();\n};\n\nexport const registerActivateViews = (transitionService: TransitionService) =>\n transitionService.onSuccess({}, activateViews);\n", "/** @module hooks */\n/** for typedoc */\nimport { Transition } from '../transition/transition';\nimport { copy } from '../common/common';\nimport { TransitionService } from '../transition/transitionService';\n\n/**\n * A [[TransitionHookFn]] which updates global UI-Router state\n *\n * Registered using `transitionService.onBefore({}, updateGlobalState);`\n *\n * Before a [[Transition]] starts, updates the global value of \"the current transition\" ([[Globals.transition]]).\n * After a successful [[Transition]], updates the global values of \"the current state\"\n * ([[Globals.current]] and [[Globals.$current]]) and \"the current param values\" ([[Globals.params]]).\n *\n * See also the deprecated properties:\n * [[StateService.transition]], [[StateService.current]], [[StateService.params]]\n */\nconst updateGlobalState = (trans: Transition) => {\n const globals = trans.router.globals;\n\n const transitionSuccessful = () => {\n globals.successfulTransitions.enqueue(trans);\n globals.$current = trans.$to();\n globals.current = globals.$current.self;\n\n copy(trans.params(), globals.params);\n };\n\n const clearCurrentTransition = () => {\n // Do not clear globals.transition if a different transition has started in the meantime\n if (globals.transition === trans) globals.transition = null;\n };\n\n trans.onSuccess({}, transitionSuccessful, { priority: 10000 });\n trans.promise.then(clearCurrentTransition, clearCurrentTransition);\n};\n\nexport const registerUpdateGlobalState = (transitionService: TransitionService) =>\n transitionService.onCreate({}, updateGlobalState);\n", "/** @module hooks */ /** */\nimport { UrlRouter } from '../url/urlRouter';\nimport { StateService } from '../state/stateService';\nimport { Transition } from '../transition/transition';\nimport { TransitionHookFn } from '../transition/interface';\nimport { TransitionService } from '../transition/transitionService';\n\n/**\n * A [[TransitionHookFn]] which updates the URL after a successful transition\n *\n * Registered using `transitionService.onSuccess({}, updateUrl);`\n */\nconst updateUrl: TransitionHookFn = (transition: Transition) => {\n const options = transition.options();\n const $state: StateService = transition.router.stateService;\n const $urlRouter: UrlRouter = transition.router.urlRouter;\n\n // Dont update the url in these situations:\n // The transition was triggered by a URL sync (options.source === 'url')\n // The user doesn't want the url to update (options.location === false)\n // The destination state, and all parents have no navigable url\n if (options.source !== 'url' && options.location && $state.$current.navigable) {\n const urlOptions = { replace: options.location === 'replace' };\n $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions);\n }\n\n $urlRouter.update(true);\n};\n\nexport const registerUpdateUrl = (transitionService: TransitionService) =>\n transitionService.onSuccess({}, updateUrl, { priority: 9999 });\n", + "/** @module hooks */ /** */\nimport { Transition } from '../transition/transition';\nimport { TransitionService } from '../transition/transitionService';\nimport { TransitionHookFn } from '../transition/interface';\nimport { StateDeclaration, LazyLoadResult } from '../state/interface';\nimport { services } from '../common/coreservices';\nimport { StateRule } from '../url/interface';\n\n/**\n * A [[TransitionHookFn]] that performs lazy loading\n *\n * When entering a state \"abc\" which has a `lazyLoad` function defined:\n * - Invoke the `lazyLoad` function (unless it is already in process)\n * - Flag the hook function as \"in process\"\n * - The function should return a promise (that resolves when lazy loading is complete)\n * - Wait for the promise to settle\n * - If the promise resolves to a [[LazyLoadResult]], then register those states\n * - Flag the hook function as \"not in process\"\n * - If the hook was successful\n * - Remove the `lazyLoad` function from the state declaration\n * - If all the hooks were successful\n * - Retry the transition (by returning a TargetState)\n *\n * ```\n * .state('abc', {\n * component: 'fooComponent',\n * lazyLoad: () => System.import('./fooComponent')\n * });\n * ```\n *\n * See [[StateDeclaration.lazyLoad]]\n */\nconst lazyLoadHook: TransitionHookFn = (transition: Transition) => {\n const router = transition.router;\n\n function retryTransition() {\n if (transition.originalTransition().options().source !== 'url') {\n // The original transition was not triggered via url sync\n // The lazy state should be loaded now, so re-try the original transition\n const orig = transition.targetState();\n return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n }\n\n // The original transition was triggered via url sync\n // Run the URL rules and find the best match\n const $url = router.urlService;\n const result = $url.match($url.parts());\n const rule = result && result.rule;\n\n // If the best match is a state, redirect the transition (instead\n // of calling sync() which supersedes the current transition)\n if (rule && rule.type === 'STATE') {\n const state = (rule as StateRule).state;\n const params = result.match;\n return router.stateService.target(state, params, transition.options());\n }\n\n // No matching state found, so let .sync() choose the best non-state match/otherwise\n router.urlService.sync();\n }\n\n const promises = transition.entering()\n .filter(state => !!state.$$state().lazyLoad)\n .map(state => lazyLoadState(transition, state));\n\n return services.$q.all(promises).then(retryTransition);\n};\n\nexport const registerLazyLoadHook = (transitionService: TransitionService) =>\n transitionService.onBefore({ entering: (state) => !!state.lazyLoad }, lazyLoadHook);\n\n\n/**\n * Invokes a state's lazy load function\n *\n * @param transition a Transition context\n * @param state the state to lazy load\n * @returns A promise for the lazy load result\n */\nexport function lazyLoadState(transition: Transition, state: StateDeclaration): Promise {\n const lazyLoadFn = state.$$state().lazyLoad;\n\n // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n let promise = lazyLoadFn['_promise'];\n if (!promise) {\n const success = (result) => {\n delete state.lazyLoad;\n delete state.$$state().lazyLoad;\n delete lazyLoadFn['_promise'];\n return result;\n };\n\n const error = (err) => {\n delete lazyLoadFn['_promise'];\n return services.$q.reject(err);\n };\n\n promise = lazyLoadFn['_promise'] =\n services.$q.when(lazyLoadFn(transition, state))\n .then(updateStateRegistry)\n .then(success, error);\n }\n\n /** Register any lazy loaded state definitions */\n function updateStateRegistry(result: LazyLoadResult) {\n if (result && Array.isArray(result.states)) {\n result.states.forEach(_state => transition.router.stateRegistry.register(_state));\n }\n return result;\n }\n\n return promise;\n}\n", "/** @module transition */ /** */\nimport { TransitionHookPhase, PathType } from './interface';\nimport { GetErrorHandler, GetResultHandler, TransitionHook } from './transitionHook';\n/**\n * This class defines a type of hook, such as `onBefore` or `onEnter`.\n * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n *\n * @interalapi\n */\nexport class TransitionEventType {\n /* tslint:disable:no-inferrable-types */\n constructor(public name: string,\n public hookPhase: TransitionHookPhase,\n public hookOrder: number,\n public criteriaMatchPath: PathType,\n public reverseSort: boolean = false,\n public getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n public getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n public synchronous: boolean = false,\n ) { }\n}\n", - "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport {\n IHookRegistry, TransitionOptions, TransitionHookScope, TransitionHookPhase, TransitionCreateHookFn, HookMatchCriteria,\n HookRegOptions, PathTypes, PathType, RegisteredHooks, TransitionHookFn, TransitionStateHookFn,\n} from './interface';\nimport { Transition } from './transition';\nimport { makeEvent, RegisteredHook } from './hookRegistry';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from '../path/pathNode';\nimport { ViewService } from '../view/view';\nimport { UIRouter } from '../router';\nimport { registerAddCoreResolvables } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook, GetResultHandler, GetErrorHandler } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { Disposable } from '../interface'; // has or is using\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport let defaultTransOpts: TransitionOptions = {\n location : true,\n relative : null,\n inherit : false,\n notify : true,\n reload : false,\n custom : {},\n current : () => null,\n source : 'unknown',\n};\n\n\n/**\n * Plugin API for Transition Service\n * @internalapi\n */\nexport interface TransitionServicePluginAPI {\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n */\n _definePathType(name: string, hookScope: TransitionHookScope);\n\n /**\n * Gets a Path definition used as a criterion against a TreeChanges path\n */\n _getPathTypes(): PathTypes;\n\n /**\n * Defines a transition hook type and returns a transition hook registration\n * function (which can then be used to register hooks of this type).\n */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort?: boolean,\n getResultHandler?: GetResultHandler,\n getErrorHandler?: GetErrorHandler,\n rejectIfSuperseded?: boolean);\n\n /**\n * Returns the known event types, such as `onBefore`\n * If a phase argument is provided, returns only events for the given phase.\n */\n _getEvents(phase?: TransitionHookPhase): TransitionEventType[];\n\n /** Returns the hooks registered for the given hook name */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n */\nexport class TransitionService implements IHookRegistry, Disposable {\n /** @hidden */\n _transitionCount = 0;\n\n /** @hidden */\n public $view: ViewService;\n\n /** @hidden The transition hook types, such as `onEnter`, `onStart`, etc */\n private _eventTypes: TransitionEventType[] = [];\n /** @hidden The registered transition hooks */\n _registeredHooks = { } as RegisteredHooks;\n /** @hidden The paths on a criteria object */\n private _criteriaPaths = { } as PathTypes;\n /** @hidden */\n private _router: UIRouter;\n\n /** @internalapi */\n _pluginapi: TransitionServicePluginAPI;\n\n /**\n * This object has hook de-registration functions for the built-in hooks.\n * This can be used by third parties libraries that wish to customize the behaviors\n *\n * @hidden\n */\n _deregisterHookFns: {\n addCoreResolves: Function;\n ignored: Function;\n invalid: Function;\n redirectTo: Function;\n onExit: Function;\n onRetain: Function;\n onEnter: Function;\n eagerResolve: Function;\n lazyResolve: Function;\n resolveAll: Function;\n loadViews: Function;\n activateViews: Function;\n updateGlobals: Function;\n updateUrl: Function;\n lazyLoad: Function;\n };\n\n /** @hidden */\n constructor(_router: UIRouter) {\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]);\n\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n }\n\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internalapi\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n onCreate(criteria: HookMatchCriteria, callback: TransitionCreateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /**\n * dispose\n * @internalapi\n */\n dispose(router: UIRouter) {\n values(this._registeredHooks).forEach((hooksArray: RegisteredHook[]) => hooksArray.forEach(hook => {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n }));\n }\n\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n create(fromPath: PathNode[], targetState: TargetState): Transition {\n return new Transition(fromPath, targetState, this._router);\n }\n\n /** @hidden */\n private _defineCoreEvents() {\n const Phase = TransitionHookPhase;\n const TH = TransitionHook;\n const paths = this._criteriaPaths;\n const NORMAL_SORT = false, REVERSE_SORT = true;\n const SYNCHRONOUS = true;\n\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n }\n\n /** @hidden */\n private _defineCorePaths() {\n const { STATE, TRANSITION } = TransitionHookScope;\n\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n }\n\n /** @hidden */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort = false,\n getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n synchronous = false) {\n const eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n }\n\n /** @hidden */ // tslint:disable-next-line\n private _getEvents(phase?: TransitionHookPhase): TransitionEventType[] {\n const transitionHookTypes = isDefined(phase) ?\n this._eventTypes.filter(type => type.hookPhase === phase) :\n this._eventTypes.slice();\n\n return transitionHookTypes.sort((l, r) => {\n const cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n }\n\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @hidden\n */\n private _definePathType(name: string, hookScope: TransitionHookScope) {\n this._criteriaPaths[name] = { name, scope: hookScope };\n }\n\n /** * @hidden */ // tslint:disable-next-line\n private _getPathTypes(): PathTypes {\n return this._criteriaPaths;\n }\n\n /** @hidden */\n public getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /** @hidden */\n private _registerCoreTransitionHooks() {\n const fns = this._deregisterHookFns;\n\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n }\n}\n", + "/** @module hooks */ /** */\n\nimport { trace } from '../common/trace';\nimport { Rejection } from '../transition/rejectFactory';\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans: Transition) {\n const ignoredReason = trans._ignoredReason();\n if (!ignoredReason) return;\n\n trace.traceTransitionIgnored(trans);\n\n const pending = trans.router.globals.transition;\n\n // The user clicked a link going back to the *current state* ('A')\n // However, there is also a pending transition in flight (to 'B')\n // Abort the transition to 'B' because the user now wants to be back at 'A'.\n if (ignoredReason === 'SameAsCurrent' && pending) {\n pending.abort();\n }\n\n return Rejection.ignored().toPromise();\n}\n\nexport const registerIgnoredTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n", + "/** @module hooks */ /** */\n\nimport { TransitionService } from '../transition/transitionService';\nimport { Transition } from '../transition/transition';\n\n/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans: Transition) {\n if (!trans.valid()) {\n throw new Error(trans.error());\n }\n}\n\nexport const registerInvalidTransitionHook = (transitionService: TransitionService) =>\n transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n", + "/**\n * @coreapi\n * @module transition\n */\n/** for typedoc */\nimport {\n IHookRegistry, TransitionOptions, TransitionHookScope, TransitionHookPhase, TransitionCreateHookFn, HookMatchCriteria,\n HookRegOptions, PathTypes, PathType, RegisteredHooks, TransitionHookFn, TransitionStateHookFn,\n} from './interface';\nimport { Transition } from './transition';\nimport { makeEvent, RegisteredHook } from './hookRegistry';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from '../path/pathNode';\nimport { ViewService } from '../view/view';\nimport { UIRouter } from '../router';\nimport { registerAddCoreResolvables, treeChangesCleanup } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook, GetResultHandler, GetErrorHandler } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { Disposable } from '../interface'; // has or is using\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport let defaultTransOpts: TransitionOptions = {\n location : true,\n relative : null,\n inherit : false,\n notify : true,\n reload : false,\n custom : {},\n current : () => null,\n source : 'unknown',\n};\n\n\n/**\n * Plugin API for Transition Service\n * @internalapi\n */\nexport interface TransitionServicePluginAPI {\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n */\n _definePathType(name: string, hookScope: TransitionHookScope);\n\n /**\n * Gets a Path definition used as a criterion against a TreeChanges path\n */\n _getPathTypes(): PathTypes;\n\n /**\n * Defines a transition hook type and returns a transition hook registration\n * function (which can then be used to register hooks of this type).\n */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort?: boolean,\n getResultHandler?: GetResultHandler,\n getErrorHandler?: GetErrorHandler,\n rejectIfSuperseded?: boolean);\n\n /**\n * Returns the known event types, such as `onBefore`\n * If a phase argument is provided, returns only events for the given phase.\n */\n _getEvents(phase?: TransitionHookPhase): TransitionEventType[];\n\n /** Returns the hooks registered for the given hook name */\n getHooks(hookName: string): RegisteredHook[];\n}\n\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n */\nexport class TransitionService implements IHookRegistry, Disposable {\n /** @hidden */\n _transitionCount = 0;\n\n /** @hidden */\n public $view: ViewService;\n\n /** @hidden The transition hook types, such as `onEnter`, `onStart`, etc */\n private _eventTypes: TransitionEventType[] = [];\n /** @hidden The registered transition hooks */\n _registeredHooks = { } as RegisteredHooks;\n /** @hidden The paths on a criteria object */\n private _criteriaPaths = { } as PathTypes;\n /** @hidden */\n private _router: UIRouter;\n\n /** @internalapi */\n _pluginapi: TransitionServicePluginAPI;\n\n /**\n * This object has hook de-registration functions for the built-in hooks.\n * This can be used by third parties libraries that wish to customize the behaviors\n *\n * @hidden\n */\n _deregisterHookFns: {\n addCoreResolves: Function;\n ignored: Function;\n invalid: Function;\n redirectTo: Function;\n onExit: Function;\n onRetain: Function;\n onEnter: Function;\n eagerResolve: Function;\n lazyResolve: Function;\n resolveAll: Function;\n loadViews: Function;\n activateViews: Function;\n updateGlobals: Function;\n updateUrl: Function;\n lazyLoad: Function;\n };\n\n /** @hidden */\n constructor(_router: UIRouter) {\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]);\n\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n _router.globals.successfulTransitions.onEvict(treeChangesCleanup);\n }\n\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internalapi\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n onCreate(criteria: HookMatchCriteria, callback: TransitionCreateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onBefore(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onStart(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onExit(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onRetain(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onEnter(criteria: HookMatchCriteria, callback: TransitionStateHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onFinish(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onSuccess(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n /** @inheritdoc */\n onError(criteria: HookMatchCriteria, callback: TransitionHookFn, options?: HookRegOptions): Function { return; }\n\n /**\n * dispose\n * @internalapi\n */\n dispose(router: UIRouter) {\n values(this._registeredHooks).forEach((hooksArray: RegisteredHook[]) => hooksArray.forEach(hook => {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n }));\n }\n\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n create(fromPath: PathNode[], targetState: TargetState): Transition {\n return new Transition(fromPath, targetState, this._router);\n }\n\n /** @hidden */\n private _defineCoreEvents() {\n const Phase = TransitionHookPhase;\n const TH = TransitionHook;\n const paths = this._criteriaPaths;\n const NORMAL_SORT = false, REVERSE_SORT = true;\n const SYNCHRONOUS = true;\n\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n }\n\n /** @hidden */\n private _defineCorePaths() {\n const { STATE, TRANSITION } = TransitionHookScope;\n\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n }\n\n /** @hidden */\n _defineEvent(name: string,\n hookPhase: TransitionHookPhase,\n hookOrder: number,\n criteriaMatchPath: PathType,\n reverseSort = false,\n getResultHandler: GetResultHandler = TransitionHook.HANDLE_RESULT,\n getErrorHandler: GetErrorHandler = TransitionHook.REJECT_ERROR,\n synchronous = false) {\n const eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n }\n\n /** @hidden */ // tslint:disable-next-line\n private _getEvents(phase?: TransitionHookPhase): TransitionEventType[] {\n const transitionHookTypes = isDefined(phase) ?\n this._eventTypes.filter(type => type.hookPhase === phase) :\n this._eventTypes.slice();\n\n return transitionHookTypes.sort((l, r) => {\n const cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n }\n\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @hidden\n */\n private _definePathType(name: string, hookScope: TransitionHookScope) {\n this._criteriaPaths[name] = { name, scope: hookScope };\n }\n\n /** * @hidden */ // tslint:disable-next-line\n private _getPathTypes(): PathTypes {\n return this._criteriaPaths;\n }\n\n /** @hidden */\n public getHooks(hookName: string): RegisteredHook[] {\n return this._registeredHooks[hookName];\n }\n\n /** @hidden */\n private _registerCoreTransitionHooks() {\n const fns = this._deregisterHookFns;\n\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n }\n}\n", "/**\n * @coreapi\n * @module state\n */\n/** */\nimport { createProxyFunctions, defaults, extend, inArray, noop, removeFrom, silenceUncaughtInPromise, silentRejection } from '../common/common';\nimport { isDefined, isObject, isString } from '../common/predicates';\nimport { Queue } from '../common/queue';\nimport { services } from '../common/coreservices';\n\nimport { PathUtils } from '../path/pathUtils';\nimport { PathNode } from '../path/pathNode';\n\nimport { HookResult, TransitionOptions } from '../transition/interface';\nimport { defaultTransOpts } from '../transition/transitionService';\nimport { Rejection, RejectType } from '../transition/rejectFactory';\nimport { Transition } from '../transition/transition';\n\nimport { HrefOptions, LazyLoadResult, StateDeclaration, StateOrName, TransitionPromise } from './interface';\nimport { StateObject } from './stateObject';\nimport { TargetState } from './targetState';\n\nimport { RawParams } from '../params/interface';\nimport { Param } from '../params/param';\nimport { Glob } from '../common/glob';\nimport { UIRouter } from '../router';\nimport { UIInjector } from '../interface';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { lazyLoadState } from '../hooks/lazyLoad';\nimport { not, val } from '../common/hof';\nimport { StateParams } from '../params/stateParams';\n\nexport type OnInvalidCallback =\n (toState?: TargetState, fromState?: TargetState, injector?: UIInjector) => HookResult;\n\n/**\n * Provides state related service functions\n *\n * This class provides services related to ui-router states.\n * An instance of this class is located on the global [[UIRouter]] object.\n */\nexport class StateService {\n /** @internalapi */\n invalidCallbacks: OnInvalidCallback[] = [];\n\n /**\n * The [[Transition]] currently in progress (or null)\n *\n * This is a passthrough through to [[UIRouterGlobals.transition]]\n */\n get transition() { return this.router.globals.transition; }\n /**\n * The latest successful state parameters\n *\n * This is a passthrough through to [[UIRouterGlobals.params]]\n */\n get params(): StateParams { return this.router.globals.params; }\n /**\n * The current [[StateDeclaration]]\n *\n * This is a passthrough through to [[UIRouterGlobals.current]]\n */\n get current() { return this.router.globals.current; }\n /**\n * The current [[StateObject]]\n *\n * This is a passthrough through to [[UIRouterGlobals.$current]]\n */\n get $current() { return this.router.globals.$current; }\n\n /** @internalapi */\n constructor(private router: UIRouter) {\n const getters = ['current', '$current', 'params', 'transition'];\n const boundFns = Object.keys(StateService.prototype).filter(not(inArray(getters)));\n createProxyFunctions(val(StateService.prototype), this, val(this), boundFns);\n }\n\n /** @internalapi */\n dispose() {\n this.defaultErrorHandler(noop);\n this.invalidCallbacks = [];\n }\n\n /**\n * Handler for when [[transitionTo]] is called with an invalid state.\n *\n * Invokes the [[onInvalid]] callbacks, in natural order.\n * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n *\n * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n *\n * @internalapi\n */\n private _handleInvalidTargetState(fromPath: PathNode[], toState: TargetState) {\n const fromState = PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n const globals = this.router.globals;\n const latestThing = () => globals.transitionHistory.peekTail();\n const latest = latestThing();\n const callbackQueue = new Queue(this.invalidCallbacks.slice());\n const injector = new ResolveContext(fromPath).injector();\n\n const checkForRedirect = (result: HookResult) => {\n if (!(result instanceof TargetState)) {\n return;\n }\n\n let target = result;\n // Recreate the TargetState, in case the state is now defined.\n target = this.target(target.identifier(), target.params(), target.options());\n\n if (!target.valid()) {\n return Rejection.invalid(target.error()).toPromise();\n }\n\n if (latestThing() !== latest) {\n return Rejection.superseded().toPromise();\n }\n\n return this.transitionTo(target.identifier(), target.params(), target.options());\n };\n\n function invokeNextCallback() {\n const nextCallback = callbackQueue.dequeue();\n if (nextCallback === undefined) return Rejection.invalid(toState.error()).toPromise();\n\n const callbackResult = services.$q.when(nextCallback(toState, fromState, injector));\n return callbackResult.then(checkForRedirect).then(result => result || invokeNextCallback());\n }\n\n return invokeNextCallback();\n }\n\n /**\n * Registers an Invalid State handler\n *\n * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n * has been called with an invalid state reference parameter\n *\n * Example:\n * ```js\n * stateService.onInvalid(function(to, from, injector) {\n * if (to.name() === 'foo') {\n * let lazyLoader = injector.get('LazyLoadService');\n * return lazyLoader.load('foo')\n * .then(() => stateService.target('foo'));\n * }\n * });\n * ```\n *\n * @param {function} callback invoked when the toState is invalid\n * This function receives the (invalid) toState, the fromState, and an injector.\n * The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n * If one is returned, it is treated as a redirect.\n *\n * @returns a function which deregisters the callback\n */\n onInvalid(callback: OnInvalidCallback): Function {\n this.invalidCallbacks.push(callback);\n return function deregisterListener() {\n removeFrom(this.invalidCallbacks)(callback);\n }.bind(this);\n }\n\n\n /**\n * Reloads the current state\n *\n * A method that force reloads the current state, or a partial state hierarchy.\n * All resolves are re-resolved, and components reinstantiated.\n *\n * #### Example:\n * ```js\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * $state.reload();\n * }\n * });\n * ```\n *\n * Note: `reload()` is just an alias for:\n *\n * ```js\n * $state.transitionTo($state.current, $state.params, {\n * reload: true, inherit: false\n * });\n * ```\n *\n * @param reloadState A state name or a state object.\n * If present, this state and all its children will be reloaded, but ancestors will not reload.\n *\n * #### Example:\n * ```js\n * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n * //and current state is 'contacts.detail.item'\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * //will reload 'contact.detail' and nested 'contact.detail.item' states\n * $state.reload('contact.detail');\n * }\n * });\n * ```\n *\n * @returns A promise representing the state of the new transition. See [[StateService.go]]\n */\n reload(reloadState?: StateOrName): Promise {\n return this.transitionTo(this.current, this.params, {\n reload: isDefined(reloadState) ? reloadState : true,\n inherit: false,\n notify: false,\n });\n }\n\n /**\n * Transition to a different state and/or parameters\n *\n * Convenience method for transitioning to a new state.\n *\n * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n * inherit from the current parameter values (because of `inherit: true`).\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.go('contact.detail');\n * };\n * });\n * ```\n *\n * @param to Absolute state name, state object, or relative state path (relative to current state).\n *\n * Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to the parent state\n * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n *\n * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n *\n * Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n * This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n *\n * @param options Transition options\n *\n * @returns {promise} A promise representing the state of the new transition.\n */\n go(to: StateOrName, params?: RawParams, options?: TransitionOptions): TransitionPromise {\n const defautGoOpts = { relative: this.$current, inherit: true };\n const transOpts = defaults(options, defautGoOpts, defaultTransOpts);\n return this.transitionTo(to, params, transOpts);\n }\n\n /**\n * Creates a [[TargetState]]\n *\n * This is a factory method for creating a TargetState\n *\n * This may be returned from a Transition Hook to redirect a transition, for example.\n */\n target(identifier: StateOrName, params?: RawParams, options: TransitionOptions = {}): TargetState {\n // If we're reloading, find the state object to reload from\n if (isObject(options.reload) && !(options.reload).name)\n throw new Error('Invalid reload state object');\n const reg = this.router.stateRegistry;\n options.reloadState = options.reload === true ? reg.root() : reg.matcher.find( options.reload, options.relative);\n\n if (options.reload && !options.reloadState)\n throw new Error(`No such reload state '${(isString(options.reload) ? options.reload : (options.reload).name)}'`);\n\n return new TargetState(this.router.stateRegistry, identifier, params, options);\n }\n\n private getCurrentPath(): PathNode[] {\n const globals = this.router.globals;\n const latestSuccess: Transition = globals.successfulTransitions.peekTail();\n const rootPath = () => [ new PathNode(this.router.stateRegistry.root()) ];\n return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n }\n\n /**\n * Low-level method for transitioning to a new state.\n *\n * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.transitionTo('contact.detail');\n * };\n * });\n * ```\n *\n * @param to State name or state object.\n * @param toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param options Transition options\n *\n * @returns A promise representing the state of the new transition. See [[go]]\n */\n transitionTo(to: StateOrName, toParams: RawParams = {}, options: TransitionOptions = {}): TransitionPromise {\n const router = this.router;\n const globals = router.globals;\n options = defaults(options, defaultTransOpts);\n const getCurrent = () =>\n globals.transition;\n options = extend(options, { current: getCurrent });\n\n const ref: TargetState = this.target(to, toParams, options);\n const currentPath = this.getCurrentPath();\n\n if (!ref.exists())\n return this._handleInvalidTargetState(currentPath, ref);\n\n if (!ref.valid())\n return silentRejection(ref.error());\n\n /**\n * Special handling for Ignored, Aborted, and Redirected transitions\n *\n * The semantics for the transition.run() promise and the StateService.transitionTo()\n * promise differ. For instance, the run() promise may be rejected because it was\n * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n * no error occurred. Likewise, the transition.run() promise may be rejected because of\n * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n */\n const rejectedTransitionHandler = (trans: Transition) => (error: any): Promise => {\n if (error instanceof Rejection) {\n const isLatest = router.globals.lastStartedTransitionId === trans.$id;\n\n if (error.type === RejectType.IGNORED) {\n isLatest && router.urlRouter.update();\n // Consider ignored `Transition.run()` as a successful `transitionTo`\n return services.$q.when(globals.current);\n }\n\n const detail: any = error.detail;\n if (error.type === RejectType.SUPERSEDED && error.redirected && detail instanceof TargetState) {\n // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n // by returning the promise for the new (redirect) `Transition.run()`.\n const redirect: Transition = trans.redirect(detail);\n return redirect.run().catch(rejectedTransitionHandler(redirect));\n }\n\n if (error.type === RejectType.ABORTED) {\n isLatest && router.urlRouter.update();\n return services.$q.reject(error);\n }\n }\n\n const errorHandler = this.defaultErrorHandler();\n errorHandler(error);\n\n return services.$q.reject(error);\n };\n\n const transition = this.router.transitionService.create(currentPath, ref);\n const transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n silenceUncaughtInPromise(transitionToPromise); // issue #2676\n\n // Return a promise for the transition, which also has the transition object on it.\n return extend(transitionToPromise, { transition });\n }\n\n /**\n * Checks if the current state *is* the provided state\n *\n * Similar to [[includes]] but only checks for the full state name.\n * If params is supplied then it will be tested for strict equality against the current\n * active params object, so all params must match with none missing and no extras.\n *\n * #### Example:\n * ```js\n * $state.$current.name = 'contacts.details.item';\n *\n * // absolute name\n * $state.is('contact.details.item'); // returns true\n * $state.is(contactDetailItemStateObject); // returns true\n * ```\n *\n * // relative name (. and ^), typically from a template\n * // E.g. from the 'contacts.details' template\n * ```html\n *
    Item
    \n * ```\n *\n * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns Returns true if it is the state.\n */\n is(stateOrName: StateOrName, params?: RawParams, options?: { relative?: StateOrName }): boolean {\n options = defaults(options, { relative: this.$current });\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state)) return undefined;\n if (this.$current !== state) return false;\n if (!params) return true;\n\n const schema: Param[] = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n }\n\n /**\n * Checks if the current state *includes* the provided state\n *\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * #### Example when `$state.$current.name === 'contacts.details.item'`\n * ```js\n * // Using partial names\n * $state.includes(\"contacts\"); // returns true\n * $state.includes(\"contacts.details\"); // returns true\n * $state.includes(\"contacts.details.item\"); // returns true\n * $state.includes(\"contacts.list\"); // returns false\n * $state.includes(\"about\"); // returns false\n * ```\n *\n * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n * ```js\n * $state.includes(\"*.details.*.*\"); // returns true\n * $state.includes(\"*.details.**\"); // returns true\n * $state.includes(\"**.item.**\"); // returns true\n * $state.includes(\"*.details.item.url\"); // returns true\n * $state.includes(\"*.details.*.url\"); // returns true\n * $state.includes(\"*.details.*\"); // returns false\n * $state.includes(\"item.**\"); // returns false\n * ```\n *\n * @param stateOrName A partial name, relative name, glob pattern,\n * or state object to be searched for within the current state name.\n * @param params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n includes(stateOrName: StateOrName, params?: RawParams, options?: TransitionOptions): boolean {\n options = defaults(options, { relative: this.$current });\n const glob = isString(stateOrName) && Glob.fromString( stateOrName);\n\n if (glob) {\n if (!glob.matches(this.$current.name)) return false;\n stateOrName = this.$current.name;\n }\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n\n if (!isDefined(state)) return undefined;\n if (!isDefined(include[state.name])) return false;\n if (!params) return true;\n\n const schema: Param[] = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n }\n\n\n /**\n * Generates a URL for a state and parameters\n *\n * Returns the url for the given state populated with the given params.\n *\n * #### Example:\n * ```js\n * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n * ```\n *\n * @param stateOrName The state name or state object you'd like to generate a url from.\n * @param params An object of parameter values to fill the state's required parameters.\n * @param options Options object. The options are:\n *\n * @returns {string} compiled state url\n */\n href(stateOrName: StateOrName, params: RawParams, options?: HrefOptions): string {\n const defaultHrefOpts = {\n lossy: true,\n inherit: true,\n absolute: false,\n relative: this.$current,\n };\n options = defaults(options, defaultHrefOpts);\n params = params || {};\n\n const state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n\n if (!isDefined(state)) return null;\n if (options.inherit) params = this.params.$inherit(params, this.$current, state);\n\n const nav = (state && options.lossy) ? state.navigable : state;\n\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return this.router.urlRouter.href(nav.url, params, {\n absolute: options.absolute,\n });\n }\n\n /** @hidden */\n private _defaultErrorHandler: ((_error: any) => void) = function $defaultErrorHandler($error$) {\n if ($error$ instanceof Error && $error$.stack) {\n console.error($error$);\n console.error($error$.stack);\n } else if ($error$ instanceof Rejection) {\n console.error($error$.toString());\n if ($error$.detail && $error$.detail.stack)\n console.error($error$.detail.stack);\n } else {\n console.error($error$);\n }\n };\n\n /**\n * Sets or gets the default [[transitionTo]] error handler.\n *\n * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n * This includes errors caused by resolves and transition hooks.\n *\n * Note:\n * This handler does not receive certain Transition rejections.\n * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n *\n * The built-in default error handler logs the error to the console.\n *\n * You can provide your own custom handler.\n *\n * #### Example:\n * ```js\n * stateService.defaultErrorHandler(function() {\n * // Do not log transitionTo errors\n * });\n * ```\n *\n * @param handler a global error handler function\n * @returns the current global error handler\n */\n defaultErrorHandler(handler?: (error: any) => void): (error: any) => void {\n return this._defaultErrorHandler = handler || this._defaultErrorHandler;\n }\n\n /**\n * Gets a registered [[StateDeclaration]] object\n *\n * Returns the state declaration object for any specific state, or for all registered states.\n *\n * @param stateOrName (absolute or relative) If provided, will only get the declaration object for the requested state.\n * If not provided, returns an array of ALL states.\n * @param base When `stateOrName` is a relative state reference (such as `.bar.baz`), the state will be retrieved relative to this state.\n *\n * @returns a [[StateDeclaration]] object (or array of all registered [[StateDeclaration]] objects.)\n */\n get(stateOrName: StateOrName, base: StateOrName): StateDeclaration;\n get(stateOrName: StateOrName): StateDeclaration;\n get(): StateDeclaration[];\n get(stateOrName?: StateOrName, base?: StateOrName): any {\n const reg = this.router.stateRegistry;\n if (arguments.length === 0) return reg.get();\n return reg.get(stateOrName, base || this.$current);\n }\n\n /**\n * Lazy loads a state\n *\n * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n *\n * @param stateOrName the state that should be lazy loaded\n * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n * This noop transition is not actually run.\n *\n * @returns a promise to lazy load\n */\n lazyLoad(stateOrName: StateOrName, transition?: Transition): Promise {\n const state: StateDeclaration = this.get(stateOrName);\n if (!state || !state.lazyLoad) throw new Error('Can not lazy load ' + stateOrName);\n\n const currentPath = this.getCurrentPath();\n const target = PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n transition = transition || this.router.transitionService.create(currentPath, target);\n\n return lazyLoadState(transition, state);\n }\n}\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { isArray, isObject, $QLike } from '../common/index';\n\n/**\n * An angular1-like promise api\n *\n * This object implements four methods similar to the\n * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This API provides native ES6 promise support wrapped as a $q-like API.\n * Internally, UI-Router uses this $q object to perform promise operations.\n * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n *\n * $q-like promise api\n */\nexport const $q = {\n /** Normalizes a value as a promise */\n when: (val) => new Promise((resolve, reject) => resolve(val)),\n\n /** Normalizes a value as a promise rejection */\n reject: (val) => new Promise((resolve, reject) => { reject(val); }),\n\n /** @returns a deferred object, which has `resolve` and `reject` functions */\n defer: () => {\n const deferred: any = {};\n deferred.promise = new Promise((resolve, reject) => {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n },\n\n /** Like Promise.all(), but also supports object key/promise notation like $q */\n all: (promises: { [key: string]: Promise } | Promise[]) => {\n if (isArray(promises)) {\n return Promise.all(promises);\n }\n\n if (isObject(promises)) {\n // Convert promises map to promises array.\n // When each promise resolves, map it to a tuple { key: key, val: val }\n const chain = Object.keys(promises)\n .map(key => promises[key].then(val => ({ key, val })));\n\n // Then wait for all promises to resolve, and convert them back to an object\n return $q.all(chain).then(values =>\n values.reduce((acc, tuple) => { acc[tuple.key] = tuple.val; return acc; }, {}));\n }\n },\n} as $QLike;\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport {\n extend, assertPredicate, isFunction, isArray, isInjectable, $InjectorLike, IInjectable,\n} from '../common/index';\n\n// globally available injectables\nconst globals = {};\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\n\n/**\n * A basic angular1-like injector api\n *\n * This object implements four methods similar to the\n * [angular 1 dependency injector](https://docs.angularjs.org/api/auto/service/$injector)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This object provides a naive implementation of a globally scoped dependency injection system.\n * It supports the following DI approaches:\n *\n * ### Function parameter names\n *\n * A function's `.toString()` is called, and the parameter names are parsed.\n * This only works when the parameter names aren't \"mangled\" by a minifier such as UglifyJS.\n *\n * ```js\n * function injectedFunction(FooService, BarService) {\n * // FooService and BarService are injected\n * }\n * ```\n *\n * ### Function annotation\n *\n * A function may be annotated with an array of dependency names as the `$inject` property.\n *\n * ```js\n * injectedFunction.$inject = [ 'FooService', 'BarService' ];\n * function injectedFunction(fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }\n * ```\n *\n * ### Array notation\n *\n * An array provides the names of the dependencies to inject (as strings).\n * The function is the last element of the array.\n *\n * ```js\n * [ 'FooService', 'BarService', function (fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }]\n * ```\n *\n * @type {$InjectorLike}\n */\nexport const $injector = {\n /** Gets an object from DI based on a string token */\n get: name => globals[name],\n\n /** Returns true if an object named `name` exists in global DI */\n has: (name) => $injector.get(name) != null,\n\n /**\n * Injects a function\n *\n * @param fn the function to inject\n * @param context the function's `this` binding\n * @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`\n */\n invoke: (fn: IInjectable, context?, locals?) => {\n const all = extend({}, globals, locals || {});\n const params = $injector.annotate(fn);\n const ensureExist = assertPredicate((key: string) => all.hasOwnProperty(key), key => `DI can't find injectable: '${key}'`);\n const args = params.filter(ensureExist).map(x => all[x]);\n if (isFunction(fn)) return fn.apply(context, args);\n else return (fn as any[]).slice(-1)[0].apply(context, args);\n },\n\n /**\n * Returns a function's dependencies\n *\n * Analyzes a function (or array) and returns an array of DI tokens that the function requires.\n * @return an array of `string`s\n */\n annotate: (fn: IInjectable): any[] => {\n if (!isInjectable(fn)) throw new Error(`Not an injectable function: ${fn}`);\n if (fn && (fn as any).$inject) return (fn as any).$inject;\n if (isArray(fn)) return fn.slice(0, -1);\n const fnStr = fn.toString().replace(STRIP_COMMENTS, '');\n const result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n return result || [];\n },\n} as $InjectorLike;\n", + "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport {\n LocationConfig, LocationServices, identity, unnestR, isArray, splitEqual, splitHash, splitQuery,\n} from '../common';\nimport { UIRouter } from '../router';\n\nexport const keyValsToObjectR = (accum, [key, val]) => {\n if (!accum.hasOwnProperty(key)) {\n accum[key] = val;\n } else if (isArray(accum[key])) {\n accum[key].push(val);\n } else {\n accum[key] = [accum[key], val];\n }\n return accum;\n};\n\nexport const getParams = (queryString: string): any =>\n queryString.split('&').filter(identity).map(splitEqual).reduce(keyValsToObjectR, {});\n\nexport function parseUrl(url: string) {\n const orEmptyString = x => x || '';\n const [beforehash, hash] = splitHash(url).map(orEmptyString);\n const [path, search] = splitQuery(beforehash).map(orEmptyString);\n\n return { path, search, hash, url };\n}\n\nexport const buildUrl = (loc: LocationServices) => {\n const path = loc.path();\n const searchObject = loc.search();\n const hash = loc.hash();\n\n const search = Object.keys(searchObject).map(key => {\n const param = searchObject[key];\n const vals = isArray(param) ? param : [param];\n return vals.map(val => key + '=' + val);\n }).reduce(unnestR, []).join('&');\n\n return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n};\n\nexport function locationPluginFactory(\n name: string,\n isHtml5: boolean,\n serviceClass: { new(uiRouter?: UIRouter): LocationServices },\n configurationClass: { new(uiRouter?: UIRouter, isHtml5?: boolean): LocationConfig },\n) {\n return function(uiRouter: UIRouter) {\n const service = uiRouter.locationService = new serviceClass(uiRouter);\n const configuration = uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5);\n\n function dispose(router: UIRouter) {\n router.dispose(service);\n router.dispose(configuration);\n }\n\n return { name, service, configuration, dispose };\n };\n}\n", "/**\n * @internalapi\n * @module vanilla\n */ /** */\n\nimport { deregAll, isDefined, LocationServices, removeFrom, root } from '../common';\nimport { Disposable } from '../interface';\nimport { UIRouter } from '../router';\nimport { HistoryLike, LocationLike } from './interface';\nimport { buildUrl, getParams, parseUrl } from './utils';\n\n/** A base `LocationServices` */\nexport abstract class BaseLocationServices implements LocationServices, Disposable {\n private _listeners: Function[] = [];\n _location: LocationLike;\n _history: HistoryLike;\n\n _listener = evt => this._listeners.forEach(cb => cb(evt));\n\n constructor(router: UIRouter, public fireAfterUpdate: boolean) {\n this._location = root.location;\n this._history = root.history;\n }\n\n /**\n * This should return the current internal URL representation.\n *\n * The internal URL includes only the portion that UI-Router matches.\n * It does not include:\n * - protocol\n * - server\n * - port\n * - base href or hash\n */\n protected abstract _get(): string;\n\n /**\n * This should set the current URL.\n *\n * The `url` param should include only the portion that UI-Router matches on.\n * It should not include:\n * - protocol\n * - server\n * - port\n * - base href or hash\n *\n * However, after this function completes, the browser URL should reflect the entire (fully qualified)\n * HREF including those data.\n */\n protected abstract _set(state: any, title: string, url: string, replace: boolean);\n\n hash = () => parseUrl(this._get()).hash;\n path = () => parseUrl(this._get()).path;\n search = () => getParams(parseUrl(this._get()).search);\n\n url(url?: string, replace = true): string {\n if (isDefined(url) && url !== this._get()) {\n this._set(null, null, url, replace);\n\n if (this.fireAfterUpdate) {\n this._listeners.forEach(cb => cb({ url }));\n }\n }\n\n return buildUrl(this);\n }\n\n onChange(cb: EventListener) {\n this._listeners.push(cb);\n return () => removeFrom(this._listeners, cb);\n }\n\n dispose(router: UIRouter) {\n deregAll(this._listeners);\n }\n}\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { root, trimHashVal } from '../common';\nimport { UIRouter } from '../router';\nimport { BaseLocationServices } from './baseLocationService';\n\n/** A `LocationServices` that uses the browser hash \"#\" to get/set the current location */\nexport class HashLocationService extends BaseLocationServices {\n constructor(router: UIRouter) {\n super(router, false);\n root.addEventListener('hashchange', this._listener, false);\n }\n\n _get() {\n return trimHashVal(this._location.hash);\n }\n _set(state: any, title: string, url: string, replace: boolean) {\n this._location.hash = url;\n }\n\n dispose (router: UIRouter) {\n super.dispose(router);\n root.removeEventListener('hashchange', this._listener);\n }\n}\n\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { BaseLocationServices } from './baseLocationService';\nimport { UIRouter } from '../router';\n\n/** A `LocationServices` that gets/sets the current location from an in-memory object */\nexport class MemoryLocationService extends BaseLocationServices {\n _url: string;\n\n constructor(router: UIRouter) {\n super(router, true);\n }\n\n _get() {\n return this._url;\n }\n\n _set(state: any, title: string, url: string, replace: boolean) {\n this._url = url;\n }\n}\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { UIRouter } from '../router';\nimport { BaseLocationServices } from './baseLocationService';\nimport { LocationConfig, root, splitHash, splitQuery, stripLastPathElement } from '../common';\n\n/**\n * A `LocationServices` that gets/sets the current location using the browser's `location` and `history` apis\n *\n * Uses `history.pushState` and `history.replaceState`\n */\nexport class PushStateLocationService extends BaseLocationServices {\n _config: LocationConfig;\n\n constructor(router: UIRouter) {\n super(router, true);\n this._config = router.urlService.config;\n root.addEventListener('popstate', this._listener, false);\n }\n\n /**\n * Gets the base prefix without:\n * - trailing slash\n * - trailing filename\n * - protocol and hostname\n *\n * If , this returns '/base'.\n * If , this returns '/foo/base'.\n * If , this returns '/base'.\n * If , this returns '/base'.\n * If , this returns ''.\n * If , this returns ''.\n * If , this returns ''.\n *\n * See: https://html.spec.whatwg.org/dev/semantics.html#the-base-element\n */\n private _getBasePrefix() {\n return stripLastPathElement(this._config.baseHref());\n }\n\n protected _get() {\n let { pathname, hash, search } = this._location;\n search = splitQuery(search)[1]; // strip ? if found\n hash = splitHash(hash)[1]; // strip # if found\n\n const basePrefix = this._getBasePrefix();\n const exactBaseHrefMatch = pathname === this._config.baseHref();\n const startsWithBase = pathname.substr(0, basePrefix.length) === basePrefix;\n pathname = exactBaseHrefMatch ? '/' : startsWithBase ? pathname.substring(basePrefix.length) : pathname;\n\n return pathname + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n }\n\n protected _set(state: any, title: string, url: string, replace: boolean) {\n const basePrefix = this._getBasePrefix();\n const slash = url && url[0] !== '/' ? '/' : '';\n const fullUrl = (url === '' || url === '/') ? this._config.baseHref() : basePrefix + slash + url;\n\n if (replace) {\n this._history.replaceState(state, title, fullUrl);\n } else {\n this._history.pushState(state, title, fullUrl);\n }\n }\n\n public dispose(router: UIRouter) {\n super.dispose(router);\n root.removeEventListener('popstate', this._listener);\n }\n}\n\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { LocationConfig } from '../common/coreservices';\nimport { isDefined } from '../common/predicates';\nimport { noop } from '../common/common';\n\n/** A `LocationConfig` mock that gets/sets all config from an in-memory object */\nexport class MemoryLocationConfig implements LocationConfig {\n dispose = noop;\n\n _baseHref = '';\n _port = 80;\n _protocol = 'http';\n _host = 'localhost';\n _hashPrefix = '';\n\n port = () => this._port;\n protocol = () => this._protocol;\n host = () => this._host;\n baseHref = () => this._baseHref;\n html5Mode = () => false;\n hashPrefix = (newval?) => isDefined(newval) ? this._hashPrefix = newval : this._hashPrefix;\n}\n", "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { isDefined } from '../common/predicates';\nimport { LocationConfig } from '../common/coreservices';\n\n/** A `LocationConfig` that delegates to the browser's `location` object */\nexport class BrowserLocationConfig implements LocationConfig {\n private _baseHref = undefined;\n private _hashPrefix = '';\n\n constructor(router?, private _isHtml5 = false) { }\n\n port(): number {\n if (location.port) {\n return Number(location.port);\n }\n\n return this.protocol() === 'https' ? 443 : 80;\n }\n\n protocol(): string {\n return location.protocol.replace(/:/g, '');\n }\n\n host(): string {\n return location.hostname;\n }\n\n html5Mode(): boolean {\n return this._isHtml5;\n }\n\n hashPrefix(): string;\n hashPrefix(newprefix?: string): string {\n return isDefined(newprefix) ? this._hashPrefix = newprefix : this._hashPrefix;\n }\n\n baseHref(href?: string): string {\n return isDefined(href) ? this._baseHref = href :\n isDefined(this._baseHref) ? this._baseHref : this.applyDocumentBaseHref();\n }\n\n applyDocumentBaseHref() {\n const baseTag: HTMLBaseElement = document.getElementsByTagName('base')[0];\n return this._baseHref = baseTag ? baseTag.href.substr(location.origin.length) : location.pathname || '/';\n }\n\n dispose() {}\n}\n", + "/**\n * @internalapi\n * @module vanilla\n */\n/** */\nimport { BrowserLocationConfig } from './browserLocationConfig';\nimport { HashLocationService } from './hashLocationService';\nimport { locationPluginFactory } from './utils';\nimport { LocationPlugin, ServicesPlugin } from './interface';\nimport { UIRouter } from '../router';\nimport { PushStateLocationService } from './pushStateLocationService';\nimport { MemoryLocationService } from './memoryLocationService';\nimport { MemoryLocationConfig } from './memoryLocationConfig';\nimport { $injector } from './injector';\nimport { $q } from './q';\nimport { services } from '../common/coreservices';\n\nexport function servicesPlugin(router: UIRouter): ServicesPlugin {\n services.$injector = $injector;\n services.$q = $q;\n\n return { name: 'vanilla.services', $q, $injector, dispose: () => null };\n}\n\n/** A `UIRouterPlugin` uses the browser hash to get/set the current location */\nexport const hashLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig);\n\n/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\nexport const pushStateLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.pushStateLocation', true, PushStateLocationService, BrowserLocationConfig);\n\n/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\nexport const memoryLocationPlugin: (router: UIRouter) => LocationPlugin =\n locationPluginFactory('vanilla.memoryLocation', false, MemoryLocationService, MemoryLocationConfig);\n", "/**\n * # Core classes and interfaces\n *\n * The classes and interfaces that are core to ui-router and do not belong\n * to a more specific subsystem (such as resolve).\n *\n * @coreapi\n * @preferred\n * @module core\n */ /** for typedoc */\n\n// Need to import or export at least one concrete something\nimport { noop } from './common/common';\nimport { UIRouter } from './router';\n\n/**\n * An interface for getting values from dependency injection.\n *\n * This is primarily used to get resolve values for a given token.\n * An instance of the `UIInjector` can be retrieved from the current transition using [[Transition.injector]].\n *\n * ---\n *\n * If no resolve is found for a token, then it will delegate to the native injector.\n * The native injector may be Angular 1 `$injector`, Angular 2 `Injector`, or a simple polyfill.\n *\n * In Angular 2, the native injector might be the root Injector,\n * or it might be a lazy loaded `NgModule` injector scoped to a lazy load state tree.\n */\nexport interface UIInjector {\n /**\n * Gets a value from the injector.\n *\n * For a given token, returns the value from the injector that matches the token.\n * If the token is for a resolve that has not yet been fetched, this throws an error.\n *\n * #### Example:\n * ```js\n * var myResolve = injector.get('myResolve');\n * ```\n *\n * #### ng1 Example:\n * ```js\n * // Fetch StateService\n * injector.get('$state').go('home');\n * ```\n *\n * #### ng2 Example:\n * ```js\n * import {StateService} from \"ui-router-ng2\";\n * // Fetch StateService\n * injector.get(StateService).go('home');\n * ```\n *\n * #### Typescript Example:\n * ```js\n * var stringArray = injector.get('myStringArray');\n * ```\n *\n * ### `NOWAIT` policy\n *\n * When using [[ResolvePolicy.async]] === `NOWAIT`, the value returned from `get()` is a promise for the result.\n * The promise is not automatically unwrapped.\n *\n * @param token the key for the value to get. May be a string, a class, or any arbitrary object.\n * @return the Dependency Injection value that matches the token\n */\n get(token: any): any;\n /** Gets a value as type `T` (generics parameter) */\n get(token: any): T;\n\n /**\n * Asynchronously gets a value from the injector\n *\n * For a given token, returns a promise for the value from the injector that matches the token.\n * If the token is for a resolve that has not yet been fetched, this triggers the resolve to load.\n *\n * #### Example:\n * ```js\n * return injector.getAsync('myResolve').then(value => {\n * if (value === 'declined') return false;\n * });\n * ```\n *\n * @param token the key for the value to get. May be a string or arbitrary object.\n * @return a Promise for the Dependency Injection value that matches the token\n */\n getAsync(token: any): Promise;\n /** Asynchronously gets a value as type `T` (generics parameter) */\n getAsync(token: any): Promise;\n\n /**\n * Gets a value from the native injector\n *\n * Returns a value from the native injector, bypassing anything in the [[ResolveContext]].\n *\n * Example:\n * ```js\n * let someThing = injector.getNative(SomeToken);\n * ```\n *\n * @param token the key for the value to get. May be a string or arbitrary object.\n * @return the Dependency Injection value that matches the token\n */\n getNative(token: any): any;\n getNative(token: any): T;\n}\n\n/** @internalapi */\nexport interface UIRouterPlugin extends Disposable {\n name: string;\n}\n\n/** @internalapi */\nexport abstract class UIRouterPluginBase implements UIRouterPlugin, Disposable {\n abstract name: string;\n dispose(router: UIRouter) { }\n}\n\n/** @internalapi */\nexport interface Disposable {\n /** Instructs the Disposable to clean up any resources */\n dispose(router?: UIRouter);\n}\n", + "/** @module ng1 */ /** */\nimport { ng as angular } from '../angular';\nimport {\n StateObject, pick, forEach, tail, extend,\n isArray, isInjectable, isDefined, isString, services, trace,\n ViewConfig, ViewService, ViewConfigFactory, PathNode, ResolveContext, Resolvable, IInjectable,\n} from '@uirouter/core';\nimport { Ng1ViewDeclaration } from '../interface';\nimport { TemplateFactory } from '../templateFactory';\nimport IInjectorService = angular.auto.IInjectorService;\n\nexport function getNg1ViewConfigFactory(): ViewConfigFactory {\n let templateFactory: TemplateFactory = null;\n return (path, view) => {\n templateFactory = templateFactory || services.$injector.get('$templateFactory');\n return [new Ng1ViewConfig(path, view, templateFactory)];\n };\n}\n\nconst hasAnyKey = (keys, obj) =>\n keys.reduce((acc, key) => acc || isDefined(obj[key]), false);\n\n/**\n * This is a [[StateBuilder.builder]] function for angular1 `views`.\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * handles the `views` property with logic specific to @uirouter/angularjs (ng1).\n *\n * If no `views: {}` property exists on the [[StateDeclaration]], then it creates the `views` object\n * and applies the state-level configuration to a view named `$default`.\n */\nexport function ng1ViewsBuilder(state: StateObject) {\n // Do not process root state\n if (!state.parent) return {};\n\n const tplKeys = ['templateProvider', 'templateUrl', 'template', 'notify', 'async'],\n ctrlKeys = ['controller', 'controllerProvider', 'controllerAs', 'resolveAs'],\n compKeys = ['component', 'bindings', 'componentProvider'],\n nonCompKeys = tplKeys.concat(ctrlKeys),\n allViewKeys = compKeys.concat(nonCompKeys);\n\n // Do not allow a state to have both state-level props and also a `views: {}` property.\n // A state without a `views: {}` property can declare properties for the `$default` view as properties of the state.\n // However, the `$default` approach should not be mixed with a separate `views: ` block.\n if (isDefined(state.views) && hasAnyKey(allViewKeys, state)) {\n throw new Error(`State '${state.name}' has a 'views' object. ` +\n `It cannot also have \"view properties\" at the state level. ` +\n `Move the following properties into a view (in the 'views' object): ` +\n ` ${allViewKeys.filter(key => isDefined(state[key])).join(', ')}`);\n }\n\n const views: { [key: string]: Ng1ViewDeclaration } = {},\n viewsObject = state.views || { '$default': pick(state, allViewKeys) };\n\n forEach(viewsObject, function (config: Ng1ViewDeclaration, name: string) {\n // Account for views: { \"\": { template... } }\n name = name || '$default';\n // Account for views: { header: \"headerComponent\" }\n if (isString(config)) config = { component: config };\n\n // Make a shallow copy of the config object\n config = extend({}, config);\n\n // Do not allow a view to mix props for component-style view with props for template/controller-style view\n if (hasAnyKey(compKeys, config) && hasAnyKey(nonCompKeys, config)) {\n throw new Error(`Cannot combine: ${compKeys.join('|')} with: ${nonCompKeys.join('|')} in stateview: '${name}@${state.name}'`);\n }\n\n config.resolveAs = config.resolveAs || '$resolve';\n config.$type = 'ng1';\n config.$context = state;\n config.$name = name;\n\n const normalized = ViewService.normalizeUIViewTarget(config.$context, config.$name);\n config.$uiViewName = normalized.uiViewName;\n config.$uiViewContextAnchor = normalized.uiViewContextAnchor;\n\n views[name] = config;\n });\n return views;\n}\n\nlet id = 0;\nexport class Ng1ViewConfig implements ViewConfig {\n $id = id++;\n loaded = false;\n controller: Function; // actually IInjectable|string\n template: string;\n component: string;\n locals: any; // TODO: delete me\n\n constructor(public path: PathNode[], public viewDecl: Ng1ViewDeclaration, public factory: TemplateFactory) { }\n\n load() {\n const $q = services.$q;\n const context = new ResolveContext(this.path);\n const params = this.path.reduce((acc, node) => extend(acc, node.paramValues), {});\n\n const promises: any = {\n template: $q.when(this.factory.fromConfig(this.viewDecl, params, context)),\n controller: $q.when(this.getController(context)),\n };\n\n return $q.all(promises).then((results) => {\n trace.traceViewServiceEvent('Loaded', this);\n this.controller = results.controller;\n extend(this, results.template); // Either { template: \"tpl\" } or { component: \"cmpName\" }\n return this;\n });\n }\n\n getTemplate = (uiView, context: ResolveContext) =>\n this.component ? this.factory.makeComponentTemplate(uiView, context, this.component, this.viewDecl.bindings) : this.template;\n\n /**\n * Gets the controller for a view configuration.\n *\n * @returns {Function|Promise.} Returns a controller, or a promise that resolves to a controller.\n */\n getController(context: ResolveContext): (IInjectable|string|Promise) {\n const provider = this.viewDecl.controllerProvider;\n if (!isInjectable(provider)) return this.viewDecl.controller;\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n}\n", + "/** @module view */\n/** for typedoc */\nimport { ng as angular } from './angular';\nimport { IAugmentedJQuery } from 'angular';\nimport {\n isArray, isDefined, isFunction, isObject, services, Obj, IInjectable, tail, kebobString, unnestR, ResolveContext,\n Resolvable, RawParams,\n} from '@uirouter/core';\nimport { Ng1ViewDeclaration, TemplateFactoryProvider } from './interface';\n\n/**\n * Service which manages loading of templates from a ViewConfig.\n */\nexport class TemplateFactory implements TemplateFactoryProvider {\n /** @hidden */ private _useHttp = angular.version.minor < 3;\n /** @hidden */ private $templateRequest;\n /** @hidden */ private $templateCache;\n /** @hidden */ private $http;\n\n /** @hidden */ $get = ['$http', '$templateCache', '$injector', ($http, $templateCache, $injector) => {\n this.$templateRequest = $injector.has && $injector.has('$templateRequest') && $injector.get('$templateRequest');\n this.$http = $http;\n this.$templateCache = $templateCache;\n return this;\n }];\n\n /** @hidden */\n useHttpService(value: boolean) {\n this._useHttp = value;\n }\n\n /**\n * Creates a template from a configuration object.\n *\n * @param config Configuration object for which to load a template.\n * The following properties are search in the specified order, and the first one\n * that is defined is used to create the template:\n *\n * @param params Parameters to pass to the template function.\n * @param context The resolve context associated with the template's view\n *\n * @return {string|object} The template html as a string, or a promise for\n * that string,or `null` if no template is configured.\n */\n fromConfig(config: Ng1ViewDeclaration, params: any, context: ResolveContext): Promise<{ template?: string, component?: string }> {\n const defaultTemplate = '';\n\n const asTemplate = (result) => services.$q.when(result).then(str => ({ template: str }));\n const asComponent = (result) => services.$q.when(result).then(str => ({ component: str }));\n\n return (\n isDefined(config.template) ? asTemplate(this.fromString(config.template, params)) :\n isDefined(config.templateUrl) ? asTemplate(this.fromUrl(config.templateUrl, params)) :\n isDefined(config.templateProvider) ? asTemplate(this.fromProvider(config.templateProvider, params, context)) :\n isDefined(config.component) ? asComponent(config.component) :\n isDefined(config.componentProvider) ? asComponent(this.fromComponentProvider(config.componentProvider, params, context)) :\n asTemplate(defaultTemplate)\n );\n }\n\n /**\n * Creates a template from a string or a function returning a string.\n *\n * @param template html template as a string or function that returns an html template as a string.\n * @param params Parameters to pass to the template function.\n *\n * @return {string|object} The template html as a string, or a promise for that\n * string.\n */\n fromString(template: (string | Function), params?: RawParams) {\n return isFunction(template) ? ( template)(params) : template;\n }\n\n /**\n * Loads a template from the a URL via `$http` and `$templateCache`.\n *\n * @param {string|Function} url url of the template to load, or a function\n * that returns a url.\n * @param {Object} params Parameters to pass to the url function.\n * @return {string|Promise.} The template html as a string, or a promise\n * for that string.\n */\n fromUrl(url: (string | Function), params: any) {\n if (isFunction(url)) url = ( url)(params);\n if (url == null) return null;\n\n if (this._useHttp) {\n return this.$http.get(url, { cache: this.$templateCache, headers: { Accept: 'text/html' } })\n .then(function (response) {\n return response.data;\n });\n }\n\n return this.$templateRequest(url);\n }\n\n /**\n * Creates a template by invoking an injectable provider function.\n *\n * @param provider Function to invoke via `locals`\n * @param {Function} injectFn a function used to invoke the template provider\n * @return {string|Promise.} The template html as a string, or a promise\n * for that string.\n */\n fromProvider(provider: IInjectable, params: any, context: ResolveContext) {\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n\n /**\n * Creates a component's template by invoking an injectable provider function.\n *\n * @param provider Function to invoke via `locals`\n * @param {Function} injectFn a function used to invoke the template provider\n * @return {string} The template html as a string: \"\".\n */\n fromComponentProvider(provider: IInjectable, params: any, context: ResolveContext) {\n const deps = services.$injector.annotate(provider);\n const providerFn = isArray(provider) ? tail( provider) : provider;\n const resolvable = new Resolvable('', providerFn, deps);\n return resolvable.get(context);\n }\n\n /**\n * Creates a template from a component's name\n *\n * This implements route-to-component.\n * It works by retrieving the component (directive) metadata from the injector.\n * It analyses the component's bindings, then constructs a template that instantiates the component.\n * The template wires input and output bindings to resolves or from the parent component.\n *\n * @param uiView {object} The parent ui-view (for binding outputs to callbacks)\n * @param context The ResolveContext (for binding outputs to callbacks returned from resolves)\n * @param component {string} Component's name in camel case.\n * @param bindings An object defining the component's bindings: {foo: '<'}\n * @return {string} The template as a string: \"\".\n */\n makeComponentTemplate(uiView: IAugmentedJQuery, context: ResolveContext, component: string, bindings?: any) {\n bindings = bindings || {};\n\n // Bind once prefix\n const prefix = angular.version.minor >= 3 ? '::' : '';\n // Convert to kebob name. Add x- prefix if the string starts with `x-` or `data-`\n const kebob = (camelCase: string) => {\n const kebobed = kebobString(camelCase);\n return /^(x|data)-/.exec(kebobed) ? `x-${kebobed}` : kebobed;\n };\n\n\n const attributeTpl = (input: BindingTuple) => {\n const { name, type } = input;\n const attrName = kebob(name);\n // If the ui-view has an attribute which matches a binding on the routed component\n // then pass that attribute through to the routed component template.\n // Prefer ui-view wired mappings to resolve data, unless the resolve was explicitly bound using `bindings:`\n if (uiView.attr(attrName) && !bindings[name])\n return `${attrName}='${uiView.attr(attrName)}'`;\n\n const resolveName = bindings[name] || name;\n // Pre-evaluate the expression for \"@\" bindings by enclosing in {{ }}\n // some-attr=\"{{ ::$resolve.someResolveName }}\"\n if (type === '@')\n return `${attrName}='{{${prefix}$resolve.${resolveName}}}'`;\n\n // Wire \"&\" callbacks to resolves that return a callback function\n // Get the result of the resolve (should be a function) and annotate it to get its arguments.\n // some-attr=\"$resolve.someResolveResultName(foo, bar)\"\n if (type === '&') {\n const res = context.getResolvable(resolveName);\n const fn = res && res.data;\n const args = fn && services.$injector.annotate(fn) || [];\n // account for array style injection, i.e., ['foo', function(foo) {}]\n const arrayIdxStr = isArray(fn) ? `[${fn.length - 1}]` : '';\n return `${attrName}='$resolve.${resolveName}${arrayIdxStr}(${args.join(',')})'`;\n }\n\n // some-attr=\"::$resolve.someResolveName\"\n return `${attrName}='${prefix}$resolve.${resolveName}'`;\n };\n\n const attrs = getComponentBindings(component).map(attributeTpl).join(' ');\n const kebobName = kebob(component);\n return `<${kebobName} ${attrs}>`;\n }\n}\n\n// Gets all the directive(s)' inputs ('@', '=', and '<') and outputs ('&')\nfunction getComponentBindings(name: string) {\n const cmpDefs = services.$injector.get(name + 'Directive'); // could be multiple\n if (!cmpDefs || !cmpDefs.length) throw new Error(`Unable to find component named '${name}'`);\n return cmpDefs.map(getBindings).reduce(unnestR, []);\n}\n\n// Given a directive definition, find its object input attributes\n// Use different properties, depending on the type of directive (component, bindToController, normal)\nconst getBindings = (def: any) => {\n if (isObject(def.bindToController)) return scopeBindings(def.bindToController);\n return scopeBindings(def.scope);\n};\n\ninterface BindingTuple {\n name: string;\n type: string;\n}\n\n// for ng 1.2 style, process the scope: { input: \"=foo\" }\n// for ng 1.3 through ng 1.5, process the component's bindToController: { input: \"=foo\" } object\nconst scopeBindings = (bindingsObj: Obj) => Object.keys(bindingsObj || {})\n // [ 'input', [ '=foo', '=', 'foo' ] ]\n .map(key => [key, /^([=<@&])[?]?(.*)/.exec(bindingsObj[key])])\n // skip malformed values\n .filter(tuple => isDefined(tuple) && isArray(tuple[1]))\n // { name: ('foo' || 'input'), type: '=' }\n .map(tuple => ({ name: tuple[1][2] || tuple[0], type: tuple[1][1] } as BindingTuple));\n\n", "/** @module ng1 */ /** for typedoc */\nimport {\n val, isObject, createProxyFunctions, BuilderFunction, StateRegistry, StateService, OnInvalidCallback,\n} from '@uirouter/core';\nimport { Ng1StateDeclaration } from './interface';\n\n/**\n * The Angular 1 `StateProvider`\n *\n * The `$stateProvider` works similar to Angular's v1 router, but it focuses purely\n * on state.\n *\n * A state corresponds to a \"place\" in the application in terms of the overall UI and\n * navigation. A state describes (via the controller / template / view properties) what\n * the UI looks like and does at that place.\n *\n * States often have things in common, and the primary way of factoring out these\n * commonalities in this model is via the state hierarchy, i.e. parent/child states aka\n * nested states.\n *\n * The `$stateProvider` provides interfaces to declare these states for your app.\n */\nexport class StateProvider {\n constructor(private stateRegistry: StateRegistry, private stateService: StateService) {\n createProxyFunctions(val(StateProvider.prototype), this, val(this));\n }\n\n /**\n * Decorates states when they are registered\n *\n * Allows you to extend (carefully) or override (at your own peril) the\n * `stateBuilder` object used internally by [[StateRegistry]].\n * This can be used to add custom functionality to ui-router,\n * for example inferring templateUrl based on the state name.\n *\n * When passing only a name, it returns the current (original or decorated) builder\n * function that matches `name`.\n *\n * The builder functions that can be decorated are listed below. Though not all\n * necessarily have a good use case for decoration, that is up to you to decide.\n *\n * In addition, users can attach custom decorators, which will generate new\n * properties within the state's internal definition. There is currently no clear\n * use-case for this beyond accessing internal states (i.e. $state.$current),\n * however, expect this to become increasingly relevant as we introduce additional\n * meta-programming features.\n *\n * **Warning**: Decorators should not be interdependent because the order of\n * execution of the builder functions in non-deterministic. Builder functions\n * should only be dependent on the state definition object and super function.\n *\n *\n * Existing builder functions and current return values:\n *\n * - **parent** `{object}` - returns the parent state object.\n * - **data** `{object}` - returns state data, including any inherited data that is not\n * overridden by own values (if any).\n * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}\n * or `null`.\n * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is\n * navigable).\n * - **params** `{object}` - returns an array of state params that are ensured to\n * be a super-set of parent's params.\n * - **views** `{object}` - returns a views object where each key is an absolute view\n * name (i.e. \"viewName@stateName\") and each value is the config object\n * (template, controller) for the view. Even when you don't use the views object\n * explicitly on a state config, one is still created for you internally.\n * So by decorating this builder function you have access to decorating template\n * and controller properties.\n * - **ownParams** `{object}` - returns an array of params that belong to the state,\n * not including any params defined by ancestor states.\n * - **path** `{string}` - returns the full path from the root down to this state.\n * Needed for state activation.\n * - **includes** `{object}` - returns an object that includes every state that\n * would pass a `$state.includes()` test.\n *\n * #### Example:\n * Override the internal 'views' builder with a function that takes the state\n * definition, and a reference to the internal function being overridden:\n * ```js\n * $stateProvider.decorator('views', function (state, parent) {\n * let result = {},\n * views = parent(state);\n *\n * angular.forEach(views, function (config, name) {\n * let autoName = (state.name + '.' + name).replace('.', '/');\n * config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';\n * result[name] = config;\n * });\n * return result;\n * });\n *\n * $stateProvider.state('home', {\n * views: {\n * 'contact.list': { controller: 'ListController' },\n * 'contact.item': { controller: 'ItemController' }\n * }\n * });\n * ```\n *\n *\n * ```js\n * // Auto-populates list and item views with /partials/home/contact/list.html,\n * // and /partials/home/contact/item.html, respectively.\n * $state.go('home');\n * ```\n *\n * @param {string} name The name of the builder function to decorate.\n * @param {object} func A function that is responsible for decorating the original\n * builder function. The function receives two parameters:\n *\n * - `{object}` - state - The state config object.\n * - `{object}` - super - The original builder function.\n *\n * @return {object} $stateProvider - $stateProvider instance\n */\n decorator(name: string, func: BuilderFunction) {\n return this.stateRegistry.decorator(name, func) || this;\n }\n\n /**\n * Registers a state\n *\n * ### This is a passthrough to [[StateRegistry.register]].\n *\n * Registers a state configuration under a given state name.\n * The stateConfig object has the following acceptable properties.\n *\n *
    \n *\n * - **`template`** - {string|function=} - html template as a string or a function that returns\n * an html template as a string which should be used by the uiView directives. This property\n * takes precedence over templateUrl.\n *\n * If `template` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by\n * applying the current state\n *\n * \n *\n * - **`templateUrl`** - {string|function=} - path or function that returns a path to an html\n * template that should be used by uiView.\n *\n * If `templateUrl` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by\n * applying the current state\n *\n * \n *\n * - **`templateProvider`** - {function=} - Provider function that returns HTML content\n * string.\n *\n * \n *\n * - **`controller`** - {string|function=} - Controller fn that should be associated with newly\n * related scope or the name of a registered controller if passed as a string.\n *\n * \n *\n * - **`controllerProvider`** - {function=} - Injectable provider function that returns\n * the actual controller or string.\n *\n * \n *\n * - **`controllerAs`** – {string=} – A controller alias name. If present the controller will be\n * published to scope under the controllerAs name.\n *\n * \n *\n * - **`resolve`** - {object.<string, function>=} - An optional map of dependencies which\n * should be injected into the controller. If any of these dependencies are promises,\n * the router will wait for them all to be resolved or one to be rejected before the\n * controller is instantiated. If all the promises are resolved successfully, the values\n * of the resolved promises are injected and $stateChangeSuccess event is fired. If any\n * of the promises are rejected the $stateChangeError event is fired. The map object is:\n *\n * - key - {string}: name of dependency to be injected into controller\n * - factory - {string|function}: If string then it is alias for service. Otherwise if function,\n * it is injected and return value it treated as dependency. If result is a promise, it is\n * resolved before its value is injected into controller.\n *\n * \n *\n * - **`url`** - {string=} - A url with optional parameters. When a state is navigated or\n * transitioned to, the `$stateParams` service will be populated with any\n * parameters that were passed.\n *\n * \n *\n * - **`params`** - {object=} - An array of parameter names or regular expressions. Only\n * use this within a state if you are not using url. Otherwise you can specify your\n * parameters within the url. When a state is navigated or transitioned to, the\n * $stateParams service will be populated with any parameters that were passed.\n *\n * \n *\n * - **`views`** - {object=} - Use the views property to set up multiple views or to target views\n * manually/explicitly.\n *\n * \n *\n * - **`abstract`** - {boolean=} - An abstract state will never be directly activated,\n * but can provide inherited properties to its common children states.\n *\n * \n *\n * - **`onEnter`** - {object=} - Callback function for when a state is entered. Good way\n * to trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to use the `['injection1', 'injection2', function(injection1, injection2){}]` syntax.\n *\n * \n *\n * - **`onExit`** - {object=} - Callback function for when a state is exited. Good way to\n * trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to use the `['injection1', 'injection2', function(injection1, injection2){}]` syntax.\n *\n * \n *\n * - **`reloadOnSearch = true`** - {boolean=} - If `false`, will not retrigger the same state\n * just because a search/query parameter has changed (via $location.search() or $location.hash()).\n * Useful for when you'd like to modify $location.search() without triggering a reload.\n *\n * \n *\n * - **`data`** - {object=} - Arbitrary data object, useful for custom configuration.\n *\n * #### Example:\n * Some state name examples\n * ```js\n * // stateName can be a single top-level name (must be unique).\n * $stateProvider.state(\"home\", {});\n *\n * // Or it can be a nested state name. This state is a child of the\n * // above \"home\" state.\n * $stateProvider.state(\"home.newest\", {});\n *\n * // Nest states as deeply as needed.\n * $stateProvider.state(\"home.newest.abc.xyz.inception\", {});\n *\n * // state() returns $stateProvider, so you can chain state declarations.\n * $stateProvider\n * .state(\"home\", {})\n * .state(\"about\", {})\n * .state(\"contacts\", {});\n * ```\n *\n * @param {string} name A unique state name, e.g. \"home\", \"about\", \"contacts\".\n * To create a parent/child state use a dot, e.g. \"about.sales\", \"home.newest\".\n * @param {object} definition State configuration object.\n */\n state(name: string, definition: Ng1StateDeclaration): StateProvider;\n state(definition: Ng1StateDeclaration): StateProvider;\n state(name: any, definition?: any) {\n if (isObject(name)) {\n definition = name;\n } else {\n definition.name = name;\n }\n this.stateRegistry.register(definition);\n return this;\n }\n\n /**\n * Registers an invalid state handler\n *\n * This is a passthrough to [[StateService.onInvalid]] for ng1.\n */\n\n onInvalid(callback: OnInvalidCallback): Function {\n return this.stateService.onInvalid(callback);\n }\n}\n", "/** @module ng1 */ /** */\nimport {\n StateObject, TransitionStateHookFn, HookResult, Transition, services, ResolveContext, extend, BuilderFunction,\n} from '@uirouter/core';\nimport { getLocals } from '../services';\nimport { Ng1StateDeclaration } from '../interface';\n\n/**\n * This is a [[StateBuilder.builder]] function for angular1 `onEnter`, `onExit`,\n * `onRetain` callback hooks on a [[Ng1StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * ensures that those hooks are injectable for @uirouter/angularjs (ng1).\n */\nexport const getStateHookBuilder = (hookName: 'onEnter'|'onExit'|'onRetain') =>\nfunction stateHookBuilder(stateObject: StateObject, parentFn: BuilderFunction): TransitionStateHookFn {\n const hook = stateObject[hookName];\n const pathname = hookName === 'onExit' ? 'from' : 'to';\n\n function decoratedNg1Hook(trans: Transition, state: Ng1StateDeclaration): HookResult {\n const resolveContext = new ResolveContext(trans.treeChanges(pathname));\n const subContext = resolveContext.subContext(state.$$state());\n const locals = extend(getLocals(subContext), { $state$: state, $transition$: trans });\n return services.$injector.invoke(hook, this, locals);\n }\n\n return hook ? decoratedNg1Hook : undefined;\n};\n", "/**\n * @internalapi\n * @module ng1\n */ /** */\nimport { LocationConfig, LocationServices, UIRouter, ParamType, isDefined } from '@uirouter/core';\nimport { val, createProxyFunctions, removeFrom, isObject } from '@uirouter/core';\nimport { ILocationService, ILocationProvider } from 'angular';\n\n/**\n * Implements UI-Router LocationServices and LocationConfig using Angular 1's $location service\n */\nexport class Ng1LocationServices implements LocationConfig, LocationServices {\n private $locationProvider: ILocationProvider;\n private $location: ILocationService;\n private $sniffer;\n\n path;\n search;\n hash;\n hashPrefix;\n port;\n protocol;\n host;\n baseHref;\n\n // .onChange() registry\n private _urlListeners: Function[] = [];\n\n /**\n * Applys ng1-specific path parameter encoding\n *\n * The Angular 1 `$location` service is a bit weird.\n * It doesn't allow slashes to be encoded/decoded bi-directionally.\n *\n * See the writeup at https://github.com/angular-ui/ui-router/issues/2598\n *\n * This code patches the `path` parameter type so it encoded/decodes slashes as ~2F\n *\n * @param router\n */\n static monkeyPatchPathParameterType(router: UIRouter) {\n const pathType: ParamType = router.urlMatcherFactory.type('path');\n\n pathType.encode = (x: any) =>\n x != null ? x.toString().replace(/(~|\\/)/g, m => ({ '~': '~~', '/': '~2F' }[m])) : x;\n\n pathType.decode = (x: string) =>\n x != null ? x.toString().replace(/(~~|~2F)/g, m => ({ '~~': '~', '~2F': '/' }[m])) : x;\n\n }\n\n dispose() { }\n\n constructor($locationProvider: ILocationProvider) {\n this.$locationProvider = $locationProvider;\n const _lp = val($locationProvider);\n createProxyFunctions(_lp, this, _lp, ['hashPrefix']);\n }\n\n onChange(callback: Function) {\n this._urlListeners.push(callback);\n return () => removeFrom(this._urlListeners)(callback);\n }\n\n html5Mode() {\n let html5Mode: any = this.$locationProvider.html5Mode();\n html5Mode = isObject(html5Mode) ? html5Mode.enabled : html5Mode;\n return html5Mode && this.$sniffer.history;\n }\n\n url(newUrl?: string, replace = false, state?) {\n if (isDefined(newUrl)) this.$location.url(newUrl);\n if (replace) this.$location.replace();\n if (state) this.$location.state(state);\n return this.$location.url();\n }\n\n _runtimeServices($rootScope, $location: ILocationService, $sniffer, $browser) {\n this.$location = $location;\n this.$sniffer = $sniffer;\n\n // Bind $locationChangeSuccess to the listeners registered in LocationService.onChange\n $rootScope.$on('$locationChangeSuccess', evt => this._urlListeners.forEach(fn => fn(evt)));\n const _loc = val($location);\n const _browser = val($browser);\n\n // Bind these LocationService functions to $location\n createProxyFunctions(_loc, this, _loc, ['replace', 'path', 'search', 'hash']);\n // Bind these LocationConfig functions to $location\n createProxyFunctions(_loc, this, _loc, ['port', 'protocol', 'host']);\n // Bind these LocationConfig functions to $browser\n createProxyFunctions(_browser, this, _browser, ['baseHref']);\n }\n}\n", "/** @module url */ /** */\nimport {\n UIRouter, UrlRouter, LocationServices, $InjectorLike, BaseUrlRule, UrlRuleHandlerFn, UrlMatcher,\n IInjectable,\n} from '@uirouter/core';\nimport { services, isString, isFunction, isArray, identity } from '@uirouter/core';\n\nexport interface RawNg1RuleFunction {\n ($injector: $InjectorLike, $location: LocationServices): string|void;\n}\n\n/**\n * Manages rules for client-side URL\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n *\n * This class manages the router rules for what to do when the URL changes.\n *\n * This provider remains for backwards compatibility.\n *\n * @deprecated\n */\nexport class UrlRouterProvider {\n /** @hidden */ _router: UIRouter;\n /** @hidden */ _urlRouter: UrlRouter;\n\n static injectableHandler(router: UIRouter, handler): UrlRuleHandlerFn {\n return match =>\n services.$injector.invoke(handler, null, { $match: match, $stateParams: router.globals.params });\n }\n\n /** @hidden */\n constructor(router: UIRouter) {\n this._router = router;\n this._urlRouter = router.urlRouter;\n }\n\n /** @hidden */\n $get() {\n const urlRouter = this._urlRouter;\n urlRouter.update(true);\n if (!urlRouter.interceptDeferred) urlRouter.listen();\n return urlRouter;\n }\n\n /**\n * Registers a url handler function.\n *\n * Registers a low level url handler (a `rule`).\n * A rule detects specific URL patterns and returns a redirect, or performs some action.\n *\n * If a rule returns a string, the URL is replaced with the string, and all rules are fired again.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // Here's an example of how you might allow case insensitive urls\n * $urlRouterProvider.rule(function ($injector, $location) {\n * var path = $location.path(),\n * normalized = path.toLowerCase();\n *\n * if (path !== normalized) {\n * return normalized;\n * }\n * });\n * });\n * ```\n *\n * @param ruleFn\n * Handler function that takes `$injector` and `$location` services as arguments.\n * You can use them to detect a url and return a different url as a string.\n *\n * @return [[UrlRouterProvider]] (`this`)\n */\n rule(ruleFn: RawNg1RuleFunction): UrlRouterProvider {\n if (!isFunction(ruleFn)) throw new Error(\"'rule' must be a function\");\n\n const match = () =>\n ruleFn(services.$injector, this._router.locationService);\n\n const rule = new BaseUrlRule(match, identity);\n this._urlRouter.rule(rule);\n return this;\n }\n\n /**\n * Defines the path or behavior to use when no url can be matched.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // if the path doesn't match any of the urls you configured\n * // otherwise will take care of routing the user to the\n * // specified url\n * $urlRouterProvider.otherwise('/index');\n *\n * // Example of using function rule as param\n * $urlRouterProvider.otherwise(function ($injector, $location) {\n * return '/a/valid/url';\n * });\n * });\n * ```\n *\n * @param rule\n * The url path you want to redirect to or a function rule that returns the url path or performs a `$state.go()`.\n * The function version is passed two params: `$injector` and `$location` services, and should return a url string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n otherwise(rule: string | RawNg1RuleFunction): UrlRouterProvider {\n const urlRouter = this._urlRouter;\n\n if (isString(rule)) {\n urlRouter.otherwise(rule);\n } else if (isFunction(rule)) {\n urlRouter.otherwise(() => rule(services.$injector, this._router.locationService));\n } else {\n throw new Error(\"'rule' must be a string or function\");\n }\n\n return this;\n }\n\n /**\n * Registers a handler for a given url matching.\n *\n * If the handler is a string, it is\n * treated as a redirect, and is interpolated according to the syntax of match\n * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n *\n * If the handler is a function, it is injectable.\n * It gets invoked if `$location` matches.\n * You have the option of inject the match object as `$match`.\n *\n * The handler can return\n *\n * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n * will continue trying to find another one that matches.\n * - **string** which is treated as a redirect and passed to `$location.url()`\n * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n * if ($state.$current.navigable !== state ||\n * !equalForKeys($match, $stateParams) {\n * $state.transitionTo(state, $match, false);\n * }\n * });\n * });\n * ```\n *\n * @param what A pattern string to match, compiled as a [[UrlMatcher]].\n * @param handler The path (or function that returns a path) that you want to redirect your user to.\n * @param ruleCallback [optional] A callback that receives the `rule` registered with [[UrlMatcher.rule]]\n *\n * Note: the handler may also invoke arbitrary code, such as `$state.go()`\n */\n when(what: (RegExp|UrlMatcher|string), handler: string|IInjectable) {\n if (isArray(handler) || isFunction(handler)) {\n handler = UrlRouterProvider.injectableHandler(this._router, handler);\n }\n\n this._urlRouter.when(what, handler as any);\n return this;\n }\n\n /**\n * Disables monitoring of the URL.\n *\n * Call this method before UI-Router has bootstrapped.\n * It will stop UI-Router from performing the initial url sync.\n *\n * This can be useful to perform some asynchronous initialization before the router starts.\n * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n *\n * #### Example:\n * ```js\n * var app = angular.module('app', ['ui.router']);\n *\n * app.config(function ($urlRouterProvider) {\n * // Prevent $urlRouter from automatically intercepting URL changes;\n * $urlRouterProvider.deferIntercept();\n * })\n *\n * app.run(function (MyService, $urlRouter, $http) {\n * $http.get(\"/stuff\").then(function(resp) {\n * MyService.doStuff(resp.data);\n * $urlRouter.listen();\n * $urlRouter.sync();\n * });\n * });\n * ```\n *\n * @param defer Indicates whether to defer location change interception.\n * Passing no parameter is equivalent to `true`.\n */\n deferIntercept(defer?: boolean) {\n this._urlRouter.deferIntercept(defer);\n }\n}\n", + "/**\n * # Angular 1 types\n *\n * UI-Router core provides various Typescript types which you can use for code completion and validating parameter values, etc.\n * The customizations to the core types for Angular UI-Router are documented here.\n *\n * The optional [[$resolve]] service is also documented here.\n *\n * @module ng1\n * @preferred\n */\n/** for typedoc */\nimport { ng as angular } from './angular';\nimport {\n IRootScopeService, IQService, ILocationService, ILocationProvider, IHttpService, ITemplateCacheService,\n} from 'angular';\nimport {\n services, applyPairs, isString, trace, extend, UIRouter, StateService, UrlRouter, UrlMatcherFactory, ResolveContext,\n unnestR, TypedMap,\n} from '@uirouter/core';\nimport { ng1ViewsBuilder, getNg1ViewConfigFactory } from './statebuilders/views';\nimport { TemplateFactory } from './templateFactory';\nimport { StateProvider } from './stateProvider';\nimport { getStateHookBuilder } from './statebuilders/onEnterExitRetain';\nimport { Ng1LocationServices } from './locationServices';\nimport { UrlRouterProvider } from './urlRouterProvider';\nimport IInjectorService = angular.auto.IInjectorService; // tslint:disable-line\n\nangular.module('ui.router.angular1', []);\nconst mod_init = angular.module('ui.router.init', []);\nconst mod_util = angular.module('ui.router.util', ['ng', 'ui.router.init']);\nconst mod_rtr = angular.module('ui.router.router', ['ui.router.util']);\nconst mod_state = angular.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);\nconst mod_main = angular.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);\nlet mod_cmpt = angular.module('ui.router.compat', ['ui.router']); // tslint:disable-line\n\ndeclare module '@uirouter/core/lib/router' {\n interface UIRouter { // tslint:disable-line:no-shadowed-variable\n /** @hidden */\n stateProvider: StateProvider;\n /** @hidden */\n urlRouterProvider: UrlRouterProvider;\n }\n}\n\nlet router: UIRouter = null;\n\n$uiRouterProvider.$inject = ['$locationProvider'];\n/** This angular 1 provider instantiates a Router and exposes its services via the angular injector */\nfunction $uiRouterProvider($locationProvider: ILocationProvider) {\n\n // Create a new instance of the Router when the $uiRouterProvider is initialized\n router = this.router = new UIRouter();\n router.stateProvider = new StateProvider(router.stateRegistry, router.stateService);\n\n // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties\n router.stateRegistry.decorator('views', ng1ViewsBuilder);\n router.stateRegistry.decorator('onExit', getStateHookBuilder('onExit'));\n router.stateRegistry.decorator('onRetain', getStateHookBuilder('onRetain'));\n router.stateRegistry.decorator('onEnter', getStateHookBuilder('onEnter'));\n\n router.viewService._pluginapi._viewConfigFactory('ng1', getNg1ViewConfigFactory());\n\n const ng1LocationService = router.locationService = router.locationConfig = new Ng1LocationServices($locationProvider);\n\n Ng1LocationServices.monkeyPatchPathParameterType(router);\n\n // backwards compat: also expose router instance as $uiRouterProvider.router\n router['router'] = router;\n router['$get'] = $get;\n $get.$inject = ['$location', '$browser', '$sniffer', '$rootScope', '$http', '$templateCache'];\n function $get($location: ILocationService, $browser: any, $sniffer: any, $rootScope: ng.IScope, $http: IHttpService, $templateCache: ITemplateCacheService) {\n ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser);\n delete router['router'];\n delete router['$get'];\n return router;\n }\n return router;\n}\n\nconst getProviderFor = (serviceName) => [ '$uiRouterProvider', ($urp) => {\n const service = $urp.router[serviceName];\n service['$get'] = () => service;\n return service;\n}];\n\n// This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)\nrunBlock.$inject = ['$injector', '$q', '$uiRouter'];\nfunction runBlock($injector: IInjectorService, $q: IQService, $uiRouter: UIRouter) {\n services.$injector = $injector;\n services.$q = $q;\n\n // The $injector is now available.\n // Find any resolvables that had dependency annotation deferred\n $uiRouter.stateRegistry.get()\n .map(x => x.$$state().resolvables)\n .reduce(unnestR, [])\n .filter(x => x.deps === 'deferred')\n .forEach(resolvable => resolvable.deps = $injector.annotate(resolvable.resolveFn, $injector.strictDi));\n}\n\n// $urlRouter service and $urlRouterProvider\nconst getUrlRouterProvider = (uiRouter: UIRouter) =>\n uiRouter.urlRouterProvider = new UrlRouterProvider(uiRouter);\n\n// $state service and $stateProvider\n// $urlRouter service and $urlRouterProvider\nconst getStateProvider = () =>\n extend(router.stateProvider, { $get: () => router.stateService });\n\nwatchDigests.$inject = ['$rootScope'];\nexport function watchDigests($rootScope: IRootScopeService) {\n $rootScope.$watch(function() { trace.approximateDigests++; });\n}\n\nmod_init .provider('$uiRouter', $uiRouterProvider);\nmod_rtr .provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);\nmod_util .provider('$urlService', getProviderFor('urlService'));\nmod_util .provider('$urlMatcherFactory', ['$uiRouterProvider', () => router.urlMatcherFactory]);\nmod_util .provider('$templateFactory', () => new TemplateFactory());\nmod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));\nmod_state.provider('$uiRouterGlobals', getProviderFor('globals'));\nmod_state.provider('$transitions', getProviderFor('transitionService'));\nmod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);\n\nmod_state.factory ('$stateParams', ['$uiRouter', ($uiRouter: UIRouter) => $uiRouter.globals.params]);\nmod_main .factory ('$view', () => router.viewService);\nmod_main .service ('$trace', () => trace);\n\nmod_main .run (watchDigests);\nmod_util .run (['$urlMatcherFactory', function ($urlMatcherFactory: UrlMatcherFactory) { }]);\nmod_state.run (['$state', function ($state: StateService) { }]);\nmod_rtr .run (['$urlRouter', function ($urlRouter: UrlRouter) { }]);\nmod_init .run (runBlock);\n\n/** @hidden TODO: find a place to move this */\nexport const getLocals = (ctx: ResolveContext): TypedMap => {\n const tokens = ctx.getTokens().filter(isString);\n\n const tuples = tokens .map(key => {\n const resolvable = ctx.getResolvable(key);\n const waitPolicy = ctx.getPolicy(resolvable).async;\n return [ key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data ];\n });\n\n return tuples.reduce(applyPairs, {});\n};\n\n", + "/**\n * # Angular 1 Directives\n *\n * These are the directives included in UI-Router for Angular 1.\n * These directives are used in templates to create viewports and link/navigate to states.\n *\n * @ng1api\n * @preferred\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IAugmentedJQuery, ITimeoutService, IScope, IInterpolateService } from 'angular';\n\nimport {\n Obj, extend, forEach, tail, isString, isObject, isArray, parse, noop, unnestR, identity, uniqR, inArray, removeFrom,\n RawParams, PathNode, StateOrName, StateService, StateDeclaration, UIRouter,\n} from '@uirouter/core';\nimport { UIViewData } from './viewDirective';\nimport EventHandler = JQuery.EventHandler;\n\n/** @hidden Used for typedoc */\nexport interface ng1_directive {} // tslint:disable-line:class-name\n\n/** @hidden */\nfunction parseStateRef(ref: string) {\n let parsed;\n const paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n if (paramsOnly) ref = '(' + paramsOnly[1] + ')';\n\n parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n}\n\n/** @hidden */\nfunction stateContext(el: IAugmentedJQuery) {\n const $uiView: UIViewData = (el.parent() as IAugmentedJQuery).inheritedData('$uiView');\n const path: PathNode[] = parse('$cfg.path')($uiView);\n return path ? tail(path).state.name : undefined;\n}\n\n/** @hidden */\nfunction processedDef($state: StateService, $element: IAugmentedJQuery, def: Def): Def {\n const uiState = def.uiState || $state.current.name;\n const uiStateOpts = extend(defaultOpts($element, $state), def.uiStateOpts || {});\n const href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n return { uiState, uiStateParams: def.uiStateParams, uiStateOpts, href };\n}\n\n/** @hidden */\ninterface TypeInfo {\n attr: string;\n isAnchor: boolean;\n clickable: boolean;\n}\n\n/** @hidden */\nfunction getTypeInfo(el: IAugmentedJQuery): TypeInfo {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n const isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n const isForm = el[0].nodeName === 'FORM';\n\n return {\n attr: isForm ? 'action' : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop('tagName').toUpperCase() === 'A',\n clickable: !isForm,\n };\n}\n\n/** @hidden */\nfunction clickHook(el: IAugmentedJQuery, $state: StateService, $timeout: ITimeoutService, type: TypeInfo, getDef: () => Def) {\n return function (e: JQueryMouseEventObject) {\n const button = e.which || e.button, target = getDef();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n const transition = $timeout(function () {\n $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the directive.\n let ignorePreventDefaultCount = type.isAnchor && !target.href ? 1 : 0;\n\n e.preventDefault = function () {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\n/** @hidden */\nfunction defaultOpts(el: IAugmentedJQuery, $state: StateService) {\n return {\n relative: stateContext(el) || $state.$current,\n inherit: true,\n source: 'sref',\n };\n}\n\n/** @hidden */\nfunction bindEvents(element: IAugmentedJQuery, scope: IScope, hookFn: EventHandler, uiStateOpts: any): void {\n let events;\n\n if (uiStateOpts) {\n events = uiStateOpts.events;\n }\n\n if (!isArray(events)) {\n events = ['click'];\n }\n\n const on = element.on ? 'on' : 'bind';\n for (const event of events) {\n element[on](event, hookFn);\n }\n\n scope.$on('$destroy', function() {\n const off = element.off ? 'off' : 'unbind';\n for (const event of events) {\n element[off](event, hookFn);\n }\n });\n}\n\n/**\n * `ui-sref`: A directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of the `ui-sref` is the name of the state to link to.\n *\n * #### Example:\n * This will activate the `home` state when the link is clicked.\n * ```html\n * Home\n * ```\n *\n * ### Relative Links\n * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create a relative `ui-sref` which always targets the same destination.\n *\n * #### Example:\n * Both these links are relative to the parent state, even when a child state is currently active.\n * ```html\n * child 1 state\n * child 2 state\n * ```\n *\n * This link activates the parent state.\n * ```html\n * Return\n * ```\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * #### Example:\n * Assuming the `users` state has a url of `/users/`\n * ```html\n * Users\n * ```\n *\n * ### Parameter Values\n * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n * The content inside the parentheses is an expression, evaluated to the parameter values.\n *\n * #### Example:\n * This example renders a list of links to users.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ user.displayName }}\n *
  • \n * ```\n *\n * Note:\n * The parameter values expression is `$watch`ed for updates.\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-sref-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Examples\n * If you have the following template:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n * \n * ```\n *\n * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n *\n * ```html\n * Home\n * About\n * Next page\n *\n *
      \n *
    • \n * Joe\n *
    • \n *
    • \n * Alice\n *
    • \n *
    • \n * Bob\n *
    • \n *
    \n *\n * Home\n * ```\n *\n * ### Notes\n *\n * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n *\n * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n */\nlet uiSrefDirective: ng1_directive;\nuiSrefDirective = ['$uiRouter', '$timeout',\n function $StateRefDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const ref = parseStateRef(attrs.uiSref);\n rawDef.uiState = ref.state;\n rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function (val) {\n rawDef.uiStateParams = extend({}, val);\n update();\n }, true);\n rawDef.uiStateParams = extend({}, scope.$eval(ref.paramExpr));\n }\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n/**\n * `ui-state`: A fully dynamic directive for linking to a state\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n *\n * A directive which links to a state (and optionally, parameters).\n * When clicked, this directive activates the linked state with the supplied parameter values.\n *\n * ### Linked State\n * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n *\n * #### Example:\n * Create a list of links.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Relative Links\n * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n * You just need to be aware that the path is relative to the state that *created* the link.\n * This allows a state to create relative `ui-state` which always targets the same destination.\n *\n * ### hrefs\n * If the linked state has a URL, the directive will automatically generate and\n * update the `href` attribute (using the [[StateService.href]] method).\n *\n * ### Parameter Values\n * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n * Param values should be provided using the `ui-state-params` attribute.\n * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * This example renders a list of links with param values.\n * The state's `userId` parameter value comes from each user's `user.id` property.\n * ```html\n *
  • \n * {{ link.displayName }}\n *
  • \n * ```\n *\n * ### Transition Options\n * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n * Options are restricted to `location`, `inherit`, and `reload`.\n * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n *\n * #### Example:\n * ```html\n * Home\n * ```\n *\n * ### Other DOM Events\n *\n * You can also customize which DOM events to respond to (instead of `click`) by\n * providing an `events` array in the `ui-state-opts` attribute.\n *\n * #### Example:\n * ```html\n * \n * ```\n *\n * ### Highlighting the active link\n * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n *\n * ### Notes\n *\n * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n * However, it might be simpler to use [[uiSref]] parameter-only links.\n *\n * #### Example:\n * Sets the `lang` parameter to `en` and remains on the same state.\n *\n * ```html\n * English\n * ```\n *\n * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n * ```\n */\nlet uiStateDirective: ng1_directive;\nuiStateDirective = ['$uiRouter', '$timeout',\n function $StateRefDynamicDirective($uiRouter: UIRouter, $timeout: ITimeoutService) {\n const $state = $uiRouter.stateService;\n\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {\n const type = getTypeInfo(element);\n const active = uiSrefActive[1] || uiSrefActive[0];\n let unlinkInfoFn: Function = null;\n let hookFn;\n\n const rawDef = {} as Def;\n const getDef = () => processedDef($state, element, rawDef);\n\n const inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n const watchDeregFns = inputAttrs.reduce((acc, attr) => (acc[attr] = noop, acc), {});\n\n function update() {\n const def = getDef();\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n if (def.href != null) attrs.$set(type.attr, def.href);\n }\n\n inputAttrs.forEach((field) => {\n rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n\n attrs.$observe(field, (expr) => {\n watchDeregFns[field]();\n watchDeregFns[field] = scope.$watch(expr, (newval) => {\n rawDef[field] = newval;\n update();\n }, true);\n });\n });\n\n update();\n\n scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, getDef);\n bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n },\n };\n }];\n\n\n/**\n * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n *\n * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n * related directive's state is active (and remove them when it is inactive).\n *\n * The primary use-case is to highlight the active link in navigation menus,\n * distinguishing it from the inactive menu items.\n *\n * ### Linking to a `ui-sref` or `ui-state`\n * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n *\n * ### Matching\n *\n * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n * This is a \"fuzzy match\" which uses [[StateService.includes]].\n *\n * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n * This is an \"exact match\" which uses [[StateService.is]].\n *\n * ### Parameter values\n * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n *\n * #### Example:\n * ```html\n *
  • \n * {{ user.lastName }}\n *
  • \n * ```\n *\n * ### Examples\n *\n * Given the following template:\n * #### Example:\n * ```html\n * \n * ```\n *\n * When the app state is `app.user` (or any child state),\n * and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *\n * ```html\n * \n * ```\n *\n * ### Glob mode\n *\n * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n * The objects keys represent active class names and values represent the respective state names/globs.\n * `ui-sref-active` will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * #### Example:\n * Given the following template, with \"admin\" being an abstract state:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * Arrays are also supported as values in the `ngClass`-like interface.\n * This allows multiple states to add `active` class.\n *\n * #### Example:\n * Given the following template, with \"admin.roles\" being the current state, the class will be added too:\n * ```html\n *
    \n * Roles\n *
    \n * ```\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `
    ` and `` elements.\n * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n *\n * ### Notes:\n *\n * - The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n */\nlet uiSrefActiveDirective: ng1_directive;\nuiSrefActiveDirective = ['$state', '$stateParams', '$interpolate', '$uiRouter',\n function $StateRefActiveDirective($state: StateService, $stateParams: Obj, $interpolate: IInterpolateService, $uiRouter: UIRouter) {\n return {\n restrict: 'A',\n controller: ['$scope', '$element', '$attrs',\n function ($scope: IScope, $element: IAugmentedJQuery, $attrs: any) {\n let states: StateData[] = [];\n let activeEqClass: string;\n let uiSrefActive: any;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n setStatesFromDefinitionObject(uiSrefActive);\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState: string, newParams: Obj) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n const deregister = addState(newState, newParams, uiSrefActive);\n update();\n return deregister;\n };\n\n function updateAfterTransition(trans) {\n trans.promise.then(update, noop);\n }\n $scope.$on('$destroy', setupEventListeners());\n if ($uiRouter.globals.transition) {\n updateAfterTransition($uiRouter.globals.transition);\n }\n\n function setupEventListeners () {\n const deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged);\n const deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition);\n const deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update);\n return function cleanUp () {\n deregisterStatesChangedListener();\n deregisterOnStartListener();\n deregisterStateChangeSuccessListener();\n };\n }\n\n function handleStatesChanged () {\n setStatesFromDefinitionObject(uiSrefActive);\n }\n\n function setStatesFromDefinitionObject (statesDefinition: object) {\n if (isObject(statesDefinition)) {\n states = [];\n forEach(statesDefinition, function (stateOrName: StateOrName | Array, activeClass: string) {\n // Helper function to abstract adding state.\n const addStateForClass = function (stateOrName: string, activeClass: string) {\n const ref = parseStateRef(stateOrName);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n };\n\n if (isString(stateOrName)) {\n // If state is string, just add it.\n addStateForClass(stateOrName as string, activeClass)\n } else if (isArray(stateOrName)) {\n // If state is an array, iterate over it and add each array item individually.\n forEach(stateOrName, function (stateOrName: string) {\n addStateForClass(stateOrName, activeClass)\n });\n }\n });\n }\n }\n\n function addState(stateName: string, stateParams: Obj, activeClass: string) {\n const state = $state.get(stateName, stateContext($element));\n\n const stateInfo = {\n state: state || { name: stateName },\n params: stateParams,\n activeClass: activeClass,\n };\n\n states.push(stateInfo);\n\n return function removeState() {\n removeFrom(states)(stateInfo);\n };\n }\n\n // Update route state\n function update() {\n const splitClasses = str =>\n str.split(/\\s/).filter(identity);\n const getClasses = (stateList: StateData[]) =>\n stateList.map(x => x.activeClass).map(splitClasses).reduce(unnestR, []);\n\n const allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(uniqR, []);\n const fuzzyClasses = getClasses(states.filter(x => $state.includes(x.state.name, x.params)));\n const exactlyMatchesAny = !!states.filter(x => $state.is(x.state.name, x.params)).length;\n const exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n\n const addClasses = fuzzyClasses.concat(exactClasses).reduce(uniqR, []);\n const removeClasses = allClasses.filter(cls => !inArray(addClasses, cls));\n\n $scope.$evalAsync(() => {\n addClasses.forEach(className => $element.addClass(className));\n removeClasses.forEach(className => $element.removeClass(className));\n });\n }\n\n update();\n }],\n };\n }];\n\n/** @hidden */\ninterface Def { uiState: string; href: string; uiStateParams: Obj; uiStateOpts: any; }\n/** @hidden */\ninterface StateData { state: StateDeclaration; params: RawParams; activeClass: string; }\n\nangular.module('ui.router.state')\n .directive('uiSref', uiSrefDirective)\n .directive('uiSrefActive', uiSrefActiveDirective)\n .directive('uiSrefActiveEq', uiSrefActiveDirective)\n .directive('uiState', uiStateDirective);\n", + "/**\n * @ng1api\n * @module directives\n */ /** for typedoc */\nimport { ng as angular } from '../angular';\nimport { IInterpolateService, IScope, ITranscludeFunction, IAugmentedJQuery, ITimeoutService } from 'angular';\n\nimport {\n extend, unnestR, filter, tail, isDefined, isFunction, isString, trace, parse,\n ActiveUIView, TransitionService, ResolveContext, Transition, PathNode, StateDeclaration,\n Param, kebobString, HookRegOptions, ViewService, $QLike, Obj, TypedMap, noop,\n} from '@uirouter/core';\nimport { Ng1ViewConfig } from '../statebuilders/views';\nimport { Ng1Controller, Ng1StateDeclaration } from '../interface';\nimport { getLocals } from '../services';\nimport { ng1_directive } from './stateDirectives';\n\n/** @hidden */\nexport type UIViewData = {\n $cfg: Ng1ViewConfig;\n $uiView: ActiveUIView;\n};\n\n/** @hidden */\nexport type UIViewAnimData = {\n $animEnter: Promise;\n $animLeave: Promise;\n $$animLeave: { resolve: () => any; } // \"deferred\"\n};\n\n/**\n * `ui-view`: A viewport directive which is filled in by a view from the active state.\n *\n * ### Attributes\n *\n * - `name`: (Optional) A view name.\n * The name should be unique amongst the other views in the same state.\n * You can have views of the same name that live in different states.\n * The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).\n *\n * - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.\n * Uses [[$uiViewScroll]] to do the scrolling.\n *\n * - `onload`: Expression to evaluate whenever the view updates.\n *\n * #### Example:\n * A view can be unnamed or named.\n * ```html\n * \n *
    \n *\n * \n *
    \n *\n * \n * \n * ```\n *\n * You can only have one unnamed view within any template (or root html). If you are only using a\n * single view and it is unnamed then you can populate it like so:\n *\n * ```html\n *
    \n * $stateProvider.state(\"home\", {\n * template: \"

    HELLO!

    \"\n * })\n * ```\n *\n * The above is a convenient shortcut equivalent to specifying your view explicitly with the\n * [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * But typically you'll only use the views property if you name your view or have more than one view\n * in the same template. There's not really a compelling reason to name a view if its the only one,\n * but you could if you wanted, like so:\n *\n * ```html\n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"main\": {\n * template: \"

    HELLO!

    \"\n * }\n * }\n * })\n * ```\n *\n * Really though, you'll use views to set up multiple views:\n *\n * ```html\n *
    \n *
    \n *
    \n * ```\n *\n * ```js\n * $stateProvider.state(\"home\", {\n * views: {\n * \"\": {\n * template: \"

    HELLO!

    \"\n * },\n * \"chart\": {\n * template: \"\"\n * },\n * \"data\": {\n * template: \"\"\n * }\n * }\n * })\n * ```\n *\n * #### Examples for `autoscroll`:\n * ```html\n * \n * \n *\n * \n * \n * \n * \n * ```\n *\n * Resolve data:\n *\n * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n * can be customized using [[Ng1ViewDeclaration.resolveAs]]). This can be then accessed from the template.\n *\n * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n * controller is instantiated. The `$onInit()` hook can be used to perform initialization code which\n * depends on `$resolve` data.\n *\n * #### Example:\n * ```js\n * $stateProvider.state('home', {\n * template: '',\n * resolve: {\n * user: function(UserService) { return UserService.fetchUser(); }\n * }\n * });\n * ```\n */\nexport let uiView: ng1_directive;\nuiView = ['$view', '$animate', '$uiViewScroll', '$interpolate', '$q',\nfunction $ViewDirective($view: ViewService, $animate: any, $uiViewScroll: any, $interpolate: IInterpolateService, $q: $QLike) {\n\n function getRenderer(attrs: Obj, scope: IScope) {\n return {\n enter: function(element: JQuery, target: any, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.enter(element, null, target).then(cb);\n } else {\n $animate.enter(element, null, target, cb);\n }\n },\n leave: function(element: JQuery, cb: Function) {\n if (angular.version.minor > 2) {\n $animate.leave(element).then(cb);\n } else {\n $animate.leave(element, cb);\n }\n },\n };\n }\n\n function configsEqual(config1: Ng1ViewConfig, config2: Ng1ViewConfig) {\n return config1 === config2;\n }\n\n const rootData = {\n $cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },\n $uiView: { },\n };\n\n const directive = {\n count: 0,\n restrict: 'ECA',\n terminal: true,\n priority: 400,\n transclude: 'element',\n compile: function (tElement: JQuery, tAttrs: Obj, $transclude: ITranscludeFunction) {\n\n return function (scope: IScope, $element: IAugmentedJQuery, attrs: Obj) {\n const onloadExp = attrs['onload'] || '',\n autoScrollExp = attrs['autoscroll'],\n renderer = getRenderer(attrs, scope),\n inherited = $element.inheritedData('$uiView') || rootData,\n name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';\n\n let previousEl: JQuery,\n currentEl: JQuery,\n currentScope: IScope,\n viewConfig: Ng1ViewConfig,\n unregister: Function;\n\n const activeUIView: ActiveUIView = {\n $type: 'ng1',\n id: directive.count++, // Global sequential ID for ui-view tags added to DOM\n name: name, // ui-view name (
    \n fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name, // fully qualified name, describes location in DOM\n config: null, // The ViewConfig loaded (from a state.views definition)\n configUpdated: configUpdatedCallback, // Called when the matching ViewConfig changes\n get creationContext() { // The context in which this ui-view \"tag\" was created\n const fromParentTagConfig = parse('$cfg.viewDecl.$context')(inherited);\n // Allow \n // See https://github.com/angular-ui/ui-router/issues/3355\n const fromParentTag = parse('$uiView.creationContext')(inherited);\n return fromParentTagConfig || fromParentTag;\n },\n };\n\n trace.traceUIViewEvent('Linking', activeUIView);\n\n function configUpdatedCallback(config?: Ng1ViewConfig) {\n if (config && !(config instanceof Ng1ViewConfig)) return;\n if (configsEqual(viewConfig, config)) return;\n trace.traceUIViewConfigUpdated(activeUIView, config && config.viewDecl && config.viewDecl.$context);\n\n viewConfig = config;\n updateView(config);\n }\n\n $element.data('$uiView', { $uiView: activeUIView });\n\n updateView();\n\n unregister = $view.registerUIView(activeUIView);\n scope.$on('$destroy', function() {\n trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);\n unregister();\n });\n\n function cleanupLastView() {\n if (previousEl) {\n trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));\n previousEl.remove();\n previousEl = null;\n }\n\n if (currentScope) {\n trace.traceUIViewEvent('Destroying scope', activeUIView);\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentEl) {\n const _viewData = currentEl.data('$uiViewAnim');\n trace.traceUIViewEvent('Animate out', _viewData);\n renderer.leave(currentEl, function() {\n _viewData.$$animLeave.resolve();\n previousEl = null;\n });\n\n previousEl = currentEl;\n currentEl = null;\n }\n }\n\n function updateView(config?: Ng1ViewConfig) {\n const newScope = scope.$new();\n const animEnter = $q.defer(), animLeave = $q.defer();\n\n const $uiViewData: UIViewData = {\n $cfg: config,\n $uiView: activeUIView,\n };\n\n const $uiViewAnim: UIViewAnimData = {\n $animEnter: animEnter.promise,\n $animLeave: animLeave.promise,\n $$animLeave: animLeave,\n };\n\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoading\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n *\n * Fired once the view **begins loading**, *before* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n newScope.$emit('$viewContentLoading', name);\n\n const cloned = $transclude(newScope, function(clone) {\n clone.data('$uiViewAnim', $uiViewAnim);\n clone.data('$uiView', $uiViewData);\n renderer.enter(clone, $element, function onUIViewEnter() {\n animEnter.resolve();\n if (currentScope) currentScope.$emit('$viewContentAnimationEnded');\n\n if (isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n $uiViewScroll(clone);\n }\n });\n\n cleanupLastView();\n });\n\n currentEl = cloned;\n currentScope = newScope;\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoaded\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description *\n * Fired once the view is **loaded**, *after* the DOM is rendered.\n *\n * @param {Object} event Event object.\n */\n currentScope.$emit('$viewContentLoaded', config || viewConfig);\n currentScope.$eval(onloadExp);\n }\n };\n },\n };\n\n return directive;\n}];\n\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$transitions', '$view', '$q', '$timeout'];\n/** @hidden */\nfunction $ViewDirectiveFill($compile: angular.ICompileService,\n $controller: angular.IControllerService,\n $transitions: TransitionService,\n $view: ViewService,\n $q: angular.IQService,\n $timeout: ITimeoutService) {\n const getControllerAs = parse('viewDecl.controllerAs');\n const getResolveAs = parse('viewDecl.resolveAs');\n\n return {\n restrict: 'ECA',\n priority: -400,\n compile: function (tElement: JQuery) {\n const initial = tElement.html();\n tElement.empty();\n\n return function (scope: IScope, $element: JQuery) {\n const data: UIViewData = $element.data('$uiView');\n if (!data) {\n $element.html(initial);\n $compile($element.contents() as any)(scope);\n return;\n }\n\n const cfg: Ng1ViewConfig = data.$cfg || { viewDecl: {}, getTemplate: noop };\n const resolveCtx: ResolveContext = cfg.path && new ResolveContext(cfg.path);\n $element.html(cfg.getTemplate($element, resolveCtx) || initial);\n trace.traceUIViewFill(data.$uiView, $element.html());\n\n const link = $compile($element.contents() as any);\n const controller = cfg.controller;\n const controllerAs: string = getControllerAs(cfg);\n const resolveAs: string = getResolveAs(cfg);\n const locals = resolveCtx && getLocals(resolveCtx);\n\n scope[resolveAs] = locals;\n\n if (controller) {\n const controllerInstance = $controller(controller, extend({}, locals, { $scope: scope, $element: $element }));\n if (controllerAs) {\n scope[controllerAs] = controllerInstance;\n scope[controllerAs][resolveAs] = locals;\n }\n\n // TODO: Use $view service as a central point for registering component-level hooks\n // Then, when a component is created, tell the $view service, so it can invoke hooks\n // $view.componentLoaded(controllerInstance, { $scope: scope, $element: $element });\n // scope.$on('$destroy', () => $view.componentUnloaded(controllerInstance, { $scope: scope, $element: $element }));\n\n $element.data('$ngControllerController', controllerInstance);\n $element.children().data('$ngControllerController', controllerInstance);\n\n registerControllerCallbacks($q, $transitions, controllerInstance, scope, cfg);\n }\n\n // Wait for the component to appear in the DOM\n if (isString(cfg.viewDecl.component)) {\n const cmp = cfg.viewDecl.component;\n const kebobName = kebobString(cmp);\n const tagRegexp = new RegExp(`^(x-|data-)?${kebobName}$`, 'i');\n\n const getComponentController = () => {\n const directiveEl = [].slice.call($element[0].children)\n .filter((el: Element) => el && el.tagName && tagRegexp.exec(el.tagName)) ;\n\n return directiveEl && angular.element(directiveEl).data(`$${cmp}Controller`);\n };\n\n const deregisterWatch = scope.$watch(getComponentController, function(ctrlInstance) {\n if (!ctrlInstance) return;\n registerControllerCallbacks($q, $transitions, ctrlInstance, scope, cfg);\n deregisterWatch();\n });\n }\n\n link(scope);\n };\n },\n };\n}\n\n/** @hidden */\nconst hasComponentImpl = typeof (angular as any).module('ui.router')['component'] === 'function';\n/** @hidden incrementing id */\nlet _uiCanExitId = 0;\n\n/** @hidden TODO: move these callbacks to $view and/or `/hooks/components.ts` or something */\nfunction registerControllerCallbacks($q: angular.IQService,\n $transitions: TransitionService,\n controllerInstance: Ng1Controller,\n $scope: IScope,\n cfg: Ng1ViewConfig) {\n // Call $onInit() ASAP\n if (isFunction(controllerInstance.$onInit) && !(cfg.viewDecl.component && hasComponentImpl)) {\n controllerInstance.$onInit();\n }\n\n const viewState: Ng1StateDeclaration = tail(cfg.path).state.self;\n\n const hookOptions: HookRegOptions = { bind: controllerInstance };\n // Add component-level hook for onParamsChange\n if (isFunction(controllerInstance.uiOnParamsChanged)) {\n const resolveContext: ResolveContext = new ResolveContext(cfg.path);\n const viewCreationTrans = resolveContext.getResolvable('$transition$').data;\n\n // Fire callback on any successful transition\n const paramsUpdated = ($transition$: Transition) => {\n // Exit early if the $transition$ is the same as the view was created within.\n // Exit early if the $transition$ will exit the state the view is for.\n if ($transition$ === viewCreationTrans || $transition$.exiting().indexOf(viewState as StateDeclaration) !== -1) return;\n\n const toParams = $transition$.params('to') as TypedMap;\n const fromParams = $transition$.params>('from') as TypedMap;\n const toSchema: Param[] = $transition$.treeChanges().to.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n const fromSchema: Param[] = $transition$.treeChanges().from.map((node: PathNode) => node.paramSchema).reduce(unnestR, []);\n\n // Find the to params that have different values than the from params\n const changedToParams = toSchema.filter((param: Param) => {\n const idx = fromSchema.indexOf(param);\n return idx === -1 || !fromSchema[idx].type.equals(toParams[param.id], fromParams[param.id]);\n });\n\n // Only trigger callback if a to param has changed or is new\n if (changedToParams.length) {\n const changedKeys: string[] = changedToParams.map(x => x.id);\n // Filter the params to only changed/new to params. `$transition$.params()` may be used to get all params.\n const newValues = filter(toParams, (val, key) => changedKeys.indexOf(key) !== -1);\n controllerInstance.uiOnParamsChanged(newValues, $transition$);\n }\n };\n $scope.$on('$destroy', $transitions.onSuccess({}, paramsUpdated, hookOptions));\n }\n\n // Add component-level hook for uiCanExit\n if (isFunction(controllerInstance.uiCanExit)) {\n const id = _uiCanExitId++;\n const cacheProp = '_uiCanExitIds';\n\n // Returns true if a redirect transition already answered truthy\n const prevTruthyAnswer = (trans: Transition) =>\n !!trans && (trans[cacheProp] && trans[cacheProp][id] === true || prevTruthyAnswer(trans.redirectedFrom()));\n\n // If a user answered yes, but the transition was later redirected, don't also ask for the new redirect transition\n const wrappedHook = (trans: Transition) => {\n let promise;\n const ids = trans[cacheProp] = trans[cacheProp] || {};\n\n if (!prevTruthyAnswer(trans)) {\n promise = $q.when(controllerInstance.uiCanExit(trans));\n promise.then(val => ids[id] = (val !== false));\n }\n return promise;\n };\n\n const criteria = { exiting: viewState.name };\n $scope.$on('$destroy', $transitions.onBefore(criteria, wrappedHook, hookOptions));\n }\n}\n\nangular.module('ui.router.state').directive('uiView', uiView);\nangular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n", + "/** @module ng1 */ /** for typedoc */\n\nimport { ng as angular } from './angular';\nimport { Obj, StateService, StateOrName } from '@uirouter/core';\n\n/**\n * `isState` Filter: truthy if the current state is the parameter\n *\n * Translates to [[StateService.is]] `$state.is(\"stateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state is 'stateName'
    \n * ```\n */\n$IsStateFilter.$inject = ['$state'];\nexport function $IsStateFilter($state: StateService) {\n const isFilter: any = function(state: StateOrName, params: Obj, options?: { relative?: StateOrName }) {\n return $state.is(state, params, options);\n };\n isFilter.$stateful = true;\n return isFilter;\n}\n\n/**\n * `includedByState` Filter: truthy if the current state includes the parameter\n *\n * Translates to [[StateService.includes]]` $state.is(\"fullOrPartialStateName\")`.\n *\n * #### Example:\n * ```html\n *
    show if state includes 'fullOrPartialStateName'
    \n * ```\n */\n$IncludedByStateFilter.$inject = ['$state'];\nexport function $IncludedByStateFilter($state: StateService) {\n const includesFilter: any = function(state: StateOrName, params: Obj, options: { relative?: StateOrName }) {\n return $state.includes(state, params, options);\n };\n includesFilter.$stateful = true;\n return includesFilter;\n}\n\nangular.module('ui.router.state')\n .filter('isState', $IsStateFilter)\n .filter('includedByState', $IncludedByStateFilter);\n", "/** @module ng1 */ /** */\nimport { ng as angular } from './angular';\nimport { IServiceProviderFactory } from 'angular';\nimport IAnchorScrollService = angular.IAnchorScrollService;\nimport ITimeoutService = angular.ITimeoutService;\n\nexport interface UIViewScrollProvider {\n /**\n * Uses standard anchorScroll behavior\n *\n * Reverts [[$uiViewScroll]] back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)\n * service for scrolling based on the url anchor.\n */\n useAnchorScroll(): void;\n}\n\n\n/** @hidden */\nfunction $ViewScrollProvider() {\n\n let useAnchorScroll = false;\n\n this.useAnchorScroll = function () {\n useAnchorScroll = true;\n };\n\n this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll: IAnchorScrollService, $timeout: ITimeoutService): Function {\n if (useAnchorScroll) {\n return $anchorScroll;\n }\n\n return function ($element: JQuery) {\n return $timeout(function () {\n $element[0].scrollIntoView();\n }, 0, false);\n };\n }];\n}\n\nangular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n", "/**\n * Main entry point for angular 1.x build\n * @module ng1\n */ /** */\n\nexport * from './interface';\nexport * from './services';\nexport * from './statebuilders/views';\nexport * from './stateProvider';\nexport * from './urlRouterProvider';\n\nimport './injectables';\nimport './directives/stateDirectives';\nimport './stateFilters';\nimport './directives/viewDirective';\nimport './viewScroll';\n\nexport default 'ui.router';\n\nimport * as core from '@uirouter/core';\nexport { core };\nexport * from '@uirouter/core';\n\n" ], "names": [ + "ng_from_global", + "angular", + "ng", + "ng_from_import", + "ng_from_import.module", "fn", - "args", - "length", - "func_args_length", + "initial_args", + "slice", "apply", + "arguments", + "func_args_length", + "length", + "args", "curried", "concat", - "slice", - "arguments", - "initial_args", "start", "i", "result", @@ -173,44 +178,149 @@ "funcs", "compose", "reverse", + "prop", + "name", + "obj", + "propEq", + "curry", + "_val", + "parse", + "pipe", + "split", + "map", + "not", "fn1", "fn2", - "fnName", - "obj", - "struct", + "all", + "arr", + "reduce", + "b", "x", + "any", + "is", + "ctor", + "constructor", + "eq", + "value", + "other", "val", + "v", + "fnName", + "struct", + "text", + "glob", + "regexpString", + "seg", + "join", + "regexp", + "RegExp", + "Glob", + "exec", + "test", + "config", + "StateObject", + "create", + "stateDecl", + "isStateClass", + "state", + "inherit", + "prototype", + "$$state", + "self", + "__stateObjectCache", + "nameGlob", + "fromString", + "ref", + "fqn", + "parent", + "root", + "opts", + "defaults", + "matchingKeys", + "parameters", + "values", + "params", + "filter", + "param", + "hasOwnProperty", + "id", + "url", + "parameter", + "find", + "isFunction", + "isObject", + "toStr", + "Object", + "toString", + "tis", + "t", + "isUndefined", + "isDefined", + "isNull", + "o", + "isNullOrUndefined", + "or", + "isNumber", + "isString", "isArray", + "Array", + "isDate", + "isRegExp", + "isState", "head", "tail", - "filter", - "not", - "isString", - "isFunction", + "isPromise", + "and", + "notImplemented", + "fnname", + "Error", + "services", + "$q", + "undefined", + "$injector", + "global", + "fromJson", + "JSON", + "bind", + "toJson", + "stringify", + "forEach", + "cb", + "_this", + "keys", + "key", + "extend", + "assign", + "_extend", + "equals", + "_equals", "source", "target", - "bind", "fnNames", "latebind", "bindFunction", - "makeLateRebindFn", - "Object", - "keys", - "reduce", "acc", - "name", + "extra", + "inArray", + "_inArray", "array", "indexOf", + "removeFrom", + "_removeFrom", "idx", "splice", - "arr", + "pushTo", + "_pushTo", "push", - "opts", + "deregAll", + "functions", "defaultsList", "_defaultsList", "defaultVals", - "extend", "pick", + "mergeR", + "memo", + "item", "first", "second", "path", @@ -218,26 +328,31 @@ "propNames", "objCopy", "_prop", - "inArray", - "key", "collection", "propName", - "map", - "prop", "callback", "accept", - "forEach", - "item", + "mapObj", + "allTrueR", + "elem", + "anyTrueR", + "unnestR", + "flattenR", + "pushR", + "uniqR", + "token", + "unnest", + "flatten", + "assertPredicate", + "assertFn", + "assertMap", "predicateOrMap", "errMsg", - "Error", + "pairs", "maxArrayLen", "min", "Math", - "memo", "keyValTuple", - "value", - "undefined", "src", "dest", "toObj", @@ -245,472 +360,35 @@ "o1", "o2", "t1", - "tup", - "all", - "_arraysEq", - "isDate", - "getTime", - "isRegExp", - "toString", - "any", - "b", - "_equals", "a1", "a2", + "tup", "arrayTuples", - "t", - "uiview", - "state", - "creationContext", - "id", - "$type", - "fqn", - "input", - "isNumber", - "Category", - "criterion", - "toMatch", - "_state", - "globStrings", - "glob", - "Glob", - "matches", - "registry", - "transitionService", - "eventType", - "matchObject", - "options", - "registeredHook", - "RegisteredHook", - "removeHookFn", - "hooks", - "deregister", - "_registeredHooks", - "removeFrom", - "hookRegistrationFn", - "reverseDepthSort", - "l", - "r", - "factor", - "depthDelta", - "node", - "hook", - "priority", - "type", - "mode", - "isDefined", - "allTruthyMode", - "arrayWrap", - "arrayUnwrap", - "val1", - "val2", - "left", - "right", - "paramTypeFn", - "wrapperFn", - "arrayEqualsHandler", - "arrayHandler", - "_this", - "dynamic", - "pattern", - "inherit", - "is", - "$arrayMode", - "cfg", - "isShorthand", - "getStaticDefaultValue", - "$$fn", - "isInjectable", - "urlType", - "location", - "paramTypes", - "DefType", - "CONFIG", - "PATH", - "SEARCH", - "ParamType", - "config", - "isOptional", - "defaultPolicy", - "squash", - "arrayMode", - "from", - "to", - "replace", - "configuredKeys", - "max", - "str", - "substr", - "camelCase", - "$1", - "toLowerCase", - "fnStr", - "fnToString", - "namedFunctionMatch", - "match", - "toStr", - "_fn", - "o", - "isObject", - "seen", - "stringifyPattern", - "JSON", - "stringify", - "format", - "delim", - "re", - "RegExp", - "split", - "identity", - "pushR", - "self", - "$$state", - "parent", - "data", - "includes", - "annotate", - "$injector", - "services", - "strictDi", - "getToken", - "p", - "provide", - "token", - "literal2Resolvable", - "Resolvable", - "resolveFn", - "deps", - "policy", - "useFactory", - "dependencies", - "useClass", - "useValue", - "useExisting", - "tuple2Resolvable", - "pipe", - "tuple", - "item2Resolvable", - "decl", - "resolve", - "resolveObj", - "resolvePolicies", - "objects2Tuples", - "resolvePolicy", - "param", - "surroundPattern", - "url", - "isHtml5", - "absolute", - "baseHref", - "stripLastPathElement", - "handler", - "TargetState", - "isDef", - "trans", - "addResolvable", - "UIRouter", - "router", - "Transition", - "params", - "entering", - "hookName", - "transition", - "hookFn", - "lazyLoadFn", - "lazyLoad", - "promise", - "$q", - "when", - "then", - "Array", - "states", - "stateRegistry", - "register", - "err", - "reject", - "ignoredReason", - "_ignoredReason", - "trace", - "traceTransitionIgnored", - "pending", - "globals", - "abort", - "Rejection", - "ignored", - "toPromise", - "valid", - "error", - "orEmptyString", - "_a", - "beforehash", - "hash", - "_b", - "search", - "serviceClass", - "configurationClass", - "uiRouter", - "service", - "locationService", - "configuration", - "locationConfig", - "dispose", - "templateFactory", - "view", - "get", - "Ng1ViewConfig", - "ctrlKeys", - "compKeys", - "nonCompKeys", - "allViewKeys", - "views", - "hasAnyKey", - "join", - "viewsObject", - "$default", - "component", - "resolveAs", - "$context", - "$name", - "normalized", - "ViewService", - "normalizeUIViewTarget", - "$uiViewName", - "uiViewName", - "$uiViewContextAnchor", - "uiViewContextAnchor", - "cmpDefs", - "getBindings", - "unnestR", - "$locationProvider", - "$location", - "$browser", - "$sniffer", - "$rootScope", - "$http", - "$templateCache", - "ng1LocationService", - "_runtimeServices", - "stateProvider", - "StateProvider", - "stateService", - "decorator", - "ng1ViewsBuilder", - "getStateHookBuilder", - "viewService", - "_pluginapi", - "_viewConfigFactory", - "getNg1ViewConfigFactory", - "Ng1LocationServices", - "monkeyPatchPathParameterType", - "$get", - "$inject", - "$uiRouter", - "resolvables", - "resolvable", - "$watch", - "approximateDigests", - "ref", - "parsed", - "paramsOnly", - "paramExpr", - "el", - "$uiView", - "inheritedData", - "parse", - "$state", - "$element", - "def", - "uiState", - "current", - "uiStateOpts", - "defaultOpts", - "href", - "uiStateParams", - "isSvg", - "prototype", - "isForm", - "nodeName", - "attr", - "isAnchor", - "toUpperCase", - "clickable", - "$timeout", - "getDef", - "e", - "button", - "which", - "ctrlKey", - "metaKey", - "shiftKey", - "transition_1", - "go", - "preventDefault", - "ignorePreventDefaultCount_1", - "cancel", - "relative", - "stateContext", - "$current", - "element", - "scope", - "events", - "on", - "events_1", - "event_1", - "$on", - "off", - "events_2", - "event_2", - "isFilter", - "$stateful", - "includesFilter", - "$compile", - "$controller", - "$transitions", - "$view", - "getControllerAs", - "getResolveAs", - "restrict", - "compile", - "tElement", - "initial", - "html", - "empty", - "contents", - "$cfg", - "viewDecl", - "getTemplate", - "noop", - "resolveCtx", - "ResolveContext", - "traceUIViewFill", - "link", - "controller", - "controllerAs", - "locals", - "getLocals", - "controllerInstance", - "$scope", - "children", - "registerControllerCallbacks", - "cmp_1", - "kebobName", - "kebobString", - "tagRegexp_1", - "deregisterWatch_1", - "directiveEl", - "tagName", - "exec", - "angular", - "ctrlInstance", - "$onInit", - "hasComponentImpl", - "viewState", - "hookOptions", - "uiOnParamsChanged", - "viewCreationTrans_1", - "getResolvable", - "onSuccess", - "$transition$", - "exiting", - "toParams", - "fromParams", - "toSchema", - "treeChanges", - "paramSchema", - "fromSchema", - "changedToParams", - "equals", - "changedKeys_1", - "newValues", - "uiCanExit", - "id_1", - "_uiCanExitId", - "prevTruthyAnswer_1", - "redirectedFrom", - "criteria", - "onBefore", - "ids", - "ng_from_global", - "ng", - "ng_from_import", - "ng_from_import.module", - "propEq", - "curry", - "_val", - "ctor", - "constructor", - "eq", - "other", - "v", - "text", - "regexpString", - "seg", - "regexp", - "test", - "StateObject", - "create", - "stateDecl", - "isStateClass", - "__stateObjectCache", - "nameGlob", - "fromString", - "root", - "defaults", - "matchingKeys", - "parameters", - "values", - "hasOwnProperty", - "parameter", - "find", - "tis", - "isUndefined", - "isNull", - "isNullOrUndefined", - "or", - "isState", - "isPromise", - "and", - "notImplemented", - "fnname", - "global", - "fromJson", - "toJson", - "cb", - "assign", - "_extend", - "extra", - "_inArray", - "_removeFrom", - "pushTo", - "_pushTo", - "deregAll", - "functions", - "mergeR", - "mapObj", - "allTrueR", - "elem", - "anyTrueR", - "flattenR", - "uniqR", - "unnest", - "flatten", - "assertPredicate", - "assertFn", - "assertMap", - "pairs", + "getTime", + "RejectType", "silenceUncaughtInPromise", + "promise", "catch", + "e", "silentRejection", + "error", + "reject", "_items", "_limit", + "_evictListeners", "Queue", "items", + "evict", "shift", "size", - "RejectType", + "current", + "type", "message", "detail", + "Rejection", + "then", "_transitionRejection", + "options", "rejection", "SUPERSEDED", "redirected", @@ -721,19 +399,24 @@ "ERROR", "errored", "d", - "detailString", - "viewConfigString", - "viewConfig", - "$id", + "uiview", + "creationContext", + "$type", + "input", + "Category", "consoleLog", "Function", "console", "log", "consoletable", "table", + "TransitionHookPhase", + "TransitionHookScope", "_tid", "_rid", "transLbl", + "trans", + "approximateDigests", "Trace", "enabled", "categories", @@ -750,10 +433,14 @@ "event", "context", "functionToString", + "registeredHook", "maxLength", "hookResult", "transitionOptions", + "when", "RESOLVE", + "resolvable", + "data", "reason", "finalState", "viewData", @@ -761,32 +448,52 @@ "padString", "uiViewString", "traceUIViewEvent", + "html", "VIEWCONFIG", "uivheader", "mapping", + "_a", "uiView", + "viewConfig", "uiv", + "cfg", + "viewDecl", + "$context", + "$name", + "_b", "sort", "a", "localeCompare", - "TransitionHookPhase", - "TransitionHookScope", + "view", + "$id", + "$uiViewName", + "$uiViewContextAnchor", + "viewConfigString", + "trace", "_stateRegistry", "_identifier", "_params", "_options", "_definition", "matcher", + "relative", + "TargetState", "base", "stateName", + "replace", "newParams", "newOpts", "defaultOptions", + "noop", + "transition", "traceData", + "stateContext", "hookPhase", "RUN", "isActive", + "eventType", "TransitionHook", + "hooks", "waitFor", "prev", "nextHook", @@ -794,6 +501,10 @@ "doneCallback", "remainingHooks", "chain", + "hook", + "err", + "router", + "stateService", "defaultErrorHandler", "_deregistered", "notCurrent", @@ -805,8 +516,10 @@ "getResultHandler", "synchronous", "normalize", + "toPromise", "invokeLimit", "invokeCount", + "deregister", "handleHookResult", "traceHookResult", "aborted", @@ -814,22 +527,42 @@ "_disposed", "_aborted", "isSuperseded", + "fnToString", "logError", + "criterion", + "toMatch", + "_state", + "globStrings", + "matches", "tranSvc", "matchCriteria", "removeHookFromRegistry", + "priority", + "RegisteredHook", "nodes", "matching", + "node", "matchState", + "_pluginapi", "_getPathTypes", + "treeChanges", + "criteria", "_getDefaultMatchCriteria", "mn", "pathtype", "isStateHook", + "scope", "STATE", "_matchingNodes", "_getMatchingNodes", "every", + "identity", + "registry", + "transitionService", + "_registeredHooks", + "removeHookFn", + "matchObject", + "hookRegistrationFn", "HookBuilder", "phase", "_getEvents", @@ -840,27 +573,69 @@ "baseHookOptions", "criteriaMatchPath", "transitionHook", + "reverseDepthSort", + "l", + "r", + "factor", + "depthDelta", "tupleSort", "reverseSort", + "tuple", "isCreate", "CREATE", + "$transitions", "reg", "getHooks", + "def", + "ParamType", "sub", + "pattern", + "substr", "decode", + "mode", "isSearch", - "ArrayType", + "allTruthyMode", + "arrayWrap", + "arrayUnwrap", + "val1", + "val2", + "left", + "right", + "paramTypeFn", + "wrapperFn", + "arrayEqualsHandler", + "arrayHandler", + "dynamic", + "$arrayMode", + "DefType", "hasOwn", + "isShorthand", + "location", "urlMatcherFactory", + "urlType", + "paramTypes", + "CONFIG", + "PATH", + "SEARCH", "getType", + "getStaticDefaultValue", + "$$fn", + "isInjectable", "unwrapShorthand", "arrayDefaults", "arrayParamNomenclature", - "getArrayMode", + "arrayMode", + "match", "$asArray", + "isOptional", "raw", + "squash", + "defaultPolicy", "getSquashPolicy", "defaultSquashPolicy", + "from", + "to", + "configuredKeys", "getReplace", "Param", "paramValues", @@ -875,25 +650,32 @@ "invoke", "getDefaultValue", "$normalize", + "normalized", "encoded", "encode", "stateOrNode", "PathNode", + "paramSchema", + "resolvables", + "views", "res", "clone", - "getParamVal", - "paramDef", "pDef", "applyPairs", + "paramDef", "paramsFn", "diff", "PathUtils", "targetState", + "toParams", + "$state", "applyRawParams", "fromPath", "toPath", "buildPath", "inheritParams", + "$view", + "states", "viewDecls", "subPath", "viewConfigs", @@ -905,15 +687,17 @@ "incomingParamVals", "omit", "fromParamVals", - "nodeParamVals", "ownParamVals", "reloadState", - "keep", "node1", "node2", - "nonDynamicParams", - "nodesMatch", "retained", + "exiting", + "entering", + "max", + "keep", + "nonDynamicParams", + "retainedWithToParams", "retainedNode", "cloned", "pathA", @@ -926,10 +710,15 @@ "defaultResolvePolicy", "async", "arg1", + "resolveFn", + "deps", + "policy", + "Resolvable", "resolved", "literal", "thisPolicy", "statePolicy", + "resolvePolicy", "resolveContext", "findNode", "maybeWaitForRx", @@ -939,9 +728,12 @@ "cache", "take", "getDependencies", + "get", "resolvedDeps", "resolvedValue", "traceResolvableResolved", + "resolve", + "resolvePolicies", "LAZY", "EAGER", "WAIT", @@ -952,6 +744,7 @@ "EAGER_WHENS", "NATIVE_INJECTOR_TOKEN", "_path", + "ResolveContext", "newResolvables", "matchedWhens", "traceResolvePath", @@ -972,10 +765,13 @@ "injector", "getNative", "native", + "getResolvable", "stateSelf", "defer", "_deferred", + "globals", "_targetState", + "valid", "_transitionCount", "buildToPath", "_treeChanges", @@ -985,7 +781,9 @@ "buildHooksForPhase", "invokeHooks", "applyViewConfigs", + "Transition", "makeEvent", + "hookName", "enteringStates", "$from", "$to", @@ -997,6 +795,7 @@ "topath", "targetNode", "addResolvables", + "redirectedFrom", "rf", "originalTransition", "redirects", @@ -1006,7 +805,7 @@ "newTransition", "originalEnteringNodes", "redirectEnteringNodes", - "nodeIsReloading", + "includes", "tc", "reload", "nodeSchemas", @@ -1015,6 +814,8 @@ "fromVals", "changes", "_changedParams", + "_ignoredReason", + "pending", "same", "newTC", "pendTC", @@ -1038,16 +839,30 @@ "fromStateOrName", "toStateOrName", "avoidEmptyHash", + "str", + "camelCase", + "$1", + "toLowerCase", + "fnStr", + "namedFunctionMatch", + "_fn", "stringifyPatternFn", + "stringifyPattern", "isRejection", "isRejectionPromise", + "seen", + "format", "beforeAfterSubstr", "char", "hostRegex", + "stripLastPathElement", "splitHash", "splitQuery", "splitEqual", "trimHashVal", + "delim", + "re", + "makeDefaultType", "ParamTypes", "types", "defaultTypes", @@ -1055,12 +870,12 @@ "definitionFn", "typeQueue", "_flushTypeQueue", - "makeDefaultType", "valToString", "defaultTypeBase", "String", "string", "query", + "hash", "int", "bool", "Boolean", @@ -1072,20 +887,21 @@ "Date", "valueOf", "json", - "initDefaultTypes", - "defaultRuleSortFn", "StateParams", + "$current", "parentParams", "parents", "ancestors", "inherited", "inheritList", - "parseUrl", - "charAt", - "substring", "getUrlBuilder", "$urlMatcherFactoryProvider", "stateDec", + "parsed", + "charAt", + "substring", + "parseUrl", + "compile", "paramMap", "paramConfig", "reloadOnSearch", @@ -1099,6 +915,21 @@ "urlParams", "nonUrlParams", "fromConfig", + "p", + "resolveObj", + "getToken", + "provide", + "literal2Resolvable", + "useFactory", + "dependencies", + "useClass", + "useValue", + "useExisting", + "tuple2Resolvable", + "annotate", + "strictDi", + "item2Resolvable", + "decl", "builders", "nameBuilder", "selfBuilder", @@ -1148,12 +979,14 @@ "urlRouter", "_registerRoot", "StateRegistry", - "rootStateDef", - "#", "_root", + "register", + "#", + "dispose", "stateDefinition", "getChildren", "_children", + "children", "deregistered", "$ur", "rules", @@ -1162,7 +995,7 @@ "_deregisterTree", "found", "func", - "memoizeTo", + "surroundPattern", "splitOnSlash", "splitOnDelim", "strict", @@ -1179,9 +1012,9 @@ "matchDetails", "m", "index", - "makeRegexpType", "_segments", "lastIndex", + "search", "fromSearch", "_compiled", "_pattern", @@ -1189,10 +1022,11 @@ "encodeURIComponent", "c", "charCodeAt", + "toUpperCase", + "weights", "_cache", "pathSegmentsAndParams", "joinNeighborsR", - "weights", "weightsA", "weightsB", "padVal", @@ -1200,21 +1034,18 @@ "padArrays", "cmp", "_pairs", + "reverseString", "allParams", "pathParams", "searchParams", "nPathSegments", "urlm", - "paramVal", - "reverseString", - "decodePathArray", "findParam", - "validParamVal", - "isValid", - "isDefaultValue", "urlMatchers", "getDetails", "queryParams", + "isValid", + "isDefaultValue", "pathString", "encodeDashes", "queryString", @@ -1227,6 +1058,7 @@ "object", "UrlRuleFactory", "what", + "handler", "makeRule", "_what", "fromUrlMatcher", @@ -1238,18 +1070,20 @@ "details", "matchPriority", "optional", + "href", "transitionTo", "sticky", "Number", + "defaultRuleSortFn", "prioritySort", - "typeSort", "URLMATCHER", "REGEXP", "RAW", "OTHER", + "typeSort", "urlMatcherSort", - "idSort", "useMatchPriority", + "idSort", "createProxyFunctions", "UrlRouter", "listen", @@ -1267,19 +1101,24 @@ "ensureSorted", "best", "weight", - "checkRule", "evt", "defaultPrevented", "$url", "urlService", "newurl", + "isDef", + "go", "applyResult", "_stopFn", "onChange", "sync", "read", + "locationService", + "absolute", + "isHtml5", "html5Mode", "hashPrefix", + "baseHref", "appendBasePath", "slash", "cfgPort", @@ -1293,14 +1132,18 @@ "urlParts", "interceptDeferred", "_rootViewContext", + "_viewConfigFactory", "_registeredUIViews", "_uiViews", "_activeViewConfigs", "_viewConfigs", "_onSync", "_listeners", + "ViewService", "rawViewName", "viewAtContext", + "uiViewName", + "uiViewContextAnchor", "relativeViewNameSugar", "anchor", "_rootContext", @@ -1310,8 +1153,8 @@ "cfgFactory", "cfgs", "traceViewServiceEvent", - "count", "uiViewsByFqn", + "count", "depthCompare", "depthFn", "posNeg", @@ -1343,6 +1186,7 @@ "syncFns", "lateBind", "locationServices", + "locationConfig", "umf", "UrlService", "_routerInstance", @@ -1350,67 +1194,59 @@ "locationConfigStub", "TransitionService", "StateService", + "viewService", + "stateRegistry", "disposable", + "UIRouter", "_disposables", + "ignored", "plugin", "pluginInstance", "_plugins", "pluginName", - "registerAddCoreResolvables", - "onCreate", - "addCoreResolvables", + "addResolvable", + "fromData", + "isTransition", + "treeChangesCleanup", + "replaceTransitionWithNull", "redirectToHook", "redirect", "redirectTo", - "registerRedirectToHook", - "onStart", + "hookFn", "onExitHook", "makeEnterExitRetainHook", - "registerOnExitHook", - "onExit", "onRetainHook", - "registerOnRetainHook", - "onRetain", "onEnterHook", - "registerOnEnterHook", - "onEnter", "eagerResolvePath", - "registerEagerResolvePath", "lazyResolveState", - "registerLazyResolveState", "resolveRemaining", - "registerResolveRemaining", - "onFinish", "loadEnteringViews", "enteringViews", "load", - "registerLoadEnteringViews", "activateViews", "exitingViews", "deactivateViewConfig", "activateViewConfig", - "registerActivateViews", "updateGlobalState", "clearCurrentTransition", + "onSuccess", "copy", - "registerUpdateGlobalState", "updateUrl", "urlOptions", "update", - "registerUpdateUrl", "lazyLoadHook", + "lazyLoad", "lazyLoadState", "orig", "identifier", "parts", - "registerLazyLoadHook", + "lazyLoadFn", "hookOrder", "HANDLE_RESULT", "REJECT_ERROR", - "registerIgnoredTransitionHook", - "ignoredHook", - "registerInvalidTransitionHook", - "invalidTransitionHook", + "ignoredReason", + "traceTransitionIgnored", + "abort", "defaultTransOpts", "notify", "custom", @@ -1418,6 +1254,7 @@ "_defineCorePaths", "_defineCoreEvents", "_registerCoreTransitionHooks", + "onEvict", "hooksArray", "Phase", "TH", @@ -1434,27 +1271,50 @@ "hookScope", "fns", "addCoreResolves", + "onCreate", + "addCoreResolvables", + "onBefore", + "ignoredHook", + "registerIgnoredTransitionHook", "invalid", + "invalidTransitionHook", + "registerInvalidTransitionHook", + "onStart", + "registerRedirectToHook", + "onExit", + "registerOnExitHook", + "onRetain", + "registerOnRetainHook", + "onEnter", + "registerOnEnterHook", "eagerResolve", + "registerEagerResolvePath", "lazyResolve", + "registerLazyResolveState", "resolveAll", + "onFinish", + "registerResolveRemaining", "loadViews", + "registerLoadEnteringViews", + "registerActivateViews", "updateGlobals", + "registerUpdateGlobalState", + "registerUpdateUrl", + "registerLazyLoadHook", "$error$", "stack", - "getters", "boundFns", "invalidCallbacks", "toState", - "nextCallback", - "callbackQueue", - "dequeue", - "checkForRedirect", - "invokeNextCallback", "makeTargetState", "latestThing", "peekTail", "latest", + "callbackQueue", + "checkForRedirect", + "nextCallback", + "dequeue", + "invokeNextCallback", "transOpts", "latestSuccess", "currentPath", @@ -1476,13 +1336,22 @@ "STRIP_COMMENTS", "ARGUMENT_NAMES", "has", + "locals", "ensureExist", + "$inject", "keyValsToObjectR", "accum", "getParams", + "orEmptyString", + "beforehash", "buildUrl", "loc", "searchObject", + "serviceClass", + "configurationClass", + "uiRouter", + "service", + "configuration", "fireAfterUpdate", "_get", "_location", @@ -1528,9 +1397,21 @@ "memoryLocationPlugin", "MemoryLocationConfig", "UIRouterPluginBase", + "templateFactory", + "Ng1ViewConfig", + "hasAnyKey", + "compKeys", + "nonCompKeys", + "allViewKeys", + "viewsObject", + "$default", + "component", + "resolveAs", + "normalizeUIViewTarget", "makeComponentTemplate", "bindings", "template", + "controller", "getController", "results", "provider", @@ -1538,6 +1419,8 @@ "providerFn", "version", "minor", + "$http", + "$templateCache", "$templateRequest", "TemplateFactory", "_useHttp", @@ -1555,24 +1438,41 @@ "prefix", "kebob", "kebobed", + "kebobString", "attrs", + "cmpDefs", + "getBindings", "getComponentBindings", "attrName", + "attr", "resolveName", - "scopeBindings", + "kebobName", "bindToController", + "scopeBindings", "bindingsObj", + "StateProvider", + "decorator", "onInvalid", + "getStateHookBuilder", "stateObject", + "getLocals", "$state$", + "$transition$", + "$locationProvider", "_lp", + "Ng1LocationServices", "pathType", "~", "/", "~~", "~2F", "_urlListeners", + "$sniffer", "newUrl", + "$location", + "$rootScope", + "$browser", + "$on", "_loc", "_browser", "_urlRouter", @@ -1589,49 +1489,127 @@ "mod_rtr", "mod_state", "mod_main", + "stateProvider", + "ng1ViewsBuilder", + "getNg1ViewConfigFactory", + "ng1LocationService", + "_runtimeServices", + "monkeyPatchPathParameterType", + "$get", "$uiRouterProvider", "getProviderFor", "serviceName", "$urp", + "$uiRouter", "runBlock", + "$watch", "watchDigests", "urlRouterProvider", "$urlMatcherFactory", "uiSrefDirective", + "uiStateDirective", + "uiSrefActiveDirective", "ctx", + "paramsOnly", + "paramExpr", + "el", + "$uiView", + "inheritedData", + "$element", + "uiState", + "uiStateOpts", + "defaultOpts", + "uiStateParams", + "isSvg", + "isForm", + "nodeName", + "isAnchor", + "clickable", + "$timeout", + "getDef", + "button", + "which", + "ctrlKey", + "metaKey", + "shiftKey", + "transition_1", + "preventDefault", + "ignorePreventDefaultCount_1", + "cancel", + "element", + "events", + "on", + "events_1", + "event_1", + "off", + "events_2", + "event_2", + "isFilter", + "$stateful", + "includesFilter", + "$compile", + "$controller", + "getControllerAs", + "getResolveAs", + "restrict", + "tElement", + "initial", + "empty", + "contents", + "$cfg", + "getTemplate", + "resolveCtx", + "traceUIViewFill", + "link", + "controllerAs", + "controllerInstance", + "$scope", + "registerControllerCallbacks", + "cmp_1", + "tagRegexp_1", + "deregisterWatch_1", + "directiveEl", + "tagName", + "ctrlInstance", "require", "uiSrefActive", - "unlinkInfoFn", - "active", - "$$addStateInfo", - "$set", "getTypeInfo", + "active", + "unlinkInfoFn", "rawDef", "processedDef", "parseStateRef", "uiSref", + "$$addStateInfo", + "$set", "uiSrefOpts", "$eval", "onStatesChanged", "clickHook", "bindEvents", - "uiStateDirective", "inputAttrs", "watchDeregFns", "field", "$observe", "expr", - "uiSrefActiveDirective", "$interpolate", "$attrs", - "stateParams", + "activeEqClass", + "deregisterStatesChangedListener", + "deregisterOnStartListener", + "deregisterStateChangeSuccessListener", + "uiSrefActiveEq", + "setStatesFromDefinitionObject", + "statesDefinition", "activeClass", + "addStateForClass", + "addState", + "stateParams", "stateInfo", "splitClasses", "getClasses", "stateList", "allClasses", - "activeEqClass", "fuzzyClasses", "exactClasses", "addClasses", @@ -1641,33 +1619,35 @@ "className", "addClass", "removeClass", - "uiSrefActiveEq", - "addState", "newState", + "handleStatesChanged", "updateAfterTransition", "directive", "$IsStateFilter", "$IncludedByStateFilter", "$animate", "$uiViewScroll", - "enter", - "leave", - "config1", - "config2", "rootData", "terminal", "transclude", "tAttrs", "$transclude", "previousEl", - "remove", - "currentScope", - "activeUIView", - "$destroy", "currentEl", - "_viewData_1", + "currentScope", + "unregister", + "onloadExp", + "autoScrollExp", "renderer", - "$$animLeave", + "enter", + "leave", + "activeUIView", + "config1", + "config2", + "traceUIViewConfigUpdated", + "updateView", + "fromParentTagConfig", + "fromParentTag", "newScope", "$new", "animEnter", @@ -1676,22 +1656,34 @@ "$uiViewAnim", "$animEnter", "$animLeave", + "$$animLeave", "$emit", - "autoScrollExp", + "remove", + "$destroy", + "_viewData_1", "cleanupLastView", - "onloadExp", - "unregister", - "getRenderer", - "configsEqual", - "traceUIViewConfigUpdated", - "updateView", - "fromParentTagConfig", - "fromParentTag", "registerUIView", "$ViewDirectiveFill", + "hasComponentImpl", + "_uiCanExitId", + "$onInit", + "viewState", + "hookOptions", + "uiOnParamsChanged", + "viewCreationTrans_1", + "fromParams", + "toSchema", + "fromSchema", + "changedToParams", + "changedKeys_1", + "newValues", + "uiCanExit", + "id_1", + "prevTruthyAnswer_1", + "ids", "useAnchorScroll", "$anchorScroll", "scrollIntoView" ], - "mappings": "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" + "mappings": "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" } \ No newline at end of file