{ "version": 3, "file": "sky.js", "sources": [ "js/sky/src/actionbar/actionbar.js", "js/sky/src/autofocus/autofocus.js", "js/sky/src/autonumeric/autonumeric.js", "js/sky/src/check/check.js", "js/sky/src/checklist/checklist.js", "js/sky/src/checklist/checklistcolumn.js", "js/sky/src/checklist/checklistcolumns.js", "js/sky/src/checklist/checklistmodel.js", "js/sky/src/checklist/checklistutility.js", "js/sky/src/contextmenu/contextmenu.js", "js/sky/src/data/data.js", "js/sky/src/datepicker/datepicker.js", "js/sky/src/daterangepicker/daterangepicker.js", "js/sky/src/fileattachments/fileattachments.js", "js/sky/src/fileattachments/filedrop.js", "js/sky/src/fileattachments/fileitem.js", "js/sky/src/fileattachments/filesize.js", "js/sky/src/format/format.js", "js/sky/src/grids/columnpicker.js", "js/sky/src/grids/gridactionbar.js", "js/sky/src/grids/gridfilters.js", "js/sky/src/grids/grids.js", "js/sky/src/grids/gridtoolbar.js", "js/sky/src/help/help.js", "js/sky/src/helpbutton/helpbutton.js", "js/sky/src/highlight/highlight.js", "js/sky/src/mediabreakpoints/mediabreakpoints.js", "js/sky/src/modal/modal.js", "js/sky/src/moment/moment.js", "js/sky/src/navbar/navbar.js", "js/sky/src/omnibar/omnibar.js", "js/sky/src/page/page.js", "js/sky/src/pagination/pagination.js", "js/sky/src/palette/config.js", "js/sky/src/palette/palette.js", "js/sky/src/popover/popover.js", "js/sky/src/resources/resources.js", "js/sky/src/scrollintoview/scrollintoview.js", "js/sky/src/searchfield/searchfield.js", "js/sky/src/tabscroll/tabscroll.js", "js/sky/src/tabset/tabset.js", "js/sky/src/tabsref/tabsref.js", "js/sky/src/templating/templating.js", "js/sky/src/textexpand/textexpand.js", "js/sky/src/tiles/tiles.js", "js/sky/src/toast/toast.js", "js/sky/src/tooltip/tooltip.js", "js/sky/src/utilities/utilities.js", "js/sky/src/validation/validation.js", "js/sky/src/viewkeeper/viewkeeper.js", "js/sky/src/wait/wait.js", "js/sky/src/window/window.js", "js/sky/src/wizard/wizard.js", "js/sky/src/module.js", "dist/js/locales/sky-locale-en-US.js", "js/sky/templates/templates.js.tmp" ], "names": [], "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACr7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,K;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A", "sourceRoot": "../..", "sourcesContent": [ "/*global angular */\n\n/** @module Action Bar\n@icon bolt\n@summary The action bar provides a Sky UX-themed container for buttons that can collapse when the screen is in extra-small mode.\n@description The action bar creates a Sky UX-themed container for buttons. It includes the option to collapse groups of buttons into dropdowns when the screen is in extra-small mode.\n### Action Bar Settings ###\n - `bb-action-bar` Wraps the content in the action bar.\n - `bb-action-bar-item` Wraps the content in an action button. Any `ng-click` applied to this directive is applied to the action button.\n - `bb-action-bar-item-group` Wraps `bb-action-bar-item` directives to collapse the buttons into a dropdown in extra-small mode. You can also pass an optional `bb-action-bar-item-group-title` to edit the default **Actions** label for the dropdown.\n\nIf it is necessary to apply action bar stylying to more complicated scenarios (e.g. hiding and showing buttons at different breakpoints other than xs, collapsing dropdowns into submenus), then you can place any content in a `div` that has the `bb-action-bar` class. Some Bootstrap convenience classes for showing/hiding arbitrary content are the `hidden-xs`, `hidden-sm`, `hidden-md`, and `hidden-lg` classes. You can get more information on these in the [Bootstrap](http://getbootstrap.com/css/#responsive-utilities-classes) documentation.\n*/\n\n(function () {\n 'use strict';\n\n function bbActionBar() {\n return {\n transclude: true,\n restrict: 'E',\n templateUrl: 'sky/templates/actionbar/actionbar.html'\n };\n }\n\n function bbActionBarItemGroup(bbResources, bbMediaBreakpoints) {\n return {\n replace: true,\n transclude: true,\n controller: function () {\n\n },\n restrict: 'E',\n scope: {\n title: '=?bbActionBarItemGroupTitle'\n },\n link: function ($scope, el) {\n if ($scope.title === null || angular.isUndefined($scope.title)) {\n $scope.title = bbResources.action_bar_actions;\n }\n\n function mediaBreakpointHandler(breakpoints) {\n if (breakpoints.xs) {\n el.find('.bb-action-bar-buttons > ng-transclude').appendTo(el.find('.bb-action-bar-dropdown > .dropdown > ul'));\n } else {\n el.find('.bb-action-bar-dropdown .dropdown > ul > ng-transclude').appendTo(el.find('.bb-action-bar-buttons'));\n }\n }\n\n bbMediaBreakpoints.register(mediaBreakpointHandler);\n\n $scope.$on('$destroy', function () {\n bbMediaBreakpoints.unregister(mediaBreakpointHandler);\n });\n\n },\n templateUrl: 'sky/templates/actionbar/actionbaritemgroup.html'\n };\n }\n\n bbActionBarItemGroup.$inject = ['bbResources', 'bbMediaBreakpoints'];\n\n function bbActionBarItem(bbMediaBreakpoints) {\n return {\n replace: true,\n require: '?^bbActionBarItemGroup',\n transclude: true,\n restrict: 'E',\n link: function ($scope, el, attrs, groupCtrl) {\n\n function mediaBreakpointHandler(breakpoints) {\n if (breakpoints.xs) {\n if (!el.parent().is('li')) {\n el.wrap('
');\n }\n\n } else {\n if (el.parent().is('li')) {\n el.unwrap();\n }\n }\n }\n\n if (groupCtrl !== null) {\n bbMediaBreakpoints.register(mediaBreakpointHandler);\n\n $scope.$on('$destroy', function () {\n bbMediaBreakpoints.unregister(mediaBreakpointHandler);\n //get rid of wrapper on destroy\n if (el.parent().is('li')) {\n el.unwrap();\n }\n });\n }\n },\n templateUrl: 'sky/templates/actionbar/actionbaritem.html'\n };\n }\n\n bbActionBarItem.$inject = ['bbMediaBreakpoints'];\n\n angular.module('sky.actionbar', ['sky.resources', 'sky.mediabreakpoints'])\n .directive('bbActionBar', bbActionBar)\n .directive('bbActionBarItemGroup', bbActionBarItemGroup)\n .directive('bbActionBarItem', bbActionBarItem);\n}());\n", "/*jshint browser: true */\n\n/*global angular */\n\n/** @module Autofocus\n@icon camera\n@summary The autofocus component specifies the input item on a form that should get focus when the form loads.\n @description The `bb-autofocus` directive specifies the item on a form that should get focus when the form renders. You can use this directive when items such as Angular dynamically loaded templates do not play nicely with the HTML autofocus property.\nThe **Open Modal** button below demonstrates a modal form where the `bb-autofocus` directive places the focus on an input control on the form.\n */\n\n(function () {\n 'use strict';\n\n angular.module('sky.autofocus', [])\n .directive('bbAutofocus', ['$timeout', function ($timeout) {\n return {\n restrict: 'A',\n link: function ($scope, $element) {\n /*jslint unparam: true */\n $timeout(function () {\n $element.focus();\n }, 500);\n }\n };\n }]);\n}());\n", "/*jslint browser: true, plusplus: true */\n/*global angular, jQuery */\n\n/** @module Autonumeric\n@icon calculator\n@summary The autonumeric component wraps up the autoNumeric jQuery plugin to format any type of number, including currency.\n @description The `bb-autonumeric` directive wraps up the autoNumeric jQuery plugin to format any type of number, including currency. You must use this directive in conjunction with the `ngModel` directive where the property bound to `ngModel` is the raw numeric value on your model.\n\n ### Dependencies ###\n\n - **[autoNumeric](http://www.decorplanit.com/plugin/) (1.9.27 or higher)** Used to format money values\n\n---\n\n### Autonumeric Settings ###\n\n - `bb-autonumeric` This can optionally be assigned the name of a property from the `bbAutonumericConfig` object. If none is specified, it defaults to `number`.\n - `bb-autonumeric-settings` This can be assigned a value that represents a settings object that can be passed to autoNumeric. These options will override any default options specified in the `bb-autonumeric` attribute. A complete list of options is available [here](http://www.decorplanit.com/plugin/).\n\n### Autonumeric Filter ###\n\nIn addition to the directive, there is also a filter that can be used to format numbers. The filter has the added feature of optionally abbreviating a number according to Sky patterns. For instance,\nnumbers over 10,000 will be displayed as 10k, over 1,000,000 as 1m, and 1,000,000,000 as 1b. The filter takes three arguments:\n\n - `input` The value to format.\n - `configType` The name of the configuration (`number` or `money`) to apply to the value.\n - `abbreviate` A Boolean value indicating whether to abbreviate large numbers.\n */\n(function ($) {\n 'use strict';\n\n function getBaseSettings(bbAutoNumericConfig, configType) {\n var baseSettings,\n configSettings;\n\n baseSettings = angular.extend(\n {},\n $.fn.autoNumeric.defaults,\n bbAutoNumericConfig.number\n );\n\n if (configType) {\n configSettings = bbAutoNumericConfig[configType];\n }\n\n if (configSettings) {\n angular.extend(baseSettings, configSettings);\n }\n\n return baseSettings;\n }\n\n angular.module('sky.autonumeric', ['sky.resources', 'sky.window'])\n .constant('bbAutonumericConfig', {\n number: {\n aSep: ',',\n dGroup: 3,\n aDec: '.',\n pSign: 'p',\n mDec: 2\n },\n money: {\n aSign: '$'\n }\n })\n .directive('bbAutonumeric', ['$timeout', 'bbAutonumericConfig', 'bbWindow', function ($timeout, bbAutoNumericConfig, bbWindow) {\n return {\n require: 'ngModel',\n restrict: 'A',\n link: function ($scope, el, attrs, ngModel) {\n var customSettings = {},\n isIosUserAgent = bbWindow.isIosUserAgent();\n\n function applySettings() {\n el.autoNumeric('update', angular.extend({}, getBaseSettings(bbAutoNumericConfig, attrs.bbAutonumeric), customSettings));\n }\n\n function applyCssSettings(el) {\n if (attrs.bbAutonumeric) {\n el.addClass('bb-autonumeric-' + attrs.bbAutonumeric);\n }\n }\n\n function autonumericChange() {\n return $scope.$apply(function () {\n var value = parseFloat(el.autoNumeric('get'));\n\n if (isNaN(value)) {\n value = null;\n }\n\n return ngModel.$setViewValue(value);\n });\n }\n\n if (attrs.bbAutonumericSettings) {\n $scope.$watch(attrs.bbAutonumericSettings, function (newValue) {\n customSettings = newValue || {};\n applySettings();\n }, true);\n }\n\n el.autoNumeric(getBaseSettings(bbAutoNumericConfig, attrs.bbAutonumeric));\n applyCssSettings(el);\n\n // If a valid number, update the autoNumeric value.\n // Also handles the model being updated, but being in correct (usually a paste).\n // In that case, updates the model to what the autoNumeric plugin's value.\n $scope.$watch(attrs.ngModel, function (newValue) {\n var getValue;\n if (newValue !== undefined && newValue !== null && !isNaN(newValue)) {\n el.autoNumeric('set', newValue);\n getValue = el.autoNumeric('get');\n if (newValue.toString() !== getValue) {\n $timeout(autonumericChange);\n }\n } else if (newValue !== undefined && newValue !== null && isNaN(newValue)) {\n $timeout(autonumericChange);\n } else if (!isNaN(newValue)) {\n el.val(null);\n }\n });\n\n el.on('change', function () {\n autonumericChange();\n });\n\n el.on('keydown', function (event) {\n if (event.which === 13) {\n autonumericChange();\n }\n });\n\n // When focusing in textbox, select all. This is to workaround not having placeholder text for autonumeric.\n /*\n istanbul ignore next: the test for this code isn't passing on IE 10 on BrowserStack in automated mode.\n This isn't mission-critical so I'm just ignoring it for now.\n */\n el.on('focusin.bbAutonumeric', function () {\n $timeout(function () {\n // Check to ensure the field still has focus once the $timeout callback is executed.\n // https://github.com/blackbaud/skyux/issues/64\n if (el.is(':focus')) {\n if (!isIosUserAgent) {\n el.select();\n } else {\n //use setSelectionRange instead of select because select in a timeout does not work with iOS\n el[0].setSelectionRange(0, 9999);\n }\n }\n });\n });\n\n }\n };\n }])\n .filter('bbAutonumeric', ['bbAutonumericConfig', 'bbResources', function (bbAutonumericConfig, bbResources) {\n return function (input, configType, abbreviate) {\n var aSign,\n dividend,\n mDec,\n formatted,\n settings,\n suffix,\n tempEl;\n\n if (input === null || angular.isUndefined(input)) {\n return '';\n }\n\n if (isNaN(input)) {\n return input;\n }\n\n\n tempEl = $('');\n\n settings = getBaseSettings(bbAutonumericConfig, configType);\n\n if (abbreviate) {\n if (settings.pSign === 's') {\n // The suffix needs to go between the number and the currency symbol, so the currency\n // symbol has to be left off and appended after the number is formatted.\n aSign = settings.aSign;\n settings.aSign = '';\n }\n\n input = Math.round(input);\n\n if (input >= 1000000000) {\n dividend = 100000000;\n suffix = bbResources.autonumeric_abbr_billions;\n } else if (input >= 1000000) {\n dividend = 100000;\n suffix = bbResources.autonumeric_abbr_millions;\n } else if (input >= 10000) {\n dividend = 100;\n suffix = bbResources.autonumeric_abbr_thousands;\n }\n\n if (suffix) {\n input = Math.floor(input / dividend) / 10;\n mDec = Math.floor(input) === input ? 0 : 1;\n } else {\n mDec = 0;\n }\n\n settings.mDec = mDec;\n }\n\n tempEl.autoNumeric(settings);\n tempEl.autoNumeric('set', input);\n\n formatted = tempEl.text();\n\n if (suffix) {\n formatted += suffix;\n }\n\n if (abbreviate && settings.pSign === 's' && aSign) {\n formatted += aSign;\n }\n\n return formatted;\n };\n }]);\n}(jQuery));\n", "/*jshint browser: true */\n\n/*global angular */\n\n/** @module Check\n@icon check-square\n@summary The check applies a commonly styled selector to a checkbox or radio button.\n @description The check directive allows you to change an input element of type checkbox or radio into a commonly-styled selector. The value that is selected is driven through the `ng-model` attribute specified on the input element and for radio input types the value to set on the `ng-model` can be specified by the value attribute.\n\n---\n\n */\n\n(function () {\n 'use strict';\n angular.module('sky.check', [])\n .directive('bbCheck', ['$templateCache', function ($templateCache) {\n function createEl(name) {\n return angular.element($templateCache.get('sky/templates/check/' + name + '.html'));\n }\n\n return {\n link: function (scope, el, attr) {\n var labelEl = el.parent('label'),\n styledEl,\n typeClass;\n\n if (labelEl.length < 1) {\n el.wrap(createEl('wrapper'));\n } else {\n labelEl.addClass('bb-check-wrapper');\n }\n if (attr.type === 'radio') {\n typeClass = 'bb-check-radio';\n } else {\n typeClass = 'bb-check-checkbox';\n }\n\n styledEl = createEl('styled');\n styledEl.addClass(typeClass);\n\n el.after(styledEl);\n }\n };\n }]);\n}());\n", "/*jslint browser: true */\n/*global angular */\n\n/** @module Checklist\n@icon list-ul\n@summary The checklist builds a filterable checkbox list that can display multiple columns of data.\n @description The checklist directive allows you to easily build a filterable checkbox list. Multiple columns of data can be provided for the checkbox rows using the `bb-checklist-column` element. Items can also be displayed in a list view with each row displaying a title and description. The list view is preferable when building a responsive application.\n\n### Checklist Settings ###\n\n - `bb-checklist`\n - `bb-checklist-items` An array of objects representing the rows that will be shown in the list.\n - `bb-checklist-selected-items` An array representing the selected items in the list.\n - `bb-checklist-include-search` A Boolean to optionally include a search textbox for filtering the items. The search text will be highlighted in the columns of the list. A callback function can be used to filter the items based on the search text.\n - `bb-checklist-search-placeholder` Placeholder text for the search textbox.\n - `bb-checklist-filter-callback` A function to be called when the search text is modified. Used by the consumer to update the `bb-checklist-items` array as desired based on the search text. The function will be passed a single object as a parameter containing `searchText` and `category` properties. Useful when loading items remotely or using custom logic other than simple case-insensitive string matching to filter items.\n - `bb-checklist-filter-local` When specified, items are filtered by the checklist directive by examining the properties of each item to match the specified category or search text.\n - `bb-checklist-search-debounce` Number of milliseconds to debounce changes to the search text. Useful if making a web request in the `bb-checklist-filter-callback` to avoid making the request after every character typed.\n - `bb-checklist-no-items-message` *(Default: `'No items found'`)* Message to display when no items are in the list.\n - `bb-checklist-mode` *(Optional. Default: 'grid')* one of two possible values:\n - `list` Displays items in a list with a title and description. Items are expected to have `title`, `description` and `category` properties. This is the preferred method of displaying a checklist.\n - `grid` Displays items in a grid with any number of columns. Columns are specified using mulitple `bb-checklist-column` elements. For backwards compatibility reasons this is the default mode, but `list` is the preferred mode since it is mobile-responsive.\n - `bb-checklist-categories` An array of category names used to build category filter buttons at the top of the list.\n\n### Checklist Column Settings ###\n\n - `bb-checklist-column-caption` Caption text for the column header.\n - `bb-checklist-column-field` The name of the property on the checklist items that contains the text to display in this column.\n - `bb-checklist-column-class` A CSS class to apply to this column's header and cells.\n - `bb-checklist-column-width` Set the width to be used by the column.\n */\n\n(function () {\n 'use strict';\n\n var PROP_CATEGORY = 'category';\n\n function bbChecklist(bbChecklistUtility) {\n return {\n replace: true,\n restrict: 'E',\n transclude: true,\n templateUrl: 'sky/templates/checklist/checklist.html',\n scope: {\n bbChecklistItems: '=',\n bbChecklistSelectedItems: '=',\n bbChecklistFilterCallback: '=',\n bbChecklistIncludeSearch: '=',\n bbChecklistSearchDebounce: '=',\n bbChecklistSearchPlaceholder: '@',\n bbChecklistNoItemsMessage: '@',\n bbChecklistAutomationField: '=',\n bbChecklistCategories: '=',\n bbChecklistMode: '@'\n },\n controller: ['$scope', function ($scope) {\n var locals = $scope.locals = {};\n\n this.setColumns = function (columns) {\n locals.columns = columns;\n };\n }],\n link: function ($scope, el, attrs) {\n var filterLocal = angular.isDefined(attrs.bbChecklistFilterLocal),\n locals = $scope.locals;\n\n function itemMatchesCategory(item, category) {\n return !category || item.category === category;\n }\n\n function itemMatchesFilter(item, category, searchTextUpper) {\n var p,\n val;\n\n if (itemMatchesCategory(item, category)) {\n if (!searchTextUpper) {\n return true;\n }\n\n for (p in item) {\n if (item.hasOwnProperty(p) && p !== PROP_CATEGORY) {\n val = item[p];\n\n if (angular.isString(val) && val.toUpperCase().indexOf(searchTextUpper) >= 0) {\n return true;\n }\n }\n }\n }\n\n return false;\n }\n\n function invokeFilterLocal() {\n var filteredItems,\n i,\n item,\n items = $scope.bbChecklistItems,\n n,\n searchTextUpper = (locals.searchText || '').toUpperCase(),\n selectedCategory = locals.selectedCategory;\n\n if (!searchTextUpper && !selectedCategory) {\n filteredItems = items.slice(0);\n } else {\n filteredItems = [];\n\n for (i = 0, n = items.length; i < n; i++) {\n item = items[i];\n\n if (itemMatchesFilter(item, selectedCategory, searchTextUpper)) {\n filteredItems.push(item);\n }\n }\n }\n\n locals.filteredItems = filteredItems;\n }\n\n function invokeFilter() {\n if (filterLocal) {\n invokeFilterLocal();\n } else if ($scope.bbChecklistFilterCallback) {\n $scope.bbChecklistFilterCallback({\n searchText: locals.searchText,\n category: locals.selectedCategory\n });\n }\n }\n\n $scope.bbChecklistSelectedItems = $scope.bbChecklistSelectedItems || [];\n\n locals.selectAll = function () {\n var i,\n item,\n items = locals.filteredItems,\n selected = $scope.bbChecklistSelectedItems;\n\n for (i = 0; i < items.length; i += 1) {\n item = items[i];\n if (!bbChecklistUtility.contains(selected, item)) {\n bbChecklistUtility.add(selected, item);\n }\n }\n };\n\n locals.clear = function () {\n var i,\n item,\n items = locals.filteredItems,\n selected = $scope.bbChecklistSelectedItems;\n\n for (i = 0; i < items.length; i += 1) {\n item = items[i];\n bbChecklistUtility.remove(selected, item);\n }\n };\n\n locals.rowClicked = function (item) {\n var selected = $scope.bbChecklistSelectedItems;\n\n if (!bbChecklistUtility.contains(selected, item)) {\n bbChecklistUtility.add(selected, item);\n } else {\n bbChecklistUtility.remove(selected, item);\n }\n };\n\n locals.filterByCategory = function (selectedCategory) {\n locals.selectedCategory = selectedCategory;\n invokeFilter();\n };\n\n $scope.$watch('bbChecklistItems', function () {\n locals.filteredItems = $scope.bbChecklistItems;\n locals.highlightRefresh = new Date().getTime();\n });\n\n $scope.$watch('locals.searchText', function (newValue, oldValue) {\n if (newValue !== oldValue) {\n invokeFilter();\n }\n });\n }\n };\n }\n\n bbChecklist.$inject = ['bbChecklistUtility'];\n\n angular.module('sky.checklist', ['sky.check', 'sky.checklist.column', 'sky.checklist.columns', 'sky.checklist.model', 'sky.checklist.utility', 'sky.resources'])\n .directive('bbChecklist', bbChecklist);\n}());\n", "/*global angular */\n\n(function () {\n 'use strict';\n\n function bbChecklistColumn() {\n return {\n require: '^bbChecklistColumns',\n restrict: 'E',\n scope: {\n bbChecklistColumnCaption: \"=\",\n bbChecklistColumnField: \"=\",\n bbChecklistColumnClass: \"=\",\n bbChecklistColumnWidth: \"=\",\n bbChecklistColumnAutomationId: \"=\"\n },\n link: function ($scope, element, attrs, bbChecklistColumns) {\n /*jslint unparam: true */\n var column = {\n caption: $scope.bbChecklistColumnCaption,\n field: $scope.bbChecklistColumnField,\n 'class': $scope.bbChecklistColumnClass,\n width: $scope.bbChecklistColumnWidth,\n automationId: $scope.bbChecklistColumnAutomationId\n };\n\n bbChecklistColumns.addColumn(column);\n }\n };\n }\n \n angular.module('sky.checklist.column', ['sky.checklist.columns'])\n .directive('bbChecklistColumn', bbChecklistColumn);\n}());", "/*global angular */\n\n(function () {\n 'use strict';\n \n function bbChecklistColumns() {\n return {\n require: '^bbChecklist',\n restrict: 'E',\n scope: {\n },\n controller: ['$scope', function ($scope) {\n $scope.columns = [];\n\n this.addColumn = function (column) {\n $scope.columns.push(column);\n };\n }],\n link: function ($scope, element, attrs, bbChecklist) {\n /*jslint unparam: true */\n bbChecklist.setColumns($scope.columns);\n }\n };\n }\n \n angular.module('sky.checklist.columns', [])\n .directive('bbChecklistColumns', bbChecklistColumns);\n}());", "/*global angular */\n\n(function () {\n 'use strict';\n \n function checklistModel($compile, $parse, bbChecklistUtility) {\n // http://stackoverflow.com/a/19228302/1458162\n function postLinkFn(scope, elem, attrs) {\n var getter,\n setter,\n value;\n\n // compile with `ng-model` pointing to `checked`\n $compile(elem)(scope);\n\n // getter / setter for original model\n getter = $parse(attrs.checklistModel);\n setter = getter.assign;\n\n // value added to list\n value = $parse(attrs.checklistValue)(scope.$parent);\n\n // watch UI checked change\n scope.$watch('checked', function (newValue, oldValue) {\n var current;\n\n if (newValue === oldValue) {\n return;\n }\n\n current = getter(scope.$parent);\n\n if (newValue === true) {\n setter(scope.$parent, bbChecklistUtility.add(current, value));\n } else {\n setter(scope.$parent, bbChecklistUtility.remove(current, value));\n }\n });\n\n // watch original model change\n scope.$parent.$watch(attrs.checklistModel, function (newArr) {\n scope.checked = bbChecklistUtility.contains(newArr, value);\n }, true);\n }\n\n return {\n restrict: 'A',\n priority: 1000,\n terminal: true,\n scope: true,\n compile: function (tElement, tAttrs) {\n if (tElement[0].tagName !== 'INPUT' || !tElement.attr('type', 'checkbox')) {\n throw 'checklist-model should be applied to `input[type=\"checkbox\"]`.';\n }\n\n if (!tAttrs.checklistValue) {\n throw 'You should provide `checklist-value`.';\n }\n\n // exclude recursion\n tElement.removeAttr('checklist-model');\n\n // local scope var storing individual checkbox model\n tElement.attr('ng-model', 'checked');\n\n return postLinkFn;\n }\n };\n }\n \n checklistModel.$inject = ['$compile', '$parse', 'bbChecklistUtility'];\n \n angular.module('sky.checklist.model', ['sky.checklist.utility'])\n .directive('checklistModel', checklistModel);\n}());", "/*global angular */\n\n(function () {\n 'use strict';\n \n angular.module('sky.checklist.utility', [])\n .factory('bbChecklistUtility', function () {\n return {\n \n contains: function (arr, item) {\n var i;\n\n if (angular.isArray(arr)) {\n for (i = 0; i < arr.length; i += 1) {\n if (angular.equals(arr[i], item)) {\n return true;\n }\n }\n }\n return false;\n },\n\n // add\n add: function (arr, item) {\n var i;\n\n arr = angular.isArray(arr) ? arr : [];\n for (i = 0; i < arr.length; i += 1) {\n if (angular.equals(arr[i], item)) {\n return arr;\n }\n }\n arr.push(item);\n return arr;\n },\n\n // remove\n remove: function (arr, item) {\n var i;\n\n if (angular.isArray(arr)) {\n for (i = 0; i < arr.length; i += 1) {\n if (angular.equals(arr[i], item)) {\n arr.splice(i, 1);\n break;\n }\n }\n }\n return arr;\n }\n\n };\n });\n}());", "/* global angular */\n\n/** @module Context Menu\n\n@icon ellipsis-h\n@summary The context menu creates simple or complicated dropdown menus that you can incorporate into buttons.\n@description The context menu directives allow you to easily create Sky-styled [dropdown](https://angular-ui.github.io/bootstrap/#/dropdown) menus. There are 3 directives in the context menu module:\n - `bb-context-menu` creates a dropdown with the context menu button.\n - `bb-context-menu-item` creates dropdown menu items within a dropdown that execute `bb-context-menu-action` on click.\n - `bb-context-menu-button` creates a button with the Sky context menu styles.\n - `bb-submenu` creates an accordion style submenu in a dropdown, you can place it in a dropdown list element.\n - `bb-submenu-heading` Can be either an attribute on `bb-submenu` that can be set equal to static header text, or can be used as a directive inside of `bb-submenu` to place arbitrary content in an accordion heading.\n*/\n\n(function () {\n 'use strict';\n\n function getTemplateUrl(name) {\n return 'sky/templates/contextmenu/' + name + '.html';\n }\n\n function bbContextMenu() {\n return {\n replace: true,\n restrict: 'E',\n transclude: true,\n templateUrl: getTemplateUrl('contextmenu'),\n link: function ($scope) {\n $scope.contextButtonStopPropagation = function ($event) {\n $event.stopPropagation();\n };\n }\n };\n }\n\n function bbContextMenuItem() {\n return {\n restrict: 'E',\n transclude: true,\n replace: true,\n scope: {\n clickItem: '&bbContextMenuAction'\n },\n templateUrl: getTemplateUrl('menuitem')\n };\n }\n\n function bbContextMenuButton() {\n return {\n restrict: 'E',\n replace: true,\n templateUrl: getTemplateUrl('menubutton')\n };\n }\n\n function toggleAccordion($event, $scope) {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.accordionLocals.accordionOpen = !$scope.accordionLocals.accordionOpen;\n }\n\n function BBSubmenuController($scope) {\n var self = this;\n\n self.toggleAccordion = function ($event) {\n toggleAccordion($event, $scope);\n };\n }\n\n BBSubmenuController.$inject = ['$scope'];\n\n function bbSubmenu() {\n return {\n controller: 'bbSubmenuController',\n restrict: 'E',\n scope: {\n heading: '=?bbSubmenuHeading'\n },\n link: function ($scope, el, attrs) {\n $scope.accordionLocals = {\n accordionOpen: false,\n staticHeader: false\n };\n\n if (angular.isDefined(attrs.bbSubmenuHeading)) {\n $scope.accordionLocals.staticHeader = true;\n }\n\n $scope.toggleAccordion = function ($event) {\n toggleAccordion($event, $scope);\n };\n },\n transclude: true,\n templateUrl: getTemplateUrl('submenu')\n };\n }\n\n function bbSubmenuHeading() {\n return {\n restrict: 'E',\n require: '^bbSubmenu',\n scope: true,\n link: function ($scope, el, attrs, submenuCtrl) {\n $scope.toggleAccordion = function ($event) {\n submenuCtrl.toggleAccordion($event);\n };\n },\n transclude: true,\n templateUrl: getTemplateUrl('submenuheading')\n };\n }\n\n angular.module('sky.contextmenu', ['ui.bootstrap.dropdown', 'ui.bootstrap.accordion'])\n .controller('bbSubmenuController', BBSubmenuController)\n .directive('bbContextMenu', bbContextMenu)\n .directive('bbContextMenuItem', bbContextMenuItem)\n .directive('bbContextMenuButton', bbContextMenuButton)\n .directive('bbSubmenu', bbSubmenu)\n .directive('bbSubmenuHeading', bbSubmenuHeading);\n}());\n", "/*global angular, jQuery, require */\n\n/** @module Data\n\n@summary The data service provides access to convenience functions that allow you to manipulate data.\n@icon database\n@description The data service provides methods for loading data from and saving data to web service endpoints.\n\n### bbData Functions ###\n\n - `load(loadObj)` Takes an object with `data`, `resources`, and `text` properties and returns a promise that contains the result of an HTTP GET request. Note that in addition to the `data`, `resources` and `text` properties on the result object there is also an `httpResults` property containing the results from the underlying calls to [Angular's `$http` service](https://docs.angularjs.org/api/ng/service/$http). These objects include metadata about the response such as the HTTP status code.\n - `data` Either a URL or an object with multiple URLs to be requested. The promise results will be contained in `result.data`. e.g. `bbData.load({data: '/foo/data'})` or `bbData.load({data: {a: '/foo/data1', b: '/foo/data2'}})`. The requests to the specified URLs will be made with credentials.\n - `resources` Either a URL or an object with multiple URLs to be requested. The promise results will be contained in `result.resources`. The requests to the specified URLs will be made without credentials.\n - `text` Either a URL or an object with multiple URLs to be requested. The promise results will be contained in `result.text`. The requests to the specified URLs will be made without credentials and the result will be returned as a string rather than an object.\n - `loadManager` An object with a `name` and `scope` property which creates a wait while it and its child load managers retreive data.\n - `query(url, queryParams)` Creates a URL with a query string based on an the queryParam's properties. e.g. `bbData.query('/foo/search', {x: 'y', z: 123});` returns `/foo/search?x=y&z=123`.\n - `post(url, data)` For use within `bbData.load`, creates a post request from a URL and data object. e.g. `bbData.load({data: bbData.post('/foo/post', postData)});`.\n - `save(saveObj)` A function that issues an HTTP post for the purpose of storing data on the remote server. Takes an argument with the following properties:\n - `url` The URL to which to send the request.\n - `data` The object to be POSTed to the URL.\n - `type` (*default: `POST`) The HTTP verb to use along with the request.\n - `cancel(promise)` Takes a promise returned by `bbData.load` or `bbData.save` and cancels the underlying HTTP request. The promise will be rejected after cancelling.\n*/\n\n(function ($) {\n 'use strict';\n\n var DEFAULT_PROP = '__DEFAULT__',\n REQUEST_TYPE_DATA = 0,\n REQUEST_TYPE_RESOURCES = 1,\n REQUEST_TYPE_TEXT = 2;\n\n function fillUrls(option, props, urls) {\n var item,\n p,\n url;\n\n /*istanbul ignore else: sanity check */\n if (option) {\n if (angular.isString(option) || option.BB_DATA_POST) {\n url = option;\n\n option = {};\n option[DEFAULT_PROP] = url;\n }\n\n for (p in option) {\n /*istanbul ignore else */\n if (option.hasOwnProperty(p)) {\n item = option[p];\n url = item;\n\n props.push(p);\n urls.push(url);\n }\n }\n }\n }\n\n function loadManager(options) {\n // A service endpoint for tracking loading items.\n\n var item,\n loadingItems = [],\n nonblockingForAdditionalItems = false,\n result,\n scope,\n waitingForFirstItem = false;\n\n function cancelWaiting() {\n options.waitForFirstItem = false;\n options.nonblockWaitForAdditionalItems = false;\n\n if (nonblockingForAdditionalItems) {\n nonblockingForAdditionalItems = false;\n scope.$emit(\"bbEndWait\", { nonblocking: true });\n }\n\n if (waitingForFirstItem) {\n waitingForFirstItem = false;\n scope.$emit(\"bbEndWait\");\n }\n }\n\n function startNonblockingForAdditionalItems() {\n nonblockingForAdditionalItems = true;\n scope.$emit(\"bbBeginWait\", { nonblocking: true });\n }\n\n function markCompleted(item) {\n var i = loadingItems.indexOf(item);\n\n if (i !== -1) {\n loadingItems.splice(i, 1);\n if (loadingItems.length === 0) {\n result.isLoading = false;\n\n if (nonblockingForAdditionalItems) {\n nonblockingForAdditionalItems = false;\n scope.$emit(\"bbEndWait\", { nonblocking: true });\n }\n }\n }\n\n if (!result.isFirstItemLoaded) {\n result.isFirstItemLoaded = true;\n if (waitingForFirstItem) {\n waitingForFirstItem = false;\n scope.$emit(\"bbEndWait\");\n }\n }\n\n if (result.isLoading && options.nonblockWaitForAdditionalItems && !nonblockingForAdditionalItems) {\n startNonblockingForAdditionalItems();\n }\n }\n\n function registerItem(item) {\n if (!result.isLoading) {\n if (result.isFirstItemLoaded && options.nonblockWaitForAdditionalItems) {\n startNonblockingForAdditionalItems();\n }\n }\n loadingItems.push(item);\n result.isLoading = true;\n }\n\n // Initialize values\n scope = options.scope;\n\n if (options.load) {\n item = {\n name: options.name,\n load: options.load\n };\n }\n\n result = {\n isFirstItemLoaded: false,\n isLoading: false,\n loadingItems: loadingItems,\n cancelWaiting: cancelWaiting\n };\n\n if (options.waitForFirstItem) {\n waitingForFirstItem = true;\n scope.$emit(\"bbBeginWait\");\n }\n\n // Start loading any item that is handed directly to the loader.\n if (item) {\n // Add the current item to the list.\n registerItem(item);\n\n // Start loading the item.\n result.loaded = item.load().finally(function () {\n markCompleted(item);\n scope.$parent.$emit(\"bbData.loadManager.markCompleted\", item);\n });\n\n scope.$parent.$emit(\"bbData.loadManager.registerItem\", item);\n }\n\n if (options.isAggregate) {\n // Listen to items being registered by child loadManagers.\n scope.$on(\"bbData.loadManager.registerItem\", function (e, item) {\n e.stopPropagation();\n registerItem(item);\n });\n\n // Listen to items being marked completed by child loadManagers.\n scope.$on(\"bbData.loadManager.markCompleted\", function (e, item) {\n e.stopPropagation();\n markCompleted(item);\n });\n }\n\n return result;\n }\n\n function bbData($http, $q, $templateCache, bbDataConfig, $window) {\n function ajaxUrl(url, requestType) {\n var filter,\n parts;\n\n requestType = requestType || 0;\n\n if ($window.define && $window.define.amd && $window.require) {\n parts = url.split('?');\n\n // Grab the portion before the query string and get the fully-qualified URL.\n url = parts.shift();\n url = require.toUrl(url);\n\n // If there was anything after the first question mark, put it back.\n url += '?' + parts.join('');\n }\n\n switch (requestType) {\n case REQUEST_TYPE_DATA:\n filter = bbDataConfig.dataUrlFilter;\n break;\n case REQUEST_TYPE_RESOURCES:\n filter = bbDataConfig.resourceUrlFilter;\n break;\n case REQUEST_TYPE_TEXT:\n filter = bbDataConfig.textUrlFilter;\n break;\n }\n\n if (angular.isFunction(filter)) {\n url = filter(url);\n }\n\n return url;\n }\n\n function createAjaxPromise(item, isPost, requestType, timeoutPromise) {\n var data,\n httpOptions,\n isGet,\n textContent,\n type,\n url;\n\n requestType = requestType || 0;\n\n if (item.BB_DATA_POST || isPost) {\n data = item.data;\n type = item.type || 'post';\n url = item.url;\n } else {\n type = 'get';\n url = item;\n isGet = true;\n }\n\n if (isGet && requestType === REQUEST_TYPE_TEXT) {\n // Check the Angular template cache using the raw URL first in case the text content is compiled into\n // the module bundle.\n textContent = $templateCache.get(url);\n\n if (textContent) {\n return $q(function (resolve) {\n resolve({\n data: textContent\n });\n });\n }\n }\n\n url = ajaxUrl(url, requestType);\n\n httpOptions = {\n method: type,\n url: url,\n cache: requestType !== 0,\n data: data ? JSON.stringify(data) : null,\n dataType: requestType !== 0 ? 'text' : 'json',\n withCredentials: requestType === 0,\n timeout: timeoutPromise\n };\n\n if (data instanceof $window.FormData) {\n // Angular sets the Content-Type to application/json by default, but when posting FormData\n // it should clear out the Content-Type and let the browser determine it.\n // https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs\n angular.extend(httpOptions, {\n transformRequest: angular.identity,\n headers: {\n 'Content-Type': undefined\n }\n });\n }\n\n return $http(httpOptions);\n }\n\n function addPromises(items, urls, requestType, timeoutPromise) {\n var i,\n n,\n url;\n\n if (urls) {\n for (i = 0, n = urls.length; i < n; i++) {\n url = urls[i];\n items.push(createAjaxPromise(url, null, requestType, timeoutPromise));\n }\n }\n }\n\n function nextId() {\n nextId.index = nextId.index || 0;\n nextId.index++;\n return nextId.index;\n }\n\n function trackHTTPTimeoutForPromise(fn) {\n var id = nextId(),\n promise,\n httpTimeout = $q.defer();\n\n trackHTTPTimeoutForPromise[id] = httpTimeout;\n\n promise = fn(httpTimeout.promise);\n promise._id = id;\n\n function clearPromiseId() {\n delete trackHTTPTimeoutForPromise[id];\n }\n\n promise.then(clearPromiseId, clearPromiseId);\n\n return promise;\n }\n\n function loadData(options) {\n return trackHTTPTimeoutForPromise(function (timeoutPromise) {\n return $q(function (resolve, reject) {\n var dataOption,\n dataProps,\n dataUrls,\n resourcesOption,\n resourcesProps,\n resourcesUrls,\n promises = [],\n textOption,\n textProps,\n textUrls;\n\n function success(args) {\n var argIndex = 0,\n result = {\n httpResults: {}\n };\n\n function addResult(name, props) {\n var resultData,\n httpResult,\n i,\n n,\n p,\n resultItem,\n resultItemHttpResults;\n\n if (props) {\n for (i = 0, n = props.length; i < n; i++) {\n p = props[i];\n httpResult = args[argIndex];\n resultData = httpResult.data;\n\n if (p === DEFAULT_PROP) {\n resultItem = resultData;\n resultItemHttpResults = httpResult;\n } else {\n resultItem = resultItem || {};\n resultItem[p] = resultData;\n\n resultItemHttpResults = resultItemHttpResults || {};\n resultItemHttpResults[p] = httpResult;\n }\n\n argIndex++;\n }\n }\n\n if (angular.isDefined(resultItem)) {\n result[name] = resultItem;\n }\n\n if (angular.isDefined(resultItemHttpResults)) {\n result.httpResults[name] = resultItemHttpResults;\n }\n }\n\n addResult('data', dataProps, true);\n addResult('resources', resourcesProps);\n addResult('text', textProps);\n\n resolve(result);\n }\n\n function failure() {\n /*jshint validthis: true */\n reject.apply(this, arguments);\n }\n\n dataOption = options.data;\n resourcesOption = options.resources;\n textOption = options.text;\n\n if (dataOption) {\n dataProps = [];\n dataUrls = [];\n fillUrls(dataOption, dataProps, dataUrls);\n }\n\n if (resourcesOption) {\n resourcesProps = [];\n resourcesUrls = [];\n fillUrls(resourcesOption, resourcesProps, resourcesUrls);\n }\n\n if (textOption) {\n textProps = [];\n textUrls = [];\n fillUrls(textOption, textProps, textUrls);\n }\n\n addPromises(promises, dataUrls, REQUEST_TYPE_DATA, timeoutPromise);\n addPromises(promises, resourcesUrls, REQUEST_TYPE_RESOURCES, timeoutPromise);\n addPromises(promises, textUrls, REQUEST_TYPE_TEXT, timeoutPromise);\n\n $q.all(promises)\n .then(success)\n .catch(failure);\n });\n });\n }\n\n return {\n cancel: function (promise) {\n if (promise && promise._id && trackHTTPTimeoutForPromise[promise._id]) {\n trackHTTPTimeoutForPromise[promise._id].resolve();\n }\n },\n load: function (options) {\n if (options.loadManager) {\n options.loadManager.load = function () {\n return loadData(options);\n };\n\n return loadManager(options.loadManager).loaded;\n }\n\n return loadData(options);\n },\n loadManager: loadManager,\n query: function (url, params) {\n return url + '?' + $.param(params);\n },\n post: function (url, data) {\n return {\n url: url,\n data: data,\n BB_DATA_POST: true\n };\n },\n save: function (options) {\n return trackHTTPTimeoutForPromise(function (timeoutPromise) {\n return createAjaxPromise(options, true, null, timeoutPromise);\n });\n }\n };\n }\n\n bbData.$inject = ['$http', '$q', '$templateCache', 'bbDataConfig', '$window'];\n\n angular.module('sky.data', [])\n .constant('bbDataConfig', {})\n .factory('bbData', bbData);\n}(jQuery));\n", "/*jshint browser: true */\n/*global angular, jQuery */\n\n/** @module Date Picker\n@icon calendar-o\n@summary The date picker wraps the ui.bootstrap.datepicker directive from Angular UI Bootstrap to create an input text box that includes a calendar for selecting dates.\n@description The `bb-datepicker` directive wraps the ui.bootstrap.datepicker directive from [Angular UI Bootstrap](https://angular-ui.github.io/bootstrap/). It creates an input text box with a calendar picker for selecting dates.\n\n## Date Picker Settings\n - `bb-custom-validation` an object containing the following:\n - `formatValue` A function that will be called when text is entered directly into the textbox. The only parameter to the function will be the raw value of the textbox. The function should return an object or a promise of an object with properties of `formattedValue` and optionally `formattingErrorMessage` if there was a problem when trying to format the input value.\n - `bb-date-format` The format string that the date should display as in the input text box. This will override the default set in the `bbDatepickerConfig` `currentCultureDateFormatString` property. The default format in sky is set as `MM/dd/yyyy`. The format string should be set up like the [angular](https://docs.angularjs.org/api/ng/filter/date) date filter format strings.\n - `bb-date-options` Options object for customizing the date picker. The options included are all of those valid for the angular ui bootstrap `datepicker-options` object. You can set application defaults for the `showWeeks` and `startingDay` properties of the angular ui bootstrap date picker in the `bbDatepickerConfig` constant defined in `sky.datepicker`. In sky the default for `showWeeks` is false and `startingDay` is 0 unless overridden in `bbDatepickerConfig`.\n - `bb-datepicker-name` This value gets bound to the `name` attribute of the date picker input for use in validation and form submission.\n - `close-on-date-selection` *(Default: true):* Whether to close calendar when a date is chosen.\n - `datepicker-append-to-body` *(Default: false):* Append the date picker popup element to `body`, rather than inserting after the date picker input.\n - `max-date` A Javascript Date object that can set a maximum date for the date picker control and input. Input validation will be bound to `$scope.myFormName.inputName.$error.maxDate`. This value can also be set globally in the `bbDatepickerConfig` object property `maxDate`.\n - `min-date` A Javascript Date object that can set a minimum date for the date picker control and input. Input validation will be bound to `$scope.myFormName.inputName.$error.minDate`. This value can also be set globally in the `bbDatepickerConfig` object property `minDate`.\n - `ng-model` An object to bind the date value in and out of the date picker. This will be set to a Javascript Date object when set or parsed from the bootstrap date picker.\n - `placeholder` overrides the default placeholder text of the `bb-datepicker` input\n - `required` Attribute present if the `bb-datepicker` value is required.\n - `show-button-bar` *(Default: false):* Whether to display a button bar underneath the date picker. (see angular ui bootstrap date picker)\n\n## Validation\n`bb-datepicker` sets validation on the date picker input using `bb-datepicker-name` for the input name, and the validity of the date entered in the input is in the `dateFormat` validator. So if you want to see if the date value is valid, you can access this through `$scope.myFormName.inputName.$error.dateFormat`. The error message for an invalid date will be in `$scope.myFormName.inputName.invalidFormatMessage`.\n\n*/\n(function ($) {\n 'use strict';\n angular.module('sky.datepicker', ['sky.resources', 'sky.moment'])\n .constant('bbDatepickerConfig', {\n currentCultureDateFormatString: 'MM/dd/yyyy',\n showWeeks: false,\n startingDay: 0,\n minDate: '',\n maxDate: ''\n })\n .directive('bbDatepicker', ['bbResources', 'bbDatepickerConfig', 'bbDatepickerParser', '$timeout', '$q', function (bbResources, bbDatepickerConfig, bbDatepickerParser, $timeout, $q) {\n return {\n replace: true,\n restrict: 'E',\n require: 'ngModel',\n scope: {\n date: '=ngModel',\n dateOptions: '=?bbDateOptions',\n customValidation: '=?bbCustomValidation',\n format: '=?bbDateFormat',\n maxDate: '=?maxDate',\n minDate: '=?minDate',\n placeholderText: '=?placeholder'\n },\n templateUrl: 'sky/templates/datepicker/datepicker.html',\n controller: ['$scope', function ($scope) {\n var self = this;\n\n\n $scope.getInputNgModel = function () {\n if (angular.isFunction(self.getInputNgModel)) {\n return self.getInputNgModel();\n } else {\n return null;\n }\n };\n }],\n link: function ($scope, el, attr, ngModel) {\n var parsedDate,\n inputEl,\n skipValidation = false,\n dateChangeInternal = false;\n\n function getBodyDatepicker() {\n return $('body > ul[datepicker-popup-wrap]');\n }\n\n function positionAbsoluteDatepicker() {\n var calendarButtonEl = el.find('span.bb-datepicker-button-container'),\n inputEl = el.find('input'),\n datepickerScope = el.find('input').isolateScope(),\n datepickerEl = getBodyDatepicker(),\n inputWidth,\n buttonWidth,\n datepickerWidth;\n\n inputWidth = inputEl.innerWidth();\n buttonWidth = calendarButtonEl.innerWidth();\n datepickerWidth = datepickerEl.innerWidth();\n\n if (datepickerWidth < (inputWidth + buttonWidth)) {\n datepickerScope.position.left = datepickerScope.position.left + inputWidth + buttonWidth - datepickerWidth;\n }\n }\n\n function open($event) {\n $event.preventDefault();\n $event.stopPropagation();\n\n //add syle class when datepicker appended to body because necessary bb-datefield class will no longer be wrapping it.\n if ($scope.locals.appendToBody) {\n $timeout(function () {\n getBodyDatepicker().addClass('bb-datefield');\n positionAbsoluteDatepicker();\n });\n }\n\n $scope.locals.opened = !$scope.locals.opened;\n }\n\n function setDate() {\n var inputNgModel;\n if (angular.isDate($scope.date)) {\n $scope.locals.date = $scope.date;\n } else if (!$scope.locals.hasCustomValidation) {\n parsedDate = bbDatepickerParser.runParsers($scope.date, $scope.format);\n if (angular.isDate(parsedDate)) {\n $scope.date = parsedDate;\n $scope.locals.date = parsedDate;\n } else {\n $scope.locals.date = $scope.date;\n inputNgModel = $scope.getInputNgModel();\n if (inputNgModel && !inputNgModel.$validators.date($scope.date)) {\n inputNgModel.invalidFormatMessage = bbResources.date_field_invalid_date_message;\n inputNgModel.$setValidity('dateFormat', false);\n }\n }\n } else {\n $scope.locals.date = $scope.date;\n }\n }\n\n $scope.locals = {\n showButtonBar: false,\n appendToBody: false,\n date: '',\n opened: false,\n open: open,\n loaded: false,\n closeOnSelection: true,\n dateOptions: {\n showWeeks: bbDatepickerConfig.showWeeks,\n startingDay: bbDatepickerConfig.startingDay\n },\n hasCustomValidation: false,\n inputName: attr.bbDatepickerName\n };\n\n if (!$scope.maxDate && bbDatepickerConfig.maxDate) {\n $scope.maxDate = bbDatepickerConfig.maxDate;\n }\n\n if (!$scope.minDate && bbDatepickerConfig.minDate) {\n $scope.minDate = bbDatepickerConfig.minDate;\n }\n\n $scope.resources = bbResources;\n\n if (angular.isDefined(attr.showButtonBar)) {\n $scope.locals.showButtonBar = attr.showButtonBar;\n }\n\n if (angular.isDefined(attr.closeOnDateSelection)) {\n $scope.locals.closeOnSelection = attr.closeOnDateSelection;\n }\n\n if (angular.isDefined(attr.datepickerAppendToBody)) {\n $scope.locals.appendToBody = (attr.datepickerAppendToBody === 'true');\n }\n\n if (angular.isUndefined($scope.format)) {\n $scope.format = bbDatepickerConfig.currentCultureDateFormatString;\n }\n\n if (angular.isDefined($scope.dateOptions)) {\n angular.extend($scope.locals.dateOptions, $scope.dateOptions);\n\n }\n\n if (angular.isDefined($scope.customValidation)) {\n if (angular.isFunction($scope.customValidation.formatValue)) {\n $scope.locals.hasCustomValidation = true;\n }\n }\n\n $scope.locals.required = angular.isDefined(attr.required);\n\n\n if ($scope.placeholderText === null || angular.isUndefined($scope.placeholderText)) {\n $scope.placeholderText = $scope.format.toLowerCase();\n }\n\n setDate();\n\n $scope.$watch('date', function (newValue, oldValue) {\n if (newValue !== oldValue && !dateChangeInternal) {\n setDate();\n } else if (dateChangeInternal) {\n dateChangeInternal = false;\n }\n });\n\n $scope.$watch('locals.date', function () {\n\n if ($scope.date !== $scope.locals.date) {\n if (angular.isDate($scope.locals.date)) {\n dateChangeInternal = true;\n $scope.date = $scope.locals.date;\n }\n }\n\n });\n\n function hasRequiredError() {\n var inputNgModel = $scope.getInputNgModel();\n\n return inputNgModel && inputNgModel.$error && inputNgModel.$error.required;\n }\n\n\n function dateFormatValidator() {\n var customFormattingResult,\n deferred,\n inputNgModel;\n\n function resolveValidation() {\n var inputNgModel = $scope.getInputNgModel();\n\n if (inputNgModel !== null) {\n deferred[inputNgModel.invalidFormatMessage ? 'reject' : 'resolve']();\n inputNgModel.$setValidity('dateFormat', !inputNgModel.invalidFormatMessage || inputNgModel.invalidFormatMessage === '');\n } else {\n deferred.resolve();\n }\n }\n\n function setInvalidFormatMessage(errorMessage) {\n var inputNgModel = $scope.getInputNgModel();\n\n if (inputNgModel !== null) {\n inputNgModel.invalidFormatMessage = errorMessage;\n }\n }\n\n function handleCustomFormattingValidation(result) {\n result = result || {};\n\n setInvalidFormatMessage(result.formattingErrorMessage);\n resolveValidation();\n\n if (result.formattedValue !== $scope.date) {\n skipValidation = true;\n dateChangeInternal = true;\n $scope.date = result.formattedValue;\n $scope.locals.date = result.formattedValue;\n }\n\n }\n\n function datepickerIsPristine() {\n var inputNgModel = $scope.getInputNgModel();\n\n if (inputNgModel !== null) {\n return inputNgModel.$pristine;\n } else {\n return true;\n }\n }\n\n deferred = $q.defer();\n\n if (skipValidation || angular.isDate($scope.locals.date) || $scope.locals.date === '' || ($scope.locals.required && hasRequiredError()) || datepickerIsPristine()) {\n setInvalidFormatMessage(null);\n resolveValidation();\n } else if ($scope.locals.hasCustomValidation && angular.isString($scope.locals.date)) {\n customFormattingResult = $scope.customValidation.formatValue($scope.locals.date);\n if (customFormattingResult.then) {\n customFormattingResult.then(handleCustomFormattingValidation);\n } else {\n handleCustomFormattingValidation(customFormattingResult);\n return deferred.promise;\n }\n } else {\n inputNgModel = $scope.getInputNgModel();\n\n if (inputNgModel !== null && inputNgModel.$error && inputNgModel.$error.date) {\n setInvalidFormatMessage(bbResources.date_field_invalid_date_message);\n }\n resolveValidation();\n }\n\n skipValidation = false;\n return deferred.promise;\n }\n\n ngModel.$asyncValidators.dateFormat = dateFormatValidator;\n\n $scope.locals.loaded = true;\n\n //Timeout allows the locals.loaded to be applied to dom and ng-if=true to go into effect.\n $timeout(function () {\n inputEl = el.find('input');\n inputEl.on('change blur', function () {\n $timeout(function () {\n var inputNgModel;\n\n //allows validation to kick off for invalid dates\n if (angular.isUndefined($scope.locals.date) && angular.isDefined(inputEl.val()) && inputEl.val() !== '') {\n dateChangeInternal = true;\n $scope.date = inputEl.val();\n\n\n } else if ($scope.locals.required && hasRequiredError()) {\n dateChangeInternal = true;\n $scope.date = '';\n inputNgModel = $scope.getInputNgModel();\n inputNgModel.invalidFormatMessage = null;\n inputNgModel.$setValidity('dateFormat', true);\n } else if ($scope.date !== $scope.locals.date) {\n\n dateChangeInternal = true;\n $scope.date = $scope.locals.date;\n\n }\n\n });\n });\n });\n\n }\n };\n }])\n .directive('bbDatepickerCustomValidate', ['$filter', 'bbDatepickerParser', function ($filter, bbDatepickerParser) {\n return {\n restrict: 'A',\n require: ['ngModel', '^bbDatepicker'],\n link: function ($scope, el, attr, controllers) {\n var ngModel = controllers[0],\n format = attr.datepickerPopup;\n\n if (attr.bbDatepickerCustomValidate && attr.bbDatepickerCustomValidate === 'true') {\n ngModel.$parsers = [];\n ngModel.$validators.date = function () {\n return true;\n };\n } else {\n ngModel.$parsers.unshift(function (viewValue) {\n var newDate = ngModel.$viewValue,\n date = null;\n //date was changed from datepicker or is empty so just return\n if (typeof newDate === 'object' || newDate === '') {\n return newDate;\n }\n\n date = bbDatepickerParser.runParsers(newDate, format);\n\n if (angular.isDate(date)) {\n el.val($filter('date')(date, format));\n }\n\n return date ? date : viewValue;\n });\n }\n\n controllers[1].getInputNgModel = function () {\n return ngModel;\n };\n }\n };\n }])\n .directive('bbMinDate', function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function ($scope, element, attrs, ngModel) {\n ngModel.$validators.minDate = function (modelValue) {\n return !$scope.minDate || !modelValue || !angular.isDate(modelValue) || !angular.isDate($scope.minDate) || modelValue >= $scope.minDate;\n };\n }\n };\n })\n .directive('bbMaxDate', function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function ($scope, element, attrs, ngModel) {\n ngModel.$validators.maxDate = function (modelValue) {\n return !$scope.maxDate || !modelValue || !angular.isDate(modelValue) || !angular.isDate($scope.maxDate) || modelValue <= $scope.maxDate;\n };\n }\n };\n })\n .factory('bbDatepickerParser', ['bbMoment', function (bbMoment) {\n\n function parseUTCString(value) {\n var date = null,\n dateArray,\n datePart;\n\n if (angular.isString(value) && value.indexOf('T00:00:00') !== -1) {\n datePart = value.split('T')[0];\n\n dateArray = datePart.split('-');\n date = new Date(dateArray[0], dateArray[1] - 1, dateArray[2]);\n }\n return date;\n }\n\n function parseNoSeparatorDateString(value, format) {\n var date = null,\n yearBegin = format.indexOf('y'),\n monthBegin = format.indexOf('M'),\n dayBegin = format.indexOf('d'),\n yearIndex,\n monthIndex,\n dayIndex;\n if (angular.isString(value) && value.length === 8 && !isNaN(value)) {\n if ((dayBegin < yearBegin) && (monthBegin < yearBegin)) {\n yearIndex = 4;\n if (monthBegin < dayBegin) {\n dayIndex = 2;\n monthIndex = 0;\n } else {\n dayIndex = 0;\n monthIndex = 2;\n }\n } else if ((yearBegin < monthBegin) && (monthBegin < dayBegin)) {\n yearIndex = 0;\n monthIndex = 4;\n dayIndex = 6;\n } else {\n return null;\n }\n\n date = new Date(value.substr(yearIndex, 4), (value.substr(monthIndex, 2) - 1), value.substr(dayIndex, 2));\n }\n return date;\n }\n\n function matchSeparator(value) {\n return value.match(/[.\\/\\-\\s].*?/);\n }\n\n function dateHasSeparator(value) {\n /*\n * Validation criteria:\n * A separator exists\n * There is no separator at the beginning\n * There is no separator at the end\n * Two separators exist\n * All parts of the date have a non-zero value\n */\n\n var separator = matchSeparator(value),\n valueArray = value.split(separator),\n separatorAtEnd = value.indexOf(separator, value.length - 1) !== -1,\n separatorAtBeginning = value.indexOf(separator) === 0,\n hasTwoSeparators = valueArray.length - 1 === 2,\n anyPartIsZero = valueArray.some(function (e) {\n return Number(e) === 0;\n });\n\n return (separator && !separatorAtEnd && !separatorAtBeginning && hasTwoSeparators && !anyPartIsZero);\n }\n\n function isMomentParsable(value, format) {\n var yearParts,\n yearIndex,\n monthIndex,\n dayIndex,\n separator;\n\n if (angular.isString(value) && dateHasSeparator(value)) {\n\n if (value.length === 10) {\n return true;\n } else if (value.length === 9 || value.length === 8) {\n //insure that years have 4 characters\n separator = matchSeparator(value);\n yearParts = value.split(separator);\n yearIndex = format.indexOf('y');\n monthIndex = format.indexOf('M');\n dayIndex = format.indexOf('d');\n if (yearIndex > monthIndex && yearIndex > dayIndex) {\n return yearParts[2].length === 4;\n }\n\n if (yearIndex < monthIndex && yearIndex < dayIndex) {\n return yearParts[0].length === 4;\n }\n\n }\n\n }\n\n return false;\n }\n\n\n\n function parseMoment(value, format) {\n var date = null,\n momentDate;\n\n if (isMomentParsable(value, format)) {\n momentDate = bbMoment(value, format.toUpperCase());\n if (momentDate.isValid()) {\n date = momentDate.toDate();\n }\n }\n\n return date;\n }\n\n return {\n parseUTCString: parseUTCString,\n parseNoSeparatorDateString: parseNoSeparatorDateString,\n parseMoment: parseMoment,\n runParsers: function (value, format) {\n var date = null;\n\n if (!value || angular.isDate(value) || value === '') {\n return value;\n }\n\n date = parseUTCString(value);\n\n if (angular.isDate(date)) {\n return date;\n }\n\n date = parseNoSeparatorDateString(value, format);\n\n if (angular.isDate(date)) {\n return date;\n }\n\n date = parseMoment(value, format);\n\n return date;\n\n }\n };\n }]);\n\n\n}(jQuery));\n", "/*jshint browser: true */\n/*global angular */\n\n/** @module Date Range Picker\n@icon calendar\n@summary The date range picker creates an input text box that includes a dropdown for selecting date ranges from a well-known set of options.\n @description The date range picker directive allows you to easily choose a date range from a well-known set of options. A date range picker service also exists to work hand-in-hand with the directive to provide more service-oriented functionality.\n\n### Date Range Picker Settings ###\n\n - `bb-date-range-picker-value` An object tracking the value of the date range picker control. Right now, the only proeprty of the object is `.dateRangeType` gives you the integer (ENUM) value of the date range typ that was selected in the picker. See the date range picker service for details of this ENUM.\n - `bb-date-range-picker-automation-id` A string to use when creating the bb-auto-field attribute on elements in the date range picker\n - `bb-date-range-picker-options` Optional. An options object that can be provided to customize the behavior of the date range picker.\n\n### Date Range Picker Options Settings ###\n\n - `availableDateRangeTypes` Optional. An array of integers (`dateRangeTypes` ENUM) to specify the ordered list of date range types to be included in the dropdown. Common variations can be found in the date range picker service.\n\n### Date Range Picker Service ###\nThis service provides additional functionality that works closely with the directive. Below are a list of members provided by the service.\n\n - `dateRangeTypes` An ENUM of all types of date ranges that are understood by the date range picker and can be available in the dropdown.\n - `defaultDateRangeOptions` An array of `dateRangeTypes` providing the default order and set of date range types that are included in the dropdown.\n - `pastDateRangeOptions` An array of `dateRangeTypes` that are appropriate for filtering for things that have occurred in the past. For example, you wouldn't want to be able to search for items created 'next month'.\n - `getDateRangeTypeCaption` A function for getting the caption of the dropdown item selected for a given `bb-date-range-picker-value`.\n - `getDateRangeFilterDescription` A function for getting an appropriate description string explaining the meaning of a given `bb-date-range-picker-value`.\n */\n\n(function () {\n 'use strict';\n angular.module('sky.daterangepicker', ['sky.resources'])\n .factory('bbDateRangePicker', ['bbResources', function (bbResources) {\n\n var dateRangeTypes,\n defaultDateRangeOptions,\n pastDateRangeOptions;\n\n dateRangeTypes = {\n AT_ANY_TIME: 0,\n NEXT_WEEK: 1,\n THIS_MONTH: 2,\n NEXT_MONTH: 3,\n THIS_QUARTER: 4,\n NEXT_QUARTER: 5,\n THIS_FISCAL_YEAR: 6,\n NEXT_FISCAL_YEAR: 7,\n THIS_CALENDAR_YEAR: 8,\n NEXT_CALENDAR_YEAR: 9,\n LAST_WEEK: 10,\n LAST_MONTH: 11,\n LAST_QUARTER: 12,\n LAST_FISCAL_YEAR: 13,\n LAST_CALENDAR_YEAR: 14,\n TODAY: 15,\n YESTERDAY: 16,\n TOMORROW: 17,\n THIS_WEEK: 18\n };\n\n defaultDateRangeOptions = [\n dateRangeTypes.AT_ANY_TIME,\n dateRangeTypes.YESTERDAY,\n dateRangeTypes.TODAY,\n dateRangeTypes.TOMORROW,\n dateRangeTypes.LAST_WEEK,\n dateRangeTypes.THIS_WEEK,\n dateRangeTypes.NEXT_WEEK,\n dateRangeTypes.LAST_MONTH,\n dateRangeTypes.THIS_MONTH,\n dateRangeTypes.NEXT_MONTH,\n dateRangeTypes.LAST_QUARTER,\n dateRangeTypes.THIS_QUARTER,\n dateRangeTypes.NEXT_QUARTER,\n dateRangeTypes.LAST_CALENDAR_YEAR,\n dateRangeTypes.THIS_CALENDAR_YEAR,\n dateRangeTypes.NEXT_CALENDAR_YEAR,\n dateRangeTypes.LAST_FISCAL_YEAR,\n dateRangeTypes.THIS_FISCAL_YEAR,\n dateRangeTypes.NEXT_FISCAL_YEAR\n ];\n\n pastDateRangeOptions = [\n dateRangeTypes.AT_ANY_TIME,\n dateRangeTypes.YESTERDAY,\n dateRangeTypes.TODAY,\n dateRangeTypes.LAST_WEEK,\n dateRangeTypes.THIS_WEEK,\n dateRangeTypes.LAST_MONTH,\n dateRangeTypes.THIS_MONTH,\n dateRangeTypes.LAST_QUARTER,\n dateRangeTypes.THIS_QUARTER,\n dateRangeTypes.LAST_CALENDAR_YEAR,\n dateRangeTypes.THIS_CALENDAR_YEAR,\n dateRangeTypes.LAST_FISCAL_YEAR,\n dateRangeTypes.THIS_FISCAL_YEAR\n ];\n\n function getDateRangeTypeCaption(dateRangePickerValue) {\n if (angular.isNumber(dateRangePickerValue)) {\n // If the input is the enum value itself, then map it to the object structure we expect before proceeding.\n dateRangePickerValue = { dateRangeType: dateRangePickerValue };\n } else {\n // If the value is undefiend, then map it to a null object.\n dateRangePickerValue = dateRangePickerValue || {};\n }\n\n if (!angular.isDefined(dateRangePickerValue.dateRangeType)) {\n // If the enum value is undefined, then it represents any time.\n dateRangePickerValue.dateRangeType = dateRangeTypes.AT_ANY_TIME;\n }\n\n switch (dateRangePickerValue.dateRangeType) {\n case dateRangeTypes.AT_ANY_TIME:\n return bbResources.date_range_picker_at_any_time;\n\n case dateRangeTypes.THIS_WEEK:\n return bbResources.date_range_picker_this_week;\n\n case dateRangeTypes.NEXT_WEEK:\n return bbResources.date_range_picker_next_week;\n\n case dateRangeTypes.THIS_MONTH:\n return bbResources.date_range_picker_this_month;\n\n case dateRangeTypes.NEXT_MONTH:\n return bbResources.date_range_picker_next_month;\n\n case dateRangeTypes.THIS_QUARTER:\n return bbResources.date_range_picker_this_quarter;\n\n case dateRangeTypes.NEXT_QUARTER:\n return bbResources.date_range_picker_next_quarter;\n\n case dateRangeTypes.THIS_FISCAL_YEAR:\n return bbResources.date_range_picker_this_fiscal_year;\n\n case dateRangeTypes.NEXT_FISCAL_YEAR:\n return bbResources.date_range_picker_next_fiscal_year;\n\n case dateRangeTypes.THIS_CALENDAR_YEAR:\n return bbResources.date_range_picker_this_calendar_year;\n\n case dateRangeTypes.NEXT_CALENDAR_YEAR:\n return bbResources.date_range_picker_next_calendar_year;\n\n case dateRangeTypes.LAST_WEEK:\n return bbResources.date_range_picker_last_week;\n\n case dateRangeTypes.LAST_MONTH:\n return bbResources.date_range_picker_last_month;\n\n case dateRangeTypes.LAST_QUARTER:\n return bbResources.date_range_picker_last_quarter;\n\n case dateRangeTypes.LAST_FISCAL_YEAR:\n return bbResources.date_range_picker_last_fiscal_year;\n\n case dateRangeTypes.LAST_CALENDAR_YEAR:\n return bbResources.date_range_picker_last_calendar_year;\n\n case dateRangeTypes.TODAY:\n return bbResources.date_range_picker_today;\n\n case dateRangeTypes.YESTERDAY:\n return bbResources.date_range_picker_yesterday;\n\n case dateRangeTypes.TOMORROW:\n return bbResources.date_range_picker_tomorrow;\n\n }\n }\n\n function getDateRangeFilterDescription(dateRangePickerValue) {\n // If the value is undefiend, then map it to a null object.\n dateRangePickerValue = dateRangePickerValue || {};\n\n if (!angular.isDefined(dateRangePickerValue.dateRangeType)) {\n // If the enum value is undefined, then it represents any time.\n dateRangePickerValue.dateRangeType = dateRangeTypes.AT_ANY_TIME;\n }\n\n switch (dateRangePickerValue.dateRangeType) {\n case dateRangeTypes.AT_ANY_TIME:\n return bbResources.date_range_picker_filter_description_at_any_time;\n\n case dateRangeTypes.THIS_WEEK:\n return bbResources.date_range_picker_filter_description_this_week;\n\n case dateRangeTypes.NEXT_WEEK:\n return bbResources.date_range_picker_filter_description_next_week;\n\n case dateRangeTypes.THIS_MONTH:\n return bbResources.date_range_picker_filter_description_this_month;\n\n case dateRangeTypes.NEXT_MONTH:\n return bbResources.date_range_picker_filter_description_next_month;\n\n case dateRangeTypes.THIS_QUARTER:\n return bbResources.date_range_picker_filter_description_this_quarter;\n\n case dateRangeTypes.NEXT_QUARTER:\n return bbResources.date_range_picker_filter_description_next_quarter;\n\n case dateRangeTypes.THIS_FISCAL_YEAR:\n return bbResources.date_range_picker_filter_description_this_fiscal_year;\n\n case dateRangeTypes.NEXT_FISCAL_YEAR:\n return bbResources.date_range_picker_filter_description_next_fiscal_year;\n\n case dateRangeTypes.THIS_CALENDAR_YEAR:\n return bbResources.date_range_picker_filter_description_this_calendar_year;\n\n case dateRangeTypes.NEXT_CALENDAR_YEAR:\n return bbResources.date_range_picker_filter_description_next_calendar_year;\n\n case dateRangeTypes.LAST_WEEK:\n return bbResources.date_range_picker_filter_description_last_week;\n\n case dateRangeTypes.LAST_MONTH:\n return bbResources.date_range_picker_filter_description_last_month;\n\n case dateRangeTypes.LAST_QUARTER:\n return bbResources.date_range_picker_filter_description_last_quarter;\n\n case dateRangeTypes.LAST_FISCAL_YEAR:\n return bbResources.date_range_picker_filter_description_last_fiscal_year;\n\n case dateRangeTypes.LAST_CALENDAR_YEAR:\n return bbResources.date_range_picker_filter_description_last_calendar_year;\n\n case dateRangeTypes.TODAY:\n return bbResources.date_range_picker_filter_description_today;\n\n case dateRangeTypes.YESTERDAY:\n return bbResources.date_range_picker_filter_description_yesterday;\n\n case dateRangeTypes.TOMORROW:\n return bbResources.date_range_picker_filter_description_tomorrow;\n\n }\n }\n\n return {\n dateRangeTypes: dateRangeTypes,\n defaultDateRangeOptions: defaultDateRangeOptions,\n pastDateRangeOptions: pastDateRangeOptions,\n getDateRangeTypeCaption: getDateRangeTypeCaption,\n getDateRangeFilterDescription: getDateRangeFilterDescription\n };\n\n }])\n .directive('bbDateRangePicker', ['bbDateRangePicker', function (bbDateRangePicker) {\n ///